Triomphe de Doryani
monster dropped item rarity +% [14700]
monster slain experience +% [0]
unique monster guarantee one rare [1]
Vous ne pouvez pas être Repoussé(e)
Doryani's Triumph
SpectreN
AreaLes Chambres noires, Les Chambres noires
Tagsconstruct, MonsterBlunt_onhit_audio, mud_blood, not_dex, not_int, slow_movement
Vie
360%
Armure
+60%
Résistance
0 0 0 0
Damage
450%
Précision
100%
Touches critiques Chance
5%
Bonus de Dégâts critiques
+30%
Attack Distance
7 ~ 41
Temps d'attaque
1.005 Second
Damage Spread
±20%
Expérience
300%
Model Size
100%
Type
DoryaniMech
Metadata
DoryaniMech
Niveau
64
Vie
22,331
Armure
3,050
Score d'Évasion
429
Damage
926
Dégâts des sorts
926
Précision
1,910
Temps d'attaque
1.005
Expérience
63,483
Minion Life
20,776
Minion Damage
1,937
Minion Armour
5,337
MeleeAtAnimationSpeedUnique
Attack, RangedAttack, MirageArcherCanUse, Projectile, MeleeSingleTarget, Melee, ProjectilesFromUser
Attaque de base
Base Damage: 741–1111
Chances de Touche critique: 5%
Temps d'attaque: 1.005 sec.
action attack or cast time uses animation length [1]
monster penalty against minions damage +% final vs player minions [100]
projectile uses contact position [1]
skill can fire wand projectiles [1]
use scaled contact offset [1]
GADoryaniCrabBodySlam
Triggerable, Attack
Base Damage: 741–1111
Chances de Touche critique: 5%
Dégâts d'Attaque: 200%
Temps d'attaque: 1.005 sec.
Temps de recharge: 35 sec.
100% Davantage de Dégâts d'Attaque
action attack or cast time uses animation length [1]
is area damage [1]
voll slam damage +% final at centre [40]
EDADoryaniCrabClawSlam
Triggerable, Attack
Base Damage: 741–1111
Chances de Touche critique: 5%
Temps d'attaque: 1.005 sec.
Temps de recharge: 20 sec.
Convertit 65% des Dégâts Physiques en Dégâts de Froid
action attack or cast time uses animation length [1]
is area damage [1]
GSDoryaniCrabBrazierSlam
Triggerable, Spell, Damage
Chances de Touche critique: 5%
Temps d'incantation: 1 sec.
Temps de recharge: 15 sec.
100% d'Augmentation des chances d'Embrasement
Inflige 676.9 à 1015 Dégâts de Feu
action attack or cast time uses animation length [1]
is area damage [1]
voll slam damage +% final at centre [40]
GSDoryaniCrabDiscoLazer
Triggerable, Spell, Damage
Chances de Touche critique: 6%
Temps d'incantation: 1 sec.
Temps de recharge: 35 sec.
Inflige 42.3 à 126.9 Dégâts de Foudre
action attack or cast time uses animation length [1]
action do not face target [1]
is area damage [1]
skill does not pathfind [1]
GSDoryaniCrabFlamethrower
Triggerable, Spell, Damage
Chances de Touche critique: 5%
Temps d'incantation: 1 sec.
Temps de recharge: 35 sec.
50% d'Augmentation des chances d'Embrasement
Inflige 121.8 à 182.8 Dégâts de Feu
action attack or cast time uses animation length [1]
action do not face target [1]
base skill can be avoided by dodge roll [1]
base skill can be blocked [1]
base skill cannot be parried [1]
is area damage [1]
skill does not pathfind [1]
GSDoryaniCrabFlamethrower90Right
Triggerable, Spell, Damage
Chances de Touche critique: 5%
Temps d'incantation: 1 sec.
Temps de recharge: 35 sec.
50% d'Augmentation des chances d'Embrasement
Inflige à Dégâts de Feu
action attack or cast time uses animation length [1]
action do not face target [1]
base skill can be avoided by dodge roll [1]
base skill can be blocked [1]
base skill cannot be parried [1]
is area damage [1]
skill does not pathfind [1]
GSDoryaniCrabFlamethrowerCorrupt
Triggerable, Spell, Damage
Chances de Touche critique: 5%
Temps d'incantation: 1 sec.
Temps de recharge: 35 sec.
50% d'Augmentation des chances d'Embrasement
Inflige 84.61 à 253.8 Dégâts de Foudre
Les Aptitudes modifiées ont 300% d'Augmentation des chances d'Électrocuter
action attack or cast time uses animation length [1]
action do not face target [1]
active skill base lightning damage % to convert to fire [20]
base skill can be avoided by dodge roll [1]
base skill can be blocked [1]
base skill cannot be parried [1]
is area damage [1]
skill does not pathfind [1]
GSDoryaniCrabFrostLaser
Triggerable, Spell, Damage
Chances de Touche critique: 7%
Temps d'incantation: 1 sec.
Temps de recharge: 40 sec.
Inflige 67.69 à 101.5 Dégâts de Froid
Intensité de la Frigorification augmentée de 350 %
action attack or cast time uses animation length [1]
action do not face target [1]
active skill area of effect radius +% final [0]
base skill can be avoided by dodge roll [1]
base skill can be blocked [1]
base skill effect duration [7000]
ground ice art variation [1007]
is area damage [1]
skill does not pathfind [1]
GSDoryaniCrabFrostLaser90Left
Triggerable, Spell, Damage
Chances de Touche critique: 7%
Temps d'incantation: 1 sec.
Temps de recharge: 40 sec.
Inflige à Dégâts de Froid
Intensité de la Frigorification augmentée de 350 %
action attack or cast time uses animation length [1]
action do not face target [1]
active skill area of effect radius +% final [0]
base skill can be avoided by dodge roll [1]
base skill can be blocked [1]
base skill effect duration [7000]
ground ice art variation [1007]
is area damage [1]
skill does not pathfind [1]
GSDoryaniCrabFrostLaserCorrupt
Triggerable, Spell, Damage
Chances de Touche critique: 7%
Temps d'incantation: 1 sec.
Temps de recharge: 40 sec.
Inflige 67.69 à 101.5 Dégâts de Froid
Intensité de la Frigorification augmentée de 350 %
action attack or cast time uses animation length [1]
action do not face target [1]
active skill area of effect radius +% final [0]
base skill can be avoided by dodge roll [1]
base skill can be blocked [1]
base skill effect duration [7000]
ground ice art variation [1007]
is area damage [1]
skill does not pathfind [1]
EAADoryaniCrabLegToss
Temps de recharge: 27.5 sec.
action attack or cast time uses animation length [1]
action do not face target [1]
attack maximum action distance + [80]
skill does not pathfind [1]
MASDoryaniCrabSweep180
Attack, RangedAttack, MirageArcherCanUse, Projectile, MeleeSingleTarget, Melee, ProjectilesFromUser
Attaque de base
Base Damage: 741–1111
Chances de Touche critique: 5%
Dégâts d'Attaque: 130%
Temps d'attaque: 1.005 sec.
Temps de recharge: 15 sec.
30% Davantage de Dégâts d'Attaque
Convertit 30% des Dégâts Physiques en Dégâts de Froid
action attack or cast time uses animation length [1]
action do not face target [1]
attack maximum action distance + [33]
projectile uses contact position [1]
skill can fire wand projectiles [1]
skill does not pathfind [1]
use scaled contact offset [1]
EASDoryaniCrabLightningCage
Temps de recharge: 45 sec.
action attack or cast time uses animation length [1]
action do not face target [1]
skill does not pathfind [1]
EAADoryaniCrabComboSlam
Temps de recharge: 32.5 sec.
action attack or cast time uses animation length [1]
EASDoryaniCrabExplode
Temps de recharge: 40 sec.
action attack or cast time uses animation length [1]
action do not face target [1]
skill does not pathfind [1]
EASDoryaniCrabPlatformAttach
action attack or cast time uses animation length [1]
EASDoryaniCrabPlatformDetach
Temps de recharge: 50 sec.
action attack or cast time uses animation length [1]
MPADoryaniCrabLegToss
Attack, RangedAttack, MirageArcherCanUse, Projectile, ProjectilesFromUser, Damage, Triggerable
Base Damage: 741–1111
Chances de Touche critique: 5%
Temps d'attaque: 1.005 sec.
action attack or cast time uses animation length [1]
base deal no damage [1]
base is projectile [1]
monster projectile variation [1136]
projectile ballistic angle from target distance [1]
projectile uses contact position [1]
GSDoryaniCrabLegProjImpact
Triggerable, Spell, Damage
Chances de Touche critique: 6%
Temps d'incantation: 1 sec.
Inflige 549.9 à 1650 Dégâts de Foudre
Les Aptitudes modifiées ont 100% d'Augmentation des chances d'Électrocuter
action attack or cast time uses animation length [1]
base is projectile [1]
is area damage [1]
spell maximum action distance +% [100]
GADoryaniCrabLegProjImpactWall
Triggerable, Attack
Base Damage: 741–1111
Chances de Touche critique: 5%
Temps d'attaque: 1.005 sec.
action attack or cast time uses animation length [1]
is area damage [1]
GADoryaniCrabExplode
Triggerable, Spell, Damage
Chances de Touche critique: 6%
Temps d'incantation: 1 sec.
Inflige 211.5 à 634.6 Dégâts de Foudre
Les Aptitudes modifiées ont 500% d'Augmentation des chances d'Électrocuter
action attack or cast time uses animation length [1]
is area damage [1]
voll slam damage +% final at centre [20]
GADoryaniCrabExplodeSmash
Triggerable, Attack
Base Damage: 741–1111
Chances de Touche critique: 5%
Dégâts d'Attaque: 300%
Temps d'attaque: 1.005 sec.
200% Davantage de Dégâts d'Attaque
action attack or cast time uses animation length [1]
is area damage [1]
voll slam damage +% final at centre [40]
MPSDoryaniCrabLightningCage
Spell, Projectile, ProjectilesFromUser, Triggerable, Damage
Chances de Touche critique: 6%
Temps d'incantation: 1 sec.
Inflige 253.8 à 761.5 Dégâts de Foudre
Les Aptitudes modifiées ont 60% d'Augmentation des chances d'Électrocuter
Tire Projectiles supplémentaires
active skill projectile speed +% variation final [20]
base is projectile [1]
monster projectile variation [1138]
projectile spread radius [40]
GADoryaniCrabComboSlamBasic
Triggerable, Attack
Base Damage: 741–1111
Chances de Touche critique: 5%
Dégâts d'Attaque: 80%
Temps d'attaque: 1.005 sec.
20% de Perte de Dégâts d'Attaque
action attack or cast time uses animation length [1]
is area damage [1]
GADoryaniCrabSlamCold
Triggerable, Attack
Base Damage: 741–1111
Chances de Touche critique: 5%
Dégâts d'Attaque: 185%
Temps d'attaque: 1.005 sec.
85% Davantage de Dégâts d'Attaque
Convertit 70% des Dégâts Physiques en Dégâts de Froid
action attack or cast time uses animation length [1]
active skill area of effect radius +% final [0]
base skill effect duration [4000]
ground ice art variation [1007]
is area damage [1]
voll slam damage +% final at centre [50]
GADoryaniCrabSlamFire
Triggerable, Attack
Base Damage: 741–1111
Chances de Touche critique: 5%
Dégâts d'Attaque: 185%
Temps d'attaque: 1.005 sec.
85% Davantage de Dégâts d'Attaque
Convertit 70% des Dégâts Physiques en Dégâts de Feu
action attack or cast time uses animation length [1]
is area damage [1]
voll slam damage +% final at centre [50]
GADoryaniCrabIceLaserSnap
Triggerable, Spell, Damage
Chances de Touche critique: 6%
Temps d'incantation: 1 sec.
Inflige 507.6 à 1523 Dégâts de Foudre
action attack or cast time uses animation length [1]
active skill area of effect radius +% final [0]
base skill effect duration [4000]
ground ice art variation [1007]
is area damage [1]

Object Type

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

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

BaseEvents
{
	set_is_act_boss = true
}

Stats
{
	set_monster_delay_item_drops_millis = 35000
}

StateMachine
{
	define_shared_state =
	"
		enabled;
		no_collision;
	"

	on_or_create_state_no_collision_1 = { RemoveCollidability(); }
	on_state_no_collision_0 = { MakeCollidable(); }
}

/* ------------------------------------------------------------------------------------------------------------------- */
/* Movement/Rotation */
/* ------------------------------------------------------------------------------------------------------------------- */

StateMachine
{
	define_shared_state = "lock_on;"
	on_state_lock_on_0 = { SetUsesDirectionalRunAnimations( false ); }
	on_state_lock_on_1 = { SetUsesDirectionalRunAnimations( true ); }
}

Animated
{
	// need this to enable the turn anims
	always_interpolate_bearing = true
}

Functions
{
	fix_orientation =
	"
		AddOnActionEnd(
		{
			SetOrientation( GetOrientation() + arg1, false, true );
			PlayAnimationType( Idle, 1.0, 0, 0 );
		}, true );
	"
}

/* ------------------------------------------------------------------------------------------------------------------- */
/* Lightning Cage */
/* ------------------------------------------------------------------------------------------------------------------- */

StateMachine
{
	define_shared_state = "pylons_active;"
}

/* ------------------------------------------------------------------------------------------------------------------- */
/* Ice Laser/Corrupt Ice Laser */
/* ------------------------------------------------------------------------------------------------------------------- */

StateMachine
{
	define_shared_state =
	"
		ice_laser;
		ice_laser_90;
		corr_ice_laser;
	"
}

/* ------------------------------------------------------------------------------------------------------------------- */
/* Detach Hovercraft */
/* ------------------------------------------------------------------------------------------------------------------- */

StateMachine
{
	define_shared_state = "hover_crafting;"
}

/* ------------------------------------------------------------------------------------------------------------------- */
/* Re-attach Hovercraft */
/* ------------------------------------------------------------------------------------------------------------------- */

