diff --git a/baystation12.dme b/baystation12.dme index dd713dda42..2f8ac5196d 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -795,6 +795,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" 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/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/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()