Spells are now restored when cloning.

This commit is contained in:
PsiOmegaDelta
2015-07-02 12:55:12 +02:00
parent 616b4b60e4
commit 1c7b860783
2 changed files with 17 additions and 2 deletions

View File

@@ -96,7 +96,7 @@ var/datum/antagonist/wizard/wizards
world << "<span class='danger'><font size = 3>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!</font></span>"
//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)

View File

@@ -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)