Jamanra, la Abominación
monster dropped item rarity +% [14700]
monster slain experience +% [0]
unique monster guarantee one rare [1]
Jamanra, the Abomination
SpectreN
AreaVanguardia del acorazado, Vanguardia del acorazado
Tags2HSharpMetal_onhit_audio, human, humanoid, not_dex, not_int, red_blood, very_slow_movement
Vida
540%
Armadura
+50%
Ailment Threshold
%
Resistencia
0 0 0 0
Damage
200%
Precisión
100%
Probabilidad de golpe crítico
+5%
Multiplicador de golpe crítico
+130%
Attack Distance
6 ~ 18
Attack Time
1.5 Second
Damage Spread
±20%
Experiencia
300%
Model Size
100%
Type
PerennialKing
Metadata
PerennialKing
Nivel
57
Vida
23,803
Armadura
2,682
Evasión
353
Energy Shield
0
Damage
328
Daño de hechizos
328
Precisión
752
Attack Time
1.5
Experiencia
40,179
GSPerennialKingBasicLightningZap
Triggerable, Spell, Damage
Probabilidad de golpe crítico: 6%
Tiempo de lanzamiento: 1 seg
Inflige de 16.17 a 48.5 de daño de rayo
action attack or cast time uses animation length [1]
base skill can be blocked [1]
is area damage [1]
monster penalty against minions damage +% final vs player minions [200]
spell maximum action distance +% [-85]
MASPerennialKingSandWhip
Attack, RangedAttack, MirageArcherCanUse, Projectile, MeleeSingleTarget, Multistrikeable, Melee, ProjectilesFromUser
Ataque básico
Base Damage: 263–394
Probabilidad de [Critical|impacto crítico]: 5%
Daño de ataque: 75%
Attack Time: 1.5 seg
Tiempo de recarga: 6 seg
Inflige un 25% menos de daño de ataques
action attack or cast time uses animation length [1]
attack maximum action distance + [8]
projectile uses contact position [1]
skill can fire wand projectiles [1]
use scaled contact offset [1]
CTS5PerennialKingSandstorm
action attack or cast time uses animation length [1]
CTS1PerennialKingEndSandstorm
action attack or cast time uses animation length [1]
EASPerennialKingBeaconToss
action attack or cast time uses animation length [1]
spell maximum action distance +% [-35]
EASPerennialKingBeaconBolts
Tiempo de recarga: 15 seg
action attack or cast time uses animation length [1]
EASPerennialKingLightningSpray
Tiempo de recarga: 22.5 seg
action attack or cast time uses animation length [1]
EASPerennialKingBeaconOrbitStart
Tiempo de recarga: 30 seg
action attack or cast time uses animation length [1]
EASPerennialKingBeaconOrbitRecall
action attack or cast time uses animation length [1]
CTS3PerennialKingMultistab
Tiempo de recarga: 25 seg
action attack or cast time uses animation length [1]
CTS1PerennialKingEndMultistab
action attack or cast time uses animation length [1]
MPWPerennialKingGlassSpearToss
Attack, RangedAttack, MirageArcherCanUse, Projectile, ProjectilesFromUser, Damage, Triggerable
Base Damage: 263–394
Probabilidad de [Critical|impacto crítico]: 5%
Attack Time: 1.5 seg
Tiempo de recarga: 18 seg
Los proyectiles perforan a todos los objetivos
Convierte el 25% del daño físico en daño de rayo
action attack or cast time uses animation length [1]
base is projectile [1]
monster projectile variation [1125]
projectile uses contact position [1]
GPAPerennialKingGlassSpearMultiToss
Triggerable, Attack
Base Damage: 263–394
Probabilidad de [Critical|impacto crítico]: 5%
Attack Time: 1.5 seg
Tiempo de recarga: 17 seg
Los proyectiles perforan a todos los objetivos
action attack or cast time uses animation length [1]
active skill projectile speed +% variation final [0]
attack maximum action distance + [70]
base is projectile [1]
projectile spread radius [5]
projectile uses contact position [1]
use scaled contact offset [1]
GAPerennialKingGlassSwordSlam
Triggerable, Attack
Base Damage: 263–394
Probabilidad de [Critical|impacto crítico]: 5%
Daño de ataque: 450%
Attack Time: 1.5 seg
Tiempo de recarga: 18 seg
Inflige un 350% más de daño de ataques
Convierte el 35% del daño físico en daño de rayo
action attack or cast time uses animation length [1]
attack maximum action distance + [25]
base skill cannot be blocked [1]
is area damage [1]
monster penalty against minions damage +% final vs player minions [200]
EAAPerennialKingGlassSwordFence
Tiempo de recarga: 17 seg
action attack or cast time uses animation length [1]
attack maximum action distance + [30]
GAPerennialKingAxeCleave
Triggerable, Attack
Base Damage: 263–394
Probabilidad de [Critical|impacto crítico]: 5%
Daño de ataque: 400%
Attack Time: 1.5 seg
Tiempo de recarga: 26 seg
Inflige un 300% más de daño de ataques
Convierte el 25% del daño físico en daño de rayo
action attack or cast time uses animation length [1]
attack maximum action distance + [12]
base skill can be avoided by dodge roll [1]
base skill cannot be blocked [1]
is area damage [1]
monster penalty against minions damage +% final vs player minions [200]
MDPerennialKingObsidianStorm
Multicastable, Triggerable
Tiempo de recarga: 40 seg
action attack or cast time uses animation length [1]
MDPerennialKingTornado
Multicastable, Triggerable
Tiempo de recarga: 42 seg
action attack or cast time uses animation length [1]
EASPerennialKingOrbitTornado
action attack or cast time uses animation length [1]
SOPerennialKingObsidianMinigun
Triggerable
Tiempo de recarga: 17 seg
action attack or cast time uses animation length [1]
EASAbsoluteCartnage
action attack or cast time uses animation length [1]
GSPerennialKingBeaconSpray
Triggerable, Spell, Damage
Probabilidad de golpe crítico: 6%
Tiempo de lanzamiento: 1 seg
Inflige de 7.698 a 23.1 de daño de rayo
25% más de probabilidad de electrocutar
action attack or cast time uses animation length [1]
base skill can be blocked [1]
is area damage [1]
monster penalty against minions damage +% final vs player minions [200]
GAPerennialKingBeaconSpearStab
Triggerable, Attack
Base Damage: 263–394
Probabilidad de [Critical|impacto crítico]: 5%
Daño de ataque: 70%
Attack Time: 1.5 seg
Inflige un 30% menos de daño de ataques
is area damage [1]
monster penalty against minions damage +% final vs player minions [200]
GAPerennialKingBeaconSpearImpact
Triggerable, Attack
Base Damage: 263–394
Probabilidad de [Critical|impacto crítico]: 5%
Daño de ataque: 90%
Attack Time: 1.5 seg
Inflige un 10% menos de daño de ataques
is area damage [1]
monster penalty against minions damage +% final vs player minions [200]
GSPerennialKingBeaconOrbitLightningBeam
Triggerable, Spell, Damage
Tiempo de lanzamiento: 1 seg
Inflige de 16.42 a 49.27 de daño de rayo
is area damage [1]
monster penalty against minions damage +% final vs player minions [200]
EDSPerennialKingBeaconLightningBolt
Triggerable, Spell, Damage
Probabilidad de golpe crítico: 6%
Tiempo de lanzamiento: 1 seg
Inflige de 79.55 a 238.7 de daño de rayo
action attack or cast time uses animation length [1]
is area damage [1]
monster penalty against minions damage +% final vs player minions [150]
GTPerennialKingGlassSpearToss
Triggerable
action attack or cast time uses animation length [1]
GAPerennialKingGlassSpearTossImpact
Triggerable, Attack
Base Damage: 263–394
Probabilidad de [Critical|impacto crítico]: 5%
Daño de ataque: 180%
Attack Time: 1.5 seg
Inflige un 80% más de daño de ataques
Convierte el 25% del daño físico en daño de rayo
action attack or cast time uses animation length [1]
base is projectile [1]
is area damage [1]
monster penalty against minions damage +% final vs player minions [200]
GAPerennialKingGlassSpearTossImpactMulti
Triggerable, Attack
Base Damage: 263–394
Probabilidad de [Critical|impacto crítico]: 5%
Daño de ataque: 150%
Attack Time: 1.5 seg
Inflige un 50% más de daño de ataques
Convierte el 25% del daño físico en daño de rayo
action attack or cast time uses animation length [1]
base is projectile [1]
is area damage [1]
monster penalty against minions damage +% final vs player minions [200]
SOPerennialKingGlassSpearMultiRock
Triggerable
action attack or cast time uses animation length [1]
SOPerennialKingGlassSwordFence
Triggerable
action attack or cast time uses animation length [1]
GSPerennialKingGlassSwordFenceZap
Triggerable, Spell, Damage
Probabilidad de golpe crítico: 6%
Tiempo de lanzamiento: 1 seg
Inflige de 4.494 a 13.48 de daño de rayo
90% más de acumulación de parálisis
El daño de rayo de esta habilidad contribuye
a la acumulación de la parálisis
action attack or cast time uses animation length [1]
base skill can be avoided by dodge roll [1]
base skill effect duration [4000]
is area damage [1]
monster penalty against minions damage +% final vs player minions [200]
GAPerennialKingObsidianStormImpact
Triggerable, Attack
Base Damage: 263–394
Probabilidad de [Critical|impacto crítico]: 5%
Attack Time: 1.5 seg
action attack or cast time uses animation length [1]
is area damage [1]
monster penalty against minions damage +% final vs player minions [200]
GSPerennialKingSandnadoPhysDamage
Triggerable, Spell, Damage
Tiempo de lanzamiento: 1 seg
action attack or cast time uses animation length [1]
is area damage [1]
monster penalty against minions damage +% final vs player minions [200]
GSPerennialKingSandnadoLightningDamage
Triggerable, Spell, Damage
Tiempo de lanzamiento: 1 seg
Inflige de 30.79 a 92.38 de daño de rayo
action attack or cast time uses animation length [1]
is area damage [1]
monster penalty against minions damage +% final vs player minions [200]
MPWPerennialKingObsidianMinigun
Attack, RangedAttack, MirageArcherCanUse, Projectile, ProjectilesFromUser, Damage, Triggerable
Base Damage: 263–394
Probabilidad de [Critical|impacto crítico]: 5%
Daño de ataque: 50%
Attack Time: 1.5 seg
Inflige un 50% menos de daño de ataques
Convierte el 25% del daño físico en daño de rayo
action attack or cast time uses animation length [1]
active skill projectile speed +% variation final [20]
base is projectile [1]
monster projectile variation [1127]
projectile ballistic angle from target distance [1]
projectile ballistic gravity override [400]
projectile maximum range override [250]
projectile spread radius [0]

Object Type

version 2
extends "Metadata/Monsters/Monster"
extends "Metadata/Monsters/BossBase"

/* ------------------------------------------------------------------------------------------------------------------- */
/* Generic */
/* ------------------------------------------------------------------------------------------------------------------- */

BaseEvents
{
	on_construction_complete = { globals.pen_king = this; AddToPlayerWakeGroup( true ); }
}

Preload
{
	preload_character_animation = "KnockdownLoop"
}

Actor
{
	basic_action = "MoveForced"
	basic_action = "StrafeLeftNoFlee"
	basic_action = "StrafeRightNoFlee"
	leveled_starting_effects = "DoLiterallyNothing"
}

StateMachine
{
	// the fake PK sets this to 0 when the emerge sequence begins, so it can swap to the correct skin
	define_shared_state =
	"
		invis = 1;
		lock_on;
		tornados;
	"

	define_shared_checkpoint_state = "seen_intro;"
	on_state_lock_on_0 = "SetUsesDirectionalRunAnimations( false );"
	on_state_lock_on_1 = "SetUsesDirectionalRunAnimations( true );"
	on_or_create_state_invis_0 = "MakeCollidable();"
	on_or_create_state_invis_1 = "RemoveCollidability();"
}

Stats
{
	set_monster_delay_item_drops_millis = 11000
	strafe_distance_+% = -60
}

/* ------------------------------------------------------------------------------------------------------------------- */
/* Beacon Shared */
/* ------------------------------------------------------------------------------------------------------------------- */

StateMachine
{
	// these states are used for ALL the beacon skills and keep track of the beacons, so the boss knows if it can use the other beacon skills
	define_shared_state =
	"
		has_left_beacon = 1;
		has_right_beacon = 1;
	"
}

/* ------------------------------------------------------------------------------------------------------------------- */
/* Phase change to second arena */
/* ------------------------------------------------------------------------------------------------------------------- */

StateMachine
{
	define_shared_state = "first_arena_complete;"
}

/* ------------------------------------------------------------------------------------------------------------------- */
/* Obsidian Spear Toss (multi) */
/* ------------------------------------------------------------------------------------------------------------------- */

Animated
{
	// this event fires a bit before the projectiles do, so they target a location that is a bit behind to prevent them from always hitting the target
	// the target points are generated around a circle, so they need to be reshuffled to minimise projectile crossover
	on_event_prepare_proj_center =
	"
		this.spear_count = 0;
		this.multi_spear_target_center = target.GetLocation();
		Call( generate_spear_target_points, multi_spear_target_center, 20.0, 8 );
		this.target_points = null;
		this.target_points += target_points2[2];
		this.target_points += target_points2[1];
		this.target_points += target_points2[3];
		this.target_points += target_points2[0];
		this.target_points += target_points2[4];
		this.target_points += target_points2[7];
		this.target_points += target_points2[5];
		this.target_points += target_points2[6];
	"

	on_event_prepare_proj =
	"
		SetTargetLocation( GetVariablesFromGroup( target_points, spear_count, Index ), 0, 0, true );
		this.spear_count = spear_count + 1;
	"
}

Functions
{
	// arg1: center (location)
	// arg2: radius (float)
	// arg3: num points (float)
	generate_spear_target_points =
	"
		this.target_points2 = null;
		this.angle = 0.0;
		local angle_increment = 360.0 / arg3;
		local pi = 3.14159265359;
		Repeat( 8, ()
		{
			local new_loc = MakeLocation( arg1.x + Eval( arg2 * Cos( angle ) ), arg1.y + Eval( arg2 * Sin( angle ) ) );
			this.target_points2 += new_loc;
			this.angle = angle + angle_increment;
		} );
	"
}

