mirror of
https://github.com/yogstation13/Yogstation.git
synced 2025-02-26 09:04:50 +00:00
Soft crit (#28649)
* Soft crit * Fix * New define * Fix shitcode * Tabs not spaces * Shitcomment * Default to whispering in soft crit * Fax
This commit is contained in:
@@ -43,6 +43,7 @@
|
|||||||
|
|
||||||
//Health Defines
|
//Health Defines
|
||||||
#define HEALTH_THRESHOLD_CRIT 0
|
#define HEALTH_THRESHOLD_CRIT 0
|
||||||
|
#define HEALTH_THRESHOLD_FULLCRIT -30
|
||||||
#define HEALTH_THRESHOLD_DEAD -100
|
#define HEALTH_THRESHOLD_DEAD -100
|
||||||
|
|
||||||
//Actual combat defines
|
//Actual combat defines
|
||||||
|
|||||||
@@ -4,8 +4,9 @@
|
|||||||
|
|
||||||
//mob/var/stat things
|
//mob/var/stat things
|
||||||
#define CONSCIOUS 0
|
#define CONSCIOUS 0
|
||||||
#define UNCONSCIOUS 1
|
#define SOFT_CRIT 1
|
||||||
#define DEAD 2
|
#define UNCONSCIOUS 2
|
||||||
|
#define DEAD 3
|
||||||
|
|
||||||
//mob disabilities stat
|
//mob disabilities stat
|
||||||
|
|
||||||
|
|||||||
@@ -214,28 +214,6 @@ GLOBAL_LIST_INIT(slot2type, list("head" = /obj/item/clothing/head/changeling, "w
|
|||||||
obj_count++
|
obj_count++
|
||||||
return
|
return
|
||||||
|
|
||||||
/*/datum/game_mode/changeling/check_finished()
|
|
||||||
var/changelings_alive = 0
|
|
||||||
for(var/datum/mind/changeling in changelings)
|
|
||||||
if(!iscarbon(changeling.current))
|
|
||||||
continue
|
|
||||||
if(changeling.current.stat==2)
|
|
||||||
continue
|
|
||||||
changelings_alive++
|
|
||||||
|
|
||||||
if (changelings_alive)
|
|
||||||
changelingdeath = 0
|
|
||||||
return ..()
|
|
||||||
else
|
|
||||||
if (!changelingdeath)
|
|
||||||
changelingdeathtime = world.time
|
|
||||||
changelingdeath = 1
|
|
||||||
if(world.time-changelingdeathtime > TIME_TO_GET_REVIVED)
|
|
||||||
return 1
|
|
||||||
else
|
|
||||||
return ..()
|
|
||||||
return 0*/
|
|
||||||
|
|
||||||
/datum/game_mode/proc/auto_declare_completion_changeling()
|
/datum/game_mode/proc/auto_declare_completion_changeling()
|
||||||
if(changelings.len)
|
if(changelings.len)
|
||||||
var/text = "<br><font size=3><b>The changelings were:</b></font>"
|
var/text = "<br><font size=3><b>The changelings were:</b></font>"
|
||||||
|
|||||||
@@ -592,25 +592,25 @@ GLOBAL_LIST_EMPTY(possible_items_special)
|
|||||||
var/captured_amount = 0
|
var/captured_amount = 0
|
||||||
var/area/centcom/holding/A = locate() in GLOB.sortedAreas
|
var/area/centcom/holding/A = locate() in GLOB.sortedAreas
|
||||||
for(var/mob/living/carbon/human/M in A)//Humans.
|
for(var/mob/living/carbon/human/M in A)//Humans.
|
||||||
if(M.stat==2)//Dead folks are worth less.
|
if(M.stat == DEAD)//Dead folks are worth less.
|
||||||
captured_amount+=0.5
|
captured_amount+=0.5
|
||||||
continue
|
continue
|
||||||
captured_amount+=1
|
captured_amount+=1
|
||||||
for(var/mob/living/carbon/monkey/M in A)//Monkeys are almost worthless, you failure.
|
for(var/mob/living/carbon/monkey/M in A)//Monkeys are almost worthless, you failure.
|
||||||
captured_amount+=0.1
|
captured_amount+=0.1
|
||||||
for(var/mob/living/carbon/alien/larva/M in A)//Larva are important for research.
|
for(var/mob/living/carbon/alien/larva/M in A)//Larva are important for research.
|
||||||
if(M.stat==2)
|
if(M.stat == DEAD)
|
||||||
captured_amount+=0.5
|
captured_amount+=0.5
|
||||||
continue
|
continue
|
||||||
captured_amount+=1
|
captured_amount+=1
|
||||||
for(var/mob/living/carbon/alien/humanoid/M in A)//Aliens are worth twice as much as humans.
|
for(var/mob/living/carbon/alien/humanoid/M in A)//Aliens are worth twice as much as humans.
|
||||||
if(istype(M, /mob/living/carbon/alien/humanoid/royal/queen))//Queens are worth three times as much as humans.
|
if(istype(M, /mob/living/carbon/alien/humanoid/royal/queen))//Queens are worth three times as much as humans.
|
||||||
if(M.stat==2)
|
if(M.stat == DEAD)
|
||||||
captured_amount+=1.5
|
captured_amount+=1.5
|
||||||
else
|
else
|
||||||
captured_amount+=3
|
captured_amount+=3
|
||||||
continue
|
continue
|
||||||
if(M.stat==2)
|
if(M.stat == DEAD)
|
||||||
captured_amount+=1
|
captured_amount+=1
|
||||||
continue
|
continue
|
||||||
captured_amount+=2
|
captured_amount+=2
|
||||||
|
|||||||
@@ -687,6 +687,9 @@
|
|||||||
return
|
return
|
||||||
if(IsUnconscious() || IsSleeping() || getOxyLoss() > 50 || (status_flags & FAKEDEATH) || health <= HEALTH_THRESHOLD_CRIT)
|
if(IsUnconscious() || IsSleeping() || getOxyLoss() > 50 || (status_flags & FAKEDEATH) || health <= HEALTH_THRESHOLD_CRIT)
|
||||||
if(stat == CONSCIOUS)
|
if(stat == CONSCIOUS)
|
||||||
|
stat = SOFT_CRIT
|
||||||
|
update_canmove()
|
||||||
|
if(health <= HEALTH_THRESHOLD_FULLCRIT && stat == SOFT_CRIT)
|
||||||
stat = UNCONSCIOUS
|
stat = UNCONSCIOUS
|
||||||
blind_eyes(1)
|
blind_eyes(1)
|
||||||
update_canmove()
|
update_canmove()
|
||||||
|
|||||||
@@ -53,7 +53,7 @@
|
|||||||
|
|
||||||
var/datum/gas_mixture/breath
|
var/datum/gas_mixture/breath
|
||||||
|
|
||||||
if(health <= HEALTH_THRESHOLD_CRIT || (pulledby && pulledby.grab_state >= GRAB_KILL && !getorganslot("breathing_tube")))
|
if(health <= HEALTH_THRESHOLD_FULLCRIT || (pulledby && pulledby.grab_state >= GRAB_KILL && !getorganslot("breathing_tube")))
|
||||||
losebreath++
|
losebreath++
|
||||||
|
|
||||||
//Suffocate
|
//Suffocate
|
||||||
|
|||||||
@@ -241,7 +241,10 @@
|
|||||||
return 1
|
return 1
|
||||||
|
|
||||||
/mob/living/proc/InCritical()
|
/mob/living/proc/InCritical()
|
||||||
return (health < 0 && health > -100 && stat == UNCONSCIOUS)
|
return (health < HEALTH_THRESHOLD_CRIT && health > HEALTH_THRESHOLD_DEAD && (stat == SOFT_CRIT || stat == UNCONSCIOUS))
|
||||||
|
|
||||||
|
/mob/living/proc/InFullCritical()
|
||||||
|
return (health < HEALTH_THRESHOLD_FULLCRIT && health > HEALTH_THRESHOLD_DEAD && stat == UNCONSCIOUS)
|
||||||
|
|
||||||
//This proc is used for mobs which are affected by pressure to calculate the amount of pressure that actually
|
//This proc is used for mobs which are affected by pressure to calculate the amount of pressure that actually
|
||||||
//affects them once clothing is factored in. ~Errorage
|
//affects them once clothing is factored in. ~Errorage
|
||||||
|
|||||||
@@ -37,36 +37,36 @@ GLOBAL_LIST_INIT(department_radio_keys, list(
|
|||||||
//kinda localization -- rastaf0
|
//kinda localization -- rastaf0
|
||||||
//same keys as above, but on russian keyboard layout. This file uses cp1251 as encoding.
|
//same keys as above, but on russian keyboard layout. This file uses cp1251 as encoding.
|
||||||
// Location
|
// Location
|
||||||
"<EFBFBD>" = "right hand",
|
"ê" = "right hand",
|
||||||
"<EFBFBD>" = "left hand",
|
"ä" = "left hand",
|
||||||
"<EFBFBD>" = "intercom",
|
"ø" = "intercom",
|
||||||
|
|
||||||
// Department
|
// Department
|
||||||
"<EFBFBD>" = "department",
|
"ð" = "department",
|
||||||
"<EFBFBD>" = "Command",
|
"ñ" = "Command",
|
||||||
"<EFBFBD>" = "Science",
|
"ò" = "Science",
|
||||||
"<EFBFBD>" = "Medical",
|
"ü" = "Medical",
|
||||||
"<EFBFBD>" = "Engineering",
|
"ó" = "Engineering",
|
||||||
"<EFBFBD>" = "Security",
|
"û" = "Security",
|
||||||
"<EFBFBD>" = "Supply",
|
"ã" = "Supply",
|
||||||
"<EFBFBD>" = "Service",
|
"ì" = "Service",
|
||||||
|
|
||||||
// Faction
|
// Faction
|
||||||
"<EFBFBD>" = "Syndicate",
|
"å" = "Syndicate",
|
||||||
"<EFBFBD>" = "CentCom",
|
"í" = "CentCom",
|
||||||
|
|
||||||
// Species
|
// Species
|
||||||
"<EFBFBD>" = "binary",
|
"è" = "binary",
|
||||||
"<EFBFBD>" = "changeling",
|
"ï" = "changeling",
|
||||||
"<EFBFBD>" = "alientalk",
|
"ô" = "alientalk",
|
||||||
|
|
||||||
// Admin
|
// Admin
|
||||||
"<EFBFBD>" = "admin",
|
"ç" = "admin",
|
||||||
"<EFBFBD>" = "deadmin",
|
"â" = "deadmin",
|
||||||
|
|
||||||
// Misc
|
// Misc
|
||||||
"<EFBFBD>" = "AI Private",
|
"ù" = "AI Private",
|
||||||
"<EFBFBD>" = "cords"
|
"÷" = "cords"
|
||||||
))
|
))
|
||||||
|
|
||||||
/mob/living/say(message, bubble_type,var/list/spans = list(), sanitize = TRUE, datum/language/language = null)
|
/mob/living/say(message, bubble_type,var/list/spans = list(), sanitize = TRUE, datum/language/language = null)
|
||||||
@@ -108,7 +108,11 @@ GLOBAL_LIST_INIT(department_radio_keys, list(
|
|||||||
if(check_emote(original_message) || !can_speak_basic(original_message))
|
if(check_emote(original_message) || !can_speak_basic(original_message))
|
||||||
return
|
return
|
||||||
|
|
||||||
|
var/in_full_critical = InFullCritical()
|
||||||
|
|
||||||
if(in_critical)
|
if(in_critical)
|
||||||
|
if(!in_full_critical && !message_mode)
|
||||||
|
message_mode = MODE_WHISPER
|
||||||
if(!(crit_allowed_modes[message_mode]))
|
if(!(crit_allowed_modes[message_mode]))
|
||||||
return
|
return
|
||||||
else if(stat == UNCONSCIOUS)
|
else if(stat == UNCONSCIOUS)
|
||||||
@@ -149,7 +153,7 @@ GLOBAL_LIST_INIT(department_radio_keys, list(
|
|||||||
message_range = 1
|
message_range = 1
|
||||||
spans |= SPAN_ITALICS
|
spans |= SPAN_ITALICS
|
||||||
log_talk(src,"[key_name(src)] : [message]",LOGWHISPER)
|
log_talk(src,"[key_name(src)] : [message]",LOGWHISPER)
|
||||||
if(in_critical)
|
if(in_full_critical)
|
||||||
var/health_diff = round(-HEALTH_THRESHOLD_DEAD + health)
|
var/health_diff = round(-HEALTH_THRESHOLD_DEAD + health)
|
||||||
// If we cut our message short, abruptly end it with a-..
|
// If we cut our message short, abruptly end it with a-..
|
||||||
var/message_len = length(message)
|
var/message_len = length(message)
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
//Cost function for suit Procs/Verbs/Abilities
|
//Cost function for suit Procs/Verbs/Abilities
|
||||||
/obj/item/clothing/suit/space/space_ninja/proc/ninjacost(cost = 0, specificCheck = 0)
|
/obj/item/clothing/suit/space/space_ninja/proc/ninjacost(cost = 0, specificCheck = 0)
|
||||||
var/mob/living/carbon/human/H = affecting
|
var/mob/living/carbon/human/H = affecting
|
||||||
if((H.stat || H.incorporeal_move) && (specificCheck != N_ADRENALINE))//Will not return if user is using an adrenaline booster since you can use them when stat==1.
|
if((H.stat || H.incorporeal_move) && (specificCheck != N_ADRENALINE))//Will not return if user is using an adrenaline booster since you can use them when stat==UNCONSCIOUS.
|
||||||
to_chat(H, "<span class='danger'>You must be conscious and solid to do this.</span>")
|
to_chat(H, "<span class='danger'>You must be conscious and solid to do this.</span>")
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
|
|||||||
@@ -30,7 +30,7 @@
|
|||||||
addtimer(CALLBACK(src, .proc/ninitialize_four, delay, U), delay)
|
addtimer(CALLBACK(src, .proc/ninitialize_four, delay, U), delay)
|
||||||
|
|
||||||
/obj/item/clothing/suit/space/space_ninja/proc/ninitialize_four(delay, mob/living/carbon/human/U)
|
/obj/item/clothing/suit/space/space_ninja/proc/ninitialize_four(delay, mob/living/carbon/human/U)
|
||||||
if(U.stat==2||U.health<=0)
|
if(U.stat == DEAD|| U.health <= 0)
|
||||||
to_chat(U, "<span class='danger'><B>FÄAL �Rr�R</B>: 344--93#�&&21 BR��N |/|/aV� PATT$RN <B>RED</B>\nA-A-aB�rT�NG...</span>")
|
to_chat(U, "<span class='danger'><B>FÄAL �Rr�R</B>: 344--93#�&&21 BR��N |/|/aV� PATT$RN <B>RED</B>\nA-A-aB�rT�NG...</span>")
|
||||||
unlock_suit()
|
unlock_suit()
|
||||||
return
|
return
|
||||||
|
|||||||
Reference in New Issue
Block a user