diff --git a/_maps/_basemap.dm b/_maps/_basemap.dm
index 8cec15cc9..2530d1284 100644
--- a/_maps/_basemap.dm
+++ b/_maps/_basemap.dm
@@ -1,4 +1,4 @@
-//#define LOWMEMORYMODE //uncomment this to load centcom and runtime station and thats it.
+#define LOWMEMORYMODE //uncomment this to load centcom and runtime station and thats it.
#include "map_files\generic\CentCom.dmm"
diff --git a/code/_onclick/hud/alert.dm b/code/_onclick/hud/alert.dm
index bd6582c23..4937ec2ed 100644
--- a/code/_onclick/hud/alert.dm
+++ b/code/_onclick/hud/alert.dm
@@ -187,6 +187,11 @@
desc = "You're in major pain!"
icon_state = "pain_major"
+/obj/screen/alert/painshock
+ name = "Neurogenic Shock"
+ desc = "You are in so much pain, you risk going into shock!"
+ icon_state = "pain_shock"
+
/obj/screen/alert/gross
name = "Grossed out."
desc = "That was kind of gross..."
diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm
index 8b0b881b9..254fb4009 100644
--- a/code/modules/mob/living/living.dm
+++ b/code/modules/mob/living/living.dm
@@ -502,6 +502,10 @@
var/obj/effect/proc_holder/spell/spell = S
spell.updateButtonIcon()
+ if(iscarbon(src)) //pain cooldown
+ var/mob/living/carbon/C = src
+ C.pain_cooldown = 20
+
//proc used to completely heal a mob.
/mob/living/proc/fully_heal(admin_revive = 0)
restore_blood()
@@ -542,6 +546,13 @@
for(var/organ in C.internal_organs)
var/obj/item/organ/O = organ
O.setOrganDamage(0)
+ //Heal pain
+ if(iscarbon(src))
+ var/mob/living/carbon/C = src
+ for(var/obj/item/bodypart/X in C.bodyparts)
+ X.pain_dam = 0
+
+
SEND_SIGNAL(src, COMSIG_LIVING_FULLY_HEAL, admin_revive)
//fuck shitcode I hate shitcode
diff --git a/hyperstation/code/modules/mob/living/carbon/carbon.dm b/hyperstation/code/modules/mob/living/carbon/carbon.dm
index 05ab12e62..9e18e6ae2 100644
--- a/hyperstation/code/modules/mob/living/carbon/carbon.dm
+++ b/hyperstation/code/modules/mob/living/carbon/carbon.dm
@@ -1,6 +1,7 @@
/mob/living/carbon
var/total_pain = 0
var/pain_effect = 0
+ var/pain_cooldown = 0 //for defibs/surgry!
//pain
/mob/living/carbon/adjustPainLoss(amount, updating_health = TRUE, forced = FALSE, affected_zone = BODY_ZONE_CHEST)
@@ -15,11 +16,15 @@
/mob/living/carbon/proc/handle_pain()
var/pain_amount = 0
+
pain_effect += 1
+ if (pain_cooldown)
+ pain_cooldown -= 1
+ pain_effect = 0 //ignore pain for now, you got adrenaline running through your body.
+
//build up pain in the system from all your limbs and natrually heal pain if its attached to a live body.
- for(var/X in bodyparts)
- var/obj/item/bodypart/BP = X
+ for(var/obj/item/bodypart/BP in bodyparts)
pain_amount += BP.pain_dam
var/pain_target = (BP.brute_dam + BP.burn_dam)*0.8
@@ -34,7 +39,7 @@
BP.pain_dam = 0
continue //dont need to do the rest, your fine.
- if (BP.pain_dam && pain_effect > 10 && (stat == 0))
+ if (BP.pain_dam && pain_effect > 5 && (stat == 0))
var pain_level = (round(BP.pain_dam / 10))
switch(pain_level) //for every 10 points of damage minor -> major
if(1)//start at 10 just so it doesnt get annoying with micro damage
@@ -52,17 +57,19 @@
total_pain = pain_amount
//handle onscreen alert
- if (pain_effect == 5) //alittle early to give you a 5 second warning
+ if (pain_effect > 5)
switch(total_pain)
- if(-100 to 29)
+ if(-100 to 25)
clear_alert("pain")
- if(30 to 79)
+ if(25 to 69)
throw_alert("pain", /obj/screen/alert/pain)
- if(80 to 200)
+ if(70 to 99)
throw_alert("pain", /obj/screen/alert/painmajor)
+ if(100 to 999)
+ throw_alert("pain", /obj/screen/alert/painshock)
- if (pain_effect > 10)
- pain_effect = 0 //reset the timer 10 seconds.
+ if (pain_effect > 5)
+ pain_effect = 0 //reset the timer 5 seconds.
if(stat == 0) //awake, not dead or asleep
//status effects for pain..
var/mob/living/H = src
@@ -82,7 +89,7 @@
to_chat(src, "You love this intense pain, it excites you...")
H.adjustArousalLoss(12)
else
- to_chat(src, "You cant handle the intense pain...")
+ to_chat(src, "You cant handle the intense pain...")
if(prob(20)) //chance of fainting..
visible_message("[src] collapses!")
Unconscious(100)
@@ -91,10 +98,13 @@
//if they are asleep, this wont trigger.
if (total_pain > 110 && stat == 0) //taking 77 all damage at once from full health, will put you into shock and kill you. This cant be achived with chip damage (or fist fights), because youll die before you reach this pain level.
- to_chat(src, "You give into the pain...")
- visible_message("[src] goes into shock!")
- death() // kill.
-
+ if(prob(50))
+ emote("scream")//scream
+ to_chat(src, "You give into the pain...")
+ visible_message("[src] goes into neurogenic shock!")
+ Unconscious(100)
+ if (can_heartattack())//check if they can
+ set_heartattack(1)//heart stopped!
//HS Pain heal
diff --git a/icons/mob/screen_alert.dmi b/icons/mob/screen_alert.dmi
index 5ff995490..5b666a530 100644
Binary files a/icons/mob/screen_alert.dmi and b/icons/mob/screen_alert.dmi differ