Triunfo de Doryani
monster dropped item rarity +% [14700]
monster slain experience +% [0]
unique monster guarantee one rare [1]
Não Pode ser Empurrado
Doryani's Triumph
SpectreN
AreaAs Câmaras Sombrias, As Câmaras Sombrias
Tagsconstruct, MonsterBlunt_onhit_audio, mud_blood, not_dex, not_int, slow_movement
Vida
360%
Armadura
+60%
Resistência
0 0 0 0
Damage
450%
Precisão
100%
Acertos Críticos Chance
5%
Bônus de Dano Crítico
+30%
Attack Distance
7 ~ 41
Tempo de Ataque
1.005 Second
Damage Spread
±20%
Experiência
300%
Model Size
100%
Type
DoryaniMech
Metadata
DoryaniMech
Nível
64
Vida
22,331
Armadura
4,362
Evasão
429
Damage
926
Dano Mágico
926
Precisão
1,910
Tempo de Ataque
1.005
Experiência
63,483
Minion Life
34,254
Minion Damage
6,549
Minion Armour
7,633
MeleeAtAnimationSpeedUnique
Attack, RangedAttack, MirageArcherCanUse, Projectile, MeleeSingleTarget, Multistrikeable, Melee, ProjectilesFromUser
Ataque Básico
Base Damage: 741–1111
Chance de Acerto Crítico: 5%
Tempo de Ataque: 1.005 seg
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
Chance de Acerto Crítico: 5%
Dano de Ataque: 200%
Tempo de Ataque: 1.005 seg
Recarga: 35 seg
Causa 100% mais Dano de Ataque
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
Chance de Acerto Crítico: 5%
Tempo de Ataque: 1.005 seg
Recarga: 20 seg
Converte 65% do Dano Físico para Dano de Gelo
action attack or cast time uses animation length [1]
is area damage [1]
GSDoryaniCrabBrazierSlam
Triggerable, Spell, Damage
Chance de Acerto Crítico: 5%
Tempo de Conjuração: 1 seg
Recarga: 15 seg
Chance de Incendiar aumentada em 100%
Causa 12596 a 18894 de Dano de Fogo
action attack or cast time uses animation length [1]
is area damage [1]
voll slam damage +% final at centre [40]
GSDoryaniCrabDiscoLazer
Triggerable, Spell, Damage
Chance de Acerto Crítico: 6%
Tempo de Conjuração: 1 seg
Recarga: 35 seg
Causa 787.3 a 2362 de Dano de Raio
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
Chance de Acerto Crítico: 5%
Tempo de Conjuração: 1 seg
Recarga: 35 seg
Chance de Incendiar aumentada em 50%
Causa 2267 a 3401 de Dano de Fogo
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]
is area damage [1]
skill does not pathfind [1]
GSDoryaniCrabFlamethrower90Right
Triggerable, Spell, Damage
Chance de Acerto Crítico: 5%
Tempo de Conjuração: 1 seg
Recarga: 35 seg
Chance de Incendiar aumentada em 50%
Causa a de Dano de Fogo
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]
is area damage [1]
skill does not pathfind [1]
GSDoryaniCrabFlamethrowerCorrupt
Triggerable, Spell, Damage
Chance de Acerto Crítico: 5%
Tempo de Conjuração: 1 seg
Recarga: 35 seg
Chance de Incendiar aumentada em 50%
Causa 1575 a 4724 de Dano de Raio
Habilidades Suportadas têm chance de Eletrizar aumentada em 300%
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]
is area damage [1]
skill does not pathfind [1]
GSDoryaniCrabFrostLaser
Triggerable, Spell, Damage
Chance de Acerto Crítico: 7%
Tempo de Conjuração: 1 seg
Recarga: 40 seg
Causa 1260 a 1889 de Dano de Gelo
350% mais Magnitude dos Resfriamentos infligidos
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
Chance de Acerto Crítico: 7%
Tempo de Conjuração: 1 seg
Recarga: 40 seg
Causa a de Dano de Gelo
350% mais Magnitude dos Resfriamentos infligidos
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
Chance de Acerto Crítico: 7%
Tempo de Conjuração: 1 seg
Recarga: 40 seg
Causa 1260 a 1889 de Dano de Gelo
350% mais Magnitude dos Resfriamentos infligidos
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
Recarga: 27.5 seg
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, Multistrikeable, Melee, ProjectilesFromUser
Ataque Básico
Base Damage: 741–1111
Chance de Acerto Crítico: 5%
Dano de Ataque: 130%
Tempo de Ataque: 1.005 seg
Recarga: 15 seg
Causa 30% mais Dano de Ataque
Converte 30% do Dano Físico para Dano de Gelo
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
Recarga: 45 seg
action attack or cast time uses animation length [1]
action do not face target [1]
skill does not pathfind [1]
EAADoryaniCrabComboSlam
Recarga: 32.5 seg
action attack or cast time uses animation length [1]
EASDoryaniCrabExplode
Recarga: 40 seg
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
Recarga: 50 seg
action attack or cast time uses animation length [1]
MPADoryaniCrabLegToss
Attack, RangedAttack, MirageArcherCanUse, Projectile, ProjectilesFromUser, Damage, Triggerable
Base Damage: 741–1111
Chance de Acerto Crítico: 5%
Tempo de Ataque: 1.005 seg
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
Chance de Acerto Crítico: 6%
Tempo de Conjuração: 1 seg
Causa 10235 a 30704 de Dano de Raio
Habilidades Suportadas têm chance de Eletrizar aumentada em 100%
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
Chance de Acerto Crítico: 5%
Tempo de Ataque: 1.005 seg
action attack or cast time uses animation length [1]
is area damage [1]
GADoryaniCrabExplode
Triggerable, Spell, Damage
Chance de Acerto Crítico: 6%
Tempo de Conjuração: 1 seg
Causa 3936 a 11809 de Dano de Raio
Habilidades Suportadas têm chance de Eletrizar aumentada em 500%
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
Chance de Acerto Crítico: 5%
Dano de Ataque: 300%
Tempo de Ataque: 1.005 seg
Causa 200% mais Dano de Ataque
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
Chance de Acerto Crítico: 6%
Tempo de Conjuração: 1 seg
Causa 4724 a 14171 de Dano de Raio
Habilidades Suportadas têm chance de Eletrizar aumentada em 60%
Dispara Projéteis adicionais
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
Chance de Acerto Crítico: 5%
Dano de Ataque: 80%
Tempo de Ataque: 1.005 seg
Causa 20% menos Dano de Ataque
action attack or cast time uses animation length [1]
is area damage [1]
GADoryaniCrabSlamCold
Triggerable, Attack
Base Damage: 741–1111
Chance de Acerto Crítico: 5%
Dano de Ataque: 185%
Tempo de Ataque: 1.005 seg
Causa 85% mais Dano de Ataque
Converte 70% do Dano Físico para Dano de Gelo
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
Chance de Acerto Crítico: 5%
Dano de Ataque: 185%
Tempo de Ataque: 1.005 seg
Causa 85% mais Dano de Ataque
Converte 70% do Dano Físico para Dano de Fogo
action attack or cast time uses animation length [1]
is area damage [1]
voll slam damage +% final at centre [50]
GADoryaniCrabIceLaserSnap
Triggerable, Spell, Damage
Chance de Acerto Crítico: 6%
Tempo de Conjuração: 1 seg
Causa 9447 a 28342 de Dano de Raio
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 */
/* ------------------------------------------------------------------------------------------------------------------- */

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.Multistrikeable] = 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.Multistrikeable] = true,
        [SkillType.Melee] = true,
        [SkillType.ProjectilesFromUser] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
        attack = true,
        melee = true,
        projectile = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "attack_maximum_action_distance_+",
        "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",
    },
    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",
    },
    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",
    },
    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)
