Doryani's Triumph
Slug: Doryanis_Triumph
Open Source Page
Tags:
MonsterBlunt_onhit_audio
construct
mud_blood
not_dex
not_int
slow_movement
Areas:
The Black Chambers
The Stone Citadel
No custom art yet. Upload one to replace the placeholder.
Core Stat Percentiles
Spell Damage
1,502
Top 0.1%
Damage
1,502
Top 0.8%
Evasion Rating
905
Top 9.5%
Armour
9,606
Top 69%
Life
65,558
Top 69%
Accuracy
3,928
Top 69%
Other Notable Percentiles
Critical Damage Bonus
+30%
Top 0.1%
Level
80
Top 0.1%
Minion Damage
7,994
Top 0.1%
Minion Armour
19,212
Top 0.1%
Experience
300,000
Top 0.5%
Minion Life
42,353
Top 0.5%
Doryani's Triumph
Variant code: DoryaniMechOverview
Implicit Mods: i am boss of tier [3] monster dropped item rarity +% [4800] monster slain experience +% [0] Cannot be Knocked Back
Summary
| Spectre | N | |
|---|---|---|
| Area | The Black Chambers | |
| Tags | construct, MonsterBlunt_onhit_audio, mud_blood, not_dex, not_int, slow_movement |
Base Multipliers
Life
420%
Armour
+60%
Resistance
Damage
450%
Accuracy
100%
Critical Hits Chance
5%
Critical Damage Bonus
+30%
Attack Distance
7 ~ 41
Attack Time
1.005 Second
Damage Spread
±20%
Experience
300%
Model Size
100%
Type
DoryaniMech
Metadata
DoryaniMech
Extra Data
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 ); }
}
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 = { }, },
},
}
Doryani's Triumph
Variant code: DoryaniMechMapOverview
Implicit Mods: 100 % increased chance to Shock active skill ignite effect +% final [33], i am boss of tier [3] monster dropped item rarity +% [4800] monster slain experience +% [0] Cannot be Knocked Back
Summary
| Spectre | N | |
|---|---|---|
| Area | The Stone Citadel | |
| Tags | construct, MonsterBlunt_onhit_audio, mud_blood, not_dex, not_int, slow_movement |
Base Multipliers
Life
420%
Armour
+100%
Resistance
Damage
450%
Accuracy
100%
Critical Hits Chance
5%
Critical Damage Bonus
+30%
Attack Distance
7 ~ 41
Attack Time
1.005 Second
Damage Spread
±20%
Experience
300%
Model Size
100%
Type
DoryaniMechMap
Metadata
DoryaniMechMap
Extra Data
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
}
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 = { }, },
},
}
Doryani's Triumph
Variant code: DoryaniMechRailGunOverview
Implicit Mods: no movement speed [1]
Summary
| Spectre | N | |
|---|---|---|
| Tags | construct, mud_blood, not_dex, not_int, slow_movement |
Base Multipliers
Life
420%
Armour
+60%
Resistance
Damage
450%
Accuracy
100%
Critical Hits Chance
5%
Critical Damage Bonus
+30%
Attack Distance
7 ~ 41
Attack Time
1.005 Second
Damage Spread
±20%
Experience
300%
Model Size
100%
Type
DoryaniMech
Metadata
DoryaniMechRailGun
Extra Data
version 2
extends "Metadata/Monsters/Monster"
Positioned
{
object_size = 0
blocking = false
}
Functions
{
update_target = { SetTarget( arg1, 1 ); }
}
StateMachine
{
define_shared_state = "fade_out;"
}
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 = { }, },
},
}