diff --git a/baystation12.dme b/baystation12.dme index fa9cd24715..1cc62f3e5e 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -797,6 +797,7 @@ #include "code\modules\mob\living\say.dm" #include "code\modules\mob\living\blob\blob.dm" #include "code\modules\mob\living\carbon\carbon.dm" +#include "code\modules\mob\living\carbon\shock.dm" #include "code\modules\mob\living\carbon\alien\alien.dm" #include "code\modules\mob\living\carbon\alien\say.dm" #include "code\modules\mob\living\carbon\alien\humanoid\alien_powers.dm" @@ -984,6 +985,7 @@ #include "code\WorkInProgress\mapload\reader.dm" #include "code\WorkInProgress\Mini\customitems.dm" #include "code\WorkInProgress\SkyMarshal\coatrack.dm" +#include "code\WorkInProgress\SkyMarshal\eraser.dm" #include "code\WorkInProgress\SkyMarshal\policetape.dm" #include "code\WorkInProgress\Tastyfish\Eliza.dm" #include "code\WorkInProgress\Tastyfish\Eliza_Data.dm" diff --git a/code/WorkInProgress/SkyMarshal/eraser.dm b/code/WorkInProgress/SkyMarshal/eraser.dm new file mode 100644 index 0000000000..f15384f3f1 --- /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/WorkInProgress/virus2/base.dm b/code/WorkInProgress/virus2/base.dm index 789bbddfda..598ee2d4f8 100644 --- a/code/WorkInProgress/virus2/base.dm +++ b/code/WorkInProgress/virus2/base.dm @@ -441,12 +441,6 @@ activate(var/mob/living/carbon/mob,var/multiplier) mob.brainloss = 20 -/datum/disease2/effect/lesser/drowsy - name = "Bedroom Syndrome" - stage = 2 - activate(var/mob/living/carbon/mob,var/multiplier) - mob.drowsyness = 5 - /datum/disease2/effect/lesser/deaf name = "Hard of hearing syndrome" stage = 3 diff --git a/code/WorkInProgress/virus2/curer.dm b/code/WorkInProgress/virus2/curer.dm index f4f53cff1b..e5e0bc7f8d 100644 --- a/code/WorkInProgress/virus2/curer.dm +++ b/code/WorkInProgress/virus2/curer.dm @@ -68,6 +68,9 @@ if(B) dat = "Blood sample inserted." + var/code = "" + for(var/V in ANTIGENS) if(text2num(V) & B.data["antibodies"]) code += ANTIGENS[V] + dat += "
Antibodies: [code]" dat += "
Begin antibody production" else dat += "
Please check container contents." diff --git a/code/datums/diseases/alien_embryo.dm b/code/datums/diseases/alien_embryo.dm index 1008c7f54b..29890cd6dc 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 b34ef52427..3e8250b4b3 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 6d829e5e35..bdea851310 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/machinery/cloning.dm b/code/game/machinery/cloning.dm index 1272ba40ff..ac15717c1c 100644 --- a/code/game/machinery/cloning.dm +++ b/code/game/machinery/cloning.dm @@ -12,7 +12,7 @@ icon_state = "pod_0" req_access = list(access_medlab) //For premature unlocking. var/mob/living/occupant - var/heal_level = 90 //The clone is released once its health reaches this level. + var/heal_level = 10 //The clone is released once its health reaches this level. var/locked = 0 var/obj/machinery/computer/cloning/connected = null //So we remember the connected clone machine. var/mess = 0 //Need to clean out it if it's full of exploded clone. diff --git a/code/game/objects/devices/PDA/uplink.dm b/code/game/objects/devices/PDA/uplink.dm index 31e4943d1b..6c77009d99 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("eraser") + 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 1a5d3501f7..46247b0257 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 4180f9e34a..c9a4016074 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 39d0d1a9fe..cc9c8b9d1a 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)
" @@ -196,6 +197,10 @@ SYNDICATE UPLINK if (src.uses >= 10) uses -= 10 new /obj/item/toy/syndicateballoon(get_turf(src)) + if("eraser") + if(uses) + uses -- + new /obj/item/weapon/stamperaser(get_turf(hostpda)) else if (href_list["lock"] && src.origradio) // presto chango, a regular radio again! (reset the freq too...) shutdown_uplink() diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index e67bc80f54..093e3b113c 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -181,6 +181,8 @@ if (bodytemperature < 283.222) tally += (283.222 - bodytemperature) / 10 * 1.75 + if (shock_stage >= 10) tally += 3 + return tally /mob/living/carbon/human/Stat() @@ -2328,4 +2330,4 @@ It can still be worn/put on as normal. /mob/living/carbon/human/Paralyse(amount) if(mutations & HULK) return - ..() + ..() diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 15adc1d1ca..59127f887c 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -21,6 +21,9 @@ var/datum/gas_mixture/environment = loc.return_air() + // clean all symptoms, they must be set again in this cycle + src.disease_symptoms = 0 + if (stat != 2) //still breathing //First, resolve location and get a breath @@ -34,6 +37,8 @@ var/obj/location_as_object = loc location_as_object.handle_internal_lifeform(src, 0) + src.handle_shock() + //Apparently, the person who wrote this code designed it so that //blinded get reset each cycle and then get activated later in the //code. Very ugly. I dont care. Moving this stuff here so its easy @@ -992,9 +997,6 @@ for(var/datum/disease/D in viruses) D.cure() - // clean all the symptoms incurred by the virus - src.disease_symptoms = 0 - if(!virus2) // the following is silly since it lets you infect people through glass /*for(var/mob/living/carbon/M in oviewers(4,src)) @@ -1058,65 +1060,35 @@ if ((changeling.geneticdamage > 0)) changeling.geneticdamage = changeling.geneticdamage-1 -/* - // Commented out so hunger system won't be such shock - // Damage and effect from not eating - if(nutrition <= 50) - if (prob (0.1)) - src << "\red Your stomach rumbles." - if (prob (10)) - bruteloss++ - if (prob (5)) - src << "You feel very weak." - weakened += rand(2, 3) -*/ -/* -snippets + handle_shock() + ..() - if (mach) - if (machine) - mach.icon_state = "mach1" + if(traumatic_shock >= 80) + shock_stage += 1 else - mach.icon_state = null + shock_stage-- + shock_stage = max(shock_stage, 0) + return - if (!m_flag) - moved_recently = 0 - m_flag = null + if (shock_stage > 60) + if(shock_stage == 61) + for(var/mob/O in viewers(src, null)) + O.show_message("[src.name]'s body becomes limp.", 1) + Stun(20) + lying = 1 + disease_symptoms |= DISEASE_WHISPER - - - if ((istype(loc, /turf/space) && !( locate(/obj/movable, loc) ))) - var/layers = 20 - // ******* Check - if (((istype(head, /obj/item/clothing/head) && head.flags & 4) || (istype(wear_mask, /obj/item/clothing/mask) && (!( wear_mask.flags & 4 ) && wear_mask.flags & 8)))) - layers -= 5 - if (istype(w_uniform, /obj/item/clothing/under)) - layers -= 5 - if ((istype(wear_suit, /obj/item/clothing/suit) && wear_suit.flags & 8)) - layers -= 10 - if (layers > oxcheck) - oxcheck = layers - - - if(bodytemperature < 282.591 && (!firemut)) - if(bodytemperature < 250) - adjustFireLoss(4) - updatehealth() - if(paralysis <= 2) paralysis += 2 - else if(prob(1) && !paralysis) - if(paralysis <= 5) paralysis += 5 - emote("collapse") - src << "\red You collapse from the cold!" - if(bodytemperature > 327.444 && (!firemut)) - if(bodytemperature > 345.444) - if(!eye_blurry) src << "\red The heat blurs your vision!" - eye_blurry = max(4, eye_blurry) - if(prob(3)) adjustFireLoss(rand(1,2)) - else if(prob(3) && !paralysis) - paralysis += 2 - emote("collapse") - src << "\red You collapse from heat exaustion!" - plcheck = t_plasma - oxcheck = t_oxygen - G.turf_add(T, G.total_moles()) -*/ \ No newline at end of file + if (shock_stage > 70) if(shock_stage % 30 == 0) + Paralyse(rand(15,28)) + if(shock_stage >= 30) + if(shock_stage == 30) emote("me",1,"is having trouble keeping their eyes open.") + eye_blurry = max(2, eye_blurry) + stuttering = max(stuttering, 5) + bodytemperature = 313.15 // high fever + // pain messages + if(shock_stage == 10) + src << ""+pick("It hurts so much!", "You really need some painkillers..", "Dear god, the pain!") + else if(shock_stage == 40) + src << ""+pick("The pain is excrutiating!", "Please, just end the pain!", "Your whole body is going numb!") + else if(shock_stage == 80) + src << ""+pick("You see a light at the end of the tunnel!", "You feel like you could die any moment now.", "You're about to lose consciousness.") \ No newline at end of file diff --git a/code/modules/mob/living/carbon/shock.dm b/code/modules/mob/living/carbon/shock.dm new file mode 100644 index 0000000000..c353923369 --- /dev/null +++ b/code/modules/mob/living/carbon/shock.dm @@ -0,0 +1,18 @@ +/mob/living/carbon/var/traumatic_shock = 0 +/mob/living/carbon/var/shock_stage = 0 + +// proc to find out in how much pain the mob is at the moment +/mob/living/carbon/proc/updateshock() + src.traumatic_shock = src.getOxyLoss() + src.getToxLoss() + src.getFireLoss() + 1.2*src.getBruteLoss() + 2*src.getCloneLoss() + if(reagents.has_reagent("alkysine")) + src.traumatic_shock -= 10 + if(reagents.has_reagent("inaprovaline")) + src.traumatic_shock -= 15 + if(reagents.has_reagent("synaptizine")) + src.traumatic_shock -= 50 + + return src.traumatic_shock + + +/mob/living/carbon/proc/handle_shock() + updateshock()