GenerationTypeÚnico (3)
Req. level1
Stats
  • monster slain experience +% Min: 0 Max: 0 Global
  • monster dropped item rarity +% Min: 14700 Max: 14700 Global
  • unique monster guarantee one rare Min: 1 Max: 1 Global
  • Não Pode ser Empurrado
    IdImmuneToKnockback
    FamilyImmuneToKnockback
    DomainsMonster (3)
    GenerationTypeÚnico (3)
    Req. level1
    Stats
  • cannot be knocked back Min: 1 Max: 1 Global
  • Triunfo de Doryani
    Chance de Eletrizar aumentada em 100%
    active skill ignite effect +% final [33]
    monster dropped item rarity +% [14700]
    monster slain experience +% [0]
    unique monster guarantee one rare [1]
    Não Pode ser Empurrado
    monster dropped item quantity +% [800]
    monster dropped item rarity +% [10000]
    monster map key of at least same tier as current map drop chance % [15]
    monster slain experience +% [9000]
    unique monster guarantee one rare [1]
    Doryani's Triumph
    SpectreN
    AreaA Cidadela de Pedra
    Tagsconstruct, MonsterBlunt_onhit_audio, mud_blood, not_dex, not_int, slow_movement
    Vida
    360%
    Armadura
    +100%
    Resistência
    30 0 30 0
    Damage
    450%
    Precisão
    100%
    Acertos Críticos Chance
    5%
    Bônus de Dano Crítico
    +30%
    Attack Distance
    7 ~ 41
    Tempo de Ataque
    1.005 Second
    Damage Spread
    ±20%
    Experiência
    300%
    Model Size
    100%
    Type
    DoryaniMechMap
    Metadata
    DoryaniMechMap
    Nível
    80
    Vida
    56,192
    Armadura
    13,734
    Evasão
    644
    Damage
    1,502
    Dano Mágico
    1,502
    Precisão
    3,204
    Tempo de Ataque
    1.005
    Experiência
    300,000
    Minion Life
    66,402
    Minion Damage
    18,550
    Minion Armour
    27,468
    MeleeAtAnimationSpeedUnique
    Attack, RangedAttack, MirageArcherCanUse, Projectile, MeleeSingleTarget, Multistrikeable, Melee, ProjectilesFromUser
    Ataque Básico
    Base Damage: 1202–1802
    Chance de Acerto Crítico: 5%
    Tempo de Ataque: 1.005 seg
    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
    Chance de Acerto Crítico: 5%
    Dano de Ataque: 200%
    Tempo de Ataque: 1.005 seg
    Recarga: 35 seg
    Causa 100% mais Dano de Ataque
    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
    Chance de Acerto Crítico: 5%
    Tempo de Ataque: 1.005 seg
    Recarga: 20 seg
    Converte 65% do Dano Físico para Dano de Gelo
    action attack or cast time uses animation length [1]
    is area damage [1]
    GSDoryaniCrabBrazierSlam
    Triggerable, Spell, Damage
    Chance de Acerto Crítico: 5%
    Tempo de Conjuração: 1 seg
    Recarga: 15 seg
    Chance de Incendiar aumentada em 100%
    Causa 57880 a 86820 de Dano de Fogo
    action attack or cast time uses animation length [1]
    is area damage [1]
    voll slam damage +% final at centre [40]
    GSDoryaniCrabDiscoLazer
    Triggerable, Spell, Damage
    Chance de Acerto Crítico: 6%
    Tempo de Conjuração: 1 seg
    Recarga: 35 seg
    Causa 3617 a 10852 de Dano de Raio
    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
    Chance de Acerto Crítico: 5%
    Tempo de Conjuração: 1 seg
    Recarga: 35 seg
    Chance de Incendiar aumentada em 50%
    Causa 10418 a 15628 de Dano de Fogo
    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]
    is area damage [1]
    skill does not pathfind [1]
    GSDoryaniCrabFlamethrower90Right
    Triggerable, Spell, Damage
    Chance de Acerto Crítico: 5%
    Tempo de Conjuração: 1 seg
    Recarga: 35 seg
    Chance de Incendiar aumentada em 50%
    Causa a de Dano de Fogo
    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]
    is area damage [1]
    skill does not pathfind [1]
    GSDoryaniCrabFlamethrowerCorrupt
    Triggerable, Spell, Damage
    Chance de Acerto Crítico: 5%
    Tempo de Conjuração: 1 seg
    Recarga: 35 seg
    Chance de Incendiar aumentada em 50%
    Causa 7235 a 21705 de Dano de Raio
    Habilidades Suportadas têm chance de Eletrizar aumentada em 300%
    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]
    is area damage [1]
    skill does not pathfind [1]
    GSDoryaniCrabFrostLaser
    Triggerable, Spell, Damage
    Chance de Acerto Crítico: 7%
    Tempo de Conjuração: 1 seg
    Recarga: 40 seg
    Causa 5788 a 8682 de Dano de Gelo
    350% mais Magnitude dos Resfriamentos infligidos
    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
    Chance de Acerto Crítico: 7%
    Tempo de Conjuração: 1 seg
    Recarga: 40 seg
    Causa a de Dano de Gelo
    350% mais Magnitude dos Resfriamentos infligidos
    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
    Chance de Acerto Crítico: 7%
    Tempo de Conjuração: 1 seg
    Recarga: 40 seg
    Causa 5788 a 8682 de Dano de Gelo
    350% mais Magnitude dos Resfriamentos infligidos
    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
    Recarga: 27.5 seg
    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, Multistrikeable, Melee, ProjectilesFromUser
    Ataque Básico
    Base Damage: 1202–1802
    Chance de Acerto Crítico: 5%
    Dano de Ataque: 130%
    Tempo de Ataque: 1.005 seg
    Recarga: 15 seg
    Causa 30% mais Dano de Ataque
    Converte 30% do Dano Físico para Dano de Gelo
    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
    Recarga: 45 seg
    action attack or cast time uses animation length [1]
    action do not face target [1]
    skill does not pathfind [1]
    EAADoryaniCrabComboSlam
    Recarga: 32.5 seg
    action attack or cast time uses animation length [1]
    EASDoryaniCrabExplode
    Recarga: 40 seg
    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
    Recarga: 50 seg
    action attack or cast time uses animation length [1]
    MPADoryaniCrabLegToss
    Attack, RangedAttack, MirageArcherCanUse, Projectile, ProjectilesFromUser, Damage, Triggerable
    Base Damage: 1202–1802
    Chance de Acerto Crítico: 5%
    Tempo de Ataque: 1.005 seg
    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
    Chance de Acerto Crítico: 6%
    Tempo de Conjuração: 1 seg
    Causa 47027 a 141082 de Dano de Raio
    Habilidades Suportadas têm chance de Eletrizar aumentada em 100%
    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
    Chance de Acerto Crítico: 5%
    Tempo de Ataque: 1.005 seg
    action attack or cast time uses animation length [1]
    is area damage [1]
    GADoryaniCrabExplode
    Triggerable, Spell, Damage
    Chance de Acerto Crítico: 6%
    Tempo de Conjuração: 1 seg
    Causa 18087 a 54262 de Dano de Raio
    Habilidades Suportadas têm chance de Eletrizar aumentada em 500%
    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
    Chance de Acerto Crítico: 5%
    Dano de Ataque: 300%
    Tempo de Ataque: 1.005 seg
    Causa 200% mais Dano de Ataque
    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
    Chance de Acerto Crítico: 6%
    Tempo de Conjuração: 1 seg
    Causa 21705 a 65115 de Dano de Raio
    Habilidades Suportadas têm chance de Eletrizar aumentada em 60%
    Dispara Projéteis adicionais
    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
    Chance de Acerto Crítico: 5%
    Dano de Ataque: 80%
    Tempo de Ataque: 1.005 seg
    Causa 20% menos Dano de Ataque
    action attack or cast time uses animation length [1]
    is area damage [1]
    GADoryaniCrabSlamCold
    Triggerable, Attack
    Base Damage: 1202–1802
    Chance de Acerto Crítico: 5%
    Dano de Ataque: 185%
    Tempo de Ataque: 1.005 seg
    Causa 85% mais Dano de Ataque
    Converte 70% do Dano Físico para Dano de Gelo
    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
    Chance de Acerto Crítico: 5%
    Dano de Ataque: 185%
    Tempo de Ataque: 1.005 seg
    Causa 85% mais Dano de Ataque
    Converte 70% do Dano Físico para Dano de Fogo
    action attack or cast time uses animation length [1]
    is area damage [1]
    voll slam damage +% final at centre [50]
    GADoryaniCrabIceLaserSnap
    Triggerable, Spell, Damage
    Chance de Acerto Crítico: 6%
    Tempo de Conjuração: 1 seg
    Causa 43410 a 130229 de Dano de Raio
    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
    }

    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.Multistrikeable] = 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.Multistrikeable] = true,
            [SkillType.Melee] = true,
            [SkillType.ProjectilesFromUser] = true,
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1,
        baseFlags = {
            attack = true,
            melee = true,
            projectile = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "attack_maximum_action_distance_+",
            "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",
        },
        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",
        },
        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",
        },
        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 = { }, },
        },
    }
    
    Chance de Eletrizar aumentada em 100%
    active skill ignite effect +% final [33]
    IdEndgameBossIgniteShockBonus
    FamilyDoryaniEndgameIgniteShock
    DomainsMonster (3)
    GenerationTypeÚnico (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)
    GenerationTypeÚnico (3)
    Req. level1
    Stats
  • monster slain experience +% Min: 0 Max: 0 Global
  • monster dropped item rarity +% Min: 14700 Max: 14700 Global
  • unique monster guarantee one rare Min: 1 Max: 1 Global
  • Não Pode ser Empurrado
    IdImmuneToKnockback
    FamilyImmuneToKnockback
    DomainsMonster (3)
    GenerationTypeÚnico (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 % [15]
    monster slain experience +% [9000]
    unique monster guarantee one rare [1]
    IdMonsterMapBossT3
    FamilyMonsterMapBoss
    DomainsMonster (3)
    GenerationTypeÚnico (3)
    Req. level1
    Stats
  • monster slain experience +% Min: 9000 Max: 9000 Global
  • monster dropped item rarity +% Min: 10000 Max: 10000 Global
  • monster dropped item quantity +% Min: 800 Max: 800 Global
  • unique monster guarantee one rare Min: 1 Max: 1 Global
  • monster map key of at least same tier as current map drop chance % Min: 15 Max: 15 Global
  • Triunfo de Doryani
    no movement speed [1]
    Doryani's Triumph
    SpectreN
    Tagsconstruct, mud_blood, not_dex, not_int, slow_movement
    Vida
    360%
    Armadura
    +60%
    Resistência
    0 0 0 0
    Damage
    450%
    Precisão
    100%
    Acertos Críticos Chance
    5%
    Bônus de Dano Crítico
    +30%
    Attack Distance
    7 ~ 41
    Tempo de Ataque
    1.005 Second
    Damage Spread
    ±20%
    Experiência
    300%
    Model Size
    100%
    Type
    DoryaniMech
    Metadata
    DoryaniMechRailGun
    Nível
    68
    Vida
    27,925
    Armadura
    5,522
    Evasão
    477
    Damage
    1,049
    Dano Mágico
    1,049
    Precisão
    2,180
    Tempo de Ataque
    1.005
    Experiência
    85,902
    Minion Life
    40,608
    Minion Damage
    8,534
    Minion Armour
    9,663
    GSDoryaniCrabLegProjImpact
    Triggerable, Spell, Damage
    Chance de Acerto Crítico: 6%
    Tempo de Conjuração: 1 seg
    Causa 14984 a 44953 de Dano de Raio
    Habilidades Suportadas têm chance de Eletrizar aumentada em 100%
    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)
    GenerationTypeÚnico (3)
    Req. level1
    Stats
  • no movement speed Min: 1 Max: 1 Global
  • Triunfo de Doryani
    Doryani's Triumph
    SpectreN
    Tagsconstruct, MonsterBlunt_onhit_audio, mud_blood, not_dex, not_int, slow_movement
    Vida
    360%
    Armadura
    +60%
    Resistência
    0 0 0 0
    Damage
    450%
    Precisão
    100%
    Acertos Críticos Chance
    5%
    Bônus de Dano Crítico
    +30%
    Attack Distance
    7 ~ 41
    Tempo de Ataque
    1.005 Second
    Damage Spread
    ±20%
    Experiência
    300%
    Model Size
    100%
    Type
    DoryaniMech
    Metadata
    DoryaniMechHoverPlatform
    Nível
    68
    Vida
    27,925
    Armadura
    5,522
    Evasão
    477
    Damage
    1,049
    Dano Mágico
    1,049
    Precisão
    2,180
    Tempo de Ataque
    1.005
    Experiência
    85,902
    Minion Life
    40,608
    Minion Damage
    8,534
    Minion Armour
    9,663
    MeleeAtAnimationSpeedUnique
    Attack, RangedAttack, MirageArcherCanUse, Projectile, MeleeSingleTarget, Multistrikeable, Melee, ProjectilesFromUser
    Ataque Básico
    Base Damage: 839–1259
    Chance de Acerto Crítico: 5%
    Tempo de Ataque: 1.005 seg
    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]

    Object Type

    version 2
    extends "Metadata/Monsters/Monster"
    
    /* ------------------------------------------------------------------------------------------------------------------- */
    /* Generic */
    /* ------------------------------------------------------------------------------------------------------------------- */
    
    Positioned
    {
    	blocking = false
    }
    
    Actor
    {
    	leveled_starting_effects = "CTS1BossFightStart"
    }
    
    /* ------------------------------------------------------------------------------------------------------------------- */
    /* Movement/Rotation */
    /* ------------------------------------------------------------------------------------------------------------------- */
    
    Animated
    {
    	// need this to enable the turn anims
    	always_interpolate_bearing = true
    }
    
    /* ------------------------------------------------------------------------------------------------------------------- */
    /* Skill 1 */
    /* ------------------------------------------------------------------------------------------------------------------- */
    
    BaseEvents {}
    
    Actor {}
    
    Animated {}

    Object Type Codes

    version 2
    extends "Metadata/Monsters/Monster"
    
    /* ------------------------------------------------------------------------------------------------------------------- */
    /* Generic */
    /* ------------------------------------------------------------------------------------------------------------------- */
    
    Render
    {
    	use_ao_lights = true
    }
    
    /* ------------------------------------------------------------------------------------------------------------------- */
    /* Preload */
    /* ------------------------------------------------------------------------------------------------------------------- */
    
    Preload {}
    
    /* ------------------------------------------------------------------------------------------------------------------- */
    /* Skill 1 */
    /* ------------------------------------------------------------------------------------------------------------------- */
    
    BaseEvents {}
    
    Actor {}
    
    Animated {}
    -- src\Data\Spectres.lua
    minions["Metadata/Monsters/DoryaniMechSuit/DoryaniMechHoverPlatform"] = {
        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",
        },
        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.Multistrikeable] = 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 = { }, },
        },
    }
    
    Edit

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