Whispering in crit makes you succumb again (#21216)

* Fixes crit whisper + deathgasp

* Fucking runtimes

* Another dumb bug

* Verbs => Proc

* Special deathgasps

* If I find you again

* Most definitively works
This commit is contained in:
ShiftyRail
2019-01-06 23:14:27 +01:00
committed by Intigracy
parent 801161dde3
commit dd28e55593
12 changed files with 29 additions and 20 deletions

View File

@@ -665,7 +665,7 @@
C.update_canmove() C.update_canmove()
C.remove_changeling_powers() C.remove_changeling_powers()
C.emote("deathgasp") C.emote("deathgasp", message = TRUE)
C.tod = worldtime2text() C.tod = worldtime2text()
var/time_to_take = rand(800, 1200) var/time_to_take = rand(800, 1200)
to_chat(C, "<span class='notice'>This will take [round((time_to_take/10))] seconds.</span>") to_chat(C, "<span class='notice'>This will take [round((time_to_take/10))] seconds.</span>")

View File

@@ -355,7 +355,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
return return
if(src.health < 0 && stat != DEAD) //crit people if(src.health < 0 && stat != DEAD) //crit people
succumb() succumb_proc(0)
ghostize(1) ghostize(1)
else if(stat == DEAD) else if(stat == DEAD)
ghostize(1) ghostize(1)

View File

@@ -4,7 +4,7 @@
if(healths) if(healths)
healths.icon_state = "health6" healths.icon_state = "health6"
if(!gibbed) if(!gibbed)
emote("deathgasp") emote("deathgasp", message = TRUE)
stat = DEAD stat = DEAD
if(!gibbed) if(!gibbed)

View File

@@ -4,7 +4,7 @@
if(healths) if(healths)
healths.icon_state = "health6" healths.icon_state = "health6"
if(!gibbed) if(!gibbed)
emote("deathgasp") emote("deathgasp", message = TRUE)
stat = DEAD stat = DEAD
icon_state = "larva_dead" icon_state = "larva_dead"

View File

@@ -103,8 +103,6 @@
H.mind.kills += "[name] ([ckey])" H.mind.kills += "[name] ([ckey])"
if(!gibbed) if(!gibbed)
emote("deathgasp") //Let the world KNOW WE ARE DEAD
update_canmove() update_canmove()
stat = DEAD stat = DEAD
tod = worldtime2text() //Weasellos time of death patch tod = worldtime2text() //Weasellos time of death patch

View File

@@ -31,7 +31,7 @@
if(healths) if(healths)
healths.icon_state = "health5" healths.icon_state = "health5"
if(!gibbed) if(!gibbed)
emote("deathgasp") emote("deathgasp", message = TRUE)
stat = DEAD stat = DEAD
update_canmove() update_canmove()

View File

@@ -56,10 +56,19 @@
stat_allowed = UNCONSCIOUS stat_allowed = UNCONSCIOUS
mob_type_blacklist_typelist = list(/mob/living/carbon/brain) // Everyone can deathgasp mob_type_blacklist_typelist = list(/mob/living/carbon/brain) // Everyone can deathgasp
/datum/emote/living/deathgasp/run_emote(mob/user, params) /datum/emote/living/deathgasp/run_emote(mob/living/user, params)
if(/datum/dna/gene/disability/elvis in user.active_genes)
user.emote("fart", ignore_status = 1)
message = "has left the building..."
if(!issilent(user) && (M_HARDCORE in user.mutations))
message = "whispers with their final breath, <i>'i told u i was hardcore..'</i>"
. = ..() . = ..()
if(. && isalienadult(user)) if(. && isalienadult(user))
playsound(user.loc, 'sound/voice/hiss6.ogg', 80, 1, 1) playsound(user.loc, 'sound/voice/hiss6.ogg', 80, 1, 1)
if (. && user.stat == UNCONSCIOUS && !params)
user.succumb_proc(0, 1)
message = initial(message)
/datum/emote/living/carbon/drool /datum/emote/living/carbon/drool
key = "drool" key = "drool"

View File

@@ -178,10 +178,15 @@
/mob/living/verb/succumb() /mob/living/verb/succumb()
set hidden = 1 set hidden = 1
succumb_proc(0)
/mob/living/proc/succumb_proc(var/gibbed = 0, var/from_deathgasp = FALSE)
if (src.health < 0 && stat != DEAD) if (src.health < 0 && stat != DEAD)
src.attack_log += "[src] has succumbed to death with [health] points of health!" src.attack_log += "[src] has succumbed to death with [health] points of health!"
src.apply_damage(maxHealth + src.health, OXY) src.apply_damage(maxHealth + src.health, OXY)
death(0) if (!from_deathgasp)
emote("deathgasp", message = TRUE)
death(gibbed)
to_chat(src, "<span class='info'>You have given up life and succumbed to death.</span>") to_chat(src, "<span class='info'>You have given up life and succumbed to death.</span>")

View File

@@ -117,14 +117,14 @@ var/list/department_radio_keys = list(
say_testing(src, "ur ded kid") say_testing(src, "ur ded kid")
say_dead(message) say_dead(message)
return return
if(check_emote(message))
say_testing(src, "Emoted")
return
if (stat) // Unconcious. if (stat) // Unconcious.
if(message_mode == MODE_WHISPER) //Lets us say our last words. if(message_mode == MODE_WHISPER) //Lets us say our last words.
say_testing(src, "message mode was whisper.") say_testing(src, "message mode was whisper.")
whisper(copytext(message, 3)) whisper(copytext(message, 3))
return return
if(check_emote(message))
say_testing(src, "Emoted")
return
if(!can_speak_basic(message)) if(!can_speak_basic(message))
say_testing(src, "we aren't able to talk") say_testing(src, "we aren't able to talk")
return return
@@ -484,9 +484,6 @@ var/list/department_radio_keys = list(
to_chat(usr, "<span class='danger'>Speech is currently admin-disabled.</span>") to_chat(usr, "<span class='danger'>Speech is currently admin-disabled.</span>")
return return
if(isUnconscious())
return
var/datum/speech/speech = create_speech(message) var/datum/speech/speech = create_speech(message)
speech.language = parse_language(speech.message) speech.language = parse_language(speech.message)
speech.mode = SPEECH_MODE_WHISPER speech.mode = SPEECH_MODE_WHISPER
@@ -553,7 +550,7 @@ var/list/department_radio_keys = list(
watcher.show_message(rendered, 2) watcher.show_message(rendered, 2)
if (said_last_words) // dying words if (said_last_words) // dying words
succumb(1) succumb_proc(0)
returnToPool(speech) returnToPool(speech)

View File

@@ -2,7 +2,7 @@
if(stat == DEAD) if(stat == DEAD)
return return
if(!gibbed) if(!gibbed)
emote("deathgasp") emote("deathgasp", message = TRUE)
playsound(src, 'sound/machines/WXP_shutdown.ogg', 75, FALSE) playsound(src, 'sound/machines/WXP_shutdown.ogg', 75, FALSE)
stat = DEAD stat = DEAD
update_icon() update_icon()

View File

@@ -37,7 +37,7 @@
if(stat == DEAD) if(stat == DEAD)
return return
if(!gibbed) if(!gibbed)
emote("deathgasp") emote("deathgasp", message = TRUE)
stat = DEAD stat = DEAD
update_canmove() update_canmove()
if(!gibbed) if(!gibbed)

View File

@@ -324,7 +324,7 @@ var/global/list/animal_count = list() //Stores types, and amount of animals of t
return "[emote], [text]" return "[emote], [text]"
return "says, [text]"; return "says, [text]";
/mob/living/simple_animal/emote(var/act, var/type, var/desc, var/auto) /mob/living/simple_animal/emote(var/act, var/type, var/desc, var/auto, var/message = null)
if(timestopped) if(timestopped)
return //under effects of time magick return //under effects of time magick
if(stat) if(stat)
@@ -512,7 +512,7 @@ var/global/list/animal_count = list() //Stores types, and amount of animals of t
return return
if(!gibbed) if(!gibbed)
emote("deathgasp") emote("deathgasp", message = TRUE)
health = 0 // so /mob/living/simple_animal/Life() doesn't magically revive them health = 0 // so /mob/living/simple_animal/Life() doesn't magically revive them
living_mob_list -= src living_mob_list -= src