Nukes useless /wizard/ spell pathing

This had no fucking reason to exist, Shadowling spells are not wizard
spells, genetics powers are not wizard spells, ghost Booing is not a
wizard spell, etc.
This commit is contained in:
DZD
2015-08-08 14:06:50 -04:00
parent 06385e9097
commit 16bdb00351
43 changed files with 324 additions and 324 deletions
+1 -1
View File
@@ -259,7 +259,7 @@
A.dir = i
playsound(A.loc, 'sound/weapons/punch1.ogg', 15, 1, -1)
sleep(1)
var/obj/effect/proc_holder/spell/wizard/aoe_turf/repulse/R = new(null)
var/obj/effect/proc_holder/spell/aoe_turf/repulse/R = new(null)
var/list/turfs = list()
for(var/turf/T in range(1,A))
turfs.Add(T)
+2 -2
View File
@@ -971,8 +971,8 @@ datum/mind
current.mind.spell_list.Cut()
message_admins("[key_name_admin(usr)] has de-shadowling'ed [current].")
log_admin("[key_name(usr)] has de-shadowling'ed [current].")
remove_spell(/obj/effect/proc_holder/spell/wizard/targeted/shadowling_hatch)
remove_spell(/obj/effect/proc_holder/spell/wizard/targeted/shadowling_ascend)
remove_spell(/obj/effect/proc_holder/spell/targeted/shadowling_hatch)
remove_spell(/obj/effect/proc_holder/spell/targeted/shadowling_ascend)
current.remove_language("Shadowling Hivemind")
else if(src in ticker.mode.shadowling_thralls)
ticker.mode.remove_thrall(src,0)
+21 -21
View File
@@ -53,7 +53,7 @@ var/list/spells = typesof(/obj/effect/proc_holder/spell) //needed for the badmin
var/action_icon_state = "spell_default"
var/action_background_icon_state = "bg_spell"
/obj/effect/proc_holder/spell/wizard/proc/cast_check(skipcharge = 0, mob/living/user = usr) //checks if the spell can be cast based on its settings; skipcharge is used when an additional cast_check is called inside the spell
/obj/effect/proc_holder/spell/proc/cast_check(skipcharge = 0, mob/living/user = usr) //checks if the spell can be cast based on its settings; skipcharge is used when an additional cast_check is called inside the spell
if(((!user.mind) || !(src in user.mind.spell_list)) && !(src in user.spell_list))
user << "<span class='warning'>You shouldn't have this spell! Something's wrong.</span>"
@@ -88,7 +88,7 @@ var/list/spells = typesof(/obj/effect/proc_holder/spell) //needed for the badmin
if(user.is_muzzled())
user << "Mmmf mrrfff!"
return 0
var/obj/effect/proc_holder/spell/wizard/noclothes/spell = locate() in (user.spell_list | (user.mind ? user.mind.spell_list : list()))
var/obj/effect/proc_holder/spell/noclothes/spell = locate() in (user.spell_list | (user.mind ? user.mind.spell_list : list()))
if(clothes_req && !(spell && istype(spell)))//clothes check
if(!istype(user, /mob/living/carbon/human))
user << "You aren't a human, Why are you trying to cast a human spell, silly non-human? Casting human spells is for humans."
@@ -114,7 +114,7 @@ var/list/spells = typesof(/obj/effect/proc_holder/spell) //needed for the badmin
return 1
/obj/effect/proc_holder/spell/wizard/proc/invocation(mob/user = usr) //spelling the spell out and setting it on recharge/reducing charges amount
/obj/effect/proc_holder/spell/proc/invocation(mob/user = usr) //spelling the spell out and setting it on recharge/reducing charges amount
switch(invocation_type)
if("shout")
if(prob(50))//Auto-mute? Fuck that noise
@@ -127,25 +127,25 @@ var/list/spells = typesof(/obj/effect/proc_holder/spell) //needed for the badmin
else
user.whisper(replacetext(invocation," ","`"))
/obj/effect/proc_holder/spell/wizard/New()
/obj/effect/proc_holder/spell/New()
..()
charge_counter = charge_max
/obj/effect/proc_holder/spell/wizard/Click()
/obj/effect/proc_holder/spell/Click()
if(cast_check())
choose_targets()
return 1
/obj/effect/proc_holder/spell/wizard/proc/choose_targets(mob/user = usr) //depends on subtype - /targeted or /aoe_turf
/obj/effect/proc_holder/spell/proc/choose_targets(mob/user = usr) //depends on subtype - /targeted or /aoe_turf
return
/obj/effect/proc_holder/spell/wizard/proc/start_recharge()
/obj/effect/proc_holder/spell/proc/start_recharge()
while(charge_counter < charge_max)
sleep(1)
charge_counter++
/obj/effect/proc_holder/spell/wizard/proc/perform(list/targets, recharge = 1, mob/user = usr) //if recharge is started is important for the trigger spells
/obj/effect/proc_holder/spell/proc/perform(list/targets, recharge = 1, mob/user = usr) //if recharge is started is important for the trigger spells
before_cast(targets)
invocation()
user.attack_log += text("\[[time_stamp()]\] <font color='red'>[user.real_name] ([user.ckey]) cast the spell [name].</font>")
@@ -158,7 +158,7 @@ var/list/spells = typesof(/obj/effect/proc_holder/spell) //needed for the badmin
cast(targets)
after_cast(targets)
/obj/effect/proc_holder/spell/wizard/proc/before_cast(list/targets)
/obj/effect/proc_holder/spell/proc/before_cast(list/targets)
if(overlay)
for(var/atom/target in targets)
var/location
@@ -174,7 +174,7 @@ var/list/spells = typesof(/obj/effect/proc_holder/spell) //needed for the badmin
spawn(overlay_lifespan)
qdel(spell)
/obj/effect/proc_holder/spell/wizard/proc/after_cast(list/targets)
/obj/effect/proc_holder/spell/proc/after_cast(list/targets)
for(var/atom/target in targets)
var/location
if(istype(target,/mob/living))
@@ -201,13 +201,13 @@ var/list/spells = typesof(/obj/effect/proc_holder/spell) //needed for the badmin
smoke.set_up(smoke_amt, 0, location) // same here
smoke.start()
/obj/effect/proc_holder/spell/wizard/proc/cast(list/targets)
/obj/effect/proc_holder/spell/proc/cast(list/targets)
return
/obj/effect/proc_holder/spell/wizard/proc/critfail(list/targets)
/obj/effect/proc_holder/spell/proc/critfail(list/targets)
return
/obj/effect/proc_holder/spell/wizard/proc/revert_cast(mob/user = usr) //resets recharge or readds a charge
/obj/effect/proc_holder/spell/proc/revert_cast(mob/user = usr) //resets recharge or readds a charge
switch(charge_type)
if("recharge")
charge_counter = charge_max
@@ -218,7 +218,7 @@ var/list/spells = typesof(/obj/effect/proc_holder/spell) //needed for the badmin
return
/obj/effect/proc_holder/spell/wizard/proc/adjust_var(mob/living/target = usr, type, amount) //handles the adjustment of the var when the spell is used. has some hardcoded types
/obj/effect/proc_holder/spell/proc/adjust_var(mob/living/target = usr, type, amount) //handles the adjustment of the var when the spell is used. has some hardcoded types
switch(type)
if("bruteloss")
target.adjustBruteLoss(amount)
@@ -238,7 +238,7 @@ var/list/spells = typesof(/obj/effect/proc_holder/spell) //needed for the badmin
target.vars[type] += amount //I bear no responsibility for the runtimes that'll happen if you try to adjust non-numeric or even non-existant vars
return
/obj/effect/proc_holder/spell/wizard/targeted //can mean aoe for mobs (limited/unlimited number) or one target mob
/obj/effect/proc_holder/spell/targeted //can mean aoe for mobs (limited/unlimited number) or one target mob
var/max_targets = 1 //leave 0 for unlimited targets in range, 1 for one selectable target in range, more for limited number of casts (can all target one guy, depends on target_ignore_prev) in range
var/target_ignore_prev = 1 //only important if max_targets > 1, affects if the spell can be cast multiple times at one person from one cast
var/include_user = 0 //if it includes usr in the target list
@@ -246,10 +246,10 @@ var/list/spells = typesof(/obj/effect/proc_holder/spell) //needed for the badmin
var/random_target_priority = TARGET_CLOSEST // if random_target is enabled how it will pick the target
/obj/effect/proc_holder/spell/wizard/aoe_turf //affects all turfs in view or range (depends)
/obj/effect/proc_holder/spell/aoe_turf //affects all turfs in view or range (depends)
var/inner_radius = -1 //for all your ring spell needs
/obj/effect/proc_holder/spell/wizard/targeted/choose_targets(mob/user = usr)
/obj/effect/proc_holder/spell/targeted/choose_targets(mob/user = usr)
var/list/targets = list()
switch(max_targets)
@@ -315,7 +315,7 @@ var/list/spells = typesof(/obj/effect/proc_holder/spell) //needed for the badmin
return
/obj/effect/proc_holder/spell/wizard/aoe_turf/choose_targets(mob/user = usr)
/obj/effect/proc_holder/spell/aoe_turf/choose_targets(mob/user = usr)
var/list/targets = list()
for(var/turf/target in view_or_range(range,user,selection_type))
@@ -331,7 +331,7 @@ var/list/spells = typesof(/obj/effect/proc_holder/spell) //needed for the badmin
return
/obj/effect/proc_holder/spell/wizard/targeted/proc/los_check(mob/A,mob/B)
/obj/effect/proc_holder/spell/targeted/proc/los_check(mob/A,mob/B)
//Checks for obstacles from A to B
var/obj/dummy = new(A.loc)
dummy.pass_flags |= PASSTABLE
@@ -370,8 +370,8 @@ var/list/spells = typesof(/obj/effect/proc_holder/spell) //needed for the badmin
if((invocation_type == "whisper" || invocation_type == "shout") && H.is_muzzled())
return 0
var/obj/effect/proc_holder/spell/wizard/noclothes/clothcheck = locate() in user.spell_list
var/obj/effect/proc_holder/spell/wizard/noclothes/clothcheck2 = locate() in user.mind.spell_list
var/obj/effect/proc_holder/spell/noclothes/clothcheck = locate() in user.spell_list
var/obj/effect/proc_holder/spell/noclothes/clothcheck2 = locate() in user.mind.spell_list
if(clothes_req && !(clothcheck && istype(clothcheck)) && !(clothcheck2 && istype(clothcheck2)))//clothes check
if(!istype(H.wear_suit, /obj/item/clothing/suit/wizrobe) && !istype(H.wear_suit, /obj/item/clothing/suit/space/rig/wizard))
return 0
+5 -5
View File
@@ -1,10 +1,10 @@
/obj/effect/proc_holder/spell/wizard/targeted/area_teleport
/obj/effect/proc_holder/spell/targeted/area_teleport
name = "Area teleport"
desc = "This spell teleports you to a type of area of your selection."
var/randomise_selection = 0 //if it lets the usr choose the teleport loc or picks it from the list
var/invocation_area = 1 //if the invocation appends the selected area
/obj/effect/proc_holder/spell/wizard/targeted/area_teleport/perform(list/targets, recharge = 1)
/obj/effect/proc_holder/spell/targeted/area_teleport/perform(list/targets, recharge = 1)
var/thearea = before_cast(targets)
if(!thearea || !cast_check(1))
revert_cast()
@@ -16,7 +16,7 @@
cast(targets,thearea)
after_cast(targets)
/obj/effect/proc_holder/spell/wizard/targeted/area_teleport/before_cast(list/targets)
/obj/effect/proc_holder/spell/targeted/area_teleport/before_cast(list/targets)
var/A = null
if(!randomise_selection)
@@ -28,7 +28,7 @@
return thearea
/obj/effect/proc_holder/spell/wizard/targeted/area_teleport/cast(list/targets,area/thearea)
/obj/effect/proc_holder/spell/targeted/area_teleport/cast(list/targets,area/thearea)
for(var/mob/living/target in targets)
var/list/L = list()
for(var/turf/T in get_area_turfs(thearea.type))
@@ -64,7 +64,7 @@
return
/obj/effect/proc_holder/spell/wizard/targeted/area_teleport/invocation(area/chosenarea = null)
/obj/effect/proc_holder/spell/targeted/area_teleport/invocation(area/chosenarea = null)
if(!invocation_area || !chosenarea)
..()
else
+3 -3
View File
@@ -1,4 +1,4 @@
/obj/effect/proc_holder/spell/wizard/targeted/charge
/obj/effect/proc_holder/spell/targeted/charge
name = "Charge"
desc = "This spell can be used to charge up spent magical artifacts, among other things."
@@ -12,7 +12,7 @@
include_user = 1
/obj/effect/proc_holder/spell/wizard/targeted/charge/cast(list/targets)
/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())
var/charged_item = null
@@ -23,7 +23,7 @@
if(G.affecting)
var/mob/M = G.affecting
if(M.spell_list.len != 0)
for(var/obj/effect/proc_holder/spell/wizard/S in M.spell_list)
for(var/obj/effect/proc_holder/spell/S in M.spell_list)
S.charge_counter = S.charge_max
M <<"<span class='notice'>you feel raw magic flowing through you, it feels good!</span>"
else
+3 -3
View File
@@ -1,4 +1,4 @@
/obj/effect/proc_holder/spell/wizard/aoe_turf/conjure
/obj/effect/proc_holder/spell/aoe_turf/conjure
name = "Conjure"
desc = "This spell conjures objs of the specified types in range."
@@ -14,7 +14,7 @@
//should have format of list("emagged" = 1,"name" = "Wizard's Justicebot"), for example
var/delay = 1//Go Go Gadget Inheritance
/obj/effect/proc_holder/spell/wizard/aoe_turf/conjure/cast(list/targets)
/obj/effect/proc_holder/spell/aoe_turf/conjure/cast(list/targets)
for(var/turf/T in targets)
if(T.density && !summon_ignore_density)
@@ -57,7 +57,7 @@
return
/obj/effect/proc_holder/spell/wizard/aoe_turf/conjure/summonEdSwarm //test purposes
/obj/effect/proc_holder/spell/aoe_turf/conjure/summonEdSwarm //test purposes
name = "Dispense Wizard Justice"
desc = "This spell dispenses wizard justice."
+9 -9
View File
@@ -1,9 +1,9 @@
//////////////////////////////Construct Spells/////////////////////////
/obj/effect/proc_holder/spell/wizard/aoe_turf/conjure/construct/lesser
/obj/effect/proc_holder/spell/aoe_turf/conjure/construct/lesser
charge_max = 1800
/obj/effect/proc_holder/spell/wizard/aoe_turf/conjure/floor
/obj/effect/proc_holder/spell/aoe_turf/conjure/floor
name = "Floor Construction"
desc = "This spell constructs a cult floor"
@@ -16,7 +16,7 @@
summon_type = list(/turf/simulated/floor/engine/cult)
centcom_cancast = 0 //Stop crashing the server by spawning turfs on transit tiles
/obj/effect/proc_holder/spell/wizard/aoe_turf/conjure/wall
/obj/effect/proc_holder/spell/aoe_turf/conjure/wall
name = "Lesser Construction"
desc = "This spell constructs a cult wall"
@@ -29,7 +29,7 @@
summon_type = list(/turf/simulated/wall/cult)
centcom_cancast = 0 //Stop crashing the server by spawning turfs on transit tiles
/obj/effect/proc_holder/spell/wizard/aoe_turf/conjure/wall/reinforced
/obj/effect/proc_holder/spell/aoe_turf/conjure/wall/reinforced
name = "Greater Construction"
desc = "This spell constructs a reinforced metal wall"
@@ -44,7 +44,7 @@
summon_type = list(/turf/simulated/wall/r_wall)
/obj/effect/proc_holder/spell/wizard/aoe_turf/conjure/soulstone
/obj/effect/proc_holder/spell/aoe_turf/conjure/soulstone
name = "Summon Soulstone"
desc = "This spell reaches into Nar-Sie's realm, summoning one of the legendary fragments across time and space"
@@ -58,7 +58,7 @@
summon_type = list(/obj/item/device/soulstone)
/obj/effect/proc_holder/spell/wizard/aoe_turf/conjure/lesserforcewall
/obj/effect/proc_holder/spell/aoe_turf/conjure/lesserforcewall
name = "Shield"
desc = "This spell creates a temporary forcefield to shield yourself and allies from incoming fire"
@@ -72,7 +72,7 @@
summon_lifespan = 200
/obj/effect/proc_holder/spell/wizard/targeted/ethereal_jaunt/shift
/obj/effect/proc_holder/spell/targeted/ethereal_jaunt/shift
name = "Phase Shift"
desc = "This spell allows you to pass through walls"
@@ -88,7 +88,7 @@
centcom_cancast = 0 //Stop people from getting to centcom
/obj/effect/proc_holder/spell/wizard/targeted/projectile/magic_missile/lesser
/obj/effect/proc_holder/spell/targeted/projectile/magic_missile/lesser
name = "Lesser Magic Missile"
desc = "This spell fires several, slow moving, magic projectiles at nearby targets."
@@ -100,7 +100,7 @@
proj_lifespan = 10
max_targets = 6
/obj/effect/proc_holder/spell/wizard/targeted/smoke/disable
/obj/effect/proc_holder/spell/targeted/smoke/disable
name = "Paralysing Smoke"
desc = "This spell spawns a cloud of paralysing smoke."
+5 -5
View File
@@ -1,4 +1,4 @@
/obj/effect/proc_holder/spell/wizard/dumbfire
/obj/effect/proc_holder/spell/dumbfire
var/projectile_type = ""
var/activate_on_collision = 1
@@ -20,7 +20,7 @@
var/proj_lifespan = 100 //in deciseconds * proj_step_delay
var/proj_step_delay = 1 //lower = faster
/obj/effect/proc_holder/spell/wizard/dumbfire/choose_targets(mob/user = usr)
/obj/effect/proc_holder/spell/dumbfire/choose_targets(mob/user = usr)
var/turf/T = get_turf(usr)
for(var/i = 1; i < range; i++)
@@ -30,16 +30,16 @@
T = new_turf
perform(list(T))
/obj/effect/proc_holder/spell/wizard/dumbfire/cast(list/targets, mob/user = usr)
/obj/effect/proc_holder/spell/dumbfire/cast(list/targets, mob/user = usr)
for(var/turf/target in targets)
spawn(0)
var/obj/effect/proc_holder/spell/wizard/targeted/projectile
var/obj/effect/proc_holder/spell/targeted/projectile
if(istext(proj_type))
var/projectile_type = text2path(proj_type)
projectile = new projectile_type(user)
if(istype(proj_type,/obj/effect/proc_holder/spell))
projectile = new /obj/effect/proc_holder/spell/wizard/targeted/trigger(user)
projectile = new /obj/effect/proc_holder/spell/targeted/trigger(user)
projectile:linked_spells += proj_type
projectile.icon = proj_icon
projectile.icon_state = proj_icon_state
+2 -2
View File
@@ -1,4 +1,4 @@
/obj/effect/proc_holder/spell/wizard/targeted/emplosion
/obj/effect/proc_holder/spell/targeted/emplosion
name = "Emplosion"
desc = "This spell emplodes an area."
@@ -7,7 +7,7 @@
action_icon_state = "emp"
/obj/effect/proc_holder/spell/wizard/targeted/emplosion/cast(list/targets)
/obj/effect/proc_holder/spell/targeted/emplosion/cast(list/targets)
for(var/mob/living/target in targets)
empulse(target.loc, emp_heavy, emp_light)
+2 -2
View File
@@ -1,4 +1,4 @@
/obj/effect/proc_holder/spell/wizard/targeted/ethereal_jaunt
/obj/effect/proc_holder/spell/targeted/ethereal_jaunt
name = "Ethereal Jaunt"
desc = "This spell creates your ethereal form, temporarily making you invisible and able to pass through walls."
@@ -17,7 +17,7 @@
action_icon_state = "jaunt"
/obj/effect/proc_holder/spell/wizard/targeted/ethereal_jaunt/cast(list/targets) //magnets, so mostly hardcoded
/obj/effect/proc_holder/spell/targeted/ethereal_jaunt/cast(list/targets) //magnets, so mostly hardcoded
for(var/mob/living/target in targets)
spawn(0)
+2 -2
View File
@@ -1,4 +1,4 @@
/obj/effect/proc_holder/spell/wizard/targeted/explosion
/obj/effect/proc_holder/spell/targeted/explosion
name = "Explosion"
desc = "This spell explodes an area."
@@ -7,7 +7,7 @@
var/ex_light = 3
var/ex_flash = 4
/obj/effect/proc_holder/spell/wizard/targeted/explosion/cast(list/targets)
/obj/effect/proc_holder/spell/targeted/explosion/cast(list/targets)
for(var/mob/living/target in targets)
explosion(target.loc,ex_severe,ex_heavy,ex_light,ex_flash)
+1 -1
View File
@@ -1,4 +1,4 @@
/obj/effect/proc_holder/spell/wizard/targeted/fake_gib
/obj/effect/proc_holder/spell/targeted/fake_gib
name = "Disintegrate"
desc = "This spell instantly kills somebody adjacent to you with the vilest of magick."
+2 -2
View File
@@ -1,4 +1,4 @@
/obj/effect/proc_holder/spell/wizard/targeted/genetic
/obj/effect/proc_holder/spell/targeted/genetic
name = "Genetic"
desc = "This spell inflicts a set of mutations and disabilities upon the target."
@@ -15,7 +15,7 @@
6th bit - ?
*/
/obj/effect/proc_holder/spell/wizard/targeted/genetic/cast(list/targets)
/obj/effect/proc_holder/spell/targeted/genetic/cast(list/targets)
for(var/mob/living/target in targets)
for(var/x in mutations)
+2 -2
View File
@@ -1,4 +1,4 @@
/obj/effect/proc_holder/spell/wizard/targeted/horsemask
/obj/effect/proc_holder/spell/targeted/horsemask
name = "Curse of the Horseman"
desc = "This spell triggers a curse on a target, causing them to wield an unremovable horse head mask. They will speak like a horse! Any masks they are wearing will be disintegrated. This spell does not require robes."
school = "transmutation"
@@ -16,7 +16,7 @@
action_icon_state = "spell_horse"
/obj/effect/proc_holder/spell/wizard/targeted/horsemask/cast(list/targets, mob/user = usr)
/obj/effect/proc_holder/spell/targeted/horsemask/cast(list/targets, mob/user = usr)
if(!targets.len)
user << "<span class='notice'>No target found in range.</span>"
return
+2 -2
View File
@@ -1,4 +1,4 @@
/obj/effect/proc_holder/spell/wizard/targeted/inflict_handler
/obj/effect/proc_holder/spell/targeted/inflict_handler
name = "Inflict Handler"
desc = "This spell blinds and/or destroys/damages/heals and/or weakens/stuns the target."
@@ -19,7 +19,7 @@
var/summon_type = null //this will put an obj at the target's location
/obj/effect/proc_holder/spell/wizard/targeted/inflict_handler/cast(list/targets)
/obj/effect/proc_holder/spell/targeted/inflict_handler/cast(list/targets)
for(var/mob/living/target in targets)
switch(destroys)
+2 -2
View File
@@ -1,4 +1,4 @@
/obj/effect/proc_holder/spell/wizard/aoe_turf/knock
/obj/effect/proc_holder/spell/aoe_turf/knock
name = "Knock"
desc = "This spell opens nearby doors and does not require wizard garb."
@@ -12,7 +12,7 @@
action_icon_state = "knock"
/obj/effect/proc_holder/spell/wizard/aoe_turf/knock/cast(list/targets)
/obj/effect/proc_holder/spell/aoe_turf/knock/cast(list/targets)
for(var/turf/T in targets)
for(var/obj/machinery/door/door in T.contents)
spawn(1)
+9 -9
View File
@@ -1,4 +1,4 @@
/obj/effect/proc_holder/spell/wizard/targeted/lightning
/obj/effect/proc_holder/spell/targeted/lightning
name = "Lightning Bolt"
desc = "Throws a lightning bolt at the nearby enemy. Classic."
charge_type = "recharge"
@@ -15,11 +15,11 @@
var/image/halo = null
action_icon_state = "lightning"
/obj/effect/proc_holder/spell/wizard/targeted/lightning/lightnian
/obj/effect/proc_holder/spell/targeted/lightning/lightnian
clothes_req = 0
invocation_type = "none"
/obj/effect/proc_holder/spell/wizard/targeted/lightning/Click()
/obj/effect/proc_holder/spell/targeted/lightning/Click()
if(!ready)
if(cast_check())
StartChargeup()
@@ -28,7 +28,7 @@
choose_targets()
return 1
/obj/effect/proc_holder/spell/wizard/targeted/lightning/proc/StartChargeup(mob/user = usr)
/obj/effect/proc_holder/spell/targeted/lightning/proc/StartChargeup(mob/user = usr)
ready = 1
user << "<span class='notice'>You start gathering the power.</span>"
halo = image("icon"='icons/effects/effects.dmi',"icon_state" ="electricity","layer" = EFFECTS_LAYER)
@@ -40,18 +40,18 @@
if(energy >= 100 && ready)
Discharge()
obj/effect/proc_holder/spell/wizard/targeted/lightning/proc/Reset(mob/user = usr)
obj/effect/proc_holder/spell/targeted/lightning/proc/Reset(mob/user = usr)
ready = 0
energy = 0
if(halo)
user.overlays.Remove(halo)
/obj/effect/proc_holder/spell/wizard/targeted/lightning/revert_cast(mob/user = usr)
/obj/effect/proc_holder/spell/targeted/lightning/revert_cast(mob/user = usr)
user << "<span class='notice'>No target found in range.</span>"
Reset(user)
..()
/obj/effect/proc_holder/spell/wizard/targeted/lightning/proc/Discharge(mob/user = usr)
/obj/effect/proc_holder/spell/targeted/lightning/proc/Discharge(mob/user = usr)
var/mob/living/M = user
//M.electrocute_act(25,"Lightning Bolt")
M << "<span class='danger'>You lose control over the spell.</span>"
@@ -59,7 +59,7 @@ obj/effect/proc_holder/spell/wizard/targeted/lightning/proc/Reset(mob/user = usr
start_recharge()
/obj/effect/proc_holder/spell/wizard/targeted/lightning/cast(list/targets, mob/user = usr)
/obj/effect/proc_holder/spell/targeted/lightning/cast(list/targets, mob/user = usr)
var/mob/living/carbon/target = targets[1]
@@ -82,7 +82,7 @@ obj/effect/proc_holder/spell/wizard/targeted/lightning/proc/Reset(mob/user = usr
Bolt(user,target,energy,user)
Reset(user)
/obj/effect/proc_holder/spell/wizard/targeted/lightning/proc/Bolt(mob/origin,mob/target,bolt_energy,mob/user = usr)
/obj/effect/proc_holder/spell/targeted/lightning/proc/Bolt(mob/origin,mob/target,bolt_energy,mob/user = usr)
origin.Beam(target,icon_state="lightning",icon='icons/effects/effects.dmi',time=5)
var/mob/living/carbon/current = target
if(bolt_energy < 75)
+8 -8
View File
@@ -1,4 +1,4 @@
/obj/effect/proc_holder/spell/wizard/targeted/magnet
/obj/effect/proc_holder/spell/targeted/magnet
name = "Magnetic Pull"
desc = "Pulls metalic objects from enemies hands with the power of MAGNETS."
charge_type = "recharge"
@@ -16,7 +16,7 @@
action_icon_state = "tech"
/obj/effect/proc_holder/spell/wizard/targeted/magnet/Click()
/obj/effect/proc_holder/spell/targeted/magnet/Click()
if(!ready)
if(cast_check())
StartChargeup()
@@ -25,7 +25,7 @@
choose_targets()
return 1
/obj/effect/proc_holder/spell/wizard/targeted/magnet/proc/StartChargeup(mob/user = usr)
/obj/effect/proc_holder/spell/targeted/magnet/proc/StartChargeup(mob/user = usr)
ready = 1
user << "<span class='notice'>You start gathering the power.</span>"
halo = image("icon"='icons/effects/effects.dmi',"icon_state" ="electricity","layer" = EFFECTS_LAYER)
@@ -37,18 +37,18 @@
if(energy >= 100 && ready)
Discharge()
obj/effect/proc_holder/spell/wizard/targeted/magnet/proc/Reset(mob/user = usr)
obj/effect/proc_holder/spell/targeted/magnet/proc/Reset(mob/user = usr)
ready = 0
energy = 0
if(halo)
user.overlays.Remove(halo)
/obj/effect/proc_holder/spell/wizard/targeted/magnet/revert_cast(mob/user = usr)
/obj/effect/proc_holder/spell/targeted/magnet/revert_cast(mob/user = usr)
user << "<span class='notice'>No target found in range.</span>"
Reset(user)
..()
/obj/effect/proc_holder/spell/wizard/targeted/magnet/proc/Discharge(mob/user = usr)
/obj/effect/proc_holder/spell/targeted/magnet/proc/Discharge(mob/user = usr)
var/mob/living/M = user
//M.electrocute_act(25,"magnet Bolt")
M << "<span class='danger'>You lose control over the power.</span>"
@@ -56,7 +56,7 @@ obj/effect/proc_holder/spell/wizard/targeted/magnet/proc/Reset(mob/user = usr)
start_recharge()
/obj/effect/proc_holder/spell/wizard/targeted/magnet/cast(list/targets, mob/user = usr)
/obj/effect/proc_holder/spell/targeted/magnet/cast(list/targets, mob/user = usr)
var/mob/living/carbon/target = targets[1]
@@ -91,7 +91,7 @@ obj/effect/proc_holder/spell/wizard/targeted/magnet/proc/Reset(mob/user = usr)
Bolt(user,target,energy,user)
Reset(user)
/obj/effect/proc_holder/spell/wizard/targeted/magnet/proc/Bolt(mob/origin,mob/target,bolt_energy,mob/user = usr)
/obj/effect/proc_holder/spell/targeted/magnet/proc/Bolt(mob/origin,mob/target,bolt_energy,mob/user = usr)
origin.Beam(target,icon_state="lightning",icon='icons/effects/effects.dmi',time=5)
var/mob/living/carbon/current = target
if(bolt_energy < 75)
+2 -2
View File
@@ -1,4 +1,4 @@
/obj/effect/proc_holder/spell/wizard/targeted/mind_transfer
/obj/effect/proc_holder/spell/targeted/mind_transfer
name = "Mind Transfer"
desc = "This spell allows the user to switch bodies with a target."
@@ -19,7 +19,7 @@ Urist: I don't feel like figuring out how you store object spells so I'm leaving
Make sure spells that are removed from spell_list are actually removed and deleted when mind transfering.
Also, you never added distance checking after target is selected. I've went ahead and did that.
*/
/obj/effect/proc_holder/spell/wizard/targeted/mind_transfer/cast(list/targets,mob/user = usr)
/obj/effect/proc_holder/spell/targeted/mind_transfer/cast(list/targets,mob/user = usr)
if(!targets.len)
user << "No mind found."
return
+5 -5
View File
@@ -1,4 +1,4 @@
/obj/effect/proc_holder/spell/wizard/targeted/projectile
/obj/effect/proc_holder/spell/targeted/projectile
name = "Projectile"
desc = "This spell summons projectiles which try to hit the targets."
@@ -11,7 +11,7 @@
var/proj_trail_icon = 'icons/obj/wizard.dmi'
var/proj_trail_icon_state = "trail"
var/proj_type = "/obj/effect/proc_holder/spell/wizard/targeted" //IMPORTANT use only subtypes of this
var/proj_type = "/obj/effect/proc_holder/spell/targeted" //IMPORTANT use only subtypes of this
var/proj_lingering = 0 //if it lingers or disappears upon hitting an obstacle
var/proj_homing = 1 //if it follows the target
@@ -21,16 +21,16 @@
var/proj_lifespan = 15 //in deciseconds * proj_step_delay
var/proj_step_delay = 1 //lower = faster
/obj/effect/proc_holder/spell/wizard/targeted/projectile/cast(list/targets, mob/user = usr)
/obj/effect/proc_holder/spell/targeted/projectile/cast(list/targets, mob/user = usr)
for(var/mob/living/target in targets)
spawn(0)
var/obj/effect/proc_holder/spell/wizard/targeted/projectile
var/obj/effect/proc_holder/spell/targeted/projectile
if(istext(proj_type))
var/projectile_type = text2path(proj_type)
projectile = new projectile_type(user)
if(istype(proj_type,/obj/effect/proc_holder/spell))
projectile = new /obj/effect/proc_holder/spell/wizard/targeted/trigger(user)
projectile = new /obj/effect/proc_holder/spell/targeted/trigger(user)
projectile:linked_spells += proj_type
projectile.icon = proj_icon
projectile.icon_state = proj_icon_state
+2 -2
View File
@@ -1,4 +1,4 @@
/obj/effect/proc_holder/spell/wizard/targeted/summonitem
/obj/effect/proc_holder/spell/targeted/summonitem
name = "Instant Summons"
desc = "This spell can be used to recall a previously marked item to your hand from anywhere in the universe."
school = "transmutation"
@@ -15,7 +15,7 @@
action_icon_state = "summons"
/obj/effect/proc_holder/spell/wizard/targeted/summonitem/cast(list/targets)
/obj/effect/proc_holder/spell/targeted/summonitem/cast(list/targets)
for(var/mob/living/user in targets)
var/list/hand_items = list(user.get_active_hand(),user.get_inactive_hand())
var/butterfingers = 0
+6 -6
View File
@@ -1,29 +1,29 @@
/obj/effect/proc_holder/spell/wizard/targeted/trigger
/obj/effect/proc_holder/spell/targeted/trigger
name = "Trigger"
desc = "This spell triggers another spell or a few."
var/list/linked_spells = list() //those are just referenced by the trigger spell and are unaffected by it directly
var/list/starting_spells = list() //those are added on New() to contents from default spells and are deleted when the trigger spell is deleted to prevent memory leaks
/obj/effect/proc_holder/spell/wizard/targeted/trigger/New()
/obj/effect/proc_holder/spell/targeted/trigger/New()
..()
for(var/spell in starting_spells)
var/spell_to_add = text2path(spell)
new spell_to_add(src) //should result in adding to contents, needs testing
/obj/effect/proc_holder/spell/wizard/targeted/trigger/Destroy()
/obj/effect/proc_holder/spell/targeted/trigger/Destroy()
for(var/spell in contents)
qdel(spell)
linked_spells = null
starting_spells = null
return ..()
/obj/effect/proc_holder/spell/wizard/targeted/trigger/cast(list/targets)
/obj/effect/proc_holder/spell/targeted/trigger/cast(list/targets)
for(var/mob/living/target in targets)
for(var/obj/effect/proc_holder/spell/wizard/spell in contents)
for(var/obj/effect/proc_holder/spell/spell in contents)
spell.perform(list(target),0)
for(var/obj/effect/proc_holder/spell/wizard/spell in linked_spells)
for(var/obj/effect/proc_holder/spell/spell in linked_spells)
spell.perform(list(target),0)
return
+2 -2
View File
@@ -1,4 +1,4 @@
/obj/effect/proc_holder/spell/wizard/targeted/turf_teleport
/obj/effect/proc_holder/spell/targeted/turf_teleport
name = "Turf Teleport"
desc = "This spell teleports the target to the turf in range."
@@ -8,7 +8,7 @@
var/include_space = 0 //whether it includes space tiles in possible teleport locations
var/include_dense = 0 //whether it includes dense tiles in possible teleport locations
/obj/effect/proc_holder/spell/wizard/targeted/turf_teleport/cast(list/targets)
/obj/effect/proc_holder/spell/targeted/turf_teleport/cast(list/targets)
for(var/mob/living/target in targets)
var/list/turfs = new/list()
for(var/turf/T in range(target,outer_tele_radius))
+26 -26
View File
@@ -1,4 +1,4 @@
/obj/effect/proc_holder/spell/wizard/targeted/projectile/magic_missile
/obj/effect/proc_holder/spell/targeted/projectile/magic_missile
name = "Magic Missile"
desc = "This spell fires several, slow moving, magic projectiles at nearby targets."
@@ -15,7 +15,7 @@
proj_icon_state = "magicm"
proj_name = "a magic missile"
proj_lingering = 1
proj_type = "/obj/effect/proc_holder/spell/wizard/targeted/inflict_handler/magic_missile"
proj_type = "/obj/effect/proc_holder/spell/targeted/inflict_handler/magic_missile"
proj_lifespan = 20
proj_step_delay = 5
@@ -26,15 +26,15 @@
action_icon_state = "magicm"
/obj/effect/proc_holder/spell/wizard/targeted/inflict_handler/magic_missile
/obj/effect/proc_holder/spell/targeted/inflict_handler/magic_missile
amt_weakened = 3
amt_dam_fire = 10
/obj/effect/proc_holder/spell/wizard/noclothes
/obj/effect/proc_holder/spell/noclothes
name = "No Clothes"
desc = "This always-on spell allows you to cast magic without your garments."
/obj/effect/proc_holder/spell/wizard/targeted/genetic/mutate
/obj/effect/proc_holder/spell/targeted/genetic/mutate
name = "Mutate"
desc = "This spell causes you to turn into a hulk and gain laser vision for a short while."
@@ -54,7 +54,7 @@
action_icon_state = "mutate"
/obj/effect/proc_holder/spell/wizard/targeted/inflict_handler/disintegrate
/obj/effect/proc_holder/spell/targeted/inflict_handler/disintegrate
name = "Disintegrate"
desc = "This spell instantly kills somebody adjacent to you with the vilest of magick."
@@ -73,7 +73,7 @@
action_icon_state = "gib"
/obj/effect/proc_holder/spell/wizard/targeted/smoke
/obj/effect/proc_holder/spell/targeted/smoke
name = "Smoke"
desc = "This spell spawns a cloud of choking smoke at your location and does not require wizard garb."
@@ -91,7 +91,7 @@
action_icon_state = "smoke"
/obj/effect/proc_holder/spell/wizard/targeted/emplosion/disable_tech
/obj/effect/proc_holder/spell/targeted/emplosion/disable_tech
name = "Disable Tech"
desc = "This spell disables all weapons, cameras and most other technology in range."
charge_max = 400
@@ -107,7 +107,7 @@
action_icon_state = "tech"
/obj/effect/proc_holder/spell/wizard/targeted/turf_teleport/blink
/obj/effect/proc_holder/spell/targeted/turf_teleport/blink
name = "Blink"
desc = "This spell randomly teleports you a short distance."
@@ -131,7 +131,7 @@
action_icon_state = "blink"
/obj/effect/proc_holder/spell/wizard/targeted/area_teleport/teleport
/obj/effect/proc_holder/spell/targeted/area_teleport/teleport
name = "Teleport"
desc = "This spell teleports you to a type of area of your selection."
@@ -149,7 +149,7 @@
action_icon_state = "spell_teleport"
/obj/effect/proc_holder/spell/wizard/aoe_turf/conjure/forcewall
/obj/effect/proc_holder/spell/aoe_turf/conjure/forcewall
name = "Forcewall"
desc = "This spell creates an unbreakable wall that lasts for 30 seconds and does not need wizard garb."
@@ -166,7 +166,7 @@
action_icon_state = "spell_forcewall"
/obj/effect/proc_holder/spell/wizard/aoe_turf/conjure/carp
/obj/effect/proc_holder/spell/aoe_turf/conjure/carp
name = "Summon Carp"
desc = "This spell conjures a simple carp."
@@ -180,7 +180,7 @@
summon_type = list(/mob/living/simple_animal/hostile/carp)
/obj/effect/proc_holder/spell/wizard/aoe_turf/conjure/construct
/obj/effect/proc_holder/spell/aoe_turf/conjure/construct
name = "Artificer"
desc = "This spell conjures a construct which may be controlled by Shades"
@@ -195,7 +195,7 @@
action_icon_state = "artificer"
/obj/effect/proc_holder/spell/wizard/aoe_turf/conjure/creature
/obj/effect/proc_holder/spell/aoe_turf/conjure/creature
name = "Summon Creature Swarm"
desc = "This spell tears the fabric of reality, allowing horrific daemons to spill forth"
@@ -209,7 +209,7 @@
summon_type = list(/mob/living/simple_animal/hostile/creature)
/obj/effect/proc_holder/spell/wizard/targeted/trigger/blind
/obj/effect/proc_holder/spell/targeted/trigger/blind
name = "Blind"
desc = "This spell temporarily blinds a single person and does not require wizard garb."
@@ -221,19 +221,19 @@
message = "\blue Your eyes cry out in pain!"
cooldown_min = 50 //12 deciseconds reduction per rank
starting_spells = list("/obj/effect/proc_holder/spell/wizard/targeted/inflict_handler/blind","/obj/effect/proc_holder/spell/wizard/targeted/genetic/blind")
starting_spells = list("/obj/effect/proc_holder/spell/targeted/inflict_handler/blind","/obj/effect/proc_holder/spell/targeted/genetic/blind")
action_icon_state = "blind"
/obj/effect/proc_holder/spell/wizard/targeted/inflict_handler/blind
/obj/effect/proc_holder/spell/targeted/inflict_handler/blind
amt_eye_blind = 10
amt_eye_blurry = 20
/obj/effect/proc_holder/spell/wizard/targeted/genetic/blind
/obj/effect/proc_holder/spell/targeted/genetic/blind
disabilities = 1
duration = 300
/obj/effect/proc_holder/spell/wizard/targeted/inflict_handler/flesh_to_stone
/obj/effect/proc_holder/spell/targeted/inflict_handler/flesh_to_stone
name = "Flesh to Stone"
desc = "This spell turns a single person into an inert statue for a long period of time."
@@ -250,7 +250,7 @@
action_icon_state = "statue"
/obj/effect/proc_holder/spell/wizard/dumbfire/fireball
/obj/effect/proc_holder/spell/dumbfire/fireball
name = "Fireball"
desc = "This spell fires a fireball at a target and does not require wizard garb."
@@ -264,27 +264,27 @@
proj_icon_state = "fireball"
proj_name = "a fireball"
proj_type = "/obj/effect/proc_holder/spell/wizard/turf/fireball"
proj_type = "/obj/effect/proc_holder/spell/turf/fireball"
proj_lifespan = 200
proj_step_delay = 1
action_icon_state = "fireball"
/obj/effect/proc_holder/spell/wizard/turf/fireball/cast(var/turf/T)
/obj/effect/proc_holder/spell/turf/fireball/cast(var/turf/T)
explosion(T, -1, 0, 2, 3, 0, flame_range = 2)
/obj/effect/proc_holder/spell/wizard/targeted/inflict_handler/fireball
/obj/effect/proc_holder/spell/targeted/inflict_handler/fireball
amt_dam_brute = 20
amt_dam_fire = 25
/obj/effect/proc_holder/spell/wizard/targeted/explosion/fireball
/obj/effect/proc_holder/spell/targeted/explosion/fireball
ex_severe = -1
ex_heavy = -1
ex_light = 2
/obj/effect/proc_holder/spell/wizard/aoe_turf/repulse
/obj/effect/proc_holder/spell/aoe_turf/repulse
name = "Repulse"
desc = "This spell throws everything around the user away."
charge_max = 400
@@ -298,7 +298,7 @@
action_icon_state = "repulse"
/obj/effect/proc_holder/spell/wizard/aoe_turf/repulse/cast(list/targets)
/obj/effect/proc_holder/spell/aoe_turf/repulse/cast(list/targets)
var/mob/user = usr
var/list/thrownatoms = list()
var/atom/throwtarget