Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dancer Overhaul & Buff #17028

Open
wants to merge 11 commits into
base: master
Choose a base branch
from
2 changes: 2 additions & 0 deletions code/__DEFINES/dcs/signals/signals_keybindings.dm
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,8 @@
#define COMSIG_XENOABILITY_DODGE "xenoability_dodge"
#define COMSIG_XENOABILITY_IMPALE "xenoability_impale"
#define COMSIG_XENOABILITY_TAIL_TRIP "xenoability_tail_trip"
#define COMSIG_XENOABILITY_TAILHOOK "xenoability_tailhook"
#define COMSIG_XENOABILITY_BATONPASS "xenoability_batonpass"
#define COMSIG_XENOABILITY_XENO_SPIT "xenoability_xeno_spit"
#define COMSIG_XENOABILITY_HIDE "xenoability_hide"
#define COMSIG_XENOABILITY_NEUROTOX_STING "xenoability_neurotox_sting"
Expand Down
6 changes: 6 additions & 0 deletions code/__DEFINES/mobs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -830,6 +830,12 @@ GLOBAL_LIST_INIT(layers_to_offset, list(
//Praetorian defines
#define PRAE_CHARGEDISTANCE 5

//Dancer defines
#define DANCER_IMPALE_PENETRATION 20//armor penetration done by impale to marked targets
#define DANCER_MAX_IMPALE_MULT 2.5 //the maximum multiplier dancer impale can gain from debuffs
#define DANCER_NONHUMAN_IMPALE_MULT 1.5//the flat damage multiplier done by impale to non-carbon targets
#define DANCER_DODGE_BATONPASS_CD 7 SECONDS//the cooldown value added to dodge by Baton Pass

//misc

#define STANDARD_SLOWDOWN_REGEN 0.3
Expand Down
1 change: 1 addition & 0 deletions code/__DEFINES/movespeed_modification.dm
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
#define MOVESPEED_ID_XENO_DREAD "DREADXENO"
#define MOVESPEED_ID_BEHEMOTH_PRIMAL_WRATH "BEHEMOTH_PRIMAL_WRATH"
#define MOVESPEED_ID_PRAETORIAN_DANCER_DODGE_SPEED "PRAETORIAN_DANCER_DODGE_SPEED"
#define MOVESPEED_ID_PRAETORIAN_DANCER_BATON_PASS "PRAETORIAN_DANCER_BATON_PASS"
#define MOVESPEED_ID_OPPRESSOR_ITEM_GRAB "OPPRESSOR_ITEM_GRAB"
#define MOVESPEED_ID_BOILER_SIZZLER_STEAM_RUSH "BOILER_SIZZLER_STEAM_RUSH"

Expand Down
2 changes: 2 additions & 0 deletions code/__DEFINES/status_effects.dm
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@

#define STATUS_EFFECT_XENO_FEAST /datum/status_effect/xeno_feast

#define STATUS_EFFECT_XENO_BATONPASS /datum/status_effect/baton_pass

#define STATUS_EFFECT_RESIN_JELLY_COATING /datum/status_effect/resin_jelly_coating

#define STATUS_EFFECT_PLASMA_SURGE /datum/status_effect/plasma_surge
Expand Down
18 changes: 15 additions & 3 deletions code/datums/keybinding/xeno.dm
Original file line number Diff line number Diff line change
Expand Up @@ -711,21 +711,33 @@
/datum/keybinding/xeno/dodge
name = "Dodge"
full_name = "Praetorian: Dodge"
description = "Gain a speed boost upon activation and the ability to pass through mobs. Enemies automatically receive bump attacks when passed."
description = "Flood your body with adrenaline, gaining a speed boost upon activation and the ability to pass through mobs. Enemies automatically receive bump attacks when passed."
keybind_signal = COMSIG_XENOABILITY_DODGE

/datum/keybinding/xeno/impale
name = "Impale"
full_name = "Praetorian: Impale"
description = "Impale a marine next to you with your tail for moderate damage. Marked enemies are impaled twice."
description = "Skewer an object next to you with your tail. The more debuffs on a living target, the greater the damage done. Penetrates the armor of marked targets."
keybind_signal = COMSIG_XENOABILITY_IMPALE

/datum/keybinding/xeno/tail_trip
name = "Tail Trip"
full_name = "Praetorian: Tail Trip"
description = "Target a marine within two tiles of you to disorient and slows them. Marked enemies receive stronger debuffs and are stunned for a second."
description = "Twirl your tail around low to the ground, knocking over and disorienting any adjacent marines. Marked enemies receive stronger debuffs and are briefly stunned."
keybind_signal = COMSIG_XENOABILITY_TAIL_TRIP

/datum/keybinding/xeno/tail_hook
name = "Tail Hook"
full_name = "Praetorian: Tail Hook"
description = "Swing your tail high, sending the hooked edge gouging into any targets within 2 tiles. Hooked marines have their movement slowed and are dragged, spinning, towards you. Marked marines are slowed for longer and briefly knocked over."
keybind_signal = COMSIG_XENOABILITY_TAILHOOK

/datum/keybinding/xeno/baton_pass
name = "Baton Pass"
full_name = "Praetorian: Baton Pass"
description = "Inject another xenomorph with your built-up adrenaline, increasing their movement speed considerably for 6 seconds. Puts dodge on cooldown when used. Less effect on quick xenos."
keybind_signal = COMSIG_XENOABILITY_BATONPASS

/datum/keybinding/xeno/abduct
name = "Abduct"
full_name = "Praetorian: Abduct"
Expand Down
1 change: 1 addition & 0 deletions code/datums/status_effects/debuffs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -922,3 +922,4 @@
// ***************************************
/datum/status_effect/incapacitating/dancer_tagged
id = "dancer_tagged"
duration = 15 SECONDS
62 changes: 62 additions & 0 deletions code/datums/status_effects/xeno_buffs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -870,3 +870,65 @@
xeno_owner.xeno_melee_damage_modifier -= modifier
xeno_owner.remove_filter("frenzy_screech_outline")
return ..()

// ***************************************
// *********** Baton Pass
// ***************************************
/atom/movable/screen/alert/status_effect/baton_pass
name = "Baton Pass"
desc = "Adrenaline is pushing your muscles to the limit!"
icon_state = "xeno_carnage"

/datum/status_effect/baton_pass
id = "xeno_batonpass"
alert_type = /atom/movable/screen/alert/status_effect/baton_pass
duration = 6 SECONDS
status_type = STATUS_EFFECT_REFRESH
/// Used for particles. Holds the particles instead of the mob. See particle_holder for documentation.
var/obj/effect/abstract/particle_holder/particle_holder

/datum/status_effect/baton_pass/on_apply()
if(!isxeno(owner))
return FALSE
var/mob/living/carbon/xenomorph/owner_xeno = owner

particle_holder = new(owner_xeno, /particles/baton_pass)
var/particle_x = abs(owner_xeno.pixel_x)
particle_holder.pixel_x = particle_x
particle_holder.pixel_y = -3

//only slower xenos get better movespeed amplify. No gigaspeed runners
var/movespeed_mod =((owner_xeno.xeno_caste.speed <= -1) ? -0.1 : (owner_xeno.xeno_caste.speed <= -0.8) ? -0.2 : -0.4)
owner_xeno.add_movespeed_modifier(MOVESPEED_ID_PRAETORIAN_DANCER_BATON_PASS, TRUE, 1, NONE, TRUE, movespeed_mod)

to_chat(owner, span_notice("We feel on top of the world! Go, go, go!"))
owner_xeno.Shake(duration = 6 SECONDS, shake_interval = 0.08 SECONDS)
owner_xeno.emote("roar")

return ..()

/datum/status_effect/baton_pass/on_remove()
. = ..()
var/mob/living/carbon/xenomorph/owner_xeno = owner
owner_xeno.remove_movespeed_modifier(MOVESPEED_ID_PRAETORIAN_DANCER_BATON_PASS)
to_chat(owner, span_notice("We come down from our adrenaline high."))
QDEL_NULL(particle_holder)

/particles/baton_pass
icon = 'icons/effects/particles/generic_particles.dmi'
icon_state = "up_arrow"
color = "#77bfe9"
width = 100
height = 100
count = 1000
spawning = 3
lifespan = 9
fade = 12
grow = 0.04
velocity = list(0, 0)
position = generator(GEN_CIRCLE, 16, 16, NORMAL_RAND)
drift = generator(GEN_VECTOR, list(0, -0.15), list(0, 0.15))
gravity = list(0, 0.8)
scale = generator(GEN_VECTOR, list(0.1, 0.1), list(0.6,0.6), NORMAL_RAND)
rotation = 0
spin = generator(GEN_NUM, 10, 20)
4 changes: 4 additions & 0 deletions code/game/data_huds.dm
Original file line number Diff line number Diff line change
Expand Up @@ -187,6 +187,7 @@
var/static/image/intoxicated_amount_image = image('icons/mob/hud/intoxicated.dmi', icon_state = "intoxicated_amount0")
var/static/image/intoxicated_high_image = image('icons/mob/hud/intoxicated.dmi', icon_state = "intoxicated_high")
var/static/image/hunter_silence_image = image('icons/mob/hud/human.dmi', icon_state = "silence_debuff")
var/static/image/dancer_marked_image = image('icons/mob/hud/human.dmi', icon_state = "marked_debuff")
var/static/image/hive_target_image = image('icons/mob/hud/human.dmi', icon_state = "hive_target")

xeno_reagent.overlays.Cut()
Expand Down Expand Up @@ -230,6 +231,9 @@
if(IsMute())
xeno_debuff.overlays += hunter_silence_image

if(has_status_effect(STATUS_EFFECT_DANCER_TAGGED))
xeno_debuff.overlays += dancer_marked_image

if(HAS_TRAIT(src, TRAIT_HIVE_TARGET))
xeno_debuff.overlays += hive_target_image

Expand Down
Loading
Loading