多里亚尼的杰作
构造体
区域: 暗胧殿堂
monster dropped item rarity +% [4800]
monster slain experience +% [0]
无法被击退
Doryani's Triumph
SpectreN
Area暗胧殿堂
Tagsconstruct, MonsterBlunt_onhit_audio, mud_blood, not_dex, not_int, slow_movement
生命
420%
+60%
抗性
0 0 0 0
伤害
450%
命中
100%
暴击 Chance
5%
Attack Distance
7 ~ 41
攻击间隔
1.005 Second
Damage Spread
±20%
经验值
300%
Model Size
100%
Type
DoryaniMech
Metadata
DoryaniMech
等级
45
生命
7,732
伤害
488
法术伤害
488
命中
1,028
攻击间隔
1.005
经验值
18,135
召唤物生命
12,844
召唤物伤害
1,239
召唤物护甲
1,638
MeleeAtAnimationSpeedUnique
攻击, 范围攻击, 技能可幻影射手, 投射物, 近战单一目标, 近战, 玩家投射物
基础攻击
Base Damage: 390–586
暴击率: 5%
攻击间隔: 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: 390–586
暴击率: 5%
攻击伤害: 200%
攻击间隔: 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: 390–586
暴击率: 5%
攻击间隔: 1.005 秒
冷却时间: 20 秒
物理伤害的 65% 转化为冰霜伤害
action attack or cast time uses animation length [1]
is area damage [1]
GSDoryaniCrabBrazierSlam
可触发, 法术, 伤害
暴击率: 5%
施放间隔: 1 秒
冷却时间: 15 秒
易燃强度提高 100%
造成 360.1 - 540.1 火焰伤害
action attack or cast time uses animation length [1]
is area damage [1]
voll slam damage +% final at centre [40]
GSDoryaniCrabDiscoLazer
可触发, 法术, 伤害
暴击率: 6%
施放间隔: 1 秒
冷却时间: 35 秒
造成 22.51 - 67.52 闪电伤害
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%
造成 64.82 - 97.22 火焰伤害
action attack or cast time uses animation length [1]
action do not face target [1]
base skill can be avoided by dodge roll [1]
base skill can be blocked [1]
base skill cannot be parried [1]
is area damage [1]
skill does not pathfind [1]
GSDoryaniCrabFlamethrower90Right
可触发, 法术, 伤害
暴击率: 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]
base skill cannot be parried [1]
is area damage [1]
skill does not pathfind [1]
GSDoryaniCrabFlamethrowerCorrupt
可触发, 法术, 伤害
暴击率: 5%
施放间隔: 1 秒
冷却时间: 35 秒
易燃强度提高 50%
造成 - 54.01 火焰伤害
造成 22.51 - 67.52 闪电伤害
被辅助技能的[感电]几率提高 300%
每消耗 1 个耐力球,造成 36.01 - 基础火焰伤害
action attack or cast time uses animation length [1]
action do not face target [1]
base skill can be avoided by dodge roll [1]
base skill can be blocked [1]
base skill cannot be parried [1]
is area damage [1]
skill does not pathfind [1]
GSDoryaniCrabFrostLaser
可触发, 法术, 伤害
暴击率: 7%
施放间隔: 1 秒
冷却时间: 40 秒
造成 36.01 - 54.01 冰霜伤害
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 秒
造成 - 冰霜伤害
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 秒
造成 36.01 - 54.01 冰霜伤害
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: 390–586
暴击率: 5%
攻击伤害: 130%
攻击间隔: 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: 390–586
暴击率: 5%
攻击间隔: 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 秒
造成 292.6 - 877.7 闪电伤害
被辅助技能的[感电]几率提高 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: 390–586
暴击率: 5%
攻击间隔: 1.005 秒
action attack or cast time uses animation length [1]
is area damage [1]
GADoryaniCrabExplode
可触发, 法术, 伤害
暴击率: 6%
施放间隔: 1 秒
造成 112.5 - 337.6 闪电伤害
被辅助技能的[感电]几率提高 500%
action attack or cast time uses animation length [1]
is area damage [1]
voll slam damage +% final at centre [20]
GADoryaniCrabExplodeSmash
可触发, 攻击
Base Damage: 390–586
暴击率: 5%
攻击伤害: 300%
攻击间隔: 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 秒
造成 135 - 405.1 闪电伤害
被辅助技能的[感电]几率提高 60%
发射 2 个额外投射物
active skill projectile speed +% variation final [20]
base is projectile [1]
monster projectile variation [1138]
projectile spread radius [40]
GADoryaniCrabComboSlamBasic
可触发, 攻击
Base Damage: 390–586
暴击率: 5%
攻击伤害: 80%
攻击间隔: 1.005 秒
攻击伤害总降 20%
action attack or cast time uses animation length [1]
is area damage [1]
GADoryaniCrabSlamCold
可触发, 攻击
Base Damage: 390–586
暴击率: 5%
攻击伤害: 185%
攻击间隔: 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: 390–586
暴击率: 5%
攻击伤害: 185%
攻击间隔: 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 秒
造成 270.1 - 810.2 闪电伤害
action attack or cast time uses animation length [1]
active skill area of effect radius +% final [0]
base skill effect duration [4000]
ground ice art variation [1007]
is area damage [1]

Object Type

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

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

BaseEvents
{
	set_is_act_boss = true
}

Stats
{
	set_monster_delay_item_drops_millis = 35000
}

