多里亞尼的凱旋
創造物地區: 漆黑密室
i am boss of tier [3]
monster dropped item rarity +% [4800]
monster slain experience +% [0]
不能被擊退
monster dropped item rarity +% [4800]
monster slain experience +% [0]
不能被擊退
Doryani's Triumph
| Spectre | N |
|---|---|
| Area | 漆黑密室 |
| Tags | construct, MonsterBlunt_onhit_audio, mud_blood, not_dex, not_int, slow_movement |
生命
420%
+60%
抗性
傷害
450%
命中
100%
暴擊 Chance
5%
+30%
Attack Distance
7 ~ 41
攻擊時間
1.005 Second
Damage Spread
±20%
經驗值
300%
Model Size
100%
Type
DoryaniMech
Metadata
DoryaniMech
下列的數值並未包含地圖加成、怪物Buff加成、祭壇加成、輿圖天賦加成。
下列的數值為技能基礎數值,並未包含地圖加成、怪物Buff加成、祭壇加成、輿圖天賦加成、怪物本身傷害加成(例: 釋界 150% 加成),怪物稀有度加成(例: 傳奇 +70% 更多, 傳奇攻擊 33% 更少)。
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]
GSDoryaniCrabFlamethrower
GSDoryaniCrabFlamethrower90Right
GSDoryaniCrabFlamethrowerCorrupt
可觸發, 法術, 傷害
暴擊率: 5%
施放時間: 1 秒
冷卻時間: 35 秒
造成 至 54.01 火焰傷害
被輔助的技能增加 300% 感電機率
每顆被移除的耐力球造成 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 秒
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 秒
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% 更多攻擊傷害
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]
GADoryaniCrabLegProjImpactWall
可觸發, 攻擊
Base Damage: 390–586
暴擊率: 5%
攻擊時間: 1.005 秒
action attack or cast time uses animation length [1]
is area damage [1]
GADoryaniCrabSlamCold
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 = { }, },
},
}
i am boss of tier [3]
monster dropped item rarity +% [4800]
monster slain experience +% [0]
| Family | MonsterActBoss |
|---|---|
| Domains | 怪物 (3) |
| GenerationType | 傳奇 (3) |
| Req. level | 1 |
| Stats |
不能被擊退
| Family | ImmuneToKnockback |
|---|---|
| Domains | 怪物 (3) |
| GenerationType | 傳奇 (3) |
| Req. level | 1 |
| Stats |
| key | val |
|---|---|
| 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_index | x' 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_id | 1; |
| StateMachine.use_custom_sector_removal_handling; | |
| StateMachine.quick_death_enabled; | |
| StateMachine.quick_death; | |
| StateMachine.am_final_boss_in_fight | 1; |
| 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_dead | false } |
| StateMachine.0: Boss is alive | |
| StateMachine.1: Boss is dead | |
| StateMachine.2: Boss is dead and corpse is hidden | |
| StateMachine.define_shared_checkpoint_state | dead |
| StateMachine.define_shared_state | hover_crafting; |
| Actor.slow_animations_go_to_idle | false |
| Actor.leveled_starting_effects | CTS1BossFightStart, DoLiterallyNothing |
| Actor.on_effect_start_EASDoryaniCrabPlatformAttach | { ForceSkillIntoCooldown( EASDoryaniCrabPlatformDetach ); } |
| Stats.corpse_cannot_be_destroyed | 1 |
| Stats.base_heavy_stun_duration_ms | 4000 |
| Stats.additional_life_scaling_index | 6 |
| Stats.monster_delay_item_drops_millis | 35000 |
| Life.corpse_usable | false |
| Monster.is_boss | true |
| BaseEvents.is_act_boss | true |
| Animated.always_interpolate_bearing | true |
| Functions.no_face | { SetMovementFaceMode( DontFace ); } |
| Functions.do_face | { SetMovementFaceMode( FaceDirection ); } |
多里亞尼的凱旋
| Spectre | N |
|---|---|
| Area | 岩石城塞 |
| Tags | construct, MonsterBlunt_onhit_audio, mud_blood, not_dex, not_int, slow_movement |
生命
420%
+100%
抗性
傷害
450%
命中
100%
暴擊 Chance
5%
+30%
Attack Distance
7 ~ 41
攻擊時間
1.005 Second
Damage Spread
±20%
經驗值
300%
Model Size
100%
Type
DoryaniMechMap
Metadata
DoryaniMechMap
下列的數值並未包含地圖加成、怪物Buff加成、祭壇加成、輿圖天賦加成。
等級
80
生命
65,558
9,606
905
傷害
1,502
法術傷害
1,502
命中
3,928
攻擊時間
1.005
經驗值
300,000
召喚物生命
42,353
召喚物傷害
7,994
召喚物護甲
19,212
下列的數值為技能基礎數值,並未包含地圖加成、怪物Buff加成、祭壇加成、輿圖天賦加成、怪物本身傷害加成(例: 釋界 150% 加成),怪物稀有度加成(例: 傳奇 +70% 更多, 傳奇攻擊 33% 更少)。
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]
GSDoryaniCrabFlamethrower
GSDoryaniCrabFlamethrower90Right
GSDoryaniCrabFlamethrowerCorrupt
可觸發, 法術, 傷害
暴擊率: 5%
施放時間: 1 秒
冷卻時間: 35 秒
造成 至 163.4 火焰傷害
被輔助的技能增加 300% 感電機率
每顆被移除的耐力球造成 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 秒
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 秒
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% 更多攻擊傷害
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]
GADoryaniCrabLegProjImpactWall
可觸發, 攻擊
Base Damage: 1202–1802
暴擊率: 5%
攻擊時間: 1.005 秒
action attack or cast time uses animation length [1]
is area damage [1]
GADoryaniCrabSlamCold
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]
| Family | DoryaniEndgameIgniteShock |
|---|---|
| Domains | 怪物 (3) |
| GenerationType | 傳奇 (3) |
| Req. level | 1 |
| Stats |
i am boss of tier [3]
monster dropped item rarity +% [4800]
monster slain experience +% [0]
| Family | MonsterActBoss |
|---|---|
| Domains | 怪物 (3) |
| GenerationType | 傳奇 (3) |
| Req. level | 1 |
| Stats |
不能被擊退
| Family | ImmuneToKnockback |
|---|---|
| Domains | 怪物 (3) |
| GenerationType | 傳奇 (3) |
| Req. level | 1 |
| Stats |
多里亞尼的凱旋
創造物no movement speed [1]
Doryani's Triumph
| Spectre | N |
|---|---|
| Tags | construct, mud_blood, not_dex, not_int, slow_movement |
生命
420%
+60%
抗性
傷害
450%
命中
100%
暴擊 Chance
5%
+30%
Attack Distance
7 ~ 41
攻擊時間
1.005 Second
Damage Spread
±20%
經驗值
300%
Model Size
100%
Type
DoryaniMech
Metadata
DoryaniMechRailGun
下列的數值並未包含地圖加成、怪物Buff加成、祭壇加成、輿圖天賦加成。
下列的數值為技能基礎數值,並未包含地圖加成、怪物Buff加成、祭壇加成、輿圖天賦加成、怪物本身傷害加成(例: 釋界 150% 加成),怪物稀有度加成(例: 傳奇 +70% 更多, 傳奇攻擊 33% 更少)。
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]
| Family | Stance |
|---|---|
| Domains | 怪物 (3) |
| GenerationType | 傳奇 (3) |
| Req. level | 1 |
| Stats |
Edit
Wikis Content is available under CC BY-NC-SA 3.0 unless otherwise noted.
Wikis Content is available under CC BY-NC-SA 3.0 unless otherwise noted.