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
|
||||
#define HEALTH_THRESHOLD_CRIT 0
|
||||
#define HEALTH_THRESHOLD_FULLCRIT -30
|
||||
#define HEALTH_THRESHOLD_DEAD -100
|
||||
|
||||
//Actual combat defines
|
||||
|
||||
@@ -4,8 +4,9 @@
|
||||
|
||||
//mob/var/stat things
|
||||
#define CONSCIOUS 0
|
||||
#define UNCONSCIOUS 1
|
||||
#define DEAD 2
|
||||
#define SOFT_CRIT 1
|
||||
#define UNCONSCIOUS 2
|
||||
#define DEAD 3
|
||||
|
||||
//mob disabilities stat
|
||||
|
||||
|
||||
@@ -214,28 +214,6 @@ GLOBAL_LIST_INIT(slot2type, list("head" = /obj/item/clothing/head/changeling, "w
|
||||
obj_count++
|
||||
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()
|
||||
if(changelings.len)
|
||||
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/area/centcom/holding/A = locate() in GLOB.sortedAreas
|
||||
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
|
||||
continue
|
||||
captured_amount+=1
|
||||
for(var/mob/living/carbon/monkey/M in A)//Monkeys are almost worthless, you failure.
|
||||
captured_amount+=0.1
|
||||
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
|
||||
continue
|
||||
captured_amount+=1
|
||||
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(M.stat==2)
|
||||
if(M.stat == DEAD)
|
||||
captured_amount+=1.5
|
||||
else
|
||||
captured_amount+=3
|
||||
continue
|
||||
if(M.stat==2)
|
||||
if(M.stat == DEAD)
|
||||
captured_amount+=1
|
||||
continue
|
||||
captured_amount+=2
|
||||
|
||||
@@ -687,6 +687,9 @@
|
||||
return
|
||||
if(IsUnconscious() || IsSleeping() || getOxyLoss() > 50 || (status_flags & FAKEDEATH) || health <= HEALTH_THRESHOLD_CRIT)
|
||||
if(stat == CONSCIOUS)
|
||||
stat = SOFT_CRIT
|
||||
update_canmove()
|
||||
if(health <= HEALTH_THRESHOLD_FULLCRIT && stat == SOFT_CRIT)
|
||||
stat = UNCONSCIOUS
|
||||
blind_eyes(1)
|
||||
update_canmove()
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
|
||||
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++
|
||||
|
||||
//Suffocate
|
||||
|
||||
@@ -241,7 +241,10 @@
|
||||
return 1
|
||||
|
||||
/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
|
||||
//affects them once clothing is factored in. ~Errorage
|
||||
|
||||
@@ -37,36 +37,36 @@ GLOBAL_LIST_INIT(department_radio_keys, list(
|
||||
//kinda localization -- rastaf0
|
||||
//same keys as above, but on russian keyboard layout. This file uses cp1251 as encoding.
|
||||
// Location
|
||||
"<EFBFBD>" = "right hand",
|
||||
"<EFBFBD>" = "left hand",
|
||||
"<EFBFBD>" = "intercom",
|
||||
"ê" = "right hand",
|
||||
"ä" = "left hand",
|
||||
"ø" = "intercom",
|
||||
|
||||
// Department
|
||||
"<EFBFBD>" = "department",
|
||||
"<EFBFBD>" = "Command",
|
||||
"<EFBFBD>" = "Science",
|
||||
"<EFBFBD>" = "Medical",
|
||||
"<EFBFBD>" = "Engineering",
|
||||
"<EFBFBD>" = "Security",
|
||||
"<EFBFBD>" = "Supply",
|
||||
"<EFBFBD>" = "Service",
|
||||
"ð" = "department",
|
||||
"ñ" = "Command",
|
||||
"ò" = "Science",
|
||||
"ü" = "Medical",
|
||||
"ó" = "Engineering",
|
||||
"û" = "Security",
|
||||
"ã" = "Supply",
|
||||
"ì" = "Service",
|
||||
|
||||
// Faction
|
||||
"<EFBFBD>" = "Syndicate",
|
||||
"<EFBFBD>" = "CentCom",
|
||||
"å" = "Syndicate",
|
||||
"í" = "CentCom",
|
||||
|
||||
// Species
|
||||
"<EFBFBD>" = "binary",
|
||||
"<EFBFBD>" = "changeling",
|
||||
"<EFBFBD>" = "alientalk",
|
||||
"è" = "binary",
|
||||
"ï" = "changeling",
|
||||
"ô" = "alientalk",
|
||||
|
||||
// Admin
|
||||
"<EFBFBD>" = "admin",
|
||||
"<EFBFBD>" = "deadmin",
|
||||
"ç" = "admin",
|
||||
"â" = "deadmin",
|
||||
|
||||
// Misc
|
||||
"<EFBFBD>" = "AI Private",
|
||||
"<EFBFBD>" = "cords"
|
||||
"ù" = "AI Private",
|
||||
"÷" = "cords"
|
||||
))
|
||||
|
||||
/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))
|
||||
return
|
||||
|
||||
var/in_full_critical = InFullCritical()
|
||||
|
||||
if(in_critical)
|
||||
if(!in_full_critical && !message_mode)
|
||||
message_mode = MODE_WHISPER
|
||||
if(!(crit_allowed_modes[message_mode]))
|
||||
return
|
||||
else if(stat == UNCONSCIOUS)
|
||||
@@ -149,7 +153,7 @@ GLOBAL_LIST_INIT(department_radio_keys, list(
|
||||
message_range = 1
|
||||
spans |= SPAN_ITALICS
|
||||
log_talk(src,"[key_name(src)] : [message]",LOGWHISPER)
|
||||
if(in_critical)
|
||||
if(in_full_critical)
|
||||
var/health_diff = round(-HEALTH_THRESHOLD_DEAD + health)
|
||||
// If we cut our message short, abruptly end it with a-..
|
||||
var/message_len = length(message)
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
//Cost function for suit Procs/Verbs/Abilities
|
||||
/obj/item/clothing/suit/space/space_ninja/proc/ninjacost(cost = 0, specificCheck = 0)
|
||||
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>")
|
||||
return 1
|
||||
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
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)
|
||||
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>")
|
||||
unlock_suit()
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user