Buffs blue and purple raptors a bit, and fixes chasm immunity bugs (#95414)

## About The Pull Request

Increases blue raptors' HP to 300, and makes purple raptors
automatically initiate flight if you are about to fall into a chasm
while wearing one on your back.

Also fixes 2 exploits involving chasms which would render you immune to
that particular chasm.

## Why It's Good For The Game

I've had some feedback on raptors, and more specifically how blue and
purples are rather underwhelming, former only being a single feature
from old raptors and latter not providing much of a benefit to
non-settlers. This should address both of those, making blues a bit
tankier and purples being able to save you from an instant death.

## Changelog
🆑
balance: Blue raptors had their HP increased from 220 to 300
balance: Purple raptors now automatically start flying if the owner is
about to fall into a chasm.
fix: Fixed 2 exploits which would render you immune to falling down a
specific chasm.
/🆑
This commit is contained in:
SmArtKar
2026-03-22 21:21:07 -04:00
committed by GitHub
parent 33be0d0555
commit b6fd7ea891
2 changed files with 25 additions and 5 deletions
@@ -197,8 +197,8 @@ GLOBAL_LIST_INIT(raptor_colors, init_raptor_colors())
COMSIG_RAPTOR_WINGS_OPENED, \
COMSIG_RAPTOR_WINGS_CLOSED, \
null, \
CALLBACK(src, PROC_REF(can_fly)), \
CALLBACK(src, PROC_REF(can_fly)), \
CALLBACK(src, PROC_REF(check_flight)), \
CALLBACK(src, PROC_REF(check_flight)), \
)
/obj/item/mob_holder/purple_raptor/Destroy()
@@ -212,9 +212,11 @@ GLOBAL_LIST_INIT(raptor_colors, init_raptor_colors())
if ((slot & ITEM_SLOT_BACK) && ishuman(user) && flight_action)
flight_action.Grant(held_mob)
flight_action.GiveAction(user)
RegisterSignal(user, COMSIG_MOVABLE_CHASM_DROPPED, PROC_REF(chasm_react))
/obj/item/mob_holder/purple_raptor/dropped(mob/user, silent)
. = ..()
UnregisterSignal(user, COMSIG_MOVABLE_CHASM_DROPPED)
if (wings_open)
toggle_wings(user)
// Removed in Destroy()
@@ -232,7 +234,7 @@ GLOBAL_LIST_INIT(raptor_colors, init_raptor_colors())
source.remove_movespeed_modifier(/datum/movespeed_modifier/jetpack/raptor)
source.add_movespeed_modifier(/datum/movespeed_modifier/jetpack/raptor/slow)
/obj/item/mob_holder/purple_raptor/proc/can_fly()
/obj/item/mob_holder/purple_raptor/proc/can_fly(silent = FALSE)
var/mob/living/carbon/human/user = loc
if (!istype(user) || user.stat || user.body_position == LYING_DOWN || isnull(user.client))
return FALSE
@@ -245,9 +247,13 @@ GLOBAL_LIST_INIT(raptor_colors, init_raptor_colors())
if (environment?.return_pressure() >= HAZARD_LOW_PRESSURE + 10)
return TRUE
to_chat(user, span_warning("The atmosphere is too thin for you to fly!"))
if (!silent)
to_chat(user, span_warning("The atmosphere is too thin for you to fly!"))
return FALSE
/obj/item/mob_holder/purple_raptor/proc/check_flight()
return can_fly(silent = TRUE)
/obj/item/mob_holder/purple_raptor/proc/toggle_wings(mob/living/carbon/human/user)
// In case something goes wrong
if (!istype(user))
@@ -299,8 +305,18 @@ GLOBAL_LIST_INIT(raptor_colors, init_raptor_colors())
UnregisterSignal(user, list(COMSIG_HUMAN_HEIGHT_UPDATED, SIGNAL_ADDTRAIT(TRAIT_FAT), SIGNAL_REMOVETRAIT(TRAIT_FAT)))
SEND_SIGNAL(src, COMSIG_RAPTOR_WINGS_CLOSED, user)
/obj/item/mob_holder/purple_raptor/proc/chasm_react(mob/living/user, turf/chasm)
SIGNAL_HANDLER
if (wings_open || !can_fly())
return
toggle_wings(user)
if (wings_open)
return COMPONENT_NO_CHASM_DROP
/obj/item/mob_holder/purple_raptor/process(seconds_per_tick)
if (!can_fly())
if (!can_fly(silent = TRUE))
toggle_wings(loc)
return PROCESS_KILL
@@ -406,6 +422,7 @@ GLOBAL_LIST_INIT(raptor_colors, init_raptor_colors())
/datum/raptor_color/blue
color = "blue"
description = "Covered in tough, lava-resistant feathers with thick insulated fur underneath, this breed is capable of marching through lava and fire alike."
health = 300
guaranteed_crossbreeds = list(
/datum/raptor_color/red = /datum/raptor_color/purple,
/datum/raptor_color/white = /datum/raptor_color/green,