From 44efff94e3c18054a6aac329724d3597a7ddbfb5 Mon Sep 17 00:00:00 2001 From: Kyep Date: Thu, 16 Jun 2016 02:30:32 -0700 Subject: [PATCH 1/7] Initial Checkin - Borging Fax - Modifies faxmachine.dm to add a "BP" option for admins when responding to faxes. - Modifies admin/topic.dm to ensure this BP option spawns a Borging Paper at the fax machine the butt fax was sent from. - Modified paper.dm to add a new type of paper, Borging Paper, which will give its intended victim (and only them) borging nanomachines when read. It doesn't work on anyone else and disintegrates after multiple use attempts. --- code/modules/admin/topic.dm | 34 ++++++++++++++++++++++++++++ code/modules/paperwork/faxmachine.dm | 2 +- code/modules/paperwork/paper.dm | 20 ++++++++++++++++ 3 files changed, 55 insertions(+), 1 deletion(-) diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index dc7cc24d6b7..25a64620a70 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -1671,6 +1671,40 @@ message_admins("[key_name_admin(src.owner)] replied to [key_name_admin(H)]'s Centcom message with: \"[input]\"") to_chat(H, "You hear something crackle in your headset for a moment before a voice speaks. \"Please stand by for a message from Central Command. Message as follows. [input]. Message ends.\"") + else if(href_list["BorgingFax"]) + if(!check_rights(R_ADMIN)) + return + var/mob/living/carbon/human/H = locate(href_list["BorgingFax"]) + if(!istype(H)) + to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human") + return + if(alert(src.owner, "Are you sure you want to send [key_name(H)] a demotion fax that will borg them when they read it?", "Confirm?" , "Yes" , "No") != "Yes") + return + var/obj/item/weapon/paper/borging/P = new /obj/item/weapon/paper/borging(null) + var/obj/machinery/photocopier/faxmachine/fax = locate(href_list["originfax"]) + P.name = "paper" + P.info = "A reminder: per the terms of your contract, stupid faxes will get you demoted." + P.x = rand(-2, 0) + P.y = rand(-1, 2) + P.offset_x += P.x + P.offset_y += P.y + P.update_icon() + var/stampvalue = "cent" + var/image/stampoverlay = image('icons/obj/bureaucracy.dmi') + stampoverlay.icon_state = "paper_stamp-[stampvalue]" + P.stamped = list() + P.stamped += /obj/item/weapon/stamp/centcom + P.overlays += stampoverlay + P.stamps += "
" + P.borgtarget = H + P.update_icon() + P.loc = fax.loc + //fax.receivefax(P) + if(istype(H) && H.stat == CONSCIOUS && (istype(H.l_ear, /obj/item/device/radio/headset) || istype(H.r_ear, /obj/item/device/radio/headset))) + to_chat(H, "Your headset pings, notifying you that a reply to your fax has arrived.") + to_chat(src.owner, "You sent a borging fax to [H]") + log_admin("[key_name(src.owner)] sent [key_name(H)] a borging fax") + message_admins("[key_name_admin(src.owner)] replied to [key_name_admin(H)] with a borging fax") else if(href_list["SyndicateReply"]) if(!check_rights(R_ADMIN)) return diff --git a/code/modules/paperwork/faxmachine.dm b/code/modules/paperwork/faxmachine.dm index 23a0f3eec7e..4dc653afafd 100644 --- a/code/modules/paperwork/faxmachine.dm +++ b/code/modules/paperwork/faxmachine.dm @@ -261,7 +261,7 @@ var/list/alldepartments = list() /obj/machinery/photocopier/faxmachine/proc/message_admins(var/mob/sender, var/faxname, var/faxtype, var/obj/item/sent, font_colour="#006100") - var/msg = "\blue [faxname]: [key_name(sender, 1)] (PP) (VV) (SM) ([admin_jump_link(sender, "holder")]) (CA) (BSA) (REPLY): Receiving '[sent.name]' via secure connection... view message" + var/msg = "\blue [faxname]: [key_name(sender, 1)] (PP) (VV) (SM) ([admin_jump_link(sender, "holder")]) (CA) (BSA) (BP) (REPLY): Receiving '[sent.name]' via secure connection... view message" for(var/client/C in admins) if(R_EVENT & C.holder.rights) diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index bf847a06c0a..3038fe11628 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -618,3 +618,23 @@ /obj/item/weapon/paper/crumpled/bloody icon_state = "scrap_bloodied" + +/obj/item/weapon/paper/borging + name = "Centcomm Reply" + info = "You're Fired." + var/borgtarget = null + var/used = 0 + +/obj/item/weapon/paper/borging/show_content(var/mob/user, var/forceshow = 0, var/forcestars = 0, var/infolinks = 0, var/view = 1) + if (used) + to_chat(user,"The paper disintegrates in your hands!") + qdel(src) + else if (user == borgtarget) + if (istype(user, /mob/living/carbon)) + var/mob/living/carbon/C = user + C.ForceContractDisease(new /datum/disease/transformation/robot(0)) + to_chat(C,"The paper appears to be covered in red goo!") + used = 1 + ..() + else + to_chat(user,"This page appears to be covered in some sort of bizzare code. Perhaps [borgtarget] can make sense of it.") \ No newline at end of file From bc5e3ce664f80432697e5540e22f0014b0016cb1 Mon Sep 17 00:00:00 2001 From: Kyep Date: Thu, 16 Jun 2016 02:55:07 -0700 Subject: [PATCH 2/7] Typo fix forgot a --- code/modules/paperwork/paper.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index 3038fe11628..c5a76d2ed00 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -637,4 +637,4 @@ used = 1 ..() else - to_chat(user,"This page appears to be covered in some sort of bizzare code. Perhaps [borgtarget] can make sense of it.") \ No newline at end of file + to_chat(user,"This page appears to be covered in some sort of bizzare code. Perhaps [borgtarget] can make sense of it.") \ No newline at end of file From 4f2e3224ff11cce98864a183239775f17b46645c Mon Sep 17 00:00:00 2001 From: Kyep Date: Thu, 16 Jun 2016 23:27:14 -0700 Subject: [PATCH 3/7] Update - Support for corgifying, explosive, memetic, honktumor and demotion faxes, all together - Support for evil faxes activating on destruction or timeout (so they can't be destroyed, or ignored) - Modifications to fax machine to make faxes always trigger ahelp sound for admins - ERTs, prayers, nuke code, honk, and syndie requests do the same - Added support for message templates in fax replies --- code/modules/admin/topic.dm | 90 ++++++++++++++++++++++----- code/modules/admin/verbs/pray.dm | 18 ++++-- code/modules/paperwork/faxmachine.dm | 7 ++- code/modules/paperwork/paper.dm | 92 ++++++++++++++++++++++++---- 4 files changed, 171 insertions(+), 36 deletions(-) diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 25a64620a70..047d08e9865 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -1671,19 +1671,25 @@ message_admins("[key_name_admin(src.owner)] replied to [key_name_admin(H)]'s Centcom message with: \"[input]\"") to_chat(H, "You hear something crackle in your headset for a moment before a voice speaks. \"Please stand by for a message from Central Command. Message as follows. [input]. Message ends.\"") - else if(href_list["BorgingFax"]) + else if(href_list["EvilFax"]) if(!check_rights(R_ADMIN)) return - var/mob/living/carbon/human/H = locate(href_list["BorgingFax"]) + var/mob/living/carbon/human/H = locate(href_list["EvilFax"]) if(!istype(H)) to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human") return - if(alert(src.owner, "Are you sure you want to send [key_name(H)] a demotion fax that will borg them when they read it?", "Confirm?" , "Yes" , "No") != "Yes") + var/etypes = list("borging","corgifying","explosive","memetickillagent","honktumor","demotion") + var/eviltype = input(src.owner, "Which type of evil fax do you wish to send [H]?","Its good to be baaaad...", "") as null|anything in etypes + if (!(eviltype in etypes)) return - var/obj/item/weapon/paper/borging/P = new /obj/item/weapon/paper/borging(null) + var/obj/item/weapon/paper/evilfax/P = new /obj/item/weapon/paper/evilfax(null) var/obj/machinery/photocopier/faxmachine/fax = locate(href_list["originfax"]) - P.name = "paper" - P.info = "A reminder: per the terms of your contract, stupid faxes will get you demoted." + P.name = "Central Command - paper" + P.info = "A reminder: per the terms of your contract, stupid faxes will get you demoted, or worse." + P.myeffect = eviltype + P.mytarget = H + if(alert("Do you want the Evil Fax to activate automatically if [H] tries to ignore it?",,"Yes", "No") == "Yes") + P.activate_on_timeout = 1 P.x = rand(-2, 0) P.y = rand(-1, 2) P.offset_x += P.x @@ -1692,23 +1698,78 @@ var/stampvalue = "cent" var/image/stampoverlay = image('icons/obj/bureaucracy.dmi') stampoverlay.icon_state = "paper_stamp-[stampvalue]" + stampoverlay.pixel_x = P.x + stampoverlay.pixel_y = P.y P.stamped = list() P.stamped += /obj/item/weapon/stamp/centcom + if(!P.ico) + P.ico = new + P.ico += "paper_stamp-[stampvalue]" P.overlays += stampoverlay P.stamps += "
" - P.borgtarget = H P.update_icon() + //fax.receivefax(P) // this does not work, it does not preserve the type, we have to physically teleport the fax paper instead P.loc = fax.loc - //fax.receivefax(P) if(istype(H) && H.stat == CONSCIOUS && (istype(H.l_ear, /obj/item/device/radio/headset) || istype(H.r_ear, /obj/item/device/radio/headset))) to_chat(H, "Your headset pings, notifying you that a reply to your fax has arrived.") - to_chat(src.owner, "You sent a borging fax to [H]") - log_admin("[key_name(src.owner)] sent [key_name(H)] a borging fax") - message_admins("[key_name_admin(src.owner)] replied to [key_name_admin(H)] with a borging fax") + to_chat(src.owner, "You sent a [eviltype] fax to [H]") + log_admin("[key_name(src.owner)] sent [key_name(H)] a [eviltype] fax") + message_admins("[key_name_admin(src.owner)] replied to [key_name_admin(H)] with a [eviltype] fax") + else if(href_list["FaxReplyTemplate"]) + if(!check_rights(R_ADMIN)) + return + var/mob/living/carbon/human/H = locate(href_list["FaxReplyTemplate"]) + if(!istype(H)) + to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human") + return + var/obj/item/weapon/paper/P = new /obj/item/weapon/paper(null) + var/obj/machinery/photocopier/faxmachine/fax = locate(href_list["originfax"]) + P.name = "Central Command - paper" + var/stypes = list("handle it yourself","illegible","not signed","sorry, not right now","stop wasting our time") + var/stype = input(src.owner, "Which type of standard reply do you wish to send to [H]?","Choose your paperwork", "") as null|anything in stypes + var/tmsg = "



