mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-02-06 06:19:24 +00:00
* basic antag items hey based game is on ree e brings back good sprites eueuuee eeeeeeeeeeeeeeeeeeee more tgui baby FINALLY e Small changes adds better point s Finishing touch! FINISHED ANTAG FINISHED. FUCKING. FINALLY grammer E E? * rebuilt tgui * gamemode fixes * i love inconsistent var names * sprootes * ath review Co-authored-by: ATH1909 <42606352+ATH1909@users.noreply.github.com> * Automatic changelog compile [ci skip] * a shit ton of changes * Apply suggestions from code review Co-authored-by: Qustinnus <Floydje123@hotmail.com> Co-authored-by: ATH1909 <42606352+ATH1909@users.noreply.github.com> * sprootes * more changes ree * Fixes and upgrades * sprootes done * dmdoc compliance * Apply suggestions from code review Co-authored-by: Rohesie <rohesie@gmail.com> * Apply suggestions from code review Co-authored-by: Rohesie <rohesie@gmail.com> * mewtewnew revieww ~~ * e * Automatic changelog compile [ci skip] * e * Apply suggestions from code review Co-authored-by: Rohesie <rohesie@gmail.com> * E * autodoc * E * Apply suggestions from code review Co-authored-by: Rohesie <rohesie@gmail.com> * removed Destroy() * * 0.5 * bugsquash * e * changes to ashlord's rite * e e * e? * the fuck * adds station wide alerts for ascension events * fixes an autodoc * tgui * e e * removes a redundant line of code * sickly blade is now normal size item * changes a line of code in flesh * no revives for ghouls! * uwu * Update code/modules/antagonists/eldritch_cult/eldritch_knowledge.dm Co-authored-by: nemvar <47324920+nemvar@users.noreply.github.com> * E * E2 * Automatic changelog compile [ci skip] * Makes eldritch cult into HERETICS * Apply suggestions from code review Co-authored-by: Rohesie <rohesie@gmail.com> * E * unfucks medallions code * long live list loops * E * E * i love my git crashing * Magics * E * removes TRAIT_GHOUL since it was redundant * Update code/modules/mob/living/carbon/inventory.dm Co-authored-by: Rohesie <rohesie@gmail.com> * Update code/modules/mob/living/carbon/inventory.dm Co-authored-by: Rohesie <rohesie@gmail.com> * Update code/modules/mob/living/carbon/human/species.dm Co-authored-by: Rohesie <rohesie@gmail.com> * Update code/modules/mob/living/carbon/human/species.dm Co-authored-by: Rohesie <rohesie@gmail.com> * Update code/modules/mob/living/carbon/human/human_update_icons.dm Co-authored-by: Rohesie <rohesie@gmail.com> * fixies uwu * hopefully i fixed all return ..() * E * EEEEEEE * wormie now is refactored * removes destroy * Update code/modules/surgery/bodyparts/bodyparts.dm Co-authored-by: Rohesie <rohesie@gmail.com> * Automatic changelog compile [ci skip] * Update code/modules/mob/living/simple_animal/eldritch_demons.dm Co-authored-by: Rohesie <rohesie@gmail.com> * Update code/modules/antagonists/eldritch_cult/knowledge/rust_lore.dm Co-authored-by: Rohesie <rohesie@gmail.com> * Update code/modules/antagonists/eldritch_cult/knowledge/rust_lore.dm Co-authored-by: Rohesie <rohesie@gmail.com> * E * E * Update code/modules/mob/living/simple_animal/eldritch_demons.dm Co-authored-by: Rohesie <rohesie@gmail.com> * Update code/modules/antagonists/eldritch_cult/knowledge/rust_lore.dm Co-authored-by: Rohesie <rohesie@gmail.com> * Update code/modules/mob/living/simple_animal/eldritch_demons.dm Co-authored-by: Rohesie <rohesie@gmail.com> * Update code/modules/mob/living/simple_animal/eldritch_demons.dm Co-authored-by: Rohesie <rohesie@gmail.com> * E * E? * E * one more * k * OH SHIT OH FUCK * replaces ROLE_ECULT with ROLE_HERETIC and fixes preferences * REE * fleshy fixes * fixes summonings * REE * texture fix * fixes a stupid fucking runtime that i noticed coz i forgot people can be borged. FUCK * grammer * nullrods can now remove runes * HOLY SHIT, HOTFIX NERF * E * E * TEMPORARY SOLUTION TO MAKE HERETICS SPAWN NATURALLY * Update code/modules/antagonists/eldritch_cult/eldritch_antag.dm Co-authored-by: Rohesie <rohesie@gmail.com> * Update code/modules/antagonists/eldritch_cult/eldritch_book.dm Co-authored-by: Rohesie <rohesie@gmail.com> * Update code/modules/antagonists/eldritch_cult/eldritch_effects.dm Co-authored-by: Rohesie <rohesie@gmail.com> * Update code/modules/antagonists/eldritch_cult/eldritch_items.dm Co-authored-by: Rohesie <rohesie@gmail.com> * SECOND TEMPORARY FIX * fixes fixes fixes fixes * i hope this no longer will qdel summons * E * please push this asap * E * buffs sickly blade to 17 damage and only allowes culties to use it * Explanations uwu * examine changes ree * e * E * ) * E * E * Ash fix * changes to mad touch * replaces e_cult with heretics and fixes protect objective to suceed when someone suicides * E * makes worm code use COMSIG_MOVABLE_MOVED * replaces bad var names * makes eldritch knowledge an assoc list * E * Update code/modules/mob/living/simple_animal/eldritch_demons.dm Co-authored-by: Rohesie <rohesie@gmail.com> * what the fuck * the fuck * fixies * EEE * fixes * e * fixes * mansus grasp slight buff * changes overall changes * E * logging * changes the eldritch armor into a nicer looking kryson robes * tgui bundle * QOL sprites and a spell to contract armsy * SPRITES * readds rust floors * Fixes pointed out by anturk * E * E * E * Apply suggestions from code review Co-authored-by: Rohesie <rohesie@gmail.com> * Cleanup * Fixes * E * EEEEEEEEEEE * makes heretics a little bit more common * Update code/modules/antagonists/eldritch_cult/knowledge/flesh_lore.dm Co-authored-by: Rohesie <rohesie@gmail.com> * EEE * eee * E * E * Init * Makes shit more readable * h * e * E * wounds compatibility patch * hnng * rusty better sprite * turn * Apply suggestions from code review Co-authored-by: Aleksej Komarov <stylemistake@gmail.com> * E * further renames e * E * JS side * changes reee * e * E * yeesh * e * E * pr * e * E * changes re * AAAAAAAAAAAAAA * e * antag huud * e * e * hnnng * hnng * HNNNNG final patch - LAST TESTMERGABLE COMMIT * HNNG NEVERMIND THIS IS THE LAST TESTMERGABLE COMMIT DONT LISTEN TO LIES BELOW * e * FINAL PATCH - MERGE READY Adds defines, buffs blood siphon a bit so it can utilize wounds and replaces ROLE_CULTIST with ROLE_HERETIC * forgot about a single debug line aaa * hnnnhng * hng * a! * aaa * applies code review * e Co-authored-by: ATH1909 <42606352+ATH1909@users.noreply.github.com> Co-authored-by: Changelogs <action@github.com> Co-authored-by: Qustinnus <Floydje123@hotmail.com> Co-authored-by: Rohesie <rohesie@gmail.com> Co-authored-by: nemvar <47324920+nemvar@users.noreply.github.com> Co-authored-by: Aleksej Komarov <stylemistake@gmail.com>
149 lines
5.0 KiB
Plaintext
149 lines
5.0 KiB
Plaintext
/* HUD DATUMS */
|
|
|
|
GLOBAL_LIST_EMPTY(all_huds)
|
|
|
|
//GLOBAL HUD LIST
|
|
GLOBAL_LIST_INIT(huds, list(
|
|
DATA_HUD_SECURITY_BASIC = new/datum/atom_hud/data/human/security/basic(),
|
|
DATA_HUD_SECURITY_ADVANCED = new/datum/atom_hud/data/human/security/advanced(),
|
|
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_BASIC = new/datum/atom_hud/data/diagnostic/basic(),
|
|
DATA_HUD_DIAGNOSTIC_ADVANCED = new/datum/atom_hud/data/diagnostic/advanced(),
|
|
DATA_HUD_ABDUCTOR = new/datum/atom_hud/abductor(),
|
|
DATA_HUD_SENTIENT_DISEASE = new/datum/atom_hud/sentient_disease(),
|
|
DATA_HUD_AI_DETECT = new/datum/atom_hud/ai_detector(),
|
|
DATA_HUD_FAN = new/datum/atom_hud/data/human/fan_hud(),
|
|
ANTAG_HUD_CULT = new/datum/atom_hud/antag(),
|
|
ANTAG_HUD_REV = new/datum/atom_hud/antag(),
|
|
ANTAG_HUD_OPS = new/datum/atom_hud/antag(),
|
|
ANTAG_HUD_WIZ = new/datum/atom_hud/antag(),
|
|
ANTAG_HUD_SHADOW = new/datum/atom_hud/antag(),
|
|
ANTAG_HUD_TRAITOR = new/datum/atom_hud/antag/hidden(),
|
|
ANTAG_HUD_NINJA = new/datum/atom_hud/antag/hidden(),
|
|
ANTAG_HUD_CHANGELING = new/datum/atom_hud/antag/hidden(),
|
|
ANTAG_HUD_ABDUCTOR = new/datum/atom_hud/antag/hidden(),
|
|
ANTAG_HUD_DEVIL = new/datum/atom_hud/antag(),
|
|
ANTAG_HUD_SINTOUCHED = new/datum/atom_hud/antag/hidden(),
|
|
ANTAG_HUD_SOULLESS = new/datum/atom_hud/antag/hidden(),
|
|
ANTAG_HUD_BROTHER = new/datum/atom_hud/antag/hidden(),
|
|
ANTAG_HUD_OBSESSED = new/datum/atom_hud/antag/hidden(),
|
|
ANTAG_HUD_FUGITIVE = new/datum/atom_hud/antag(),
|
|
ANTAG_HUD_GANGSTER = new/datum/atom_hud/antag/hidden(),
|
|
ANTAG_HUD_SPACECOP = new/datum/atom_hud/antag(),
|
|
ANTAG_HUD_HERETIC = new/datum/atom_hud/antag/hidden()
|
|
))
|
|
|
|
/datum/atom_hud
|
|
var/list/atom/hudatoms = list() //list of all atoms which display this hud
|
|
var/list/hudusers = list() //list with all mobs who can see the hud
|
|
var/list/hud_icons = list() //these will be the indexes for the atom's hud_list
|
|
|
|
var/list/next_time_allowed = list() //mobs associated with the next time this hud can be added to them
|
|
var/list/queued_to_see = list() //mobs that have triggered the cooldown and are queued to see the hud, but do not yet
|
|
var/hud_exceptions = list() // huduser = list(ofatomswiththeirhudhidden) - aka everyone hates targeted invisiblity
|
|
|
|
/datum/atom_hud/New()
|
|
GLOB.all_huds += src
|
|
|
|
/datum/atom_hud/Destroy()
|
|
for(var/v in hudusers)
|
|
remove_hud_from(v)
|
|
for(var/v in hudatoms)
|
|
remove_from_hud(v)
|
|
GLOB.all_huds -= src
|
|
return ..()
|
|
|
|
/datum/atom_hud/proc/remove_hud_from(mob/M)
|
|
if(!M || !hudusers[M])
|
|
return
|
|
if (!--hudusers[M])
|
|
hudusers -= M
|
|
if(queued_to_see[M])
|
|
queued_to_see -= M
|
|
else
|
|
for(var/atom/A in hudatoms)
|
|
remove_from_single_hud(M, A)
|
|
|
|
/datum/atom_hud/proc/remove_from_hud(atom/A)
|
|
if(!A)
|
|
return FALSE
|
|
for(var/mob/M in hudusers)
|
|
remove_from_single_hud(M, A)
|
|
hudatoms -= A
|
|
return TRUE
|
|
|
|
/datum/atom_hud/proc/remove_from_single_hud(mob/M, atom/A) //unsafe, no sanity apart from client
|
|
if(!M || !M.client || !A)
|
|
return
|
|
for(var/i in hud_icons)
|
|
M.client.images -= A.hud_list[i]
|
|
|
|
/datum/atom_hud/proc/add_hud_to(mob/M)
|
|
if(!M)
|
|
return
|
|
if(!hudusers[M])
|
|
hudusers[M] = 1
|
|
if(next_time_allowed[M] > world.time)
|
|
if(!queued_to_see[M])
|
|
addtimer(CALLBACK(src, .proc/show_hud_images_after_cooldown, M), next_time_allowed[M] - world.time)
|
|
queued_to_see[M] = TRUE
|
|
else
|
|
next_time_allowed[M] = world.time + ADD_HUD_TO_COOLDOWN
|
|
for(var/atom/A in hudatoms)
|
|
add_to_single_hud(M, A)
|
|
else
|
|
hudusers[M]++
|
|
|
|
/datum/atom_hud/proc/hide_single_atomhud_from(hud_user,hidden_atom)
|
|
if(hudusers[hud_user])
|
|
remove_from_single_hud(hud_user,hidden_atom)
|
|
if(!hud_exceptions[hud_user])
|
|
hud_exceptions[hud_user] = list(hidden_atom)
|
|
else
|
|
hud_exceptions[hud_user] += hidden_atom
|
|
|
|
/datum/atom_hud/proc/unhide_single_atomhud_from(hud_user,hidden_atom)
|
|
hud_exceptions[hud_user] -= hidden_atom
|
|
if(hudusers[hud_user])
|
|
add_to_single_hud(hud_user,hidden_atom)
|
|
|
|
/datum/atom_hud/proc/show_hud_images_after_cooldown(M)
|
|
if(queued_to_see[M])
|
|
queued_to_see -= M
|
|
next_time_allowed[M] = world.time + ADD_HUD_TO_COOLDOWN
|
|
for(var/atom/A in hudatoms)
|
|
add_to_single_hud(M, A)
|
|
|
|
/datum/atom_hud/proc/add_to_hud(atom/A)
|
|
if(!A)
|
|
return FALSE
|
|
hudatoms |= A
|
|
for(var/mob/M in hudusers)
|
|
if(!queued_to_see[M])
|
|
add_to_single_hud(M, A)
|
|
return TRUE
|
|
|
|
/datum/atom_hud/proc/add_to_single_hud(mob/M, atom/A) //unsafe, no sanity apart from client
|
|
if(!M || !M.client || !A)
|
|
return
|
|
for(var/i in hud_icons)
|
|
if(A.hud_list[i] && (!hud_exceptions[M] || !(A in hud_exceptions[M])))
|
|
M.client.images |= A.hud_list[i]
|
|
|
|
//MOB PROCS
|
|
/mob/proc/reload_huds()
|
|
for(var/datum/atom_hud/hud in GLOB.all_huds)
|
|
if(hud && hud.hudusers[src])
|
|
for(var/atom/A in hud.hudatoms)
|
|
hud.add_to_single_hud(src, A)
|
|
|
|
/mob/dead/new_player/reload_huds()
|
|
return
|
|
|
|
/mob/proc/add_click_catcher()
|
|
client.screen += client.void
|
|
|
|
/mob/dead/new_player/add_click_catcher()
|
|
return
|