diff --git a/code/game/antagonist/outsider/wizard.dm b/code/game/antagonist/outsider/wizard.dm index 74866d9247..57a00adfdd 100644 --- a/code/game/antagonist/outsider/wizard.dm +++ b/code/game/antagonist/outsider/wizard.dm @@ -96,7 +96,7 @@ var/datum/antagonist/wizard/wizards world << "The [(current_antagonists.len>1)?"[role_text_plural] have":"[role_text] has"] been killed by the crew! The Space Wizards Federation has been taught a lesson they will not soon forget!" //To batch-remove wizard spells. Linked to mind.dm. -/mob/proc/spellremove(var/mob/M as mob) +/mob/proc/spellremove() for(var/spell/spell_to_remove in src.spell_list) remove_spell(spell_to_remove) diff --git a/code/modules/spells/spells.dm b/code/modules/spells/spells.dm index 2e7ee7b815..45895ad5b3 100644 --- a/code/modules/spells/spells.dm +++ b/code/modules/spells/spells.dm @@ -1,3 +1,6 @@ +/datum/mind + var/list/learned_spells + /mob/Life() ..() if(spell_masters && spell_masters.len) @@ -25,6 +28,11 @@ 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() @@ -36,7 +44,7 @@ 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 + var/obj/screen/movable/spell_master/new_spell_master = PoolOrNew(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 @@ -45,6 +53,11 @@ 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) @@ -57,6 +70,8 @@ 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)