StateMachine
{
	define_shared_state =
	"
		enabled;
		no_collision;
	"

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

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

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

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

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

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

StateMachine
{
	define_shared_state = "pylons_active;"
}

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

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

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

StateMachine
{
	define_shared_state = "hover_crafting;"
}

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

Actor
{
	leveled_starting_effects = "DoLiterallyNothing"

	on_effect_start_EASDoryaniCrabPlatformAttach = { ForceSkillIntoCooldown( EASDoryaniCrabPlatformDetach ); }
}

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

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

Object Type Codes

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

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

Render
{
	use_ao_lights = true
}

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

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

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

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

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

StateMachine
{
	define_state = "current_rotate_dir;"
	define_timer = "check_bearing = 0.033;"

	// compare the bearing and orientation here, and then set the current_rotate_dir state to 1 or 11 for left/right turns
	// that state being set to one of those values causes the additive turn anim to play, then the state is reset after that anim is finished
	on_timer_check_bearing =
	{
		this.orientation = GetOrientation();
		this.bearing = GetAnimatedBearing();
		this.angle_diff = bearing - orientation;
		this.angle_diff = Round( EvalIf( angle_diff > 180.0, angle_diff - 360.0, EvalIf( angle_diff < -180, angle_diff + 360.0, angle_diff ) ), 2 );
		If( Or( And( angle_diff <= 1.0, angle_diff >= -1.0 ), GetCurrentMoveSpeed() > 1.0 ), (){ SetStateTo( current_rotate_dir, 0 ); } );
		If( And( angle_diff > 1.0, GetCurrentMoveSpeed() < 1.0 ), (){ SetStateTo( current_rotate_dir, 1 ); } );
		If( And( angle_diff < -1.0, GetCurrentMoveSpeed() < 1.0 ), (){ SetStateTo( current_rotate_dir, 2 ); } );
		// Speed up the additive turn anims as the turn speed increases
		local angle_diff_clamped = Clamp( angle_diff, -100, 100 );
		local scaling_factor = Eval( Abs( angle_diff_clamped ) / turn_speed_mult );
		local layer_speed = Clamp( scaling_factor, 1.0, 10.0 );
		// Log( 'Angle Diff: {angle_diff} | Layer Speed: {layer_speed}', c );
		If( Abs( angle_diff_clamped ) < 15, ()
		{
			layer_speed = layer_speed * Eval( Abs( angle_diff_clamped ) / 15 );
		} );
		SetLayerAnimationSpeed( 9, layer_speed );
		SetLayerAnimationSpeed( 10, layer_speed );
		StartStateTimer( check_bearing );
	}

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

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

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

Life
{
	on_death = { IfState( quick_death, 1, (){ Delay( 0.0, { all_attachments.SetCurrentAnimationSpeed( 10000.0 ); } ); } ); }
}

/* ------------------------------------------------------------------------------------------------------------------- */
/* 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' );
		this.all_attachments = hover_craft;
		this.all_attachments += l_arm_front;
		this.all_attachments += r_arm_front;
		this.all_attachments += l_arm_back;
		this.all_attachments += r_arm_back;
		// 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 = 4.2,
    fireResist = 0,
    coldResist = 0,
    lightningResist = 0,
    chaosResist = 0,
    damage = 4.5,
    damageSpread = 0.2,
    attackTime = 1.005,
    attackRange = 41,
    accuracy = 1,
    skillList = {
        "MeleeAtAnimationSpeedUnique",
        "MASDoryaniCrabSweep180",
        "MPADoryaniCrabLegToss",
        "MPSDoryaniCrabLightningCage",
        "GADoryaniCrabBodySlam",
        "GADoryaniCrabExplode",
        "GADoryaniCrabExplodeSmash",
        "GSDoryaniCrabBrazierSlam",
        "GSDoryaniCrabDiscoLazer",
        "GSDoryaniCrabFlamethrower",
        "GSDoryaniCrabFlamethrower90Right",
        "GSDoryaniCrabFlamethrowerCorrupt",
        "GSDoryaniCrabFrostLaser",
        "GSDoryaniCrabFrostLaser90Left",
        "GSDoryaniCrabFrostLaserCorrupt",
        "GSDoryaniCrabLegProjImpact",
        "GADoryaniCrabLegProjImpactWall",
        "GADoryaniCrabSlamCold",
        "GADoryaniCrabSlamFire",
        "GADoryaniCrabComboSlamBasic",
        "GADoryaniCrabIceLaserSnap",
        "EASDoryaniCrabExplode",
        "EASDoryaniCrabLightningCage",
        "EASDoryaniCrabPlatformAttach",
        "EASDoryaniCrabPlatformDetach",
        "EAADoryaniCrabLegToss",
        "EAADoryaniCrabComboSlam",
        "EDADoryaniCrabClawSlam",
    },
    modList = {
    },
}
-- src\Data\Skills\spectre.lua
skills["MeleeAtAnimationSpeedUnique"] = {
    name = "Basic Attack",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Attack] = true,
        [SkillType.RangedAttack] = true,
        [SkillType.MirageArcherCanUse] = true,
        [SkillType.Projectile] = true,
        [SkillType.MeleeSingleTarget] = true,
        [SkillType.Melee] = true,
        [SkillType.ProjectilesFromUser] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
        attack = true,
        melee = true,
        projectile = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "monster_penalty_against_minions_damage_+%_final_vs_player_minions",
        "skill_can_fire_arrows",
        "skill_can_fire_wand_projectiles",
        "action_attack_or_cast_time_uses_animation_length",
        "projectile_uses_contact_position",
        "use_scaled_contact_offset",
    },
    levels = {
        [1] = {100, levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["MASDoryaniCrabSweep180"] = {
    name = "Basic Attack",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Attack] = true,
        [SkillType.RangedAttack] = true,
        [SkillType.MirageArcherCanUse] = true,
        [SkillType.Projectile] = true,
        [SkillType.MeleeSingleTarget] = true,
        [SkillType.Melee] = true,
        [SkillType.ProjectilesFromUser] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
        attack = true,
        melee = true,
        projectile = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "attack_maximum_action_distance_+",
        "active_skill_base_physical_damage_%_to_convert_to_cold",
        "skill_can_fire_arrows",
        "skill_can_fire_wand_projectiles",
        "action_attack_or_cast_time_uses_animation_length",
        "projectile_uses_contact_position",
        "use_scaled_contact_offset",
        "action_do_not_face_target",
        "skill_does_not_pathfind",
    },
    levels = {
        [1] = {33, 30, baseMultiplier = 1.3, levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["MPADoryaniCrabLegToss"] = {
    name = "MPADoryaniCrabLegToss",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Attack] = true,
        [SkillType.RangedAttack] = true,
        [SkillType.MirageArcherCanUse] = true,
        [SkillType.Projectile] = true,
        [SkillType.ProjectilesFromUser] = true,
        [SkillType.Damage] = true,
        [SkillType.Triggerable] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
        attack = true,
        projectile = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "monster_projectile_variation",
        "base_is_projectile",
        "projectile_uses_contact_position",
        "action_attack_or_cast_time_uses_animation_length",
        "base_deal_no_damage",
        "projectile_ballistic_angle_from_target_distance",
    },
    levels = {
        [1] = {1136, levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["MPSDoryaniCrabLightningCage"] = {
    name = "MPSDoryaniCrabLightningCage",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Spell] = true,
        [SkillType.Projectile] = true,
        [SkillType.ProjectilesFromUser] = true,
        [SkillType.Triggerable] = true,
        [SkillType.Damage] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
        spell = true,
        projectile = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "spell_minimum_base_lightning_damage",
        "spell_maximum_base_lightning_damage",
        "monster_projectile_variation",
        "number_of_additional_projectiles",
        "projectile_spread_radius",
        "active_skill_projectile_speed_+%_variation_final",
        "shock_chance_+%",
        "base_is_projectile",
    },
    levels = {
        [1] = {0.5, 1.5, 1138, 2, 40, 20, 60, critChance = 6, levelRequirement = 1, statInterpolation = {3, 3},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["GADoryaniCrabBodySlam"] = {
    name = "GADoryaniCrabBodySlam",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Triggerable] = true,
        [SkillType.Attack] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
        attack = true,
        area = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "voll_slam_damage_+%_final_at_centre",
        "is_area_damage",
        "action_attack_or_cast_time_uses_animation_length",
    },
    levels = {
        [1] = {40, baseMultiplier = 2, levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["GADoryaniCrabExplode"] = {
    name = "GADoryaniCrabExplode",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Triggerable] = true,
        [SkillType.Spell] = true,
        [SkillType.Damage] = true,
    },
    statDescriptionScope = "geometry_spell",
    castTime = 1,
    baseFlags = {
        spell = true,
        area = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "spell_minimum_base_lightning_damage",
        "spell_maximum_base_lightning_damage",
        "voll_slam_damage_+%_final_at_centre",
        "shock_chance_+%",
        "is_area_damage",
        "action_attack_or_cast_time_uses_animation_length",
    },
    levels = {
        [1] = {0.5, 1.5, 20, 500, critChance = 6, levelRequirement = 1, statInterpolation = {3, 3},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["GADoryaniCrabExplodeSmash"] = {
    name = "GADoryaniCrabExplodeSmash",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Triggerable] = true,
        [SkillType.Attack] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
        attack = true,
        area = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "voll_slam_damage_+%_final_at_centre",
        "is_area_damage",
        "action_attack_or_cast_time_uses_animation_length",
    },
    levels = {
        [1] = {40, baseMultiplier = 3, levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["GSDoryaniCrabBrazierSlam"] = {
    name = "GSDoryaniCrabBrazierSlam",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Triggerable] = true,
        [SkillType.Spell] = true,
        [SkillType.Damage] = true,
    },
    statDescriptionScope = "geometry_spell",
    castTime = 1,
    baseFlags = {
        spell = true,
        area = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "spell_minimum_base_fire_damage",
        "spell_maximum_base_fire_damage",
        "ignite_chance_+%",
        "voll_slam_damage_+%_final_at_centre",
        "is_area_damage",
        "action_attack_or_cast_time_uses_animation_length",
    },
    levels = {
        [1] = {0.80000001192093, 1.2000000476837, 100, 40, critChance = 5, levelRequirement = 1, statInterpolation = {3, 3},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["GSDoryaniCrabDiscoLazer"] = {
    name = "GSDoryaniCrabDiscoLazer",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Triggerable] = true,
        [SkillType.Spell] = true,
        [SkillType.Damage] = true,
    },
    statDescriptionScope = "geometry_spell",
    castTime = 1,
    baseFlags = {
        spell = true,
        area = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "spell_minimum_base_lightning_damage",
        "spell_maximum_base_lightning_damage",
        "is_area_damage",
        "action_attack_or_cast_time_uses_animation_length",
        "action_do_not_face_target",
        "skill_does_not_pathfind",
    },
    levels = {
        [1] = {0.5, 1.5, critChance = 6, levelRequirement = 1, statInterpolation = {3, 3},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["GSDoryaniCrabFlamethrower"] = {
    name = "GSDoryaniCrabFlamethrower",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Triggerable] = true,
        [SkillType.Spell] = true,
        [SkillType.Damage] = true,
    },
    statDescriptionScope = "geometry_spell",
    castTime = 1,
    baseFlags = {
        spell = true,
        area = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "spell_minimum_base_fire_damage",
        "spell_maximum_base_fire_damage",
        "ignite_chance_+%",
        "is_area_damage",
        "action_attack_or_cast_time_uses_animation_length",
        "action_do_not_face_target",
        "skill_does_not_pathfind",
        "base_skill_can_be_avoided_by_dodge_roll",
        "base_skill_can_be_blocked",
        "base_skill_cannot_be_parried",
    },
    levels = {
        [1] = {0.80000001192093, 1.2000000476837, 50, critChance = 5, levelRequirement = 1, statInterpolation = {3, 3},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["GSDoryaniCrabFlamethrower90Right"] = {
    name = "GSDoryaniCrabFlamethrower90Right",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Triggerable] = true,
        [SkillType.Spell] = true,
        [SkillType.Damage] = true,
    },
    statDescriptionScope = "geometry_spell",
    castTime = 1,
    baseFlags = {
        spell = true,
        area = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "spell_minimum_base_fire_damage",
        "spell_maximum_base_fire_damage",
        "ignite_chance_+%",
        "is_area_damage",
        "action_attack_or_cast_time_uses_animation_length",
        "action_do_not_face_target",
        "skill_does_not_pathfind",
        "base_skill_can_be_avoided_by_dodge_roll",
        "base_skill_can_be_blocked",
        "base_skill_cannot_be_parried",
    },
    levels = {
        [1] = {0.80000001192093, 1.2000000476837, 50, critChance = 5, levelRequirement = 1, statInterpolation = {3, 3},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["GSDoryaniCrabFlamethrowerCorrupt"] = {
    name = "GSDoryaniCrabFlamethrowerCorrupt",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Triggerable] = true,
        [SkillType.Spell] = true,
        [SkillType.Damage] = true,
    },
    statDescriptionScope = "geometry_spell",
    castTime = 1,
    baseFlags = {
        spell = true,
        area = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "spell_minimum_base_lightning_damage",
        "spell_maximum_base_lightning_damage",
        "spell_minimum_base_fire_damage_per_removable_endurance_charge",
        "spell_maximum_base_fire_damage",
        "shock_chance_+%",
        "ignite_chance_+%",
        "is_area_damage",
        "action_attack_or_cast_time_uses_animation_length",
        "action_do_not_face_target",
        "skill_does_not_pathfind",
        "base_skill_can_be_avoided_by_dodge_roll",
        "base_skill_can_be_blocked",
        "base_skill_cannot_be_parried",
    },
    levels = {
        [1] = {0.25, 0.75, 0.40000000596046, 0.60000002384186, 300, 50, critChance = 5, levelRequirement = 1, statInterpolation = {3, 3, 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",
        "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, 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",
        "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, 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",
        "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, 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 +% [4800]
monster slain experience +% [0]
FamilyMonsterActBoss
Domains怪物 (3)
GenerationType传奇 (3)
Req. level1
Stats
  • monster slain experience +% Min: 0 Max: 0 Global
  • monster dropped item rarity +% Min: 4800 Max: 4800 Global
  • 无法被击退
    FamilyImmuneToKnockback
    Domains怪物 (3)
    GenerationType传奇 (3)
    Req. level1
    Stats
  • cannot be knocked back Min: 1 Max: 1 Global
  • keyval
    StateMachine./*,
    StateMachine.boss_life_bar - controls when to show the big life bar (also requires the checkbox in MonsterVarieties to be checked)
    StateMachine.0: Life bar is hidden
    StateMachine.1: Life bar is visible, will hide on death
    StateMachine.dont_hide_lifebar_on_unaggro - controls whether the boss life bar should be hidden when the boss unaggros
    StateMachine.0: Life bar is hidden after a short duration when the boss loses aggro
    StateMachine.1: Life bar remains visible the entire time, can still be controlled by setting the disable_life_bar state
    StateMachine.show_life_bar_when_in_range - delay the life bar from showing up, until the boss is on screen (for wild bosses)
    StateMachine.0: Life bar behaves as normal
    StateMachine.1: Life bar initially only shows up when a player can see the boss on screen, this doesn't make it get removed if the player goes off screen though
    StateMachine.hidden - replaces the Unaggro+hidden_monster combo, and optionally pauses delirium fog
    StateMachine.0: Make aggro and remove hidden monster buff
    StateMachine.1: Unaggro and add hidden monster buff
    StateMachine.2: Unaggro, add hidden monster buff and pause delirium fog
    StateMachine.light - controls the boss point light, attaches to head_light_attachment if it exists (otherwise uses the default)
    StateMachine.0: Light off, handles the fade out
    StateMachine.1: Light on, handles the fade in
    StateMachine.introsequence - for bosses that are doing something before you rudely interrupt them
    StateMachine.boss uses the ChangeToStance1BossFightStart granted effect for this, which is added through the actor component in here
    StateMachine.0: no intro sequence
    StateMachine.1: boss starts off in stance2, then does change to stance1 when a proximity trigger is triggered
    StateMachine.intro_zoom - for bosses that should have the camera zoom out during the intro
    StateMachine.0: no zoom
    StateMachine.1: zoom enabled, with default values. These can be overridden in the monsters ots.
    StateMachine.intro_pan - for bosses that should have the camera pan towards them during the intro
    StateMachine.0: no pan
    StateMachine.1: pan enabled, with default values. These can be overridden in the monsters ots.
    StateMachine.use_offset_camera_controller - if this is set to 1, the boss will spawn and use a specific object as the zoom/pan center point
    StateMachine.The location of this object needs to be set by the boss too, if it isn't you will get warning message
    StateMachine.See GreatWhiteOne (shark boss) as an example, but all you really need is to set the state to 1 and move the object after it spawns
    StateMachine.0: use self as zoom/pan origin
    StateMachine.1: use a new object as the zoom/pan origin
    StateMachine.door_type - defaults to 0 for no door (or no boss control over door), other values are related to specific door types
    StateMachine.When used, also need to do 'set_telepad_indexx' in the monsters ots (BaseEvents), where x is the telepad index
    StateMachine.0: disable telepad, but only if a telepad index has been set
    StateMachine.1: force field door, forcefield blocks entrance on boss aggro, is removed on boss death (requires Metadata/MiscellaneousObjects/BossForceFieldDoor.ot in arena)
    StateMachine.2: prisoner boss door, closed on fight start, doesn't reopen afterwards (Metadata/Terrain/Gallows/Act4/4_5_2/Objects/PrisonBossDoor.ot)
    StateMachine.roaming - State for disabling instant portals on roaming bosses vs arena bosses.
    StateMachine.0: Arena Boss
    StateMachine.1: Roaming Boss
    StateMachine.arena_sector_id - If there are multiple arena bosses in an instance, each boss needs a different arena_sector_id INCLUDING roaming bosses
    StateMachine.It defaults to 1 so most bosses wont need this to be changed
    StateMachine.Currently supports up to three different bosses, but its easy to add more
    StateMachine.This state value is used to decide which boss sectors to destroy, see the triggerbracket on death in the BossBase.ots for more detail
    StateMachine.use_custom_sector_removal_handling - Set to 1 if a boss needs to use its own custom handling for sector removal on death (eg Mastodon)
    StateMachine.0: default behaviour, arena sector is removed on boss death
    StateMachine.1: custom behaviour, this disables the on death sector removal in boss base, so will need to be handled in the bosses otc AND ots
    StateMachine.quick_death_enabled - Use this for bosses with long deaths that are visible when you resurrect at checkpoint after killing them
    StateMachine.DO NOT set the quick_death state manually, this will cause the monster to do its quick death anim when it first dies
    StateMachine.0: default behaviour, death will be played at regular speed
    StateMachine.1: death anim is sped up by 10000x, this should be used for bosses that have events in their death that need to trigger
    StateMachine.2: death anim is sped up by 1000x, deaths with move events dont like being super fast so they can use this slower one
    StateMachine.am_final_boss_in_fight - This is used for multi boss fights to handle resurrecting etc after killing a single boss from fight
    StateMachine.0: reaching this state toggles part_of_multiple_boss_fight to be true, and signifies that this boss is not the final boss
    StateMachine.1: default value, will remain here unless another boss turns flips it to 0
    StateMachine.part_of_multiple_boss_fight - helper state for the above, shouldn't be interacted with manually
    StateMachine.0: currently not part of a multi boss fight
    StateMachine.1: was part of a multi boss fight at some point
    StateMachine.*/,
    StateMachine.define_shared_state =
    StateMachine.",
    StateMachine.boss_life_bar;
    StateMachine.hidden;
    StateMachine.light;
    StateMachine.introsequence;
    StateMachine.disable_life_bar;
    StateMachine.intro_zoom;
    StateMachine.intro_pan;
    StateMachine.use_offset_camera_controller;
    StateMachine.door_type;
    StateMachine.roaming;
    StateMachine.first_aggro;
    StateMachine.room_marker;
    StateMachine.arena_sector_id1;
    StateMachine.use_custom_sector_removal_handling;
    StateMachine.quick_death_enabled;
    StateMachine.quick_death;
    StateMachine.am_final_boss_in_fight1;
    StateMachine.part_of_multiple_boss_fight;
    StateMachine.dead - Boss is dead. This state is saved to the character checkpoint, so if you respawn at checkpoint this state will be automatically set. In BossBase.ots, this also calls KillSelfNoDrops().
    StateMachine.if you DON'T want this state to save/load automatically, use StateMachine{ checkpoint_save_deadfalse }
    StateMachine.0: Boss is alive
    StateMachine.1: Boss is dead
    StateMachine.2: Boss is dead and corpse is hidden
    StateMachine.define_shared_checkpoint_statedead
    StateMachine.define_shared_statehover_crafting;
    Actor.slow_animations_go_to_idlefalse
    Actor.leveled_starting_effectsCTS1BossFightStart, DoLiterallyNothing
    Actor.on_effect_start_EASDoryaniCrabPlatformAttach{ ForceSkillIntoCooldown( EASDoryaniCrabPlatformDetach ); }
    Stats.corpse_cannot_be_destroyed1
    Stats.base_heavy_stun_duration_ms4000
    Stats.additional_life_scaling_index6
    Stats.monster_delay_item_drops_millis35000
    Life.corpse_usablefalse
    Monster.is_bosstrue
    BaseEvents.is_act_bosstrue
    Animated.always_interpolate_bearingtrue
    Functions.no_face{ SetMovementFaceMode( DontFace ); }
    Functions.do_face{ SetMovementFaceMode( FaceDirection ); }
    多里亚尼的杰作
    构造体
    区域: 磐石城塞
    [感电]几率提高 100%
    active skill ignite effect +% final [33]
    monster dropped item rarity +% [4800]
    monster slain experience +% [0]
    无法被击退
    monster dropped item quantity +% [800]
    monster dropped item rarity +% [3200]
    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
    生命
    420%
    +100%
    抗性
    30 0 30 0
    伤害
    450%
    命中
    100%
    暴击 Chance
    5%
    Attack Distance
    7 ~ 41
    攻击间隔
    1.005 Second
    Damage Spread
    ±20%
    经验值
    300%
    Model Size
    100%
    Type
    DoryaniMechMap
    Metadata
    DoryaniMechMap
    等级
    80
    生命
    65,558
    9,606
    伤害
    1,502
    法术伤害
    1,502
    命中
    3,718
    攻击间隔
    1.005
    经验值
    300,000
    召唤物生命
    42,353
    召唤物伤害
    7,994
    召唤物护甲
    19,212
    MeleeAtAnimationSpeedUnique
    攻击, 范围攻击, 技能可幻影射手, 投射物, 近战单一目标, 近战, 玩家投射物
    基础攻击
    Base Damage: 1202–1802
    暴击率: 5%
    攻击间隔: 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%
    攻击间隔: 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%
    攻击间隔: 1.005 秒
    冷却时间: 20 秒
    物理伤害的 65% 转化为冰霜伤害
    action attack or cast time uses animation length [1]
    is area damage [1]
    GSDoryaniCrabBrazierSlam
    可触发, 法术, 伤害
    暴击率: 5%
    施放间隔: 1 秒
    冷却时间: 15 秒
    易燃强度提高 100%
    造成 1089 - 1634 火焰伤害
    action attack or cast time uses animation length [1]
    is area damage [1]
    voll slam damage +% final at centre [40]
    GSDoryaniCrabDiscoLazer
    可触发, 法术, 伤害
    暴击率: 6%
    施放间隔: 1 秒
    冷却时间: 35 秒
    造成 68.08 - 204.2 闪电伤害
    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%
    造成 196.1 - 294.1 火焰伤害
    action attack or cast time uses animation length [1]
    action do not face target [1]
    base skill can be avoided by dodge roll [1]
    base skill can be blocked [1]
    base skill cannot be parried [1]
    is area damage [1]
    skill does not pathfind [1]
    GSDoryaniCrabFlamethrower90Right
    可触发, 法术, 伤害
    暴击率: 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]
    base skill cannot be parried [1]
    is area damage [1]
    skill does not pathfind [1]
    GSDoryaniCrabFlamethrowerCorrupt
    可触发, 法术, 伤害
    暴击率: 5%
    施放间隔: 1 秒
    冷却时间: 35 秒
    易燃强度提高 50%
    造成 - 163.4 火焰伤害
    造成 68.08 - 204.2 闪电伤害
    被辅助技能的[感电]几率提高 300%
    每消耗 1 个耐力球,造成 108.9 - 基础火焰伤害
    action attack or cast time uses animation length [1]
    action do not face target [1]
    base skill can be avoided by dodge roll [1]
    base skill can be blocked [1]
    base skill cannot be parried [1]
    is area damage [1]
    skill does not pathfind [1]
    GSDoryaniCrabFrostLaser
    可触发, 法术, 伤害
    暴击率: 7%
    施放间隔: 1 秒
    冷却时间: 40 秒
    造成 108.9 - 163.4 冰霜伤害
    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 秒
    造成 - 冰霜伤害
    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 秒
    造成 108.9 - 163.4 冰霜伤害
    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%
    攻击间隔: 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%
    攻击间隔: 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 秒
    造成 885 - 2655 闪电伤害
    被辅助技能的[感电]几率提高 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%
    攻击间隔: 1.005 秒
    action attack or cast time uses animation length [1]
    is area damage [1]
    GADoryaniCrabExplode
    可触发, 法术, 伤害
    暴击率: 6%
    施放间隔: 1 秒
    造成 340.4 - 1021 闪电伤害
    被辅助技能的[感电]几率提高 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%
    攻击间隔: 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 秒
    造成 408.5 - 1225 闪电伤害
    被辅助技能的[感电]几率提高 60%
    发射 2 个额外投射物
    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%
    攻击间隔: 1.005 秒
    攻击伤害总降 20%
    action attack or cast time uses animation length [1]
    is area damage [1]
    GADoryaniCrabSlamCold
    可触发, 攻击
    Base Damage: 1202–1802
    暴击率: 5%
    攻击伤害: 185%
    攻击间隔: 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%
    攻击间隔: 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 秒
    造成 816.9 - 2451 闪电伤害
    action attack or cast time uses animation length [1]
    active skill area of effect radius +% final [0]
    base skill effect duration [4000]
    ground ice art variation [1007]
    is area damage [1]

    Object Type

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

    Object Type Codes

    version 2
    extends "Metadata/Monsters/Monster"
    extends "Metadata/Monsters/BossBase"
    
    /* ------------------------------------------------------------------------------------------------------------------- */
    /* Generic */
    /* ------------------------------------------------------------------------------------------------------------------- */
    
    Render
    {
    	use_ao_lights = true
    }
    
    StateMachine
    {
    	on_or_create_state_enabled_0 =
    	{
    		RemoveCollidability();
    		DisableTargetable();
    	}
    
    	on_state_enabled_1 =
    	{
    		SetCustomCameraSpeed( 0.65 );
    		CreateCameraZoomNode( 9, 9, 1.5 );
    	}
    
    	on_or_create_state_enabled_2 =
    	{
    		StartStateTimer( check_bearing );
    		MakeCollidable();
    		EnableTargetable();
    		SetCustomCameraSpeed( 1.0 );
    		ClearCameraZoomNodes();
    	}
    }
    
    Positioned
    {
    	on_movement_started =
    	{
    		If( GetState( current_rotate_dir ) > 0, (){ SetStateTo( current_rotate_dir, 0 ); } );
    	}
    }
    
    BaseEvents
    {
    	// modify this to change how the turn speed is scaled as the turn distance increases
    	set_turn_speed_mult = 60
    }
    
    StateMachine
    {
    	define_state = "current_rotate_dir;"
    	define_timer = "check_bearing = 0.033;"
    
    	// compare the bearing and orientation here, and then set the current_rotate_dir state to 1 or 11 for left/right turns
    	// that state being set to one of those values causes the additive turn anim to play, then the state is reset after that anim is finished
    	on_timer_check_bearing =
    	{
    		this.orientation = GetOrientation();
    		this.bearing = GetAnimatedBearing();
    		this.angle_diff = bearing - orientation;
    		this.angle_diff = Round( EvalIf( angle_diff > 180.0, angle_diff - 360.0, EvalIf( angle_diff < -180, angle_diff + 360.0, angle_diff ) ), 2 );
    		If( Or( And( angle_diff <= 1.0, angle_diff >= -1.0 ), GetCurrentMoveSpeed() > 1.0 ), (){ SetStateTo( current_rotate_dir, 0 ); } );
    		If( And( angle_diff > 1.0, GetCurrentMoveSpeed() < 1.0 ), (){ SetStateTo( current_rotate_dir, 1 ); } );
    		If( And( angle_diff < -1.0, GetCurrentMoveSpeed() < 1.0 ), (){ SetStateTo( current_rotate_dir, 2 ); } );
    		// Speed up the additive turn anims as the turn speed increases
    		local angle_diff_clamped = Clamp( angle_diff, -100, 100 );
    		local scaling_factor = Eval( Abs( angle_diff_clamped ) / turn_speed_mult );
    		local layer_speed = Clamp( scaling_factor, 1.0, 10.0 );
    		// Log( 'Angle Diff: {angle_diff} | Layer Speed: {layer_speed}', c );
    		If( Abs( angle_diff_clamped ) < 15, ()
    		{
    			layer_speed = layer_speed * Eval( Abs( angle_diff_clamped ) / 15 );
    		} );
    		SetLayerAnimationSpeed( 9, layer_speed );
    		SetLayerAnimationSpeed( 10, layer_speed );
    		StartStateTimer( check_bearing );
    	}
    
    	// if current_rotate_dir is 0, it means the monster isn't turning so fade out the additive turns
    	on_state_current_rotate_dir_0 =
    	{
    		FadeAnimations( 9, 0.2 );
    		FadeAnimations( 10, 0.2 );
    	}
    
    	// play a different additive turn anim for different turn directions and velocity
    	on_state_current_rotate_dir_1 =
    	{
    		FadeAnimations( 10, 0.2 );
    		PlayAdditiveAnimation( turn_01_right, 9 );
    	}
    
    	on_state_current_rotate_dir_2 =
    	{
    		FadeAnimations( 9, 0.2 );
    		PlayAdditiveAnimation( turn_01_left, 10 );
    	}
    }
    
    Life
    {
    	on_death = { IfState( quick_death, 1, (){ Delay( 0.0, { all_attachments.SetCurrentAnimationSpeed( 10000.0 ); } ); } ); }
    }
    
    /* ------------------------------------------------------------------------------------------------------------------- */
    /* 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' );
    		this.all_attachments = hover_craft;
    		this.all_attachments += l_arm_front;
    		this.all_attachments += r_arm_front;
    		this.all_attachments += l_arm_back;
    		this.all_attachments += r_arm_back;
    		// 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 = 4.2,
        fireResist = 0,
        coldResist = 0,
        lightningResist = 0,
        chaosResist = 0,
        damage = 4.5,
        damageSpread = 0.2,
        attackTime = 1.005,
        attackRange = 41,
        accuracy = 1,
        skillList = {
            "MeleeAtAnimationSpeedUnique",
            "MASDoryaniCrabSweep180",
            "MPADoryaniCrabLegToss",
            "MPSDoryaniCrabLightningCage",
            "GADoryaniCrabBodySlam",
            "GADoryaniCrabExplode",
            "GADoryaniCrabExplodeSmash",
            "GSDoryaniCrabBrazierSlam",
            "GSDoryaniCrabDiscoLazer",
            "GSDoryaniCrabFlamethrower",
            "GSDoryaniCrabFlamethrower90Right",
            "GSDoryaniCrabFlamethrowerCorrupt",
            "GSDoryaniCrabFrostLaser",
            "GSDoryaniCrabFrostLaser90Left",
            "GSDoryaniCrabFrostLaserCorrupt",
            "GSDoryaniCrabLegProjImpact",
            "GADoryaniCrabLegProjImpactWall",
            "GADoryaniCrabSlamCold",
            "GADoryaniCrabSlamFire",
            "GADoryaniCrabComboSlamBasic",
            "GADoryaniCrabIceLaserSnap",
            "EASDoryaniCrabExplode",
            "EASDoryaniCrabLightningCage",
            "EASDoryaniCrabPlatformAttach",
            "EASDoryaniCrabPlatformDetach",
            "EAADoryaniCrabLegToss",
            "EAADoryaniCrabComboSlam",
            "EDADoryaniCrabClawSlam",
        },
        modList = {
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["MeleeAtAnimationSpeedUnique"] = {
        name = "Basic Attack",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Attack] = true,
            [SkillType.RangedAttack] = true,
            [SkillType.MirageArcherCanUse] = true,
            [SkillType.Projectile] = true,
            [SkillType.MeleeSingleTarget] = true,
            [SkillType.Melee] = true,
            [SkillType.ProjectilesFromUser] = true,
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1,
        baseFlags = {
            attack = true,
            melee = true,
            projectile = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "monster_penalty_against_minions_damage_+%_final_vs_player_minions",
            "skill_can_fire_arrows",
            "skill_can_fire_wand_projectiles",
            "action_attack_or_cast_time_uses_animation_length",
            "projectile_uses_contact_position",
            "use_scaled_contact_offset",
        },
        levels = {
            [1] = {100, levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["MASDoryaniCrabSweep180"] = {
        name = "Basic Attack",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Attack] = true,
            [SkillType.RangedAttack] = true,
            [SkillType.MirageArcherCanUse] = true,
            [SkillType.Projectile] = true,
            [SkillType.MeleeSingleTarget] = true,
            [SkillType.Melee] = true,
            [SkillType.ProjectilesFromUser] = true,
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1,
        baseFlags = {
            attack = true,
            melee = true,
            projectile = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "attack_maximum_action_distance_+",
            "active_skill_base_physical_damage_%_to_convert_to_cold",
            "skill_can_fire_arrows",
            "skill_can_fire_wand_projectiles",
            "action_attack_or_cast_time_uses_animation_length",
            "projectile_uses_contact_position",
            "use_scaled_contact_offset",
            "action_do_not_face_target",
            "skill_does_not_pathfind",
        },
        levels = {
            [1] = {33, 30, baseMultiplier = 1.3, levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["MPADoryaniCrabLegToss"] = {
        name = "MPADoryaniCrabLegToss",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Attack] = true,
            [SkillType.RangedAttack] = true,
            [SkillType.MirageArcherCanUse] = true,
            [SkillType.Projectile] = true,
            [SkillType.ProjectilesFromUser] = true,
            [SkillType.Damage] = true,
            [SkillType.Triggerable] = true,
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1,
        baseFlags = {
            attack = true,
            projectile = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "monster_projectile_variation",
            "base_is_projectile",
            "projectile_uses_contact_position",
            "action_attack_or_cast_time_uses_animation_length",
            "base_deal_no_damage",
            "projectile_ballistic_angle_from_target_distance",
        },
        levels = {
            [1] = {1136, levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["MPSDoryaniCrabLightningCage"] = {
        name = "MPSDoryaniCrabLightningCage",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Spell] = true,
            [SkillType.Projectile] = true,
            [SkillType.ProjectilesFromUser] = true,
            [SkillType.Triggerable] = true,
            [SkillType.Damage] = true,
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1,
        baseFlags = {
            spell = true,
            projectile = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "spell_minimum_base_lightning_damage",
            "spell_maximum_base_lightning_damage",
            "monster_projectile_variation",
            "number_of_additional_projectiles",
            "projectile_spread_radius",
            "active_skill_projectile_speed_+%_variation_final",
            "shock_chance_+%",
            "base_is_projectile",
        },
        levels = {
            [1] = {0.5, 1.5, 1138, 2, 40, 20, 60, critChance = 6, levelRequirement = 1, statInterpolation = {3, 3},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["GADoryaniCrabBodySlam"] = {
        name = "GADoryaniCrabBodySlam",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Triggerable] = true,
            [SkillType.Attack] = true,
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1,
        baseFlags = {
            attack = true,
            area = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "voll_slam_damage_+%_final_at_centre",
            "is_area_damage",
            "action_attack_or_cast_time_uses_animation_length",
        },
        levels = {
            [1] = {40, baseMultiplier = 2, levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["GADoryaniCrabExplode"] = {
        name = "GADoryaniCrabExplode",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Triggerable] = true,
            [SkillType.Spell] = true,
            [SkillType.Damage] = true,
        },
        statDescriptionScope = "geometry_spell",
        castTime = 1,
        baseFlags = {
            spell = true,
            area = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "spell_minimum_base_lightning_damage",
            "spell_maximum_base_lightning_damage",
            "voll_slam_damage_+%_final_at_centre",
            "shock_chance_+%",
            "is_area_damage",
            "action_attack_or_cast_time_uses_animation_length",
        },
        levels = {
            [1] = {0.5, 1.5, 20, 500, critChance = 6, levelRequirement = 1, statInterpolation = {3, 3},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["GADoryaniCrabExplodeSmash"] = {
        name = "GADoryaniCrabExplodeSmash",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Triggerable] = true,
            [SkillType.Attack] = true,
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1,
        baseFlags = {
            attack = true,
            area = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "voll_slam_damage_+%_final_at_centre",
            "is_area_damage",
            "action_attack_or_cast_time_uses_animation_length",
        },
        levels = {
            [1] = {40, baseMultiplier = 3, levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["GSDoryaniCrabBrazierSlam"] = {
        name = "GSDoryaniCrabBrazierSlam",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Triggerable] = true,
            [SkillType.Spell] = true,
            [SkillType.Damage] = true,
        },
        statDescriptionScope = "geometry_spell",
        castTime = 1,
        baseFlags = {
            spell = true,
            area = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "spell_minimum_base_fire_damage",
            "spell_maximum_base_fire_damage",
            "ignite_chance_+%",
            "voll_slam_damage_+%_final_at_centre",
            "is_area_damage",
            "action_attack_or_cast_time_uses_animation_length",
        },
        levels = {
            [1] = {0.80000001192093, 1.2000000476837, 100, 40, critChance = 5, levelRequirement = 1, statInterpolation = {3, 3},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["GSDoryaniCrabDiscoLazer"] = {
        name = "GSDoryaniCrabDiscoLazer",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Triggerable] = true,
            [SkillType.Spell] = true,
            [SkillType.Damage] = true,
        },
        statDescriptionScope = "geometry_spell",
        castTime = 1,
        baseFlags = {
            spell = true,
            area = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "spell_minimum_base_lightning_damage",
            "spell_maximum_base_lightning_damage",
            "is_area_damage",
            "action_attack_or_cast_time_uses_animation_length",
            "action_do_not_face_target",
            "skill_does_not_pathfind",
        },
        levels = {
            [1] = {0.5, 1.5, critChance = 6, levelRequirement = 1, statInterpolation = {3, 3},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["GSDoryaniCrabFlamethrower"] = {
        name = "GSDoryaniCrabFlamethrower",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Triggerable] = true,
            [SkillType.Spell] = true,
            [SkillType.Damage] = true,
        },
        statDescriptionScope = "geometry_spell",
        castTime = 1,
        baseFlags = {
            spell = true,
            area = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "spell_minimum_base_fire_damage",
            "spell_maximum_base_fire_damage",
            "ignite_chance_+%",
            "is_area_damage",
            "action_attack_or_cast_time_uses_animation_length",
            "action_do_not_face_target",
            "skill_does_not_pathfind",
            "base_skill_can_be_avoided_by_dodge_roll",
            "base_skill_can_be_blocked",
            "base_skill_cannot_be_parried",
        },
        levels = {
            [1] = {0.80000001192093, 1.2000000476837, 50, critChance = 5, levelRequirement = 1, statInterpolation = {3, 3},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["GSDoryaniCrabFlamethrower90Right"] = {
        name = "GSDoryaniCrabFlamethrower90Right",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Triggerable] = true,
            [SkillType.Spell] = true,
            [SkillType.Damage] = true,
        },
        statDescriptionScope = "geometry_spell",
        castTime = 1,
        baseFlags = {
            spell = true,
            area = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "spell_minimum_base_fire_damage",
            "spell_maximum_base_fire_damage",
            "ignite_chance_+%",
            "is_area_damage",
            "action_attack_or_cast_time_uses_animation_length",
            "action_do_not_face_target",
            "skill_does_not_pathfind",
            "base_skill_can_be_avoided_by_dodge_roll",
            "base_skill_can_be_blocked",
            "base_skill_cannot_be_parried",
        },
        levels = {
            [1] = {0.80000001192093, 1.2000000476837, 50, critChance = 5, levelRequirement = 1, statInterpolation = {3, 3},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["GSDoryaniCrabFlamethrowerCorrupt"] = {
        name = "GSDoryaniCrabFlamethrowerCorrupt",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Triggerable] = true,
            [SkillType.Spell] = true,
            [SkillType.Damage] = true,
        },
        statDescriptionScope = "geometry_spell",
        castTime = 1,
        baseFlags = {
            spell = true,
            area = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "spell_minimum_base_lightning_damage",
            "spell_maximum_base_lightning_damage",
            "spell_minimum_base_fire_damage_per_removable_endurance_charge",
            "spell_maximum_base_fire_damage",
            "shock_chance_+%",
            "ignite_chance_+%",
            "is_area_damage",
            "action_attack_or_cast_time_uses_animation_length",
            "action_do_not_face_target",
            "skill_does_not_pathfind",
            "base_skill_can_be_avoided_by_dodge_roll",
            "base_skill_can_be_blocked",
            "base_skill_cannot_be_parried",
        },
        levels = {
            [1] = {0.25, 0.75, 0.40000000596046, 0.60000002384186, 300, 50, critChance = 5, levelRequirement = 1, statInterpolation = {3, 3, 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",
            "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, 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",
            "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, 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",
            "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, 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]
    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 +% [4800]
    monster slain experience +% [0]
    FamilyMonsterActBoss
    Domains怪物 (3)
    GenerationType传奇 (3)
    Req. level1
    Stats
  • monster slain experience +% Min: 0 Max: 0 Global
  • monster dropped item rarity +% Min: 4800 Max: 4800 Global
  • 无法被击退
    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 +% [3200]
    monster map key of at least same tier as current map drop chance % [25]
    monster slain experience +% [9000]
    unique monster guarantee one rare [1]
    FamilyMonsterMapBoss
    Domains怪物 (3)
    GenerationType传奇 (3)
    Req. level1
    Stats
  • monster slain experience +% Min: 9000 Max: 9000 Global
  • monster dropped item rarity +% Min: 3200 Max: 3200 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
    生命
    420%
    +60%
    抗性
    0 0 0 0
    伤害
    450%
    命中
    100%
    暴击 Chance
    5%
    Attack Distance
    7 ~ 41
    攻击间隔
    1.005 Second
    Damage Spread
    ±20%
    经验值
    300%
    Model Size
    100%
    Type
    DoryaniMech
    Metadata
    DoryaniMechRailGun
    等级
    68
    生命
    32,579
    3,861
    伤害
    1,049
    法术伤害
    1,049
    命中
    2,464
    攻击间隔
    1.005
    经验值
    85,902
    召唤物生命
    29,106
    召唤物伤害
    4,359
    召唤物护甲
    6,756
    GSDoryaniCrabLegProjImpact
    可触发, 法术, 伤害
    暴击率: 6%
    施放间隔: 1 秒
    造成 621.8 - 1865 闪电伤害
    被辅助技能的[感电]几率提高 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 = 4.2,
        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]
    FamilyStance
    Domains怪物 (3)
    GenerationType传奇 (3)
    Req. level1
    Stats
  • no movement speed Min: 1 Max: 1 Global
  • Edit

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