多里亞尼的凱旋
地區: 漆黑密室
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%
抗性
0 0 0 0
傷害
450%
命中
100%
暴擊 Chance
5%
暴擊傷害加成
+30%
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
傷害
926
法術傷害
926
命中
1,910
Attack Time
1.005
經驗值
63,483
Minion Life
34,254
Minion Damage
6,549
Minion Armour
7,633
MeleeAtAnimationSpeedUnique
攻擊, 範圍攻擊, 技能可幻影射手, 投射物, 近戰單一目標, 攻擊可重複, 近戰, 玩家投射物
基礎攻擊
Base Damage: 741–1111
暴擊率: 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
可觸發, 攻擊
Base Damage: 741–1111
暴擊率: 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
可觸發, 攻擊
Base Damage: 741–1111
暴擊率: 5%
Attack Time: 1.005 秒
冷卻時間: 20 秒
65% 的物理傷害轉換冰冷傷害
action attack or cast time uses animation length [1]
is area damage [1]
GSDoryaniCrabBrazierSlam
可觸發, 法術, 傷害
暴擊率: 5%
施放時間: 1 秒
冷卻時間: 15 秒
增加 100% 點燃機率
造成 1259618894 火焰傷害
action attack or cast time uses animation length [1]
is area damage [1]
voll slam damage +% final at centre [40]
GSDoryaniCrabDiscoLazer
可觸發, 法術, 傷害
暴擊率: 6%
施放時間: 1 秒
冷卻時間: 35 秒
造成 787.32362 閃電傷害
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
可觸發, 法術, 傷害
暴擊率: 5%
施放時間: 1 秒
冷卻時間: 35 秒
增加 50% 點燃機率
造成 22673401 火焰傷害
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
可觸發, 法術, 傷害
暴擊率: 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
可觸發, 法術, 傷害
暴擊率: 5%
施放時間: 1 秒
冷卻時間: 35 秒
增加 50% 點燃機率
造成 15754724 閃電傷害
被輔助的技能增加 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
可觸發, 法術, 傷害
暴擊率: 7%
施放時間: 1 秒
冷卻時間: 40 秒
造成 12601889 冰冷傷害
施加之冰緩具有 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
可觸發, 法術, 傷害
暴擊率: 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
可觸發, 法術, 傷害
暴擊率: 7%
施放時間: 1 秒
冷卻時間: 40 秒
造成 12601889 冰冷傷害
施加之冰緩具有 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
攻擊, 範圍攻擊, 技能可幻影射手, 投射物, 近戰單一目標, 攻擊可重複, 近戰, 玩家投射物
基礎攻擊
Base Damage: 741–1111
暴擊率: 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
攻擊, 範圍攻擊, 技能可幻影射手, 投射物, 玩家投射物, 傷害, 可觸發
Base Damage: 741–1111
暴擊率: 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
可觸發, 法術, 傷害
暴擊率: 6%
施放時間: 1 秒
造成 1023530704 閃電傷害
被輔助的技能增加 100% 感電機率
action attack or cast time uses animation length [1]
base is projectile [1]
is area damage [1]
spell maximum action distance +% [100]
GADoryaniCrabLegProjImpactWall
可觸發, 攻擊
Base Damage: 741–1111
暴擊率: 5%
Attack Time: 1.005 秒
action attack or cast time uses animation length [1]
is area damage [1]
GADoryaniCrabExplode
可觸發, 法術, 傷害
暴擊率: 6%
施放時間: 1 秒
造成 393611809 閃電傷害
被輔助的技能增加 500% 感電機率
action attack or cast time uses animation length [1]
is area damage [1]
voll slam damage +% final at centre [20]
GADoryaniCrabExplodeSmash
可觸發, 攻擊
Base Damage: 741–1111
暴擊率: 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
法術, 投射物, 玩家投射物, 可觸發, 傷害
暴擊率: 6%
施放時間: 1 秒
造成 472414171 閃電傷害
被輔助的技能增加 60% 感電機率
發射 個額外投射物
active skill projectile speed +% variation final [20]
base is projectile [1]
monster projectile variation [1138]
projectile spread radius [40]
GADoryaniCrabComboSlamBasic
可觸發, 攻擊
Base Damage: 741–1111
暴擊率: 5%
攻擊傷害: 80%
Attack Time: 1.005 秒
造成 20% 更少攻擊傷害
action attack or cast time uses animation length [1]
is area damage [1]
GADoryaniCrabSlamCold
可觸發, 攻擊
Base Damage: 741–1111
暴擊率: 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
可觸發, 攻擊
Base Damage: 741–1111
暴擊率: 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
可觸發, 法術, 傷害
暴擊率: 6%
施放時間: 1 秒
造成 944728342 閃電傷害
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
Domains怪物 (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
    Domains怪物 (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%
    抗性
    30 0 30 0
    傷害
    450%
    命中
    100%
    暴擊 Chance
    5%
    暴擊傷害加成
    +30%
    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
    傷害
    1,502
    法術傷害
    1,502
    命中
    3,204
    Attack Time
    1.005
    經驗值
    300,000
    Minion Life
    66,402
    Minion Damage
    18,550
    Minion Armour
    27,468
    MeleeAtAnimationSpeedUnique
    攻擊, 範圍攻擊, 技能可幻影射手, 投射物, 近戰單一目標, 攻擊可重複, 近戰, 玩家投射物
    基礎攻擊
    Base Damage: 1202–1802
    暴擊率: 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
    可觸發, 攻擊
    Base Damage: 1202–1802
    暴擊率: 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
    可觸發, 攻擊
    Base Damage: 1202–1802
    暴擊率: 5%
    Attack Time: 1.005 秒
    冷卻時間: 20 秒
    65% 的物理傷害轉換冰冷傷害
    action attack or cast time uses animation length [1]
    is area damage [1]
    GSDoryaniCrabBrazierSlam
    可觸發, 法術, 傷害
    暴擊率: 5%
    施放時間: 1 秒
    冷卻時間: 15 秒
    增加 100% 點燃機率
    造成 5788086820 火焰傷害
    action attack or cast time uses animation length [1]
    is area damage [1]
    voll slam damage +% final at centre [40]
    GSDoryaniCrabDiscoLazer
    可觸發, 法術, 傷害
    暴擊率: 6%
    施放時間: 1 秒
    冷卻時間: 35 秒
    造成 361710852 閃電傷害
    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
    可觸發, 法術, 傷害
    暴擊率: 5%
    施放時間: 1 秒
    冷卻時間: 35 秒
    增加 50% 點燃機率
    造成 1041815628 火焰傷害
    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
    可觸發, 法術, 傷害
    暴擊率: 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
    可觸發, 法術, 傷害
    暴擊率: 5%
    施放時間: 1 秒
    冷卻時間: 35 秒
    增加 50% 點燃機率
    造成 723521705 閃電傷害
    被輔助的技能增加 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
    可觸發, 法術, 傷害
    暴擊率: 7%
    施放時間: 1 秒
    冷卻時間: 40 秒
    造成 57888682 冰冷傷害
    施加之冰緩具有 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
    可觸發, 法術, 傷害
    暴擊率: 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
    可觸發, 法術, 傷害
    暴擊率: 7%
    施放時間: 1 秒
    冷卻時間: 40 秒
    造成 57888682 冰冷傷害
    施加之冰緩具有 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
    攻擊, 範圍攻擊, 技能可幻影射手, 投射物, 近戰單一目標, 攻擊可重複, 近戰, 玩家投射物
    基礎攻擊
    Base Damage: 1202–1802
    暴擊率: 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
    攻擊, 範圍攻擊, 技能可幻影射手, 投射物, 玩家投射物, 傷害, 可觸發
    Base Damage: 1202–1802
    暴擊率: 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
    可觸發, 法術, 傷害
    暴擊率: 6%
    施放時間: 1 秒
    造成 47027141082 閃電傷害
    被輔助的技能增加 100% 感電機率
    action attack or cast time uses animation length [1]
    base is projectile [1]
    is area damage [1]
    spell maximum action distance +% [100]
    GADoryaniCrabLegProjImpactWall
    可觸發, 攻擊
    Base Damage: 1202–1802
    暴擊率: 5%
    Attack Time: 1.005 秒
    action attack or cast time uses animation length [1]
    is area damage [1]
    GADoryaniCrabExplode
    可觸發, 法術, 傷害
    暴擊率: 6%
    施放時間: 1 秒
    造成 1808754262 閃電傷害
    被輔助的技能增加 500% 感電機率
    action attack or cast time uses animation length [1]
    is area damage [1]
    voll slam damage +% final at centre [20]
    GADoryaniCrabExplodeSmash
    可觸發, 攻擊
    Base Damage: 1202–1802
    暴擊率: 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
    法術, 投射物, 玩家投射物, 可觸發, 傷害
    暴擊率: 6%
    施放時間: 1 秒
    造成 2170565115 閃電傷害
    被輔助的技能增加 60% 感電機率
    發射 個額外投射物
    active skill projectile speed +% variation final [20]
    base is projectile [1]
    monster projectile variation [1138]
    projectile spread radius [40]
    GADoryaniCrabComboSlamBasic
    可觸發, 攻擊
    Base Damage: 1202–1802
    暴擊率: 5%
    攻擊傷害: 80%
    Attack Time: 1.005 秒
    造成 20% 更少攻擊傷害
    action attack or cast time uses animation length [1]
    is area damage [1]
    GADoryaniCrabSlamCold
    可觸發, 攻擊
    Base Damage: 1202–1802
    暴擊率: 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
    可觸發, 攻擊
    Base Damage: 1202–1802
    暴擊率: 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
    可觸發, 法術, 傷害
    暴擊率: 6%
    施放時間: 1 秒
    造成 43410130229 閃電傷害
    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
    Domains怪物 (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
    Domains怪物 (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
    Domains怪物 (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
    Domains怪物 (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%
    抗性
    0 0 0 0
    傷害
    450%
    命中
    100%
    暴擊 Chance
    5%
    暴擊傷害加成
    +30%
    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
    傷害
    1,049
    法術傷害
    1,049
    命中
    2,180
    Attack Time
    1.005
    經驗值
    85,902
    Minion Life
    40,608
    Minion Damage
    8,534
    Minion Armour
    9,663
    GSDoryaniCrabLegProjImpact
    可觸發, 法術, 傷害
    暴擊率: 6%
    施放時間: 1 秒
    造成 1498444953 閃電傷害
    被輔助的技能增加 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
    Domains怪物 (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%
    抗性
    0 0 0 0
    傷害
    450%
    命中
    100%
    暴擊 Chance
    5%
    暴擊傷害加成
    +30%
    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
    傷害
    1,049
    法術傷害
    1,049
    命中
    2,180
    Attack Time
    1.005
    經驗值
    85,902
    Minion Life
    40,608
    Minion Damage
    8,534
    Minion Armour
    9,663
    MeleeAtAnimationSpeedUnique
    攻擊, 範圍攻擊, 技能可幻影射手, 投射物, 近戰單一目標, 攻擊可重複, 近戰, 玩家投射物
    基礎攻擊
    Base Damage: 839–1259
    暴擊率: 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 = { }, },
        },
    }
    
    Edit

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