Files
Bubberstation/code/datums/hud.dm
EdgeLordExe b237791423 HERETICS: Solo Antagonist that grows with power (#51199)
* 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>
2020-06-14 18:10:16 +02:00

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