Jamanra, l'Abomination
monster dropped item rarity +% [14700]
monster slain experience +% [0]
unique monster guarantee one rare [1]
Jamanra, the Abomination
SpectreN
AreaAvant-garde du Cuirassé, Avant-garde du Cuirassé
Tags2HSharpMetal_onhit_audio, human, humanoid, not_dex, not_int, red_blood, very_slow_movement
Vie
540%
Armure
+50%
Résistance
30 -30 30 0
Damage
200%
Précision
100%
Touches critiques Chance
5%
Bonus de Dégâts critiques
+30%
Attack Distance
6 ~ 18
Temps d'attaque
1.5 Second
Damage Spread
±20%
Expérience
300%
Model Size
100%
Type
PerennialKing
Metadata
PerennialKing
Niveau
57
Vie
23,803
Armure
1,875
Score d'Évasion
353
Damage
328
Dégâts des sorts
328
Précision
1,504
Temps d'attaque
1.5
Expérience
40,179
Minion Life
24,208
Minion Damage
615
Minion Armour
3,125
GSPerennialKingBasicLightningZap
Triggerable, Spell, Damage
Chances de Touche critique: 6%
Temps d'incantation: 1 sec.
Inflige 106.7 à 320.1 Dégâts de Foudre
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, Melee, ProjectilesFromUser
Attaque de base
Base Damage: 263–394
Chances de Touche critique: 5%
Dégâts d'Attaque: 75%
Temps d'attaque: 1.5 sec.
Temps de recharge: 6 sec.
25% de Perte de Dégâts d'Attaque
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
Temps de recharge: 15 sec.
action attack or cast time uses animation length [1]
EASPerennialKingLightningSpray
Temps de recharge: 22.5 sec.
action attack or cast time uses animation length [1]
EASPerennialKingBeaconOrbitStart
Temps de recharge: 30 sec.
action attack or cast time uses animation length [1]
EASPerennialKingBeaconOrbitRecall
action attack or cast time uses animation length [1]
CTS3PerennialKingMultistab
Temps de recharge: 25 sec.
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
Chances de Touche critique: 5%
Temps d'attaque: 1.5 sec.
Temps de recharge: 18 sec.
Convertit 25% des Dégâts Physiques en Dégâts de Foudre
Pierces all Targets
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
Chances de Touche critique: 5%
Temps d'attaque: 1.5 sec.
Temps de recharge: 17 sec.
Pierces all Targets
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
Chances de Touche critique: 5%
Dégâts d'Attaque: 450%
Temps d'attaque: 1.5 sec.
Temps de recharge: 18 sec.
350% Davantage de Dégâts d'Attaque
Convertit 35% des Dégâts Physiques en Dégâts de Foudre
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
Temps de recharge: 17 sec.
action attack or cast time uses animation length [1]
attack maximum action distance + [30]
GAPerennialKingAxeCleave
Triggerable, Attack
Base Damage: 263–394
Chances de Touche critique: 5%
Dégâts d'Attaque: 400%
Temps d'attaque: 1.5 sec.
Temps de recharge: 26 sec.
300% Davantage de Dégâts d'Attaque
Convertit 25% des Dégâts Physiques en Dégâts de Foudre
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
Temps de recharge: 40 sec.
action attack or cast time uses animation length [1]
MDPerennialKingTornado
Multicastable, Triggerable
Temps de recharge: 42 sec.
action attack or cast time uses animation length [1]
EASPerennialKingOrbitTornado
action attack or cast time uses animation length [1]
SOPerennialKingObsidianMinigun
Triggerable
Temps de recharge: 17 sec.
action attack or cast time uses animation length [1]
EASAbsoluteCartnage
action attack or cast time uses animation length [1]
GSPerennialKingBeaconSpray
Triggerable, Spell, Damage
Chances de Touche critique: 6%
Temps d'incantation: 1 sec.
Inflige 50.81 à 152.4 Dégâts de Foudre
25% Davantage de chances d'Électrocuter
action attack or cast time uses animation length [1]
base skill can be blocked [1]
base skill cannot be parried [1]
is area damage [1]
monster penalty against minions damage +% final vs player minions [200]
GAPerennialKingBeaconSpearStab
Triggerable, Attack
Base Damage: 263–394
Chances de Touche critique: 5%
Dégâts d'Attaque: 70%
Temps d'attaque: 1.5 sec.
30% de Perte de Dégâts d'Attaque
is area damage [1]
monster penalty against minions damage +% final vs player minions [200]
GAPerennialKingBeaconSpearImpact
Triggerable, Attack
Base Damage: 263–394
Chances de Touche critique: 5%
Dégâts d'Attaque: 90%
Temps d'attaque: 1.5 sec.
10% de Perte de Dégâts d'Attaque
is area damage [1]
monster penalty against minions damage +% final vs player minions [200]
GSPerennialKingBeaconOrbitLightningBeam
Triggerable, Spell, Damage
Temps d'incantation: 1 sec.
Inflige 108.4 à 325.2 Dégâts de Foudre
is area damage [1]
monster penalty against minions damage +% final vs player minions [200]
EDSPerennialKingBeaconLightningBolt
Triggerable, Spell, Damage
Chances de Touche critique: 6%
Temps d'incantation: 1 sec.
Inflige 525 à 1575 Dégâts de Foudre
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
Chances de Touche critique: 5%
Dégâts d'Attaque: 180%
Temps d'attaque: 1.5 sec.
80% Davantage de Dégâts d'Attaque
Convertit 25% des Dégâts Physiques en Dégâts de Foudre
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
Chances de Touche critique: 5%
Dégâts d'Attaque: 150%
Temps d'attaque: 1.5 sec.
50% Davantage de Dégâts d'Attaque
Convertit 25% des Dégâts Physiques en Dégâts de Foudre
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
Chances de Touche critique: 6%
Temps d'incantation: 1 sec.
Inflige 18.33 à 55 Dégâts de Foudre
90% Davantage d'Accumulation de Foudroiement
Les dégâts de foudre de cette aptitude contribuent à
l'accumulation de l'Électrocution
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
Chances de Touche critique: 5%
Temps d'attaque: 1.5 sec.
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
Temps d'incantation: 1 sec.
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
Temps d'incantation: 1 sec.
Inflige 203.2 à 609.7 Dégâts de Foudre
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
Chances de Touche critique: 5%
Dégâts d'Attaque: 50%
Temps d'attaque: 1.5 sec.
50% de Perte de Dégâts d'Attaque
Convertit 25% des Dégâts Physiques en Dégâts de Foudre
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 ); }
	set_is_act_boss = true
}