NanoTrasen Science Station Cyberiad


NAS Trurl Communications Department Report


" + if (stype == "handle it yourself") + tmsg += "Greetings, esteemed crewmember. Your fax has been DECLINED automatically by NAS Trurl Fax Registration.

Please proceed in accordance with Standard Operating Procedure and/or Space Law. You are fully trained to handle this situation without Central Command intervention." + else if (stype == "illegible") + tmsg += "Greetings, esteemed crewmember. Your fax has been DECLINED automatically by NAS Trurl Fax Registration.

Your fax was too poorly written for our system to interpret." + else if (stype == "not signed") + tmsg += "Greetings, esteemed crewmember. Your fax has been DECLINED automatically by NAS Trurl Fax Registration.

Your fax was not properly signed and/or stamped." + else if (stype == "sorry, not right now") + tmsg += "Greetings, esteemed crewmember. Unfortunately, we are unable to spare the resources to assist you at this time." + else if (stype == "stop wasting our time") + tmsg += "Stop wasting our time." + else + return + tmsg += "
" + P.info = tmsg + P.x = rand(-2, 0) + P.y = rand(-1, 2) + P.offset_x += P.x + P.offset_y += P.y + P.update_icon() + var/stampvalue = "cent" + var/image/stampoverlay = image('icons/obj/bureaucracy.dmi') + stampoverlay.icon_state = "paper_stamp-[stampvalue]" + stampoverlay.pixel_x = P.x + stampoverlay.pixel_y = P.y + P.stamped = list() + P.stamped += /obj/item/weapon/stamp/centcom + if(!P.ico) + P.ico = new + P.ico += "paper_stamp-[stampvalue]" + P.overlays += stampoverlay + P.stamps += "
" + P.update_icon() + fax.receivefax(P) + if(istype(H) && H.stat == CONSCIOUS && (istype(H.l_ear, /obj/item/device/radio/headset) || istype(H.r_ear, /obj/item/device/radio/headset))) + to_chat(H, "Your headset pings, notifying you that a reply to your fax has arrived.") + to_chat(src.owner, "You sent a standard '[stype]' fax to [H]") + log_admin("[key_name(src.owner)] sent [key_name(H)] a standard '[stype]' fax") + message_admins("[key_name_admin(src.owner)] replied to [key_name_admin(H)] with a standard '[stype]' fax") + else if(href_list["SyndicateReply"]) if(!check_rights(R_ADMIN)) return - var/mob/living/carbon/human/H = locate(href_list["SyndicateReply"]) if(!istype(H)) to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human") @@ -1719,10 +1780,9 @@ if(!istype(H.l_ear, /obj/item/device/radio/headset) && !istype(H.r_ear, /obj/item/device/radio/headset)) to_chat(usr, "The person you are trying to contact is not wearing a headset") return - var/input = input(src.owner, "Please enter a message to reply to [key_name(H)] via their headset.","Outgoing message from The Syndicate", "") - if(!input) return - + if(!input) + return to_chat(src.owner, "You sent [input] to [H] via a secure channel.") log_admin("[src.owner] replied to [key_name(H)]'s Syndicate message with the message [input].") to_chat(H, "You hear something crackle in your headset for a moment before a voice speaks. \"Please stand by for a message from your benefactor. Message as follows, agent. [input]. Message ends.\"") diff --git a/code/modules/admin/verbs/pray.dm b/code/modules/admin/verbs/pray.dm index 0ef6a64373f..6a0ec635d50 100644 --- a/code/modules/admin/verbs/pray.dm +++ b/code/modules/admin/verbs/pray.dm @@ -18,7 +18,8 @@ for(var/client/X in admins) if(check_rights(R_EVENT,0,X.mob)) to_chat(X, msg) - + if(X.prefs.sound & SOUND_ADMINHELP) + X << 'sound/effects/adminhelp.ogg' to_chat(usr, "Your prayers have been received by the gods.") feedback_add_details("admin_verb","PR") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! @@ -27,41 +28,46 @@ /proc/Centcomm_announce(var/text , var/mob/Sender) var/msg = sanitize(copytext(text, 1, MAX_MESSAGE_LEN)) msg = "\blue CENTCOMM: [key_name(Sender, 1)] (PP) (VV) (SM) ([admin_jump_link(Sender, "holder")]) (CA) (BSA) (RPLY): [msg]" - for(var/client/X in admins) if(R_EVENT & X.holder.rights) to_chat(X, msg) + if(X.prefs.sound & SOUND_ADMINHELP) + X << 'sound/effects/adminhelp.ogg' /proc/Syndicate_announce(var/text , var/mob/Sender) var/msg = sanitize(copytext(text, 1, MAX_MESSAGE_LEN)) msg = "\blue SYNDICATE: [key_name(Sender, 1)] (PP) (VV) (SM) ([admin_jump_link(Sender, "holder")]) (CA) (BSA) (REPLY): [msg]" - for(var/client/X in admins) if(check_rights(R_EVENT,0,X.mob)) to_chat(X, msg) + if(X.prefs.sound & SOUND_ADMINHELP) + X << 'sound/effects/adminhelp.ogg' /proc/HONK_announce(var/text , var/mob/Sender) var/msg = sanitize(copytext(text, 1, MAX_MESSAGE_LEN)) msg = "\blue HONK: [key_name(Sender, 1)] (PP) (VV) (SM) ([admin_jump_link(Sender, "holder")]) (CA) (BSA) (RPLY): [msg]" - for(var/client/X in admins) if(R_EVENT & X.holder.rights) to_chat(X, msg) + if(X.prefs.sound & SOUND_ADMINHELP) + X << 'sound/effects/adminhelp.ogg' /proc/ERT_Announce(var/text , var/mob/Sender) var/msg = sanitize(copytext(text, 1, MAX_MESSAGE_LEN)) msg = "\blue ERT REQUEST: [key_name(Sender, 1)] (PP) (VV) (SM) ([admin_jump_link(Sender, "holder")]) (CA) (BSA) (REPLY): [msg]" - for(var/client/X in admins) if(check_rights(R_EVENT,0,X.mob)) to_chat(X, msg) + if(X.prefs.sound & SOUND_ADMINHELP) + X << 'sound/effects/adminhelp.ogg' /proc/Nuke_request(text , mob/Sender) var/nuke_code = get_nuke_code() var/msg = sanitize(copytext(text, 1, MAX_MESSAGE_LEN)) msg = "NUKE CODE REQUEST: [key_name(Sender)] (PP) (VV) (SM) ([admin_jump_link(Sender, "holder")]) (CA) (BSA) (RPLY): [msg]" - for(var/client/X in admins) if(check_rights(R_EVENT,0,X.mob)) to_chat(X, msg) to_chat(X, "The nuke code is [nuke_code].") + if(X.prefs.sound & SOUND_ADMINHELP) + X << 'sound/effects/adminhelp.ogg' \ No newline at end of file diff --git a/code/modules/paperwork/faxmachine.dm b/code/modules/paperwork/faxmachine.dm index 4dc653afafd..c0e7a2bc468 100644 --- a/code/modules/paperwork/faxmachine.dm +++ b/code/modules/paperwork/faxmachine.dm @@ -260,9 +260,10 @@ var/list/alldepartments = list() visible_message("[src] beeps, \"Message transmitted successfully.\"") -/obj/machinery/photocopier/faxmachine/proc/message_admins(var/mob/sender, var/faxname, var/faxtype, var/obj/item/sent, font_colour="#006100") - var/msg = "\blue [faxname]: [key_name(sender, 1)] (PP) (VV) (SM) ([admin_jump_link(sender, "holder")]) (CA) (BSA) (BP) (REPLY): Receiving '[sent.name]' via secure connection... view message" - +/obj/machinery/photocopier/faxmachine/proc/message_admins(var/mob/sender, var/faxname, var/faxtype, var/obj/item/sent, font_colour="#9A04D1") + var/msg = "\blue [faxname]: [key_name(sender, 1)] (PP) (VV) (CA) ([admin_jump_link(sender, "holder")]) | REPLY: (RADIO) (FAX) (SM) | REJECT: (TEMPLATE) (BSA) (EVILFAX) : Receiving '[sent.name]' via secure connection... view message" for(var/client/C in admins) if(R_EVENT & C.holder.rights) to_chat(C, msg) + if(C.prefs.sound & SOUND_ADMINHELP) + C << 'sound/effects/adminhelp.ogg' diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index c5a76d2ed00..6aed00801b0 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -619,22 +619,90 @@ /obj/item/weapon/paper/crumpled/bloody icon_state = "scrap_bloodied" -/obj/item/weapon/paper/borging +/obj/item/weapon/paper/evilfax name = "Centcomm Reply" - info = "You're Fired." - var/borgtarget = null + info = "" + var/mytarget = null + var/myeffect = null var/used = 0 + var/countdown = 60 + var/activate_on_timeout = 0 -/obj/item/weapon/paper/borging/show_content(var/mob/user, var/forceshow = 0, var/forcestars = 0, var/infolinks = 0, var/view = 1) - if (used) - to_chat(user,"The paper disintegrates in your hands!") - qdel(src) - else if (user == borgtarget) +/obj/item/weapon/paper/evilfax/show_content(var/mob/user, var/forceshow = 0, var/forcestars = 0, var/infolinks = 0, var/view = 1) + if (user == mytarget) if (istype(user, /mob/living/carbon)) var/mob/living/carbon/C = user - C.ForceContractDisease(new /datum/disease/transformation/robot(0)) - to_chat(C,"The paper appears to be covered in red goo!") - used = 1 + evilpaper_specialaction(C) ..() + else + // This should never happen, but just in case someone is adminbussing + evilpaper_selfdestruct() else - to_chat(user,"This page appears to be covered in some sort of bizzare code. Perhaps [borgtarget] can make sense of it.") \ No newline at end of file + if (mytarget) + to_chat(user,"This page appears to be covered in some sort of bizzare code. The only bit you recognize is the name of [mytarget]. Perhaps [mytarget] can make sense of it?") + else + evilpaper_selfdestruct() + + +/obj/item/weapon/paper/evilfax/New() + ..() + processing_objects += src + + +/obj/item/weapon/paper/evilfax/Destroy() + processing_objects -= src + if (mytarget && !used) + var/mob/living/carbon/target = mytarget + target.ForceContractDisease(new /datum/disease/transformation/corgi(0)) + return ..() + + +/obj/item/weapon/paper/evilfax/process() + if (countdown == 0) + if (mytarget) + if (activate_on_timeout) + evilpaper_specialaction(mytarget) + else + message_admins("[mytarget] ignored an evil fax until it timed out.") + else + message_admins("Evil paper '[src]' timed out, after not being assigned a target.") + used = 1 + evilpaper_selfdestruct() + else + countdown-- + + return + +/obj/item/weapon/paper/evilfax/proc/evilpaper_specialaction(var/mob/living/carbon/target) + if (myeffect == "borging") + target.ForceContractDisease(new /datum/disease/transformation/robot(0)) + else if (myeffect == "corgifying") + target.ForceContractDisease(new /datum/disease/transformation/corgi(0)) + else if (myeffect == "explosive") + var/turf/simulated/floor/T = get_turf(target) + if (istype(T)) + T.break_tile_to_plating() + var/obj/effect/stop/S + S = new /obj/effect/stop + S.victim = target + S.loc = target.loc + spawn(20) + qdel(S) + target.adjustBruteLoss(target.health) + else if (myeffect == "memetickillagent") + to_chat(target,"A series of bright lights flash across your vision: MEMETIC KILL AGENT YHWH-3 ACTIVATED") + target.mutations.Add(NOCLONE) + target.adjustBrainLoss(125) + else if (myeffect == "honktumor") + if(!target.get_int_organ(/obj/item/organ/internal/honktumor)) + new /obj/item/organ/internal/honktumor(target) + else if (myeffect == "demotion") + command_announcement.Announce("[mytarget] is hereby demoted to the rank of Civilian. Process this demotion immediately. Failure to comply with these orders is grounds for termination.","CC Demotion Order") + else + message_admins("Evil paper [src] was activated without a proper effect set! This is a bug.") + used = 1 + evilpaper_selfdestruct() + +/obj/item/weapon/paper/evilfax/proc/evilpaper_selfdestruct() + visible_message("[src] spontaneously catches fire, and burns up!") + qdel(src) From ebafe4fb425f5fa134f43020ece1b566f3ca644c Mon Sep 17 00:00:00 2001 From: Kyep Date: Sat, 18 Jun 2016 00:20:26 -0700 Subject: [PATCH 4/7] Minor tweaks - Prayers no longer trigger the ahelp sound for admins. - Explosive fax replaced with firedeath fax. - Memetic kill agent fax replaced with braindeath fax. Effects are identical, they just have different names/messaging. - Evil faxes self-destructing after use now produce a more obvious message. --- code/modules/admin/topic.dm | 2 +- code/modules/admin/verbs/pray.dm | 2 -- code/modules/paperwork/paper.dm | 53 +++++++++++++++----------------- 3 files changed, 25 insertions(+), 32 deletions(-) diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 047d08e9865..25ccd2b9c26 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -1678,7 +1678,7 @@ if(!istype(H)) to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human") return - var/etypes = list("borging","corgifying","explosive","memetickillagent","honktumor","demotion") + var/etypes = list("borging","corgifying","firedeath","braindeath","honktumor","demotion") var/eviltype = input(src.owner, "Which type of evil fax do you wish to send [H]?","Its good to be baaaad...", "") as null|anything in etypes if (!(eviltype in etypes)) return diff --git a/code/modules/admin/verbs/pray.dm b/code/modules/admin/verbs/pray.dm index 6a0ec635d50..170d96754ea 100644 --- a/code/modules/admin/verbs/pray.dm +++ b/code/modules/admin/verbs/pray.dm @@ -18,8 +18,6 @@ for(var/client/X in admins) if(check_rights(R_EVENT,0,X.mob)) to_chat(X, msg) - if(X.prefs.sound & SOUND_ADMINHELP) - X << 'sound/effects/adminhelp.ogg' to_chat(usr, "Your prayers have been received by the gods.") feedback_add_details("admin_verb","PR") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index 6aed00801b0..cce77ecef31 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -674,35 +674,30 @@ return /obj/item/weapon/paper/evilfax/proc/evilpaper_specialaction(var/mob/living/carbon/target) - if (myeffect == "borging") - target.ForceContractDisease(new /datum/disease/transformation/robot(0)) - else if (myeffect == "corgifying") - target.ForceContractDisease(new /datum/disease/transformation/corgi(0)) - else if (myeffect == "explosive") - var/turf/simulated/floor/T = get_turf(target) - if (istype(T)) - T.break_tile_to_plating() - var/obj/effect/stop/S - S = new /obj/effect/stop - S.victim = target - S.loc = target.loc - spawn(20) - qdel(S) - target.adjustBruteLoss(target.health) - else if (myeffect == "memetickillagent") - to_chat(target,"A series of bright lights flash across your vision: MEMETIC KILL AGENT YHWH-3 ACTIVATED") - target.mutations.Add(NOCLONE) - target.adjustBrainLoss(125) - else if (myeffect == "honktumor") - if(!target.get_int_organ(/obj/item/organ/internal/honktumor)) - new /obj/item/organ/internal/honktumor(target) - else if (myeffect == "demotion") - command_announcement.Announce("[mytarget] is hereby demoted to the rank of Civilian. Process this demotion immediately. Failure to comply with these orders is grounds for termination.","CC Demotion Order") - else - message_admins("Evil paper [src] was activated without a proper effect set! This is a bug.") - used = 1 - evilpaper_selfdestruct() + spawn(30) + if (istype(target,/mob/living/carbon)) + if (myeffect == "borging") + target.ForceContractDisease(new /datum/disease/transformation/robot(0)) + else if (myeffect == "corgifying") + target.ForceContractDisease(new /datum/disease/transformation/corgi(0)) + else if (myeffect == "firedeath") + var/turf/simulated/T = get_turf(target) + new /obj/effect/hotspot(T) + target.adjustFireLoss(target.health) + else if (myeffect == "braindeath") + to_chat(target,"A series of bright lights flash across your vision: COGNITOHAZARD YHWH-3 ACTIVATED") + target.mutations.Add(NOCLONE) + target.adjustBrainLoss(125) + else if (myeffect == "honktumor") + if(!target.get_int_organ(/obj/item/organ/internal/honktumor)) + new /obj/item/organ/internal/honktumor(target) + else if (myeffect == "demotion") + command_announcement.Announce("[mytarget] is hereby demoted to the rank of Civilian. Process this demotion immediately. Failure to comply with these orders is grounds for termination.","CC Demotion Order") + else + message_admins("Evil paper [src] was activated without a proper effect set! This is a bug.") + used = 1 + evilpaper_selfdestruct() /obj/item/weapon/paper/evilfax/proc/evilpaper_selfdestruct() - visible_message("[src] spontaneously catches fire, and burns up!") + visible_message("[src] spontaneously catches fire, and burns up!") qdel(src) From 193d327329422cd43085757d2a6ea523756dd209 Mon Sep 17 00:00:00 2001 From: Kyep Date: Sat, 18 Jun 2016 17:04:50 -0700 Subject: [PATCH 5/7] Refactoring - Removed trailing return - Changed honktumor insertion --- code/modules/paperwork/paper.dm | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index cce77ecef31..53dd5e20577 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -671,8 +671,6 @@ else countdown-- - return - /obj/item/weapon/paper/evilfax/proc/evilpaper_specialaction(var/mob/living/carbon/target) spawn(30) if (istype(target,/mob/living/carbon)) @@ -690,7 +688,8 @@ target.adjustBrainLoss(125) else if (myeffect == "honktumor") if(!target.get_int_organ(/obj/item/organ/internal/honktumor)) - new /obj/item/organ/internal/honktumor(target) + var/obj/item/organ/internal/organ = new /obj/item/organ/internal/honktumor + organ.insert(target) else if (myeffect == "demotion") command_announcement.Announce("[mytarget] is hereby demoted to the rank of Civilian. Process this demotion immediately. Failure to comply with these orders is grounds for termination.","CC Demotion Order") else From 01fad51c028614df1a9f287546e6a546c1742e67 Mon Sep 17 00:00:00 2001 From: Kyep Date: Sat, 18 Jun 2016 17:56:47 -0700 Subject: [PATCH 6/7] Refactor --- code/modules/admin/topic.dm | 12 ++++++------ code/modules/paperwork/paper.dm | 28 ++++++++++++++-------------- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 25ccd2b9c26..5273a02d48f 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -1680,7 +1680,7 @@ return var/etypes = list("borging","corgifying","firedeath","braindeath","honktumor","demotion") var/eviltype = input(src.owner, "Which type of evil fax do you wish to send [H]?","Its good to be baaaad...", "") as null|anything in etypes - if (!(eviltype in etypes)) + if(!(eviltype in etypes)) return var/obj/item/weapon/paper/evilfax/P = new /obj/item/weapon/paper/evilfax(null) var/obj/machinery/photocopier/faxmachine/fax = locate(href_list["originfax"]) @@ -1728,15 +1728,15 @@ var/stypes = list("handle it yourself","illegible","not signed","sorry, not right now","stop wasting our time") var/stype = input(src.owner, "Which type of standard reply do you wish to send to [H]?","Choose your paperwork", "") as null|anything in stypes var/tmsg = "