/* ------------------------------------------------------------------------------------------------------------------- */
/* Death */
/* ------------------------------------------------------------------------------------------------------------------- */

StateMachine
{
	define_shared_state = "lost_head;"
}

Object Type Codes

version 2
extends "Metadata/Monsters/Monster"
extends "Metadata/Monsters/BossBase"

/* ------------------------------------------------------------------------------------------------------------------- */
/* Generic */
/* ------------------------------------------------------------------------------------------------------------------- */

StateMachine
{
	// this state is set by the 'fake' perennial king that exists pre-emerge, so when it does emerge it can swap skins
	// fake PK: Metadata/Terrain/Gallows/Act2/2_12_2/Objects/PerennialKingHuman
	on_or_create_state_invis_0 = "EnableRendering();"
	on_or_create_state_invis_1 = "DisableRendering();"

	on_state_dead_1 =
	{
		globals.destructable_arena_core.PlayAnimation( crash_01 );
		globals.destructable_arena_core.GoToAnimationEnd();
	}
}

Render
{
	use_ao_lights = true
	allow_attached_arrows = false
}

Preload
{
	preload_animated_object = "Metadata/Effects/Spells/monsters_effects/Act2_FOUR/PerennialKing/ao/sand_storm_arena.ao"
	preload_animated_object = "Metadata/Effects/Spells/monsters_effects/Act2_FOUR/PerennialKing/ao/big_zap_01.ao"
	preload_object = "Metadata/Monsters/PerennialKingStage2/PerennialKingBeacon"
	preload_monster_variety = "Metadata/Monsters/PerennialKingStage2/PerennialKingCorpseFriend1"
	preload_monster_variety = "Metadata/Monsters/PerennialKingStage2/PerennialKingCorpseFriend2"
	preload_monster_variety = "Metadata/Monsters/PerennialKingStage2/PerennialKingCorpseFriend3"
	preload_monster_variety = "Metadata/Monsters/PerennialKingStage2/PerennialKingCorpseFriend4_"
	preload_monster_variety = "Metadata/Monsters/PerennialKingStage2/PerennialKingCorpseFriend5"
	preload_monster_variety = "Metadata/Monsters/PerennialKingStage2/PerennialKingCorpseFriend6"
	preload_monster_variety = "Metadata/Monsters/PerennialKingStage2/PerennialKingCorpseFriend7"
	preload_monster_variety = "Metadata/Monsters/PerennialKingStage2/PerennialKingCorpseFriend8"
	preload_monster_variety = "Metadata/Monsters/PerennialKingStage2/PerennialKingCorpseFriend9"
	preload_monster_variety = "Metadata/Monsters/PerennialKingStage2/PerennialKingCorpseFriend10__"
	preload_monster_variety = "Metadata/Monsters/PerennialKingStage2/PerennialKingCorpseFriend11"
	preload_monster_variety = "Metadata/Monsters/PerennialKingStage2/PerennialKingCorpseFriend12"
	preload_monster_variety = "Metadata/Monsters/PerennialKingStage2/PerennialKingCorpseFriend13"
	preload_environment = "G2_12_2_boss"
	preload_misc_beam = "PerennialKingBeaconSprayBeam"
	preload_misc_beam = "PerennialKingHandsprayBeam"
}

/* ------------------------------------------------------------------------------------------------------------------- */
/* Movement/Turning */
/* ------------------------------------------------------------------------------------------------------------------- */

// whenever PK turns need to also play an additive turn animation, using the correct animation for the turn direction (left or right)
// can do this by constantly checking the monsters orientation (GetOrientation() and comparing it with its bearing (GetAnimatedBearing()))
// orientation is the server orientation, so this value will always be the actual direction the monster is facing
// bearing is the clients current facing direction, and this one does visually match with the monsters facing direction
// so whenever those two aren't the same, you can assume the monster is turning
// also, when the monster is moving don't do any of this cause it messes with the additive n-directional anims
Positioned
{
	on_initial_position_set = "StartStateTimer( check_bearing );"

	on_movement_started =
	"
		If( GetState( current_rotate_dir ) > 0, (){ SetStateTo( current_rotate_dir, 0 ); } );
	"
}

StateMachine
{
	define_state = "current_rotate_dir;"
	define_timer = "check_bearing = 0.033;"

	// compare the bearing and orientation here, and then set the current_rotate_dir state to 1/2/11/12 (if its not already set)
	// that state being set to one of those values causes the additive turn anim to play, then the state is reset after that anim is finished
	// 1 and 2 are for the right turns, 1 being used for shorter turns (based on the angle_diff value), and 11/12 are for left with 11 being the short one
	// there is a 10 degree no-turn forward angle, to prevent tiny turns that aren't needed
	on_timer_check_bearing =
	"
		this.orientation = GetOrientation();
		this.bearing = GetAnimatedBearing();
		this.angle_diff = bearing - orientation;
		this.angle_diff = Round( EvalIf( angle_diff > 180.0, angle_diff - 360.0, EvalIf( angle_diff < -180, angle_diff + 360.0, angle_diff ) ), 2 );
		// If( angle_diff == 0.0, (){ FadeAnimations( 9, 0.666 ); } );
		If( And( angle_diff > 5.0, angle_diff <= 45.0 ), ()
		{
			If( GetState( current_rotate_dir ) == 0, (){ SetStateTo( current_rotate_dir, 1 ); } );
		} );
		If( angle_diff > 45.0, ()
		{
			If( GetState( current_rotate_dir ) == 0, (){ SetStateTo( current_rotate_dir, 2 ); } );
		} );
		If( And( angle_diff < -5.0, angle_diff >= -45.0 ), ()
		{
			If( GetState( current_rotate_dir ) == 0, (){ SetStateTo( current_rotate_dir, 11 ); } );
		} );
		If( angle_diff < -45.0, ()
		{
			If( GetState( current_rotate_dir ) == 0, (){ SetStateTo( current_rotate_dir, 12 ); } );
		} );
		StartStateTimer( check_bearing );
	"

	// play a different additive turn anim for different turn directions and velocity
	on_state_current_rotate_dir_1 =
	"
		If( GetCurrentMoveSpeed() < 1.0, ()
		{
			PlayAdditiveAnimation( turn_02_right, 9 );
			Delay( 0.666, { SetStateTo( current_rotate_dir, 0 ); } );
		}, (){ SetStateTo( current_rotate_dir, 0 ); } );
	"

	on_state_current_rotate_dir_2 =
	"
		If( GetCurrentMoveSpeed() < 1.0, ()
		{
			PlayAdditiveAnimation( turn_01_right, 9 );
			Delay( 0.666, { SetStateTo( current_rotate_dir, 0 ); } );
		}, (){ SetStateTo( current_rotate_dir, 0 ); } );
	"

	on_state_current_rotate_dir_11 =
	"
		If( GetCurrentMoveSpeed() < 1.0, ()
		{
			PlayAdditiveAnimation( turn_02_left, 9 );
			Delay( 0.666, { SetStateTo( current_rotate_dir, 0 ); } );
		}, (){ SetStateTo( current_rotate_dir, 0 ); } );
	"

	on_state_current_rotate_dir_12 =
	"
		If( GetCurrentMoveSpeed() < 1.0, ()
		{
			PlayAdditiveAnimation( turn_01_left, 9 );
			Delay( 0.666, { SetStateTo( current_rotate_dir, 0 ); } );
		}, (){ SetStateTo( current_rotate_dir, 0 ); } );
	"
}

/* ------------------------------------------------------------------------------------------------------------------- */
/* Phase change to second arena */
/* ------------------------------------------------------------------------------------------------------------------- */

Functions
{
	fade_out = "FadeToBlack( 0, 3000, 6000 );"
	destroy_cart_core = "globals.destructable_arena_core.PlayAnimationAtSpeed( crash_01, 1.0 );"

	destroy_cart_core_instant =
	"
		globals.destructable_arena_core.PlayAnimation( crash_01 );
		globals.destructable_arena_core.GoToAnimationEnd();
	"

	hide_player_weapons = "arg1.HideWeapons();"
	show_player_weapons = "arg1.ShowWeapons();"
}

StateMachine
{
	on_or_create_state_first_arena_complete_1 = "TriggerBracket( arena_sector_destruction, 1 );"
}

/* ------------------------------------------------------------------------------------------------------------------- */
/* Death */
/* ------------------------------------------------------------------------------------------------------------------- */

StateMachine
{
	on_or_create_state_lost_head_1 =
	"
		HideMeshSegment( PerennialKing_headShape );
		DetachAllOfType( 'Art/Models/MONSTERS/PerennialKingStage2/attachments/PerennialKingHelmet.fmt;Art/Models/MONSTERS/PerennialKingStage2/attachments/PerennialKingHelmet.ao' );
	"
}

Functions
{
	get_up_asala = { PlayCharacterAudioEvent( AfterPerennialKingSeeAsala ); }
}

/* ------------------------------------------------------------------------------------------------------------------- */
/* Audio */
/* ------------------------------------------------------------------------------------------------------------------- */

GlobalAudioParamEvents
{
	player_in_range_param = "PerennialKing2InRange"
	life_percent_param = "PerennialKing2LifePercentage"
	range = 130
}

Life
{
	on_life_percent_reaches_1 = "PlayTextAudio( PerennialKing_Dreadnought_DeathMisc_7, 'Metadata/Monsters/PerennialKingStage2/PerennialKing', 1500 );"
}

Actor
{
	on_effect_start_CTS1BossFightStart = "QueueTextAudio( PerennialKing_Dreadnought_Intro_Random, 'Metadata/Monsters/PerennialKingStage2/PerennialKing', 3500 );"

	on_effect_start_GSPerennialKingBasicLightningZap =
	"
		Roll( 1, 6, ()
		{
			PlayTextAudio( PerennialKing_Dreadnought_MiscSkill_Random, 'Metadata/Monsters/PerennialKingStage2/PerennialKing' );
		} );
	"

	on_effect_start_MASPerennialKingSandWhip =
	"
		Roll( 1, 5, ()
		{
			PlayTextAudio( PerennialKing_Dreadnought_MiscSkill_Random, 'Metadata/Monsters/PerennialKingStage2/PerennialKing' );
		} );
	"

	on_effect_start_CTS5PerennialKingSandstorm =
	"
		Roll( 1, 2, ()
		{
			PlayTextAudio( PerennialKing_Dreadnought_SummonSandstorm_Random, 'Metadata/Monsters/PerennialKingStage2/PerennialKing' );
		} );
	"

	on_effect_start_EASPerennialKingBeaconToss =
	"
		Roll( 1, 5, ()
		{
			PlayTextAudio( PerennialKing_Dreadnought_MiscSkill_Random, 'Metadata/Monsters/PerennialKingStage2/PerennialKing' );
		} );
	"

	on_effect_start_EASPerennialKingBeaconBolts =
	"
		Roll( 1, 2, ()
		{
			PlayTextAudio( PerennialKing_Dreadnought_BeaconLightning_Random, 'Metadata/Monsters/PerennialKingStage2/PerennialKing' );
		} );
	"

	on_effect_start_EASPerennialKingLightningSpray =
	"
		Roll( 1, 2, ()
		{
			PlayTextAudio( PerennialKing_Dreadnought_BeaconLightningSpray_Random, 'Metadata/Monsters/PerennialKingStage2/PerennialKing' );
		} );
	"

	on_effect_start_EASPerennialKingBeaconOrbitStart =
	"
		Roll( 1, 1, ()
		{
			PlayTextAudio( PerennialKing_Dreadnought_BeaconSend_Random, 'Metadata/Monsters/PerennialKingStage2/PerennialKing' );
		} );
	"

	on_effect_start_CTS3PerennialKingMultistab =
	"
		Roll( 1, 2, ()
		{
			PlayTextAudio( PerennialKing_Dreadnought_BeaconStab_Random, 'Metadata/Monsters/PerennialKingStage2/PerennialKing' );
		} );
	"

	on_effect_start_MPWPerennialKingGlassSpearToss =
	"
		Roll( 1, 2, ()
		{
			PlayTextAudio( PerennialKing_Dreadnought_MiscSkill_Random, 'Metadata/Monsters/PerennialKingStage2/PerennialKing' );
		} );
	"

	on_effect_start_GPAPerennialKingGlassSpearMultiToss =
	"
		Roll( 1, 1, ()
		{
			PlayTextAudio( PerennialKing_Dreadnought_SpearThrow_Random, 'Metadata/Monsters/PerennialKingStage2/PerennialKing' );
		} );
	"

	on_effect_start_GAPerennialKingGlassSwordSlam =
	"
		Roll( 1, 1, ()
		{
			PlayTextAudio( PerennialKing_Dreadnought_2hSword_Random, 'Metadata/Monsters/PerennialKingStage2/PerennialKing' );
		} );
	"

	on_effect_start_EAAPerennialKingGlassSwordFence =
	"
		Roll( 1, 2, ()
		{
			PlayTextAudio( PerennialKing_Dreadnought_Lacerate_Random, 'Metadata/Monsters/PerennialKingStage2/PerennialKing' );
		} );
	"

	on_effect_start_GAPerennialKingAxeCleave =
	"
		Roll( 1, 5, ()
		{
			PlayTextAudio( PerennialKing_Dreadnought_MiscSkill_Random, 'Metadata/Monsters/PerennialKingStage2/PerennialKing' );
		} );
	"

	on_effect_start_MDPerennialKingObsidianStorm =
	"
		Roll( 1, 1, ()
		{
			PlayTextAudio( PerennialKing_Dreadnought_ObsidianTornado_Random, 'Metadata/Monsters/PerennialKingStage2/PerennialKing' );
		} );
	"

	on_effect_start_MDPerennialKingTornado =
	"
		Roll( 1, 2, ()
		{
			PlayTextAudio( PerennialKing_Dreadnought_Tornado_Random, 'Metadata/Monsters/PerennialKingStage2/PerennialKing' );
		} );
	"

	on_effect_start_SOPerennialKingObsidianMinigun =
	"
		Roll( 1, 2, ()
		{
			PlayTextAudio( PerennialKing_Dreadnought_BeaconElectrify_Random, 'Metadata/Monsters/PerennialKingStage2/PerennialKing' );
		} );
	"

	on_effect_start_EASAbsoluteCartnage =
	"
		Roll( 1, 1, ()
		{
			PlayTextAudio( PerennialKing_Dreadnought_Countess_Random, 'Metadata/Monsters/PerennialKingStage2/PerennialKing', 1000 );
		} );
	"

	on_effect_event_contact_for_EASPerennialKingOrbitTornado =
	"
		Roll( 1, 1, ()
		{
			PlayTextAudio( PerennialKing_Dreadnought_BeastSandstorm_Random, 'Metadata/Monsters/PerennialKingStage2/PerennialKing' );
		} );
	"
}

