Brutal Transcendent
Slug: Brutal_Transcendent
Open Source Page
Spectre-capable
Tags:
2HBluntWood_onhit_audio
allows_additional_projectiles
allows_inc_aoe
construct
humanoid
lightning_affinity
medium_movement
not_dex
ranged
red_blood
Areas:
The Black Chambers
The Ziggurat Refuge
No custom art yet. Upload one to replace the placeholder.
Stats by Level
| Rarity | Life | Damage | Armour | Evasion | Accuracy | Experience | Resistances |
|---|---|---|---|---|---|---|---|
| Unique | 3,629,278 | 1,460.12 | 14,441 | 1,304 | 4,011 | 0 | F: 0% / C: 0% / L: 0% / Ch: 0% |
| Rare | 1,001,180 | 1,460.12 | 14,441 | 1,304 | 4,011 | 0 | F: 0% / C: 0% / L: 0% / Ch: 0% |
| Magic | 310,366 | 1,460.12 | 14,441 | 1,304 | 4,011 | 0 | F: 0% / C: 0% / L: 0% / Ch: 0% |
| Normal | 125,148 | 1,460.12 | 14,441 | 1,304 | 4,011 | 0 | F: 0% / C: 0% / L: 0% / Ch: 0% |
Core Stat Percentiles
Life
3,629,278
Unique @ Level 100
Damage
1,460.12
Unique @ Level 100
Armour
14,441
Unique @ Level 100
Evasion
1,304
Unique @ Level 100
Accuracy
4,011
Unique @ Level 100
Experience
0
Unique @ Level 100
Other Notable Percentiles
Resistances
F: 0% / C: 0% / L: 0% / Ch: 0%
Unique @ Level 100
Brutal Transcendent
Variant code: VaalPyramidHandsOverview
Summary
| Spectre | Y | |
|---|---|---|
| Area | The Black Chambers, The Ziggurat Refuge | |
| Tags | 2HBluntWood_onhit_audio, allows_additional_projectiles, allows_inc_aoe, construct, humanoid, lightning_affinity, medium_movement, not_dex, ranged, red_blood | |
| Packs |
Base Multipliers
Life
250%
Energy Shield From Life
8%
Armour
+100%
Resistance
Damage
250%
Accuracy
100%
Critical Hits Chance
5%
Critical Damage Bonus
+30%
Attack Distance
5 ~ 14
Attack Time
1.5 Second
Damage Spread
±20%
Experience
250%
Model Size
100%
Type
VaalPyramidHands
Metadata
VaalPyramidHands
Extra Data
version 2
extends "Metadata/Monsters/Monster"
Stats
{
strafe_distance_+% = -60
}
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
}
version 2
extends "Metadata/Monsters/Monster"
/* ------------------------------------------------------------------------------------------------------------------- */
/* Movement/Turning */
/* ------------------------------------------------------------------------------------------------------------------- */
Positioned
{
on_initial_position_set = "StartStateTimer( check_bearing );"
on_movement_started =
"
If( GetState( current_rotate_dir ) > 0, (){ SetStateTo( current_rotate_dir, 0 ); } );
"
}
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
// there is a 10 degree no-turn forward angle, to prevent tiny turns that aren't needed
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 <= 5.0, angle_diff >= -5.0 ), GetCurrentMoveSpeed() > 1.0 ), (){ SetStateTo( current_rotate_dir, 0 ); } );
If( And( angle_diff > 5.0, GetCurrentMoveSpeed() < 1.0 ), (){ SetStateTo( current_rotate_dir, 1 ); } );
If( And( angle_diff < -5.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 = 1.0 + Eval( Abs( angle_diff_clamped ) / 100 );
local layer_speed = Clamp( scaling_factor, 1.0, 3.0 );
// Log( 'Angle Diff: {angle_diff} | Layer Speed: {layer_speed}', c );
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.5 );
FadeAnimations( 10, 0.5 );
"
// play a different additive turn anim for different turn directions and velocity
on_state_current_rotate_dir_1 =
"
FadeAnimations( 10, 0.5 );
PlayAdditiveAnimation( turn_01_right, 9 );
"
on_state_current_rotate_dir_2 =
"
FadeAnimations( 9, 0.5 );
PlayAdditiveAnimation( turn_01_left, 10 );
"
}
-- src\Data\Spectres.lua
minions["Metadata/Monsters/VaalHumanoids/VaalHumanoidPyramidHands/VaalPyramidHands"] = {
name = "Brutal Transcendent",
life = 2.5,
energyShield = 0.08,
fireResist = 0,
coldResist = 0,
lightningResist = 0,
chaosResist = 0,
damage = 2.5,
damageSpread = 0.2,
attackTime = 1.5,
attackRange = 14,
accuracy = 1,
skillList = {
"MPSVaalHumanoidPyramidHandsGrenade",
"GSPyramidHandGenadeExplosion",
"EDSPyramidHandLightningLance",
},
modList = {
},
}
-- src\Data\Skills\spectre.lua
skills["MPSVaalHumanoidPyramidHandsGrenade"] = {
name = "MPSVaalHumanoidPyramidHandsGrenade",
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 = {
"monster_projectile_variation",
"spell_maximum_action_distance_+%",
"projectile_spread_radius",
"projectile_ballistic_gravity_override",
"base_is_projectile",
"projectile_uses_contact_position",
"maintain_projectile_direction_when_using_contact_position",
"action_attack_or_cast_time_uses_animation_length",
"base_deal_no_damage",
"projectile_ballistic_angle_from_reference_event",
"ballistic_projectiles_always_bounce",
},
levels = {
[1] = {1126, -30, 9, 3000, levelRequirement = 1, statInterpolation = {}, cost = { }, },
},
}
-- src\Data\Skills\spectre.lua
skills["GSPyramidHandGenadeExplosion"] = {
name = "GSPyramidHandGenadeExplosion",
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",
"is_area_damage",
"base_is_projectile",
},
levels = {
[1] = {0.5, 1.5, levelRequirement = 1, statInterpolation = {3, 3}, cost = { }, },
},
}
-- src\Data\Skills\spectre.lua
skills["EDSPyramidHandLightningLance"] = {
name = "EDSPyramidHandLightningLance",
hidden = true,
color = ,
baseEffectiveness = 0,
incrementalEffectiveness = 0,
skillTypes = {
[SkillType.Triggerable] = true,
[SkillType.Spell] = true,
[SkillType.Damage] = true,
},
statDescriptionScope = "skill_stat_descriptions",
castTime = 1,
baseFlags = {
spell = true,
area = true,
},
baseMods = {
},
qualityStats = {
},
stats = {
"spell_minimum_base_lightning_damage",
"spell_maximum_base_lightning_damage",
"spell_maximum_action_distance_+%",
"is_area_damage",
"action_attack_or_cast_time_uses_animation_length",
"base_skill_can_be_blocked",
"base_skill_can_be_avoided_by_dodge_roll",
},
levels = {
[1] = {0.80000001192093, 1.2000000476837, -65, levelRequirement = 1, statInterpolation = {3, 3}, cost = { }, },
},
}