From dc9b024faed829f7c197fd7487dfc08675f2f972 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Wed, 2 Sep 2020 19:16:16 +0200 Subject: [PATCH] Blemishes begone. --- code/__DEFINES/dcs/signals.dm | 3 ++- code/datums/components/chasm.dm | 10 +------- code/datums/diseases/advance/symptoms/fire.dm | 4 ++-- code/game/objects/items/crayons.dm | 6 ++++- .../mining/equipment/wormhole_jaunter.dm | 24 +++++++++++++------ code/modules/paperwork/photocopier.dm | 7 +++--- 6 files changed, 31 insertions(+), 23 deletions(-) diff --git a/code/__DEFINES/dcs/signals.dm b/code/__DEFINES/dcs/signals.dm index 65994dda5a..8efb2617bd 100644 --- a/code/__DEFINES/dcs/signals.dm +++ b/code/__DEFINES/dcs/signals.dm @@ -32,7 +32,7 @@ #define COMSIG_ELEMENT_DETACH "element_detach" /// sent to the component itself when unregistered from a parent -#define COMSIG_COMPONENT_UNREGISTER_PARENT "component_unregister_parent" +#define COMSIG_COMPONENT_UNREGISTER_PARENT "component_unregister_parent" /// sent to the component itself when registered to a parent #define COMSIG_COMPONENT_REGISTER_PARENT "component_register_parent" @@ -184,6 +184,7 @@ // #define HEARING_SOURCE 8 #define COMSIG_MOVABLE_DISPOSING "movable_disposing" //called when the movable is added to a disposal holder object for disposal movement: (obj/structure/disposalholder/holder, obj/machinery/disposal/source) #define COMSIG_MOVABLE_TELEPORTED "movable_teleported" //from base of do_teleport(): (channel, turf/origin, turf/destination) +#define COMSIG_MOVABLE_CHASM_DROP "movable_chasm_drop" //from base of /datum/component/chasm/drop() (/datum/component/chasm) // /mind signals #define COMSIG_PRE_MIND_TRANSFER "pre_mind_transfer" //from base of mind/transfer_to() before it's done: (new_character, old_character) diff --git a/code/datums/components/chasm.dm b/code/datums/components/chasm.dm index 0bb6c4a0af..f5a34bfca2 100644 --- a/code/datums/components/chasm.dm +++ b/code/datums/components/chasm.dm @@ -76,19 +76,11 @@ return FALSE if(M.is_flying()) return FALSE - if(ishuman(AM)) - var/mob/living/carbon/human/H = AM - if(istype(H.belt, /obj/item/wormhole_jaunter)) - var/obj/item/wormhole_jaunter/J = H.belt - //To freak out any bystanders - H.visible_message("[H] falls into [parent]!") - J.chasm_react(H) - return FALSE return TRUE /datum/component/chasm/proc/drop(atom/movable/AM) //Make sure the item is still there after our sleep - if(!AM || QDELETED(AM)) + if(!AM || QDELETED(AM) || SEND_SIGNAL(AM, COMSIG_MOVABLE_CHASM_DROP, src)) return falling_atoms[AM] = (falling_atoms[AM] || 0) + 1 var/turf/T = target_turf diff --git a/code/datums/diseases/advance/symptoms/fire.dm b/code/datums/diseases/advance/symptoms/fire.dm index ea1897b67d..05e3915470 100644 --- a/code/datums/diseases/advance/symptoms/fire.dm +++ b/code/datums/diseases/advance/symptoms/fire.dm @@ -113,9 +113,9 @@ Bonus symptom_delay_max = 90 var/chems = FALSE var/explosion_power = 1 - threshold_desc = "Resistance 9: Doubles the intensity of the effect, but reduces its frequency.
\ + threshold_desc = list("Resistance 9: Doubles the intensity of the effect, but reduces its frequency.
\ Stage Speed 8: Increases explosion radius when the host is wet.
\ - Transmission 8: Additionally synthesizes chlorine trifluoride and napalm inside the host." + Transmission 8: Additionally synthesizes chlorine trifluoride and napalm inside the host.") /datum/symptom/alkali/Start(datum/disease/advance/A) if(!..()) diff --git a/code/game/objects/items/crayons.dm b/code/game/objects/items/crayons.dm index 7f8b720509..2a9944f770 100644 --- a/code/game/objects/items/crayons.dm +++ b/code/game/objects/items/crayons.dm @@ -735,7 +735,11 @@ if(isobj(target)) if(actually_paints) var/list/hsl = rgb2hsl(hex2num(copytext(paint_color,2,4)),hex2num(copytext(paint_color,4,6)),hex2num(copytext(paint_color,6,8))) - if(hsl[3] < 0.25 && !istype(target, /obj/structure/window) && !istype(target, /obj/effect/decal/cleanable/crayon)) //Colors too dark are rejected + var/static/whitelisted = typecacheof(list(/obj/structure/window, + /obj/effect/decal/cleanable/crayon, + /obj/machinery/door/window) + ) + if(hsl[3] < 0.25 && !whitelisted[target]) //Colors too dark are rejected to_chat(usr, "A color that dark on an object like this? Surely not...") return FALSE diff --git a/code/modules/mining/equipment/wormhole_jaunter.dm b/code/modules/mining/equipment/wormhole_jaunter.dm index c17b62ba6c..e9f8079400 100644 --- a/code/modules/mining/equipment/wormhole_jaunter.dm +++ b/code/modules/mining/equipment/wormhole_jaunter.dm @@ -18,6 +18,15 @@ SSblackbox.record_feedback("tally", "jaunter", 1, "User") // user activated activate(user, TRUE) +/obj/item/wormhole_jaunter/equipped(mob/user, slot) + . = ..() + if(slot == SLOT_BELT) + RegisterSignal(user, COMSIG_MOVABLE_CHASM_DROP, .proc/chasm_react) + +/obj/item/wormhole_jaunter/dropped(mob/user) + . = ..() + UnregisterSignal(user, COMSIG_MOVABLE_CHASM_DROP) + /obj/item/wormhole_jaunter/proc/turf_check(mob/user) var/turf/device_turf = get_turf(user) if(!device_turf || is_centcom_level(device_turf.z) || is_reserved_level(device_turf.z)) @@ -71,13 +80,14 @@ SSblackbox.record_feedback("tally", "jaunter", 1, "EMP") // EMP accidental activation activate(M) -/obj/item/wormhole_jaunter/proc/chasm_react(mob/user) - if(user.get_item_by_slot(SLOT_BELT) == src) - to_chat(user, "Your [name] activates, saving you from the chasm!") - SSblackbox.record_feedback("tally", "jaunter", 1, "Chasm") // chasm automatic activation - activate(user, FALSE, TRUE) - else - to_chat(user, "[src] is not attached to your belt, preventing it from saving you from the chasm. RIP.") +/obj/item/wormhole_jaunter/proc/chasm_react(mob/source, datum/component/chasm/C) + to_chat(source, "Your [name] activates, saving you from the chasm!") + SSblackbox.record_feedback("tally", "jaunter", 1, "Chasm") // chasm automatic activation + activate(source, FALSE, TRUE) + if(C) + var/atom/A = C.parent + A.visible_message("[source] falls into [A]!") + return TRUE //jaunter tunnel /obj/effect/portal/jaunt_tunnel diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm index 38029b5d4c..25a9cf0043 100644 --- a/code/modules/paperwork/photocopier.dm +++ b/code/modules/paperwork/photocopier.dm @@ -187,12 +187,13 @@ */ /obj/machinery/photocopier/proc/do_copy_loop(datum/callback/copy_cb, mob/user) busy = TRUE - var/i - for(i in 1 to num_copies) + var/num_loops + for(var/i in 1 to num_copies) //if(attempt_charge(src, user) & COMPONENT_OBJ_CANCEL_CHARGE) // break addtimer(copy_cb, i SECONDS) - addtimer(CALLBACK(src, .proc/reset_busy), i SECONDS) + num_loops++ + addtimer(CALLBACK(src, .proc/reset_busy), num_loops SECONDS) /** * Sets busy to `FALSE`. Created as a proc so it can be used in callbacks.