Actor
{
	leveled_starting_effects = "DoLiterallyNothing"

	on_effect_start_EASDoryaniCrabPlatformAttach = { ForceSkillIntoCooldown( EASDoryaniCrabPlatformDetach ); }
}

/* ------------------------------------------------------------------------------------------------------------------- */
/* Self Destruct */
/* ------------------------------------------------------------------------------------------------------------------- */

Functions
{
	no_face = { SetMovementFaceMode( DontFace ); }
	do_face = { SetMovementFaceMode( FaceDirection ); }
}

Object Type Codes

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

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

Render
{
	use_ao_lights = true
}

StateMachine
{
	on_or_create_state_enabled_0 =
	{
		RemoveCollidability();
		DisableTargetable();
	}

	on_state_enabled_1 =
	{
		SetCustomCameraSpeed( 0.65 );
		CreateCameraZoomNode( 9, 9, 1.5 );
	}

	on_or_create_state_enabled_2 =
	{
		StartStateTimer( check_bearing );
		MakeCollidable();
		EnableTargetable();
		SetCustomCameraSpeed( 1.0 );
		ClearCameraZoomNodes();
	}
}

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

BaseEvents
{
	// modify this to change how the turn speed is scaled as the turn distance increases
	set_turn_speed_mult = 60
}

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 or 11 for left/right turns
	// 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
	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( Or( And( angle_diff <= 1.0, angle_diff >= -1.0 ), GetCurrentMoveSpeed() > 1.0 ), (){ SetStateTo( current_rotate_dir, 0 ); } );
		If( And( angle_diff > 1.0, GetCurrentMoveSpeed() < 1.0 ), (){ SetStateTo( current_rotate_dir, 1 ); } );
		If( And( angle_diff < -1.0, GetCurrentMoveSpeed() < 1.0 ), (){ SetStateTo( current_rotate_dir, 2 ); } );
		// Speed up the additive turn anims as the turn speed increases
		local angle_diff_clamped = Clamp( angle_diff, -100, 100 );
		local scaling_factor = Eval( Abs( angle_diff_clamped ) / turn_speed_mult );
		local layer_speed = Clamp( scaling_factor, 1.0, 10.0 );
		// Log( 'Angle Diff: {angle_diff} | Layer Speed: {layer_speed}', c );
		If( Abs( angle_diff_clamped ) < 15, ()
		{
			layer_speed = layer_speed * Eval( Abs( angle_diff_clamped ) / 15 );
		} );
		SetLayerAnimationSpeed( 9, layer_speed );
		SetLayerAnimationSpeed( 10, layer_speed );
		StartStateTimer( check_bearing );
	}

	// if current_rotate_dir is 0, it means the monster isn't turning so fade out the additive turns
	on_state_current_rotate_dir_0 =
	{
		FadeAnimations( 9, 0.2 );
		FadeAnimations( 10, 0.2 );
	}

	// play a different additive turn anim for different turn directions and velocity
	on_state_current_rotate_dir_1 =
	{
		FadeAnimations( 10, 0.2 );
		PlayAdditiveAnimation( turn_01_right, 9 );
	}

	on_state_current_rotate_dir_2 =
	{
		FadeAnimations( 9, 0.2 );
		PlayAdditiveAnimation( turn_01_left, 10 );
	}
}

/* ------------------------------------------------------------------------------------------------------------------- */
/* All the attachment ruckus */
/* ------------------------------------------------------------------------------------------------------------------- */

BaseEvents
{
	on_construction_complete =
	{
		this.hover_craft = GetAttachedAOByType( 'Metadata/Monsters/DoryaniMechSuit/Hovercraft.ao' );
		this.l_arm_front = GetAttachedAOByType( 'Metadata/Monsters/DoryaniMechSuit/attachments/HovercraftLArmFront.ao' );
		this.r_arm_front = GetAttachedAOByType( 'Metadata/Monsters/DoryaniMechSuit/attachments/HovercraftRArmFront.ao' );
		this.l_arm_back = GetAttachedAOByType( 'Metadata/Monsters/DoryaniMechSuit/attachments/HovercraftLArmBack.ao' );
		this.r_arm_back = GetAttachedAOByType( 'Metadata/Monsters/DoryaniMechSuit/attachments/HovercraftRArmBack.ao' );
		// coils need to be attached here so I can have a reference to each one
		this.coil_1 = hover_craft.AddAttached( 'Metadata/Monsters/DoryaniMechSuit/attachments/HovercraftCoil.ao', R_coil_jntBnd_1 );
		this.coil_2 = hover_craft.AddAttached( 'Metadata/Monsters/DoryaniMechSuit/attachments/HovercraftCoil.ao', R_coil_jntBnd_2 );
		this.coil_3 = hover_craft.AddAttached( 'Metadata/Monsters/DoryaniMechSuit/attachments/HovercraftCoil.ao', R_coil_jntBnd_3 );
		this.coil_4 = hover_craft.AddAttached( 'Metadata/Monsters/DoryaniMechSuit/attachments/HovercraftCoil.ao', L_coil_jntBnd_1 );
		this.coil_5 = hover_craft.AddAttached( 'Metadata/Monsters/DoryaniMechSuit/attachments/HovercraftCoil.ao', L_coil_jntBnd_2 );
		this.coil_6 = hover_craft.AddAttached( 'Metadata/Monsters/DoryaniMechSuit/attachments/HovercraftCoil.ao', L_coil_jntBnd_3 );
	}
}

Functions
{
	detach_hover_craft =
	{
		If( IsAlive(), ()
		{
			this.doryani_boss.hover_craft = doryani_boss.AddAttached( 'Metadata/Monsters/DoryaniMechSuit/Hovercraft.ao', ground );
			this.doryani_boss.l_arm_front = doryani_boss.AddAttached( 'Metadata/Monsters/DoryaniMechSuit/attachments/HovercraftLArmFront.ao', ground );
			this.doryani_boss.r_arm_front = doryani_boss.AddAttached( 'Metadata/Monsters/DoryaniMechSuit/attachments/HovercraftRArmFront.ao', ground );
			this.doryani_boss.l_arm_back = doryani_boss.AddAttached( 'Metadata/Monsters/DoryaniMechSuit/attachments/HovercraftLArmBack.ao', ground );
			this.doryani_boss.r_arm_back = doryani_boss.AddAttached( 'Metadata/Monsters/DoryaniMechSuit/attachments/HovercraftRArmBack.ao', ground );
			doryani_boss.coil_1 = doryani_boss.hover_craft.AddAttached( 'Metadata/Monsters/DoryaniMechSuit/attachments/HovercraftCoil.ao', R_coil_jntBnd_1 );
			doryani_boss.coil_2 = doryani_boss.hover_craft.AddAttached( 'Metadata/Monsters/DoryaniMechSuit/attachments/HovercraftCoil.ao', R_coil_jntBnd_2 );
			doryani_boss.coil_3 = doryani_boss.hover_craft.AddAttached( 'Metadata/Monsters/DoryaniMechSuit/attachments/HovercraftCoil.ao', R_coil_jntBnd_3 );
			doryani_boss.coil_4 = doryani_boss.hover_craft.AddAttached( 'Metadata/Monsters/DoryaniMechSuit/attachments/HovercraftCoil.ao', L_coil_jntBnd_1 );
			doryani_boss.coil_5 = doryani_boss.hover_craft.AddAttached( 'Metadata/Monsters/DoryaniMechSuit/attachments/HovercraftCoil.ao', L_coil_jntBnd_2 );
			doryani_boss.coil_6 = doryani_boss.hover_craft.AddAttached( 'Metadata/Monsters/DoryaniMechSuit/attachments/HovercraftCoil.ao', L_coil_jntBnd_3 );
			doryani_boss.PlayAnimationAttached( 'Metadata/Monsters/DoryaniMechSuit/Hovercraft.ao', floating_idle_01 );
			doryani_boss.PlayAnimationAttached( 'Metadata/Monsters/DoryaniMechSuit/attachments/HovercraftLArmBack.ao', floating_idle_01 );
			doryani_boss.PlayAnimationAttached( 'Metadata/Monsters/DoryaniMechSuit/attachments/HovercraftRArmBack.ao', floating_idle_01 );
			doryani_boss.PlayAnimationAttached( 'Metadata/Monsters/DoryaniMechSuit/attachments/HovercraftLArmFront.ao', floating_idle_01 );
			doryani_boss.PlayAnimationAttached( 'Metadata/Monsters/DoryaniMechSuit/attachments/HovercraftRArmFront.ao', floating_idle_01 );
			// without the delay here, the particles of the thruster epk don't show up
			Delay( 0.5, { doryani_boss.AddEffectPackAttached( 'Metadata/Effects/Spells/monsters_effects/Act3_FOUR/Doryani/epk/hovercraft_thrusters.epk', 'Metadata/Monsters/DoryaniMechSuit/Hovercraft.ao' ); } );
		} );
		DetachAO( hover_craft );
		DetachAO( l_arm_front );
		DetachAO( r_arm_front );
		DetachAO( l_arm_back );
		DetachAO( r_arm_back );
	}

	attach_hover_craft =
	{
		this.hover_craft = AddAttached( 'Metadata/Monsters/DoryaniMechSuit/Hovercraft.ao',  );
		this.l_arm_front = AddAttached( 'Metadata/Monsters/DoryaniMechSuit/attachments/HovercraftLArmFront.ao',  );
		this.r_arm_front = AddAttached( 'Metadata/Monsters/DoryaniMechSuit/attachments/HovercraftRArmFront.ao',  );
		this.l_arm_back = AddAttached( 'Metadata/Monsters/DoryaniMechSuit/attachments/HovercraftLArmBack.ao',  );
		this.r_arm_back = AddAttached( 'Metadata/Monsters/DoryaniMechSuit/attachments/HovercraftRArmBack.ao',  );
		// coils need to be attached here so I can have a reference to each one
		this.coil_1 = hover_craft.AddAttached( 'Metadata/Monsters/DoryaniMechSuit/attachments/HovercraftCoil.ao', R_coil_jntBnd_1 );
		this.coil_2 = hover_craft.AddAttached( 'Metadata/Monsters/DoryaniMechSuit/attachments/HovercraftCoil.ao', R_coil_jntBnd_2 );
		this.coil_3 = hover_craft.AddAttached( 'Metadata/Monsters/DoryaniMechSuit/attachments/HovercraftCoil.ao', R_coil_jntBnd_3 );
		this.coil_4 = hover_craft.AddAttached( 'Metadata/Monsters/DoryaniMechSuit/attachments/HovercraftCoil.ao', L_coil_jntBnd_1 );
		this.coil_5 = hover_craft.AddAttached( 'Metadata/Monsters/DoryaniMechSuit/attachments/HovercraftCoil.ao', L_coil_jntBnd_2 );
		this.coil_6 = hover_craft.AddAttached( 'Metadata/Monsters/DoryaniMechSuit/attachments/HovercraftCoil.ao', L_coil_jntBnd_3 );
		PlayAnimationAttached( 'Metadata/Monsters/DoryaniMechSuit/Hovercraft.ao', attach_platform_01 );
		PlayAnimationAttached( 'Metadata/Monsters/DoryaniMechSuit/attachments/HovercraftLArmBack.ao', attach_platform_01 );
		PlayAnimationAttached( 'Metadata/Monsters/DoryaniMechSuit/attachments/HovercraftRArmBack.ao', attach_platform_01 );
		PlayAnimationAttached( 'Metadata/Monsters/DoryaniMechSuit/attachments/HovercraftLArmFront.ao', attach_platform_01 );
		PlayAnimationAttached( 'Metadata/Monsters/DoryaniMechSuit/attachments/HovercraftRArmFront.ao', attach_platform_01 );
		/* PlayAnimationAttached( 'Metadata/Monsters/Doryani/TrueDoryani/TrueDoryani.ao', mech_attach_platform_01 ); */
		doryani_boss.DetachAO( hover_craft );
		doryani_boss.DetachAO( l_arm_front );
		doryani_boss.DetachAO( r_arm_front );
		doryani_boss.DetachAO( l_arm_back );
		doryani_boss.DetachAO( r_arm_back );
		
	}
}

StateMachine
{
	create_state_hover_crafting_1 =
	{
		Delay( 0.0, { Call( detach_hover_craft ); } );
	}
}

/* ------------------------------------------------------------------------------------------------------------------- */
/* Preload */
/* ------------------------------------------------------------------------------------------------------------------- */

Preload 
{
	preload_epk = "Metadata/Effects/Spells/monsters_effects/Act3_FOUR/Doryani/epk/hovercraft_thrusters.epk"
	preload_monster_variety = "Metadata/Monsters/DoryaniMechSuit/DoryaniMechRailGun"
	preload_object = "Metadata/Monsters/DoryaniMechSuit/DoryaniMechZapTarget"
}

/* ------------------------------------------------------------------------------------------------------------------- */
/* Lightning Cage */
/* ------------------------------------------------------------------------------------------------------------------- */