NanoTrasen Science Station Cyberiad


NAS Trurl Communications Department Report


" - if (stype == "handle it yourself") + if(stype == "handle it yourself") tmsg += "Greetings, esteemed crewmember. Your fax has been DECLINED automatically by NAS Trurl Fax Registration.

Please proceed in accordance with Standard Operating Procedure and/or Space Law. You are fully trained to handle this situation without Central Command intervention." - else if (stype == "illegible") + else if(stype == "illegible") tmsg += "Greetings, esteemed crewmember. Your fax has been DECLINED automatically by NAS Trurl Fax Registration.

Your fax was too poorly written for our system to interpret." - else if (stype == "not signed") + else if(stype == "not signed") tmsg += "Greetings, esteemed crewmember. Your fax has been DECLINED automatically by NAS Trurl Fax Registration.

Your fax was not properly signed and/or stamped." - else if (stype == "sorry, not right now") + else if(stype == "sorry, not right now") tmsg += "Greetings, esteemed crewmember. Unfortunately, we are unable to spare the resources to assist you at this time." - else if (stype == "stop wasting our time") + else if(stype == "stop wasting our time") tmsg += "Stop wasting our time." else return diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index 53dd5e20577..05b396c6c0a 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -629,8 +629,8 @@ var/activate_on_timeout = 0 /obj/item/weapon/paper/evilfax/show_content(var/mob/user, var/forceshow = 0, var/forcestars = 0, var/infolinks = 0, var/view = 1) - if (user == mytarget) - if (istype(user, /mob/living/carbon)) + if(user == mytarget) + if(istype(user, /mob/living/carbon)) var/mob/living/carbon/C = user evilpaper_specialaction(C) ..() @@ -638,7 +638,7 @@ // This should never happen, but just in case someone is adminbussing evilpaper_selfdestruct() else - if (mytarget) + if(mytarget) to_chat(user,"This page appears to be covered in some sort of bizzare code. The only bit you recognize is the name of [mytarget]. Perhaps [mytarget] can make sense of it?") else evilpaper_selfdestruct() @@ -651,16 +651,16 @@ /obj/item/weapon/paper/evilfax/Destroy() processing_objects -= src - if (mytarget && !used) + if(mytarget && !used) var/mob/living/carbon/target = mytarget target.ForceContractDisease(new /datum/disease/transformation/corgi(0)) return ..() /obj/item/weapon/paper/evilfax/process() - if (countdown == 0) - if (mytarget) - if (activate_on_timeout) + if(countdown == 0) + if(mytarget) + if(activate_on_timeout) evilpaper_specialaction(mytarget) else message_admins("[mytarget] ignored an evil fax until it timed out.") @@ -673,24 +673,24 @@ /obj/item/weapon/paper/evilfax/proc/evilpaper_specialaction(var/mob/living/carbon/target) spawn(30) - if (istype(target,/mob/living/carbon)) - if (myeffect == "borging") + if(istype(target,/mob/living/carbon)) + if(myeffect == "borging") target.ForceContractDisease(new /datum/disease/transformation/robot(0)) - else if (myeffect == "corgifying") + else if(myeffect == "corgifying") target.ForceContractDisease(new /datum/disease/transformation/corgi(0)) - else if (myeffect == "firedeath") + else if(myeffect == "firedeath") var/turf/simulated/T = get_turf(target) new /obj/effect/hotspot(T) target.adjustFireLoss(target.health) - else if (myeffect == "braindeath") + else if(myeffect == "braindeath") to_chat(target,"A series of bright lights flash across your vision: COGNITOHAZARD YHWH-3 ACTIVATED") target.mutations.Add(NOCLONE) target.adjustBrainLoss(125) - else if (myeffect == "honktumor") + else if(myeffect == "honktumor") if(!target.get_int_organ(/obj/item/organ/internal/honktumor)) var/obj/item/organ/internal/organ = new /obj/item/organ/internal/honktumor organ.insert(target) - else if (myeffect == "demotion") + else if(myeffect == "demotion") command_announcement.Announce("[mytarget] is hereby demoted to the rank of Civilian. Process this demotion immediately. Failure to comply with these orders is grounds for termination.","CC Demotion Order") else message_admins("Evil paper [src] was activated without a proper effect set! This is a bug.") From 68311f9d5d729682746de4d79b0e51d68f4911d8 Mon Sep 17 00:00:00 2001 From: Kyep Date: Sun, 19 Jun 2016 16:29:56 -0700 Subject: [PATCH 7/7] Changes suggested by Fox/DZD - Admins can now choose the name of evil fax papers. If not chosen, defaults to: "Central Command - paper". - Changes processing_objects addition/removal to the methods Fox suggested. - Changed if (countdown == 0) to if (!countdown) - Rebalances firedeath fax to live up to its name, and always cause recipient to die in a fire. --- code/modules/admin/topic.dm | 6 +++++- code/modules/paperwork/paper.dm | 8 ++++---- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 5273a02d48f..9246880ab82 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -1682,9 +1682,13 @@ var/eviltype = input(src.owner, "Which type of evil fax do you wish to send [H]?","Its good to be baaaad...", "") as null|anything in etypes if(!(eviltype in etypes)) return + var/customname = input(src.owner, "Pick a title for the evil fax.", "Fax Title") as text|null + if(!customname) + customname = "paper" var/obj/item/weapon/paper/evilfax/P = new /obj/item/weapon/paper/evilfax(null) var/obj/machinery/photocopier/faxmachine/fax = locate(href_list["originfax"]) - P.name = "Central Command - paper" + + P.name = "Central Command - [customname]" P.info = "A reminder: per the terms of your contract, stupid faxes will get you demoted, or worse." P.myeffect = eviltype P.mytarget = H diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index 05b396c6c0a..bc216c5f2ac 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -646,11 +646,11 @@ /obj/item/weapon/paper/evilfax/New() ..() - processing_objects += src + processing_objects.Add(src) /obj/item/weapon/paper/evilfax/Destroy() - processing_objects -= src + processing_objects.Remove(src) if(mytarget && !used) var/mob/living/carbon/target = mytarget target.ForceContractDisease(new /datum/disease/transformation/corgi(0)) @@ -658,7 +658,7 @@ /obj/item/weapon/paper/evilfax/process() - if(countdown == 0) + if(!countdown) if(mytarget) if(activate_on_timeout) evilpaper_specialaction(mytarget) @@ -681,7 +681,7 @@ else if(myeffect == "firedeath") var/turf/simulated/T = get_turf(target) new /obj/effect/hotspot(T) - target.adjustFireLoss(target.health) + target.adjustFireLoss(150) // hard crit, the burning takes care of the rest. else if(myeffect == "braindeath") to_chat(target,"A series of bright lights flash across your vision: COGNITOHAZARD YHWH-3 ACTIVATED") target.mutations.Add(NOCLONE)