From a00df2ed761e422e9dfdfffe36ca394cae6eded5 Mon Sep 17 00:00:00 2001 From: Zephyr <12817816+ZephyrTFA@users.noreply.github.com> Date: Mon, 28 Mar 2022 17:49:50 -0400 Subject: [PATCH] Hazardous Area Component | Free Golem Soft-Restriction (#65720) Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com> --- code/__DEFINES/dcs/signals/signals_ladder.dm | 3 + code/__DEFINES/dcs/signals/signals_vehicle.dm | 4 + code/datums/components/hazard_area.dm | 130 ++++++++++++++++++ code/game/objects/structures/ladders.dm | 4 + .../actionspeed/modifiers/status_effects.dm | 3 + .../mob_spawn/ghost_roles/golem_roles.dm | 4 + .../movespeed/modifiers/status_effects.dm | 3 + code/modules/vehicles/ridden.dm | 5 + icons/hud/screen_alert.dmi | Bin 118350 -> 118725 bytes tgstation.dme | 3 + 10 files changed, 159 insertions(+) create mode 100644 code/__DEFINES/dcs/signals/signals_ladder.dm create mode 100644 code/__DEFINES/dcs/signals/signals_vehicle.dm create mode 100644 code/datums/components/hazard_area.dm diff --git a/code/__DEFINES/dcs/signals/signals_ladder.dm b/code/__DEFINES/dcs/signals/signals_ladder.dm new file mode 100644 index 00000000000..ed398e9012e --- /dev/null +++ b/code/__DEFINES/dcs/signals/signals_ladder.dm @@ -0,0 +1,3 @@ +/// Called on a mob attempting to use a ladder to go in either direction. (entrance_ladder, exit_ladder, going_up) +#define COMSIG_LADDER_TRAVEL "ladder-travel" + #define LADDER_TRAVEL_BLOCK (1<<0) diff --git a/code/__DEFINES/dcs/signals/signals_vehicle.dm b/code/__DEFINES/dcs/signals/signals_vehicle.dm new file mode 100644 index 00000000000..1717943a81a --- /dev/null +++ b/code/__DEFINES/dcs/signals/signals_vehicle.dm @@ -0,0 +1,4 @@ +/// Called on a mob when they start riding a vehicle (obj/vehicle) +#define COMSIG_VEHICLE_RIDDEN "vehicle-ridden" + /// Return this to signal that the mob should be removed from the vehicle + #define EJECT_FROM_VEHICLE (1<<0) diff --git a/code/datums/components/hazard_area.dm b/code/datums/components/hazard_area.dm new file mode 100644 index 00000000000..e29ed529600 --- /dev/null +++ b/code/datums/components/hazard_area.dm @@ -0,0 +1,130 @@ +/** + * This is a relatively simple component that attempts to deter the parent of the component away + * from a specific area or areas. By default it simply applies a penalty where all movement is + * four times slower than usual and any action that would affect your 'next move' has a penalty + * multiplier of 4 attached. + */ +/datum/component/hazard_area + /// The blacklist of areas that the parent will be penalized for entering + var/list/area_blacklist + /// The whitelist of areas that the parent is allowed to be in. If set this overrides the blacklist + var/list/area_whitelist + /// A variable storing the typepath of the last checked area to prevent any further logic running if it has not changed + VAR_PRIVATE/last_parent_area + +/datum/component/hazard_area/Initialize(area_blacklist, area_whitelist) + . = ..() + if(!ismob(parent)) + return COMPONENT_INCOMPATIBLE + if(!islist(area_blacklist) && !islist(area_whitelist)) + stack_trace("[type] - neither area_blacklist nor area_whitelist were provided.") + return COMPONENT_INCOMPATIBLE + src.area_blacklist = area_blacklist + src.area_whitelist = area_whitelist + +/datum/component/hazard_area/RegisterWithParent() + var/mob/parent_mob = parent + parent_mob.become_area_sensitive(type) + RegisterSignal(parent_mob, COMSIG_ENTER_AREA, .proc/handle_parent_area_change) + RegisterSignal(parent_mob, COMSIG_LADDER_TRAVEL, .proc/reject_ladder_movement) + RegisterSignal(parent_mob, COMSIG_VEHICLE_RIDDEN, .proc/reject_vehicle) + +/datum/component/hazard_area/UnregisterFromParent() + var/mob/parent_mob = parent + UnregisterSignal(parent_mob, list(COMSIG_ENTER_AREA, COMSIG_LADDER_TRAVEL, COMSIG_VEHICLE_RIDDEN)) + parent_mob.lose_area_sensitivity(type) + +/** + * This signal handler checks the area the target ladder is in and if hazardous prevents them from using it + */ +/datum/component/hazard_area/proc/reject_ladder_movement(mob/source, obj/entrance_ladder, exit_ladder, going_up) + SIGNAL_HANDLER + + if(check_area_hazardous(get_area(exit_ladder))) + entrance_ladder.balloon_alert(parent, "the path is too dangerous for you!") + return LADDER_TRAVEL_BLOCK + +/** + * A simple signal handler that informs the parent they cannot ride a vehicle and ejects them + */ +/datum/component/hazard_area/proc/reject_vehicle(mob/source, obj/vehicle/vehicle) + SIGNAL_HANDLER + + if(!check_area_hazardous(last_parent_area)) + return + + vehicle.balloon_alert(parent, "you slip and fall off!") + var/mob/living/parent_living = parent + parent_living.Stun(0.5 SECONDS) + return EJECT_FROM_VEHICLE + +/** + * Checks if the area being checked is considered hazardous + * The whitelist is checked first if it exists, otherwise it checks if it is in the blacklist + * + * * checking - This should be the typepath of the area being checked, but there is a conversion handler if you pass in a reference instead + */ +/datum/component/hazard_area/proc/check_area_hazardous(area/checking) + if(!ispath(checking)) + checking = checking.type + if(area_whitelist) + return !(checking in area_whitelist) + return checking in area_blacklist + +/** + * This proc handles the status effect applied to the parent, most noteably applying or removing it as required + */ +/datum/component/hazard_area/proc/update_parent_status_effect() + if(QDELETED(parent)) + return + + var/mob/living/parent_living = parent + var/datum/status_effect/hazard_area/effect = parent_living.has_status_effect(/datum/status_effect/hazard_area) + var/should_have_status_effect = check_area_hazardous(last_parent_area) + + if(should_have_status_effect && !effect) // Should have the status - and doesnt + parent_living.apply_status_effect(/datum/status_effect/hazard_area) + if(parent_living.buckled) + parent_living.buckled.balloon_alert(parent, "you fall off!") + parent_living.buckled.unbuckle_mob(parent_living, force=TRUE) + return + + if(!should_have_status_effect && effect) // Shouldn't have the status - and does + parent_living.remove_status_effect(/datum/status_effect/hazard_area) + +/** + * This signal should be called whenever our parent moves. + */ +/datum/component/hazard_area/proc/handle_parent_area_change(mob/source, area/new_area) + SIGNAL_HANDLER + + if(new_area.type == last_parent_area) + return + last_parent_area = new_area.type + + INVOKE_ASYNC(src, .proc/update_parent_status_effect) + +/// The dedicated status effect for the hazard_area component - use with caution and know what it does! +/datum/status_effect/hazard_area + id = "hazard_area" + examine_text = "SUBJECTPRONOUN appears to be largely immobilized through unknown means." + status_type = STATUS_EFFECT_UNIQUE + alert_type = /atom/movable/screen/alert/status_effect/hazard_area + +/datum/status_effect/hazard_area/nextmove_modifier() + return 4 + +/datum/status_effect/hazard_area/on_apply() + . = ..() + owner.add_movespeed_modifier(/datum/movespeed_modifier/status_effect/hazard_area, update=TRUE) + owner.add_actionspeed_modifier(/datum/actionspeed_modifier/status_effect/hazard_area, update=TRUE) + +/datum/status_effect/hazard_area/on_remove() + . = ..() + owner.remove_movespeed_modifier(/datum/movespeed_modifier/status_effect/hazard_area, update=TRUE) + owner.remove_actionspeed_modifier(/datum/actionspeed_modifier/status_effect/hazard_area, update=TRUE) + +/atom/movable/screen/alert/status_effect/hazard_area + name = "Hazardous Area" + desc = "The area you are currently within is incredibly hazardous to you. Check your surroudings and vacate as soon as possible." + icon_state = "hazard_area" diff --git a/code/game/objects/structures/ladders.dm b/code/game/objects/structures/ladders.dm index ae4b282ef86..e473ac08390 100644 --- a/code/game/objects/structures/ladders.dm +++ b/code/game/objects/structures/ladders.dm @@ -71,6 +71,10 @@ qdel(src) /obj/structure/ladder/proc/travel(going_up, mob/user, is_ghost, obj/structure/ladder/ladder) + var/response = SEND_SIGNAL(user, COMSIG_LADDER_TRAVEL, src, ladder, going_up) + if(response & LADDER_TRAVEL_BLOCK) + return + if(!is_ghost) ladder.add_fingerprint(user) if(!do_after(user, travel_time, target = src)) diff --git a/code/modules/actionspeed/modifiers/status_effects.dm b/code/modules/actionspeed/modifiers/status_effects.dm index 65153e08933..a6f812890ef 100644 --- a/code/modules/actionspeed/modifiers/status_effects.dm +++ b/code/modules/actionspeed/modifiers/status_effects.dm @@ -6,3 +6,6 @@ /datum/actionspeed_modifier/nooartrium multiplicative_slowdown = 0.5 + +/datum/actionspeed_modifier/status_effect/hazard_area + multiplicative_slowdown = 4 diff --git a/code/modules/mob_spawn/ghost_roles/golem_roles.dm b/code/modules/mob_spawn/ghost_roles/golem_roles.dm index 8f85972f895..b7fe63bc170 100644 --- a/code/modules/mob_spawn/ghost_roles/golem_roles.dm +++ b/code/modules/mob_spawn/ghost_roles/golem_roles.dm @@ -52,6 +52,10 @@ if (policy) to_chat(new_spawn, policy) to_chat(new_spawn, "Build golem shells in the autolathe, and feed refined mineral sheets to the shells to bring them to life! You are generally a peaceful group unless provoked.") + var/static/list/allowed_areas + if(!allowed_areas) + allowed_areas = typecacheof(list(/area/icemoon, /area/lavaland, /area/ruin)) + new_spawn.AddComponent(/datum/component/hazard_area, area_whitelist=allowed_areas) else new_spawn.mind.enslave_mind_to_creator(owner) log_game("[key_name(new_spawn)] possessed a golem shell enslaved to [key_name(owner)].") diff --git a/code/modules/movespeed/modifiers/status_effects.dm b/code/modules/movespeed/modifiers/status_effects.dm index 40339ed26f1..2d3d69117e1 100644 --- a/code/modules/movespeed/modifiers/status_effects.dm +++ b/code/modules/movespeed/modifiers/status_effects.dm @@ -16,3 +16,6 @@ variable = TRUE blacklisted_movetypes = (FLYING|FLOATING) +/datum/movespeed_modifier/status_effect/hazard_area + multiplicative_slowdown = 4 + diff --git a/code/modules/vehicles/ridden.dm b/code/modules/vehicles/ridden.dm index 3246b582dbc..b03229d283e 100644 --- a/code/modules/vehicles/ridden.dm +++ b/code/modules/vehicles/ridden.dm @@ -58,6 +58,11 @@ /obj/vehicle/ridden/buckle_mob(mob/living/M, force = FALSE, check_loc = TRUE) if(!force && occupant_amount() >= max_occupants) return FALSE + + var/response = SEND_SIGNAL(M, COMSIG_VEHICLE_RIDDEN, src) + if(response & EJECT_FROM_VEHICLE) + return FALSE + return ..() /obj/vehicle/ridden/zap_act(power, zap_flags) diff --git a/icons/hud/screen_alert.dmi b/icons/hud/screen_alert.dmi index 57e3219a5377d77dae3f8779f27f05a0209ea7ac..de0c95a4087751b6487965c94f8968696a1e45a4 100755 GIT binary patch delta 18876 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 hC09NzwZ1>xl+p9m!M%oK>4_j`Yt>ORx diff --git a/tgstation.dme b/tgstation.dme index e299ac439c1..a94ba129062 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -212,6 +212,7 @@ #include "code\__DEFINES\dcs\signals\signals_heretic.dm" #include "code\__DEFINES\dcs\signals\signals_hydroponic.dm" #include "code\__DEFINES\dcs\signals\signals_janitor.dm" +#include "code\__DEFINES\dcs\signals\signals_ladder.dm" #include "code\__DEFINES\dcs\signals\signals_light_eater.dm" #include "code\__DEFINES\dcs\signals\signals_medical.dm" #include "code\__DEFINES\dcs\signals\signals_mind.dm" @@ -240,6 +241,7 @@ #include "code\__DEFINES\dcs\signals\signals_transform.dm" #include "code\__DEFINES\dcs\signals\signals_turf.dm" #include "code\__DEFINES\dcs\signals\signals_twohand.dm" +#include "code\__DEFINES\dcs\signals\signals_vehicle.dm" #include "code\__DEFINES\dcs\signals\signals_wash.dm" #include "code\__DEFINES\dcs\signals\signals_xeno_control.dm" #include "code\__DEFINES\dcs\signals\signals_atom\signals_atom_attack.dm" @@ -714,6 +716,7 @@ #include "code\datums\components\gps.dm" #include "code\datums\components\grillable.dm" #include "code\datums\components\gunpoint.dm" +#include "code\datums\components\hazard_area.dm" #include "code\datums\components\heirloom.dm" #include "code\datums\components\holderloving.dm" #include "code\datums\components\igniter.dm"