흉물 자만라
monster dropped item rarity +% [14700]
monster slain experience +% [0]
unique monster guarantee one rare [1]
Jamanra, the Abomination
SpectreN
Area드레드노트 선봉대, 드레드노트 선봉대
Tags2HSharpMetal_onhit_audio, human, humanoid, not_dex, not_int, red_blood, very_slow_movement
생명력
540%
방어도
+50%
Ailment Threshold
%
저항
30 -30 30 0
Damage
200%
정확도
100%
치명타 확률
+5%
치명타 피해 배율
+130%
Attack Distance
6 ~ 18
Attack Time
1.5 Second
Damage Spread
±20%
경험치
300%
Model Size
100%
Type
PerennialKing
Metadata
PerennialKing
레벨
57
생명력
23,803
방어도
1,788
회피
353
에너지 보호막
0
Damage
328
주문 피해
328
정확도
0
Attack Time
1.5
경험치
40,179
GSPerennialKingBasicLightningZap
Triggerable, Spell, Damage
치명타 확률: 6%
시전 속도: 1 초
16.17~48.5 번개 피해
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
기본 공격
Base Damage: 263–394
[Critical|치명타 명중] 확률: 5%
공격 피해: 75%
Attack Time: 1.5 초
재사용 대기시간: 6 초
주는 공격 피해 25% 감폭
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
재사용 대기시간: 15 초
action attack or cast time uses animation length [1]
EASPerennialKingLightningSpray
재사용 대기시간: 22.5 초
action attack or cast time uses animation length [1]
EASPerennialKingBeaconOrbitStart
재사용 대기시간: 30 초
action attack or cast time uses animation length [1]
EASPerennialKingBeaconOrbitRecall
action attack or cast time uses animation length [1]
CTS3PerennialKingMultistab
재사용 대기시간: 25 초
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
[Critical|치명타 명중] 확률: 5%
Attack Time: 1.5 초
재사용 대기시간: 18 초
투사체가 모든 대상 관통
물리 피해의 25%를 번개 피해로 전환
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
[Critical|치명타 명중] 확률: 5%
Attack Time: 1.5 초
재사용 대기시간: 17 초
투사체가 모든 대상 관통
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
[Critical|치명타 명중] 확률: 5%
공격 피해: 450%
Attack Time: 1.5 초
재사용 대기시간: 18 초
주는 공격 피해 350% 증폭
물리 피해의 35%를 번개 피해로 전환
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
재사용 대기시간: 17 초
action attack or cast time uses animation length [1]
attack maximum action distance + [30]
GAPerennialKingAxeCleave
Triggerable, Attack
Base Damage: 263–394
[Critical|치명타 명중] 확률: 5%
공격 피해: 400%
Attack Time: 1.5 초
재사용 대기시간: 26 초
주는 공격 피해 300% 증폭
물리 피해의 25%를 번개 피해로 전환
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
재사용 대기시간: 40 초
action attack or cast time uses animation length [1]
MDPerennialKingTornado
Multicastable, Triggerable
재사용 대기시간: 42 초
action attack or cast time uses animation length [1]
EASPerennialKingOrbitTornado
action attack or cast time uses animation length [1]
SOPerennialKingObsidianMinigun
Triggerable
재사용 대기시간: 17 초
action attack or cast time uses animation length [1]
EASAbsoluteCartnage
action attack or cast time uses animation length [1]
GSPerennialKingBeaconSpray
Triggerable, Spell, Damage
치명타 확률: 6%
시전 속도: 1 초
7.698~23.1 번개 피해
감전 확률 25% 증폭
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
[Critical|치명타 명중] 확률: 5%
공격 피해: 70%
Attack Time: 1.5 초
주는 공격 피해 30% 감폭
is area damage [1]
monster penalty against minions damage +% final vs player minions [200]
GAPerennialKingBeaconSpearImpact
Triggerable, Attack
Base Damage: 263–394
[Critical|치명타 명중] 확률: 5%
공격 피해: 90%
Attack Time: 1.5 초
주는 공격 피해 10% 감폭
is area damage [1]
monster penalty against minions damage +% final vs player minions [200]
GSPerennialKingBeaconOrbitLightningBeam
Triggerable, Spell, Damage
시전 속도: 1 초
16.42~49.27 번개 피해
is area damage [1]
monster penalty against minions damage +% final vs player minions [200]
EDSPerennialKingBeaconLightningBolt
Triggerable, Spell, Damage
치명타 확률: 6%
시전 속도: 1 초
79.55~238.7 번개 피해
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
[Critical|치명타 명중] 확률: 5%
공격 피해: 180%
Attack Time: 1.5 초
주는 공격 피해 80% 증폭
물리 피해의 25%를 번개 피해로 전환
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
[Critical|치명타 명중] 확률: 5%
공격 피해: 150%
Attack Time: 1.5 초
주는 공격 피해 50% 증폭
물리 피해의 25%를 번개 피해로 전환
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
치명타 확률: 6%
시전 속도: 1 초
4.494~13.48 번개 피해
전기 처형 축적 90% 증폭
이 스킬의 번개 피해가 전기 처형
축적에 반영
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
[Critical|치명타 명중] 확률: 5%
Attack Time: 1.5 초
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
시전 속도: 1 초
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
시전 속도: 1 초
30.79~92.38 번개 피해
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
[Critical|치명타 명중] 확률: 5%
공격 피해: 50%
Attack Time: 1.5 초
주는 공격 피해 50% 감폭
물리 피해의 25%를 번개 피해로 전환
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고유 (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 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]
    감전 확률 200% 증가
    Jamanra, the Abomination
    SpectreN
    Area구리의 성채
    Tags2HSharpMetal_onhit_audio, human, humanoid, not_dex, not_int, red_blood, very_slow_movement
    생명력
    540%
    방어도
    +50%
    Ailment Threshold
    %
    저항
    30 -30 30 0
    Damage
    200%
    정확도
    100%
    치명타 확률
    +5%
    치명타 피해 배율
    +130%
    Attack Distance
    6 ~ 18
    Attack Time
    1.5 Second
    Damage Spread
    ±20%
    경험치
    300%
    Model Size
    100%
    Type
    PerennialKingMap
    Metadata
    PerennialKingMap
    레벨
    80
    생명력
    84,289
    방어도
    6,867
    회피
    644
    에너지 보호막
    0
    Damage
    668
    주문 피해
    668
    정확도
    0
    Attack Time
    1.5
    경험치
    300,000
    GSPerennialKingBasicLightningZap
    Triggerable, Spell, Damage
    치명타 확률: 6%
    시전 속도: 1 초
    24.09~72.28 번개 피해
    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
    기본 공격
    Base Damage: 534–801
    [Critical|치명타 명중] 확률: 5%
    공격 피해: 75%
    Attack Time: 1.5 초
    재사용 대기시간: 6 초
    주는 공격 피해 25% 감폭
    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
    재사용 대기시간: 15 초
    action attack or cast time uses animation length [1]
    EASPerennialKingLightningSpray
    재사용 대기시간: 22.5 초
    action attack or cast time uses animation length [1]
    EASPerennialKingBeaconOrbitStart
    재사용 대기시간: 30 초
    action attack or cast time uses animation length [1]
    EASPerennialKingBeaconOrbitRecall
    action attack or cast time uses animation length [1]
    CTS3PerennialKingMultistab
    재사용 대기시간: 25 초
    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
    [Critical|치명타 명중] 확률: 5%
    Attack Time: 1.5 초
    재사용 대기시간: 18 초
    투사체가 모든 대상 관통
    물리 피해의 25%를 번개 피해로 전환
    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
    [Critical|치명타 명중] 확률: 5%
    Attack Time: 1.5 초
    재사용 대기시간: 17 초
    투사체가 모든 대상 관통
    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
    [Critical|치명타 명중] 확률: 5%
    공격 피해: 450%
    Attack Time: 1.5 초
    재사용 대기시간: 18 초
    주는 공격 피해 350% 증폭
    물리 피해의 35%를 번개 피해로 전환
    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
    재사용 대기시간: 17 초
    action attack or cast time uses animation length [1]
    attack maximum action distance + [30]
    GAPerennialKingAxeCleave
    Triggerable, Attack
    Base Damage: 534–801
    [Critical|치명타 명중] 확률: 5%
    공격 피해: 400%
    Attack Time: 1.5 초
    재사용 대기시간: 26 초
    주는 공격 피해 300% 증폭
    물리 피해의 25%를 번개 피해로 전환
    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
    재사용 대기시간: 40 초
    action attack or cast time uses animation length [1]
    MDPerennialKingTornado
    Multicastable, Triggerable
    재사용 대기시간: 42 초
    action attack or cast time uses animation length [1]
    EASPerennialKingOrbitTornado
    action attack or cast time uses animation length [1]
    SOPerennialKingObsidianMinigun
    Triggerable
    재사용 대기시간: 17 초
    action attack or cast time uses animation length [1]
    EASAbsoluteCartnage
    action attack or cast time uses animation length [1]
    GSPerennialKingBeaconSpray
    Triggerable, Spell, Damage
    치명타 확률: 6%
    시전 속도: 1 초
    11.47~34.42 번개 피해
    감전 확률 25% 증폭
    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
    [Critical|치명타 명중] 확률: 5%
    공격 피해: 70%
    Attack Time: 1.5 초
    주는 공격 피해 30% 감폭
    is area damage [1]
    monster penalty against minions damage +% final vs player minions [200]
    GAPerennialKingBeaconSpearImpact
    Triggerable, Attack
    Base Damage: 534–801
    [Critical|치명타 명중] 확률: 5%
    공격 피해: 90%
    Attack Time: 1.5 초
    주는 공격 피해 10% 감폭
    is area damage [1]
    monster penalty against minions damage +% final vs player minions [200]
    GSPerennialKingBeaconOrbitLightningBeam
    Triggerable, Spell, Damage
    시전 속도: 1 초
    24.48~73.43 번개 피해
    is area damage [1]
    monster penalty against minions damage +% final vs player minions [200]
    EDSPerennialKingBeaconLightningBolt
    Triggerable, Spell, Damage
    치명타 확률: 6%
    시전 속도: 1 초
    118.6~355.7 번개 피해
    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
    [Critical|치명타 명중] 확률: 5%
    공격 피해: 180%
    Attack Time: 1.5 초
    주는 공격 피해 80% 증폭
    물리 피해의 25%를 번개 피해로 전환
    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
    [Critical|치명타 명중] 확률: 5%
    공격 피해: 150%
    Attack Time: 1.5 초
    주는 공격 피해 50% 증폭
    물리 피해의 25%를 번개 피해로 전환
    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
    치명타 확률: 6%
    시전 속도: 1 초
    6.622~19.87 번개 피해
    전기 처형 축적 90% 증폭
    이 스킬의 번개 피해가 전기 처형
    축적에 반영
    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
    [Critical|치명타 명중] 확률: 5%
    Attack Time: 1.5 초
    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
    시전 속도: 1 초
    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
    시전 속도: 1 초
    45.89~137.7 번개 피해
    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
    [Critical|치명타 명중] 확률: 5%
    공격 피해: 50%
    Attack Time: 1.5 초
    주는 공격 피해 50% 감폭
    물리 피해의 25%를 번개 피해로 전환
    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고유 (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고유 (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
  • 감전 확률 200% 증가
    IdEndgameBossShockChance
    FamilyShockChanceIncrease
    DomainsMonster (3)
    GenerationType고유 (3)
    Req. level1
    Stats
  • shock chance +% Min: 200 Max: 200 Global
  • Adds Tagsno_fire_spell_mods no_cold_spell_mods no_chaos_spell_mods
    흉물 자만라 Text Audio /141
    이름
    아아... 아르듀라의 세케마인가. 네 왕 앞에서 고개를 조아려라!
    PerennialKing_Dreadnought_Intro_Random
    아아... 아르듀라의 세케마인가. 네 왕 앞에서 고개를 조아려라!
    PerennialKing_Dreadnought_Intro_2
    누가 죽든 이곳에서 결판이 난다.
    PerennialKing_Dreadnought_Intro_ThisEnds_Random
    누가 죽든 이곳에서 결판이 난다.
    PerennialKing_Dreadnought_Intro_ThisEnds_2
    파리둔이 마침내 원수를 갚을 것이다!
    PerennialKing_Dreadnought_Intro2_Random
    파리둔이 마침내 원수를 갚을 것이다!
    PerennialKing_Dreadnought_Intro2_2
    우리는 마침내 약속받은 대로 원수를 갚을 것이다!
    PerennialKing_Dreadnought_Intro2_3
    우리는 마침내 약속받은 대로 원수를 갚을 것이다!
    PerennialKing_Dreadnought_Intro2_4
    여왕이시여, 짐승을 거두소서!
    PerennialKing_Dreadnought_Countess_Random
    가십시오, 여왕이시여.
    PerennialKing_Dreadnought_Countess_2
    이제 중요한 것은 짐승뿐입니다. 가십시오!
    PerennialKing_Dreadnought_Countess_3
    이 억압자는 제가 막겠습니다!
    PerennialKing_Dreadnought_Countess_4
    여기서 끝이 난다!
    PerennialKing_Dreadnought_Wreckage_Random
    여기서 끝이 난다!
    PerennialKing_Dreadnought_Wreckage_2
    옛날의 전사들처럼 결판을 내자. 일대일로!
    PerennialKing_Dreadnought_Wreckage_3
    옛날의 전사들처럼 결판을 내자. 일대일로!
    PerennialKing_Dreadnought_Wreckage_4
    파리둔은 존중받을 자격이 있음을, 내가 증명하겠다!
    PerennialKing_Dreadnought_Wreckage_5
    마라케스는 대가를 치르리라!
    PerennialKing_Dreadnought_MiscSkill_Random
    마라케스는 대가를 치르리라!
    PerennialKing_Dreadnought_MiscSkill_2
    파리둔의 시대는 바로 지금이다!
    PerennialKing_Dreadnought_MiscSkill_3
    파리둔의 시대는 바로 지금이다!
    PerennialKing_Dreadnought_MiscSkill_4
    우리는 군단이다!
    PerennialKing_Dreadnought_BeaconStab_Random
    우리는 군단이다!
    PerennialKing_Dreadnought_BeaconStab_2
    우리는 무한하다!
    PerennialKing_Dreadnought_BeaconStab_3
    우리는 무한하다!
    PerennialKing_Dreadnought_BeaconStab_4
    우리는 무한하다!
    PerennialKing_Dreadnought_BeaconStab_5
    우리는 무한하다!
    PerennialKing_Dreadnought_BeaconStab_6
    사막의 정의여!
    PerennialKing_Dreadnought_BeaconStab_7
    사막의 정의여!
    PerennialKing_Dreadnought_BeaconStab_8
    사막의 정의여!
    PerennialKing_Dreadnought_BeaconStab_9
    정의여!
    PerennialKing_Dreadnought_BeaconLightning_Random
    정의여!
    PerennialKing_Dreadnought_BeaconLightning_2
    보복!
    PerennialKing_Dreadnought_BeaconLightning_3
    보복!
    PerennialKing_Dreadnought_BeaconLightning_4
    보복!
    PerennialKing_Dreadnought_BeaconLightning_5
    우리 것을 되찾으리라!
    PerennialKing_Dreadnought_BeaconLightning_6
    우리 것을 되찾으리라!
    PerennialKing_Dreadnought_BeaconLightning_7
    우리 것을 되찾으리라!
    PerennialKing_Dreadnought_BeaconLightning_8
    우리 것을 되찾으리라!
    PerennialKing_Dreadnought_BeaconLightning_9
    증오는 증오로 갚는다!
    PerennialKing_Dreadnought_BeaconLightning_10
    증오는 증오로 갚는다!
    PerennialKing_Dreadnought_BeaconLightning_11
    증오는 증오로 갚는다!
    PerennialKing_Dreadnought_BeaconLightning_12
    우리는 폭풍이다!
    PerennialKing_Dreadnought_BeaconLightningSpray_Random
    우리는 폭풍이다!
    PerennialKing_Dreadnought_BeaconLightningSpray_2
    우리는 폭풍이다!
    PerennialKing_Dreadnought_BeaconLightningSpray_3
    우리가 바로 복수다!
    PerennialKing_Dreadnought_BeaconLightningSpray_4
    우리가 바로 복수다!
    PerennialKing_Dreadnought_BeaconLightningSpray_5
    우리가 바로 복수다!
    PerennialKing_Dreadnought_BeaconLightningSpray_6
    복수를!
    PerennialKing_Dreadnought_BeaconLightningSpray_7
    복수를!
    PerennialKing_Dreadnought_BeaconLightningSpray_8
    바스티리의 복수를!
    PerennialKing_Dreadnought_SummonSandstorm_Random
    바스티리의 복수를!
    PerennialKing_Dreadnought_SummonSandstorm_2
    사막의 파멸이여!
    PerennialKing_Dreadnought_SummonSandstorm_3
    사막의 파멸이여!
    PerennialKing_Dreadnought_SummonSandstorm_4
    사막의 파멸이여!
    PerennialKing_Dreadnought_SummonSandstorm_5
    사막의 파멸이여!
    PerennialKing_Dreadnought_SummonSandstorm_6
    모래의 이름으로!
    PerennialKing_Dreadnought_SummonSandstorm_7
    모래의 이름으로!
    PerennialKing_Dreadnought_SummonSandstorm_8
    우리는 사막의 자손이다!
    PerennialKing_Dreadnought_SummonSandstorm_9
    우리는 사막의 자손이다!
    PerennialKing_Dreadnought_SummonSandstorm_10
    바람이여, 우리를 도와 다오!
    PerennialKing_Dreadnought_SummonSandstorm_11
    바람이여, 우리를 도와 다오!
    PerennialKing_Dreadnought_SummonSandstorm_12
    증오의 대장간!
    PerennialKing_Dreadnought_2hSword_Random
    증오의 대장간!
    PerennialKing_Dreadnought_2hSword_2
    증오의 대장간!
    PerennialKing_Dreadnought_2hSword_3
    우리의 증오를 받아라!
    PerennialKing_Dreadnought_2hSword_4
    우리의 증오를 받아라!
    PerennialKing_Dreadnought_2hSword_5
    우리의 증오를 받아라!
    PerennialKing_Dreadnought_2hSword_6
    너희에게 주는 선물이다!
    PerennialKing_Dreadnought_2hSword_7
    너희에게 주는 선물이다!
    PerennialKing_Dreadnought_2hSword_8
    너희에게 주는 선물이다!
    PerennialKing_Dreadnought_2hSword_9
    너희에게 주는 선물이다!
    PerennialKing_Dreadnought_2hSword_10
    피를!
    PerennialKing_Dreadnought_Lacerate_Random
    피를!
    PerennialKing_Dreadnought_Lacerate_2
    피를!
    PerennialKing_Dreadnought_Lacerate_3
    피를 보고 말겠다!
    PerennialKing_Dreadnought_Lacerate_4
    피를 보고 말겠다!
    PerennialKing_Dreadnought_Lacerate_5
    피를 보고 말겠다!
    PerennialKing_Dreadnought_Lacerate_6
    피를 보고 말겠다!
    PerennialKing_Dreadnought_Lacerate_7
    빌어먹을, 쓰러져라!
    PerennialKing_Dreadnought_Lacerate_8
    빌어먹을, 쓰러져라!
    PerennialKing_Dreadnought_Lacerate_9
    빌어먹을, 쓰러져라!
    PerennialKing_Dreadnought_Lacerate_10
    빌어먹을, 쓰러져라!
    PerennialKing_Dreadnought_Lacerate_11
    우리는 태양마저 가릴 것이다!
    PerennialKing_Dreadnought_SpearThrow_Random
    우리는 태양마저 가릴 것이다!
    PerennialKing_Dreadnought_SpearThrow_2
    우리는 태양마저 가릴 것이다!
    PerennialKing_Dreadnought_SpearThrow_3
    만 개의 창!
    PerennialKing_Dreadnought_SpearThrow_4
    만 개의 창!
    PerennialKing_Dreadnought_SpearThrow_5
    만 개의 창!
    PerennialKing_Dreadnought_SpearThrow_6
    갈아서 먼지로 만들어 주마!
    PerennialKing_Dreadnought_ObsidianTornado_Random
    갈아서 먼지로 만들어 주마!
    PerennialKing_Dreadnought_ObsidianTornado_2
    너는 잊힐 것이다!
    PerennialKing_Dreadnought_ObsidianTornado_3
    너는 잊힐 것이다!
    PerennialKing_Dreadnought_ObsidianTornado_4
    역사에서 지워 주마!
    PerennialKing_Dreadnought_ObsidianTornado_5
    역사에서 지워 주마!
    PerennialKing_Dreadnought_ObsidianTornado_6
    백성을 위하여!
    PerennialKing_Dreadnought_BeaconSend_Random
    백성을 위하여!
    PerennialKing_Dreadnought_BeaconSend_2
    백성을 위하여!
    PerennialKing_Dreadnought_BeaconSend_3
    끝없는 증오!
    PerennialKing_Dreadnought_BeaconElectrify_Random
    끝없는 증오!
    PerennialKing_Dreadnought_BeaconElectrify_2
    끝없는 증오!
    PerennialKing_Dreadnought_BeaconElectrify_3
    나는 바람을 부른다!
    PerennialKing_Dreadnought_Tornado_Random
    나는 바람을 부른다!
    PerennialKing_Dreadnought_Tornado_2
    나는 바람을 부른다!
    PerennialKing_Dreadnought_Tornado_3
    바람이여, 내게로 와라!
    PerennialKing_Dreadnought_Tornado_4
    바람이여, 내게로 와라!
    PerennialKing_Dreadnought_Tornado_5
    바람이여, 내게로 와라!
    PerennialKing_Dreadnought_Tornado_6
    나는 쓰러지지 않는다.
    PerennialKing_Dreadnought_HeavyStun_Random
    너는 승리하지 못한다.
    PerennialKing_Dreadnought_HeavyStun_2
    나는 포기할 수 없어.
    PerennialKing_Dreadnought_HeavyStun_3
    나는 포기할 수 없어.
    PerennialKing_Dreadnought_HeavyStun_4
    우리가 바란 건...
    PerennialKing_Dreadnought_DeathMisc_Random
    상관없어... 우리는 성공했다...
    PerennialKing_Dreadnought_DeathMisc_2
    상관없어... 우리는 성공했다...
    PerennialKing_Dreadnought_DeathMisc_3
    기쁜 마음으로 목숨을 바치겠다.
    PerennialKing_Dreadnought_DeathMisc_4
    너는 모른다... 네가 무슨 짓을 한 것인지...
    PerennialKing_Dreadnought_DeathMisc_5
    너는 모른다... 네가 무슨 짓을 한 것인지...
    PerennialKing_Dreadnought_DeathMisc_6
    넌 아무것도 이루지 못했다...
    PerennialKing_Dreadnought_DeathMisc_7
    폭정의 끝이 온다...
    PerennialKing_Dreadnought_DeathMisc_8
    폭정의 끝이 온다...
    PerennialKing_Dreadnought_DeathMisc_9
    폭정의 끝이 온다...
    PerennialKing_Dreadnought_DeathMisc_10
    파리둔은 잊히지 않으리라...
    PerennialKing_Dreadnought_DeathMisc_11
    파리둔은 잊히지 않으리라...
    PerennialKing_Dreadnought_DeathMisc_12
    파리둔의 격노는 끝나지 않는다...
    PerennialKing_Dreadnought_Misc_3
    네가 이룬 건 아무것도 없다, 어리석은 세케마.
    PerennialKing_Dreadnought_Misc_Random
    파리둔은 멈추지 않는다...
    PerennialKing_Dreadnought_Misc_2
    너는 결코 과거에서 벗어나지 못할 것이다...
    PerennialKing_Dreadnought_Misc_4
    이럴 시간이 없다. 모래여, 내 뜻대로 움직여라! 내 적의 발을 잡아라!
    PerennialKing_Dreadnought_BeastSandstorm_Random
    이럴 시간이 없다. 모래여, 내 뜻대로 움직여라! 내 적의 발을 잡아라!
    PerennialKing_Dreadnought_BeastSandstorm_2
    뭘... 망설이는... 거냐... 전사답게... 죽게 해 다오!
    PerennialKing_Dreadnought_DeathIntro_Random
    뭘... 망설이는... 거냐... 전사답게... 죽게 해 다오!
    PerennialKing_Dreadnought_DeathIntro_2
    백작 부인? 나의 여왕... 그분께서 우리에게 힘을 주시고... 존중을 주셨다... 바보가 아니니 해 볼 수밖에 없었다...
    PerennialKing_Dreadnought_DeathStabbed_Random
    백작 부인? 나의 여왕... 그분께서 우리에게 힘을 주시고... 존중을 주셨다... 바보가 아니니 해 볼 수밖에 없었다...
    PerennialKing_Dreadnought_DeathStabbed_2
    그분은 그것을... 이곳에서 먼 곳으로... 데려가실 것이다... 이제 네 손을 벗어났다.
    PerennialKing_Dreadnought_DeathBeast_Random
    그분은 그것을... 이곳에서 먼 곳으로... 데려가실 것이다... 이제 네 손을 벗어났다.
    PerennialKing_Dreadnought_DeathBeast_2
    그분은 그것을... 이곳에서 먼 곳으로... 데려가실 것이다... 이제 네 손을 벗어났다.
    PerennialKing_Dreadnought_DeathBeast_3
    너는 우리가 약하다 생각했지... 우리는 네가 틀렸음을... 증명했다...
    PerennialKing_Dreadnought_DeathFaridun_Random
    너는 우리가 약하다 생각했지... 우리는 네가 틀렸음을... 증명했다...
    PerennialKing_Dreadnought_DeathFaridun_2
    나는 진정한 전사답게 죽는다.
    PerennialKing_Dreadnought_DeathFinal_Random
    나는 진정한 전사답게 죽는다.
    PerennialKing_Dreadnought_DeathFinal_2
    나는 진정한 전사답게 죽는다.
    PerennialKing_Dreadnought_DeathFinal_3