StateMachine
{
	on_state_pylons_active_1 =
	{
		Delay( Random( 0.1, 0.5 ),
		{
			coil_1.Do( ()
			{
				PlayAnimation( activate_01 );
				QueueAnimation( idle_active_01 );
			} );
		} );
		Delay( Random( 0.1, 0.5 ),
		{
			coil_2.Do( ()
			{
				PlayAnimation( activate_01 );
				QueueAnimation( idle_active_01 );
			} );
		} );
		Delay( Random( 0.1, 0.5 ),
		{
			coil_3.Do( ()
			{
				PlayAnimation( activate_01 );
				QueueAnimation( idle_active_01 );
			} );
		} );
		Delay( Random( 0.1, 0.5 ),
		{
			coil_4.Do( ()
			{
				PlayAnimation( activate_01 );
				QueueAnimation( idle_active_01 );
			} );
		} );
		Delay( Random( 0.1, 0.5 ),
		{
			coil_5.Do( ()
			{
				PlayAnimation( activate_01 );
				QueueAnimation( idle_active_01 );
			} );
		} );
		Delay( Random( 0.1, 0.5 ),
		{
			coil_6.Do( ()
			{
				PlayAnimation( activate_01 );
				QueueAnimation( idle_active_01 );
			} );
		} );
		Delay( 0.5,
		{
			this.lightning_ring = AddAttached( 'Metadata/Effects/Spells/monsters_effects/Act3_FOUR/Doryani/lightning_cage.ao', root_jntBnd );
		} );
	}

	create_state_pylons_active_1 =
	{
		coil_1.QueueAnimation( idle_active_01 );
		coil_2.QueueAnimation( idle_active_01 );
		coil_3.QueueAnimation( idle_active_01 );
		coil_4.QueueAnimation( idle_active_01 );
		coil_5.QueueAnimation( idle_active_01 );
		coil_6.QueueAnimation( idle_active_01 );
		this.lightning_ring = AddAttached( 'Metadata/Effects/Spells/monsters_effects/Act3_FOUR/Doryani/lightning_cage.ao', root_jntBnd );
	}

	on_state_pylons_active_0 =
	{
		Delay( Random( 0.1, 0.5 ),
		{
			coil_1.Do( ()
			{
				PlayAnimation( deactivate_01 );
				QueueAnimation( idle_deactive_01 );
			} );
		} );
		Delay( Random( 0.1, 0.5 ),
		{
			coil_2.Do( ()
			{
				PlayAnimation( deactivate_01 );
				QueueAnimation( idle_deactive_01 );
			} );
		} );
		Delay( Random( 0.1, 0.5 ),
		{
			coil_3.Do( ()
			{
				PlayAnimation( deactivate_01 );
				QueueAnimation( idle_deactive_01 );
			} );
		} );
		Delay( Random( 0.1, 0.5 ),
		{
			coil_4.Do( ()
			{
				PlayAnimation( deactivate_01 );
				QueueAnimation( idle_deactive_01 );
			} );
		} );
		Delay( Random( 0.1, 0.5 ),
		{
			coil_5.Do( ()
			{
				PlayAnimation( deactivate_01 );
				QueueAnimation( idle_deactive_01 );
			} );
		} );
		Delay( Random( 0.1, 0.5 ),
		{
			coil_6.Do( ()
			{
				PlayAnimation( deactivate_01 );
				QueueAnimation( idle_deactive_01 );
			} );
		} );
		lightning_ring.PlayAnimation( end );
		Delay( 1.0, { DetachAO( lightning_ring ); } );
	}
}

/* ------------------------------------------------------------------------------------------------------------------- */
/* Ice Laser/Corrupt Ice Laser */
/* ------------------------------------------------------------------------------------------------------------------- */

StateMachine
{
	on_state_ice_laser_0 = { ice_laser.PlayAnimation( end ); }

	on_state_ice_laser_1 =
	{
		this.ice_laser = AddAttached( 'Metadata/Effects/Spells/monsters_effects/Act3_FOUR/Doryani/coldbeam.ao', ice_laser_attachment );
		ice_laser.PlayAnimation( start );
		ice_laser.QueueAnimation( loop );
	}

	create_state_ice_laser_1 =
	{
		this.ice_laser = AddAttached( 'Metadata/Effects/Spells/monsters_effects/Act3_FOUR/Doryani/coldbeam.ao', ice_laser_attachment );
		ice_laser.PlayAnimation( loop );
	}

	on_state_ice_laser_90_0 = { ice_laser.PlayAnimation( end ); }

	on_state_ice_laser_90_1 =
	{
		this.ice_laser = AddAttached( 'Metadata/Effects/Spells/monsters_effects/Act3_FOUR/Doryani/coldbeam.ao', ice_laser90_attachment );
		ice_laser.PlayAnimation( start );
		ice_laser.QueueAnimation( loop );
	}

	create_state_ice_laser_90_1 =
	{
		this.ice_laser = AddAttached( 'Metadata/Effects/Spells/monsters_effects/Act3_FOUR/Doryani/coldbeam.ao', ice_laser90_attachment );
		ice_laser.PlayAnimation( loop );
	}

	on_state_corr_ice_laser_0 = { DetachAllOfType( 'Metadata/Effects/Spells/monsters_effects/Act3_FOUR/Doryani/coldbeam_corr.ao' ); }

	on_state_corr_ice_laser_1 =
	{
		this.corr_ice_laser = AddAttached( 'Metadata/Effects/Spells/monsters_effects/Act3_FOUR/Doryani/coldbeam_corr.ao', ice_laser_attachment );
		corr_ice_laser.PlayAnimation( start );
		corr_ice_laser.QueueAnimation( loop );
	}

	create_state_corr_ice_laser_1 =
	{
		this.corr_ice_laser = AddAttached( 'Metadata/Effects/Spells/monsters_effects/Act3_FOUR/Doryani/coldbeam_corr.ao', ice_laser_attachment );
		corr_ice_laser.PlayAnimation( loop );
	}

	on_state_corr_ice_laser_2 = { corr_ice_laser.PlayAnimation( swell ); }

	create_state_corr_ice_laser_2 =
	{
		this.corr_ice_laser = AddAttached( 'Metadata/Effects/Spells/monsters_effects/Act3_FOUR/Doryani/coldbeam_corr.ao', ice_laser_attachment );
		corr_ice_laser.PlayAnimation( swell );
	}
}

/* ------------------------------------------------------------------------------------------------------------------- */
/* Combat Dialogue */
/* ------------------------------------------------------------------------------------------------------------------- */

