Skip to content

Commit

Permalink
TGS Test Merge (#16843)
Browse files Browse the repository at this point in the history
  • Loading branch information
comfyorange committed Jan 7, 2025
2 parents 5e74828 + 47d8562 commit df35f5b
Show file tree
Hide file tree
Showing 13 changed files with 339 additions and 0 deletions.
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 @@ -173,6 +173,8 @@
#define COMSIG_XENOABILITY_BOMBARD "xenoability_bombard"
#define COMSIG_XENOABILITY_ACID_SHROUD "xenoability_acid_shroud"
#define COMSIG_XENOABILITY_ACID_SHROUD_SELECT "xenoability_acid_shroud_select"
#define COMSIG_XENOABILITY_STEAM_RUSH "xenoability_steam_rush"
#define COMSIG_XENOABILITY_HIGH_PRESSURE_SPIT "xenoability_high_pressure_spit"

#define COMSIG_XENOABILITY_THROW_HUGGER "xenoability_throw_hugger"
#define COMSIG_XENOABILITY_CALL_YOUNGER "xenoability_call_younger"
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 @@ -33,6 +33,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_BOILER_SIZZLER_STEAM_RUSH "BOILER_SIZZLER_STEAM_RUSH"

#define MOVESPEED_ID_SIMPLEMOB_VARSPEED "SIMPLEMOB_VARSPEED_MODIFIER"

Expand Down
2 changes: 2 additions & 0 deletions code/_globalvars/lists/mobs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,8 @@ GLOBAL_LIST_INIT(all_xeno_types, list(
/mob/living/carbon/xenomorph/praetorian/dancer/primordial,
/mob/living/carbon/xenomorph/boiler,
/mob/living/carbon/xenomorph/boiler/primordial,
/mob/living/carbon/xenomorph/boiler/sizzler,
/mob/living/carbon/xenomorph/boiler/sizzler/primordial,
/mob/living/carbon/xenomorph/defiler,
/mob/living/carbon/xenomorph/defiler/primordial,
/mob/living/carbon/xenomorph/crusher,
Expand Down
14 changes: 14 additions & 0 deletions code/datums/keybinding/xeno.dm
Original file line number Diff line number Diff line change
Expand Up @@ -265,6 +265,20 @@
description = "Create a smokescreen for a getaway."
keybind_signal = COMSIG_XENOABILITY_ACID_SHROUD_SELECT

/datum/keybinding/xeno/steam_rush
name = "steam_rush"
full_name = "Boiler: Steam Rush"
description = "Speeds up and increases slash damage."
keybind_signal = COMSIG_XENOABILITY_STEAM_RUSH
hotkey_keys = list("Space")

/datum/keybinding/xeno/high_pressure_spit
name = "high_pressure_spit"
full_name = "Boiler: High Pressure Spit"
description = "Fires a high pressure glob of acid that shatters and massively knocksback the target."
keybind_signal = COMSIG_XENOABILITY_HIGH_PRESSURE_SPIT
hotkey_keys = list("E")

/datum/keybinding/xeno/plow_charge
name = "plow_charge"
full_name = "Bull: Plow Charge"
Expand Down
6 changes: 6 additions & 0 deletions code/modules/ai/presets/xeno_presets.dm
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,12 @@
. = ..()
AddComponent(/datum/component/ai_controller, /datum/ai_behavior/xeno)

/mob/living/carbon/xenomorph/boiler/sizzler/ai

/mob/living/carbon/xenomorph/boiler/sizzler/ai/Initialize(mapload)
. = ..()
AddComponent(/datum/component/ai_controller, /datum/ai_behavior/xeno)

/mob/living/carbon/xenomorph/nymph/ai

/mob/living/carbon/xenomorph/nymph/ai/Initialize()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -362,3 +362,144 @@ GLOBAL_LIST_INIT(boiler_glob_image_list, list(
bombard_action.cooldown_timer = null
bombard_action.countdown.stop()
bombard_action?.add_cooldown(xeno_owner.xeno_caste.bomb_delay + 8.5 SECONDS - ((xeno_owner.neuro_ammo + xeno_owner.corrosive_ammo) * (BOILER_BOMBARD_COOLDOWN_REDUCTION SECONDS))) //The cooldown of Bombard that is added when this ability is used. It is the calculation of Bombard cooldown + 10 seconds.

// ***************************************
// *********** Steam Rush
// ***************************************

/datum/action/ability/xeno_action/steam_rush
name = "Steam Rush"
action_icon_state = "steam_rush"
action_icon = 'icons/Xeno/actions/boiler.dmi'
desc = "Grants a short speed boost. Slashes deal extra burn damage and reset the duration."
ability_cost = 100
cooldown_duration = 25 SECONDS
keybinding_signals = list(
KEYBINDING_NORMAL = COMSIG_XENOABILITY_STEAM_RUSH,
)
/// Holds the particles instead of the mob.
var/obj/effect/abstract/particle_holder/particle_holder
/// The increase of speed when ability is active.
var/speed_buff = -1
/// How long the ability will last?
var/duration = 1.5 SECONDS
///Timer for steam rush's duration
var/steam_rush_duration
/// How much extra burn damage is dealt on slash
var/steam_damage = 10

/datum/action/ability/xeno_action/steam_rush/action_activate()
var/mob/living/carbon/xenomorph/boiler/sizzler/X = owner

if(X.steam_rush)
to_chat(X, span_xenodanger("Our body is already spewing steam!"))
return

X.emote("roar")
X.visible_message(span_danger("[X]'s body is hissing with steam!"), \
span_xenowarning("We feel steam spraying from our body!"))

X.steam_rush = TRUE

steam_rush_duration = addtimer(CALLBACK(src, PROC_REF(steam_rush_deactivate)), duration, TIMER_UNIQUE|TIMER_STOPPABLE|TIMER_OVERRIDE)

X.add_movespeed_modifier(MOVESPEED_ID_BOILER_SIZZLER_STEAM_RUSH, TRUE, 0, NONE, TRUE, speed_buff)

particle_holder = new(owner, /particles/sizzler_steam)
particle_holder.pixel_y = -8
particle_holder.pixel_x = 10

RegisterSignal(X, COMSIG_XENOMORPH_ATTACK_LIVING, PROC_REF(steam_slash))

succeed_activate()
add_cooldown()

///Adds burn damage and resets timer during steam rush buff
/datum/action/ability/xeno_action/steam_rush/proc/steam_slash(datum/source, mob/living/target, damage, list/damage_mod, list/armor_mod)
SIGNAL_HANDLER
var/mob/living/rusher = owner
var/datum/action/ability/xeno_action/steam_rush/steam_rush_ability = rusher.actions_by_path[/datum/action/ability/xeno_action/steam_rush]
var/mob/living/carbon/carbon_target = target

carbon_target.apply_damage(steam_damage, damagetype = BURN, blocked = ACID)
playsound(carbon_target, 'sound/voice/alien/hiss2.ogg', 25)
to_chat(carbon_target, span_danger("We are burned by the hot steam!"))

if(steam_rush_ability.steam_rush_duration)
deltimer(steam_rush_ability.steam_rush_duration)
steam_rush_ability.steam_rush_duration = addtimer(CALLBACK(src, PROC_REF(steam_rush_deactivate)), duration, TIMER_UNIQUE|TIMER_STOPPABLE|TIMER_OVERRIDE)

///Called when we want to end the steam rush ability
/datum/action/ability/xeno_action/steam_rush/proc/steam_rush_deactivate()
if(QDELETED(owner))
return
var/mob/living/carbon/xenomorph/X = owner

X.remove_movespeed_modifier(MOVESPEED_ID_BOILER_SIZZLER_STEAM_RUSH)

X.playsound_local(X, 'sound/voice/alien/hiss2.ogg', 50)

X.steam_rush = FALSE
QDEL_NULL(particle_holder)
UnregisterSignal(X, COMSIG_XENOMORPH_ATTACK_LIVING)

/datum/action/ability/xeno_action/steam_rush/on_cooldown_finish()
owner.balloon_alert(owner, "Our blood is boiling once more; we can use steam rush again.")
owner.playsound_local(owner, 'sound/effects/alien/new_larva.ogg', 25, 0, 1)
return ..()

/particles/sizzler_steam
icon = 'icons/effects/particles/smoke.dmi'
icon_state = list("steam_1" = 1, "steam_2" = 1, "steam_3" = 2)
width = 100
height = 300
count = 50
spawning = 3
lifespan = 1.5 SECONDS
fade = 3 SECONDS
velocity = list(0, 0.3, 0)
position = list(5, 32, 0)
drift = generator(GEN_SPHERE, 0, 1, NORMAL_RAND)
friction = 0.1
gravity = list(0, 0.95)
grow = 0.1

// ***************************************
// *********** High-Pressure Spit
// ***************************************
/datum/action/ability/activable/xeno/high_pressure_spit
name = "High Pressure Spit"
action_icon_state = "acid_lance_glob"
action_icon = 'icons/Xeno/actions/boiler.dmi'
desc = "Fires a high pressure glob of acid that knocks back, stuns, and shatters the target."
ability_cost = 150
cooldown_duration = 25 SECONDS
keybinding_signals = list(
KEYBINDING_NORMAL = COMSIG_XENOABILITY_HIGH_PRESSURE_SPIT,
)

/datum/action/ability/activable/xeno/high_pressure_spit/use_ability(atom/target)
var/mob/living/carbon/xenomorph/X = owner

new /obj/effect/temp_visual/wraith_warp(get_turf(owner))

if(!do_after(X, 1 SECONDS, NONE, target, BUSY_ICON_DANGER))
return fail_activate()

playsound(X.loc, 'sound/voice/alien/hiss2.ogg', 50, 1)

var/datum/ammo/xeno/acid/heavy/high_pressure_spit/high_pressure_spit = GLOB.ammo_list[/datum/ammo/xeno/acid/heavy/high_pressure_spit]

var/obj/projectile/newspit = new(get_turf(X))
newspit.generate_bullet(high_pressure_spit)
newspit.def_zone = X.get_limbzone_target()

newspit.fire_at(target, X, X, newspit.ammo.max_range)

succeed_activate()
add_cooldown()

/datum/action/ability/activable/xeno/high_pressure_spit/on_cooldown_finish()
owner.balloon_alert(owner, "Our steam is welling up; we can use high pressure spit again.")
owner.playsound_local(owner, 'sound/voice/alien/hiss2.ogg', 25, 0, 1)
return ..()
Original file line number Diff line number Diff line change
Expand Up @@ -35,3 +35,9 @@
smoke.start()
. = ..()

/mob/living/carbon/xenomorph/boiler/sizzler
caste_base_type = /datum/xeno_caste/boiler/sizzler

/mob/living/carbon/xenomorph/boiler/sizzler/Initialize(mapload)
. = ..()
ammo = GLOB.ammo_list[/datum/ammo/xeno/acid/airburst]
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,9 @@
/datum/xeno_caste/boiler/normal
upgrade = XENO_UPGRADE_NORMAL

/datum/xeno_caste/boiler/sizzler/normal
upgrade = XENO_UPGRADE_NORMAL

/datum/xeno_caste/boiler/primordial
upgrade_name = "Primordial"
caste_desc = "A horrendously effective alien siege engine."
Expand All @@ -97,3 +100,44 @@
/datum/action/ability/activable/xeno/spray_acid/line/boiler,
/datum/action/ability/activable/xeno/acid_shroud,
)

/datum/xeno_caste/boiler/sizzler
caste_type_path = /mob/living/carbon/xenomorph/boiler/sizzler
upgrade_name = ""
caste_name = "Sizzler Boiler"
display_name = "Sizzler"
upgrade = XENO_UPGRADE_BASETYPE
caste_desc = "Gross! The large creature is venting a hot steam."

// *** Ranged Attack *** //
spit_delay = 0.5 SECONDS
spit_types = list(/datum/ammo/xeno/acid/airburst, /datum/ammo/xeno/acid/airburst/heavy)

actions = list(
/datum/action/ability/xeno_action/xeno_resting,
/datum/action/ability/xeno_action/watch_xeno,
/datum/action/ability/activable/xeno/psydrain,
/datum/action/ability/xeno_action/place_acidwell,
/datum/action/ability/activable/xeno/corrosive_acid/strong,
/datum/action/ability/activable/xeno/xeno_spit,
/datum/action/ability/activable/xeno/spray_acid/line/boiler,
/datum/action/ability/xeno_action/steam_rush,
)

/datum/xeno_caste/boiler/sizzler/primordial
upgrade_name = "Primordial"
upgrade = XENO_UPGRADE_PRIMO
caste_desc = "A living steam engine. Its body spews hot gas."
primordial_message = "Our steam is ceaseless. We are the hive's living engine. May our enemies perish in our scalding radiance."

actions = list(
/datum/action/ability/xeno_action/xeno_resting,
/datum/action/ability/xeno_action/watch_xeno,
/datum/action/ability/activable/xeno/psydrain,
/datum/action/ability/xeno_action/place_acidwell,
/datum/action/ability/activable/xeno/corrosive_acid/strong,
/datum/action/ability/activable/xeno/xeno_spit,
/datum/action/ability/activable/xeno/spray_acid/line/boiler,
/datum/action/ability/xeno_action/steam_rush,
/datum/action/ability/activable/xeno/high_pressure_spit,
)
4 changes: 4 additions & 0 deletions code/modules/mob/living/carbon/xenomorph/xeno_defines.dm
Original file line number Diff line number Diff line change
Expand Up @@ -406,6 +406,10 @@ GLOBAL_LIST_INIT(strain_list, init_glob_strain_list())
/// The amount of Wrath currently stored.
var/wrath_stored = 0

// *** Boiler vars *** //
///When true the boiler gains speed and resets the duration on attack
var/steam_rush = FALSE

//Notification spam controls
var/recent_notice = 0
var/notice_delay = 20 //2 second between notices
Expand Down
7 changes: 7 additions & 0 deletions code/modules/mob/living/carbon/xenomorph/xenoupgrade.dm
Original file line number Diff line number Diff line change
Expand Up @@ -308,6 +308,13 @@
upgrade = XENO_UPGRADE_PRIMO
upgrade_stored = TIER_THREE_THRESHOLD

/mob/living/carbon/xenomorph/boiler/sizzler
upgrade = XENO_UPGRADE_NORMAL

/mob/living/carbon/xenomorph/boiler/sizzler/primordial
upgrade = XENO_UPGRADE_PRIMO
upgrade_stored = TIER_THREE_THRESHOLD

//---BOILER END---//
//============//
//---DEFENDER START---//
Expand Down
Loading

0 comments on commit df35f5b

Please sign in to comment.