diff --git a/code/datums/spells/charge.dm b/code/datums/spells/charge.dm
index e7225997815..36e253f8e91 100644
--- a/code/datums/spells/charge.dm
+++ b/code/datums/spells/charge.dm
@@ -1,6 +1,6 @@
/obj/effect/proc_holder/spell/targeted/charge
name = "Charge"
- desc = "This spell can be used to charge up spent magical artifacts, among other things."
+ desc = "This spell can be used to recharge a variety of things in your hands, from magical artifacts to electrical components. A creative wizard can even use it to grant magical power to a fellow magic user."
school = "transmutation"
charge_max = 600
@@ -8,38 +8,45 @@
invocation = "DIRI CEL"
invocation_type = "whisper"
range = -1
-// cooldown_min = 400 //50 deciseconds reduction per rank
+ cooldown_min = 400 //50 deciseconds reduction per rank
include_user = 1
-/obj/effect/proc_holder/spell/targeted/charge/cast(list/targets)
- for(var/mob/living/user in targets)
- var/list/hand_items = list(user.get_active_hand(),user.get_inactive_hand())
+/obj/effect/proc_holder/spell/targeted/charge/cast(list/targets,mob/user = usr)
+ for(var/mob/living/L in targets)
+ var/list/hand_items = list(L.get_active_hand(),L.get_inactive_hand())
var/charged_item = null
var/burnt_out = 0
+
+ if(L.pulling && (istype(L.pulling, /mob/living)))
+ var/mob/living/M = L.pulling
+ if(M.spell_list.len != 0 || (M.mind && M.mind.spell_list.len != 0))
+ for(var/obj/effect/proc_holder/spell/S in M.spell_list)
+ S.charge_counter = S.charge_max
+ if(M.mind)
+ for(var/obj/effect/proc_holder/spell/S in M.mind.spell_list)
+ S.charge_counter = S.charge_max
+ M <<"you feel raw magic flowing through you, it feels good!"
+ else
+ M <<"you feel very strange for a moment, but then it passes."
+ burnt_out = 1
+ charged_item = M
+ break
for(var/obj/item in hand_items)
- if(istype(item, /obj/item/weapon/grab))
- var/obj/item/weapon/grab/G = item
- if(G.affecting)
- var/mob/M = G.affecting
- if(M.spell_list.len != 0)
- for(var/obj/effect/proc_holder/spell/S in M.spell_list)
- S.charge_counter = S.charge_max
- M <<"you feel raw magic flowing through you, it feels good!"
+ if(istype(item, /obj/item/weapon/spellbook))
+ if(istype(item, /obj/item/weapon/spellbook/oneuse))
+ var/obj/item/weapon/spellbook/oneuse/I = item
+ if(prob(80))
+ L.visible_message("[I] catches fire!")
+ qdel(I)
else
- M <<"you feel very strange for a moment, but then it passes."
- burnt_out = 1
- charged_item = M
- break
- else if(istype(item, /obj/item/weapon/spellbook/oneuse))
- var/obj/item/weapon/spellbook/oneuse/I = item
- if(prob(80))
- user.visible_message("[I] catches fire!")
- qdel(I)
+ I.used = 0
+ charged_item = I
+ break
else
- I.used = 0
- charged_item = I
- break
+ L << "Glowing red letters appear on the front cover..."
+ L << "[pick("NICE TRY BUT NO!","CLEVER BUT NOT CLEVER ENOUGH!", "SUCH FLAGRANT CHEESING IS WHY WE ACCEPTED YOUR APPLICATION!", "CUTE!", "YOU DIDN'T THINK IT'D BE THAT EASY, DID YOU?")]"
+ burnt_out = 1
else if(istype(item, /obj/item/weapon/gun/magic))
var/obj/item/weapon/gun/magic/I = item
if(prob(80) && !I.can_charge)
@@ -78,8 +85,8 @@
charged_item = item
break
if(!charged_item)
- user << "you feel magical power surging to your hands, but the feeling rapidly fades..."
+ L << "you feel magical power surging to your hands, but the feeling rapidly fades..."
else if(burnt_out)
- user << "[charged_item] doesn't seem to be reacting to the spell..."
+ L << "[charged_item] doesn't seem to be reacting to the spell..."
else
- user << "[charged_item] suddenly feels very warm!"
+ L << "[charged_item] suddenly feels very warm!"
\ No newline at end of file
diff --git a/code/datums/spells/knock.dm b/code/datums/spells/knock.dm
index cd02d85c90b..e2be52fb7db 100644
--- a/code/datums/spells/knock.dm
+++ b/code/datums/spells/knock.dm
@@ -22,4 +22,11 @@
var/obj/machinery/door/airlock/A = door
A.unlock(1) //forced because it's magic!
door.open()
+ for(var/obj/structure/closet/C in T.contents)
+ spawn(1)
+ if(istype(C, /obj/structure/closet/secure_closet))
+ var/obj/structure/closet/secure_closet/SC = C
+ SC.locked = 0
+ C.open()
+
return
\ No newline at end of file
diff --git a/code/datums/spells/wizard.dm b/code/datums/spells/wizard.dm
index 03aa46653a9..848a2e86a89 100644
--- a/code/datums/spells/wizard.dm
+++ b/code/datums/spells/wizard.dm
@@ -3,12 +3,12 @@
desc = "This spell fires several, slow moving, magic projectiles at nearby targets."
school = "evocation"
- charge_max = 150
+ charge_max = 200
clothes_req = 1
invocation = "FORTI GY AMA"
invocation_type = "shout"
range = 7
- cooldown_min = 90 //15 deciseconds reduction per rank
+ cooldown_min = 60 //35 deciseconds reduction per rank
max_targets = 0
@@ -28,7 +28,6 @@
/obj/effect/proc_holder/spell/targeted/inflict_handler/magic_missile
amt_weakened = 3
- amt_dam_fire = 10
/obj/effect/proc_holder/spell/noclothes
name = "No Clothes"
@@ -225,7 +224,7 @@
amt_eye_blurry = 20
/obj/effect/proc_holder/spell/targeted/genetic/blind
- disabilities = 1
+ disabilities = BLIND
duration = 300
/obj/effect/proc_holder/spell/dumbfire/fireball
@@ -261,6 +260,7 @@
ex_severe = -1
ex_heavy = -1
ex_light = 2
+ ex_flash = 5
/obj/effect/proc_holder/spell/aoe_turf/repulse
name = "Repulse"