From f45d16f2c3da5ef38012c8db21fdf28d7a0f6917 Mon Sep 17 00:00:00 2001 From: Mark van Alphen Date: Mon, 27 May 2019 19:59:54 +0200 Subject: [PATCH] Observer/hud improvements and fixes --- code/__DEFINES/hud.dm | 1 + code/datums/hud.dm | 3 +- code/defines/procs/announce.dm | 2 +- code/game/gamemodes/blob/blob.dm | 18 ++++++-- code/game/gamemodes/cult/cult_comms.dm | 2 +- code/modules/events/blob.dm | 6 +++ code/modules/events/sentience.dm | 2 + code/modules/mob/language.dm | 21 +++++---- code/modules/mob/living/carbon/alien/alien.dm | 4 ++ .../carbon/alien/humanoid/caste/hunter.dm | 2 +- .../carbon/alien/humanoid/caste/sentinel.dm | 2 +- .../living/carbon/alien/humanoid/empress.dm | 41 ++++++++---------- .../mob/living/carbon/alien/humanoid/queen.dm | 2 +- code/modules/mob/living/life.dm | 3 +- code/modules/mob/mob_helpers.dm | 2 + icons/mob/hud.dmi | Bin 14387 -> 14588 bytes 16 files changed, 69 insertions(+), 42 deletions(-) diff --git a/code/__DEFINES/hud.dm b/code/__DEFINES/hud.dm index 45953a2e47b..4a1e4f20f98 100644 --- a/code/__DEFINES/hud.dm +++ b/code/__DEFINES/hud.dm @@ -55,6 +55,7 @@ #define DATA_HUD_ABDUCTOR 18 #define ANTAG_HUD_DEVIL 19 #define ANTAG_HUD_EVENTMISC 20 +#define ANTAG_HUD_BLOB 21 // Notification action types #define NOTIFY_JUMP "jump" diff --git a/code/datums/hud.dm b/code/datums/hud.dm index e5948a47e30..365a4309413 100644 --- a/code/datums/hud.dm +++ b/code/datums/hud.dm @@ -22,7 +22,8 @@ var/datum/atom_hud/huds = list( \ ANTAG_HUD_ABDUCTOR = new/datum/atom_hud/antag/hidden(),\ DATA_HUD_ABDUCTOR = new/datum/atom_hud/abductor(),\ ANTAG_HUD_DEVIL = new/datum/atom_hud/antag/hidden(),\ - ANTAG_HUD_EVENTMISC = new/datum/atom_hud/antag/hidden()\ + ANTAG_HUD_EVENTMISC = new/datum/atom_hud/antag/hidden(),\ + ANTAG_HUD_BLOB = new/datum/atom_hud/antag/hidden()\ ) /datum/atom_hud diff --git a/code/defines/procs/announce.dm b/code/defines/procs/announce.dm index 3c3906a25eb..3a70d05029e 100644 --- a/code/defines/procs/announce.dm +++ b/code/defines/procs/announce.dm @@ -95,7 +95,7 @@ receivers -= M garbled_receivers |= M for(var/mob/M in GLOB.dead_mob_list) - if(M.client && M.stat == DEAD) + if(M.client && M.stat == DEAD && !isnewplayer(M)) receivers |= M return list(receivers, garbled_receivers) diff --git a/code/game/gamemodes/blob/blob.dm b/code/game/gamemodes/blob/blob.dm index 30934a07214..0f8e52a90b2 100644 --- a/code/game/gamemodes/blob/blob.dm +++ b/code/game/gamemodes/blob/blob.dm @@ -43,9 +43,11 @@ var/list/blob_nodes = list() for(var/j = 0, j < cores_to_spawn, j++) if(!possible_blobs.len) break + var/datum/mind/blob = pick(possible_blobs) infected_crew += blob blob.special_role = SPECIAL_ROLE_BLOB + update_blob_icons_added(blob) blob.restricted_roles = restricted_jobs log_game("[key_name(blob)] has been selected as a Blob") possible_blobs -= blob @@ -67,8 +69,11 @@ var/list/blob_nodes = list() var/datum/mind/blobmind = blob.mind if(!istype(blobmind)) return 0 + infected_crew += blobmind blobmind.special_role = SPECIAL_ROLE_BLOB + update_blob_icons_added(blobmind) + log_game("[key_name(blob)] has been selected as a Blob") greet_blob(blobmind) to_chat(blob, "You feel very tired and bloated! You don't have long before you burst!") @@ -186,16 +191,21 @@ var/list/blob_nodes = list() return ..() /datum/game_mode/blob/proc/stage(var/stage) - switch(stage) if(0) send_intercept(1) declared = 1 - if(1) event_announcement.Announce("Confirmed outbreak of level 5 biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert", 'sound/AI/outbreak5.ogg') - if(2) send_intercept(2) - return +/datum/game_mode/proc/update_blob_icons_added(datum/mind/mob_mind) + var/datum/atom_hud/antag/antaghud = huds[ANTAG_HUD_BLOB] + antaghud.join_hud(mob_mind.current) + set_antag_hud(mob_mind.current, "hudblob") + +/datum/game_mode/proc/update_blob_icons_removed(datum/mind/mob_mind) + var/datum/atom_hud/antag/antaghud = huds[ANTAG_HUD_BLOB] + antaghud.leave_hud(mob_mind.current) + set_antag_hud(mob_mind.current, null) \ No newline at end of file diff --git a/code/game/gamemodes/cult/cult_comms.dm b/code/game/gamemodes/cult/cult_comms.dm index e93556ca843..2586c63bc91 100644 --- a/code/game/gamemodes/cult/cult_comms.dm +++ b/code/game/gamemodes/cult/cult_comms.dm @@ -42,7 +42,7 @@ for(var/mob/M in GLOB.player_list) if(iscultist(M)) to_chat(M, my_message) - else if(M in GLOB.dead_mob_list) + else if((M in GLOB.dead_mob_list) && !isnewplayer(M)) to_chat(M, " (F) [my_message] ") log_say("(CULT) [message]", user) diff --git a/code/modules/events/blob.dm b/code/modules/events/blob.dm index 2c2fdfbab84..a15dd83c035 100644 --- a/code/modules/events/blob.dm +++ b/code/modules/events/blob.dm @@ -7,21 +7,27 @@ /datum/event/blob/start() processing = FALSE //so it won't fire again in next tick + var/turf/T = pick(blobstart) if(!T) return kill() + var/list/candidates = pollCandidates("Do you want to play as a blob infested mouse?", ROLE_BLOB, 1) if(!candidates.len) return kill() + var/list/vents = list() for(var/obj/machinery/atmospherics/unary/vent_pump/temp_vent in GLOB.all_vent_pumps) if(is_station_level(temp_vent.loc.z) && !temp_vent.welded) if(temp_vent.parent.other_atmosmch.len > 50) vents += temp_vent + var/obj/vent = pick(vents) var/mob/living/simple_animal/mouse/blobinfected/B = new(vent.loc) var/mob/M = pick(candidates) B.key = M.key + SSticker.mode.update_blob_icons_added(B.mind) + to_chat(B, "You are now a mouse, infected with blob spores. Find somewhere isolated... before you burst and become the blob! Use ventcrawl (alt-click on vents) to move around.") var/image/alert_overlay = image('icons/mob/blob.dmi', "blank_blob") notify_ghosts("Infected Mouse has appeared in [get_area(B)].", source = B, alert_overlay = alert_overlay) diff --git a/code/modules/events/sentience.dm b/code/modules/events/sentience.dm index 419bebfe2c1..fd0b73bc67b 100644 --- a/code/modules/events/sentience.dm +++ b/code/modules/events/sentience.dm @@ -1,6 +1,8 @@ /datum/event/sentience /datum/event/sentience/start() + processing = FALSE //so it won't fire again in next tick + var/ghostmsg = "Do you want to awaken as a sentient being?" var/list/candidates = pollCandidates(ghostmsg, ROLE_SENTIENT, 1) var/list/potential = list() diff --git a/code/modules/mob/language.dm b/code/modules/mob/language.dm index 25b188911ad..57725da8eb2 100644 --- a/code/modules/mob/language.dm +++ b/code/modules/mob/language.dm @@ -455,6 +455,7 @@ colour = "alien" key = "y" flags = RESTRICTED | HIVEMIND + follow = TRUE /datum/language/wryn/check_special_condition(mob/other) var/mob/living/carbon/M = other @@ -485,7 +486,7 @@ colour = "alien" key = "a" flags = RESTRICTED | HIVEMIND - follow = 1 + follow = TRUE /datum/language/terrorspider name = "Spider Hivemind" @@ -496,7 +497,7 @@ colour = "terrorspider" key = "ts" flags = RESTRICTED | HIVEMIND - follow = 1 + follow = TRUE /datum/language/ling name = "Changeling" @@ -505,10 +506,11 @@ colour = "changeling" key = "g" flags = RESTRICTED | HIVEMIND + follow = TRUE /datum/language/ling/broadcast(mob/living/speaker, message, speaker_mask) if(speaker.mind && speaker.mind.changeling) - ..(speaker,message,speaker.mind.changeling.changelingID) + ..(speaker, message, speaker.mind.changeling.changelingID) else if(speaker.mind && speaker.mind.linglink) ..() else @@ -521,6 +523,7 @@ colour = "shadowling" key = "8" flags = RESTRICTED | HIVEMIND + follow = TRUE /datum/language/shadowling/broadcast(mob/living/speaker, message, speaker_mask) if(speaker.mind && speaker.mind.special_role == SPECIAL_ROLE_SHADOWLING) @@ -539,6 +542,7 @@ colour = "abductor" key = "zw" //doesn't matter, this is their default and only language flags = RESTRICTED | HIVEMIND + follow = TRUE /datum/language/abductor/broadcast(mob/living/speaker, message, speaker_mask) ..(speaker,message,speaker.real_name) @@ -567,6 +571,7 @@ colour = "alien" key = "bo" flags = RESTRICTED | HIVEMIND + follow = TRUE /datum/language/corticalborer/broadcast(mob/living/speaker, message, speaker_mask) var/mob/living/simple_animal/borer/B @@ -590,7 +595,7 @@ exclaim_verb = "declares" key = "b" flags = RESTRICTED | HIVEMIND - follow = 1 + follow = TRUE var/drone_only /datum/language/binary/broadcast(mob/living/speaker, message, speaker_mask) @@ -636,8 +641,8 @@ colour = "say_quote" key = "d" flags = RESTRICTED | HIVEMIND - drone_only = 1 - follow = 1 + drone_only = TRUE + follow = TRUE /datum/language/drone name = "Drone" @@ -647,7 +652,7 @@ exclaim_verb = "declares" key = "]" flags = RESTRICTED - follow = 1 + follow = TRUE syllables = list ("beep", "boop") /datum/language/swarmer @@ -659,7 +664,7 @@ colour = "say_quote" key = "z"//Zwarmer...Or Zerg! flags = RESTRICTED | HIVEMIND - follow = 1 + follow = TRUE // Language handling. /mob/proc/add_language(language) diff --git a/code/modules/mob/living/carbon/alien/alien.dm b/code/modules/mob/living/carbon/alien/alien.dm index ee858138f70..69a2e1160b0 100644 --- a/code/modules/mob/living/carbon/alien/alien.dm +++ b/code/modules/mob/living/carbon/alien/alien.dm @@ -73,7 +73,11 @@ stat = CONSCIOUS return health = maxHealth - getOxyLoss() - getFireLoss() - getBruteLoss() - getCloneLoss() + update_stat("updatehealth([reason])") + med_hud_set_health() + med_hud_set_status() + handle_hud_icons_health() /mob/living/carbon/alien/handle_environment(var/datum/gas_mixture/environment) diff --git a/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm b/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm index adf81753827..bf2158ae58e 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm @@ -17,7 +17,7 @@ . = -1 //hunters are sanic . += ..() //but they still need to slow down on stun -/mob/living/carbon/alien/humanoid/hunter/handle_regular_hud_updates() +/mob/living/carbon/alien/humanoid/hunter/handle_hud_icons_health() ..() //-Yvarov if(healths) diff --git a/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm b/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm index 6a9565fc449..3acb1fe8713 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm @@ -42,7 +42,7 @@ alien_organs += new /obj/item/organ/internal/xenos/neurotoxin ..() -/mob/living/carbon/alien/humanoid/sentinel/handle_regular_hud_updates() +/mob/living/carbon/alien/humanoid/sentinel/handle_hud_icons_health() ..() //-Yvarov if(healths) diff --git a/code/modules/mob/living/carbon/alien/humanoid/empress.dm b/code/modules/mob/living/carbon/alien/humanoid/empress.dm index f5355a38d67..a64602d030c 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/empress.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/empress.dm @@ -48,29 +48,26 @@ alien_organs += new /obj/item/organ/internal/xenos/neurotoxin ..() -/mob/living/carbon/alien/humanoid/empress +/mob/living/carbon/alien/humanoid/empress/handle_hud_icons_health() + ..() //-Yvarov - handle_regular_hud_updates() - - ..() //-Yvarov - - if(src.healths) - if(src.stat != 2) - switch(health) - if(250 to INFINITY) - src.healths.icon_state = "health0" - if(175 to 250) - src.healths.icon_state = "health1" - if(100 to 175) - src.healths.icon_state = "health2" - if(50 to 100) - src.healths.icon_state = "health3" - if(0 to 50) - src.healths.icon_state = "health4" - else - src.healths.icon_state = "health5" - else - src.healths.icon_state = "health6" + if(healths) + if(stat != 2) + switch(health) + if(250 to INFINITY) + healths.icon_state = "health0" + if(175 to 250) + healths.icon_state = "health1" + if(100 to 175) + healths.icon_state = "health2" + if(50 to 100) + healths.icon_state = "health3" + if(0 to 50) + healths.icon_state = "health4" + else + healths.icon_state = "health5" + else + healths.icon_state = "health6" /mob/living/carbon/alien/humanoid/empress/verb/lay_egg() set name = "Lay Egg (250)" diff --git a/code/modules/mob/living/carbon/alien/humanoid/queen.dm b/code/modules/mob/living/carbon/alien/humanoid/queen.dm index d80d773325e..14124afef3e 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/queen.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/queen.dm @@ -32,7 +32,7 @@ . = ..() . += 3 -/mob/living/carbon/alien/humanoid/queen/handle_regular_hud_updates() +/mob/living/carbon/alien/humanoid/queen/handle_hud_icons_health() ..() //-Yvarov if(healths) diff --git a/code/modules/mob/living/life.dm b/code/modules/mob/living/life.dm index e0c58c484d8..e538717ce56 100644 --- a/code/modules/mob/living/life.dm +++ b/code/modules/mob/living/life.dm @@ -59,8 +59,7 @@ handle_status_effects() //all special effects, stunned, weakened, jitteryness, hallucination, sleeping, etc if(client) - //regular_hud_updates() //THIS DOESN'T FUCKING UPDATE SHIT - handle_regular_hud_updates() //IT JUST REMOVES FUCKING HUD IMAGES + handle_regular_hud_updates() ..() diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index beb474539f1..03a4f59f197 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -485,6 +485,8 @@ var/list/intents = list(INTENT_HELP,INTENT_DISARM,INTENT_GRAB,INTENT_HARM) if(A) if(O.client.prefs && O.client.prefs.UI_style) A.icon = ui_style2icon(O.client.prefs.UI_style) + if(title) + A.name = title A.desc = message A.action = action A.target = source diff --git a/icons/mob/hud.dmi b/icons/mob/hud.dmi index b7f6b5c8f6a134b6aefed0eba3dba8ba793cdb9e..849db6579a59673543c9b0256414b5a008287465 100644 GIT binary patch literal 14588 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