From 6bd0ecfab0cc0e9abc32e332a7f484f8ae2e71a4 Mon Sep 17 00:00:00 2001 From: Fox McCloud Date: Sat, 2 Mar 2019 10:03:09 -0500 Subject: [PATCH] tweaks --- code/game/machinery/recycler.dm | 2 +- .../items/weapons/storage/artistic_toolbox.dm | 113 +++++++++++------- code/modules/mob/inventory.dm | 60 +++++++--- 3 files changed, 110 insertions(+), 65 deletions(-) diff --git a/code/game/machinery/recycler.dm b/code/game/machinery/recycler.dm index 6cb8e05dd81..99d3b135a08 100644 --- a/code/game/machinery/recycler.dm +++ b/code/game/machinery/recycler.dm @@ -176,7 +176,7 @@ var/const/SAFETY_COOLDOWN = 100 // Remove and recycle the equipped items if(eat_victim_items) - for(var/obj/item/I in L.get_equipped_items()) + for(var/obj/item/I in L.get_equipped_items(TRUE)) if(L.unEquip(I)) eat(I, sound = 0) diff --git a/code/game/objects/items/weapons/storage/artistic_toolbox.dm b/code/game/objects/items/weapons/storage/artistic_toolbox.dm index ead8ba4345c..29cea103e29 100644 --- a/code/game/objects/items/weapons/storage/artistic_toolbox.dm +++ b/code/game/objects/items/weapons/storage/artistic_toolbox.dm @@ -19,7 +19,6 @@ var/hunger_message_level = 0 var/mob/living/carbon/human/original_owner = null var/activated = FALSE - var/mindless_override = FALSE /obj/item/storage/toolbox/green/memetic/ui_action_click(mob/user) if(user.HasDisease(new /datum/disease/memetic_madness(0))) @@ -32,49 +31,56 @@ /obj/item/storage/toolbox/green/memetic/attack_hand(mob/living/carbon/user) - if(!activated) - if(ishuman(user) && !user.HasDisease(new /datum/disease/memetic_madness(0))) - activated = TRUE - user.ForceContractDisease(new /datum/disease/memetic_madness(0)) - for(var/datum/disease/memetic_madness/DD in user.viruses) - DD.progenitor = src - servantlinks.Add(DD) - break - force += 4 - throwforce += 4 - user << 'sound/goonstation/effects/screech.ogg' - shake_camera(user, 20, 1) - to_chat(user, "His Grace accepts thee, spread His will! All who look close to the Enlightened may share His gifts.") - original_owner = user - return + if(loc == user) + if(!activated) + if(ishuman(user) && !user.HasDisease(new /datum/disease/memetic_madness(0))) + activated = TRUE + user.ForceContractDisease(new /datum/disease/memetic_madness(0)) + for(var/datum/disease/memetic_madness/DD in user.viruses) + DD.progenitor = src + servantlinks.Add(DD) + break + force += 4 + throwforce += 4 + SEND_SOUND(user, 'sound/goonstation/effects/screech.ogg') + shake_camera(user, 20, 1) + var/acount = 0 + var/amax = rand(10, 15) + var/up_and_down + var/asize = 1 + while(acount <= amax) + up_and_down += "a" + if(acount > (amax * 0.5)) + asize-- + else + asize++ + acount++ + to_chat(user, "[up_and_down]") + to_chat(user, "His Grace accepts thee, spread His will! All who look close to the Enlightened may share His gifts.") + original_owner = user + return ..() /obj/item/storage/toolbox/green/memetic/attackby(obj/item/I, mob/user) if(activated) if(istype(I, /obj/item/grab)) var/obj/item/grab/G = I - if(!G.affecting) - return + var/mob/living/victim = G.affecting if(!user.HasDisease(new /datum/disease/memetic_madness(0))) to_chat(user, "You can't seem to find the latch to open this.") return - if(!ishuman(G.affecting) || issmall(G.affecting)) - to_chat(user, "His Grace will not accept such a meager offering!") + if(!victim) return - if(!mindless_override) - if(G.affecting.mind == null && G.affecting.ckey == null) - to_chat(user, "His Grace will not accept a soulless shell for an offering!") - return - if(!G.affecting.stat && !G.affecting.restrained() && !G.affecting.weakened) + if(!victim.stat && !victim.restrained() && !victim.weakened) to_chat(user, "They're moving too much to feed to His Grace!") return - user.visible_message("[user] is trying to feed [G.affecting] to [src]!") - if(!do_mob(user, G.affecting, 30)) + user.visible_message("[user] is trying to feed [victim] to [src]!") + if(!do_mob(user, victim, 30)) return - G.affecting.forceMove(src) - user.visible_message("[user] has fed [G.affecting] to [src]!") - consume(G.affecting) + user.visible_message("[user] has fed [victim] to [src]!") + + consume(victim) qdel(G) to_chat(user, "You have done well...") @@ -84,29 +90,42 @@ return ..() -/obj/item/storage/toolbox/green/memetic/proc/consume(mob/living/carbon/human/H) - if(!H) +/obj/item/storage/toolbox/green/memetic/proc/consume(mob/living/L) + if(!L) return hunger = 0 hunger_message_level = 0 - playsound(src.loc, 'sound/goonstation/misc/burp_alien.ogg', 50, 0) - H.emote("scream") - if(ismachine(H)) - H.adjustFireLoss(1000) // Damn snowflakes - H.death() - H.ghostize() - if(H == original_owner) - H.unEquip(src, TRUE) - qdel(H) + playsound(loc, 'sound/goonstation/misc/burp_alien.ogg', 50, 0) + + if(L != original_owner) + var/list/equipped_items = L.get_equipped_items(TRUE) + if(L.l_hand) + equipped_items += L.l_hand + if(L.r_hand) + equipped_items += L.r_hand + if(equipped_items.len) + var/obj/item/storage/box/B = new(src) + B.name = "Box-'[L.real_name]'" + for(var/obj/item/SI in equipped_items) + L.unEquip(SI, TRUE) + SI.forceMove(B) + equipped_items.Cut() + + L.forceMove(src) + + L.emote("scream") + L.death() + L.ghostize() + if(L == original_owner) + L.unEquip(src, TRUE) + qdel(L) var/obj/item/storage/toolbox/green/fake_toolbox = new(get_turf(src)) fake_toolbox.desc = "It looks a lot duller than it used to." qdel(src) + else + qdel(L) /obj/item/storage/toolbox/green/memetic/Destroy() - for(var/mob/living/carbon/human/H in src) - H.forceMove(get_turf(src)) - visible_message("[H] bursts out of [src]!") - for(var/datum/disease/memetic_madness/D in servantlinks) D.cure() @@ -114,7 +133,7 @@ servantlinks = null original_owner = null visible_message("[src] screams!") - playsound(src.loc, 'sound/goonstation/effects/screech.ogg', 100, 1) + playsound(loc, 'sound/goonstation/effects/screech.ogg', 100, 1) return ..() /datum/disease/memetic_madness @@ -132,6 +151,8 @@ var/obj/item/storage/toolbox/green/memetic/progenitor = null /datum/disease/memetic_madness/Destroy() + if(progenitor) + progenitor.servantlinks.Remove(src) progenitor = null if(affected_mob) affected_mob.status_flags |= CANSTUN | CANWEAKEN | CANPARALYSE diff --git a/code/modules/mob/inventory.dm b/code/modules/mob/inventory.dm index 5ff0ea8e28b..e53e3c9fd4d 100644 --- a/code/modules/mob/inventory.dm +++ b/code/modules/mob/inventory.dm @@ -153,26 +153,50 @@ //Outdated but still in use apparently. This should at least be a human proc. -/mob/proc/get_equipped_items() - var/list/items = new/list() +//Daily reminder to murder this - Remie. +/mob/proc/get_equipped_items(include_pockets = FALSE) + var/list/items = list() + if(back) + items += back + if(wear_mask) + items += wear_mask + return items - if(hasvar(src,"back")) if(src:back) items += src:back - if(hasvar(src,"belt")) if(src:belt) items += src:belt - if(hasvar(src,"l_ear")) if(src:l_ear) items += src:l_ear - if(hasvar(src,"r_ear")) if(src:r_ear) items += src:r_ear - if(hasvar(src,"glasses")) if(src:glasses) items += src:glasses - if(hasvar(src,"gloves")) if(src:gloves) items += src:gloves - if(hasvar(src,"head")) if(src:head) items += src:head - if(hasvar(src,"shoes")) if(src:shoes) items += src:shoes - if(hasvar(src,"wear_id")) if(src:wear_id) items += src:wear_id - if(hasvar(src,"wear_mask")) if(src:wear_mask) items += src:wear_mask - if(hasvar(src,"wear_suit")) if(src:wear_suit) items += src:wear_suit -// if(hasvar(src,"w_radio")) if(src:w_radio) items += src:w_radio commenting this out since headsets go on your ears now PLEASE DON'T BE MAD KEELIN - if(hasvar(src,"w_uniform")) if(src:w_uniform) items += src:w_uniform - - //if(hasvar(src,"l_hand")) if(src:l_hand) items += src:l_hand - //if(hasvar(src,"r_hand")) if(src:r_hand) items += src:r_hand +/mob/living/carbon/get_equipped_items(include_pockets = FALSE) + var/list/items = ..() + if(wear_suit) + items += wear_suit + if(head) + items += head + return items +/mob/living/carbon/human/get_equipped_items(include_pockets = FALSE) + var/list/items = ..() + if(belt) + items += belt + if(l_ear) + items += l_ear + if(r_ear) + items += r_ear + if(glasses) + items += glasses + if(gloves) + items += gloves + if(shoes) + items += shoes + if(wear_id) + items += wear_id + if(wear_pda) + items += wear_pda + if(w_uniform) + items += w_uniform + if(include_pockets) + if(l_store) + items += l_store + if(r_store) + items += r_store + if(s_store) + items += s_store return items /obj/item/proc/equip_to_best_slot(mob/M)