Animated
{
	on_heavy_stun_01 =
	"
		Roll( 1, 2, ()
		{
			PlayTextAudio( PerennialKing_Dreadnought_HeavyStun_Random, 'Metadata/Monsters/PerennialKingStage2/PerennialKing' );
		} );
	"
}
-- src\Data\Spectres.lua
minions["Metadata/Monsters/PerennialKingStage2/PerennialKing"] = {
    name = "Jamanra, the Abomination",
    life = 5.4,
    fireResist = 0,
    coldResist = 0,
    lightningResist = 0,
    chaosResist = 0,
    damage = 2,
    damageSpread = 0.2,
    attackTime = 1.5,
    attackRange = 18,
    accuracy = 1,
    skillList = {
        "MASPerennialKingSandWhip",
        "GPAPerennialKingGlassSpearMultiToss",
        "MPWPerennialKingGlassSpearToss",
        "MPWPerennialKingObsidianMinigun",
        "CTS1PerennialKingEndMultistab",
        "CTS3PerennialKingMultistab",
        "CTS5PerennialKingSandstorm",
        "CTS1PerennialKingEndSandstorm",
        "GAPerennialKingBeaconSpearStab",
        "GAPerennialKingBeaconSpearImpact",
        "GSPerennialKingBeaconOrbitLightningBeam",
        "GSPerennialKingBasicLightningZap",
        "GAPerennialKingGlassSwordSlam",
        "GAPerennialKingAxeCleave",
        "GAPerennialKingObsidianStormImpact",
        "GSPerennialKingSandnadoPhysDamage",
        "GSPerennialKingSandnadoLightningDamage",
        "GSPerennialKingBeaconSpray",
        "GAPerennialKingGlassSpearTossImpact",
        "GAPerennialKingGlassSpearTossImpactMulti",
        "GSPerennialKingGlassSwordFenceZap",
        "EASPerennialKingBeaconToss",
        "EASPerennialKingBeaconBolts",
        "EASPerennialKingLightningSpray",
        "EASPerennialKingBeaconOrbitStart",
        "EASPerennialKingBeaconOrbitRecall",
        "EASAbsoluteCartnage",
        "EAAPerennialKingGlassSwordFence",
        "EASPerennialKingOrbitTornado",
        "MDPerennialKingObsidianStorm",
        "MDPerennialKingTornado",
        "SOPerennialKingObsidianMinigun",
        "SOPerennialKingGlassSpearMultiRock",
        "SOPerennialKingGlassSwordFence",
        "GTPerennialKingGlassSpearToss",
        "EDSPerennialKingBeaconLightningBolt",
    },
    modList = {
    },
}
-- src\Data\Skills\spectre.lua
skills["MASPerennialKingSandWhip"] = {
    name = "Basic Attack",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Attack] = true,
        [SkillType.RangedAttack] = true,
        [SkillType.MirageArcherCanUse] = true,
        [SkillType.Projectile] = true,
        [SkillType.MeleeSingleTarget] = true,
        [SkillType.Multistrikeable] = true,
        [SkillType.Melee] = true,
        [SkillType.ProjectilesFromUser] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
        attack = true,
        melee = true,
        projectile = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "attack_maximum_action_distance_+",
        "skill_can_fire_arrows",
        "skill_can_fire_wand_projectiles",
        "action_attack_or_cast_time_uses_animation_length",
        "projectile_uses_contact_position",
        "use_scaled_contact_offset",
    },
    levels = {
        [1] = {8, baseMultiplier = 0.75, levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["GPAPerennialKingGlassSpearMultiToss"] = {
    name = "GPAPerennialKingGlassSpearMultiToss",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Triggerable] = true,
        [SkillType.Attack] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
        attack = true,
        projectile = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "attack_maximum_action_distance_+",
        "active_skill_projectile_speed_+%_variation_final",
        "projectile_spread_radius",
        "base_is_projectile",
        "use_scaled_contact_offset",
        "projectile_uses_contact_position",
        "action_attack_or_cast_time_uses_animation_length",
        "always_pierce",
    },
    levels = {
        [1] = {70, 0, 5, levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["MPWPerennialKingGlassSpearToss"] = {
    name = "MPWPerennialKingGlassSpearToss",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Attack] = true,
        [SkillType.RangedAttack] = true,
        [SkillType.MirageArcherCanUse] = true,
        [SkillType.Projectile] = true,
        [SkillType.ProjectilesFromUser] = true,
        [SkillType.Damage] = true,
        [SkillType.Triggerable] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
        attack = true,
        projectile = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "monster_projectile_variation",
        "active_skill_base_physical_damage_%_to_convert_to_lightning",
        "base_is_projectile",
        "projectile_uses_contact_position",
        "action_attack_or_cast_time_uses_animation_length",
        "always_pierce",
    },
    levels = {
        [1] = {1125, 25, levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["MPWPerennialKingObsidianMinigun"] = {
    name = "MPWPerennialKingObsidianMinigun",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Attack] = true,
        [SkillType.RangedAttack] = true,
        [SkillType.MirageArcherCanUse] = true,
        [SkillType.Projectile] = true,
        [SkillType.ProjectilesFromUser] = true,
        [SkillType.Damage] = true,
        [SkillType.Triggerable] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
        attack = true,
        projectile = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "monster_projectile_variation",
        "projectile_spread_radius",
        "projectile_ballistic_gravity_override",
        "projectile_maximum_range_override",
        "active_skill_projectile_speed_+%_variation_final",
        "active_skill_base_physical_damage_%_to_convert_to_lightning",
        "base_is_projectile",
        "action_attack_or_cast_time_uses_animation_length",
        "projectile_ballistic_angle_from_target_distance",
    },
    levels = {
        [1] = {1127, 0, 400, 250, 20, 25, baseMultiplier = 0.5, levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["CTS1PerennialKingEndMultistab"] = {
    name = "CTS1PerennialKingEndMultistab",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "action_attack_or_cast_time_uses_animation_length",
    },
    levels = {
        [1] = {levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["CTS3PerennialKingMultistab"] = {
    name = "CTS3PerennialKingMultistab",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "action_attack_or_cast_time_uses_animation_length",
    },
    levels = {
        [1] = {levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["CTS5PerennialKingSandstorm"] = {
    name = "CTS5PerennialKingSandstorm",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "action_attack_or_cast_time_uses_animation_length",
    },
    levels = {
        [1] = {levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["CTS1PerennialKingEndSandstorm"] = {
    name = "CTS1PerennialKingEndSandstorm",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "action_attack_or_cast_time_uses_animation_length",
    },
    levels = {
        [1] = {levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["GAPerennialKingBeaconSpearStab"] = {
    name = "GAPerennialKingBeaconSpearStab",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Triggerable] = true,
        [SkillType.Attack] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
        attack = true,
        area = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "monster_penalty_against_minions_damage_+%_final_vs_player_minions",
        "is_area_damage",
    },
    levels = {
        [1] = {200, baseMultiplier = 0.7, levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["GAPerennialKingBeaconSpearImpact"] = {
    name = "GAPerennialKingBeaconSpearImpact",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Triggerable] = true,
        [SkillType.Attack] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
        attack = true,
        area = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "monster_penalty_against_minions_damage_+%_final_vs_player_minions",
        "is_area_damage",
    },
    levels = {
        [1] = {200, baseMultiplier = 0.9, levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["GSPerennialKingBeaconOrbitLightningBeam"] = {
    name = "GSPerennialKingBeaconOrbitLightningBeam",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Triggerable] = true,
        [SkillType.Spell] = true,
        [SkillType.Damage] = true,
    },
    statDescriptionScope = "geometry_spell",
    castTime = 1,
    baseFlags = {
        spell = true,
        area = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "spell_minimum_base_lightning_damage",
        "spell_maximum_base_lightning_damage",
        "monster_penalty_against_minions_damage_+%_final_vs_player_minions",
        "is_area_damage",
    },
    levels = {
        [1] = {0.5, 1.5, 200, levelRequirement = 1, statInterpolation = {3, 3},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["GSPerennialKingBasicLightningZap"] = {
    name = "GSPerennialKingBasicLightningZap",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Triggerable] = true,
        [SkillType.Spell] = true,
        [SkillType.Damage] = true,
    },
    statDescriptionScope = "geometry_spell",
    castTime = 1,
    baseFlags = {
        spell = true,
        area = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "spell_minimum_base_lightning_damage",
        "spell_maximum_base_lightning_damage",
        "spell_maximum_action_distance_+%",
        "monster_penalty_against_minions_damage_+%_final_vs_player_minions",
        "is_area_damage",
        "action_attack_or_cast_time_uses_animation_length",
        "base_skill_can_be_blocked",
    },
    levels = {
        [1] = {0.5, 1.5, -85, 200, critChance = 6, levelRequirement = 1, statInterpolation = {3, 3},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["GAPerennialKingGlassSwordSlam"] = {
    name = "GAPerennialKingGlassSwordSlam",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Triggerable] = true,
        [SkillType.Attack] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
        attack = true,
        area = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "attack_maximum_action_distance_+",
        "active_skill_base_physical_damage_%_to_convert_to_lightning",
        "monster_penalty_against_minions_damage_+%_final_vs_player_minions",
        "is_area_damage",
        "action_attack_or_cast_time_uses_animation_length",
        "base_skill_cannot_be_blocked",
    },
    levels = {
        [1] = {25, 35, 200, baseMultiplier = 4.5, levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["GAPerennialKingAxeCleave"] = {
    name = "GAPerennialKingAxeCleave",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Triggerable] = true,
        [SkillType.Attack] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
        attack = true,
        area = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "attack_maximum_action_distance_+",
        "active_skill_base_physical_damage_%_to_convert_to_lightning",
        "monster_penalty_against_minions_damage_+%_final_vs_player_minions",
        "is_area_damage",
        "action_attack_or_cast_time_uses_animation_length",
        "base_skill_can_be_avoided_by_dodge_roll",
        "base_skill_cannot_be_blocked",
    },
    levels = {
        [1] = {12, 25, 200, baseMultiplier = 4, levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["GAPerennialKingObsidianStormImpact"] = {
    name = "GAPerennialKingObsidianStormImpact",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Triggerable] = true,
        [SkillType.Attack] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
        attack = true,
        area = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "monster_penalty_against_minions_damage_+%_final_vs_player_minions",
        "is_area_damage",
        "action_attack_or_cast_time_uses_animation_length",
    },
    levels = {
        [1] = {200, levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["GSPerennialKingSandnadoPhysDamage"] = {
    name = "GSPerennialKingSandnadoPhysDamage",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Triggerable] = true,
        [SkillType.Spell] = true,
        [SkillType.Damage] = true,
    },
    statDescriptionScope = "geometry_spell",
    castTime = 1,
    baseFlags = {
        spell = true,
        area = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "monster_penalty_against_minions_damage_+%_final_vs_player_minions",
        "is_area_damage",
        "action_attack_or_cast_time_uses_animation_length",
    },
    levels = {
        [1] = {200, levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["GSPerennialKingSandnadoLightningDamage"] = {
    name = "GSPerennialKingSandnadoLightningDamage",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Triggerable] = true,
        [SkillType.Spell] = true,
        [SkillType.Damage] = true,
    },
    statDescriptionScope = "geometry_spell",
    castTime = 1,
    baseFlags = {
        spell = true,
        area = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "spell_minimum_base_lightning_damage",
        "spell_maximum_base_lightning_damage",
        "monster_penalty_against_minions_damage_+%_final_vs_player_minions",
        "is_area_damage",
        "action_attack_or_cast_time_uses_animation_length",
    },
    levels = {
        [1] = {0.5, 1.5, 200, levelRequirement = 1, statInterpolation = {3, 3},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["GSPerennialKingBeaconSpray"] = {
    name = "GSPerennialKingBeaconSpray",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Triggerable] = true,
        [SkillType.Spell] = true,
        [SkillType.Damage] = true,
    },
    statDescriptionScope = "geometry_spell",
    castTime = 1,
    baseFlags = {
        spell = true,
        area = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "spell_minimum_base_lightning_damage",
        "spell_maximum_base_lightning_damage",
        "active_skill_shock_chance_+%_final",
        "monster_penalty_against_minions_damage_+%_final_vs_player_minions",
        "is_area_damage",
        "action_attack_or_cast_time_uses_animation_length",
        "base_skill_can_be_blocked",
    },
    levels = {
        [1] = {0.5, 1.5, 25, 200, critChance = 6, levelRequirement = 1, statInterpolation = {3, 3},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["GAPerennialKingGlassSpearTossImpact"] = {
    name = "GAPerennialKingGlassSpearTossImpact",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Triggerable] = true,
        [SkillType.Attack] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
        attack = true,
        area = true,
        projectile = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "active_skill_base_physical_damage_%_to_convert_to_lightning",
        "monster_penalty_against_minions_damage_+%_final_vs_player_minions",
        "is_area_damage",
        "action_attack_or_cast_time_uses_animation_length",
        "base_is_projectile",
    },
    levels = {
        [1] = {25, 200, baseMultiplier = 1.8, levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["GAPerennialKingGlassSpearTossImpactMulti"] = {
    name = "GAPerennialKingGlassSpearTossImpactMulti",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Triggerable] = true,
        [SkillType.Attack] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
        attack = true,
        area = true,
        projectile = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "active_skill_base_physical_damage_%_to_convert_to_lightning",
        "monster_penalty_against_minions_damage_+%_final_vs_player_minions",
        "is_area_damage",
        "action_attack_or_cast_time_uses_animation_length",
        "base_is_projectile",
    },
    levels = {
        [1] = {25, 200, baseMultiplier = 1.5, levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["GSPerennialKingGlassSwordFenceZap"] = {
    name = "GSPerennialKingGlassSwordFenceZap",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Triggerable] = true,
        [SkillType.Spell] = true,
        [SkillType.Damage] = true,
    },
    statDescriptionScope = "geometry_spell",
    castTime = 1,
    baseFlags = {
        spell = true,
        area = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "spell_minimum_base_lightning_damage",
        "spell_maximum_base_lightning_damage",
        "active_skill_electrocutes_as_though_dealt_damage_+%_final",
        "base_skill_effect_duration",
        "monster_penalty_against_minions_damage_+%_final_vs_player_minions",
        "is_area_damage",
        "action_attack_or_cast_time_uses_animation_length",
        "base_lightning_damage_can_electrocute",
        "base_skill_can_be_avoided_by_dodge_roll",
    },
    levels = {
        [1] = {0.5, 1.5, 90, 4000, 200, critChance = 6, levelRequirement = 1, statInterpolation = {3, 3},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["EASPerennialKingBeaconToss"] = {
    name = "EASPerennialKingBeaconToss",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "spell_maximum_action_distance_+%",
        "action_attack_or_cast_time_uses_animation_length",
    },
    levels = {
        [1] = {-35, levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["EASPerennialKingBeaconBolts"] = {
    name = "EASPerennialKingBeaconBolts",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "action_attack_or_cast_time_uses_animation_length",
    },
    levels = {
        [1] = {levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["EASPerennialKingLightningSpray"] = {
    name = "EASPerennialKingLightningSpray",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "action_attack_or_cast_time_uses_animation_length",
    },
    levels = {
        [1] = {levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["EASPerennialKingBeaconOrbitStart"] = {
    name = "EASPerennialKingBeaconOrbitStart",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "action_attack_or_cast_time_uses_animation_length",
    },
    levels = {
        [1] = {levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["EASPerennialKingBeaconOrbitRecall"] = {
    name = "EASPerennialKingBeaconOrbitRecall",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "action_attack_or_cast_time_uses_animation_length",
    },
    levels = {
        [1] = {levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["EASAbsoluteCartnage"] = {
    name = "EASAbsoluteCartnage",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "action_attack_or_cast_time_uses_animation_length",
    },
    levels = {
        [1] = {levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["EAAPerennialKingGlassSwordFence"] = {
    name = "EAAPerennialKingGlassSwordFence",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "attack_maximum_action_distance_+",
        "action_attack_or_cast_time_uses_animation_length",
    },
    levels = {
        [1] = {30, levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["EASPerennialKingOrbitTornado"] = {
    name = "EASPerennialKingOrbitTornado",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "action_attack_or_cast_time_uses_animation_length",
    },
    levels = {
        [1] = {levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["MDPerennialKingObsidianStorm"] = {
    name = "MDPerennialKingObsidianStorm",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Multicastable] = true,
        [SkillType.Triggerable] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "action_attack_or_cast_time_uses_animation_length",
    },
    levels = {
        [1] = {levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["MDPerennialKingTornado"] = {
    name = "MDPerennialKingTornado",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Multicastable] = true,
        [SkillType.Triggerable] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "action_attack_or_cast_time_uses_animation_length",
    },
    levels = {
        [1] = {levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["SOPerennialKingObsidianMinigun"] = {
    name = "SOPerennialKingObsidianMinigun",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Triggerable] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "action_attack_or_cast_time_uses_animation_length",
    },
    levels = {
        [1] = {levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["SOPerennialKingGlassSpearMultiRock"] = {
    name = "SOPerennialKingGlassSpearMultiRock",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Triggerable] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "action_attack_or_cast_time_uses_animation_length",
    },
    levels = {
        [1] = {levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["SOPerennialKingGlassSwordFence"] = {
    name = "SOPerennialKingGlassSwordFence",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Triggerable] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "action_attack_or_cast_time_uses_animation_length",
    },
    levels = {
        [1] = {levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["GTPerennialKingGlassSpearToss"] = {
    name = "GTPerennialKingGlassSpearToss",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Triggerable] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "action_attack_or_cast_time_uses_animation_length",
    },
    levels = {
        [1] = {levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["EDSPerennialKingBeaconLightningBolt"] = {
    name = "EDSPerennialKingBeaconLightningBolt",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Triggerable] = true,
        [SkillType.Spell] = true,
        [SkillType.Damage] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
        spell = true,
        area = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "spell_minimum_base_lightning_damage",
        "spell_maximum_base_lightning_damage",
        "monster_penalty_against_minions_damage_+%_final_vs_player_minions",
        "is_area_damage",
        "action_attack_or_cast_time_uses_animation_length",
    },
    levels = {
        [1] = {0.5, 1.5, 150, critChance = 6, levelRequirement = 1, statInterpolation = {3, 3},  cost = { }, },
    },
}
monster dropped item rarity +% [14700]
monster slain experience +% [0]
unique monster guarantee one rare [1]
IdMonsterUniqueT3Boss
FamilyMonsterActBoss
DomainsMonster (3)
GenerationTypeÚnico (3)
Req. level1
Stats
  • monster slain experience +% Min: 0 Max: 0 Global
  • monster dropped item rarity +% Min: 14700 Max: 14700 Global
  • unique monster guarantee one rare Min: 1 Max: 1 Global
  • Jamanra, la Abominación
    monster dropped item rarity +% [14700]
    monster slain experience +% [0]
    unique monster guarantee one rare [1]
    monster dropped item quantity +% [800]
    monster dropped item rarity +% [10000]
    monster map key of at least same tier as current map drop chance % [25]
    monster slain experience +% [9000]
    unique monster guarantee one rare [1]
    Probabilidad de electrocutar aumentada un 200%
    Jamanra, the Abomination
    SpectreN
    AreaLa ciudadela de cobre
    Tags2HSharpMetal_onhit_audio, human, humanoid, not_dex, not_int, red_blood, very_slow_movement
    Vida
    540%
    Armadura
    +50%
    Ailment Threshold
    %
    Resistencia
    0 0 0 0
    Damage
    200%
    Precisión
    100%
    Probabilidad de golpe crítico
    +5%
    Multiplicador de golpe crítico
    +130%
    Attack Distance
    6 ~ 18
    Attack Time
    1.5 Second
    Damage Spread
    ±20%
    Experiencia
    300%
    Model Size
    100%
    Type
    PerennialKingMap
    Metadata
    PerennialKingMap
    Nivel
    80
    Vida
    84,289
    Armadura
    10,301
    Evasión
    644
    Energy Shield
    0
    Damage
    668
    Daño de hechizos
    668
    Precisión
    1,602
    Attack Time
    1.5
    Experiencia
    300,000
    GSPerennialKingBasicLightningZap
    Triggerable, Spell, Damage
    Probabilidad de golpe crítico: 6%
    Tiempo de lanzamiento: 1 seg
    Inflige de 24.09 a 72.28 de daño de rayo
    action attack or cast time uses animation length [1]
    base skill can be blocked [1]
    is area damage [1]
    monster penalty against minions damage +% final vs player minions [200]
    spell maximum action distance +% [-85]
    MASPerennialKingSandWhip
    Attack, RangedAttack, MirageArcherCanUse, Projectile, MeleeSingleTarget, Multistrikeable, Melee, ProjectilesFromUser
    Ataque básico
    Base Damage: 534–801
    Probabilidad de [Critical|impacto crítico]: 5%
    Daño de ataque: 75%
    Attack Time: 1.5 seg
    Tiempo de recarga: 6 seg
    Inflige un 25% menos de daño de ataques
    action attack or cast time uses animation length [1]
    attack maximum action distance + [8]
    projectile uses contact position [1]
    skill can fire wand projectiles [1]
    use scaled contact offset [1]
    CTS5PerennialKingSandstorm
    action attack or cast time uses animation length [1]
    CTS1PerennialKingEndSandstorm
    action attack or cast time uses animation length [1]
    EASPerennialKingBeaconToss
    action attack or cast time uses animation length [1]
    spell maximum action distance +% [-35]
    EASPerennialKingBeaconBolts
    Tiempo de recarga: 15 seg
    action attack or cast time uses animation length [1]
    EASPerennialKingLightningSpray
    Tiempo de recarga: 22.5 seg
    action attack or cast time uses animation length [1]
    EASPerennialKingBeaconOrbitStart
    Tiempo de recarga: 30 seg
    action attack or cast time uses animation length [1]
    EASPerennialKingBeaconOrbitRecall
    action attack or cast time uses animation length [1]
    CTS3PerennialKingMultistab
    Tiempo de recarga: 25 seg
    action attack or cast time uses animation length [1]
    CTS1PerennialKingEndMultistab
    action attack or cast time uses animation length [1]
    MPWPerennialKingGlassSpearToss
    Attack, RangedAttack, MirageArcherCanUse, Projectile, ProjectilesFromUser, Damage, Triggerable
    Base Damage: 534–801
    Probabilidad de [Critical|impacto crítico]: 5%
    Attack Time: 1.5 seg
    Tiempo de recarga: 18 seg
    Los proyectiles perforan a todos los objetivos
    Convierte el 25% del daño físico en daño de rayo
    action attack or cast time uses animation length [1]
    base is projectile [1]
    monster projectile variation [1125]
    projectile uses contact position [1]
    GPAPerennialKingGlassSpearMultiToss
    Triggerable, Attack
    Base Damage: 534–801
    Probabilidad de [Critical|impacto crítico]: 5%
    Attack Time: 1.5 seg
    Tiempo de recarga: 17 seg
    Los proyectiles perforan a todos los objetivos
    action attack or cast time uses animation length [1]
    active skill projectile speed +% variation final [0]
    attack maximum action distance + [70]
    base is projectile [1]
    projectile spread radius [5]
    projectile uses contact position [1]
    use scaled contact offset [1]
    GAPerennialKingGlassSwordSlam
    Triggerable, Attack
    Base Damage: 534–801
    Probabilidad de [Critical|impacto crítico]: 5%
    Daño de ataque: 450%
    Attack Time: 1.5 seg
    Tiempo de recarga: 18 seg
    Inflige un 350% más de daño de ataques
    Convierte el 35% del daño físico en daño de rayo
    action attack or cast time uses animation length [1]
    attack maximum action distance + [25]
    base skill cannot be blocked [1]
    is area damage [1]
    monster penalty against minions damage +% final vs player minions [200]
    EAAPerennialKingGlassSwordFence
    Tiempo de recarga: 17 seg
    action attack or cast time uses animation length [1]
    attack maximum action distance + [30]
    GAPerennialKingAxeCleave
    Triggerable, Attack
    Base Damage: 534–801
    Probabilidad de [Critical|impacto crítico]: 5%
    Daño de ataque: 400%
    Attack Time: 1.5 seg
    Tiempo de recarga: 26 seg
    Inflige un 300% más de daño de ataques
    Convierte el 25% del daño físico en daño de rayo
    action attack or cast time uses animation length [1]
    attack maximum action distance + [12]
    base skill can be avoided by dodge roll [1]
    base skill cannot be blocked [1]
    is area damage [1]
    monster penalty against minions damage +% final vs player minions [200]
    MDPerennialKingObsidianStorm
    Multicastable, Triggerable
    Tiempo de recarga: 40 seg
    action attack or cast time uses animation length [1]
    MDPerennialKingTornado
    Multicastable, Triggerable
    Tiempo de recarga: 42 seg
    action attack or cast time uses animation length [1]
    EASPerennialKingOrbitTornado
    action attack or cast time uses animation length [1]
    SOPerennialKingObsidianMinigun
    Triggerable
    Tiempo de recarga: 17 seg
    action attack or cast time uses animation length [1]
    EASAbsoluteCartnage
    action attack or cast time uses animation length [1]
    GSPerennialKingBeaconSpray
    Triggerable, Spell, Damage
    Probabilidad de golpe crítico: 6%
    Tiempo de lanzamiento: 1 seg
    Inflige de 11.47 a 34.42 de daño de rayo
    25% más de probabilidad de electrocutar
    action attack or cast time uses animation length [1]
    base skill can be blocked [1]
    is area damage [1]
    monster penalty against minions damage +% final vs player minions [200]
    GAPerennialKingBeaconSpearStab
    Triggerable, Attack
    Base Damage: 534–801
    Probabilidad de [Critical|impacto crítico]: 5%
    Daño de ataque: 70%
    Attack Time: 1.5 seg
    Inflige un 30% menos de daño de ataques
    is area damage [1]
    monster penalty against minions damage +% final vs player minions [200]
    GAPerennialKingBeaconSpearImpact
    Triggerable, Attack
    Base Damage: 534–801
    Probabilidad de [Critical|impacto crítico]: 5%
    Daño de ataque: 90%
    Attack Time: 1.5 seg
    Inflige un 10% menos de daño de ataques
    is area damage [1]
    monster penalty against minions damage +% final vs player minions [200]
    GSPerennialKingBeaconOrbitLightningBeam
    Triggerable, Spell, Damage
    Tiempo de lanzamiento: 1 seg
    Inflige de 24.48 a 73.43 de daño de rayo
    is area damage [1]
    monster penalty against minions damage +% final vs player minions [200]
    EDSPerennialKingBeaconLightningBolt
    Triggerable, Spell, Damage
    Probabilidad de golpe crítico: 6%
    Tiempo de lanzamiento: 1 seg
    Inflige de 118.6 a 355.7 de daño de rayo
    action attack or cast time uses animation length [1]
    is area damage [1]
    monster penalty against minions damage +% final vs player minions [150]
    GTPerennialKingGlassSpearToss
    Triggerable
    action attack or cast time uses animation length [1]
    GAPerennialKingGlassSpearTossImpact
    Triggerable, Attack
    Base Damage: 534–801
    Probabilidad de [Critical|impacto crítico]: 5%
    Daño de ataque: 180%
    Attack Time: 1.5 seg
    Inflige un 80% más de daño de ataques
    Convierte el 25% del daño físico en daño de rayo
    action attack or cast time uses animation length [1]
    base is projectile [1]
    is area damage [1]
    monster penalty against minions damage +% final vs player minions [200]
    GAPerennialKingGlassSpearTossImpactMulti
    Triggerable, Attack
    Base Damage: 534–801
    Probabilidad de [Critical|impacto crítico]: 5%
    Daño de ataque: 150%
    Attack Time: 1.5 seg
    Inflige un 50% más de daño de ataques
    Convierte el 25% del daño físico en daño de rayo
    action attack or cast time uses animation length [1]
    base is projectile [1]
    is area damage [1]
    monster penalty against minions damage +% final vs player minions [200]
    SOPerennialKingGlassSpearMultiRock
    Triggerable
    action attack or cast time uses animation length [1]
    SOPerennialKingGlassSwordFence
    Triggerable
    action attack or cast time uses animation length [1]
    GSPerennialKingGlassSwordFenceZap
    Triggerable, Spell, Damage
    Probabilidad de golpe crítico: 6%
    Tiempo de lanzamiento: 1 seg
    Inflige de 6.622 a 19.87 de daño de rayo
    90% más de acumulación de parálisis
    El daño de rayo de esta habilidad contribuye
    a la acumulación de la parálisis
    action attack or cast time uses animation length [1]
    base skill can be avoided by dodge roll [1]
    base skill effect duration [4000]
    is area damage [1]
    monster penalty against minions damage +% final vs player minions [200]
    GAPerennialKingObsidianStormImpact
    Triggerable, Attack
    Base Damage: 534–801
    Probabilidad de [Critical|impacto crítico]: 5%
    Attack Time: 1.5 seg
    action attack or cast time uses animation length [1]
    is area damage [1]
    monster penalty against minions damage +% final vs player minions [200]
    GSPerennialKingSandnadoPhysDamage
    Triggerable, Spell, Damage
    Tiempo de lanzamiento: 1 seg
    action attack or cast time uses animation length [1]
    is area damage [1]
    monster penalty against minions damage +% final vs player minions [200]
    GSPerennialKingSandnadoLightningDamage
    Triggerable, Spell, Damage
    Tiempo de lanzamiento: 1 seg
    Inflige de 45.89 a 137.7 de daño de rayo
    action attack or cast time uses animation length [1]
    is area damage [1]
    monster penalty against minions damage +% final vs player minions [200]
    MPWPerennialKingObsidianMinigun
    Attack, RangedAttack, MirageArcherCanUse, Projectile, ProjectilesFromUser, Damage, Triggerable
    Base Damage: 534–801
    Probabilidad de [Critical|impacto crítico]: 5%
    Daño de ataque: 50%
    Attack Time: 1.5 seg
    Inflige un 50% menos de daño de ataques
    Convierte el 25% del daño físico en daño de rayo
    action attack or cast time uses animation length [1]
    active skill projectile speed +% variation final [20]
    base is projectile [1]
    monster projectile variation [1127]
    projectile ballistic angle from target distance [1]
    projectile ballistic gravity override [400]
    projectile maximum range override [250]
    projectile spread radius [0]

    Object Type

    version 2
    extends "Metadata/Monsters/Monster"
    extends "Metadata/Monsters/BossBase"
    
    /* ------------------------------------------------------------------------------------------------------------------- */
    /* Generic */
    /* ------------------------------------------------------------------------------------------------------------------- */
    
    BaseEvents
    {
    	on_construction_complete = { globals.pen_king = this; AddToPlayerWakeGroup( true ); }
    }
    
    Preload
    {
    	preload_character_animation = "KnockdownLoop"
    }
    
    Actor
    {
    	basic_action = "MoveForced"
    	basic_action = "StrafeLeftNoFlee"
    	basic_action = "StrafeRightNoFlee"
    	leveled_starting_effects = "DoLiterallyNothing"
    }
    
    StateMachine
    {
    	// the fake PK sets this to 0 when the emerge sequence begins, so it can swap to the correct skin
    	define_shared_state =
    	"
    		invis = 1;
    		lock_on;
    		tornados;
    		seen_intro = 1;
    	"
    
    	on_state_lock_on_0 = "SetUsesDirectionalRunAnimations( false );"
    	on_state_lock_on_1 = "SetUsesDirectionalRunAnimations( true );"
    	on_or_create_state_invis_0 = "MakeCollidable();"
    	on_or_create_state_invis_1 = "RemoveCollidability();"
    }
    
    Stats
    {
    	set_monster_delay_item_drops_millis = 11000
    	strafe_distance_+% = -60
    }
    
    /* ------------------------------------------------------------------------------------------------------------------- */
    /* Beacon Shared */
    /* ------------------------------------------------------------------------------------------------------------------- */
    
    StateMachine
    {
    	// these states are used for ALL the beacon skills and keep track of the beacons, so the boss knows if it can use the other beacon skills
    	define_shared_state =
    	"
    		has_left_beacon = 1;
    		has_right_beacon = 1;
    	"
    }
    
    /* ------------------------------------------------------------------------------------------------------------------- */
    /* Obsidian Spear Toss (multi) */
    /* ------------------------------------------------------------------------------------------------------------------- */
    
    Animated
    {
    	// this event fires a bit before the projectiles do, so they target a location that is a bit behind to prevent them from always hitting the target
    	// the target points are generated around a circle, so they need to be reshuffled to minimise projectile crossover
    	on_event_prepare_proj_center =
    	"
    		this.spear_count = 0;
    		this.multi_spear_target_center = target.GetLocation();
    		Call( generate_spear_target_points, multi_spear_target_center, 20.0, 8 );
    		this.target_points = null;
    		this.target_points += target_points2[2];
    		this.target_points += target_points2[1];
    		this.target_points += target_points2[3];
    		this.target_points += target_points2[0];
    		this.target_points += target_points2[4];
    		this.target_points += target_points2[7];
    		this.target_points += target_points2[5];
    		this.target_points += target_points2[6];
    	"
    
    	on_event_prepare_proj =
    	"
    		SetTargetLocation( GetVariablesFromGroup( target_points, spear_count, Index ), 0, 0, true );
    		this.spear_count = spear_count + 1;
    	"
    }
    
    Functions
    {
    	// arg1: center (location)
    	// arg2: radius (float)
    	// arg3: num points (float)
    	generate_spear_target_points =
    	"
    		this.target_points2 = null;
    		this.angle = 0.0;
    		local angle_increment = 360.0 / arg3;
    		local pi = 3.14159265359;
    		Repeat( 8, ()
    		{
    			local new_loc = MakeLocation( arg1.x + Eval( arg2 * Cos( angle ) ), arg1.y + Eval( arg2 * Sin( angle ) ) );
    			this.target_points2 += new_loc;
    			this.angle = angle + angle_increment;
    		} );
    	"
    }
    
    /* ------------------------------------------------------------------------------------------------------------------- */
    /* Death */
    /* ------------------------------------------------------------------------------------------------------------------- */
    
    StateMachine
    {
    	define_shared_state = "lost_head;"
    }

    Object Type Codes

    version 2
    extends "Metadata/Monsters/Monster"
    extends "Metadata/Monsters/BossBase"
    
    /* ------------------------------------------------------------------------------------------------------------------- */
    /* Generic */
    /* ------------------------------------------------------------------------------------------------------------------- */
    
    StateMachine
    {
    	// this state is set by the 'fake' perennial king that exists pre-emerge, so when it does emerge it can swap skins
    	// fake PK: Metadata/Terrain/Gallows/Act2/2_12_2/Objects/PerennialKingHuman
    	on_or_create_state_invis_0 = "EnableRendering();"
    	on_or_create_state_invis_1 = "DisableRendering();"
    
    	on_state_dead_1 =
    	{
    		globals.destructable_arena_core.PlayAnimation( crash_01 );
    		globals.destructable_arena_core.GoToAnimationEnd();
    	}
    }
    
    Render
    {
    	use_ao_lights = true
    	allow_attached_arrows = false
    }
    
    Preload
    {
    	preload_animated_object = "Metadata/Effects/Spells/monsters_effects/Act2_FOUR/PerennialKing/ao/sand_storm_arena.ao"
    	preload_animated_object = "Metadata/Effects/Spells/monsters_effects/Act2_FOUR/PerennialKing/ao/big_zap_01.ao"
    	preload_object = "Metadata/Monsters/PerennialKingStage2/PerennialKingBeacon"
    	preload_monster_variety = "Metadata/Monsters/PerennialKingStage2/PerennialKingCorpseFriend1"
    	preload_monster_variety = "Metadata/Monsters/PerennialKingStage2/PerennialKingCorpseFriend2"
    	preload_monster_variety = "Metadata/Monsters/PerennialKingStage2/PerennialKingCorpseFriend3"
    	preload_monster_variety = "Metadata/Monsters/PerennialKingStage2/PerennialKingCorpseFriend4_"
    	preload_monster_variety = "Metadata/Monsters/PerennialKingStage2/PerennialKingCorpseFriend5"
    	preload_monster_variety = "Metadata/Monsters/PerennialKingStage2/PerennialKingCorpseFriend6"
    	preload_monster_variety = "Metadata/Monsters/PerennialKingStage2/PerennialKingCorpseFriend7"
    	preload_monster_variety = "Metadata/Monsters/PerennialKingStage2/PerennialKingCorpseFriend8"
    	preload_monster_variety = "Metadata/Monsters/PerennialKingStage2/PerennialKingCorpseFriend9"
    	preload_monster_variety = "Metadata/Monsters/PerennialKingStage2/PerennialKingCorpseFriend10__"
    	preload_monster_variety = "Metadata/Monsters/PerennialKingStage2/PerennialKingCorpseFriend11"
    	preload_monster_variety = "Metadata/Monsters/PerennialKingStage2/PerennialKingCorpseFriend12"
    	preload_monster_variety = "Metadata/Monsters/PerennialKingStage2/PerennialKingCorpseFriend13"
    	preload_environment = "G2_12_2_boss"
    	preload_misc_beam = "PerennialKingBeaconSprayBeam"
    	preload_misc_beam = "PerennialKingHandsprayBeam"
    }
    
    /* ------------------------------------------------------------------------------------------------------------------- */
    /* Movement/Turning */
    /* ------------------------------------------------------------------------------------------------------------------- */
    
    // whenever PK turns need to also play an additive turn animation, using the correct animation for the turn direction (left or right)
    // can do this by constantly checking the monsters orientation (GetOrientation() and comparing it with its bearing (GetAnimatedBearing()))
    // orientation is the server orientation, so this value will always be the actual direction the monster is facing
    // bearing is the clients current facing direction, and this one does visually match with the monsters facing direction
    // so whenever those two aren't the same, you can assume the monster is turning
    // also, when the monster is moving don't do any of this cause it messes with the additive n-directional anims
    Positioned
    {
    	on_initial_position_set = "StartStateTimer( check_bearing );"
    
    	on_movement_started =
    	"
    		If( GetState( current_rotate_dir ) > 0, (){ SetStateTo( current_rotate_dir, 0 ); } );
    	"
    }
    
    StateMachine
    {
    	define_state = "current_rotate_dir;"
    	define_timer = "check_bearing = 0.033;"
    
    	// compare the bearing and orientation here, and then set the current_rotate_dir state to 1/2/11/12 (if its not already set)
    	// that state being set to one of those values causes the additive turn anim to play, then the state is reset after that anim is finished
    	// 1 and 2 are for the right turns, 1 being used for shorter turns (based on the angle_diff value), and 11/12 are for left with 11 being the short one
    	// there is a 10 degree no-turn forward angle, to prevent tiny turns that aren't needed
    	on_timer_check_bearing =
    	"
    		this.orientation = GetOrientation();
    		this.bearing = GetAnimatedBearing();
    		this.angle_diff = bearing - orientation;
    		this.angle_diff = Round( EvalIf( angle_diff > 180.0, angle_diff - 360.0, EvalIf( angle_diff < -180, angle_diff + 360.0, angle_diff ) ), 2 );
    		// If( angle_diff == 0.0, (){ FadeAnimations( 9, 0.666 ); } );
    		If( And( angle_diff > 5.0, angle_diff <= 45.0 ), ()
    		{
    			If( GetState( current_rotate_dir ) == 0, (){ SetStateTo( current_rotate_dir, 1 ); } );
    		} );
    		If( angle_diff > 45.0, ()
    		{
    			If( GetState( current_rotate_dir ) == 0, (){ SetStateTo( current_rotate_dir, 2 ); } );
    		} );
    		If( And( angle_diff < -5.0, angle_diff >= -45.0 ), ()
    		{
    			If( GetState( current_rotate_dir ) == 0, (){ SetStateTo( current_rotate_dir, 11 ); } );
    		} );
    		If( angle_diff < -45.0, ()
    		{
    			If( GetState( current_rotate_dir ) == 0, (){ SetStateTo( current_rotate_dir, 12 ); } );
    		} );
    		StartStateTimer( check_bearing );
    	"
    
    	// play a different additive turn anim for different turn directions and velocity
    	on_state_current_rotate_dir_1 =
    	"
    		If( GetCurrentMoveSpeed() < 1.0, ()
    		{
    			PlayAdditiveAnimation( turn_02_right, 9 );
    			Delay( 0.666, { SetStateTo( current_rotate_dir, 0 ); } );
    		}, (){ SetStateTo( current_rotate_dir, 0 ); } );
    	"
    
    	on_state_current_rotate_dir_2 =
    	"
    		If( GetCurrentMoveSpeed() < 1.0, ()
    		{
    			PlayAdditiveAnimation( turn_01_right, 9 );
    			Delay( 0.666, { SetStateTo( current_rotate_dir, 0 ); } );
    		}, (){ SetStateTo( current_rotate_dir, 0 ); } );
    	"
    
    	on_state_current_rotate_dir_11 =
    	"
    		If( GetCurrentMoveSpeed() < 1.0, ()
    		{
    			PlayAdditiveAnimation( turn_02_left, 9 );
    			Delay( 0.666, { SetStateTo( current_rotate_dir, 0 ); } );
    		}, (){ SetStateTo( current_rotate_dir, 0 ); } );
    	"
    
    	on_state_current_rotate_dir_12 =
    	"
    		If( GetCurrentMoveSpeed() < 1.0, ()
    		{
    			PlayAdditiveAnimation( turn_01_left, 9 );
    			Delay( 0.666, { SetStateTo( current_rotate_dir, 0 ); } );
    		}, (){ SetStateTo( current_rotate_dir, 0 ); } );
    	"
    }
    
    /* ------------------------------------------------------------------------------------------------------------------- */
    /* Phase change to second arena */
    /* ------------------------------------------------------------------------------------------------------------------- */
    
    Functions
    {
    	fade_out = "FadeToBlack( 0, 3000, 6000 );"
    	destroy_cart_core = "globals.destructable_arena_core.PlayAnimationAtSpeed( crash_01, 1.0 );"
    
    	destroy_cart_core_instant =
    	"
    		globals.destructable_arena_core.PlayAnimation( crash_01 );
    		globals.destructable_arena_core.GoToAnimationEnd();
    	"
    
    	hide_player_weapons = "arg1.HideWeapons();"
    	show_player_weapons = "arg1.ShowWeapons();"
    }
    
    /* ------------------------------------------------------------------------------------------------------------------- */
    /* Death */
    /* ------------------------------------------------------------------------------------------------------------------- */
    
    StateMachine
    {
    	on_or_create_state_lost_head_1 =
    	"
    		HideMeshSegment( PerennialKing_headShape );
    		DetachAllOfType( 'Art/Models/MONSTERS/PerennialKingStage2/attachments/PerennialKingHelmet.fmt;Art/Models/MONSTERS/PerennialKingStage2/attachments/PerennialKingHelmet.ao' );
    	"
    }
    
    Functions
    {
    	get_up_asala = { PlayCharacterAudioEvent( AfterPerennialKingSeeAsala ); }
    }
    
    /* ------------------------------------------------------------------------------------------------------------------- */
    /* Audio */
    /* ------------------------------------------------------------------------------------------------------------------- */
    
    GlobalAudioParamEvents
    {
    	player_in_range_param = "PerennialKing2InRange"
    	life_percent_param = "PerennialKing2LifePercentage"
    	range = 130
    }
    
    Life
    {
    	on_life_percent_reaches_1 = "PlayTextAudio( PerennialKing_Dreadnought_DeathMisc_7, 'Metadata/Monsters/PerennialKingStage2/PerennialKing', 1500 );"
    }
    
    Actor
    {
    	on_effect_start_CTS1BossFightStart = "QueueTextAudio( PerennialKing_Dreadnought_Intro_ThisEnds_Random, 'Metadata/Monsters/PerennialKingStage2/PerennialKing', 3500 );"
    
    	on_effect_start_GSPerennialKingBasicLightningZap =
    	"
    		Roll( 1, 6, ()
    		{
    			PlayTextAudio( PerennialKing_Dreadnought_MiscSkill_Random, 'Metadata/Monsters/PerennialKingStage2/PerennialKing' );
    		} );
    	"
    
    	on_effect_start_MASPerennialKingSandWhip =
    	"
    		Roll( 1, 5, ()
    		{
    			PlayTextAudio( PerennialKing_Dreadnought_MiscSkill_Random, 'Metadata/Monsters/PerennialKingStage2/PerennialKing' );
    		} );
    	"
    
    	on_effect_start_CTS5PerennialKingSandstorm =
    	"
    		Roll( 1, 2, ()
    		{
    			PlayTextAudio( PerennialKing_Dreadnought_SummonSandstorm_Random, 'Metadata/Monsters/PerennialKingStage2/PerennialKing' );
    		} );
    	"
    
    	on_effect_start_EASPerennialKingBeaconToss =
    	"
    		Roll( 1, 5, ()
    		{
    			PlayTextAudio( PerennialKing_Dreadnought_MiscSkill_Random, 'Metadata/Monsters/PerennialKingStage2/PerennialKing' );
    		} );
    	"
    
    	on_effect_start_EASPerennialKingBeaconBolts =
    	"
    		Roll( 1, 2, ()
    		{
    			PlayTextAudio( PerennialKing_Dreadnought_BeaconLightning_Random, 'Metadata/Monsters/PerennialKingStage2/PerennialKing' );
    		} );
    	"
    
    	on_effect_start_EASPerennialKingLightningSpray =
    	"
    		Roll( 1, 2, ()
    		{
    			PlayTextAudio( PerennialKing_Dreadnought_BeaconLightningSpray_Random, 'Metadata/Monsters/PerennialKingStage2/PerennialKing' );
    		} );
    	"
    
    	on_effect_start_EASPerennialKingBeaconOrbitStart =
    	"
    		Roll( 1, 1, ()
    		{
    			PlayTextAudio( PerennialKing_Dreadnought_BeaconSend_Random, 'Metadata/Monsters/PerennialKingStage2/PerennialKing' );
    		} );
    	"
    
    	on_effect_start_CTS3PerennialKingMultistab =
    	"
    		Roll( 1, 2, ()
    		{
    			PlayTextAudio( PerennialKing_Dreadnought_BeaconStab_Random, 'Metadata/Monsters/PerennialKingStage2/PerennialKing' );
    		} );
    	"
    
    	on_effect_start_MPWPerennialKingGlassSpearToss =
    	"
    		Roll( 1, 2, ()
    		{
    			PlayTextAudio( PerennialKing_Dreadnought_MiscSkill_Random, 'Metadata/Monsters/PerennialKingStage2/PerennialKing' );
    		} );
    	"
    
    	on_effect_start_GPAPerennialKingGlassSpearMultiToss =
    	"
    		Roll( 1, 1, ()
    		{
    			PlayTextAudio( PerennialKing_Dreadnought_SpearThrow_Random, 'Metadata/Monsters/PerennialKingStage2/PerennialKing' );
    		} );
    	"
    
    	on_effect_start_GAPerennialKingGlassSwordSlam =
    	"
    		Roll( 1, 1, ()
    		{
    			PlayTextAudio( PerennialKing_Dreadnought_2hSword_Random, 'Metadata/Monsters/PerennialKingStage2/PerennialKing' );
    		} );
    	"
    
    	on_effect_start_EAAPerennialKingGlassSwordFence =
    	"
    		Roll( 1, 2, ()
    		{
    			PlayTextAudio( PerennialKing_Dreadnought_Lacerate_Random, 'Metadata/Monsters/PerennialKingStage2/PerennialKing' );
    		} );
    	"
    
    	on_effect_start_GAPerennialKingAxeCleave =
    	"
    		Roll( 1, 5, ()
    		{
    			PlayTextAudio( PerennialKing_Dreadnought_MiscSkill_Random, 'Metadata/Monsters/PerennialKingStage2/PerennialKing' );
    		} );
    	"
    
    	on_effect_start_MDPerennialKingObsidianStorm =
    	"
    		Roll( 1, 1, ()
    		{
    			PlayTextAudio( PerennialKing_Dreadnought_ObsidianTornado_2, 'Metadata/Monsters/PerennialKingStage2/PerennialKing' );
    		} );
    	"
    
    	on_effect_start_MDPerennialKingTornado =
    	"
    		Roll( 1, 2, ()
    		{
    			PlayTextAudio( PerennialKing_Dreadnought_Tornado_4, 'Metadata/Monsters/PerennialKingStage2/PerennialKing' );
    		} );
    	"
    
    	on_effect_start_SOPerennialKingObsidianMinigun =
    	"
    		Roll( 1, 2, ()
    		{
    			PlayTextAudio( PerennialKing_Dreadnought_BeaconElectrify_Random, 'Metadata/Monsters/PerennialKingStage2/PerennialKing' );
    		} );
    	"
    
    	on_effect_start_EASAbsoluteCartnage =
    	"
    		Roll( 1, 1, ()
    		{
    			PlayTextAudio( PerennialKing_Dreadnought_Countess_3, 'Metadata/Monsters/PerennialKingStage2/PerennialKing');
    		} );
    	"
    
    	on_effect_event_contact_for_EASPerennialKingOrbitTornado =
    	"
    		Roll( 1, 1, ()
    		{
    			PlayTextAudio( PerennialKing_Dreadnought_BeastSandstorm_Random, 'Metadata/Monsters/PerennialKingStage2/PerennialKing' );
    		} );
    	"
    }
    
    Animated
    {
    	on_heavy_stun_01 =
    	"
    		Roll( 1, 2, ()
    		{
    			PlayTextAudio( PerennialKing_Dreadnought_HeavyStun_Random, 'Metadata/Monsters/PerennialKingStage2/PerennialKing' );
    		} );
    	"
    }
    -- src\Data\Spectres.lua
    minions["Metadata/Monsters/PerennialKingStage2/PerennialKingMap"] = {
        name = "Jamanra, the Abomination",
        life = 5.4,
        fireResist = 0,
        coldResist = 0,
        lightningResist = 0,
        chaosResist = 0,
        damage = 2,
        damageSpread = 0.2,
        attackTime = 1.5,
        attackRange = 18,
        accuracy = 1,
        skillList = {
            "MASPerennialKingSandWhip",
            "GPAPerennialKingGlassSpearMultiToss",
            "MPWPerennialKingGlassSpearToss",
            "MPWPerennialKingObsidianMinigun",
            "CTS1PerennialKingEndMultistab",
            "CTS3PerennialKingMultistab",
            "CTS5PerennialKingSandstorm",
            "CTS1PerennialKingEndSandstorm",
            "GAPerennialKingBeaconSpearStab",
            "GAPerennialKingBeaconSpearImpact",
            "GSPerennialKingBeaconOrbitLightningBeam",
            "GSPerennialKingBasicLightningZap",
            "GAPerennialKingGlassSwordSlam",
            "GAPerennialKingAxeCleave",
            "GAPerennialKingObsidianStormImpact",
            "GSPerennialKingSandnadoPhysDamage",
            "GSPerennialKingSandnadoLightningDamage",
            "GSPerennialKingBeaconSpray",
            "GAPerennialKingGlassSpearTossImpact",
            "GAPerennialKingGlassSpearTossImpactMulti",
            "GSPerennialKingGlassSwordFenceZap",
            "EASPerennialKingBeaconToss",
            "EASPerennialKingBeaconBolts",
            "EASPerennialKingLightningSpray",
            "EASPerennialKingBeaconOrbitStart",
            "EASPerennialKingBeaconOrbitRecall",
            "EASAbsoluteCartnage",
            "EAAPerennialKingGlassSwordFence",
            "EASPerennialKingOrbitTornado",
            "MDPerennialKingObsidianStorm",
            "MDPerennialKingTornado",
            "SOPerennialKingObsidianMinigun",
            "SOPerennialKingGlassSpearMultiRock",
            "SOPerennialKingGlassSwordFence",
            "GTPerennialKingGlassSpearToss",
            "EDSPerennialKingBeaconLightningBolt",
        },
        modList = {
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["MASPerennialKingSandWhip"] = {
        name = "Basic Attack",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Attack] = true,
            [SkillType.RangedAttack] = true,
            [SkillType.MirageArcherCanUse] = true,
            [SkillType.Projectile] = true,
            [SkillType.MeleeSingleTarget] = true,
            [SkillType.Multistrikeable] = true,
            [SkillType.Melee] = true,
            [SkillType.ProjectilesFromUser] = true,
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1,
        baseFlags = {
            attack = true,
            melee = true,
            projectile = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "attack_maximum_action_distance_+",
            "skill_can_fire_arrows",
            "skill_can_fire_wand_projectiles",
            "action_attack_or_cast_time_uses_animation_length",
            "projectile_uses_contact_position",
            "use_scaled_contact_offset",
        },
        levels = {
            [1] = {8, baseMultiplier = 0.75, levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["GPAPerennialKingGlassSpearMultiToss"] = {
        name = "GPAPerennialKingGlassSpearMultiToss",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Triggerable] = true,
            [SkillType.Attack] = true,
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1,
        baseFlags = {
            attack = true,
            projectile = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "attack_maximum_action_distance_+",
            "active_skill_projectile_speed_+%_variation_final",
            "projectile_spread_radius",
            "base_is_projectile",
            "use_scaled_contact_offset",
            "projectile_uses_contact_position",
            "action_attack_or_cast_time_uses_animation_length",
            "always_pierce",
        },
        levels = {
            [1] = {70, 0, 5, levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["MPWPerennialKingGlassSpearToss"] = {
        name = "MPWPerennialKingGlassSpearToss",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Attack] = true,
            [SkillType.RangedAttack] = true,
            [SkillType.MirageArcherCanUse] = true,
            [SkillType.Projectile] = true,
            [SkillType.ProjectilesFromUser] = true,
            [SkillType.Damage] = true,
            [SkillType.Triggerable] = true,
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1,
        baseFlags = {
            attack = true,
            projectile = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "monster_projectile_variation",
            "active_skill_base_physical_damage_%_to_convert_to_lightning",
            "base_is_projectile",
            "projectile_uses_contact_position",
            "action_attack_or_cast_time_uses_animation_length",
            "always_pierce",
        },
        levels = {
            [1] = {1125, 25, levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["MPWPerennialKingObsidianMinigun"] = {
        name = "MPWPerennialKingObsidianMinigun",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Attack] = true,
            [SkillType.RangedAttack] = true,
            [SkillType.MirageArcherCanUse] = true,
            [SkillType.Projectile] = true,
            [SkillType.ProjectilesFromUser] = true,
            [SkillType.Damage] = true,
            [SkillType.Triggerable] = true,
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1,
        baseFlags = {
            attack = true,
            projectile = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "monster_projectile_variation",
            "projectile_spread_radius",
            "projectile_ballistic_gravity_override",
            "projectile_maximum_range_override",
            "active_skill_projectile_speed_+%_variation_final",
            "active_skill_base_physical_damage_%_to_convert_to_lightning",
            "base_is_projectile",
            "action_attack_or_cast_time_uses_animation_length",
            "projectile_ballistic_angle_from_target_distance",
        },
        levels = {
            [1] = {1127, 0, 400, 250, 20, 25, baseMultiplier = 0.5, levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["CTS1PerennialKingEndMultistab"] = {
        name = "CTS1PerennialKingEndMultistab",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1,
        baseFlags = {
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "action_attack_or_cast_time_uses_animation_length",
        },
        levels = {
            [1] = {levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["CTS3PerennialKingMultistab"] = {
        name = "CTS3PerennialKingMultistab",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1,
        baseFlags = {
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "action_attack_or_cast_time_uses_animation_length",
        },
        levels = {
            [1] = {levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["CTS5PerennialKingSandstorm"] = {
        name = "CTS5PerennialKingSandstorm",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1,
        baseFlags = {
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "action_attack_or_cast_time_uses_animation_length",
        },
        levels = {
            [1] = {levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["CTS1PerennialKingEndSandstorm"] = {
        name = "CTS1PerennialKingEndSandstorm",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1,
        baseFlags = {
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "action_attack_or_cast_time_uses_animation_length",
        },
        levels = {
            [1] = {levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["GAPerennialKingBeaconSpearStab"] = {
        name = "GAPerennialKingBeaconSpearStab",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Triggerable] = true,
            [SkillType.Attack] = true,
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1,
        baseFlags = {
            attack = true,
            area = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "monster_penalty_against_minions_damage_+%_final_vs_player_minions",
            "is_area_damage",
        },
        levels = {
            [1] = {200, baseMultiplier = 0.7, levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["GAPerennialKingBeaconSpearImpact"] = {
        name = "GAPerennialKingBeaconSpearImpact",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Triggerable] = true,
            [SkillType.Attack] = true,
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1,
        baseFlags = {
            attack = true,
            area = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "monster_penalty_against_minions_damage_+%_final_vs_player_minions",
            "is_area_damage",
        },
        levels = {
            [1] = {200, baseMultiplier = 0.9, levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["GSPerennialKingBeaconOrbitLightningBeam"] = {
        name = "GSPerennialKingBeaconOrbitLightningBeam",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Triggerable] = true,
            [SkillType.Spell] = true,
            [SkillType.Damage] = true,
        },
        statDescriptionScope = "geometry_spell",
        castTime = 1,
        baseFlags = {
            spell = true,
            area = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "spell_minimum_base_lightning_damage",
            "spell_maximum_base_lightning_damage",
            "monster_penalty_against_minions_damage_+%_final_vs_player_minions",
            "is_area_damage",
        },
        levels = {
            [1] = {0.5, 1.5, 200, levelRequirement = 1, statInterpolation = {3, 3},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["GSPerennialKingBasicLightningZap"] = {
        name = "GSPerennialKingBasicLightningZap",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Triggerable] = true,
            [SkillType.Spell] = true,
            [SkillType.Damage] = true,
        },
        statDescriptionScope = "geometry_spell",
        castTime = 1,
        baseFlags = {
            spell = true,
            area = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "spell_minimum_base_lightning_damage",
            "spell_maximum_base_lightning_damage",
            "spell_maximum_action_distance_+%",
            "monster_penalty_against_minions_damage_+%_final_vs_player_minions",
            "is_area_damage",
            "action_attack_or_cast_time_uses_animation_length",
            "base_skill_can_be_blocked",
        },
        levels = {
            [1] = {0.5, 1.5, -85, 200, critChance = 6, levelRequirement = 1, statInterpolation = {3, 3},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["GAPerennialKingGlassSwordSlam"] = {
        name = "GAPerennialKingGlassSwordSlam",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Triggerable] = true,
            [SkillType.Attack] = true,
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1,
        baseFlags = {
            attack = true,
            area = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "attack_maximum_action_distance_+",
            "active_skill_base_physical_damage_%_to_convert_to_lightning",
            "monster_penalty_against_minions_damage_+%_final_vs_player_minions",
            "is_area_damage",
            "action_attack_or_cast_time_uses_animation_length",
            "base_skill_cannot_be_blocked",
        },
        levels = {
            [1] = {25, 35, 200, baseMultiplier = 4.5, levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["GAPerennialKingAxeCleave"] = {
        name = "GAPerennialKingAxeCleave",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Triggerable] = true,
            [SkillType.Attack] = true,
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1,
        baseFlags = {
            attack = true,
            area = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "attack_maximum_action_distance_+",
            "active_skill_base_physical_damage_%_to_convert_to_lightning",
            "monster_penalty_against_minions_damage_+%_final_vs_player_minions",
            "is_area_damage",
            "action_attack_or_cast_time_uses_animation_length",
            "base_skill_can_be_avoided_by_dodge_roll",
            "base_skill_cannot_be_blocked",
        },
        levels = {
            [1] = {12, 25, 200, baseMultiplier = 4, levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["GAPerennialKingObsidianStormImpact"] = {
        name = "GAPerennialKingObsidianStormImpact",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Triggerable] = true,
            [SkillType.Attack] = true,
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1,
        baseFlags = {
            attack = true,
            area = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "monster_penalty_against_minions_damage_+%_final_vs_player_minions",
            "is_area_damage",
            "action_attack_or_cast_time_uses_animation_length",
        },
        levels = {
            [1] = {200, levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["GSPerennialKingSandnadoPhysDamage"] = {
        name = "GSPerennialKingSandnadoPhysDamage",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Triggerable] = true,
            [SkillType.Spell] = true,
            [SkillType.Damage] = true,
        },
        statDescriptionScope = "geometry_spell",
        castTime = 1,
        baseFlags = {
            spell = true,
            area = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "monster_penalty_against_minions_damage_+%_final_vs_player_minions",
            "is_area_damage",
            "action_attack_or_cast_time_uses_animation_length",
        },
        levels = {
            [1] = {200, levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["GSPerennialKingSandnadoLightningDamage"] = {
        name = "GSPerennialKingSandnadoLightningDamage",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Triggerable] = true,
            [SkillType.Spell] = true,
            [SkillType.Damage] = true,
        },
        statDescriptionScope = "geometry_spell",
        castTime = 1,
        baseFlags = {
            spell = true,
            area = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "spell_minimum_base_lightning_damage",
            "spell_maximum_base_lightning_damage",
            "monster_penalty_against_minions_damage_+%_final_vs_player_minions",
            "is_area_damage",
            "action_attack_or_cast_time_uses_animation_length",
        },
        levels = {
            [1] = {0.5, 1.5, 200, levelRequirement = 1, statInterpolation = {3, 3},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["GSPerennialKingBeaconSpray"] = {
        name = "GSPerennialKingBeaconSpray",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Triggerable] = true,
            [SkillType.Spell] = true,
            [SkillType.Damage] = true,
        },
        statDescriptionScope = "geometry_spell",
        castTime = 1,
        baseFlags = {
            spell = true,
            area = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "spell_minimum_base_lightning_damage",
            "spell_maximum_base_lightning_damage",
            "active_skill_shock_chance_+%_final",
            "monster_penalty_against_minions_damage_+%_final_vs_player_minions",
            "is_area_damage",
            "action_attack_or_cast_time_uses_animation_length",
            "base_skill_can_be_blocked",
        },
        levels = {
            [1] = {0.5, 1.5, 25, 200, critChance = 6, levelRequirement = 1, statInterpolation = {3, 3},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["GAPerennialKingGlassSpearTossImpact"] = {
        name = "GAPerennialKingGlassSpearTossImpact",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Triggerable] = true,
            [SkillType.Attack] = true,
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1,
        baseFlags = {
            attack = true,
            area = true,
            projectile = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "active_skill_base_physical_damage_%_to_convert_to_lightning",
            "monster_penalty_against_minions_damage_+%_final_vs_player_minions",
            "is_area_damage",
            "action_attack_or_cast_time_uses_animation_length",
            "base_is_projectile",
        },
        levels = {
            [1] = {25, 200, baseMultiplier = 1.8, levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["GAPerennialKingGlassSpearTossImpactMulti"] = {
        name = "GAPerennialKingGlassSpearTossImpactMulti",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Triggerable] = true,
            [SkillType.Attack] = true,
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1,
        baseFlags = {
            attack = true,
            area = true,
            projectile = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "active_skill_base_physical_damage_%_to_convert_to_lightning",
            "monster_penalty_against_minions_damage_+%_final_vs_player_minions",
            "is_area_damage",
            "action_attack_or_cast_time_uses_animation_length",
            "base_is_projectile",
        },
        levels = {
            [1] = {25, 200, baseMultiplier = 1.5, levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["GSPerennialKingGlassSwordFenceZap"] = {
        name = "GSPerennialKingGlassSwordFenceZap",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Triggerable] = true,
            [SkillType.Spell] = true,
            [SkillType.Damage] = true,
        },
        statDescriptionScope = "geometry_spell",
        castTime = 1,
        baseFlags = {
            spell = true,
            area = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "spell_minimum_base_lightning_damage",
            "spell_maximum_base_lightning_damage",
            "active_skill_electrocutes_as_though_dealt_damage_+%_final",
            "base_skill_effect_duration",
            "monster_penalty_against_minions_damage_+%_final_vs_player_minions",
            "is_area_damage",
            "action_attack_or_cast_time_uses_animation_length",
            "base_lightning_damage_can_electrocute",
            "base_skill_can_be_avoided_by_dodge_roll",
        },
        levels = {
            [1] = {0.5, 1.5, 90, 4000, 200, critChance = 6, levelRequirement = 1, statInterpolation = {3, 3},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["EASPerennialKingBeaconToss"] = {
        name = "EASPerennialKingBeaconToss",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1,
        baseFlags = {
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "spell_maximum_action_distance_+%",
            "action_attack_or_cast_time_uses_animation_length",
        },
        levels = {
            [1] = {-35, levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["EASPerennialKingBeaconBolts"] = {
        name = "EASPerennialKingBeaconBolts",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1,
        baseFlags = {
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "action_attack_or_cast_time_uses_animation_length",
        },
        levels = {
            [1] = {levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["EASPerennialKingLightningSpray"] = {
        name = "EASPerennialKingLightningSpray",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1,
        baseFlags = {
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "action_attack_or_cast_time_uses_animation_length",
        },
        levels = {
            [1] = {levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["EASPerennialKingBeaconOrbitStart"] = {
        name = "EASPerennialKingBeaconOrbitStart",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1,
        baseFlags = {
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "action_attack_or_cast_time_uses_animation_length",
        },
        levels = {
            [1] = {levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["EASPerennialKingBeaconOrbitRecall"] = {
        name = "EASPerennialKingBeaconOrbitRecall",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1,
        baseFlags = {
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "action_attack_or_cast_time_uses_animation_length",
        },
        levels = {
            [1] = {levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["EASAbsoluteCartnage"] = {
        name = "EASAbsoluteCartnage",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1,
        baseFlags = {
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "action_attack_or_cast_time_uses_animation_length",
        },
        levels = {
            [1] = {levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["EAAPerennialKingGlassSwordFence"] = {
        name = "EAAPerennialKingGlassSwordFence",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1,
        baseFlags = {
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "attack_maximum_action_distance_+",
            "action_attack_or_cast_time_uses_animation_length",
        },
        levels = {
            [1] = {30, levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["EASPerennialKingOrbitTornado"] = {
        name = "EASPerennialKingOrbitTornado",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1,
        baseFlags = {
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "action_attack_or_cast_time_uses_animation_length",
        },
        levels = {
            [1] = {levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["MDPerennialKingObsidianStorm"] = {
        name = "MDPerennialKingObsidianStorm",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Multicastable] = true,
            [SkillType.Triggerable] = true,
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1,
        baseFlags = {
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "action_attack_or_cast_time_uses_animation_length",
        },
        levels = {
            [1] = {levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["MDPerennialKingTornado"] = {
        name = "MDPerennialKingTornado",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Multicastable] = true,
            [SkillType.Triggerable] = true,
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1,
        baseFlags = {
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "action_attack_or_cast_time_uses_animation_length",
        },
        levels = {
            [1] = {levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["SOPerennialKingObsidianMinigun"] = {
        name = "SOPerennialKingObsidianMinigun",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Triggerable] = true,
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1,
        baseFlags = {
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "action_attack_or_cast_time_uses_animation_length",
        },
        levels = {
            [1] = {levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["SOPerennialKingGlassSpearMultiRock"] = {
        name = "SOPerennialKingGlassSpearMultiRock",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Triggerable] = true,
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1,
        baseFlags = {
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "action_attack_or_cast_time_uses_animation_length",
        },
        levels = {
            [1] = {levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["SOPerennialKingGlassSwordFence"] = {
        name = "SOPerennialKingGlassSwordFence",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Triggerable] = true,
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1,
        baseFlags = {
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "action_attack_or_cast_time_uses_animation_length",
        },
        levels = {
            [1] = {levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["GTPerennialKingGlassSpearToss"] = {
        name = "GTPerennialKingGlassSpearToss",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Triggerable] = true,
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1,
        baseFlags = {
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "action_attack_or_cast_time_uses_animation_length",
        },
        levels = {
            [1] = {levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["EDSPerennialKingBeaconLightningBolt"] = {
        name = "EDSPerennialKingBeaconLightningBolt",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Triggerable] = true,
            [SkillType.Spell] = true,
            [SkillType.Damage] = true,
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1,
        baseFlags = {
            spell = true,
            area = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "spell_minimum_base_lightning_damage",
            "spell_maximum_base_lightning_damage",
            "monster_penalty_against_minions_damage_+%_final_vs_player_minions",
            "is_area_damage",
            "action_attack_or_cast_time_uses_animation_length",
        },
        levels = {
            [1] = {0.5, 1.5, 150, critChance = 6, levelRequirement = 1, statInterpolation = {3, 3},  cost = { }, },
        },
    }
    
    monster dropped item rarity +% [14700]
    monster slain experience +% [0]
    unique monster guarantee one rare [1]
    IdMonsterUniqueT3Boss
    FamilyMonsterActBoss
    DomainsMonster (3)
    GenerationTypeÚnico (3)
    Req. level1
    Stats
  • monster slain experience +% Min: 0 Max: 0 Global
  • monster dropped item rarity +% Min: 14700 Max: 14700 Global
  • unique monster guarantee one rare Min: 1 Max: 1 Global
  • monster dropped item quantity +% [800]
    monster dropped item rarity +% [10000]
    monster map key of at least same tier as current map drop chance % [25]
    monster slain experience +% [9000]
    unique monster guarantee one rare [1]
    IdMonsterMapBossT3
    FamilyMonsterMapBoss
    DomainsMonster (3)
    GenerationTypeÚnico (3)
    Req. level1
    Stats
  • monster slain experience +% Min: 9000 Max: 9000 Global
  • monster dropped item rarity +% Min: 10000 Max: 10000 Global
  • monster dropped item quantity +% Min: 800 Max: 800 Global
  • unique monster guarantee one rare Min: 1 Max: 1 Global
  • monster map key of at least same tier as current map drop chance % Min: 25 Max: 25 Global
  • Probabilidad de electrocutar aumentada un 200%
    IdEndgameBossShockChance
    FamilyShockChanceIncrease
    DomainsMonster (3)
    GenerationTypeÚnico (3)
    Req. level1
    Stats
  • shock chance +% Min: 200 Max: 200 Global
  • Adds Tagsno_fire_spell_mods no_cold_spell_mods no_chaos_spell_mods
    Jamanra, la Abominación Text Audio /141
    Nombre
    Ahh… la sekhema de los ardura. ¡Inclínate ante tu rey!
    PerennialKing_Dreadnought_Intro_Random
    Ahh… la sekhema de los ardura. ¡Inclínate ante tu rey!
    PerennialKing_Dreadnought_Intro_2
    De una forma u otra, esto se acaba aquí.
    PerennialKing_Dreadnought_Intro_ThisEnds_Random
    De una forma u otra, esto se acaba aquí.
    PerennialKing_Dreadnought_Intro_ThisEnds_2
    ¡Los faridun finalmente tendrán su venganza!
    PerennialKing_Dreadnought_Intro2_Random
    ¡Los faridun finalmente tendrán su venganza!
    PerennialKing_Dreadnought_Intro2_2
    ¡Finalmente alcanzaremos la venganza que nos fue prometida!
    PerennialKing_Dreadnought_Intro2_3
    ¡Finalmente alcanzaremos la venganza que nos fue prometida!
    PerennialKing_Dreadnought_Intro2_4
    ¡Mi reina, toma a la bestia!
    PerennialKing_Dreadnought_Countess_Random
    Ve, mi reina.
    PerennialKing_Dreadnought_Countess_2
    No importa nada más que la bestia. ¡Ve!
    PerennialKing_Dreadnought_Countess_3
    ¡Mantendré a raya a los opresores!
    PerennialKing_Dreadnought_Countess_4
    ¡Esto termina aquí!
    PerennialKing_Dreadnought_Wreckage_Random
    ¡Esto termina aquí!
    PerennialKing_Dreadnought_Wreckage_2
    ¡Acabemos con esto como los guerreros de antaño! ¡Uno contra uno!
    PerennialKing_Dreadnought_Wreckage_3
    ¡Acabemos con esto como los guerreros de antaño! ¡Uno contra uno!
    PerennialKing_Dreadnought_Wreckage_4
    ¡Demostraré que los faridun merecen respeto!
    PerennialKing_Dreadnought_Wreckage_5
    ¡Los maraketh lo pagarán!
    PerennialKing_Dreadnought_MiscSkill_Random
    ¡Los maraketh lo pagarán!
    PerennialKing_Dreadnought_MiscSkill_2
    ¡La era de los faridun comienza ahora!
    PerennialKing_Dreadnought_MiscSkill_3
    ¡La era de los faridun comienza ahora!
    PerennialKing_Dreadnought_MiscSkill_4
    ¡Somos legión!
    PerennialKing_Dreadnought_BeaconStab_Random
    ¡Somos legión!
    PerennialKing_Dreadnought_BeaconStab_2
    ¡Somos infinitos!
    PerennialKing_Dreadnought_BeaconStab_3
    ¡Somos infinitos!
    PerennialKing_Dreadnought_BeaconStab_4
    ¡Somos infinitos!
    PerennialKing_Dreadnought_BeaconStab_5
    ¡Somos infinitos!
    PerennialKing_Dreadnought_BeaconStab_6
    ¡La justicia del desierto!
    PerennialKing_Dreadnought_BeaconStab_7
    ¡La justicia del desierto!
    PerennialKing_Dreadnought_BeaconStab_8
    ¡La justicia del desierto!
    PerennialKing_Dreadnought_BeaconStab_9
    ¡Justicia!
    PerennialKing_Dreadnought_BeaconLightning_Random
    ¡Justicia!
    PerennialKing_Dreadnought_BeaconLightning_2
    ¡Represalia!
    PerennialKing_Dreadnought_BeaconLightning_3
    ¡Represalia!
    PerennialKing_Dreadnought_BeaconLightning_4
    ¡Represalia!
    PerennialKing_Dreadnought_BeaconLightning_5
    ¡Obtendremos lo que nos pertenece!
    PerennialKing_Dreadnought_BeaconLightning_6
    ¡Obtendremos lo que nos pertenece!
    PerennialKing_Dreadnought_BeaconLightning_7
    ¡Obtendremos lo que nos pertenece!
    PerennialKing_Dreadnought_BeaconLightning_8
    ¡Obtendremos lo que nos pertenece!
    PerennialKing_Dreadnought_BeaconLightning_9
    ¡Pagaremos el odio con odio!
    PerennialKing_Dreadnought_BeaconLightning_10
    ¡Pagaremos el odio con odio!
    PerennialKing_Dreadnought_BeaconLightning_11
    ¡Pagaremos el odio con odio!
    PerennialKing_Dreadnought_BeaconLightning_12
    ¡Somos la tormenta!
    PerennialKing_Dreadnought_BeaconLightningSpray_Random
    ¡Somos la tormenta!
    PerennialKing_Dreadnought_BeaconLightningSpray_2
    ¡Somos la tormenta!
    PerennialKing_Dreadnought_BeaconLightningSpray_3
    ¡Somos la venganza!
    PerennialKing_Dreadnought_BeaconLightningSpray_4
    ¡Somos la venganza!
    PerennialKing_Dreadnought_BeaconLightningSpray_5
    ¡Somos la venganza!
    PerennialKing_Dreadnought_BeaconLightningSpray_6
    ¡Venganza!
    PerennialKing_Dreadnought_BeaconLightningSpray_7
    ¡Venganza!
    PerennialKing_Dreadnought_BeaconLightningSpray_8
    ¡La venganza vastiri!
    PerennialKing_Dreadnought_SummonSandstorm_Random
    ¡La venganza vastiri!
    PerennialKing_Dreadnought_SummonSandstorm_2
    ¡La fatalidad del desierto!
    PerennialKing_Dreadnought_SummonSandstorm_3
    ¡La fatalidad del desierto!
    PerennialKing_Dreadnought_SummonSandstorm_4
    ¡La fatalidad del desierto!
    PerennialKing_Dreadnought_SummonSandstorm_5
    ¡La fatalidad del desierto!
    PerennialKing_Dreadnought_SummonSandstorm_6
    ¡Por las arenas!
    PerennialKing_Dreadnought_SummonSandstorm_7
    ¡Por las arenas!
    PerennialKing_Dreadnought_SummonSandstorm_8
    ¡Somos los hijos del desierto!
    PerennialKing_Dreadnought_SummonSandstorm_9
    ¡Somos los hijos del desierto!
    PerennialKing_Dreadnought_SummonSandstorm_10
    ¡Vientos, ayúdennos!
    PerennialKing_Dreadnought_SummonSandstorm_11
    ¡Vientos, ayúdennos!
    PerennialKing_Dreadnought_SummonSandstorm_12
    ¡Forja de odio!
    PerennialKing_Dreadnought_2hSword_Random
    ¡Forja de odio!
    PerennialKing_Dreadnought_2hSword_2
    ¡Forja de odio!
    PerennialKing_Dreadnought_2hSword_3
    ¡Toma nuestro odio!
    PerennialKing_Dreadnought_2hSword_4
    ¡Toma nuestro odio!
    PerennialKing_Dreadnought_2hSword_5
    ¡Toma nuestro odio!
    PerennialKing_Dreadnought_2hSword_6
    ¡Nuestro regalo para ti!
    PerennialKing_Dreadnought_2hSword_7
    ¡Nuestro regalo para ti!
    PerennialKing_Dreadnought_2hSword_8
    ¡Nuestro regalo para ti!
    PerennialKing_Dreadnought_2hSword_9
    ¡Nuestro regalo para ti!
    PerennialKing_Dreadnought_2hSword_10
    ¡Sangre!
    PerennialKing_Dreadnought_Lacerate_Random
    ¡Sangre!
    PerennialKing_Dreadnought_Lacerate_2
    ¡Sangre!
    PerennialKing_Dreadnought_Lacerate_3
    ¡Queremos sangre!
    PerennialKing_Dreadnought_Lacerate_4
    ¡Queremos sangre!
    PerennialKing_Dreadnought_Lacerate_5
    ¡Queremos sangre!
    PerennialKing_Dreadnought_Lacerate_6
    ¡Queremos sangre!
    PerennialKing_Dreadnought_Lacerate_7
    ¡Muere, maldita sea!
    PerennialKing_Dreadnought_Lacerate_8
    ¡Muere, maldita sea!
    PerennialKing_Dreadnought_Lacerate_9
    ¡Muere, maldita sea!
    PerennialKing_Dreadnought_Lacerate_10
    ¡Muere, maldita sea!
    PerennialKing_Dreadnought_Lacerate_11
    ¡Taparemos el sol!
    PerennialKing_Dreadnought_SpearThrow_Random
    ¡Taparemos el sol!
    PerennialKing_Dreadnought_SpearThrow_2
    ¡Taparemos el sol!
    PerennialKing_Dreadnought_SpearThrow_3
    ¡Diez mil lanzas!
    PerennialKing_Dreadnought_SpearThrow_4
    ¡Diez mil lanzas!
    PerennialKing_Dreadnought_SpearThrow_5
    ¡Diez mil lanzas!
    PerennialKing_Dreadnought_SpearThrow_6
    ¡Te convertiré en polvo!
    PerennialKing_Dreadnought_ObsidianTornado_Random
    ¡Te convertiré en polvo!
    PerennialKing_Dreadnought_ObsidianTornado_2
    {¡Serás olvidado!}{¡Serás olvidada!}
    PerennialKing_Dreadnought_ObsidianTornado_3
    {¡Serás olvidado!}{¡Serás olvidada!}
    PerennialKing_Dreadnought_ObsidianTornado_4
    ¡Te borraré!
    PerennialKing_Dreadnought_ObsidianTornado_5
    ¡Te borraré!
    PerennialKing_Dreadnought_ObsidianTornado_6
    ¡Por mi pueblo!
    PerennialKing_Dreadnought_BeaconSend_Random
    ¡Por mi pueblo!
    PerennialKing_Dreadnought_BeaconSend_2
    ¡Por mi pueblo!
    PerennialKing_Dreadnought_BeaconSend_3
    ¡Odio interminable!
    PerennialKing_Dreadnought_BeaconElectrify_Random
    ¡Odio interminable!
    PerennialKing_Dreadnought_BeaconElectrify_2
    ¡Odio interminable!
    PerennialKing_Dreadnought_BeaconElectrify_3
    ¡Invoco a los vientos!
    PerennialKing_Dreadnought_Tornado_Random
    ¡Invoco a los vientos!
    PerennialKing_Dreadnought_Tornado_2
    ¡Invoco a los vientos!
    PerennialKing_Dreadnought_Tornado_3
    ¡Vientos, a mí!
    PerennialKing_Dreadnought_Tornado_4
    ¡Vientos, a mí!
    PerennialKing_Dreadnought_Tornado_5
    ¡Vientos, a mí!
    PerennialKing_Dreadnought_Tornado_6
    No caeré.
    PerennialKing_Dreadnought_HeavyStun_Random
    No ganarás.
    PerennialKing_Dreadnought_HeavyStun_2
    No puedo rendirme.
    PerennialKing_Dreadnought_HeavyStun_3
    No puedo rendirme.
    PerennialKing_Dreadnought_HeavyStun_4
    Todo lo que queríamos…
    PerennialKing_Dreadnought_DeathMisc_Random
    No importa… lo logramos…
    PerennialKing_Dreadnought_DeathMisc_2
    No importa… lo logramos…
    PerennialKing_Dreadnought_DeathMisc_3
    Daré mi vida con gusto.
    PerennialKing_Dreadnought_DeathMisc_4
    No tienes idea… de lo que has hecho…
    PerennialKing_Dreadnought_DeathMisc_5
    No tienes idea… de lo que has hecho…
    PerennialKing_Dreadnought_DeathMisc_6
    ¡Muere, sekhema tonta!
    PerennialKing_Dreadnought_DeathMisc_7
    El fin de la tiranía se acerca…
    PerennialKing_Dreadnought_DeathMisc_8
    El fin de la tiranía se acerca…
    PerennialKing_Dreadnought_DeathMisc_9
    El fin de la tiranía se acerca…
    PerennialKing_Dreadnought_DeathMisc_10
    Los faridun no seremos olvidados…
    PerennialKing_Dreadnought_DeathMisc_11
    Los faridun no seremos olvidados…
    PerennialKing_Dreadnought_DeathMisc_12
    La furia de los faridun nunca se acabará…
    PerennialKing_Dreadnought_Misc_3
    No has logrado nada, tonta sekhema…
    PerennialKing_Dreadnought_Misc_Random
    Los faridun nunca se detendrán…
    PerennialKing_Dreadnought_Misc_2
    No puedes escapar de tu pasado…
    PerennialKing_Dreadnought_Misc_4
    No tengo tiempo para esto. ¡Arena, sigue mis órdenes! ¡Detén a mis enemigos!
    PerennialKing_Dreadnought_BeastSandstorm_Random
    No tengo tiempo para esto. ¡Arena, sigue mis órdenes! ¡Detén a mis enemigos!
    PerennialKing_Dreadnought_BeastSandstorm_2
    ¿Qué estás… esperando…? ¡Dame… una muerte de guerrero!
    PerennialKing_Dreadnought_DeathIntro_Random
    ¿Qué estás… esperando…? ¡Dame… una muerte de guerrero!
    PerennialKing_Dreadnought_DeathIntro_2
    ¿Condesa? Mi reina… ella nos dio poder… nos dio respeto… habríamos sido unos tontos si no hacíamos el intento…
    PerennialKing_Dreadnought_DeathStabbed_Random
    ¿Condesa? Mi reina… ella nos dio poder… nos dio respeto… habríamos sido unos tontos si no hacíamos el intento…
    PerennialKing_Dreadnought_DeathStabbed_2
    Se la está llevando… lejos de aquí… Ya no puedes alcanzarla.
    PerennialKing_Dreadnought_DeathBeast_Random
    Se la está llevando… lejos de aquí… Ya no puedes alcanzarla.
    PerennialKing_Dreadnought_DeathBeast_2
    Se la está llevando… lejos de aquí… Ya no puedes alcanzarla.
    PerennialKing_Dreadnought_DeathBeast_3
    {Creíste que éramos débiles… pero hemos demostrado… lo equivocado que estabas…}{Creíste que éramos débiles… pero hemos demostrado… lo equivocada que estabas…}
    PerennialKing_Dreadnought_DeathFaridun_Random
    {Creíste que éramos débiles… pero hemos demostrado… lo equivocado que estabas…}{Creíste que éramos débiles… pero hemos demostrado… lo equivocada que estabas…}
    PerennialKing_Dreadnought_DeathFaridun_2
    Muero como un verdadero guerrero.
    PerennialKing_Dreadnought_DeathFinal_Random
    Muero como un verdadero guerrero.
    PerennialKing_Dreadnought_DeathFinal_2
    Muero como un verdadero guerrero.
    PerennialKing_Dreadnought_DeathFinal_3