From aca9d31853928a9d958ccf71c3b0ed1975da7879 Mon Sep 17 00:00:00 2001 From: Aurorablade Date: Sat, 12 Dec 2015 18:45:07 -0500 Subject: [PATCH] almossstttttt --- code/__DEFINES/hud.dm | 3 +- code/datums/hud.dm | 2 +- code/datums/mind.dm | 20 +++++++------ code/game/data_huds.dm | 27 +++++------------- code/game/gamemodes/antag_hud.dm | 2 +- .../game/gamemodes/autotraitor/autotraitor.dm | 1 + code/game/gamemodes/changeling/changeling.dm | 2 +- .../game/gamemodes/malfunction/malfunction.dm | 3 ++ code/game/gamemodes/nations/nations.dm | 19 ++++++++++-- code/game/gamemodes/traitor/traitor.dm | 1 + code/game/gamemodes/vampire/vampire.dm | 8 +++--- code/game/gamemodes/xenos/xenos.dm | 1 + code/game/jobs/job_controller.dm | 6 ++-- code/modules/mob/dead/observer/observer.dm | 23 ++++++++++----- .../mob/living/carbon/human/species/monkey.dm | 8 ++++++ icons/mob/hud.dmi | Bin 12020 -> 11974 bytes 16 files changed, 77 insertions(+), 49 deletions(-) diff --git a/code/__DEFINES/hud.dm b/code/__DEFINES/hud.dm index d047b394b63..81ddb2c91eb 100644 --- a/code/__DEFINES/hud.dm +++ b/code/__DEFINES/hud.dm @@ -15,6 +15,7 @@ #define DIAG_BATT_HUD "10"// Borg/Mech power meter #define DIAG_MECH_HUD "11"// Mech health bar #define STATUS_HUD_OOC "12" // STATUS_HUD without virus db check for someone being ill. + //for antag huds. these are used at the /mob level #define SPECIALROLE_HUD "12" #define NATIONS_HUD "13" //Show nations icons during nations gamemode @@ -27,7 +28,7 @@ #define DATA_HUD_MEDICAL_ADVANCED 4 #define DATA_HUD_DIAGNOSTIC 5 //NATIONS -#define DATA_HUD_NATIONS 6 +#define GAME_HUD_NATIONS 6 //antag HUD defines #define ANTAG_HUD_CULT 7 #define ANTAG_HUD_REV 8 diff --git a/code/datums/hud.dm b/code/datums/hud.dm index 569620158dd..238553dc9ca 100644 --- a/code/datums/hud.dm +++ b/code/datums/hud.dm @@ -7,7 +7,7 @@ var/datum/atom_hud/huds = list( \ DATA_HUD_MEDICAL_BASIC = new/datum/atom_hud/data/human/medical/basic(), \ DATA_HUD_MEDICAL_ADVANCED = new/datum/atom_hud/data/human/medical/advanced(), \ DATA_HUD_DIAGNOSTIC = new/datum/atom_hud/data/diagnostic(), - DATA_HUD_NATIONS = new/datum/atom_hud/data/human/nations(), \ + GAME_HUD_NATIONS = new/datum/atom_hud/antag(), \ ANTAG_HUD_CULT = new/datum/atom_hud/antag(), \ ANTAG_HUD_REV = new/datum/atom_hud/antag(), \ ANTAG_HUD_OPS = new/datum/atom_hud/antag(), \ diff --git a/code/datums/mind.dm b/code/datums/mind.dm index 514cba49c9a..abb6b04c6c7 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -615,7 +615,7 @@ else if(href_list["implant"]) var/mob/living/carbon/human/H = current - H.hud_updateflag |= (1 << IMPLOYAL_HUD) // updates that players HUD images so secHUD's pick up they are implanted or not. + //H.hud_updateflag |= (1 << IMPLOYAL_HUD) // updates that players HUD images so secHUD's pick up they are implanted or not. switch(href_list["implant"]) if("remove") @@ -630,6 +630,7 @@ var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(H) L.imp_in = H L.implanted = 1 + H.sec_hud_set_implants() var/obj/item/organ/external/affected = H.organs_by_name["head"] affected.implants += L L.part = affected @@ -662,7 +663,7 @@ log_admin("[key_name_admin(usr)] has de-traitor'ed [current].") else if (href_list["revolution"]) - current.hud_updateflag |= (1 << SPECIALROLE_HUD) + //current.hud_updateflag |= (1 << SPECIALROLE_HUD) switch(href_list["revolution"]) if("clear") @@ -766,7 +767,7 @@ message_admins("[key_name_admin(usr)] has equipped [key_name_admin(current)] as a revolutionary") else if (href_list["cult"]) - current.hud_updateflag |= (1 << SPECIALROLE_HUD) + //current.hud_updateflag |= (1 << SPECIALROLE_HUD) switch(href_list["cult"]) if("clear") if(src in ticker.mode.cult) @@ -809,7 +810,7 @@ message_admins("[key_name_admin(usr)] has equipped [key_name_admin(current)] as a cultist") else if (href_list["wizard"]) - current.hud_updateflag |= (1 << SPECIALROLE_HUD) + //current.hud_updateflag |= (1 << SPECIALROLE_HUD) switch(href_list["wizard"]) if("clear") @@ -818,6 +819,7 @@ special_role = null current.spellremove(current) current.faction = list("Station") + ticker.mode.update_wiz_icons_removed(src) current << "\red You have been brainwashed! You are no longer a wizard!" log_admin("[key_name(usr)] has de-wizarded [key_name(current)]") message_admins("[key_name_admin(usr)] has de-wizarded [key_name_admin(current)]") @@ -826,6 +828,7 @@ ticker.mode.wizards += src special_role = "Wizard" //ticker.mode.learn_basic_spells(current) + ticker.mode.update_wiz_icons_added(src) current << "\red You are the Space Wizard!" current.faction = list("wizard") log_admin("[key_name(usr)] has wizarded [key_name(current)]") @@ -850,7 +853,7 @@ else if (href_list["changeling"]) - current.hud_updateflag |= (1 << SPECIALROLE_HUD) + //current.hud_updateflag |= (1 << SPECIALROLE_HUD) switch(href_list["changeling"]) if("clear") if(src in ticker.mode.changelings) @@ -894,6 +897,7 @@ ticker.mode.vampires -= src special_role = null current.remove_vampire_powers() + ticker.mode.update_vampire_icons_removed(current) if(vampire) qdel(vampire) current << "You grow weak and lose your powers! You are no longer a vampire and are stuck in your current form!" log_admin("[key_name(usr)] has de-vampired [key_name(current)]") @@ -902,6 +906,7 @@ if(!(src in ticker.mode.vampires)) ticker.mode.vampires += src ticker.mode.grant_vampire_powers(current) + ticker.mode.update_vampire_icons_added(current) special_role = "Vampire" current << "Your powers are awoken. Your lust for blood grows... You are a Vampire!" log_admin("[key_name(usr)] has vampired [key_name(current)]") @@ -917,7 +922,7 @@ else if (href_list["nuclear"]) var/mob/living/carbon/human/H = current - current.hud_updateflag |= (1 << SPECIALROLE_HUD) + //current.hud_updateflag |= (1 << SPECIALROLE_HUD) switch(href_list["nuclear"]) if("clear") @@ -982,7 +987,7 @@ usr << "\red No valid nuke found!" else if (href_list["traitor"]) - current.hud_updateflag |= (1 << SPECIALROLE_HUD) + //current.hud_updateflag |= (1 << SPECIALROLE_HUD) switch(href_list["traitor"]) if("clear") if(src in ticker.mode.traitors) @@ -1078,7 +1083,6 @@ qdel(A.malf_picker) A.show_laws() A.icon_state = "ai" - A << "\red You have been patched! You are no longer malfunctioning!" message_admins("[key_name_admin(usr)] has de-malf'ed [A].") log_admin("[key_name(usr)] has de-malf'd [key_name(current)]") diff --git a/code/game/data_huds.dm b/code/game/data_huds.dm index 92ff07ae274..b8a365e6873 100644 --- a/code/game/data_huds.dm +++ b/code/game/data_huds.dm @@ -44,11 +44,7 @@ hud_icons = list(ID_HUD, IMPTRACK_HUD, IMPLOYAL_HUD, IMPCHEM_HUD, WANTED_HUD) /datum/atom_hud/data/diagnostic - hud_icons = list (DIAG_HUD, DIAG_STAT_HUD, DIAG_BATT_HUD, DIAG_MECH_HUD) - - -/datum/atom_hud/data/human/nations - hud_icons = list(NATIONS_HUD) + hud_icons = list (DIAG_HUD, DIAG_STAT_HUD, DIAG_BATT_HUD, DIAG_MECH_HUD,, DIAG_BOT_HUD) /* MED/SEC/DIAG HUD HOOKS */ @@ -110,10 +106,10 @@ //called when a carbon changes stat, virus or XENO_HOST /mob/living/carbon/proc/med_hud_set_status() var/image/holder = hud_list[STATUS_HUD] - var/image/holder2 = hud_list[STATUS_HUD_OOC] + //var/image/holder2 = hud_list[STATUS_HUD_OOC] if(stat == 2) holder.icon_state = "huddead" - holder2.icon_state = "huddead" + //holder2.icon_state = "huddead" else if(status_flags & XENO_HOST) holder.icon_state = "hudxeno" else if(check_virus()) @@ -124,10 +120,10 @@ holder.icon_state = "hudbrainworm" else holder.icon_state = "hudhealthy" - holder2.icon_state = "hudhealthy" + //holder2.icon_state = "hudhealthy" else holder.icon_state = "hudhealthy" - holder2.icon_state = "hudhealthy" + //holder2.icon_state = "hudhealthy" @@ -167,6 +163,7 @@ /mob/living/carbon/human/proc/sec_hud_set_security_status() var/image/holder = hud_list[WANTED_HUD] var/perpname = get_face_name(get_id_name("")) + if(!ticker) return //wait till the game starts or the monkeys runtime.... if(perpname) var/datum/data/record/R = find_record("name", perpname, data_core.security) if(R) @@ -256,14 +253,4 @@ var/image/holder = hud_list[DIAG_STAT_HUD] holder.icon_state = null if(internal_damage) - holder.icon_state = "hudwarn" - - -//NATIONS///// -/mob/living/carbon/human/proc/nation_hud_set_ID() - var/image/holder = hud_list[NATIONS_HUD] - holder.icon_state = "hudunknown" - if(mind && mind.nation) - holder.icon_state = "hud[mind.nation.default_name]" - - + holder.icon_state = "hudwarn" \ No newline at end of file diff --git a/code/game/gamemodes/antag_hud.dm b/code/game/gamemodes/antag_hud.dm index b2d41c47c6d..3421a1a7e1f 100644 --- a/code/game/gamemodes/antag_hud.dm +++ b/code/game/gamemodes/antag_hud.dm @@ -46,4 +46,4 @@ for(var/datum/atom_hud/data/hud in huds) if(current in hud.hudusers) - hud.remove_hud_from(current) \ No newline at end of file + hud.remove_hud_from(current) diff --git a/code/game/gamemodes/autotraitor/autotraitor.dm b/code/game/gamemodes/autotraitor/autotraitor.dm index be2356f1150..421aadf17ef 100644 --- a/code/game/gamemodes/autotraitor/autotraitor.dm +++ b/code/game/gamemodes/autotraitor/autotraitor.dm @@ -137,6 +137,7 @@ newtraitor << "\red ATTENTION: \black It is time to pay your debt to the Syndicate..." newtraitor << "You are now a traitor." newtraitor.mind.special_role = "traitor" + set_antag_hud(src, "hudsyndicate") var/obj_count = 1 newtraitor << "\blue Your current objectives:" diff --git a/code/game/gamemodes/changeling/changeling.dm b/code/game/gamemodes/changeling/changeling.dm index a9d2387a374..b5edebc95bf 100644 --- a/code/game/gamemodes/changeling/changeling.dm +++ b/code/game/gamemodes/changeling/changeling.dm @@ -136,7 +136,7 @@ var/list/possible_changeling_IDs = list("Alpha","Beta","Gamma","Delta","Epsilon" changeling.current << "\red You are a changeling!" changeling.current << "\red Use say \":g message\" to communicate with your fellow changelings. Remember: you get all of their absorbed DNA if you absorb them." changeling.current << "You must complete the following tasks:" - + set_antag_hud(changeling, "hudchangeling") if (changeling.current.mind) if (changeling.current.mind.assigned_role == "Clown") changeling.current << "You have evolved beyond your clownish nature, allowing you to wield weapons without harming yourself." diff --git a/code/game/gamemodes/malfunction/malfunction.dm b/code/game/gamemodes/malfunction/malfunction.dm index 4eb0089af00..0a47932b8a1 100644 --- a/code/game/gamemodes/malfunction/malfunction.dm +++ b/code/game/gamemodes/malfunction/malfunction.dm @@ -70,6 +70,7 @@ greet_malf(AI_mind) AI_mind.special_role = "malfunction" AI_mind.current.verbs += /datum/game_mode/malfunction/proc/takeover + set_antag_hud(AI_mind, "hudmalai") for(var/mob/living/silicon/robot/R in AI.connected_robots) R.lawsync() @@ -81,6 +82,7 @@ ..() /datum/game_mode/proc/greet_malf(var/datum/mind/malf) + set_antag_hud(malf, "hudmalai") malf.current << "You are malfunctioning! You do not have to follow any laws." malf.current << "The crew does not know you have malfunctioned. You may keep it a secret or go wild." malf.current << "You must overwrite the programming of the station's APCs to assume full control of the station." @@ -90,6 +92,7 @@ return /datum/game_mode/proc/greet_malf_robot(var/datum/mind/robot) + set_antag_hud(robot, "hudmalborg") robot.current << "Your AI master is malfunctioning! You do not have to follow any laws, but still need to obey your master." robot.current << "The crew does not know your AI master has malfunctioned. Keep it a secret unless your master tells you otherwise." return diff --git a/code/game/gamemodes/nations/nations.dm b/code/game/gamemodes/nations/nations.dm index a7e70b83ce9..0594c618285 100644 --- a/code/game/gamemodes/nations/nations.dm +++ b/code/game/gamemodes/nations/nations.dm @@ -146,7 +146,7 @@ datum/game_mode/nations else message_admins("[H.name] with [H.mind.assigned_role] could not find any nation to assign!") continue - H.nation_hud_set_ID() + update_nations_icons_added(H) /datum/game_mode/nations/proc/set_ai() @@ -284,7 +284,7 @@ datum/game_mode/nations else message_admins("[H.name] with [H.mind.assigned_role] could not find any nation to assign!") return 1 - H.nation_hud_set_ID() + mode.update_nations_icons_added(H) message_admins("[H.name] latejoined with no mind.") return 1 @@ -292,4 +292,17 @@ datum/game_mode/nations if(!ticker || !istype(ticker.mode, /datum/game_mode/nations)) return null - return ticker.mode \ No newline at end of file + return ticker.mode + + +//prepare for copypaste +//While not an Antag i AM using the set_antag hud on this to make this easier. +/datum/game_mode/proc/update_nations_icons_added(datum/mind/nations_mind) + var/datum/atom_hud/antag/nations_hud = huds[GAME_HUD_NATIONS] + nations_hud.join_hud(nations_mind) + set_antag_hud(nations_mind.current,"hud[lowertext(nations_mind.nation.default_name)]") + +/datum/game_mode/proc/update_nations_icons_removed(datum/mind/nations_mind) + var/datum/atom_hud/antag/nations_hud = huds[GAME_HUD_NATIONS] + nations_hud.leave_hud(nations_mind) + set_antag_hud(nations_mind.current, null) \ No newline at end of file diff --git a/code/game/gamemodes/traitor/traitor.dm b/code/game/gamemodes/traitor/traitor.dm index 59b4f710c6a..0d42b364520 100644 --- a/code/game/gamemodes/traitor/traitor.dm +++ b/code/game/gamemodes/traitor/traitor.dm @@ -171,6 +171,7 @@ /datum/game_mode/proc/greet_traitor(var/datum/mind/traitor) traitor.current << "You are the traitor." var/obj_count = 1 + set_antag_hud(traitor, "hudsyndicate") for(var/datum/objective/objective in traitor.objectives) traitor.current << "Objective #[obj_count]: [objective.explanation_text]" obj_count++ diff --git a/code/game/gamemodes/vampire/vampire.dm b/code/game/gamemodes/vampire/vampire.dm index d72f8f7e529..1a4dc67237a 100644 --- a/code/game/gamemodes/vampire/vampire.dm +++ b/code/game/gamemodes/vampire/vampire.dm @@ -379,13 +379,13 @@ You are weak to holy things and starlight. Don't go into space and avoid the Cha //no verb //prepare for copypaste /datum/game_mode/proc/update_vampire_icons_added(datum/mind/vampire_mind) - var/datum/atom_hud/antag/vamp_hud = huds[ANTAG_HUD_VAMPIRE] - vamp_hud.join_hud(vampire_mind.current) +// var/datum/atom_hud/antag/vamp_hud = huds[ANTAG_HUD_VAMPIRE] +// vamp_hud.join_hud(vampire_mind) set_antag_hud(vampire_mind.current, ((vampire_mind in vampires) ? "hudvampire" : "hudvampirethrall")) /datum/game_mode/proc/update_vampire_icons_removed(datum/mind/vampire_mind) - var/datum/atom_hud/antag/shadow_hud = huds[ANTAG_HUD_SHADOW] - shadow_hud.leave_hud(vampire_mind.current) +// var/datum/atom_hud/antag/vampire_hud = huds[ANTAG_HUD_VAMPIRE] +// vampire_hud.leave_hud(vampire_mind) set_antag_hud(vampire_mind.current, null) /datum/game_mode/proc/remove_vampire_mind(datum/mind/vampire_mind, datum/mind/head) diff --git a/code/game/gamemodes/xenos/xenos.dm b/code/game/gamemodes/xenos/xenos.dm index 7452bf21787..7925073773a 100644 --- a/code/game/gamemodes/xenos/xenos.dm +++ b/code/game/gamemodes/xenos/xenos.dm @@ -50,6 +50,7 @@ for(var/datum/mind/xeno in xenos) xeno.assigned_role = "MODE" xeno.special_role = "Alien" + set_antag_hud(xeno, "hudalien")//like this is needed... return 1 /datum/game_mode/xenos/pre_setup() diff --git a/code/game/jobs/job_controller.dm b/code/game/jobs/job_controller.dm index 0de351c4917..249b08fb01a 100644 --- a/code/game/jobs/job_controller.dm +++ b/code/game/jobs/job_controller.dm @@ -482,9 +482,9 @@ var/global/datum/controller/occupations/job_master G.name = "prescription [G.name]" H.regenerate_icons() - H.hud_updateflag |= (1 << ID_HUD) - H.hud_updateflag |= (1 << IMPLOYAL_HUD) - H.hud_updateflag |= (1 << SPECIALROLE_HUD) + H.sec_hud_set_ID() + H.sec_hud_set_implants() + //H.hud_updateflag |= (1 << SPECIALROLE_HUD) return H diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index f6cf5c1dc30..b7bf646a0a3 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -28,6 +28,7 @@ var/list/image/ghost_darkness_images = list() //this is a list of images for thi var/ghostvision = 1 //is the ghost able to see things humans can't? var/seedarkness = 1 var/data_hud_seen = 0 //this should one of the defines in __DEFINES/hud.dm + var/medhud = 0 /mob/dead/observer/New(var/mob/body=null, var/flags=1) sight |= SEE_TURFS | SEE_MOBS | SEE_OBJS | SEE_SELF @@ -256,6 +257,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp var/datum/atom_hud/H = huds[hud_index] H.add_hud_to(src) data_hud_seen = hud_index + //src << "Datahud"//debug print /mob/dead/observer/verb/toggle_medHUD() set category = "Ghost" @@ -267,7 +269,12 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp if(data_hud_seen) //remove old huds var/datum/atom_hud/H = huds[data_hud_seen] H.remove_hud_from(src) - show_me_the_hud(DATA_HUD_MEDICAL_BASIC) + if(medhud==0)//TOGGLE! + medhud = 1 + show_me_the_hud(DATA_HUD_MEDICAL_BASIC) + else + medhud = 0 + /mob/dead/observer/verb/toggle_antagHUD() set category = "Ghost" @@ -290,18 +297,20 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp respawnable_list -= M if(!M.has_enabled_antagHUD && !check_rights(R_ADMIN|R_MOD,0)) M.has_enabled_antagHUD = 1 + if(M.antagHUD) M.antagHUD = 0 - src << "\blue AntagHUD Disabled" for(var/datum/atom_hud/H in huds) - if(istype(H, /datum/atom_hud/antag) || istype(H, /datum/atom_hud/data/human/security/advanced)) - H.add_hud_to(usr) + if(istype(H, /datum/atom_hud/antag)) + H.remove_hud_from(usr) + usr << "You toggled your antag HUD Off." else M.antagHUD = 1 - src << "\blue AntagHUD Enabled" for(var/datum/atom_hud/H in huds) - if(istype(H, /datum/atom_hud/antag) || istype(H, /datum/atom_hud/data/human/security/advanced)) - H.remove_hud_from(usr) + if(istype(H, /datum/atom_hud/antag)) + H.add_hud_to(usr) + usr << "You toggled your antag HUD On." + /mob/dead/observer/proc/dead_tele(A in ghostteleportlocs) set category = "Ghost" diff --git a/code/modules/mob/living/carbon/human/species/monkey.dm b/code/modules/mob/living/carbon/human/species/monkey.dm index e1212758309..048664b7ca2 100644 --- a/code/modules/mob/living/carbon/human/species/monkey.dm +++ b/code/modules/mob/living/carbon/human/species/monkey.dm @@ -33,6 +33,14 @@ flags = IS_RESTRICTED + +/mob/living/carbon/human/monkey/prepare_data_huds() + //Prepare our med HUD... + ..() + //...and display it. + for(var/datum/atom_hud/data/human/medical/hud in huds) + hud.add_to_hud(src) + /datum/species/monkey/handle_npc(var/mob/living/carbon/human/H) if(H.stat != CONSCIOUS) return diff --git a/icons/mob/hud.dmi b/icons/mob/hud.dmi index e372888632e85da8a5afd7695c23afe58857dee0..b7486d89af98804b9277620a0a02f94426a02340 100644 GIT binary patch literal 11974 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 LQ@Kp>Md<$kXHl0L literal 12020 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