เครื่องฉลองชัยของดอร์ยานี
ด่าน: โถงดำ
monster dropped item rarity +% [14700]
monster slain experience +% [0]
unique monster guarantee one rare [1]
ไม่ถูก ผลักออกไป
Doryani's Triumph
SpectreN
Areaโถงดำ, โถงดำ
Tagsconstruct, MonsterBlunt_onhit_audio, mud_blood, not_dex, not_int, slow_movement
พลังชีวิต
360%
เกราะ
+60%
Ailment Threshold
%
ค่าต้านทาน
0 0 0 0
Damage
450%
ความแม่นยำ
100%
โอกาสคริติคอล
+5%
ตัวคูณคริติคอล
+130%
Attack Distance
7 ~ 41
Attack Time
1.005 Second
Damage Spread
±20%
ค่าประสบการณ์
300%
Model Size
100%
Type
DoryaniMech
Metadata
DoryaniMech
เลเวล
64
พลังชีวิต
22,331
เกราะ
4,362
การหลบหลีก
429
Energy Shield
0
Damage
926
ความเสียหายเวท
926
ความแม่นยำ
955
Attack Time
1.005
ค่าประสบการณ์
63,483
MeleeAtAnimationSpeedUnique
Attack, RangedAttack, MirageArcherCanUse, Projectile, MeleeSingleTarget, Multistrikeable, Melee, ProjectilesFromUser
โจมตีพื้นฐาน
Base Damage: 741–1111
โอกาส[Critical|ปะทะคริติคอล]: 5%
Attack Time: 1.005 {วิ}
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
โอกาส[Critical|ปะทะคริติคอล]: 5%
ความเสียหายโจมตี: 200%
Attack Time: 1.005 {วิ}
คูลดาวน์: 35 {วิ}
สร้างความเสียหาย โจมตี เพิ่มขึ้น อีก 100%
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
โอกาส[Critical|ปะทะคริติคอล]: 5%
Attack Time: 1.005 {วิ}
คูลดาวน์: 20 {วิ}
แปลงความเสียหาย กายภาพ 65% เป็น น้ำแข็ง
action attack or cast time uses animation length [1]
is area damage [1]
GSDoryaniCrabBrazierSlam
Triggerable, Spell, Damage
โอกาสคริติคอล: 5%
{เวลาร่าย}: 1 {วิ}
คูลดาวน์: 15 {วิ}
เพิ่มโอกาสสร้างสถานะ ลุกไหม้ 100%
สร้างความเสียหาย ไฟ 92.72 ถึง 139.1
action attack or cast time uses animation length [1]
is area damage [1]
voll slam damage +% final at centre [40]
GSDoryaniCrabDiscoLazer
Triggerable, Spell, Damage
โอกาสคริติคอล: 6%
{เวลาร่าย}: 1 {วิ}
คูลดาวน์: 35 {วิ}
สร้างความเสียหาย สายฟ้า 5.795 ถึง 17.38
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
โอกาสคริติคอล: 5%
{เวลาร่าย}: 1 {วิ}
คูลดาวน์: 35 {วิ}
เพิ่มโอกาสสร้างสถานะ ลุกไหม้ 50%
สร้างความเสียหาย ไฟ 16.69 ถึง 25.03
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
โอกาสคริติคอล: 5%
{เวลาร่าย}: 1 {วิ}
คูลดาวน์: 35 {วิ}
เพิ่มโอกาสสร้างสถานะ ลุกไหม้ 50%
สร้างความเสียหาย ไฟ ถึง
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
โอกาสคริติคอล: 5%
{เวลาร่าย}: 1 {วิ}
คูลดาวน์: 35 {วิ}
เพิ่มโอกาสสร้างสถานะ ลุกไหม้ 50%
สร้างความเสียหาย สายฟ้า 11.59 ถึง 34.77
สกิลที่เสริม มีโอกาสสร้างสถานะ ช็อค เพิ่มขึ้น 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
โอกาสคริติคอล: 7%
{เวลาร่าย}: 1 {วิ}
คูลดาวน์: 40 {วิ}
สร้างความเสียหาย น้ำแข็ง 9.272 ถึง 13.91
เพิ่มจำนวนค่าของสถานะ หนาวเย็น ที่สร้าง อีก 350%
action attack or cast time uses animation length [1]
action do not face target [1]
active skill area of effect radius +% final [0]
base skill can be avoided by dodge roll [1]
base skill can be blocked [1]
base skill effect duration [7000]
ground ice art variation [1007]
is area damage [1]
skill does not pathfind [1]
GSDoryaniCrabFrostLaser90Left
Triggerable, Spell, Damage
โอกาสคริติคอล: 7%
{เวลาร่าย}: 1 {วิ}
คูลดาวน์: 40 {วิ}
สร้างความเสียหาย น้ำแข็ง ถึง
เพิ่มจำนวนค่าของสถานะ หนาวเย็น ที่สร้าง อีก 350%
action attack or cast time uses animation length [1]
action do not face target [1]
active skill area of effect radius +% final [0]
base skill can be avoided by dodge roll [1]
base skill can be blocked [1]
base skill effect duration [7000]
ground ice art variation [1007]
is area damage [1]
skill does not pathfind [1]
GSDoryaniCrabFrostLaserCorrupt
Triggerable, Spell, Damage
โอกาสคริติคอล: 7%
{เวลาร่าย}: 1 {วิ}
คูลดาวน์: 40 {วิ}
สร้างความเสียหาย น้ำแข็ง 9.272 ถึง 13.91
เพิ่มจำนวนค่าของสถานะ หนาวเย็น ที่สร้าง อีก 350%
action attack or cast time uses animation length [1]
action do not face target [1]
active skill area of effect radius +% final [0]
base skill can be avoided by dodge roll [1]
base skill can be blocked [1]
base skill effect duration [7000]
ground ice art variation [1007]
is area damage [1]
skill does not pathfind [1]
EAADoryaniCrabLegToss
คูลดาวน์: 27.5 {วิ}
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
โจมตีพื้นฐาน
Base Damage: 741–1111
โอกาส[Critical|ปะทะคริติคอล]: 5%
ความเสียหายโจมตี: 130%
Attack Time: 1.005 {วิ}
คูลดาวน์: 15 {วิ}
สร้างความเสียหาย โจมตี เพิ่มขึ้น อีก 30%
แปลงความเสียหาย กายภาพ 30% เป็น น้ำแข็ง
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
คูลดาวน์: 45 {วิ}
action attack or cast time uses animation length [1]
action do not face target [1]
skill does not pathfind [1]
EAADoryaniCrabComboSlam
คูลดาวน์: 32.5 {วิ}
action attack or cast time uses animation length [1]
EASDoryaniCrabExplode
คูลดาวน์: 40 {วิ}
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
คูลดาวน์: 50 {วิ}
action attack or cast time uses animation length [1]
MPADoryaniCrabLegToss
Attack, RangedAttack, MirageArcherCanUse, Projectile, ProjectilesFromUser, Damage, Triggerable
Base Damage: 741–1111
โอกาส[Critical|ปะทะคริติคอล]: 5%
Attack Time: 1.005 {วิ}
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
โอกาสคริติคอล: 6%
{เวลาร่าย}: 1 {วิ}
สร้างความเสียหาย สายฟ้า 75.33 ถึง 226
สกิลที่เสริม มีโอกาสสร้างสถานะ ช็อค เพิ่มขึ้น 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
โอกาส[Critical|ปะทะคริติคอล]: 5%
Attack Time: 1.005 {วิ}
action attack or cast time uses animation length [1]
is area damage [1]
GADoryaniCrabExplode
Triggerable, Spell, Damage
โอกาสคริติคอล: 6%
{เวลาร่าย}: 1 {วิ}
สร้างความเสียหาย สายฟ้า 28.97 ถึง 86.92
สกิลที่เสริม มีโอกาสสร้างสถานะ ช็อค เพิ่มขึ้น 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
โอกาส[Critical|ปะทะคริติคอล]: 5%
ความเสียหายโจมตี: 300%
Attack Time: 1.005 {วิ}
สร้างความเสียหาย โจมตี เพิ่มขึ้น อีก 200%
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
โอกาสคริติคอล: 6%
{เวลาร่าย}: 1 {วิ}
สร้างความเสียหาย สายฟ้า 34.77 ถึง 104.3
สกิลที่เสริม มีโอกาสสร้างสถานะ ช็อค เพิ่มขึ้น 60%
ยิงโพรเจกไทล์ เพิ่มเติม 2 ลูก
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
โอกาส[Critical|ปะทะคริติคอล]: 5%
ความเสียหายโจมตี: 80%
Attack Time: 1.005 {วิ}
สร้างความเสียหาย โจมตี ลดลง อีก 20%
action attack or cast time uses animation length [1]
is area damage [1]
GADoryaniCrabSlamCold
Triggerable, Attack
Base Damage: 741–1111
โอกาส[Critical|ปะทะคริติคอล]: 5%
ความเสียหายโจมตี: 185%
Attack Time: 1.005 {วิ}
สร้างความเสียหาย โจมตี เพิ่มขึ้น อีก 85%
แปลงความเสียหาย กายภาพ 70% เป็น น้ำแข็ง
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
โอกาส[Critical|ปะทะคริติคอล]: 5%
ความเสียหายโจมตี: 185%
Attack Time: 1.005 {วิ}
สร้างความเสียหาย โจมตี เพิ่มขึ้น อีก 85%
แปลงความเสียหาย กายภาพ 70% เป็น ไฟ
action attack or cast time uses animation length [1]
is area damage [1]
voll slam damage +% final at centre [50]
GADoryaniCrabIceLaserSnap
Triggerable, Spell, Damage
โอกาสคริติคอล: 6%
{เวลาร่าย}: 1 {วิ}
สร้างความเสียหาย สายฟ้า 69.54 ถึง 208.6
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ยูนิค (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
  • ไม่ถูก ผลักออกไป
    IdImmuneToKnockback
    FamilyImmuneToKnockback
    DomainsMonster (3)
    GenerationTypeยูนิค (3)
    Req. level1
    Stats
  • cannot be knocked back Min: 1 Max: 1 Global
  • เครื่องฉลองชัยของดอร์ยานี
    เพิ่มโอกาสสร้างสถานะ ช็อค 100%
    active skill ignite effect +% final [33]
    monster dropped item rarity +% [14700]
    monster slain experience +% [0]
    unique monster guarantee one rare [1]
    ไม่ถูก ผลักออกไป
    monster dropped item quantity +% [800]
    monster dropped item rarity +% [10000]
    monster map key of at least same tier as current map drop chance % [25]
    monster slain experience +% [9000]
    unique monster guarantee one rare [1]
    Doryani's Triumph
    SpectreN
    Areaหอคอยศิลา
    Tagsconstruct, MonsterBlunt_onhit_audio, mud_blood, not_dex, not_int, slow_movement
    พลังชีวิต
    360%
    เกราะ
    +100%
    Ailment Threshold
    %
    ค่าต้านทาน
    0 0 0 0
    Damage
    450%
    ความแม่นยำ
    100%
    โอกาสคริติคอล
    +5%
    ตัวคูณคริติคอล
    +130%
    Attack Distance
    7 ~ 41
    Attack Time
    1.005 Second
    Damage Spread
    ±20%
    ค่าประสบการณ์
    300%
    Model Size
    100%
    Type
    DoryaniMechMap
    Metadata
    DoryaniMechMap
    เลเวล
    80
    พลังชีวิต
    56,192
    เกราะ
    13,734
    การหลบหลีก
    644
    Energy Shield
    0
    Damage
    1,502
    ความเสียหายเวท
    1,502
    ความแม่นยำ
    1,602
    Attack Time
    1.005
    ค่าประสบการณ์
    300,000
    MeleeAtAnimationSpeedUnique
    Attack, RangedAttack, MirageArcherCanUse, Projectile, MeleeSingleTarget, Multistrikeable, Melee, ProjectilesFromUser
    โจมตีพื้นฐาน
    Base Damage: 1202–1802
    โอกาส[Critical|ปะทะคริติคอล]: 5%
    Attack Time: 1.005 {วิ}
    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
    โอกาส[Critical|ปะทะคริติคอล]: 5%
    ความเสียหายโจมตี: 200%
    Attack Time: 1.005 {วิ}
    คูลดาวน์: 35 {วิ}
    สร้างความเสียหาย โจมตี เพิ่มขึ้น อีก 100%
    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
    โอกาส[Critical|ปะทะคริติคอล]: 5%
    Attack Time: 1.005 {วิ}
    คูลดาวน์: 20 {วิ}
    แปลงความเสียหาย กายภาพ 65% เป็น น้ำแข็ง
    action attack or cast time uses animation length [1]
    is area damage [1]
    GSDoryaniCrabBrazierSlam
    Triggerable, Spell, Damage
    โอกาสคริติคอล: 5%
    {เวลาร่าย}: 1 {วิ}
    คูลดาวน์: 15 {วิ}
    เพิ่มโอกาสสร้างสถานะ ลุกไหม้ 100%
    สร้างความเสียหาย ไฟ 122.4 ถึง 183.6
    action attack or cast time uses animation length [1]
    is area damage [1]
    voll slam damage +% final at centre [40]
    GSDoryaniCrabDiscoLazer
    Triggerable, Spell, Damage
    โอกาสคริติคอล: 6%
    {เวลาร่าย}: 1 {วิ}
    คูลดาวน์: 35 {วิ}
    สร้างความเสียหาย สายฟ้า 7.649 ถึง 22.95
    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
    โอกาสคริติคอล: 5%
    {เวลาร่าย}: 1 {วิ}
    คูลดาวน์: 35 {วิ}
    เพิ่มโอกาสสร้างสถานะ ลุกไหม้ 50%
    สร้างความเสียหาย ไฟ 22.03 ถึง 33.04
    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
    โอกาสคริติคอล: 5%
    {เวลาร่าย}: 1 {วิ}
    คูลดาวน์: 35 {วิ}
    เพิ่มโอกาสสร้างสถานะ ลุกไหม้ 50%
    สร้างความเสียหาย ไฟ ถึง
    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
    โอกาสคริติคอล: 5%
    {เวลาร่าย}: 1 {วิ}
    คูลดาวน์: 35 {วิ}
    เพิ่มโอกาสสร้างสถานะ ลุกไหม้ 50%
    สร้างความเสียหาย สายฟ้า 15.3 ถึง 45.89
    สกิลที่เสริม มีโอกาสสร้างสถานะ ช็อค เพิ่มขึ้น 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
    โอกาสคริติคอล: 7%
    {เวลาร่าย}: 1 {วิ}
    คูลดาวน์: 40 {วิ}
    สร้างความเสียหาย น้ำแข็ง 12.24 ถึง 18.36
    เพิ่มจำนวนค่าของสถานะ หนาวเย็น ที่สร้าง อีก 350%
    action attack or cast time uses animation length [1]
    action do not face target [1]
    active skill area of effect radius +% final [0]
    base skill can be avoided by dodge roll [1]
    base skill can be blocked [1]
    base skill effect duration [7000]
    ground ice art variation [1007]
    is area damage [1]
    skill does not pathfind [1]
    GSDoryaniCrabFrostLaser90Left
    Triggerable, Spell, Damage
    โอกาสคริติคอล: 7%
    {เวลาร่าย}: 1 {วิ}
    คูลดาวน์: 40 {วิ}
    สร้างความเสียหาย น้ำแข็ง ถึง
    เพิ่มจำนวนค่าของสถานะ หนาวเย็น ที่สร้าง อีก 350%
    action attack or cast time uses animation length [1]
    action do not face target [1]
    active skill area of effect radius +% final [0]
    base skill can be avoided by dodge roll [1]
    base skill can be blocked [1]
    base skill effect duration [7000]
    ground ice art variation [1007]
    is area damage [1]
    skill does not pathfind [1]
    GSDoryaniCrabFrostLaserCorrupt
    Triggerable, Spell, Damage
    โอกาสคริติคอล: 7%
    {เวลาร่าย}: 1 {วิ}
    คูลดาวน์: 40 {วิ}
    สร้างความเสียหาย น้ำแข็ง 12.24 ถึง 18.36
    เพิ่มจำนวนค่าของสถานะ หนาวเย็น ที่สร้าง อีก 350%
    action attack or cast time uses animation length [1]
    action do not face target [1]
    active skill area of effect radius +% final [0]
    base skill can be avoided by dodge roll [1]
    base skill can be blocked [1]
    base skill effect duration [7000]
    ground ice art variation [1007]
    is area damage [1]
    skill does not pathfind [1]
    EAADoryaniCrabLegToss
    คูลดาวน์: 27.5 {วิ}
    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
    โจมตีพื้นฐาน
    Base Damage: 1202–1802
    โอกาส[Critical|ปะทะคริติคอล]: 5%
    ความเสียหายโจมตี: 130%
    Attack Time: 1.005 {วิ}
    คูลดาวน์: 15 {วิ}
    สร้างความเสียหาย โจมตี เพิ่มขึ้น อีก 30%
    แปลงความเสียหาย กายภาพ 30% เป็น น้ำแข็ง
    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
    คูลดาวน์: 45 {วิ}
    action attack or cast time uses animation length [1]
    action do not face target [1]
    skill does not pathfind [1]
    EAADoryaniCrabComboSlam
    คูลดาวน์: 32.5 {วิ}
    action attack or cast time uses animation length [1]
    EASDoryaniCrabExplode
    คูลดาวน์: 40 {วิ}
    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
    คูลดาวน์: 50 {วิ}
    action attack or cast time uses animation length [1]
    MPADoryaniCrabLegToss
    Attack, RangedAttack, MirageArcherCanUse, Projectile, ProjectilesFromUser, Damage, Triggerable
    Base Damage: 1202–1802
    โอกาส[Critical|ปะทะคริติคอล]: 5%
    Attack Time: 1.005 {วิ}
    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
    โอกาสคริติคอล: 6%
    {เวลาร่าย}: 1 {วิ}
    สร้างความเสียหาย สายฟ้า 99.44 ถึง 298.3
    สกิลที่เสริม มีโอกาสสร้างสถานะ ช็อค เพิ่มขึ้น 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
    โอกาส[Critical|ปะทะคริติคอล]: 5%
    Attack Time: 1.005 {วิ}
    action attack or cast time uses animation length [1]
    is area damage [1]
    GADoryaniCrabExplode
    Triggerable, Spell, Damage
    โอกาสคริติคอล: 6%
    {เวลาร่าย}: 1 {วิ}
    สร้างความเสียหาย สายฟ้า 38.24 ถึง 114.7
    สกิลที่เสริม มีโอกาสสร้างสถานะ ช็อค เพิ่มขึ้น 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
    โอกาส[Critical|ปะทะคริติคอล]: 5%
    ความเสียหายโจมตี: 300%
    Attack Time: 1.005 {วิ}
    สร้างความเสียหาย โจมตี เพิ่มขึ้น อีก 200%
    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
    โอกาสคริติคอล: 6%
    {เวลาร่าย}: 1 {วิ}
    สร้างความเสียหาย สายฟ้า 45.89 ถึง 137.7
    สกิลที่เสริม มีโอกาสสร้างสถานะ ช็อค เพิ่มขึ้น 60%
    ยิงโพรเจกไทล์ เพิ่มเติม 2 ลูก
    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
    โอกาส[Critical|ปะทะคริติคอล]: 5%
    ความเสียหายโจมตี: 80%
    Attack Time: 1.005 {วิ}
    สร้างความเสียหาย โจมตี ลดลง อีก 20%
    action attack or cast time uses animation length [1]
    is area damage [1]
    GADoryaniCrabSlamCold
    Triggerable, Attack
    Base Damage: 1202–1802
    โอกาส[Critical|ปะทะคริติคอล]: 5%
    ความเสียหายโจมตี: 185%
    Attack Time: 1.005 {วิ}
    สร้างความเสียหาย โจมตี เพิ่มขึ้น อีก 85%
    แปลงความเสียหาย กายภาพ 70% เป็น น้ำแข็ง
    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
    โอกาส[Critical|ปะทะคริติคอล]: 5%
    ความเสียหายโจมตี: 185%
    Attack Time: 1.005 {วิ}
    สร้างความเสียหาย โจมตี เพิ่มขึ้น อีก 85%
    แปลงความเสียหาย กายภาพ 70% เป็น ไฟ
    action attack or cast time uses animation length [1]
    is area damage [1]
    voll slam damage +% final at centre [50]
    GADoryaniCrabIceLaserSnap
    Triggerable, Spell, Damage
    โอกาสคริติคอล: 6%
    {เวลาร่าย}: 1 {วิ}
    สร้างความเสียหาย สายฟ้า 91.79 ถึง 275.4
    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 = { }, },
        },
    }
    
    เพิ่มโอกาสสร้างสถานะ ช็อค 100%
    active skill ignite effect +% final [33]
    IdEndgameBossIgniteShockBonus
    FamilyDoryaniEndgameIgniteShock
    DomainsMonster (3)
    GenerationTypeยูนิค (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ยูนิค (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
  • ไม่ถูก ผลักออกไป
    IdImmuneToKnockback
    FamilyImmuneToKnockback
    DomainsMonster (3)
    GenerationTypeยูนิค (3)
    Req. level1
    Stats
  • cannot be knocked back Min: 1 Max: 1 Global
  • monster dropped item quantity +% [800]
    monster dropped item rarity +% [10000]
    monster map key of at least same tier as current map drop chance % [25]
    monster slain experience +% [9000]
    unique monster guarantee one rare [1]
    IdMonsterMapBossT3
    FamilyMonsterMapBoss
    DomainsMonster (3)
    GenerationTypeยูนิค (3)
    Req. level1
    Stats
  • monster slain experience +% Min: 9000 Max: 9000 Global
  • monster dropped item rarity +% Min: 10000 Max: 10000 Global
  • monster dropped item quantity +% Min: 800 Max: 800 Global
  • unique monster guarantee one rare Min: 1 Max: 1 Global
  • monster map key of at least same tier as current map drop chance % Min: 25 Max: 25 Global
  • เครื่องฉลองชัยของดอร์ยานี
    no movement speed [1]
    Doryani's Triumph
    SpectreN
    Tagsconstruct, mud_blood, not_dex, not_int, slow_movement
    พลังชีวิต
    360%
    เกราะ
    +60%
    Ailment Threshold
    %
    ค่าต้านทาน
    0 0 0 0
    Damage
    450%
    ความแม่นยำ
    100%
    โอกาสคริติคอล
    +5%
    ตัวคูณคริติคอล
    +130%
    Attack Distance
    7 ~ 41
    Attack Time
    1.005 Second
    Damage Spread
    ±20%
    ค่าประสบการณ์
    300%
    Model Size
    100%
    Type
    DoryaniMech
    Metadata
    DoryaniMechRailGun
    เลเวล
    68
    พลังชีวิต
    27,925
    เกราะ
    5,522
    การหลบหลีก
    477
    Energy Shield
    0
    Damage
    1,049
    ความเสียหายเวท
    1,049
    ความแม่นยำ
    1,090
    Attack Time
    1.005
    ค่าประสบการณ์
    85,902
    GSDoryaniCrabLegProjImpact
    Triggerable, Spell, Damage
    โอกาสคริติคอล: 6%
    {เวลาร่าย}: 1 {วิ}
    สร้างความเสียหาย สายฟ้า 80.75 ถึง 242.2
    สกิลที่เสริม มีโอกาสสร้างสถานะ ช็อค เพิ่มขึ้น 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ยูนิค (3)
    Req. level1
    Stats
  • no movement speed Min: 1 Max: 1 Global
  • เครื่องฉลองชัยของดอร์ยานี
    Doryani's Triumph
    SpectreN
    Tagsconstruct, MonsterBlunt_onhit_audio, mud_blood, not_dex, not_int, slow_movement
    พลังชีวิต
    360%
    เกราะ
    +60%
    Ailment Threshold
    %
    ค่าต้านทาน
    0 0 0 0
    Damage
    450%
    ความแม่นยำ
    100%
    โอกาสคริติคอล
    +5%
    ตัวคูณคริติคอล
    +130%
    Attack Distance
    7 ~ 41
    Attack Time
    1.005 Second
    Damage Spread
    ±20%
    ค่าประสบการณ์
    300%
    Model Size
    100%
    Type
    DoryaniMech
    Metadata
    DoryaniMechHoverPlatform
    เลเวล
    68
    พลังชีวิต
    27,925
    เกราะ
    5,522
    การหลบหลีก
    477
    Energy Shield
    0
    Damage
    1,049
    ความเสียหายเวท
    1,049
    ความแม่นยำ
    1,090
    Attack Time
    1.005
    ค่าประสบการณ์
    85,902
    MeleeAtAnimationSpeedUnique
    Attack, RangedAttack, MirageArcherCanUse, Projectile, MeleeSingleTarget, Multistrikeable, Melee, ProjectilesFromUser
    โจมตีพื้นฐาน
    Base Damage: 839–1259
    โอกาส[Critical|ปะทะคริติคอล]: 5%
    Attack Time: 1.005 {วิ}
    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 = { }, },
        },
    }