From cc3bc6096395d2942dc30972dbf2abd72c5488a5 Mon Sep 17 00:00:00 2001 From: SkyMarshal Date: Wed, 28 Dec 2011 23:15:30 -0700 Subject: [PATCH] Alien removal surgery, new traitor item, other stuff. --- code/WorkInProgress/SkyMarshal/eraser.dm | 9 +++ code/datums/diseases/alien_embryo.dm | 1 + code/defines/mob/living/carbon/carbon.dm | 1 + code/defines/obj/weapon.dm | 10 ++- code/game/objects/devices/PDA/uplink.dm | 5 ++ .../game/objects/items/weapons/papers_bins.dm | 36 +++++++-- .../objects/items/weapons/surgery_tools.dm | 80 +++++++++++++++++++ code/game/objects/items/weapons/uplinks.dm | 3 +- 8 files changed, 137 insertions(+), 8 deletions(-) create mode 100644 code/WorkInProgress/SkyMarshal/eraser.dm diff --git a/code/WorkInProgress/SkyMarshal/eraser.dm b/code/WorkInProgress/SkyMarshal/eraser.dm new file mode 100644 index 00000000000..f15384f3f14 --- /dev/null +++ b/code/WorkInProgress/SkyMarshal/eraser.dm @@ -0,0 +1,9 @@ +/obj/item/weapon/stamperaser + name = "Eraser" + desc = "Some type of eraser, you guess." + flags = FPRINT | TABLEPASS + icon = 'items.dmi' + icon_state = "zippo" + item_state = "zippo" + w_class = 1.0 + m_amt = 80 \ No newline at end of file diff --git a/code/datums/diseases/alien_embryo.dm b/code/datums/diseases/alien_embryo.dm index 1008c7f54b4..29890cd6dc2 100644 --- a/code/datums/diseases/alien_embryo.dm +++ b/code/datums/diseases/alien_embryo.dm @@ -11,6 +11,7 @@ max_stages = 5 spread = "None" spread_type = SPECIAL + stage_prob = 2 cure = "Unknown" cure_id = list("lexorin","toxin","gargleblaster") cure_chance = 20 diff --git a/code/defines/mob/living/carbon/carbon.dm b/code/defines/mob/living/carbon/carbon.dm index b34ef524275..3e8250b4b33 100644 --- a/code/defines/mob/living/carbon/carbon.dm +++ b/code/defines/mob/living/carbon/carbon.dm @@ -5,6 +5,7 @@ var/brain_op_stage = 0.0 var/eye_op_stage = 0.0 var/appendix_op_stage = 0.0 + var/embryo_op_stage = 0.0 var/datum/disease2/disease/virus2 = null var/list/datum/disease2/disease/resistances2 = list() diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm index 6d829e5e35d..bdea8513101 100644 --- a/code/defines/obj/weapon.dm +++ b/code/defines/obj/weapon.dm @@ -824,6 +824,7 @@ icon = 'paper.dmi' icon_state = "paper" var/info = null + var/infoold = null throwforce = 0 w_class = 1.0 throw_speed = 3 @@ -1458,6 +1459,11 @@ icon_state = "stamp-hos" color = "hosred" +/obj/item/weapon/stamp/detective + name = "detective's rubber stamp" + icon_state = "stamp-hos" + color = "hosred" + /obj/item/weapon/stamp/ce name = "chief engineer's rubber stamp" icon_state = "stamp-ce" @@ -1516,7 +1522,7 @@ name = "d4" desc = "A dice with four sides." sides = 4 - icon_state = "d20" + icon_state = "dice" item_state = "dice" /obj/item/weapon/dice // -- TLE @@ -1708,4 +1714,4 @@ desc = "A container for hold compressed matter awaiting re-construction." origin_tech = "materials=5" rating = 3 - m_amt = 80 + m_amt = 80 \ No newline at end of file diff --git a/code/game/objects/devices/PDA/uplink.dm b/code/game/objects/devices/PDA/uplink.dm index 31e4943d1bc..1ac7813272f 100644 --- a/code/game/objects/devices/PDA/uplink.dm +++ b/code/game/objects/devices/PDA/uplink.dm @@ -41,6 +41,7 @@ menu_message += "Syndicate Card (3)
" menu_message += "Voice-Changer (4)
" menu_message += "Thermal Glasses (4)
" + menu_message += "Stamp Remover (1)
" //Allows doccuments to be de-stamped menu_message += "
" menu_message += "Freedom Implant (with injector) (3)
" menu_message += "Uplink Implant (5 crystals inside) (10)
" @@ -212,6 +213,10 @@ if(uses >= 10) uses -= 10 new /obj/item/weapon/storage/box/syndicate(get_turf(hostpda)) + if("bundle") + if(uses >= 1) + uses -= 1 + new /obj/item/weapon/stamperaser(get_turf(hostpda)) generate_menu() print_to_host(menu_message) diff --git a/code/game/objects/items/weapons/papers_bins.dm b/code/game/objects/items/weapons/papers_bins.dm index 1a5d3501f74..46247b0257a 100644 --- a/code/game/objects/items/weapons/papers_bins.dm +++ b/code/game/objects/items/weapons/papers_bins.dm @@ -124,6 +124,7 @@ CLIPBOARDS if(istype(P, /obj/item/weapon/stamp)) if ((!in_range(src, usr) && src.loc != user && !( istype(src.loc, /obj/item/weapon/clipboard) ) && src.loc.loc != user && user.equipped() != P)) return + src.infoold = src.info src.info += text("
This paper has been stamped with the [].
", P.name) switch(P.type) if(/obj/item/weapon/stamp/captain) @@ -141,11 +142,7 @@ CLIPBOARDS if(/obj/item/weapon/stamp/denied) src.overlays += "paper_stamped_denied" if(/obj/item/weapon/stamp/clown) - if (!clown) - usr << "\red You are totally unable to use the stamp. HONK!" - return - else - src.overlays += "paper_stamped_clown" + src.overlays += "paper_stamped_clown" else src.overlays += "paper_stamped" if(!stamped) @@ -153,6 +150,35 @@ CLIPBOARDS stamped += P.type user << "\blue You stamp the paper with your rubber stamp." + + else if(istype(P, /obj/item/weapon/stamperaser)) + if ((!in_range(src, usr) && src.loc != user && !( istype(src.loc, /obj/item/weapon/clipboard) ) && src.loc.loc != user && user.equipped() != P)) + return + src.info = src.infoold + for(var/i, i <= stamped.len, i++) + switch(stamped[i]) + if(/obj/item/weapon/stamp/captain) + src.overlays -= "paper_stamped_cap" + if(/obj/item/weapon/stamp/hop) + src.overlays -= "paper_stamped_hop" + if(/obj/item/weapon/stamp/hos) + src.overlays -= "paper_stamped_hos" + if(/obj/item/weapon/stamp/ce) + src.overlays -= "paper_stamped_ce" + if(/obj/item/weapon/stamp/rd) + src.overlays -= "paper_stamped_rd" + if(/obj/item/weapon/stamp/cmo) + src.overlays -= "paper_stamped_cmo" + if(/obj/item/weapon/stamp/denied) + src.overlays -= "paper_stamped_denied" + if(/obj/item/weapon/stamp/clown) + src.overlays -= "paper_stamped_clown" + else + src.overlays -= "paper_stamped" + stamped = new list() + + user << "\blue You sucessfully remove those pesky stamps." + /* else if (istype(P, /obj/item/weapon/weldingtool)) diff --git a/code/game/objects/items/weapons/surgery_tools.dm b/code/game/objects/items/weapons/surgery_tools.dm index 4180f9e34ab..c9a40160741 100644 --- a/code/game/objects/items/weapons/surgery_tools.dm +++ b/code/game/objects/items/weapons/surgery_tools.dm @@ -19,6 +19,32 @@ CIRCULAR SAW if(!((locate(/obj/machinery/optable, M.loc) && M.resting) || (locate(/obj/structure/table/, M.loc) && (M.lying || M.weakened || M.stunned || M.paralysis || M.sleeping || M.stat) && prob(50)))) return ..() + if(user.zone_sel.selecting == "chest") + if(istype(M, /mob/living/carbon/human)) + switch(M:embryo_op_stage) + if(2.0) + if(M != user) + for(var/mob/O in (viewers(M) - user - M)) + O.show_message("\red [user] retracts the flap in [M]'s cut open torso with [src].", 1) + M << "\red [user] begins to retracts the flap in your chest with [src]!" + user << "\red You clamp retracts the flap in [M]'s torso with [src]!" + M:embryo_op_stage = 3.0 + return + if(4.0) + if(M != user) + for(var/mob/O in (viewers(M) - user - M)) + O.show_message("\red [user] rips the larva out of [M]'s torso!", 1) + M << "\red [user] begins to rip the larva out of [M]'s torso!" + user << "\red You rip the larva out of [M]'s torso!" + var/mob/living/carbon/alien/larva/stupid = new(M.loc) + stupid.death(0) + //Make a larva and kill it. -- SkyMarshal + M:embryo_op_stage = 5.0 + for(var/datum/disease/alien_embryo in M.viruses) + alien_embryo.cure() + return + return + if(user.zone_sel.selecting == "groin") if(istype(M, /mob/living/carbon/human)) switch(M:appendix_op_stage) @@ -92,6 +118,26 @@ CIRCULAR SAW if(!((locate(/obj/machinery/optable, M.loc) && M.resting) || (locate(/obj/structure/table/, M.loc) && M.lying && prob(50)))) return ..() + if(user.zone_sel.selecting == "chest") + if(istype(M, /mob/living/carbon/human)) + switch(M:embryo_op_stage) + if(1.0) + if(M != user) + for(var/mob/O in (viewers(M) - user - M)) + O.show_message("\red [user] is beginning to clamp bleeders in [M]'s cut open torso with [src].", 1) + M << "\red [user] begins to torso bleeders in your chest with [src]!" + user << "\red You clamp bleeders in [M]'s torso with [src]!" + M:embryo_op_stage = 2.0 + return + if(5.0) + if(M != user) + for(var/mob/O in (viewers(M) - user - M)) + O.show_message("\red [user] cleans out the debris from [M]'s cut open torso with [src].", 1) + M << "\red [user] begins to clean out the debris in your torso with [src]!" + user << "\red You clean out the debris from in [M]'s torso with [src]!" + M:embryo_op_stage = 6.0 + return + if(user.zone_sel.selecting == "groin") if(istype(M, /mob/living/carbon/human)) switch(M:appendix_op_stage) @@ -177,6 +223,18 @@ CIRCULAR SAW if(!((locate(/obj/machinery/optable, M.loc) && M.resting) || (locate(/obj/structure/table/, M.loc) && M.lying && prob(50)))) return ..() + if(user.zone_sel.selecting == "chest") + if(istype(M, /mob/living/carbon/human)) + switch(M:embryo_op_stage) + if(6.0) + if(M != user) + for(var/mob/O in (viewers(M) - user - M)) + O.show_message("\red [user] is beginning to cauterize the incision in [M]'s torso with [src].", 1) + M << "\red [user] begins to cauterize the incision in your torso with [src]!" + user << "\red You cauterize the incision in [M]'s torso with [src]!" + M:embryo_op_stage = 7.0 + return + if(user.zone_sel.selecting == "groin") if(istype(M, /mob/living/carbon/human)) switch(M:appendix_op_stage) @@ -264,6 +322,28 @@ CIRCULAR SAW src.add_fingerprint(user) + if(user.zone_sel.selecting == "chest") + if(istype(M, /mob/living/carbon/human)) + switch(M:embryo_op_stage) + if(0.0) + if(M != user) + for(var/mob/O in (viewers(M) - user - M)) + O.show_message("\red [M] is beginning to have his torso cut open with [src] by [user].", 1) + M << "\red [user] begins to cut open your torso with [src]!" + user << "\red You cut [M]'s torso open with [src]!" + M:embryo_op_stage = 1.0 + if(3.0) + if(M != user) + for(var/mob/O in (viewers(M) - user - M)) + O.show_message("\red [M] is beginning to have his stomach cut open with [src] by [user].", 1) + M << "\red [user] begins to cut open your stomach with [src]!" + user << "\red You cut [M]'s stomach open with [src]!" + for(var/datum/disease/D in M.viruses) + if(istype(D, /datum/disease/alien_embryo)) + user << "\red There's something wiggling in there!" + M:embryo_op_stage = 4.0 + return + if(user.zone_sel.selecting == "groin") if(istype(M, /mob/living/carbon/human)) switch(M:appendix_op_stage) diff --git a/code/game/objects/items/weapons/uplinks.dm b/code/game/objects/items/weapons/uplinks.dm index 39d0d1a9fe6..70db9532826 100644 --- a/code/game/objects/items/weapons/uplinks.dm +++ b/code/game/objects/items/weapons/uplinks.dm @@ -44,9 +44,10 @@ SYNDICATE UPLINK dat += "Syndicate Card (3)
" dat += "Voice-Changer (4)
" dat += "Thermal Glasses (4)
" + dat += "Stamp Remover (1)
" dat += "
" dat += "Freedom Implant (with injector) (3)
" - dat += "Paralysis Pen (3)
" //Note that this goes to the updated sleepypen now. +// dat += "Paralysis Pen (3)
" //Note that this goes to the updated sleepypen now. dat += "Sleepy Pen (4)
" //Terrible -Pete. //Reinstated -Skymarshal dat += "
" dat += "Detomatix Cartridge (3)
"