[MIRROR] Wendigo Mob Abilities (#27872)

* Wendigo Mob Abilities (#83325)

## About The Pull Request

Converts wendigo's abilities into mob abilities, behavior should be
almost identical to how it was before. Also gave megafauna the same
night vision as normal lavaland mobs since controlling them and being
unable to see was difficult while testing. Wendigo's scream and slam
were made into global procs so they could be used across these
abilities, but if there's a better way to do that I'm open to it.

## Why It's Good For The Game

More refactoring to make way for converting these all to basic
megafauna.

## Changelog

🆑
refactor: Wendigos abilities have been changed into actions that can be
added to any mob.
/🆑

* Wendigo Mob Abilities

---------

Co-authored-by: Whoneedspacee <yougotreallyowned@gmail.com>
This commit is contained in:
SkyratBot
2024-05-28 05:11:31 +02:00
committed by GitHub
co-authored by Whoneedspacee
parent a53e0459a6
commit e229fa010f
7 changed files with 232 additions and 164 deletions
+3
View File
@@ -171,6 +171,9 @@
next_use_time = world.time + override_cooldown_time
else
next_use_time = world.time + cooldown_time
// Don't start a cooldown if we have a cooldown time of 0 seconds
if(next_use_time == world.time)
return
build_all_button_icons(UPDATE_BUTTON_STATUS)
START_PROCESSING(SSfastprocess, src)
+32
View File
@@ -0,0 +1,32 @@
/datum/action/cooldown/mob_cooldown/ground_slam
name = "Ground Slam"
button_icon = 'icons/mob/actions/actions_items.dmi'
button_icon_state = "sniper_zoom"
desc = "Slams the ground sending out a shockwave around you."
cooldown_time = 10 SECONDS
/// The range of the slam
var/range = 5
/// The delay before the shockwave expands it's range
var/delay = 3
/// How far hit targets are thrown
var/throw_range = 8
/// Whether the target can move or not while the slam is occurring
var/can_move = FALSE
/datum/action/cooldown/mob_cooldown/ground_slam/Activate(atom/target_atom)
disable_cooldown_actions()
RegisterSignal(owner, COMSIG_MOVABLE_PRE_MOVE, PROC_REF(on_move), override = TRUE)
do_slam(target_atom)
UnregisterSignal(owner, COMSIG_MOVABLE_PRE_MOVE)
StartCooldown()
enable_cooldown_actions()
return TRUE
/// Slams the ground around the source throwing back enemies caught nearby, delay is for the radius increase
/datum/action/cooldown/mob_cooldown/ground_slam/proc/do_slam(atom/target)
wendigo_slam(owner, range, delay, throw_range)
/datum/action/cooldown/mob_cooldown/ground_slam/proc/on_move(atom/source, atom/new_loc)
SIGNAL_HANDLER
if(!can_move)
return COMPONENT_MOVABLE_BLOCK_PRE_MOVE
@@ -16,14 +16,23 @@
var/default_projectile_spread = 0
/// The multiplier to the projectiles speed (a value of 2 makes it twice as slow, 0.5 makes it twice as fast)
var/projectile_speed_multiplier = 1
/// Whether the target can move or not while the attack is occurring
var/can_move = TRUE
/datum/action/cooldown/mob_cooldown/projectile_attack/Activate(atom/target_atom)
disable_cooldown_actions()
RegisterSignal(owner, COMSIG_MOVABLE_PRE_MOVE, PROC_REF(on_move), override = TRUE)
attack_sequence(owner, target_atom)
UnregisterSignal(owner, COMSIG_MOVABLE_PRE_MOVE)
StartCooldown()
enable_cooldown_actions()
return TRUE
/datum/action/cooldown/mob_cooldown/projectile_attack/proc/on_move(atom/source, atom/new_loc)
SIGNAL_HANDLER
if(!can_move)
return COMPONENT_MOVABLE_BLOCK_PRE_MOVE
/datum/action/cooldown/mob_cooldown/projectile_attack/proc/attack_sequence(mob/living/firer, atom/target)
shoot_projectile(firer, target, null, firer, rand(-default_projectile_spread, default_projectile_spread), null)
@@ -151,6 +160,25 @@
SLEEP_CHECK_DEATH(1.5 SECONDS, owner)
return ..()
/datum/action/cooldown/mob_cooldown/projectile_attack/spiral_shots/wendigo
cooldown_time = 10 SECONDS
projectile_type = /obj/projectile/colossus/wendigo_shockwave/spiral
can_move = FALSE
/datum/action/cooldown/mob_cooldown/projectile_attack/spiral_shots/wendigo/create_spiral_attack(mob/living/firer, atom/target, negative = pick(TRUE, FALSE))
wendigo_scream(firer)
var/shots_spiral = 40
var/angle_to_target = get_angle(firer, target)
var/spiral_direction = pick(-1, 1)
for(var/shot in 1 to shots_spiral)
var/shots_per_tick = 5 - enraged * 3
var/angle_change = (5 + enraged * shot / 6) * spiral_direction
for(var/count in 1 to shots_per_tick)
var/angle = angle_to_target + shot * angle_change + count * 360 / shots_per_tick
shoot_projectile(firer, target, angle, firer, null, null)
SLEEP_CHECK_DEATH(1, firer)
SLEEP_CHECK_DEATH(3 SECONDS, firer)
/datum/action/cooldown/mob_cooldown/projectile_attack/random_aoe
name = "All Directions"
button_icon = 'icons/effects/effects.dmi'
@@ -192,6 +220,13 @@
shoot_projectile(firer, target, null, firer, spread, null)
/datum/action/cooldown/mob_cooldown/projectile_attack/shotgun_blast/wendigo
cooldown_time = 10 SECONDS
projectile_type = /obj/projectile/colossus/wendigo_shockwave
shot_angles = list(-20, -10, 0, 10, 20)
projectile_speed_multiplier = 4
/datum/action/cooldown/mob_cooldown/projectile_attack/shotgun_blast/colossus
cooldown_time = 0.5 SECONDS
@@ -327,3 +362,54 @@
colossus.telegraph()
colossus.dir_shots.attack_sequence(firer, target)
SLEEP_CHECK_DEATH(1 SECONDS, firer)
/datum/action/cooldown/mob_cooldown/projectile_attack/alternating_circle
name = "Alternating Shots"
button_icon = 'icons/mob/actions/actions_items.dmi'
button_icon_state = "sniper_zoom"
desc = "Fires projectiles around you in an alternating fashion."
cooldown_time = 10 SECONDS
projectile_type = /obj/projectile/colossus/wendigo_shockwave
can_move = FALSE
var/enraged = FALSE
/datum/action/cooldown/mob_cooldown/projectile_attack/alternating_circle/attack_sequence(mob/living/firer, atom/target)
wendigo_scream(firer)
if(enraged)
projectile_speed_multiplier = 1
else
projectile_speed_multiplier = 1.5
var/shots_per = 24
for(var/shoot_times in 1 to 8)
var/offset = shoot_times % 2
for(var/shot in 1 to shots_per)
var/angle = shot * 360 / shots_per + (offset * 360 / shots_per) * 0.5
shoot_projectile(firer, target, angle, firer, null, null)
SLEEP_CHECK_DEATH(6 - enraged * 2, firer)
SLEEP_CHECK_DEATH(3 SECONDS, firer)
/datum/action/cooldown/mob_cooldown/projectile_attack/wave
name = "Wave Shots"
button_icon = 'icons/mob/actions/actions_items.dmi'
button_icon_state = "sniper_zoom"
desc = "Fires projectiles around you in a circular wave."
cooldown_time = 10 SECONDS
projectile_type = /obj/projectile/colossus/wendigo_shockwave/wave
can_move = FALSE
/datum/action/cooldown/mob_cooldown/projectile_attack/wave/attack_sequence(mob/living/firer, atom/target)
wendigo_scream(firer)
var/shots_per = 7
var/difference = 360 / shots_per
var/wave_direction = pick(-1, 1)
switch(wave_direction)
if(-1)
projectile_type = /obj/projectile/colossus/wendigo_shockwave/wave/alternate
if(1)
projectile_type = /obj/projectile/colossus/wendigo_shockwave/wave
for(var/shoot_times in 1 to 32)
for(var/shot in 1 to shots_per)
var/angle = shot * difference + shoot_times * 5 * wave_direction * -1
shoot_projectile(firer, target, angle, firer, null, null)
SLEEP_CHECK_DEATH(2, firer)
SLEEP_CHECK_DEATH(3 SECONDS, firer)
+25
View File
@@ -0,0 +1,25 @@
/datum/action/cooldown/mob_cooldown/teleport
name = "Teleport"
button_icon = 'icons/mob/actions/actions_items.dmi'
button_icon_state = "sniper_zoom"
desc = "Allows you to teleport a certain distance away from a position in a random direction."
cooldown_time = 10 SECONDS
/// The distance from the target
var/radius = 6
/datum/action/cooldown/mob_cooldown/teleport/Activate(atom/target_atom)
disable_cooldown_actions()
teleport_to(target_atom)
StartCooldown()
enable_cooldown_actions()
return TRUE
/// Handles randomly teleporting the owner around the target in view
/datum/action/cooldown/mob_cooldown/teleport/proc/teleport_to(atom/teleport_target)
var/list/possible_ends = view(radius, teleport_target.loc) - view(radius - 1, teleport_target.loc)
for(var/turf/closed/cant_teleport_turf in possible_ends)
possible_ends -= cant_teleport_turf
if(!possible_ends.len)
return
var/turf/end = pick(possible_ends)
do_teleport(owner, end, 0, channel=TELEPORT_CHANNEL_BLUESPACE, forced = TRUE)
@@ -20,6 +20,10 @@
maxbodytemp = INFINITY
vision_range = 5
aggro_vision_range = 18
// Pale purple, should be red enough to see stuff on lavaland
lighting_cutoff_red = 25
lighting_cutoff_green = 15
lighting_cutoff_blue = 35
move_force = MOVE_FORCE_OVERPOWERING
move_resist = MOVE_FORCE_OVERPOWERING
pull_force = MOVE_FORCE_OVERPOWERING
@@ -1,10 +1,4 @@
#define WENDIGO_ENRAGED (health <= maxHealth*0.5)
#define WENDIGO_CIRCLE_SHOTCOUNT 24
#define WENDIGO_CIRCLE_REPEATCOUNT 8
#define WENDIGO_SPIRAL_SHOTCOUNT 40
#define WENDIGO_WAVE_SHOTCOUNT 7
#define WENDIGO_WAVE_REPEATCOUNT 32
#define WENDIGO_SHOTGUN_SHOTCOUNT 5
/*
@@ -51,9 +45,6 @@ Difficulty: Hard
death_message = "falls to the ground in a bloody heap, shaking the arena."
death_sound = 'sound/effects/gravhit.ogg'
footstep_type = FOOTSTEP_MOB_HEAVY
attack_action_types = list(/datum/action/innate/megafauna_attack/heavy_stomp,
/datum/action/innate/megafauna_attack/teleport,
/datum/action/innate/megafauna_attack/shockwave_scream)
summon_line = "GwaHOOOOOOOOOOOOOOOOOOOOO"
/// Saves the turf the megafauna was created at (spawns exit portal here)
var/turf/starting
@@ -61,37 +52,38 @@ Difficulty: Hard
var/stomp_range = 1
/// Stores directions the mob is moving, then calls that a move has fully ended when these directions are removed in moved
var/stored_move_dirs = 0
/// If the wendigo is allowed to move
var/can_move = TRUE
/// Time before the wendigo can scream again
var/scream_cooldown_time = 10 SECONDS
/// Teleport Ability
var/datum/action/cooldown/mob_cooldown/teleport/teleport
/// Shotgun Ability
var/datum/action/cooldown/mob_cooldown/projectile_attack/shotgun_blast/wendigo/shotgun_blast
/// Ground Slam Ability
var/datum/action/cooldown/mob_cooldown/ground_slam/ground_slam
/// Alternating Projectiles Ability
var/datum/action/cooldown/mob_cooldown/projectile_attack/alternating_circle/alternating_circle
/// Spiral Projectiles Ability
var/datum/action/cooldown/mob_cooldown/projectile_attack/spiral_shots/wendigo/spiral
/// Wave Projectiles Ability
var/datum/action/cooldown/mob_cooldown/projectile_attack/wave/wave
/// Stores the last scream time so it doesn't spam it
COOLDOWN_DECLARE(scream_cooldown)
/mob/living/simple_animal/hostile/megafauna/wendigo/Initialize(mapload)
. = ..()
ADD_TRAIT(src, TRAIT_NO_FLOATING_ANIM, INNATE_TRAIT)
/datum/action/innate/megafauna_attack/heavy_stomp
name = "Heavy Stomp"
button_icon = 'icons/mob/actions/actions_items.dmi'
button_icon_state = "sniper_zoom"
chosen_message = "<span class='colossus'>You are now stomping the ground around you.</span>"
chosen_attack_num = 1
/datum/action/innate/megafauna_attack/teleport
name = "Teleport"
button_icon = 'icons/effects/bubblegum.dmi'
button_icon_state = "smack ya one"
chosen_message = "<span class='colossus'>You are now teleporting at the target you click on.</span>"
chosen_attack_num = 2
/datum/action/innate/megafauna_attack/shockwave_scream
name = "Shockwave Scream"
button_icon = 'icons/mob/actions/actions_animal.dmi'
button_icon_state = "expand"
chosen_message = "<span class='colossus'>You are now screeching, disorienting targets around you.</span>"
chosen_attack_num = 3
teleport = new(src)
shotgun_blast = new(src)
ground_slam = new(src)
alternating_circle = new(src)
spiral = new(src)
wave = new(src)
teleport.Grant(src)
shotgun_blast.Grant(src)
ground_slam.Grant(src)
alternating_circle.Grant(src)
spiral.Grant(src)
wave.Grant(src)
/mob/living/simple_animal/hostile/megafauna/wendigo/Initialize(mapload)
. = ..()
@@ -108,13 +100,6 @@ Difficulty: Hard
move_to_delay = initial(move_to_delay)
if(client)
switch(chosen_attack)
if(1)
heavy_stomp()
if(2)
try_teleport()
if(3)
shockwave_scream()
return
var/mob/living/living_target = target
@@ -127,28 +112,54 @@ Difficulty: Hard
chosen_attack = rand(1, 2)
switch(chosen_attack)
if(1)
heavy_stomp()
ground_slam.Activate(target)
if(2)
try_teleport()
teleport.Activate(target)
if(WENDIGO_ENRAGED)
shotgun_blast.Activate(target)
if(3)
do_teleport(src, starting, 0, channel=TELEPORT_CHANNEL_BLUESPACE, forced = TRUE)
shockwave_scream()
var/shockwave_attack
if(WENDIGO_ENRAGED)
shockwave_attack = rand(1, 3)
else
shockwave_attack = rand(1, 2)
switch(shockwave_attack)
if(1)
alternating_circle.enraged = WENDIGO_ENRAGED
alternating_circle.Activate(target)
if(2)
spiral.enraged = WENDIGO_ENRAGED
spiral.Activate(target)
if(3)
wave.Activate(target)
update_cooldowns(list(COOLDOWN_UPDATE_SET_MELEE = 3 SECONDS, COOLDOWN_UPDATE_SET_RANGED = 3 SECONDS))
/mob/living/simple_animal/hostile/megafauna/wendigo/Move(atom/newloc, direct)
if(!can_move)
return
stored_move_dirs |= direct
return ..()
. = ..()
// Remove after anyways in case the movement was prevented
stored_move_dirs &= ~direct
/mob/living/simple_animal/hostile/megafauna/wendigo/Moved(atom/old_loc, movement_dir, forced, list/old_locs, momentum_change = TRUE)
. = ..()
stored_move_dirs &= ~movement_dir
if(!stored_move_dirs)
INVOKE_ASYNC(src, PROC_REF(wendigo_slam), stomp_range, 1, 8)
INVOKE_ASYNC(GLOBAL_PROC, GLOBAL_PROC_REF(wendigo_slam), src, stomp_range, 1, 8)
/// Slams the ground around the source throwing back enemies caught nearby, delay is for the radius increase
/mob/living/simple_animal/hostile/megafauna/wendigo/proc/wendigo_slam(range, delay, throw_range)
var/turf/origin = get_turf(src)
/proc/wendigo_scream(mob/owner)
SLEEP_CHECK_DEATH(5, owner)
playsound(owner.loc, 'sound/magic/demon_dies.ogg', 600, FALSE, 10)
var/pixel_shift = rand(5, 15)
animate(owner, pixel_z = pixel_shift, time = 1, loop = 20, flags = ANIMATION_RELATIVE)
animate(pixel_z = -pixel_shift, time = 1, flags = ANIMATION_RELATIVE)
for(var/mob/living/dizzy_target in get_hearers_in_view(7, owner) - owner)
dizzy_target.set_dizzy_if_lower(12 SECONDS)
to_chat(dizzy_target, span_danger("[owner] screams loudly!"))
SLEEP_CHECK_DEATH(1 SECONDS, owner)
/proc/wendigo_slam(mob/owner, range, delay, throw_range)
var/turf/origin = get_turf(owner)
if(!origin)
return
var/list/all_turfs = RANGE_TURFS(range, origin)
@@ -158,117 +169,16 @@ Difficulty: Hard
if(get_dist(origin, stomp_turf) > sound_range)
continue
new /obj/effect/temp_visual/small_smoke/halfsecond(stomp_turf)
for(var/mob/living/target in stomp_turf)
if(target == src || target.throwing)
for(var/mob/living/hit_mob in stomp_turf)
if(hit_mob == owner || hit_mob.throwing)
continue
to_chat(target, span_userdanger("[src]'s ground slam shockwave sends you flying!"))
var/turf/thrownat = get_ranged_target_turf_direct(src, target, throw_range, rand(-10, 10))
target.throw_at(thrownat, 8, 2, null, TRUE, force = MOVE_FORCE_OVERPOWERING, gentle = TRUE)
target.apply_damage(20, BRUTE, wound_bonus=CANT_WOUND)
shake_camera(target, 2, 1)
to_chat(hit_mob, span_userdanger("[owner]'s ground slam shockwave sends you flying!"))
var/turf/thrownat = get_ranged_target_turf_direct(owner, hit_mob, throw_range, rand(-10, 10))
hit_mob.throw_at(thrownat, 8, 2, null, TRUE, force = MOVE_FORCE_OVERPOWERING, gentle = TRUE)
hit_mob.apply_damage(20, BRUTE, wound_bonus=CANT_WOUND)
shake_camera(hit_mob, 2, 1)
all_turfs -= stomp_turf
sleep(delay)
/// Larger but slower ground stomp
/mob/living/simple_animal/hostile/megafauna/wendigo/proc/heavy_stomp()
can_move = FALSE
wendigo_slam(5, 3 - WENDIGO_ENRAGED, 8)
update_cooldowns(list(COOLDOWN_UPDATE_SET_MELEE = 0 SECONDS, COOLDOWN_UPDATE_SET_RANGED = 0 SECONDS))
can_move = TRUE
/// Teleports to a location 4 turfs away from the enemy in view
/mob/living/simple_animal/hostile/megafauna/wendigo/proc/try_teleport()
teleport(6)
if(WENDIGO_ENRAGED)
playsound(loc, 'sound/magic/clockwork/invoke_general.ogg', 100, TRUE)
for(var/shots in 1 to WENDIGO_SHOTGUN_SHOTCOUNT)
var/spread = shots * 10 - 30
var/turf/startloc = get_step(get_turf(src), get_dir(src, target))
var/turf/endloc = get_turf(target)
if(!endloc)
break
var/obj/projectile/colossus/wendigo_shockwave/shockwave = new /obj/projectile/colossus/wendigo_shockwave(loc)
shockwave.speed = 8
shockwave.preparePixelProjectile(endloc, startloc, null, spread)
shockwave.firer = src
if(target)
shockwave.original = target
shockwave.fire()
update_cooldowns(list(COOLDOWN_UPDATE_SET_MELEE = 0 SECONDS, COOLDOWN_UPDATE_SET_RANGED = 0 SECONDS))
/mob/living/simple_animal/hostile/megafauna/wendigo/proc/teleport(range = 6)
var/list/possible_ends = view(range, target.loc) - view(range - 1, target.loc)
for(var/turf/closed/cant_teleport_turf in possible_ends)
possible_ends -= cant_teleport_turf
if(!possible_ends.len)
return
var/turf/end = pick(possible_ends)
do_teleport(src, end, 0, channel=TELEPORT_CHANNEL_BLUESPACE, forced = TRUE)
/// Applies dizziness to all nearby enemies that can hear the scream and animates the wendigo shaking up and down as shockwave projectiles shoot outward
/mob/living/simple_animal/hostile/megafauna/wendigo/proc/shockwave_scream()
can_move = FALSE
COOLDOWN_START(src, scream_cooldown, scream_cooldown_time)
SLEEP_CHECK_DEATH(5, src)
playsound(loc, 'sound/magic/demon_dies.ogg', 600, FALSE, 10)
var/pixel_shift = rand(5, 15)
animate(src, pixel_z = pixel_shift, time = 1, loop = 20, flags = ANIMATION_RELATIVE)
animate(pixel_z = -pixel_shift, time = 1, flags = ANIMATION_RELATIVE)
for(var/mob/living/dizzy_target in get_hearers_in_view(7, src) - src)
dizzy_target.set_dizzy_if_lower(12 SECONDS)
to_chat(dizzy_target, span_danger("The wendigo screams loudly!"))
SLEEP_CHECK_DEATH(1 SECONDS, src)
spiral_attack()
update_cooldowns(list(COOLDOWN_UPDATE_SET_MELEE = 3 SECONDS, COOLDOWN_UPDATE_SET_RANGED = 3 SECONDS))
SLEEP_CHECK_DEATH(3 SECONDS, src)
can_move = TRUE
/// Shoots shockwave projectiles in a random preset pattern
/mob/living/simple_animal/hostile/megafauna/wendigo/proc/spiral_attack()
var/list/choices = list("Alternating Circle", "Spiral")
if(WENDIGO_ENRAGED)
choices += "Wave"
var/spiral_type = pick(choices)
switch(spiral_type)
if("Alternating Circle")
var/shots_per = WENDIGO_CIRCLE_SHOTCOUNT
for(var/shoot_times in 1 to WENDIGO_CIRCLE_REPEATCOUNT)
var/offset = shoot_times % 2
for(var/shot in 1 to shots_per)
var/angle = shot * 360 / shots_per + (offset * 360 / shots_per) * 0.5
var/obj/projectile/colossus/wendigo_shockwave/shockwave = new /obj/projectile/colossus/wendigo_shockwave(loc)
shockwave.firer = src
shockwave.speed = 3 - WENDIGO_ENRAGED
shockwave.fire(angle)
SLEEP_CHECK_DEATH(6 - WENDIGO_ENRAGED * 2, src)
if("Spiral")
var/shots_spiral = WENDIGO_SPIRAL_SHOTCOUNT
var/angle_to_target = get_angle(src, target)
var/spiral_direction = pick(-1, 1)
for(var/shot in 1 to shots_spiral)
var/shots_per_tick = 5 - WENDIGO_ENRAGED * 3
var/angle_change = (5 + WENDIGO_ENRAGED * shot / 6) * spiral_direction
for(var/count in 1 to shots_per_tick)
var/angle = angle_to_target + shot * angle_change + count * 360 / shots_per_tick
var/obj/projectile/colossus/wendigo_shockwave/shockwave = new /obj/projectile/colossus/wendigo_shockwave(loc)
shockwave.firer = src
shockwave.damage = 15
shockwave.fire(angle)
SLEEP_CHECK_DEATH(1, src)
if("Wave")
var/shots_per = WENDIGO_WAVE_SHOTCOUNT
var/difference = 360 / shots_per
var/wave_direction = pick(-1, 1)
for(var/shoot_times in 1 to WENDIGO_WAVE_REPEATCOUNT)
for(var/shot in 1 to shots_per)
var/angle = shot * difference + shoot_times * 5 * wave_direction * -1
var/obj/projectile/colossus/wendigo_shockwave/shockwave = new /obj/projectile/colossus/wendigo_shockwave(loc)
shockwave.firer = src
shockwave.wave_movement = TRUE
shockwave.speed = 8
shockwave.wave_speed = 10 * wave_direction
shockwave.fire(angle)
SLEEP_CHECK_DEATH(2, src)
SLEEP_CHECK_DEATH(delay, owner)
/mob/living/simple_animal/hostile/megafauna/wendigo/death(gibbed, list/force_grant)
if(health > 0)
@@ -285,6 +195,7 @@ Difficulty: Hard
/obj/projectile/colossus/wendigo_shockwave
name = "wendigo shockwave"
speed = 2
/// If wave movement is enabled
var/wave_movement = FALSE
/// Amount the angle changes every pixel move
@@ -292,6 +203,17 @@ Difficulty: Hard
/// Amount of movements this projectile has made
var/pixel_moves = 0
/obj/projectile/colossus/wendigo_shockwave/spiral
damage = 15
/obj/projectile/colossus/wendigo_shockwave/wave
speed = 8
wave_movement = TRUE
wave_speed = 10
/obj/projectile/colossus/wendigo_shockwave/wave/alternate
wave_speed = -10
/obj/projectile/colossus/wendigo_shockwave/pixel_move(trajectory_multiplier, hitscanning = FALSE)
. = ..()
if(wave_movement)
@@ -348,9 +270,3 @@ Difficulty: Hard
throwforce = 0
#undef WENDIGO_ENRAGED
#undef WENDIGO_CIRCLE_SHOTCOUNT
#undef WENDIGO_CIRCLE_REPEATCOUNT
#undef WENDIGO_SPIRAL_SHOTCOUNT
#undef WENDIGO_WAVE_SHOTCOUNT
#undef WENDIGO_WAVE_REPEATCOUNT
#undef WENDIGO_SHOTGUN_SHOTCOUNT
+2
View File
@@ -947,6 +947,7 @@
#include "code\datums\actions\mobs\dash.dm"
#include "code\datums\actions\mobs\defensive_mode.dm"
#include "code\datums\actions\mobs\fire_breath.dm"
#include "code\datums\actions\mobs\ground_slam.dm"
#include "code\datums\actions\mobs\lava_swoop.dm"
#include "code\datums\actions\mobs\meteors.dm"
#include "code\datums\actions\mobs\mobcooldown.dm"
@@ -955,6 +956,7 @@
#include "code\datums\actions\mobs\projectileattack.dm"
#include "code\datums\actions\mobs\sign_language.dm"
#include "code\datums\actions\mobs\sneak.dm"
#include "code\datums\actions\mobs\teleport.dm"
#include "code\datums\actions\mobs\transform_weapon.dm"
#include "code\datums\actions\mobs\sequences\dash_attack.dm"
#include "code\datums\actions\mobs\sequences\projectile.dm"