mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-18 21:53:22 +00:00
* Strip Menu Suit Sensors (#82253) ## About The Pull Request Allows players to modify the suit sensors of someone else's jumpsuit without first requiring them to disrobe them.  ## Why It's Good For The Game It's annoying for players, usually antags, who are attempting to kidnap someone and then disable their suit sensors they must first entirely disrobe them, change the sensors, and then put everything back onto them. ## Changelog 🆑 balance: You can now adjust the suit sensors of another player in the strip menu. No longer must you first take it off. /🆑 --------- Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com> * Strip Menu Suit Sensors --------- Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com> Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
75 lines
2.6 KiB
Plaintext
75 lines
2.6 KiB
Plaintext
/// You can't use items on anyone other than yourself if you stand in a blacklisted room
|
|
/datum/component/shy_in_room
|
|
can_transfer = TRUE
|
|
/// Typecache of areas you can't stand
|
|
var/list/blacklist
|
|
/// Message shown when you are in a blacklisted room
|
|
var/message = "%ROOM is too creepy to do that!"
|
|
|
|
/// _blacklist, and _message map to vars
|
|
/datum/component/shy_in_room/Initialize(blacklist, message)
|
|
if(!ismob(parent))
|
|
return COMPONENT_INCOMPATIBLE
|
|
src.blacklist = blacklist
|
|
if(message)
|
|
src.message = message
|
|
|
|
/datum/component/shy_in_room/RegisterWithParent()
|
|
RegisterSignal(parent, COMSIG_MOB_CLICKON, PROC_REF(on_clickon))
|
|
RegisterSignal(parent, COMSIG_LIVING_TRY_PULL, PROC_REF(on_try_pull))
|
|
RegisterSignal(parent, COMSIG_LIVING_UNARMED_ATTACK, PROC_REF(on_unarmed_attack))
|
|
RegisterSignal(parent, COMSIG_TRY_STRIP, PROC_REF(on_try_strip))
|
|
RegisterSignal(parent, COMSIG_TRY_ALT_ACTION, PROC_REF(on_try_alt_action))
|
|
|
|
|
|
/datum/component/shy_in_room/UnregisterFromParent()
|
|
UnregisterSignal(parent, list(
|
|
COMSIG_MOB_CLICKON,
|
|
COMSIG_LIVING_TRY_PULL,
|
|
COMSIG_LIVING_UNARMED_ATTACK,
|
|
COMSIG_TRY_STRIP,
|
|
COMSIG_TRY_ALT_ACTION,
|
|
))
|
|
|
|
/datum/component/shy_in_room/PostTransfer()
|
|
if(!ismob(parent))
|
|
return COMPONENT_INCOMPATIBLE
|
|
|
|
/datum/component/shy_in_room/InheritComponent(datum/component/shy_in_room/friend, i_am_original, list/arguments)
|
|
if(i_am_original)
|
|
blacklist = friend.blacklist
|
|
message = friend.message
|
|
|
|
/// Returns TRUE or FALSE if you are in a blacklisted area
|
|
/datum/component/shy_in_room/proc/is_shy(atom/target)
|
|
var/mob/owner = parent
|
|
if(!length(blacklist) || (target in owner.DirectAccess()))
|
|
return
|
|
|
|
var/area/room = get_area(owner)
|
|
if(is_type_in_typecache(room, blacklist))
|
|
to_chat(owner, span_warning("[replacetext(message, "%ROOM", room)]"))
|
|
return TRUE
|
|
|
|
/datum/component/shy_in_room/proc/on_clickon(datum/source, atom/target, list/modifiers)
|
|
SIGNAL_HANDLER
|
|
if(modifiers[SHIFT_CLICK]) //let them examine their surroundings.
|
|
return
|
|
return is_shy(target) && COMSIG_MOB_CANCEL_CLICKON
|
|
|
|
/datum/component/shy_in_room/proc/on_try_pull(datum/source, atom/movable/target, force)
|
|
SIGNAL_HANDLER
|
|
return is_shy(target) && COMSIG_LIVING_CANCEL_PULL
|
|
|
|
/datum/component/shy_in_room/proc/on_unarmed_attack(datum/source, atom/target, proximity, modifiers)
|
|
SIGNAL_HANDLER
|
|
return is_shy(target) && COMPONENT_CANCEL_ATTACK_CHAIN
|
|
|
|
/datum/component/shy_in_room/proc/on_try_strip(datum/source, atom/target, obj/item/equipping)
|
|
SIGNAL_HANDLER
|
|
return is_shy(target) && COMPONENT_CANT_STRIP
|
|
|
|
/datum/component/shy_in_room/proc/on_try_alt_action(datum/source, atom/target, action_key)
|
|
SIGNAL_HANDLER
|
|
return is_shy(target) && COMPONENT_CANT_ALT_ACTION
|