Preload
{
	preload_character_animation = "KnockdownLoop"
	preload_animated_object = "Metadata/Monsters/PerennialKingStage2/PerennialKingStage2OnlyCorpses.ao"
	preload_environment = "G2_12_2"
}

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' );
		} );
	"

	on_death_idle_01 =
	"
			Delay( 2, { PlayTextAudio( PerennialKing_Dreadnought_PostStabDeath, '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.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",
        "base_skill_cannot_be_parried",
    },
    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)
GenerationTypeUnique (3)
Req. level1
Stats
  • monster slain experience +% Min: 0 Max: 0 Global
  • monster dropped item rarity +% Min: 14700 Max: 14700 Global
  • unique monster guarantee one rare Min: 1 Max: 1 Global
  • Jamanra, l'Abomination
    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% d'Augmentation des chances d'Électrocuter
    Jamanra, the Abomination
    SpectreN
    AreaLa Citadelle de cuivre
    Tags2HSharpMetal_onhit_audio, human, humanoid, not_dex, not_int, red_blood, very_slow_movement
    Vie
    540%
    Armure
    +50%
    Résistance
    30 -30 30 0
    Damage
    200%
    Précision
    100%
    Touches critiques Chance
    5%
    Bonus de Dégâts critiques
    +30%
    Attack Distance
    6 ~ 18
    Temps d'attaque
    1.5 Second
    Damage Spread
    ±20%
    Expérience
    300%
    Model Size
    100%
    Type
    PerennialKingMap
    Metadata
    PerennialKingMap
    Niveau
    80
    Vie
    84,289
    Armure
    7,205
    Score d'Évasion
    644
    Damage
    668
    Dégâts des sorts
    668
    Précision
    3,204
    Temps d'attaque
    1.5
    Expérience
    300,000
    Minion Life
    53,314
    Minion Damage
    1,791
    Minion Armour
    12,008
    GSPerennialKingBasicLightningZap
    Triggerable, Spell, Damage
    Chances de Touche critique: 6%
    Temps d'incantation: 1 sec.
    Inflige 214.4 à 643.3 Dégâts de Foudre
    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, Melee, ProjectilesFromUser
    Attaque de base
    Base Damage: 534–801
    Chances de Touche critique: 5%
    Dégâts d'Attaque: 75%
    Temps d'attaque: 1.5 sec.
    Temps de recharge: 6 sec.
    25% de Perte de Dégâts d'Attaque
    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
    Temps de recharge: 15 sec.
    action attack or cast time uses animation length [1]
    EASPerennialKingLightningSpray
    Temps de recharge: 22.5 sec.
    action attack or cast time uses animation length [1]
    EASPerennialKingBeaconOrbitStart
    Temps de recharge: 30 sec.
    action attack or cast time uses animation length [1]
    EASPerennialKingBeaconOrbitRecall
    action attack or cast time uses animation length [1]
    CTS3PerennialKingMultistab
    Temps de recharge: 25 sec.
    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
    Chances de Touche critique: 5%
    Temps d'attaque: 1.5 sec.
    Temps de recharge: 18 sec.
    Convertit 25% des Dégâts Physiques en Dégâts de Foudre
    Pierces all Targets
    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
    Chances de Touche critique: 5%
    Temps d'attaque: 1.5 sec.
    Temps de recharge: 17 sec.
    Pierces all Targets
    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
    Chances de Touche critique: 5%
    Dégâts d'Attaque: 450%
    Temps d'attaque: 1.5 sec.
    Temps de recharge: 18 sec.
    350% Davantage de Dégâts d'Attaque
    Convertit 35% des Dégâts Physiques en Dégâts de Foudre
    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
    Temps de recharge: 17 sec.
    action attack or cast time uses animation length [1]
    attack maximum action distance + [30]
    GAPerennialKingAxeCleave
    Triggerable, Attack
    Base Damage: 534–801
    Chances de Touche critique: 5%
    Dégâts d'Attaque: 400%
    Temps d'attaque: 1.5 sec.
    Temps de recharge: 26 sec.
    300% Davantage de Dégâts d'Attaque
    Convertit 25% des Dégâts Physiques en Dégâts de Foudre
    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
    Temps de recharge: 40 sec.
    action attack or cast time uses animation length [1]
    MDPerennialKingTornado
    Multicastable, Triggerable
    Temps de recharge: 42 sec.
    action attack or cast time uses animation length [1]
    EASPerennialKingOrbitTornado
    action attack or cast time uses animation length [1]
    SOPerennialKingObsidianMinigun
    Triggerable
    Temps de recharge: 17 sec.
    action attack or cast time uses animation length [1]
    EASAbsoluteCartnage
    action attack or cast time uses animation length [1]
    GSPerennialKingBeaconSpray
    Triggerable, Spell, Damage
    Chances de Touche critique: 6%
    Temps d'incantation: 1 sec.
    Inflige 102.1 à 306.3 Dégâts de Foudre
    25% Davantage de chances d'Électrocuter
    action attack or cast time uses animation length [1]
    base skill can be blocked [1]
    base skill cannot be parried [1]
    is area damage [1]
    monster penalty against minions damage +% final vs player minions [200]
    GAPerennialKingBeaconSpearStab
    Triggerable, Attack
    Base Damage: 534–801
    Chances de Touche critique: 5%
    Dégâts d'Attaque: 70%
    Temps d'attaque: 1.5 sec.
    30% de Perte de Dégâts d'Attaque
    is area damage [1]
    monster penalty against minions damage +% final vs player minions [200]
    GAPerennialKingBeaconSpearImpact
    Triggerable, Attack
    Base Damage: 534–801
    Chances de Touche critique: 5%
    Dégâts d'Attaque: 90%
    Temps d'attaque: 1.5 sec.
    10% de Perte de Dégâts d'Attaque
    is area damage [1]
    monster penalty against minions damage +% final vs player minions [200]
    GSPerennialKingBeaconOrbitLightningBeam
    Triggerable, Spell, Damage
    Temps d'incantation: 1 sec.
    Inflige 217.8 à 653.5 Dégâts de Foudre
    is area damage [1]
    monster penalty against minions damage +% final vs player minions [200]
    EDSPerennialKingBeaconLightningBolt
    Triggerable, Spell, Damage
    Chances de Touche critique: 6%
    Temps d'incantation: 1 sec.
    Inflige 1055 à 3166 Dégâts de Foudre
    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
    Chances de Touche critique: 5%
    Dégâts d'Attaque: 180%
    Temps d'attaque: 1.5 sec.
    80% Davantage de Dégâts d'Attaque
    Convertit 25% des Dégâts Physiques en Dégâts de Foudre
    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
    Chances de Touche critique: 5%
    Dégâts d'Attaque: 150%
    Temps d'attaque: 1.5 sec.
    50% Davantage de Dégâts d'Attaque
    Convertit 25% des Dégâts Physiques en Dégâts de Foudre
    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
    Chances de Touche critique: 6%
    Temps d'incantation: 1 sec.
    Inflige 35.39 à 106.2 Dégâts de Foudre
    90% Davantage d'Accumulation de Foudroiement
    Les dégâts de foudre de cette aptitude contribuent à
    l'accumulation de l'Électrocution
    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
    Chances de Touche critique: 5%
    Temps d'attaque: 1.5 sec.
    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
    Temps d'incantation: 1 sec.
    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
    Temps d'incantation: 1 sec.
    Inflige 408.5 à 1225 Dégâts de Foudre
    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
    Chances de Touche critique: 5%
    Dégâts d'Attaque: 50%
    Temps d'attaque: 1.5 sec.
    50% de Perte de Dégâts d'Attaque
    Convertit 25% des Dégâts Physiques en Dégâts de Foudre
    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"
    	preload_animated_object = "Metadata/Monsters/PerennialKingStage2/PerennialKingStage2OnlyCorpses.ao"
    	preload_environment = "G2_12_2"
    }
    
    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' );
    		SetGlobalAudioParam( PerennialKingUberDeath, 1 );
    	"
    }
    
    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 );
    		SetGlobalAudioParam( PerennialKingUberDeath, 1 );
    
    	"
    }
    
    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.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",
            "base_skill_cannot_be_parried",
        },
        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)
    GenerationTypeUnique (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)
    GenerationTypeUnique (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% d'Augmentation des chances d'Électrocuter
    IdEndgameBossShockChance
    FamilyShockChanceIncrease
    DomainsMonster (3)
    GenerationTypeUnique (3)
    Req. level1
    Stats
  • shock chance +% Min: 200 Max: 200 Global
  • Adds Tagsno_fire_spell_mods no_cold_spell_mods no_chaos_spell_mods
    Jamanra, l'Abomination Text Audio /141
    Nom
    Ah… La sekhema des Arduras. Inclinez-vous devant votre roi !
    PerennialKing_Dreadnought_Intro_Random
    Ah… La sekhema des Arduras. Inclinez-vous devant votre roi !
    PerennialKing_Dreadnought_Intro_2
    Nous allons en finir ici, d'une manière ou d'une autre.
    PerennialKing_Dreadnought_Intro_ThisEnds_Random
    Nous allons en finir ici, d'une manière ou d'une autre.
    PerennialKing_Dreadnought_Intro_ThisEnds_2
    Les Fariduns vont enfin se venger !
    PerennialKing_Dreadnought_Intro2_Random
    Les Fariduns vont enfin se venger !
    PerennialKing_Dreadnought_Intro2_2
    Nous aurons enfin la vengeance qu'on nous a promise !
    PerennialKing_Dreadnought_Intro2_3
    Nous aurons enfin la vengeance qu'on nous a promise !
    PerennialKing_Dreadnought_Intro2_4
    Ma reine, prenez la Bête !
    PerennialKing_Dreadnought_Countess_Random
    Partez, ma reine.
    PerennialKing_Dreadnought_Countess_2
    La Bête est la seule chose qui compte désormais. Partez !
    PerennialKing_Dreadnought_Countess_3
    Je retiendrai l'oppresseur !
    PerennialKing_Dreadnought_Countess_4
    Il est temps d'en finir !
    PerennialKing_Dreadnought_Wreckage_Random
    Il est temps d'en finir !
    PerennialKing_Dreadnought_Wreckage_2
    Finissons-en comme les guerriers d'antan. En combat singulier !
    PerennialKing_Dreadnought_Wreckage_3
    Finissons-en comme les guerriers d'antan. En combat singulier !
    PerennialKing_Dreadnought_Wreckage_4
    Je prouverai que les Fariduns méritent le respect !
    PerennialKing_Dreadnought_Wreckage_5
    Les Marakeths paieront !
    PerennialKing_Dreadnought_MiscSkill_Random
    Les Marakeths paieront !
    PerennialKing_Dreadnought_MiscSkill_2
    L'ère des Fariduns est arrivée !
    PerennialKing_Dreadnought_MiscSkill_3
    L'ère des Fariduns est arrivée !
    PerennialKing_Dreadnought_MiscSkill_4
    Nous sommes légion !
    PerennialKing_Dreadnought_BeaconStab_Random
    Nous sommes légion !
    PerennialKing_Dreadnought_BeaconStab_2
    Nous sommes infinis !
    PerennialKing_Dreadnought_BeaconStab_3
    Nous sommes infinis !
    PerennialKing_Dreadnought_BeaconStab_4
    Nous sommes infinis !
    PerennialKing_Dreadnought_BeaconStab_5
    Nous sommes infinis !
    PerennialKing_Dreadnought_BeaconStab_6
    Justice du désert !
    PerennialKing_Dreadnought_BeaconStab_7
    Justice du désert !
    PerennialKing_Dreadnought_BeaconStab_8
    Justice du désert !
    PerennialKing_Dreadnought_BeaconStab_9
    Justice !
    PerennialKing_Dreadnought_BeaconLightning_Random
    Justice !
    PerennialKing_Dreadnought_BeaconLightning_2
    Représailles !
    PerennialKing_Dreadnought_BeaconLightning_3
    Représailles !
    PerennialKing_Dreadnought_BeaconLightning_4
    Représailles !
    PerennialKing_Dreadnought_BeaconLightning_5
    Nous aurons ce qui nous revient de droit !
    PerennialKing_Dreadnought_BeaconLightning_6
    Nous aurons ce qui nous revient de droit !
    PerennialKing_Dreadnought_BeaconLightning_7
    Nous aurons ce qui nous revient de droit !
    PerennialKing_Dreadnought_BeaconLightning_8
    Nous aurons ce qui nous revient de droit !
    PerennialKing_Dreadnought_BeaconLightning_9
    Nous vous rendons votre haine !
    PerennialKing_Dreadnought_BeaconLightning_10
    Nous vous rendons votre haine !
    PerennialKing_Dreadnought_BeaconLightning_11
    Nous vous rendons votre haine !
    PerennialKing_Dreadnought_BeaconLightning_12
    Nous sommes la tempête !
    PerennialKing_Dreadnought_BeaconLightningSpray_Random
    Nous sommes la tempête !
    PerennialKing_Dreadnought_BeaconLightningSpray_2
    Nous sommes la tempête !
    PerennialKing_Dreadnought_BeaconLightningSpray_3
    Nous sommes la vengeance !
    PerennialKing_Dreadnought_BeaconLightningSpray_4
    Nous sommes la vengeance !
    PerennialKing_Dreadnought_BeaconLightningSpray_5
    Nous sommes la vengeance !
    PerennialKing_Dreadnought_BeaconLightningSpray_6
    Vengeance !
    PerennialKing_Dreadnought_BeaconLightningSpray_7
    Vengeance !
    PerennialKing_Dreadnought_BeaconLightningSpray_8
    Vengeance de Vastiri !
    PerennialKing_Dreadnought_SummonSandstorm_Random
    Vengeance de Vastiri !
    PerennialKing_Dreadnought_SummonSandstorm_2
    Calamité du désert !
    PerennialKing_Dreadnought_SummonSandstorm_3
    Calamité du désert !
    PerennialKing_Dreadnought_SummonSandstorm_4
    Calamité du désert !
    PerennialKing_Dreadnought_SummonSandstorm_5
    Calamité du désert !
    PerennialKing_Dreadnought_SummonSandstorm_6
    Par les sables !
    PerennialKing_Dreadnought_SummonSandstorm_7
    Par les sables !
    PerennialKing_Dreadnought_SummonSandstorm_8
    Nous sommes les enfants du désert !
    PerennialKing_Dreadnought_SummonSandstorm_9
    Nous sommes les enfants du désert !
    PerennialKing_Dreadnought_SummonSandstorm_10
    Vents, aidez-nous !
    PerennialKing_Dreadnought_SummonSandstorm_11
    Vents, aidez-nous !
    PerennialKing_Dreadnought_SummonSandstorm_12
    Forge de la haine !
    PerennialKing_Dreadnought_2hSword_Random
    Forge de la haine !
    PerennialKing_Dreadnought_2hSword_2
    Forge de la haine !
    PerennialKing_Dreadnought_2hSword_3
    Subissez notre haine !
    PerennialKing_Dreadnought_2hSword_4
    Subissez notre haine !
    PerennialKing_Dreadnought_2hSword_5
    Subissez notre haine !
    PerennialKing_Dreadnought_2hSword_6
    Acceptez ce présent !
    PerennialKing_Dreadnought_2hSword_7
    Acceptez ce présent !
    PerennialKing_Dreadnought_2hSword_8
    Acceptez ce présent !
    PerennialKing_Dreadnought_2hSword_9
    Acceptez ce présent !
    PerennialKing_Dreadnought_2hSword_10
    Du sang !
    PerennialKing_Dreadnought_Lacerate_Random
    Du sang !
    PerennialKing_Dreadnought_Lacerate_2
    Du sang !
    PerennialKing_Dreadnought_Lacerate_3
    Le sang coulera à flots !
    PerennialKing_Dreadnought_Lacerate_4
    Le sang coulera à flots !
    PerennialKing_Dreadnought_Lacerate_5
    Le sang coulera à flots !
    PerennialKing_Dreadnought_Lacerate_6
    Le sang coulera à flots !
    PerennialKing_Dreadnought_Lacerate_7
    Mourez, bon sang !
    PerennialKing_Dreadnought_Lacerate_8
    Mourez, bon sang !
    PerennialKing_Dreadnought_Lacerate_9
    Mourez, bon sang !
    PerennialKing_Dreadnought_Lacerate_10
    Mourez, bon sang !
    PerennialKing_Dreadnought_Lacerate_11
    Nous éclipserons le Soleil !
    PerennialKing_Dreadnought_SpearThrow_Random
    Nous éclipserons le Soleil !
    PerennialKing_Dreadnought_SpearThrow_2
    Nous éclipserons le Soleil !
    PerennialKing_Dreadnought_SpearThrow_3
    Dix mille lances !
    PerennialKing_Dreadnought_SpearThrow_4
    Dix mille lances !
    PerennialKing_Dreadnought_SpearThrow_5
    Dix mille lances !
    PerennialKing_Dreadnought_SpearThrow_6
    Je vous réduirai en poussière !
    PerennialKing_Dreadnought_ObsidianTornado_Random
    Je vous réduirai en poussière !
    PerennialKing_Dreadnought_ObsidianTornado_2
    Le monde vous oubliera !
    PerennialKing_Dreadnought_ObsidianTornado_3
    Le monde vous oubliera !
    PerennialKing_Dreadnought_ObsidianTornado_4
    Je vais vous effacer !
    PerennialKing_Dreadnought_ObsidianTornado_5
    Je vais vous effacer !
    PerennialKing_Dreadnought_ObsidianTornado_6
    Pour mon peuple !
    PerennialKing_Dreadnought_BeaconSend_Random
    Pour mon peuple !
    PerennialKing_Dreadnought_BeaconSend_2
    Pour mon peuple !
    PerennialKing_Dreadnought_BeaconSend_3
    Haine éternelle !
    PerennialKing_Dreadnought_BeaconElectrify_Random
    Haine éternelle !
    PerennialKing_Dreadnought_BeaconElectrify_2
    Haine éternelle !
    PerennialKing_Dreadnought_BeaconElectrify_3
    J'appelle les vents !
    PerennialKing_Dreadnought_Tornado_Random
    J'appelle les vents !
    PerennialKing_Dreadnought_Tornado_2
    J'appelle les vents !
    PerennialKing_Dreadnought_Tornado_3
    Vents, aidez-moi !
    PerennialKing_Dreadnought_Tornado_4
    Vents, aidez-moi !
    PerennialKing_Dreadnought_Tornado_5
    Vents, aidez-moi !
    PerennialKing_Dreadnought_Tornado_6
    Je ne tomberai pas.
    PerennialKing_Dreadnought_HeavyStun_Random
    Vous ne me vaincrez pas.
    PerennialKing_Dreadnought_HeavyStun_2
    Je ne peux abandonner.
    PerennialKing_Dreadnought_HeavyStun_3
    Je ne peux abandonner.
    PerennialKing_Dreadnought_HeavyStun_4
    Tout ce que nous voulions…
    PerennialKing_Dreadnought_DeathMisc_Random
    Ça n'a pas d'importance… Nous avons réussi…
    PerennialKing_Dreadnought_DeathMisc_2
    Ça n'a pas d'importance… Nous avons réussi…
    PerennialKing_Dreadnought_DeathMisc_3
    J'offre ma vie avec plaisir.
    PerennialKing_Dreadnought_DeathMisc_4
    Vous n'avez pas idée… des conséquences de vos actes…
    PerennialKing_Dreadnought_DeathMisc_5
    Vous n'avez pas idée… des conséquences de vos actes…
    PerennialKing_Dreadnought_DeathMisc_6
    Mourez… Maudite sekhema !
    PerennialKing_Dreadnought_DeathMisc_7
    La fin de la tyrannie approche…
    PerennialKing_Dreadnought_DeathMisc_8
    La fin de la tyrannie approche…
    PerennialKing_Dreadnought_DeathMisc_9
    La fin de la tyrannie approche…
    PerennialKing_Dreadnought_DeathMisc_10
    Les Fariduns ne seront pas oubliés…
    PerennialKing_Dreadnought_DeathMisc_11
    Les Fariduns ne seront pas oubliés…
    PerennialKing_Dreadnought_DeathMisc_12
    La fureur des Fariduns ne s'éteindra jamais…
    PerennialKing_Dreadnought_Misc_3
    Vous n'avez rien accompli, misérable sekhema.
    PerennialKing_Dreadnought_Misc_Random
    Les Fariduns n'abandonneront jamais…
    PerennialKing_Dreadnought_Misc_2
    Vous ne pouvez pas échapper à votre passé…
    PerennialKing_Dreadnought_Misc_4
    Je n'ai pas le temps pour ces futilités. Sables, soumettez-vous à ma volonté ! Ralentissez mes ennemis !
    PerennialKing_Dreadnought_BeastSandstorm_Random
    Je n'ai pas le temps pour ces futilités. Sables, soumettez-vous à ma volonté ! Ralentissez mes ennemis !
    PerennialKing_Dreadnought_BeastSandstorm_2
    Qu'attendez-vous… Offrez-moi… une mort de guerrier !
    PerennialKing_Dreadnought_DeathIntro_Random
    Qu'attendez-vous… Offrez-moi… une mort de guerrier !
    PerennialKing_Dreadnought_DeathIntro_2
    La comtesse ? Ma reine… Elle nous a apporté le pouvoir… Le respect… Nous devions essayer…
    PerennialKing_Dreadnought_DeathStabbed_Random
    La comtesse ? Ma reine… Elle nous a apporté le pouvoir… Le respect… Nous devions essayer…
    PerennialKing_Dreadnought_DeathStabbed_2
    Elle l'emporte… loin d'ici… Vous ne pouvez plus rien y faire.
    PerennialKing_Dreadnought_DeathBeast_Random
    Elle l'emporte… loin d'ici… Vous ne pouvez plus rien y faire.
    PerennialKing_Dreadnought_DeathBeast_2
    Elle l'emporte… loin d'ici… Vous ne pouvez plus rien y faire.
    PerennialKing_Dreadnought_DeathBeast_3
    Vous nous croyiez faibles… Nous vous avons… prouvé le contraire…
    PerennialKing_Dreadnought_DeathFaridun_Random
    Vous nous croyiez faibles… Nous vous avons… prouvé le contraire…
    PerennialKing_Dreadnought_DeathFaridun_2
    Je meurs en tant que vrai guerrier.
    PerennialKing_Dreadnought_DeathFinal_Random
    Je meurs en tant que vrai guerrier.
    PerennialKing_Dreadnought_DeathFinal_2
    Je meurs en tant que vrai guerrier.
    PerennialKing_Dreadnought_DeathFinal_3
    Edit

    Wikis Content is available under CC BY-NC-SA 3.0 unless otherwise noted.