Files
CHOMPStation2/code/modules/spells/spells.dm
CHOMPStation2 4d9879937f [MIRROR] Port tg statpanel (#9242)
Co-authored-by: ShadowLarkens <shadowlarkens@gmail.com>
Co-authored-by: Kashargul <KashL@t-online.de>
2024-10-17 23:29:59 +02:00

90 lines
2.7 KiB
Plaintext

/datum/mind
var/list/learned_spells
/mob/Life()
..()
if(spell_masters && spell_masters.len)
for(var/obj/screen/movable/spell_master/spell_master in spell_masters)
spell_master.update_spells(0, src)
/mob/Login()
..()
if(spell_masters)
for(var/obj/screen/movable/spell_master/spell_master in spell_masters)
spell_master.toggle_open(1)
client.screen -= spell_master
// TODO: Investigate if this matters
// /mob/Stat()
// . = ..()
// if(. && spell_list && spell_list.len)
// for(var/spell/S in spell_list)
// if((!S.connected_button) || !statpanel(S.panel))
// continue //Not showing the noclothes spell
// switch(S.charge_type)
// if(Sp_RECHARGE)
// statpanel(S.panel,"[S.charge_counter/10.0]/[S.charge_max/10]",S.connected_button)
// if(Sp_CHARGES)
// statpanel(S.panel,"[S.charge_counter]/[S.charge_max]",S.connected_button)
// if(Sp_HOLDVAR)
// statpanel(S.panel,"[S.holder_var_type] [S.holder_var_amount]",S.connected_button)
/hook/clone/proc/restore_spells(var/mob/H)
if(H.mind && H.mind.learned_spells)
for(var/spell/spell_to_add in H.mind.learned_spells)
H.add_spell(spell_to_add)
/mob/proc/add_spell(var/spell/spell_to_add, var/spell_base = "wiz_spell_ready", var/master_type = /obj/screen/movable/spell_master)
if(!spell_masters)
spell_masters = list()
if(spell_masters.len)
for(var/obj/screen/movable/spell_master/spell_master in spell_masters)
if(spell_master.type == master_type)
spell_list.Add(spell_to_add)
spell_master.add_spell(spell_to_add)
return 1
var/obj/screen/movable/spell_master/new_spell_master = new master_type //we're here because either we didn't find our type, or we have no spell masters to attach to
if(client)
src.client.screen += new_spell_master
new_spell_master.spell_holder = src
new_spell_master.add_spell(spell_to_add)
if(spell_base)
new_spell_master.icon_state = spell_base
spell_masters.Add(new_spell_master)
spell_list.Add(spell_to_add)
if(mind)
if(!mind.learned_spells)
mind.learned_spells = list()
mind.learned_spells += spell_to_add
return 1
/mob/proc/remove_spell(var/spell/spell_to_remove)
if(!spell_to_remove || !istype(spell_to_remove))
return
if(!(spell_to_remove in spell_list))
return
if(!spell_masters || !spell_masters.len)
return
if(mind && mind.learned_spells)
mind.learned_spells.Remove(spell_to_remove)
spell_list.Remove(spell_to_remove)
for(var/obj/screen/movable/spell_master/spell_master in spell_masters)
spell_master.remove_spell(spell_to_remove)
return 1
/mob/proc/silence_spells(var/amount = 0)
if(!(amount >= 0))
return
if(!spell_masters || !spell_masters.len)
return
for(var/obj/screen/movable/spell_master/spell_master in spell_masters)
spell_master.silence_spells(amount)