Actor
{
	on_effect_start_GSDoryaniCrabFrostLaser90Left =
	"
		Roll( 1, 1, ()
		{
			globals.doryanis_voicebox.PlayTextAudio( DoryaniPastBoss_MechClawLaser_Random, 'Metadata/Monsters/Doryani/DoryaniInThePast/DoryaniPast' );
		} );
	"

	on_effect_start_GSDoryaniCrabFrostLaser =
	"
		Roll( 1, 1, ()
		{
			globals.doryanis_voicebox.PlayTextAudio( DoryaniPastBoss_MechClawLaser_Random, 'Metadata/Monsters/Doryani/DoryaniInThePast/DoryaniPast' );
		} );
	"

	on_effect_start_EDADoryaniCrabClawSlam =
	"
		Roll( 1, 1, ()
		{
			globals.doryanis_voicebox.PlayTextAudio( DoryaniPastBoss_MechSlam_Random, 'Metadata/Monsters/Doryani/DoryaniInThePast/DoryaniPast' );
		} );
	"

	on_effect_start_GSDoryaniCrabBrazierSlam =
	"
		Roll( 1, 1, ()
		{
			globals.doryanis_voicebox.PlayTextAudio( DoryaniPastBoss_MechSlam2_Random, 'Metadata/Monsters/Doryani/DoryaniInThePast/DoryaniPast' );
		} );
	"

	on_effect_start_GADoryaniCrabBodySlam =
	"
		Roll( 1, 1, ()
		{
			globals.doryanis_voicebox.PlayTextAudio( DoryaniPastBoss_MechBodySlam_Random, 'Metadata/Monsters/Doryani/DoryaniInThePast/DoryaniPast' );
		} );
	"

	on_effect_start_GSDoryaniCrabDiscoLazer =
	"
		Roll( 1, 1, ()
		{
			globals.doryanis_voicebox.PlayTextAudio( DoryaniPastBoss_MechDiscoLaser_Random, 'Metadata/Monsters/Doryani/DoryaniInThePast/DoryaniPast' );
		} );
	"

	on_effect_start_GSDoryaniCrabFlamethrower =
	"
		Roll( 1, 1, ()
		{
			globals.doryanis_voicebox.PlayTextAudio( DoryaniPastBoss_MechFlamethrower_Random, 'Metadata/Monsters/Doryani/DoryaniInThePast/DoryaniPast' );
		} );
	"

	on_effect_start_GSDoryaniCrabFlamethrower90Right =
	"
		Roll( 1, 1, ()
		{
			globals.doryanis_voicebox.PlayTextAudio( DoryaniPastBoss_MechFlamethrower_Random, 'Metadata/Monsters/Doryani/DoryaniInThePast/DoryaniPast' );
		} );
	"

	on_effect_start_GSDoryaniCrabFlamethrowerCorrupt =
	"
		Roll( 1, 1, ()
		{
			globals.doryanis_voicebox.PlayTextAudio( DoryaniPastBoss_MechFlamethrower_Random, 'Metadata/Monsters/Doryani/DoryaniInThePast/DoryaniPast' );
		} );
	"

	on_effect_start_EASDoryaniCrabLightningCage =
	"
		Roll( 1, 1, ()
		{
			globals.doryanis_voicebox.PlayTextAudio( DoryaniPastBoss_MechLightningStorm_Random, 'Metadata/Monsters/Doryani/DoryaniInThePast/DoryaniPast' );
		} );
	"

	on_effect_start_EASDoryaniCrabLightningCageCorrupt =
	"
		Roll( 1, 1, ()
		{
			globals.doryanis_voicebox.PlayTextAudio( DoryaniPastBoss_MechLightningStorm_Random, 'Metadata/Monsters/Doryani/DoryaniInThePast/DoryaniPast' );
		} );
	"

	on_effect_start_EASDoryaniCrabExplode =
	"
		Roll( 1, 1, ()
		{
			globals.doryanis_voicebox.PlayTextAudio( DoryaniPastBoss_MechSelfDestruct_Random, 'Metadata/Monsters/Doryani/DoryaniInThePast/DoryaniPast' );
			globals.doryanis_voicebox.PlayTextAudio( DoryaniPastBoss_MechReassemble_Random, 'Metadata/Monsters/Doryani/DoryaniInThePast/DoryaniPast', 6000 );
		} );
	"

	on_effect_start_EASDoryaniCrabPlatformDetach =
	"
		Roll( 1, 1, ()
		{
			globals.doryanis_voicebox.PlayTextAudio( DoryaniPastBoss_MechDetatchPlatform_Random, 'Metadata/Monsters/Doryani/DoryaniInThePast/DoryaniPast' );
		} );
	"

	on_effect_start_EAADoryaniCrabLegToss =
	"
		Roll( 1, 1, ()
		{
			globals.doryanis_voicebox.PlayTextAudio( DoryaniPastBoss_MechSpiderLegAttack_Random, 'Metadata/Monsters/Doryani/DoryaniInThePast/DoryaniPast' );
		} );
	"

	on_effect_start_EAADoryaniCrabComboSlam =
	"
		Roll( 1, 1, ()
		{
			globals.doryanis_voicebox.PlayTextAudio( DoryaniPastBoss_MechComboSlam_Random, 'Metadata/Monsters/Doryani/DoryaniInThePast/DoryaniPast' );
		} );
	"
}
-- src\Data\Spectres.lua
minions["Metadata/Monsters/DoryaniMechSuit/DoryaniMech"] = {
    name = "Doryani's Triumph",
    life = 3.6,
    fireResist = 0,
    coldResist = 0,
    lightningResist = 0,
    chaosResist = 0,
    damage = 4.5,
    damageSpread = 0.2,
    attackTime = 1.005,
    attackRange = 41,
    accuracy = 1,
    skillList = {
        "MeleeAtAnimationSpeedUnique",
        "MASDoryaniCrabSweep180",
        "MPADoryaniCrabLegToss",
        "MPSDoryaniCrabLightningCage",
        "GADoryaniCrabBodySlam",
        "GADoryaniCrabExplode",
        "GADoryaniCrabExplodeSmash",
        "GSDoryaniCrabBrazierSlam",
        "GSDoryaniCrabDiscoLazer",
        "GSDoryaniCrabFlamethrower",
        "GSDoryaniCrabFlamethrower90Right",
        "GSDoryaniCrabFlamethrowerCorrupt",
        "GSDoryaniCrabFrostLaser",
        "GSDoryaniCrabFrostLaser90Left",
        "GSDoryaniCrabFrostLaserCorrupt",
        "GSDoryaniCrabLegProjImpact",
        "GADoryaniCrabLegProjImpactWall",
        "GADoryaniCrabSlamCold",
        "GADoryaniCrabSlamFire",
        "GADoryaniCrabComboSlamBasic",
        "GADoryaniCrabIceLaserSnap",
        "EASDoryaniCrabExplode",
        "EASDoryaniCrabLightningCage",
        "EASDoryaniCrabPlatformAttach",
        "EASDoryaniCrabPlatformDetach",
        "EAADoryaniCrabLegToss",
        "EAADoryaniCrabComboSlam",
        "EDADoryaniCrabClawSlam",
    },
    modList = {
    },
}
-- src\Data\Skills\spectre.lua
skills["MeleeAtAnimationSpeedUnique"] = {
    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 = {
        "monster_penalty_against_minions_damage_+%_final_vs_player_minions",
        "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] = {100, levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["MASDoryaniCrabSweep180"] = {
    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_+",
        "active_skill_base_physical_damage_%_to_convert_to_cold",
        "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",
        "action_do_not_face_target",
        "skill_does_not_pathfind",
    },
    levels = {
        [1] = {33, 30, baseMultiplier = 1.3, levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["MPADoryaniCrabLegToss"] = {
    name = "MPADoryaniCrabLegToss",
    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",
        "base_is_projectile",
        "projectile_uses_contact_position",
        "action_attack_or_cast_time_uses_animation_length",
        "base_deal_no_damage",
        "projectile_ballistic_angle_from_target_distance",
    },
    levels = {
        [1] = {1136, levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["MPSDoryaniCrabLightningCage"] = {
    name = "MPSDoryaniCrabLightningCage",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Spell] = true,
        [SkillType.Projectile] = true,
        [SkillType.ProjectilesFromUser] = true,
        [SkillType.Triggerable] = true,
        [SkillType.Damage] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
        spell = true,
        projectile = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "spell_minimum_base_lightning_damage",
        "spell_maximum_base_lightning_damage",
        "monster_projectile_variation",
        "number_of_additional_projectiles",
        "projectile_spread_radius",
        "active_skill_projectile_speed_+%_variation_final",
        "shock_chance_+%",
        "base_is_projectile",
    },
    levels = {
        [1] = {0.5, 1.5, 1138, 2, 40, 20, 60, critChance = 6, levelRequirement = 1, statInterpolation = {3, 3},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["GADoryaniCrabBodySlam"] = {
    name = "GADoryaniCrabBodySlam",
    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 = {
        "voll_slam_damage_+%_final_at_centre",
        "is_area_damage",
        "action_attack_or_cast_time_uses_animation_length",
    },
    levels = {
        [1] = {40, baseMultiplier = 2, levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["GADoryaniCrabExplode"] = {
    name = "GADoryaniCrabExplode",
    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",
        "voll_slam_damage_+%_final_at_centre",
        "shock_chance_+%",
        "is_area_damage",
        "action_attack_or_cast_time_uses_animation_length",
    },
    levels = {
        [1] = {0.5, 1.5, 20, 500, critChance = 6, levelRequirement = 1, statInterpolation = {3, 3},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["GADoryaniCrabExplodeSmash"] = {
    name = "GADoryaniCrabExplodeSmash",
    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 = {
        "voll_slam_damage_+%_final_at_centre",
        "is_area_damage",
        "action_attack_or_cast_time_uses_animation_length",
    },
    levels = {
        [1] = {40, baseMultiplier = 3, levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["GSDoryaniCrabBrazierSlam"] = {
    name = "GSDoryaniCrabBrazierSlam",
    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_fire_damage",
        "spell_maximum_base_fire_damage",
        "ignite_chance_+%",
        "voll_slam_damage_+%_final_at_centre",
        "is_area_damage",
        "action_attack_or_cast_time_uses_animation_length",
    },
    levels = {
        [1] = {0.80000001192093, 1.2000000476837, 100, 40, critChance = 5, levelRequirement = 1, statInterpolation = {3, 3},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["GSDoryaniCrabDiscoLazer"] = {
    name = "GSDoryaniCrabDiscoLazer",
    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",
        "is_area_damage",
        "action_attack_or_cast_time_uses_animation_length",
        "action_do_not_face_target",
        "skill_does_not_pathfind",
    },
    levels = {
        [1] = {0.5, 1.5, critChance = 6, levelRequirement = 1, statInterpolation = {3, 3},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["GSDoryaniCrabFlamethrower"] = {
    name = "GSDoryaniCrabFlamethrower",
    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_fire_damage",
        "spell_maximum_base_fire_damage",
        "ignite_chance_+%",
        "is_area_damage",
        "action_attack_or_cast_time_uses_animation_length",
        "action_do_not_face_target",
        "skill_does_not_pathfind",
        "base_skill_can_be_avoided_by_dodge_roll",
        "base_skill_can_be_blocked",
        "base_skill_cannot_be_parried",
    },
    levels = {
        [1] = {0.80000001192093, 1.2000000476837, 50, critChance = 5, levelRequirement = 1, statInterpolation = {3, 3},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["GSDoryaniCrabFlamethrower90Right"] = {
    name = "GSDoryaniCrabFlamethrower90Right",
    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_fire_damage",
        "spell_maximum_base_fire_damage",
        "ignite_chance_+%",
        "is_area_damage",
        "action_attack_or_cast_time_uses_animation_length",
        "action_do_not_face_target",
        "skill_does_not_pathfind",
        "base_skill_can_be_avoided_by_dodge_roll",
        "base_skill_can_be_blocked",
        "base_skill_cannot_be_parried",
    },
    levels = {
        [1] = {0.80000001192093, 1.2000000476837, 50, critChance = 5, levelRequirement = 1, statInterpolation = {3, 3},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["GSDoryaniCrabFlamethrowerCorrupt"] = {
    name = "GSDoryaniCrabFlamethrowerCorrupt",
    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",
        "shock_chance_+%",
        "active_skill_base_lightning_damage_%_to_convert_to_fire",
        "ignite_chance_+%",
        "is_area_damage",
        "action_attack_or_cast_time_uses_animation_length",
        "action_do_not_face_target",
        "skill_does_not_pathfind",
        "base_skill_can_be_avoided_by_dodge_roll",
        "base_skill_can_be_blocked",
        "base_skill_cannot_be_parried",
    },
    levels = {
        [1] = {0.5, 1.5, 300, 20, 50, critChance = 5, levelRequirement = 1, statInterpolation = {3, 3},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["GSDoryaniCrabFrostLaser"] = {
    name = "GSDoryaniCrabFrostLaser",
    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_cold_damage",
        "spell_maximum_base_cold_damage",
        "active_skill_area_of_effect_radius_+%_final",
        "base_skill_effect_duration",
        "ground_ice_art_variation",
        "active_skill_chill_effect_+%_final",
        "is_area_damage",
        "action_attack_or_cast_time_uses_animation_length",
        "action_do_not_face_target",
        "skill_does_not_pathfind",
        "base_skill_can_be_avoided_by_dodge_roll",
        "base_skill_can_be_blocked",
    },
    levels = {
        [1] = {0.80000001192093, 1.2000000476837, 0, 7000, 1007, 350, critChance = 7, levelRequirement = 1, statInterpolation = {3, 3},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["GSDoryaniCrabFrostLaser90Left"] = {
    name = "GSDoryaniCrabFrostLaser90Left",
    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_cold_damage",
        "spell_maximum_base_cold_damage",
        "active_skill_area_of_effect_radius_+%_final",
        "base_skill_effect_duration",
        "ground_ice_art_variation",
        "active_skill_chill_effect_+%_final",
        "is_area_damage",
        "action_attack_or_cast_time_uses_animation_length",
        "action_do_not_face_target",
        "skill_does_not_pathfind",
        "base_skill_can_be_avoided_by_dodge_roll",
        "base_skill_can_be_blocked",
    },
    levels = {
        [1] = {0.80000001192093, 1.2000000476837, 0, 7000, 1007, 350, critChance = 7, levelRequirement = 1, statInterpolation = {3, 3},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["GSDoryaniCrabFrostLaserCorrupt"] = {
    name = "GSDoryaniCrabFrostLaserCorrupt",
    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_cold_damage",
        "spell_maximum_base_cold_damage",
        "active_skill_area_of_effect_radius_+%_final",
        "base_skill_effect_duration",
        "ground_ice_art_variation",
        "active_skill_chill_effect_+%_final",
        "is_area_damage",
        "action_attack_or_cast_time_uses_animation_length",
        "action_do_not_face_target",
        "skill_does_not_pathfind",
        "base_skill_can_be_avoided_by_dodge_roll",
        "base_skill_can_be_blocked",
    },
    levels = {
        [1] = {0.80000001192093, 1.2000000476837, 0, 7000, 1007, 350, critChance = 7, levelRequirement = 1, statInterpolation = {3, 3},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["GSDoryaniCrabLegProjImpact"] = {
    name = "GSDoryaniCrabLegProjImpact",
    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,
        projectile = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "spell_minimum_base_lightning_damage",
        "spell_maximum_base_lightning_damage",
        "shock_chance_+%",
        "spell_maximum_action_distance_+%",
        "is_area_damage",
        "action_attack_or_cast_time_uses_animation_length",
        "base_is_projectile",
    },
    levels = {
        [1] = {0.5, 1.5, 100, 100, critChance = 6, levelRequirement = 1, statInterpolation = {3, 3},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["GADoryaniCrabLegProjImpactWall"] = {
    name = "GADoryaniCrabLegProjImpactWall",
    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 = {
        "is_area_damage",
        "action_attack_or_cast_time_uses_animation_length",
    },
    levels = {
        [1] = {critChance = 6, levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["GADoryaniCrabSlamCold"] = {
    name = "GADoryaniCrabSlamCold",
    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 = {
        "active_skill_base_physical_damage_%_to_convert_to_cold",
        "voll_slam_damage_+%_final_at_centre",
        "active_skill_area_of_effect_radius_+%_final",
        "base_skill_effect_duration",
        "ground_ice_art_variation",
        "is_area_damage",
        "action_attack_or_cast_time_uses_animation_length",
    },
    levels = {
        [1] = {70, 50, 0, 4000, 1007, baseMultiplier = 1.85, levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["GADoryaniCrabSlamFire"] = {
    name = "GADoryaniCrabSlamFire",
    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 = {
        "active_skill_base_physical_damage_%_to_convert_to_fire",
        "voll_slam_damage_+%_final_at_centre",
        "is_area_damage",
        "action_attack_or_cast_time_uses_animation_length",
    },
    levels = {
        [1] = {70, 50, baseMultiplier = 1.85, levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["GADoryaniCrabComboSlamBasic"] = {
    name = "GADoryaniCrabComboSlamBasic",
    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 = {
        "is_area_damage",
        "action_attack_or_cast_time_uses_animation_length",
    },
    levels = {
        [1] = {baseMultiplier = 0.8, levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["GADoryaniCrabIceLaserSnap"] = {
    name = "GADoryaniCrabIceLaserSnap",
    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_area_of_effect_radius_+%_final",
        "base_skill_effect_duration",
        "ground_ice_art_variation",
        "is_area_damage",
        "action_attack_or_cast_time_uses_animation_length",
    },
    levels = {
        [1] = {0.5, 1.5, 0, 4000, 1007, critChance = 6, levelRequirement = 1, statInterpolation = {3, 3},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["EASDoryaniCrabExplode"] = {
    name = "EASDoryaniCrabExplode",
    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",
        "action_do_not_face_target",
        "skill_does_not_pathfind",
    },
    levels = {
        [1] = {levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["EASDoryaniCrabLightningCage"] = {
    name = "EASDoryaniCrabLightningCage",
    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",
        "action_do_not_face_target",
        "skill_does_not_pathfind",
    },
    levels = {
        [1] = {levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["EASDoryaniCrabPlatformAttach"] = {
    name = "EASDoryaniCrabPlatformAttach",
    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["EASDoryaniCrabPlatformDetach"] = {
    name = "EASDoryaniCrabPlatformDetach",
    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["EAADoryaniCrabLegToss"] = {
    name = "EAADoryaniCrabLegToss",
    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",
        "action_do_not_face_target",
        "skill_does_not_pathfind",
    },
    levels = {
        [1] = {80, levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["EAADoryaniCrabComboSlam"] = {
    name = "EAADoryaniCrabComboSlam",
    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["EDADoryaniCrabClawSlam"] = {
    name = "EDADoryaniCrabClawSlam",
    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 = {
        "active_skill_base_physical_damage_%_to_convert_to_cold",
        "is_area_damage",
        "action_attack_or_cast_time_uses_animation_length",
    },
    levels = {
        [1] = {65, levelRequirement = 1, statInterpolation = {},  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
  • Vous ne pouvez pas être Repoussé(e)
    IdImmuneToKnockback
    FamilyImmuneToKnockback
    DomainsMonster (3)
    GenerationTypeUnique (3)
    Req. level1
    Stats
  • cannot be knocked back Min: 1 Max: 1 Global
  • Triomphe de Doryani
    100% d'Augmentation des chances d'Électrocuter
    active skill ignite effect +% final [33]
    monster dropped item rarity +% [14700]
    monster slain experience +% [0]
    unique monster guarantee one rare [1]
    Vous ne pouvez pas être Repoussé(e)
    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]
    Doryani's Triumph
    SpectreN
    AreaLa Citadelle de pierre
    Tagsconstruct, MonsterBlunt_onhit_audio, mud_blood, not_dex, not_int, slow_movement
    Vie
    360%
    Armure
    +100%
    Résistance
    30 0 30 0
    Damage
    450%
    Précision
    100%
    Touches critiques Chance
    5%
    Bonus de Dégâts critiques
    +30%
    Attack Distance
    7 ~ 41
    Temps d'attaque
    1.005 Second
    Damage Spread
    ±20%
    Expérience
    300%
    Model Size
    100%
    Type
    DoryaniMechMap
    Metadata
    DoryaniMechMap
    Niveau
    80
    Vie
    56,192
    Armure
    9,606
    Score d'Évasion
    644
    Damage
    1,502
    Dégâts des sorts
    1,502
    Précision
    3,204
    Temps d'attaque
    1.005
    Expérience
    300,000
    Minion Life
    35,543
    Minion Damage
    4,031
    Minion Armour
    19,212
    MeleeAtAnimationSpeedUnique
    Attack, RangedAttack, MirageArcherCanUse, Projectile, MeleeSingleTarget, Melee, ProjectilesFromUser
    Attaque de base
    Base Damage: 1202–1802
    Chances de Touche critique: 5%
    Temps d'attaque: 1.005 sec.
    action attack or cast time uses animation length [1]
    monster penalty against minions damage +% final vs player minions [100]
    projectile uses contact position [1]
    skill can fire wand projectiles [1]
    use scaled contact offset [1]
    GADoryaniCrabBodySlam
    Triggerable, Attack
    Base Damage: 1202–1802
    Chances de Touche critique: 5%
    Dégâts d'Attaque: 200%
    Temps d'attaque: 1.005 sec.
    Temps de recharge: 35 sec.
    100% Davantage de Dégâts d'Attaque
    action attack or cast time uses animation length [1]
    is area damage [1]
    voll slam damage +% final at centre [40]
    EDADoryaniCrabClawSlam
    Triggerable, Attack
    Base Damage: 1202–1802
    Chances de Touche critique: 5%
    Temps d'attaque: 1.005 sec.
    Temps de recharge: 20 sec.
    Convertit 65% des Dégâts Physiques en Dégâts de Froid
    action attack or cast time uses animation length [1]
    is area damage [1]
    GSDoryaniCrabBrazierSlam
    Triggerable, Spell, Damage
    Chances de Touche critique: 5%
    Temps d'incantation: 1 sec.
    Temps de recharge: 15 sec.
    100% d'Augmentation des chances d'Embrasement
    Inflige 1089 à 1634 Dégâts de Feu
    action attack or cast time uses animation length [1]
    is area damage [1]
    voll slam damage +% final at centre [40]
    GSDoryaniCrabDiscoLazer
    Triggerable, Spell, Damage
    Chances de Touche critique: 6%
    Temps d'incantation: 1 sec.
    Temps de recharge: 35 sec.
    Inflige 68.08 à 204.2 Dégâts de Foudre
    action attack or cast time uses animation length [1]
    action do not face target [1]
    is area damage [1]
    skill does not pathfind [1]
    GSDoryaniCrabFlamethrower
    Triggerable, Spell, Damage
    Chances de Touche critique: 5%
    Temps d'incantation: 1 sec.
    Temps de recharge: 35 sec.
    50% d'Augmentation des chances d'Embrasement
    Inflige 196.1 à 294.1 Dégâts de Feu
    action attack or cast time uses animation length [1]
    action do not face target [1]
    base skill can be avoided by dodge roll [1]
    base skill can be blocked [1]
    base skill cannot be parried [1]
    is area damage [1]
    skill does not pathfind [1]
    GSDoryaniCrabFlamethrower90Right
    Triggerable, Spell, Damage
    Chances de Touche critique: 5%
    Temps d'incantation: 1 sec.
    Temps de recharge: 35 sec.
    50% d'Augmentation des chances d'Embrasement
    Inflige à Dégâts de Feu
    action attack or cast time uses animation length [1]
    action do not face target [1]
    base skill can be avoided by dodge roll [1]
    base skill can be blocked [1]
    base skill cannot be parried [1]
    is area damage [1]
    skill does not pathfind [1]
    GSDoryaniCrabFlamethrowerCorrupt
    Triggerable, Spell, Damage
    Chances de Touche critique: 5%
    Temps d'incantation: 1 sec.
    Temps de recharge: 35 sec.
    50% d'Augmentation des chances d'Embrasement
    Inflige 136.2 à 408.5 Dégâts de Foudre
    Les Aptitudes modifiées ont 300% d'Augmentation des chances d'Électrocuter
    action attack or cast time uses animation length [1]
    action do not face target [1]
    active skill base lightning damage % to convert to fire [20]
    base skill can be avoided by dodge roll [1]
    base skill can be blocked [1]
    base skill cannot be parried [1]
    is area damage [1]
    skill does not pathfind [1]
    GSDoryaniCrabFrostLaser
    Triggerable, Spell, Damage
    Chances de Touche critique: 7%
    Temps d'incantation: 1 sec.
    Temps de recharge: 40 sec.
    Inflige 108.9 à 163.4 Dégâts de Froid
    Intensité de la Frigorification augmentée de 350 %
    action attack or cast time uses animation length [1]
    action do not face target [1]
    active skill area of effect radius +% final [0]
    base skill can be avoided by dodge roll [1]
    base skill can be blocked [1]
    base skill effect duration [7000]
    ground ice art variation [1007]
    is area damage [1]
    skill does not pathfind [1]
    GSDoryaniCrabFrostLaser90Left
    Triggerable, Spell, Damage
    Chances de Touche critique: 7%
    Temps d'incantation: 1 sec.
    Temps de recharge: 40 sec.
    Inflige à Dégâts de Froid
    Intensité de la Frigorification augmentée de 350 %
    action attack or cast time uses animation length [1]
    action do not face target [1]
    active skill area of effect radius +% final [0]
    base skill can be avoided by dodge roll [1]
    base skill can be blocked [1]
    base skill effect duration [7000]
    ground ice art variation [1007]
    is area damage [1]
    skill does not pathfind [1]
    GSDoryaniCrabFrostLaserCorrupt
    Triggerable, Spell, Damage
    Chances de Touche critique: 7%
    Temps d'incantation: 1 sec.
    Temps de recharge: 40 sec.
    Inflige 108.9 à 163.4 Dégâts de Froid
    Intensité de la Frigorification augmentée de 350 %
    action attack or cast time uses animation length [1]
    action do not face target [1]
    active skill area of effect radius +% final [0]
    base skill can be avoided by dodge roll [1]
    base skill can be blocked [1]
    base skill effect duration [7000]
    ground ice art variation [1007]
    is area damage [1]
    skill does not pathfind [1]
    EAADoryaniCrabLegToss
    Temps de recharge: 27.5 sec.
    action attack or cast time uses animation length [1]
    action do not face target [1]
    attack maximum action distance + [80]
    skill does not pathfind [1]
    MASDoryaniCrabSweep180
    Attack, RangedAttack, MirageArcherCanUse, Projectile, MeleeSingleTarget, Melee, ProjectilesFromUser
    Attaque de base
    Base Damage: 1202–1802
    Chances de Touche critique: 5%
    Dégâts d'Attaque: 130%
    Temps d'attaque: 1.005 sec.
    Temps de recharge: 15 sec.
    30% Davantage de Dégâts d'Attaque
    Convertit 30% des Dégâts Physiques en Dégâts de Froid
    action attack or cast time uses animation length [1]
    action do not face target [1]
    attack maximum action distance + [33]
    projectile uses contact position [1]
    skill can fire wand projectiles [1]
    skill does not pathfind [1]
    use scaled contact offset [1]
    EASDoryaniCrabLightningCage
    Temps de recharge: 45 sec.
    action attack or cast time uses animation length [1]
    action do not face target [1]
    skill does not pathfind [1]
    EAADoryaniCrabComboSlam
    Temps de recharge: 32.5 sec.
    action attack or cast time uses animation length [1]
    EASDoryaniCrabExplode
    Temps de recharge: 40 sec.
    action attack or cast time uses animation length [1]
    action do not face target [1]
    skill does not pathfind [1]
    EASDoryaniCrabPlatformAttach
    action attack or cast time uses animation length [1]
    EASDoryaniCrabPlatformDetach
    Temps de recharge: 50 sec.
    action attack or cast time uses animation length [1]
    MPADoryaniCrabLegToss
    Attack, RangedAttack, MirageArcherCanUse, Projectile, ProjectilesFromUser, Damage, Triggerable
    Base Damage: 1202–1802
    Chances de Touche critique: 5%
    Temps d'attaque: 1.005 sec.
    action attack or cast time uses animation length [1]
    base deal no damage [1]
    base is projectile [1]
    monster projectile variation [1136]
    projectile ballistic angle from target distance [1]
    projectile uses contact position [1]
    GSDoryaniCrabLegProjImpact
    Triggerable, Spell, Damage
    Chances de Touche critique: 6%
    Temps d'incantation: 1 sec.
    Inflige 885 à 2655 Dégâts de Foudre
    Les Aptitudes modifiées ont 100% d'Augmentation des chances d'Électrocuter
    action attack or cast time uses animation length [1]
    base is projectile [1]
    is area damage [1]
    spell maximum action distance +% [100]
    GADoryaniCrabLegProjImpactWall
    Triggerable, Attack
    Base Damage: 1202–1802
    Chances de Touche critique: 5%
    Temps d'attaque: 1.005 sec.
    action attack or cast time uses animation length [1]
    is area damage [1]
    GADoryaniCrabExplode
    Triggerable, Spell, Damage
    Chances de Touche critique: 6%
    Temps d'incantation: 1 sec.
    Inflige 340.4 à 1021 Dégâts de Foudre
    Les Aptitudes modifiées ont 500% d'Augmentation des chances d'Électrocuter
    action attack or cast time uses animation length [1]
    is area damage [1]
    voll slam damage +% final at centre [20]
    GADoryaniCrabExplodeSmash
    Triggerable, Attack
    Base Damage: 1202–1802
    Chances de Touche critique: 5%
    Dégâts d'Attaque: 300%
    Temps d'attaque: 1.005 sec.
    200% Davantage de Dégâts d'Attaque
    action attack or cast time uses animation length [1]
    is area damage [1]
    voll slam damage +% final at centre [40]
    MPSDoryaniCrabLightningCage
    Spell, Projectile, ProjectilesFromUser, Triggerable, Damage
    Chances de Touche critique: 6%
    Temps d'incantation: 1 sec.
    Inflige 408.5 à 1225 Dégâts de Foudre
    Les Aptitudes modifiées ont 60% d'Augmentation des chances d'Électrocuter
    Tire Projectiles supplémentaires
    active skill projectile speed +% variation final [20]
    base is projectile [1]
    monster projectile variation [1138]
    projectile spread radius [40]
    GADoryaniCrabComboSlamBasic
    Triggerable, Attack
    Base Damage: 1202–1802
    Chances de Touche critique: 5%
    Dégâts d'Attaque: 80%
    Temps d'attaque: 1.005 sec.
    20% de Perte de Dégâts d'Attaque
    action attack or cast time uses animation length [1]
    is area damage [1]
    GADoryaniCrabSlamCold
    Triggerable, Attack
    Base Damage: 1202–1802
    Chances de Touche critique: 5%
    Dégâts d'Attaque: 185%
    Temps d'attaque: 1.005 sec.
    85% Davantage de Dégâts d'Attaque
    Convertit 70% des Dégâts Physiques en Dégâts de Froid
    action attack or cast time uses animation length [1]
    active skill area of effect radius +% final [0]
    base skill effect duration [4000]
    ground ice art variation [1007]
    is area damage [1]
    voll slam damage +% final at centre [50]
    GADoryaniCrabSlamFire
    Triggerable, Attack
    Base Damage: 1202–1802
    Chances de Touche critique: 5%
    Dégâts d'Attaque: 185%
    Temps d'attaque: 1.005 sec.
    85% Davantage de Dégâts d'Attaque
    Convertit 70% des Dégâts Physiques en Dégâts de Feu
    action attack or cast time uses animation length [1]
    is area damage [1]
    voll slam damage +% final at centre [50]
    GADoryaniCrabIceLaserSnap
    Triggerable, Spell, Damage
    Chances de Touche critique: 6%
    Temps d'incantation: 1 sec.
    Inflige 816.9 à 2451 Dégâts de Foudre
    action attack or cast time uses animation length [1]
    active skill area of effect radius +% final [0]
    base skill effect duration [4000]
    ground ice art variation [1007]
    is area damage [1]

    Object Type

    version 2
    extends "Metadata/Monsters/Monster"
    extends "Metadata/Monsters/BossBase"
    
    /* ------------------------------------------------------------------------------------------------------------------- */
    /* Generic */
    /* ------------------------------------------------------------------------------------------------------------------- */
    
    StateMachine
    {
    	define_shared_state =
    	"
    		enabled;
    		no_collision;
    	"
    
    	on_or_create_state_no_collision_1 = { RemoveCollidability(); }
    	on_state_no_collision_0 = { MakeCollidable(); }
    }
    
    /* ------------------------------------------------------------------------------------------------------------------- */
    /* Movement/Rotation */
    /* ------------------------------------------------------------------------------------------------------------------- */
    
    StateMachine
    {
    	define_shared_state = "lock_on;"
    	on_state_lock_on_0 = { SetUsesDirectionalRunAnimations( false ); }
    	on_state_lock_on_1 = { SetUsesDirectionalRunAnimations( true ); }
    }
    
    Animated
    {
    	// need this to enable the turn anims
    	always_interpolate_bearing = true
    }
    
    Functions
    {
    	fix_orientation =
    	"
    		AddOnActionEnd(
    		{
    			SetOrientation( GetOrientation() + arg1, false, true );
    			PlayAnimationType( Idle, 1.0, 0, 0 );
    		}, true );
    	"
    }
    
    /* ------------------------------------------------------------------------------------------------------------------- */
    /* Lightning Cage */
    /* ------------------------------------------------------------------------------------------------------------------- */
    
    StateMachine
    {
    	define_shared_state = "pylons_active;"
    }
    
    /* ------------------------------------------------------------------------------------------------------------------- */
    /* Ice Laser/Corrupt Ice Laser */
    /* ------------------------------------------------------------------------------------------------------------------- */
    
    StateMachine
    {
    	define_shared_state =
    	"
    		ice_laser;
    		ice_laser_90;
    		corr_ice_laser;
    	"
    }
    
    /* ------------------------------------------------------------------------------------------------------------------- */
    /* Detach Hovercraft */
    /* ------------------------------------------------------------------------------------------------------------------- */
    
    StateMachine
    {
    	define_shared_state = "hover_crafting;"
    }
    
    /* ------------------------------------------------------------------------------------------------------------------- */
    /* Re-attach Hovercraft */
    /* ------------------------------------------------------------------------------------------------------------------- */
    
    Actor
    {
    	leveled_starting_effects = "DoLiterallyNothing"
    
    	on_effect_start_EASDoryaniCrabPlatformAttach = { ForceSkillIntoCooldown( EASDoryaniCrabPlatformDetach ); }
    }
    
    /* ------------------------------------------------------------------------------------------------------------------- */
    /* Self Destruct */
    /* ------------------------------------------------------------------------------------------------------------------- */
    
    Functions
    {
    	no_face = { SetMovementFaceMode( DontFace ); }
    	do_face = { SetMovementFaceMode( FaceDirection ); }
    }
    
    Stats
    {
    	set_monster_delay_item_drops_millis = 9000
    	monster_hide_minimap_icon = 1
    }

    Object Type Codes

    version 2
    extends "Metadata/Monsters/Monster"
    extends "Metadata/Monsters/BossBase"
    
    /* ------------------------------------------------------------------------------------------------------------------- */
    /* Generic */
    /* ------------------------------------------------------------------------------------------------------------------- */
    
    Render
    {
    	use_ao_lights = true
    }
    
    StateMachine
    {
    	on_or_create_state_enabled_0 =
    	{
    		RemoveCollidability();
    		DisableTargetable();
    	}
    
    	on_state_enabled_1 =
    	{
    		SetCustomCameraSpeed( 0.65 );
    		CreateCameraZoomNode( 9, 9, 1.5 );
    	}
    
    	on_or_create_state_enabled_2 =
    	{
    		StartStateTimer( check_bearing );
    		MakeCollidable();
    		EnableTargetable();
    		SetCustomCameraSpeed( 1.0 );
    		ClearCameraZoomNodes();
    	}
    }
    
    Positioned
    {
    	on_movement_started =
    	{
    		If( GetState( current_rotate_dir ) > 0, (){ SetStateTo( current_rotate_dir, 0 ); } );
    	}
    }
    
    BaseEvents
    {
    	// modify this to change how the turn speed is scaled as the turn distance increases
    	set_turn_speed_mult = 60
    }
    
    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 or 11 for left/right turns
    	// 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
    	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( Or( And( angle_diff <= 1.0, angle_diff >= -1.0 ), GetCurrentMoveSpeed() > 1.0 ), (){ SetStateTo( current_rotate_dir, 0 ); } );
    		If( And( angle_diff > 1.0, GetCurrentMoveSpeed() < 1.0 ), (){ SetStateTo( current_rotate_dir, 1 ); } );
    		If( And( angle_diff < -1.0, GetCurrentMoveSpeed() < 1.0 ), (){ SetStateTo( current_rotate_dir, 2 ); } );
    		// Speed up the additive turn anims as the turn speed increases
    		local angle_diff_clamped = Clamp( angle_diff, -100, 100 );
    		local scaling_factor = Eval( Abs( angle_diff_clamped ) / turn_speed_mult );
    		local layer_speed = Clamp( scaling_factor, 1.0, 10.0 );
    		// Log( 'Angle Diff: {angle_diff} | Layer Speed: {layer_speed}', c );
    		If( Abs( angle_diff_clamped ) < 15, ()
    		{
    			layer_speed = layer_speed * Eval( Abs( angle_diff_clamped ) / 15 );
    		} );
    		SetLayerAnimationSpeed( 9, layer_speed );
    		SetLayerAnimationSpeed( 10, layer_speed );
    		StartStateTimer( check_bearing );
    	}
    
    	// if current_rotate_dir is 0, it means the monster isn't turning so fade out the additive turns
    	on_state_current_rotate_dir_0 =
    	{
    		FadeAnimations( 9, 0.2 );
    		FadeAnimations( 10, 0.2 );
    	}
    
    	// play a different additive turn anim for different turn directions and velocity
    	on_state_current_rotate_dir_1 =
    	{
    		FadeAnimations( 10, 0.2 );
    		PlayAdditiveAnimation( turn_01_right, 9 );
    	}
    
    	on_state_current_rotate_dir_2 =
    	{
    		FadeAnimations( 9, 0.2 );
    		PlayAdditiveAnimation( turn_01_left, 10 );
    	}
    }
    
    /* ------------------------------------------------------------------------------------------------------------------- */
    /* All the attachment ruckus */
    /* ------------------------------------------------------------------------------------------------------------------- */
    
    BaseEvents
    {
    	on_construction_complete =
    	{
    		this.hover_craft = GetAttachedAOByType( 'Metadata/Monsters/DoryaniMechSuit/Hovercraft.ao' );
    		this.l_arm_front = GetAttachedAOByType( 'Metadata/Monsters/DoryaniMechSuit/attachments/HovercraftLArmFront.ao' );
    		this.r_arm_front = GetAttachedAOByType( 'Metadata/Monsters/DoryaniMechSuit/attachments/HovercraftRArmFront.ao' );
    		this.l_arm_back = GetAttachedAOByType( 'Metadata/Monsters/DoryaniMechSuit/attachments/HovercraftLArmBack.ao' );
    		this.r_arm_back = GetAttachedAOByType( 'Metadata/Monsters/DoryaniMechSuit/attachments/HovercraftRArmBack.ao' );
    		// coils need to be attached here so I can have a reference to each one
    		this.coil_1 = hover_craft.AddAttached( 'Metadata/Monsters/DoryaniMechSuit/attachments/HovercraftCoil.ao', R_coil_jntBnd_1 );
    		this.coil_2 = hover_craft.AddAttached( 'Metadata/Monsters/DoryaniMechSuit/attachments/HovercraftCoil.ao', R_coil_jntBnd_2 );
    		this.coil_3 = hover_craft.AddAttached( 'Metadata/Monsters/DoryaniMechSuit/attachments/HovercraftCoil.ao', R_coil_jntBnd_3 );
    		this.coil_4 = hover_craft.AddAttached( 'Metadata/Monsters/DoryaniMechSuit/attachments/HovercraftCoil.ao', L_coil_jntBnd_1 );
    		this.coil_5 = hover_craft.AddAttached( 'Metadata/Monsters/DoryaniMechSuit/attachments/HovercraftCoil.ao', L_coil_jntBnd_2 );
    		this.coil_6 = hover_craft.AddAttached( 'Metadata/Monsters/DoryaniMechSuit/attachments/HovercraftCoil.ao', L_coil_jntBnd_3 );
    	}
    }
    
    Functions
    {
    	detach_hover_craft =
    	{
    		If( IsAlive(), ()
    		{
    			this.doryani_boss.hover_craft = doryani_boss.AddAttached( 'Metadata/Monsters/DoryaniMechSuit/Hovercraft.ao', ground );
    			this.doryani_boss.l_arm_front = doryani_boss.AddAttached( 'Metadata/Monsters/DoryaniMechSuit/attachments/HovercraftLArmFront.ao', ground );
    			this.doryani_boss.r_arm_front = doryani_boss.AddAttached( 'Metadata/Monsters/DoryaniMechSuit/attachments/HovercraftRArmFront.ao', ground );
    			this.doryani_boss.l_arm_back = doryani_boss.AddAttached( 'Metadata/Monsters/DoryaniMechSuit/attachments/HovercraftLArmBack.ao', ground );
    			this.doryani_boss.r_arm_back = doryani_boss.AddAttached( 'Metadata/Monsters/DoryaniMechSuit/attachments/HovercraftRArmBack.ao', ground );
    			doryani_boss.coil_1 = doryani_boss.hover_craft.AddAttached( 'Metadata/Monsters/DoryaniMechSuit/attachments/HovercraftCoil.ao', R_coil_jntBnd_1 );
    			doryani_boss.coil_2 = doryani_boss.hover_craft.AddAttached( 'Metadata/Monsters/DoryaniMechSuit/attachments/HovercraftCoil.ao', R_coil_jntBnd_2 );
    			doryani_boss.coil_3 = doryani_boss.hover_craft.AddAttached( 'Metadata/Monsters/DoryaniMechSuit/attachments/HovercraftCoil.ao', R_coil_jntBnd_3 );
    			doryani_boss.coil_4 = doryani_boss.hover_craft.AddAttached( 'Metadata/Monsters/DoryaniMechSuit/attachments/HovercraftCoil.ao', L_coil_jntBnd_1 );
    			doryani_boss.coil_5 = doryani_boss.hover_craft.AddAttached( 'Metadata/Monsters/DoryaniMechSuit/attachments/HovercraftCoil.ao', L_coil_jntBnd_2 );
    			doryani_boss.coil_6 = doryani_boss.hover_craft.AddAttached( 'Metadata/Monsters/DoryaniMechSuit/attachments/HovercraftCoil.ao', L_coil_jntBnd_3 );
    			doryani_boss.PlayAnimationAttached( 'Metadata/Monsters/DoryaniMechSuit/Hovercraft.ao', floating_idle_01 );
    			doryani_boss.PlayAnimationAttached( 'Metadata/Monsters/DoryaniMechSuit/attachments/HovercraftLArmBack.ao', floating_idle_01 );
    			doryani_boss.PlayAnimationAttached( 'Metadata/Monsters/DoryaniMechSuit/attachments/HovercraftRArmBack.ao', floating_idle_01 );
    			doryani_boss.PlayAnimationAttached( 'Metadata/Monsters/DoryaniMechSuit/attachments/HovercraftLArmFront.ao', floating_idle_01 );
    			doryani_boss.PlayAnimationAttached( 'Metadata/Monsters/DoryaniMechSuit/attachments/HovercraftRArmFront.ao', floating_idle_01 );
    			// without the delay here, the particles of the thruster epk don't show up
    			Delay( 0.5, { doryani_boss.AddEffectPackAttached( 'Metadata/Effects/Spells/monsters_effects/Act3_FOUR/Doryani/epk/hovercraft_thrusters.epk', 'Metadata/Monsters/DoryaniMechSuit/Hovercraft.ao' ); } );
    		} );
    		DetachAO( hover_craft );
    		DetachAO( l_arm_front );
    		DetachAO( r_arm_front );
    		DetachAO( l_arm_back );
    		DetachAO( r_arm_back );
    	}
    
    	attach_hover_craft =
    	{
    		this.hover_craft = AddAttached( 'Metadata/Monsters/DoryaniMechSuit/Hovercraft.ao',  );
    		this.l_arm_front = AddAttached( 'Metadata/Monsters/DoryaniMechSuit/attachments/HovercraftLArmFront.ao',  );
    		this.r_arm_front = AddAttached( 'Metadata/Monsters/DoryaniMechSuit/attachments/HovercraftRArmFront.ao',  );
    		this.l_arm_back = AddAttached( 'Metadata/Monsters/DoryaniMechSuit/attachments/HovercraftLArmBack.ao',  );
    		this.r_arm_back = AddAttached( 'Metadata/Monsters/DoryaniMechSuit/attachments/HovercraftRArmBack.ao',  );
    		// coils need to be attached here so I can have a reference to each one
    		this.coil_1 = hover_craft.AddAttached( 'Metadata/Monsters/DoryaniMechSuit/attachments/HovercraftCoil.ao', R_coil_jntBnd_1 );
    		this.coil_2 = hover_craft.AddAttached( 'Metadata/Monsters/DoryaniMechSuit/attachments/HovercraftCoil.ao', R_coil_jntBnd_2 );
    		this.coil_3 = hover_craft.AddAttached( 'Metadata/Monsters/DoryaniMechSuit/attachments/HovercraftCoil.ao', R_coil_jntBnd_3 );
    		this.coil_4 = hover_craft.AddAttached( 'Metadata/Monsters/DoryaniMechSuit/attachments/HovercraftCoil.ao', L_coil_jntBnd_1 );
    		this.coil_5 = hover_craft.AddAttached( 'Metadata/Monsters/DoryaniMechSuit/attachments/HovercraftCoil.ao', L_coil_jntBnd_2 );
    		this.coil_6 = hover_craft.AddAttached( 'Metadata/Monsters/DoryaniMechSuit/attachments/HovercraftCoil.ao', L_coil_jntBnd_3 );
    		PlayAnimationAttached( 'Metadata/Monsters/DoryaniMechSuit/Hovercraft.ao', attach_platform_01 );
    		PlayAnimationAttached( 'Metadata/Monsters/DoryaniMechSuit/attachments/HovercraftLArmBack.ao', attach_platform_01 );
    		PlayAnimationAttached( 'Metadata/Monsters/DoryaniMechSuit/attachments/HovercraftRArmBack.ao', attach_platform_01 );
    		PlayAnimationAttached( 'Metadata/Monsters/DoryaniMechSuit/attachments/HovercraftLArmFront.ao', attach_platform_01 );
    		PlayAnimationAttached( 'Metadata/Monsters/DoryaniMechSuit/attachments/HovercraftRArmFront.ao', attach_platform_01 );
    		/* PlayAnimationAttached( 'Metadata/Monsters/Doryani/TrueDoryani/TrueDoryani.ao', mech_attach_platform_01 ); */
    		doryani_boss.DetachAO( hover_craft );
    		doryani_boss.DetachAO( l_arm_front );
    		doryani_boss.DetachAO( r_arm_front );
    		doryani_boss.DetachAO( l_arm_back );
    		doryani_boss.DetachAO( r_arm_back );
    		
    	}
    }
    
    StateMachine
    {
    	create_state_hover_crafting_1 =
    	{
    		Delay( 0.0, { Call( detach_hover_craft ); } );
    	}
    }
    
    /* ------------------------------------------------------------------------------------------------------------------- */
    /* Preload */
    /* ------------------------------------------------------------------------------------------------------------------- */
    
    Preload 
    {
    	preload_epk = "Metadata/Effects/Spells/monsters_effects/Act3_FOUR/Doryani/epk/hovercraft_thrusters.epk"
    	preload_monster_variety = "Metadata/Monsters/DoryaniMechSuit/DoryaniMechRailGun"
    	preload_object = "Metadata/Monsters/DoryaniMechSuit/DoryaniMechZapTarget"
    }
    
    /* ------------------------------------------------------------------------------------------------------------------- */
    /* Lightning Cage */
    /* ------------------------------------------------------------------------------------------------------------------- */
    
    StateMachine
    {
    	on_state_pylons_active_1 =
    	{
    		Delay( Random( 0.1, 0.5 ),
    		{
    			coil_1.Do( ()
    			{
    				PlayAnimation( activate_01 );
    				QueueAnimation( idle_active_01 );
    			} );
    		} );
    		Delay( Random( 0.1, 0.5 ),
    		{
    			coil_2.Do( ()
    			{
    				PlayAnimation( activate_01 );
    				QueueAnimation( idle_active_01 );
    			} );
    		} );
    		Delay( Random( 0.1, 0.5 ),
    		{
    			coil_3.Do( ()
    			{
    				PlayAnimation( activate_01 );
    				QueueAnimation( idle_active_01 );
    			} );
    		} );
    		Delay( Random( 0.1, 0.5 ),
    		{
    			coil_4.Do( ()
    			{
    				PlayAnimation( activate_01 );
    				QueueAnimation( idle_active_01 );
    			} );
    		} );
    		Delay( Random( 0.1, 0.5 ),
    		{
    			coil_5.Do( ()
    			{
    				PlayAnimation( activate_01 );
    				QueueAnimation( idle_active_01 );
    			} );
    		} );
    		Delay( Random( 0.1, 0.5 ),
    		{
    			coil_6.Do( ()
    			{
    				PlayAnimation( activate_01 );
    				QueueAnimation( idle_active_01 );
    			} );
    		} );
    		Delay( 0.5,
    		{
    			this.lightning_ring = AddAttached( 'Metadata/Effects/Spells/monsters_effects/Act3_FOUR/Doryani/lightning_cage.ao', root_jntBnd );
    		} );
    	}
    
    	create_state_pylons_active_1 =
    	{
    		coil_1.QueueAnimation( idle_active_01 );
    		coil_2.QueueAnimation( idle_active_01 );
    		coil_3.QueueAnimation( idle_active_01 );
    		coil_4.QueueAnimation( idle_active_01 );
    		coil_5.QueueAnimation( idle_active_01 );
    		coil_6.QueueAnimation( idle_active_01 );
    		this.lightning_ring = AddAttached( 'Metadata/Effects/Spells/monsters_effects/Act3_FOUR/Doryani/lightning_cage.ao', root_jntBnd );
    	}
    
    	on_state_pylons_active_0 =
    	{
    		Delay( Random( 0.1, 0.5 ),
    		{
    			coil_1.Do( ()
    			{
    				PlayAnimation( deactivate_01 );
    				QueueAnimation( idle_deactive_01 );
    			} );
    		} );
    		Delay( Random( 0.1, 0.5 ),
    		{
    			coil_2.Do( ()
    			{
    				PlayAnimation( deactivate_01 );
    				QueueAnimation( idle_deactive_01 );
    			} );
    		} );
    		Delay( Random( 0.1, 0.5 ),
    		{
    			coil_3.Do( ()
    			{
    				PlayAnimation( deactivate_01 );
    				QueueAnimation( idle_deactive_01 );
    			} );
    		} );
    		Delay( Random( 0.1, 0.5 ),
    		{
    			coil_4.Do( ()
    			{
    				PlayAnimation( deactivate_01 );
    				QueueAnimation( idle_deactive_01 );
    			} );
    		} );
    		Delay( Random( 0.1, 0.5 ),
    		{
    			coil_5.Do( ()
    			{
    				PlayAnimation( deactivate_01 );
    				QueueAnimation( idle_deactive_01 );
    			} );
    		} );
    		Delay( Random( 0.1, 0.5 ),
    		{
    			coil_6.Do( ()
    			{
    				PlayAnimation( deactivate_01 );
    				QueueAnimation( idle_deactive_01 );
    			} );
    		} );
    		lightning_ring.PlayAnimation( end );
    		Delay( 1.0, { DetachAO( lightning_ring ); } );
    	}
    }
    
    /* ------------------------------------------------------------------------------------------------------------------- */
    /* Ice Laser/Corrupt Ice Laser */
    /* ------------------------------------------------------------------------------------------------------------------- */
    
    StateMachine
    {
    	on_state_ice_laser_0 = { ice_laser.PlayAnimation( end ); }
    
    	on_state_ice_laser_1 =
    	{
    		this.ice_laser = AddAttached( 'Metadata/Effects/Spells/monsters_effects/Act3_FOUR/Doryani/coldbeam.ao', ice_laser_attachment );
    		ice_laser.PlayAnimation( start );
    		ice_laser.QueueAnimation( loop );
    	}
    
    	create_state_ice_laser_1 =
    	{
    		this.ice_laser = AddAttached( 'Metadata/Effects/Spells/monsters_effects/Act3_FOUR/Doryani/coldbeam.ao', ice_laser_attachment );
    		ice_laser.PlayAnimation( loop );
    	}
    
    	on_state_ice_laser_90_0 = { ice_laser.PlayAnimation( end ); }
    
    	on_state_ice_laser_90_1 =
    	{
    		this.ice_laser = AddAttached( 'Metadata/Effects/Spells/monsters_effects/Act3_FOUR/Doryani/coldbeam.ao', ice_laser90_attachment );
    		ice_laser.PlayAnimation( start );
    		ice_laser.QueueAnimation( loop );
    	}
    
    	create_state_ice_laser_90_1 =
    	{
    		this.ice_laser = AddAttached( 'Metadata/Effects/Spells/monsters_effects/Act3_FOUR/Doryani/coldbeam.ao', ice_laser90_attachment );
    		ice_laser.PlayAnimation( loop );
    	}
    
    	on_state_corr_ice_laser_0 = { DetachAllOfType( 'Metadata/Effects/Spells/monsters_effects/Act3_FOUR/Doryani/coldbeam_corr.ao' ); }
    
    	on_state_corr_ice_laser_1 =
    	{
    		this.corr_ice_laser = AddAttached( 'Metadata/Effects/Spells/monsters_effects/Act3_FOUR/Doryani/coldbeam_corr.ao', ice_laser_attachment );
    		corr_ice_laser.PlayAnimation( start );
    		corr_ice_laser.QueueAnimation( loop );
    	}
    
    	create_state_corr_ice_laser_1 =
    	{
    		this.corr_ice_laser = AddAttached( 'Metadata/Effects/Spells/monsters_effects/Act3_FOUR/Doryani/coldbeam_corr.ao', ice_laser_attachment );
    		corr_ice_laser.PlayAnimation( loop );
    	}
    
    	on_state_corr_ice_laser_2 = { corr_ice_laser.PlayAnimation( swell ); }
    
    	create_state_corr_ice_laser_2 =
    	{
    		this.corr_ice_laser = AddAttached( 'Metadata/Effects/Spells/monsters_effects/Act3_FOUR/Doryani/coldbeam_corr.ao', ice_laser_attachment );
    		corr_ice_laser.PlayAnimation( swell );
    	}
    }
    
    /* ------------------------------------------------------------------------------------------------------------------- */
    /* Combat Dialogue */
    /* ------------------------------------------------------------------------------------------------------------------- */
    
    Actor
    {
    	on_effect_start_GSDoryaniCrabFrostLaser90Left =
    	"
    		Roll( 1, 1, ()
    		{
    			globals.doryanis_voicebox.PlayTextAudio( DoryaniPastBoss_MechClawLaser_Random, 'Metadata/Monsters/Doryani/DoryaniInThePast/DoryaniPast' );
    		} );
    	"
    
    	on_effect_start_GSDoryaniCrabFrostLaser =
    	"
    		Roll( 1, 1, ()
    		{
    			globals.doryanis_voicebox.PlayTextAudio( DoryaniPastBoss_MechClawLaser_Random, 'Metadata/Monsters/Doryani/DoryaniInThePast/DoryaniPast' );
    		} );
    	"
    
    	on_effect_start_EDADoryaniCrabClawSlam =
    	"
    		Roll( 1, 1, ()
    		{
    			globals.doryanis_voicebox.PlayTextAudio( DoryaniPastBoss_MechSlam_Random, 'Metadata/Monsters/Doryani/DoryaniInThePast/DoryaniPast' );
    		} );
    	"
    
    	on_effect_start_GSDoryaniCrabBrazierSlam =
    	"
    		Roll( 1, 1, ()
    		{
    			globals.doryanis_voicebox.PlayTextAudio( DoryaniPastBoss_MechSlam_Random, 'Metadata/Monsters/Doryani/DoryaniInThePast/DoryaniPast' );
    		} );
    	"
    
    	on_effect_start_GADoryaniCrabBodySlam =
    	"
    		Roll( 1, 1, ()
    		{
    			globals.doryanis_voicebox.PlayTextAudio( DoryaniPastBoss_MechBodySlam_Random, 'Metadata/Monsters/Doryani/DoryaniInThePast/DoryaniPast' );
    		} );
    	"
    
    	on_effect_start_GSDoryaniCrabDiscoLazer =
    	"
    		Roll( 1, 1, ()
    		{
    			globals.doryanis_voicebox.PlayTextAudio( DoryaniPastBoss_MechDiscoLaser_Random, 'Metadata/Monsters/Doryani/DoryaniInThePast/DoryaniPast' );
    		} );
    	"
    
    	on_effect_start_GSDoryaniCrabFlamethrower =
    	"
    		Roll( 1, 1, ()
    		{
    			globals.doryanis_voicebox.PlayTextAudio( DoryaniPastBoss_MechFlamethrower_Random, 'Metadata/Monsters/Doryani/DoryaniInThePast/DoryaniPast' );
    		} );
    	"
    
    	on_effect_start_GSDoryaniCrabFlamethrower90Right =
    	"
    		Roll( 1, 1, ()
    		{
    			globals.doryanis_voicebox.PlayTextAudio( DoryaniPastBoss_MechFlamethrower_Random, 'Metadata/Monsters/Doryani/DoryaniInThePast/DoryaniPast' );
    		} );
    	"
    
    	on_effect_start_GSDoryaniCrabFlamethrowerCorrupt =
    	"
    		Roll( 1, 1, ()
    		{
    			globals.doryanis_voicebox.PlayTextAudio( DoryaniPastBoss_MechFlamethrower_Random, 'Metadata/Monsters/Doryani/DoryaniInThePast/DoryaniPast' );
    		} );
    	"
    
    	on_effect_start_EASDoryaniCrabLightningCage =
    	"
    		Roll( 1, 1, ()
    		{
    			globals.doryanis_voicebox.PlayTextAudio( DoryaniPastBoss_MechLightningStorm_Random, 'Metadata/Monsters/Doryani/DoryaniInThePast/DoryaniPast' );
    		} );
    	"
    
    	on_effect_start_EASDoryaniCrabLightningCageCorrupt =
    	"
    		Roll( 1, 1, ()
    		{
    			globals.doryanis_voicebox.PlayTextAudio( DoryaniPastBoss_MechLightningStorm_Random, 'Metadata/Monsters/Doryani/DoryaniInThePast/DoryaniPast' );
    		} );
    	"
    
    	on_effect_start_EASDoryaniCrabExplode =
    	"
    		Roll( 1, 1, ()
    		{
    			globals.doryanis_voicebox.PlayTextAudio( DoryaniPastBoss_MechSelfDestruct_Random, 'Metadata/Monsters/Doryani/DoryaniInThePast/DoryaniPast' );
    			globals.doryanis_voicebox.PlayTextAudio( DoryaniPastBoss_MechReassemble_Random, 'Metadata/Monsters/Doryani/DoryaniInThePast/DoryaniPast', 6000 );
    		} );
    	"
    
    	on_effect_start_EASDoryaniCrabPlatformDetach =
    	"
    		Roll( 1, 1, ()
    		{
    			globals.doryanis_voicebox.PlayTextAudio( DoryaniPastBoss_MechDetatchPlatform_Random, 'Metadata/Monsters/Doryani/DoryaniInThePast/DoryaniPast' );
    		} );
    	"
    
    	on_effect_start_EAADoryaniCrabLegToss =
    	"
    		Roll( 1, 1, ()
    		{
    			globals.doryanis_voicebox.PlayTextAudio( DoryaniPastBoss_MechSpiderLegAttack_Random, 'Metadata/Monsters/Doryani/DoryaniInThePast/DoryaniPast' );
    		} );
    	"
    }
    -- src\Data\Spectres.lua
    minions["Metadata/Monsters/DoryaniMechSuit/DoryaniMechMap"] = {
        name = "Doryani's Triumph",
        life = 3.6,
        fireResist = 0,
        coldResist = 0,
        lightningResist = 0,
        chaosResist = 0,
        damage = 4.5,
        damageSpread = 0.2,
        attackTime = 1.005,
        attackRange = 41,
        accuracy = 1,
        skillList = {
            "MeleeAtAnimationSpeedUnique",
            "MASDoryaniCrabSweep180",
            "MPADoryaniCrabLegToss",
            "MPSDoryaniCrabLightningCage",
            "GADoryaniCrabBodySlam",
            "GADoryaniCrabExplode",
            "GADoryaniCrabExplodeSmash",
            "GSDoryaniCrabBrazierSlam",
            "GSDoryaniCrabDiscoLazer",
            "GSDoryaniCrabFlamethrower",
            "GSDoryaniCrabFlamethrower90Right",
            "GSDoryaniCrabFlamethrowerCorrupt",
            "GSDoryaniCrabFrostLaser",
            "GSDoryaniCrabFrostLaser90Left",
            "GSDoryaniCrabFrostLaserCorrupt",
            "GSDoryaniCrabLegProjImpact",
            "GADoryaniCrabLegProjImpactWall",
            "GADoryaniCrabSlamCold",
            "GADoryaniCrabSlamFire",
            "GADoryaniCrabComboSlamBasic",
            "GADoryaniCrabIceLaserSnap",
            "EASDoryaniCrabExplode",
            "EASDoryaniCrabLightningCage",
            "EASDoryaniCrabPlatformAttach",
            "EASDoryaniCrabPlatformDetach",
            "EAADoryaniCrabLegToss",
            "EAADoryaniCrabComboSlam",
            "EDADoryaniCrabClawSlam",
        },
        modList = {
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["MeleeAtAnimationSpeedUnique"] = {
        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 = {
            "monster_penalty_against_minions_damage_+%_final_vs_player_minions",
            "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] = {100, levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["MASDoryaniCrabSweep180"] = {
        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_+",
            "active_skill_base_physical_damage_%_to_convert_to_cold",
            "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",
            "action_do_not_face_target",
            "skill_does_not_pathfind",
        },
        levels = {
            [1] = {33, 30, baseMultiplier = 1.3, levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["MPADoryaniCrabLegToss"] = {
        name = "MPADoryaniCrabLegToss",
        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",
            "base_is_projectile",
            "projectile_uses_contact_position",
            "action_attack_or_cast_time_uses_animation_length",
            "base_deal_no_damage",
            "projectile_ballistic_angle_from_target_distance",
        },
        levels = {
            [1] = {1136, levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["MPSDoryaniCrabLightningCage"] = {
        name = "MPSDoryaniCrabLightningCage",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Spell] = true,
            [SkillType.Projectile] = true,
            [SkillType.ProjectilesFromUser] = true,
            [SkillType.Triggerable] = true,
            [SkillType.Damage] = true,
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1,
        baseFlags = {
            spell = true,
            projectile = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "spell_minimum_base_lightning_damage",
            "spell_maximum_base_lightning_damage",
            "monster_projectile_variation",
            "number_of_additional_projectiles",
            "projectile_spread_radius",
            "active_skill_projectile_speed_+%_variation_final",
            "shock_chance_+%",
            "base_is_projectile",
        },
        levels = {
            [1] = {0.5, 1.5, 1138, 2, 40, 20, 60, critChance = 6, levelRequirement = 1, statInterpolation = {3, 3},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["GADoryaniCrabBodySlam"] = {
        name = "GADoryaniCrabBodySlam",
        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 = {
            "voll_slam_damage_+%_final_at_centre",
            "is_area_damage",
            "action_attack_or_cast_time_uses_animation_length",
        },
        levels = {
            [1] = {40, baseMultiplier = 2, levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["GADoryaniCrabExplode"] = {
        name = "GADoryaniCrabExplode",
        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",
            "voll_slam_damage_+%_final_at_centre",
            "shock_chance_+%",
            "is_area_damage",
            "action_attack_or_cast_time_uses_animation_length",
        },
        levels = {
            [1] = {0.5, 1.5, 20, 500, critChance = 6, levelRequirement = 1, statInterpolation = {3, 3},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["GADoryaniCrabExplodeSmash"] = {
        name = "GADoryaniCrabExplodeSmash",
        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 = {
            "voll_slam_damage_+%_final_at_centre",
            "is_area_damage",
            "action_attack_or_cast_time_uses_animation_length",
        },
        levels = {
            [1] = {40, baseMultiplier = 3, levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["GSDoryaniCrabBrazierSlam"] = {
        name = "GSDoryaniCrabBrazierSlam",
        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_fire_damage",
            "spell_maximum_base_fire_damage",
            "ignite_chance_+%",
            "voll_slam_damage_+%_final_at_centre",
            "is_area_damage",
            "action_attack_or_cast_time_uses_animation_length",
        },
        levels = {
            [1] = {0.80000001192093, 1.2000000476837, 100, 40, critChance = 5, levelRequirement = 1, statInterpolation = {3, 3},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["GSDoryaniCrabDiscoLazer"] = {
        name = "GSDoryaniCrabDiscoLazer",
        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",
            "is_area_damage",
            "action_attack_or_cast_time_uses_animation_length",
            "action_do_not_face_target",
            "skill_does_not_pathfind",
        },
        levels = {
            [1] = {0.5, 1.5, critChance = 6, levelRequirement = 1, statInterpolation = {3, 3},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["GSDoryaniCrabFlamethrower"] = {
        name = "GSDoryaniCrabFlamethrower",
        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_fire_damage",
            "spell_maximum_base_fire_damage",
            "ignite_chance_+%",
            "is_area_damage",
            "action_attack_or_cast_time_uses_animation_length",
            "action_do_not_face_target",
            "skill_does_not_pathfind",
            "base_skill_can_be_avoided_by_dodge_roll",
            "base_skill_can_be_blocked",
            "base_skill_cannot_be_parried",
        },
        levels = {
            [1] = {0.80000001192093, 1.2000000476837, 50, critChance = 5, levelRequirement = 1, statInterpolation = {3, 3},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["GSDoryaniCrabFlamethrower90Right"] = {
        name = "GSDoryaniCrabFlamethrower90Right",
        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_fire_damage",
            "spell_maximum_base_fire_damage",
            "ignite_chance_+%",
            "is_area_damage",
            "action_attack_or_cast_time_uses_animation_length",
            "action_do_not_face_target",
            "skill_does_not_pathfind",
            "base_skill_can_be_avoided_by_dodge_roll",
            "base_skill_can_be_blocked",
            "base_skill_cannot_be_parried",
        },
        levels = {
            [1] = {0.80000001192093, 1.2000000476837, 50, critChance = 5, levelRequirement = 1, statInterpolation = {3, 3},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["GSDoryaniCrabFlamethrowerCorrupt"] = {
        name = "GSDoryaniCrabFlamethrowerCorrupt",
        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",
            "shock_chance_+%",
            "active_skill_base_lightning_damage_%_to_convert_to_fire",
            "ignite_chance_+%",
            "is_area_damage",
            "action_attack_or_cast_time_uses_animation_length",
            "action_do_not_face_target",
            "skill_does_not_pathfind",
            "base_skill_can_be_avoided_by_dodge_roll",
            "base_skill_can_be_blocked",
            "base_skill_cannot_be_parried",
        },
        levels = {
            [1] = {0.5, 1.5, 300, 20, 50, critChance = 5, levelRequirement = 1, statInterpolation = {3, 3},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["GSDoryaniCrabFrostLaser"] = {
        name = "GSDoryaniCrabFrostLaser",
        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_cold_damage",
            "spell_maximum_base_cold_damage",
            "active_skill_area_of_effect_radius_+%_final",
            "base_skill_effect_duration",
            "ground_ice_art_variation",
            "active_skill_chill_effect_+%_final",
            "is_area_damage",
            "action_attack_or_cast_time_uses_animation_length",
            "action_do_not_face_target",
            "skill_does_not_pathfind",
            "base_skill_can_be_avoided_by_dodge_roll",
            "base_skill_can_be_blocked",
        },
        levels = {
            [1] = {0.80000001192093, 1.2000000476837, 0, 7000, 1007, 350, critChance = 7, levelRequirement = 1, statInterpolation = {3, 3},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["GSDoryaniCrabFrostLaser90Left"] = {
        name = "GSDoryaniCrabFrostLaser90Left",
        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_cold_damage",
            "spell_maximum_base_cold_damage",
            "active_skill_area_of_effect_radius_+%_final",
            "base_skill_effect_duration",
            "ground_ice_art_variation",
            "active_skill_chill_effect_+%_final",
            "is_area_damage",
            "action_attack_or_cast_time_uses_animation_length",
            "action_do_not_face_target",
            "skill_does_not_pathfind",
            "base_skill_can_be_avoided_by_dodge_roll",
            "base_skill_can_be_blocked",
        },
        levels = {
            [1] = {0.80000001192093, 1.2000000476837, 0, 7000, 1007, 350, critChance = 7, levelRequirement = 1, statInterpolation = {3, 3},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["GSDoryaniCrabFrostLaserCorrupt"] = {
        name = "GSDoryaniCrabFrostLaserCorrupt",
        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_cold_damage",
            "spell_maximum_base_cold_damage",
            "active_skill_area_of_effect_radius_+%_final",
            "base_skill_effect_duration",
            "ground_ice_art_variation",
            "active_skill_chill_effect_+%_final",
            "is_area_damage",
            "action_attack_or_cast_time_uses_animation_length",
            "action_do_not_face_target",
            "skill_does_not_pathfind",
            "base_skill_can_be_avoided_by_dodge_roll",
            "base_skill_can_be_blocked",
        },
        levels = {
            [1] = {0.80000001192093, 1.2000000476837, 0, 7000, 1007, 350, critChance = 7, levelRequirement = 1, statInterpolation = {3, 3},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["GSDoryaniCrabLegProjImpact"] = {
        name = "GSDoryaniCrabLegProjImpact",
        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,
            projectile = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "spell_minimum_base_lightning_damage",
            "spell_maximum_base_lightning_damage",
            "shock_chance_+%",
            "spell_maximum_action_distance_+%",
            "is_area_damage",
            "action_attack_or_cast_time_uses_animation_length",
            "base_is_projectile",
        },
        levels = {
            [1] = {0.5, 1.5, 100, 100, critChance = 6, levelRequirement = 1, statInterpolation = {3, 3},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["GADoryaniCrabLegProjImpactWall"] = {
        name = "GADoryaniCrabLegProjImpactWall",
        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 = {
            "is_area_damage",
            "action_attack_or_cast_time_uses_animation_length",
        },
        levels = {
            [1] = {critChance = 6, levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["GADoryaniCrabSlamCold"] = {
        name = "GADoryaniCrabSlamCold",
        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 = {
            "active_skill_base_physical_damage_%_to_convert_to_cold",
            "voll_slam_damage_+%_final_at_centre",
            "active_skill_area_of_effect_radius_+%_final",
            "base_skill_effect_duration",
            "ground_ice_art_variation",
            "is_area_damage",
            "action_attack_or_cast_time_uses_animation_length",
        },
        levels = {
            [1] = {70, 50, 0, 4000, 1007, baseMultiplier = 1.85, levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["GADoryaniCrabSlamFire"] = {
        name = "GADoryaniCrabSlamFire",
        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 = {
            "active_skill_base_physical_damage_%_to_convert_to_fire",
            "voll_slam_damage_+%_final_at_centre",
            "is_area_damage",
            "action_attack_or_cast_time_uses_animation_length",
        },
        levels = {
            [1] = {70, 50, baseMultiplier = 1.85, levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["GADoryaniCrabComboSlamBasic"] = {
        name = "GADoryaniCrabComboSlamBasic",
        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 = {
            "is_area_damage",
            "action_attack_or_cast_time_uses_animation_length",
        },
        levels = {
            [1] = {baseMultiplier = 0.8, levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["GADoryaniCrabIceLaserSnap"] = {
        name = "GADoryaniCrabIceLaserSnap",
        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_area_of_effect_radius_+%_final",
            "base_skill_effect_duration",
            "ground_ice_art_variation",
            "is_area_damage",
            "action_attack_or_cast_time_uses_animation_length",
        },
        levels = {
            [1] = {0.5, 1.5, 0, 4000, 1007, critChance = 6, levelRequirement = 1, statInterpolation = {3, 3},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["EASDoryaniCrabExplode"] = {
        name = "EASDoryaniCrabExplode",
        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",
            "action_do_not_face_target",
            "skill_does_not_pathfind",
        },
        levels = {
            [1] = {levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["EASDoryaniCrabLightningCage"] = {
        name = "EASDoryaniCrabLightningCage",
        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",
            "action_do_not_face_target",
            "skill_does_not_pathfind",
        },
        levels = {
            [1] = {levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["EASDoryaniCrabPlatformAttach"] = {
        name = "EASDoryaniCrabPlatformAttach",
        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["EASDoryaniCrabPlatformDetach"] = {
        name = "EASDoryaniCrabPlatformDetach",
        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["EAADoryaniCrabLegToss"] = {
        name = "EAADoryaniCrabLegToss",
        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",
            "action_do_not_face_target",
            "skill_does_not_pathfind",
        },
        levels = {
            [1] = {80, levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["EAADoryaniCrabComboSlam"] = {
        name = "EAADoryaniCrabComboSlam",
        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["EDADoryaniCrabClawSlam"] = {
        name = "EDADoryaniCrabClawSlam",
        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 = {
            "active_skill_base_physical_damage_%_to_convert_to_cold",
            "is_area_damage",
            "action_attack_or_cast_time_uses_animation_length",
        },
        levels = {
            [1] = {65, levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    
    100% d'Augmentation des chances d'Électrocuter
    active skill ignite effect +% final [33]
    IdEndgameBossIgniteShockBonus
    FamilyDoryaniEndgameIgniteShock
    DomainsMonster (3)
    GenerationTypeUnique (3)
    Req. level1
    Stats
  • shock chance +% Min: 100 Max: 100 Global
  • active skill ignite effect +% final Min: 33 Max: 33 Global
  • 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
  • Vous ne pouvez pas être Repoussé(e)
    IdImmuneToKnockback
    FamilyImmuneToKnockback
    DomainsMonster (3)
    GenerationTypeUnique (3)
    Req. level1
    Stats
  • cannot be knocked back 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
  • Triomphe de Doryani
    no movement speed [1]
    Doryani's Triumph
    SpectreN
    Tagsconstruct, mud_blood, not_dex, not_int, slow_movement
    Vie
    360%
    Armure
    +60%
    Résistance
    0 0 0 0
    Damage
    450%
    Précision
    100%
    Touches critiques Chance
    5%
    Bonus de Dégâts critiques
    +30%
    Attack Distance
    7 ~ 41
    Temps d'attaque
    1.005 Second
    Damage Spread
    ±20%
    Expérience
    300%
    Model Size
    100%
    Type
    DoryaniMech
    Metadata
    DoryaniMechRailGun
    Niveau
    68
    Vie
    27,925
    Armure
    3,861
    Score d'Évasion
    477
    Damage
    1,049
    Dégâts des sorts
    1,049
    Précision
    2,180
    Temps d'attaque
    1.005
    Expérience
    85,902
    Minion Life
    23,872
    Minion Damage
    2,337
    Minion Armour
    6,756
    GSDoryaniCrabLegProjImpact
    Triggerable, Spell, Damage
    Chances de Touche critique: 6%
    Temps d'incantation: 1 sec.
    Inflige 621.8 à 1865 Dégâts de Foudre
    Les Aptitudes modifiées ont 100% d'Augmentation des chances d'Électrocuter
    action attack or cast time uses animation length [1]
    base is projectile [1]
    is area damage [1]
    spell maximum action distance +% [100]

    Object Type

    version 2
    extends "Metadata/Monsters/Monster"
    
    Positioned
    {
    	object_size = 0
    	blocking = false
    }
    
    Functions
    {
    	update_target = { SetTarget( arg1, 1 ); }
    }
    
    StateMachine
    {
    	define_shared_state = "fade_out;"
    }

    Object Type Codes

    version 2
    extends "Metadata/Monsters/Monster"
    
    BaseEvents
    {
    	on_construction_complete = { AddNamedTask( TargetTiltTracker ); }
    }
    
    StateMachine
    {
    	on_or_create_state_fade_out_1 = { AddEffectPack( 'Metadata/Effects/Spells/monsters_effects/Act3_FOUR/Doryani/epk/legs_dissolve.epk' ); }
    }
    
    Preload
    {
    	preload_epk = "Metadata/Effects/Spells/monsters_effects/Act3_FOUR/Doryani/epk/legs_dissolve.epk"
    }
    -- src\Data\Spectres.lua
    minions["Metadata/Monsters/DoryaniMechSuit/DoryaniMechRailGun"] = {
        name = "Doryani's Triumph",
        life = 3.6,
        fireResist = 0,
        coldResist = 0,
        lightningResist = 0,
        chaosResist = 0,
        damage = 4.5,
        damageSpread = 0.2,
        attackTime = 1.005,
        attackRange = 41,
        accuracy = 1,
        skillList = {
            "GSDoryaniCrabLegProjImpact",
        },
        modList = {
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["GSDoryaniCrabLegProjImpact"] = {
        name = "GSDoryaniCrabLegProjImpact",
        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,
            projectile = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "spell_minimum_base_lightning_damage",
            "spell_maximum_base_lightning_damage",
            "shock_chance_+%",
            "spell_maximum_action_distance_+%",
            "is_area_damage",
            "action_attack_or_cast_time_uses_animation_length",
            "base_is_projectile",
        },
        levels = {
            [1] = {0.5, 1.5, 100, 100, critChance = 6, levelRequirement = 1, statInterpolation = {3, 3},  cost = { }, },
        },
    }
    
    no movement speed [1]
    IdStanceSalmon
    FamilyStance
    DomainsMonster (3)
    GenerationTypeUnique (3)
    Req. level1
    Stats
  • no movement speed Min: 1 Max: 1 Global
  • Edit

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