mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-31 07:57:47 +01:00
Made all current wizard + genetic spells a subtype of spell/wizard (Since they use the same action button row)
This commit is contained in:
@@ -119,7 +119,6 @@
|
||||
#include "code\datums\helper_datums\topic_input.dm"
|
||||
#include "code\datums\spells\area_teleport.dm"
|
||||
#include "code\datums\spells\charge.dm"
|
||||
#include "code\datums\spells\clown.dm"
|
||||
#include "code\datums\spells\conjure.dm"
|
||||
#include "code\datums\spells\construct_spells.dm"
|
||||
#include "code\datums\spells\dumbfire.dm"
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
client.screen -= hud_used.power_action_list
|
||||
|
||||
hud_used.power_action_list = list()
|
||||
for(var/obj/effect/proc_holder/spell/S in spell_list)
|
||||
for(var/obj/effect/proc_holder/spell/wizard/S in spell_list)
|
||||
if(S.icon_power_button)
|
||||
var/obj/screen/power_action/P = new(hud_used)
|
||||
P.icon = 'icons/mob/screen1_action.dmi'
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
return 1
|
||||
|
||||
/obj/screen/power_action
|
||||
var/obj/effect/proc_holder/spell/owner
|
||||
var/obj/effect/proc_holder/spell/wizard/owner
|
||||
|
||||
/obj/screen/power_action/Click()
|
||||
owner.Click()
|
||||
|
||||
+18
-18
@@ -48,7 +48,7 @@ var/list/spells = typesof(/obj/effect/proc_holder/spell) //needed for the badmin
|
||||
var/icon_power_button
|
||||
var/power_button_name
|
||||
|
||||
/obj/effect/proc_holder/spell/proc/cast_check(skipcharge = 0,mob/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/wizard/proc/cast_check(skipcharge = 0,mob/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(!(src in user.spell_list))
|
||||
user << "<span class='warning'>You shouldn't have this spell! Something's wrong.</span>"
|
||||
@@ -77,7 +77,7 @@ var/list/spells = typesof(/obj/effect/proc_holder/spell) //needed for the badmin
|
||||
if(istype(usr.wear_mask, /obj/item/clothing/mask/muzzle))
|
||||
usr << "Mmmf mrrfff!"
|
||||
return 0
|
||||
var/obj/effect/proc_holder/spell/noclothes/spell = locate() in user.spell_list
|
||||
var/obj/effect/proc_holder/spell/wizard/noclothes/spell = locate() in user.spell_list
|
||||
if(clothes_req && !(spell && istype(spell)))//clothes check
|
||||
if(!istype(usr, /mob/living/carbon/human))
|
||||
usr << "You aren't a human, Why are you trying to cast a human spell, silly non-human? Casting human spells is for humans."
|
||||
@@ -103,7 +103,7 @@ var/list/spells = typesof(/obj/effect/proc_holder/spell) //needed for the badmin
|
||||
|
||||
return 1
|
||||
|
||||
/obj/effect/proc_holder/spell/proc/invocation(mob/user = usr) //spelling the spell out and setting it on recharge/reducing charges amount
|
||||
/obj/effect/proc_holder/spell/wizard/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
|
||||
@@ -116,26 +116,26 @@ var/list/spells = typesof(/obj/effect/proc_holder/spell) //needed for the badmin
|
||||
else
|
||||
user.whisper(replacetext(invocation," ","`"))
|
||||
|
||||
/obj/effect/proc_holder/spell/New()
|
||||
/obj/effect/proc_holder/spell/wizard/New()
|
||||
..()
|
||||
|
||||
charge_counter = charge_max
|
||||
|
||||
/obj/effect/proc_holder/spell/Click()
|
||||
/obj/effect/proc_holder/spell/wizard/Click()
|
||||
if(cast_check())
|
||||
choose_targets()
|
||||
return 1
|
||||
|
||||
/obj/effect/proc_holder/spell/proc/choose_targets(mob/user = usr) //depends on subtype - /targeted or /aoe_turf
|
||||
/obj/effect/proc_holder/spell/wizard/proc/choose_targets(mob/user = usr) //depends on subtype - /targeted or /aoe_turf
|
||||
return
|
||||
|
||||
/obj/effect/proc_holder/spell/proc/start_recharge()
|
||||
/obj/effect/proc_holder/spell/wizard/proc/start_recharge()
|
||||
while(charge_counter < charge_max)
|
||||
sleep(1)
|
||||
charge_counter++
|
||||
usr.update_power_buttons()
|
||||
|
||||
/obj/effect/proc_holder/spell/proc/perform(list/targets, recharge = 1, mob/user = usr) //if recharge is started is important for the trigger spells
|
||||
/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
|
||||
before_cast(targets)
|
||||
invocation()
|
||||
user.attack_log += text("\[[time_stamp()]\] <font color='red'>[user.real_name] ([user.ckey]) cast the spell [name].</font>")
|
||||
@@ -148,7 +148,7 @@ var/list/spells = typesof(/obj/effect/proc_holder/spell) //needed for the badmin
|
||||
cast(targets)
|
||||
after_cast(targets)
|
||||
|
||||
/obj/effect/proc_holder/spell/proc/before_cast(list/targets)
|
||||
/obj/effect/proc_holder/spell/wizard/proc/before_cast(list/targets)
|
||||
if(overlay)
|
||||
for(var/atom/target in targets)
|
||||
var/location
|
||||
@@ -164,7 +164,7 @@ var/list/spells = typesof(/obj/effect/proc_holder/spell) //needed for the badmin
|
||||
spawn(overlay_lifespan)
|
||||
del(spell)
|
||||
|
||||
/obj/effect/proc_holder/spell/proc/after_cast(list/targets)
|
||||
/obj/effect/proc_holder/spell/wizard/proc/after_cast(list/targets)
|
||||
for(var/atom/target in targets)
|
||||
var/location
|
||||
if(istype(target,/mob/living))
|
||||
@@ -188,13 +188,13 @@ var/list/spells = typesof(/obj/effect/proc_holder/spell) //needed for the badmin
|
||||
smoke.start()
|
||||
usr.update_power_buttons()
|
||||
|
||||
/obj/effect/proc_holder/spell/proc/cast(list/targets)
|
||||
/obj/effect/proc_holder/spell/wizard/proc/cast(list/targets)
|
||||
return
|
||||
|
||||
/obj/effect/proc_holder/spell/proc/critfail(list/targets)
|
||||
/obj/effect/proc_holder/spell/wizard/proc/critfail(list/targets)
|
||||
return
|
||||
|
||||
/obj/effect/proc_holder/spell/proc/revert_cast(mob/user = usr) //resets recharge or readds a charge
|
||||
/obj/effect/proc_holder/spell/wizard/proc/revert_cast(mob/user = usr) //resets recharge or readds a charge
|
||||
switch(charge_type)
|
||||
if("recharge")
|
||||
charge_counter = charge_max
|
||||
@@ -205,7 +205,7 @@ var/list/spells = typesof(/obj/effect/proc_holder/spell) //needed for the badmin
|
||||
|
||||
return
|
||||
|
||||
/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
|
||||
/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
|
||||
switch(type)
|
||||
if("bruteloss")
|
||||
target.adjustBruteLoss(amount)
|
||||
@@ -225,15 +225,15 @@ 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/targeted //can mean aoe for mobs (limited/unlimited number) or one target mob
|
||||
/obj/effect/proc_holder/spell/wizard/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
|
||||
|
||||
/obj/effect/proc_holder/spell/aoe_turf //affects all turfs in view or range (depends)
|
||||
/obj/effect/proc_holder/spell/wizard/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/targeted/choose_targets(mob/user = usr)
|
||||
/obj/effect/proc_holder/spell/wizard/targeted/choose_targets(mob/user = usr)
|
||||
var/list/targets = list()
|
||||
|
||||
switch(max_targets)
|
||||
@@ -280,7 +280,7 @@ var/list/spells = typesof(/obj/effect/proc_holder/spell) //needed for the badmin
|
||||
|
||||
return
|
||||
|
||||
/obj/effect/proc_holder/spell/aoe_turf/choose_targets(mob/user = usr)
|
||||
/obj/effect/proc_holder/spell/wizard/aoe_turf/choose_targets(mob/user = usr)
|
||||
var/list/targets = list()
|
||||
|
||||
for(var/turf/target in view_or_range(range,user,selection_type))
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
/obj/effect/proc_holder/spell/targeted/area_teleport
|
||||
/obj/effect/proc_holder/spell/wizard/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/targeted/area_teleport/perform(list/targets, recharge = 1)
|
||||
/obj/effect/proc_holder/spell/wizard/targeted/area_teleport/perform(list/targets, recharge = 1)
|
||||
var/thearea = before_cast(targets)
|
||||
if(!thearea || !cast_check(1))
|
||||
revert_cast()
|
||||
@@ -17,7 +17,7 @@
|
||||
cast(targets,thearea)
|
||||
after_cast(targets)
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/area_teleport/before_cast(list/targets)
|
||||
/obj/effect/proc_holder/spell/wizard/targeted/area_teleport/before_cast(list/targets)
|
||||
var/A = null
|
||||
|
||||
if(!randomise_selection)
|
||||
@@ -29,7 +29,7 @@
|
||||
|
||||
return thearea
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/area_teleport/cast(list/targets,area/thearea)
|
||||
/obj/effect/proc_holder/spell/wizard/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))
|
||||
@@ -65,7 +65,7 @@
|
||||
|
||||
return
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/area_teleport/invocation(area/chosenarea = null)
|
||||
/obj/effect/proc_holder/spell/wizard/targeted/area_teleport/invocation(area/chosenarea = null)
|
||||
if(!invocation_area || !chosenarea)
|
||||
..()
|
||||
else
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/effect/proc_holder/spell/targeted/charge
|
||||
/obj/effect/proc_holder/spell/wizard/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/targeted/charge/cast(list/targets)
|
||||
/obj/effect/proc_holder/spell/wizard/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/S in M.spell_list)
|
||||
for(var/obj/effect/proc_holder/spell/wizard/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
|
||||
|
||||
@@ -1,26 +0,0 @@
|
||||
/obj/effect/proc_holder/spell/targeted/embiggen
|
||||
name = "Embiggen"
|
||||
desc = "Make sure everyone knows you're there!"
|
||||
charge_max = 600
|
||||
|
||||
clothes_req = 0
|
||||
stat_allowed = 0
|
||||
invocation_type = "none"
|
||||
range = -1
|
||||
selection_type = "range"
|
||||
|
||||
icon_power_button = "genetic_view"
|
||||
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/remoteview/cast(list/targets)
|
||||
if(!ishuman(usr))
|
||||
return
|
||||
|
||||
for(var/mob/living/target in targets)
|
||||
var/matrix/M = matrix()
|
||||
M.Scale(2)
|
||||
target.transform = M
|
||||
|
||||
spawn(300)
|
||||
M = matrix()
|
||||
target.transform = M
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/effect/proc_holder/spell/aoe_turf/conjure
|
||||
/obj/effect/proc_holder/spell/wizard/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/aoe_turf/conjure/cast(list/targets)
|
||||
/obj/effect/proc_holder/spell/wizard/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/aoe_turf/conjure/summonEdSwarm //test purposes
|
||||
/obj/effect/proc_holder/spell/wizard/aoe_turf/conjure/summonEdSwarm //test purposes
|
||||
name = "Dispense Wizard Justice"
|
||||
desc = "This spell dispenses wizard justice."
|
||||
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
//////////////////////////////Construct Spells/////////////////////////
|
||||
|
||||
/obj/effect/proc_holder/spell/aoe_turf/conjure/construct/lesser
|
||||
/obj/effect/proc_holder/spell/wizard/aoe_turf/conjure/construct/lesser
|
||||
charge_max = 1800
|
||||
|
||||
/obj/effect/proc_holder/spell/aoe_turf/conjure/floor
|
||||
/obj/effect/proc_holder/spell/wizard/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/aoe_turf/conjure/wall
|
||||
/obj/effect/proc_holder/spell/wizard/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/aoe_turf/conjure/wall/reinforced
|
||||
/obj/effect/proc_holder/spell/wizard/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/aoe_turf/conjure/soulstone
|
||||
/obj/effect/proc_holder/spell/wizard/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/aoe_turf/conjure/lesserforcewall
|
||||
/obj/effect/proc_holder/spell/wizard/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/targeted/ethereal_jaunt/shift
|
||||
/obj/effect/proc_holder/spell/wizard/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/targeted/projectile/magic_missile/lesser
|
||||
/obj/effect/proc_holder/spell/wizard/targeted/projectile/magic_missile/lesser
|
||||
name = "Lesser Magic Missile"
|
||||
desc = "This spell fires several, slow moving, magic projectiles at nearby targets."
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/effect/proc_holder/spell/dumbfire
|
||||
/obj/effect/proc_holder/spell/wizard/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/dumbfire/choose_targets(mob/user = usr)
|
||||
/obj/effect/proc_holder/spell/wizard/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/dumbfire/cast(list/targets, mob/user = usr)
|
||||
/obj/effect/proc_holder/spell/wizard/dumbfire/cast(list/targets, mob/user = usr)
|
||||
|
||||
for(var/turf/target in targets)
|
||||
spawn(0)
|
||||
var/obj/effect/proc_holder/spell/targeted/projectile
|
||||
var/obj/effect/proc_holder/spell/wizard/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/targeted/trigger(user)
|
||||
projectile = new /obj/effect/proc_holder/spell/wizard/targeted/trigger(user)
|
||||
projectile:linked_spells += proj_type
|
||||
projectile.icon = proj_icon
|
||||
projectile.icon_state = proj_icon_state
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
/obj/effect/proc_holder/spell/targeted/emplosion
|
||||
/obj/effect/proc_holder/spell/wizard/targeted/emplosion
|
||||
name = "Emplosion"
|
||||
desc = "This spell emplodes an area."
|
||||
|
||||
var/emp_heavy = 2
|
||||
var/emp_light = 3
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/emplosion/cast(list/targets)
|
||||
/obj/effect/proc_holder/spell/wizard/targeted/emplosion/cast(list/targets)
|
||||
|
||||
for(var/mob/living/target in targets)
|
||||
empulse(target.loc, emp_heavy, emp_light)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/effect/proc_holder/spell/targeted/ethereal_jaunt
|
||||
/obj/effect/proc_holder/spell/wizard/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 @@
|
||||
|
||||
icon_power_button = "spell_jaunt"
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/ethereal_jaunt/cast(list/targets) //magnets, so mostly hardcoded
|
||||
/obj/effect/proc_holder/spell/wizard/targeted/ethereal_jaunt/cast(list/targets) //magnets, so mostly hardcoded
|
||||
for(var/mob/living/target in targets)
|
||||
spawn(0)
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/effect/proc_holder/spell/targeted/explosion
|
||||
/obj/effect/proc_holder/spell/wizard/targeted/explosion
|
||||
name = "Explosion"
|
||||
desc = "This spell explodes an area."
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
var/ex_heavy = 2
|
||||
var/ex_light = 3
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/explosion/cast(list/targets)
|
||||
/obj/effect/proc_holder/spell/wizard/targeted/explosion/cast(list/targets)
|
||||
|
||||
for(var/mob/living/target in targets)
|
||||
explosion(target.loc,ex_severe,ex_heavy,ex_light)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/effect/proc_holder/spell/targeted/genetic
|
||||
/obj/effect/proc_holder/spell/wizard/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/targeted/genetic/cast(list/targets)
|
||||
/obj/effect/proc_holder/spell/wizard/targeted/genetic/cast(list/targets)
|
||||
|
||||
for(var/mob/living/target in targets)
|
||||
for(var/x in mutations)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/effect/proc_holder/spell/targeted/horsemask
|
||||
/obj/effect/proc_holder/spell/wizard/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 @@
|
||||
|
||||
icon_power_button = "spell_horse"
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/horsemask/cast(list/targets, mob/user = usr)
|
||||
/obj/effect/proc_holder/spell/wizard/targeted/horsemask/cast(list/targets, mob/user = usr)
|
||||
if(!targets.len)
|
||||
user << "<span class='notice'>No target found in range.</span>"
|
||||
return
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/effect/proc_holder/spell/targeted/inflict_handler
|
||||
/obj/effect/proc_holder/spell/wizard/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/targeted/inflict_handler/cast(list/targets)
|
||||
/obj/effect/proc_holder/spell/wizard/targeted/inflict_handler/cast(list/targets)
|
||||
|
||||
for(var/mob/living/target in targets)
|
||||
switch(destroys)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/effect/proc_holder/spell/aoe_turf/knock
|
||||
/obj/effect/proc_holder/spell/wizard/aoe_turf/knock
|
||||
name = "Knock"
|
||||
desc = "This spell opens nearby doors and does not require wizard garb."
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
|
||||
icon_power_button = "spell_knock"
|
||||
|
||||
/obj/effect/proc_holder/spell/aoe_turf/knock/cast(list/targets)
|
||||
/obj/effect/proc_holder/spell/wizard/aoe_turf/knock/cast(list/targets)
|
||||
for(var/turf/T in targets)
|
||||
for(var/obj/machinery/door/door in T.contents)
|
||||
spawn(1)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/effect/proc_holder/spell/targeted/mind_transfer
|
||||
/obj/effect/proc_holder/spell/wizard/targeted/mind_transfer
|
||||
name = "Mind Transfer"
|
||||
desc = "This spell allows the user to switch bodies with a target."
|
||||
|
||||
@@ -25,7 +25,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/targeted/mind_transfer/cast(list/targets,mob/user = usr)
|
||||
/obj/effect/proc_holder/spell/wizard/targeted/mind_transfer/cast(list/targets,mob/user = usr)
|
||||
if(!targets.len)
|
||||
user << "No mind found."
|
||||
return
|
||||
@@ -61,7 +61,7 @@ Also, you never added distance checking after target is selected. I've went ahea
|
||||
|
||||
//SPELL LOSS BEGIN
|
||||
//NOTE: The caster must ALWAYS keep mind transfer, even when other spells are lost.
|
||||
var/obj/effect/proc_holder/spell/targeted/mind_transfer/m_transfer = locate() in user.spell_list//Find mind transfer directly.
|
||||
var/obj/effect/proc_holder/spell/wizard/targeted/mind_transfer/m_transfer = locate() in user.spell_list//Find mind transfer directly.
|
||||
var/list/checked_spells = user.spell_list
|
||||
checked_spells -= m_transfer //Remove Mind Transfer from the list.
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/effect/proc_holder/spell/targeted/projectile
|
||||
/obj/effect/proc_holder/spell/wizard/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/targeted" //IMPORTANT use only subtypes of this
|
||||
var/proj_type = "/obj/effect/proc_holder/spell/wizard/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/targeted/projectile/cast(list/targets, mob/user = usr)
|
||||
/obj/effect/proc_holder/spell/wizard/targeted/projectile/cast(list/targets, mob/user = usr)
|
||||
|
||||
for(var/mob/living/target in targets)
|
||||
spawn(0)
|
||||
var/obj/effect/proc_holder/spell/targeted/projectile
|
||||
var/obj/effect/proc_holder/spell/wizard/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/targeted/trigger(user)
|
||||
projectile = new /obj/effect/proc_holder/spell/wizard/targeted/trigger(user)
|
||||
projectile:linked_spells += proj_type
|
||||
projectile.icon = proj_icon
|
||||
projectile.icon_state = proj_icon_state
|
||||
|
||||
@@ -1,28 +1,28 @@
|
||||
/obj/effect/proc_holder/spell/targeted/trigger
|
||||
/obj/effect/proc_holder/spell/wizard/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/targeted/trigger/New()
|
||||
/obj/effect/proc_holder/spell/wizard/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/targeted/trigger/Destroy()
|
||||
/obj/effect/proc_holder/spell/wizard/targeted/trigger/Destroy()
|
||||
for(var/spell in contents)
|
||||
del(spell)
|
||||
|
||||
..()
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/trigger/cast(list/targets)
|
||||
/obj/effect/proc_holder/spell/wizard/targeted/trigger/cast(list/targets)
|
||||
for(var/mob/living/target in targets)
|
||||
for(var/obj/effect/proc_holder/spell/spell in contents)
|
||||
for(var/obj/effect/proc_holder/spell/wizard/spell in contents)
|
||||
spell.perform(list(target),0)
|
||||
for(var/obj/effect/proc_holder/spell/spell in linked_spells)
|
||||
for(var/obj/effect/proc_holder/spell/wizard/spell in linked_spells)
|
||||
spell.perform(list(target),0)
|
||||
|
||||
return
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/effect/proc_holder/spell/targeted/turf_teleport
|
||||
/obj/effect/proc_holder/spell/wizard/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/targeted/turf_teleport/cast(list/targets)
|
||||
/obj/effect/proc_holder/spell/wizard/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))
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/effect/proc_holder/spell/targeted/projectile/magic_missile
|
||||
/obj/effect/proc_holder/spell/wizard/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/targeted/inflict_handler/magic_missile"
|
||||
proj_type = "/obj/effect/proc_holder/spell/wizard/targeted/inflict_handler/magic_missile"
|
||||
|
||||
proj_lifespan = 20
|
||||
proj_step_delay = 5
|
||||
@@ -26,15 +26,15 @@
|
||||
|
||||
icon_power_button = "spell_missile"
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/inflict_handler/magic_missile
|
||||
/obj/effect/proc_holder/spell/wizard/targeted/inflict_handler/magic_missile
|
||||
amt_weakened = 5
|
||||
amt_dam_fire = 10
|
||||
|
||||
/obj/effect/proc_holder/spell/noclothes
|
||||
/obj/effect/proc_holder/spell/wizard/noclothes
|
||||
name = "No Clothes"
|
||||
desc = "This is a placeholder for knowing if you dont need clothes for any spell"
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/genetic/mutate
|
||||
/obj/effect/proc_holder/spell/wizard/targeted/genetic/mutate
|
||||
name = "Mutate"
|
||||
desc = "This spell causes you to turn into a hulk and gain laser vision for a short while."
|
||||
|
||||
@@ -51,7 +51,7 @@
|
||||
duration = 300
|
||||
cooldown_min = 300 //25 deciseconds reduction per rank
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/inflict_handler/disintegrate
|
||||
/obj/effect/proc_holder/spell/wizard/targeted/inflict_handler/disintegrate
|
||||
name = "Disintegrate"
|
||||
desc = "This spell instantly kills somebody adjacent to you with the vilest of magick."
|
||||
|
||||
@@ -70,7 +70,7 @@
|
||||
|
||||
icon_power_button = "spell_disintegrate"
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/smoke
|
||||
/obj/effect/proc_holder/spell/wizard/targeted/smoke
|
||||
name = "Smoke"
|
||||
desc = "This spell spawns a cloud of choking smoke at your location and does not require wizard garb."
|
||||
|
||||
@@ -88,7 +88,7 @@
|
||||
|
||||
icon_power_button = "spell_smoke"
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/emplosion/disable_tech
|
||||
/obj/effect/proc_holder/spell/wizard/targeted/emplosion/disable_tech
|
||||
name = "Disable Tech"
|
||||
desc = "This spell disables all weapons, cameras and most other technology in range."
|
||||
charge_max = 400
|
||||
@@ -104,7 +104,7 @@
|
||||
|
||||
icon_power_button = "spell_tech"
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/turf_teleport/blink
|
||||
/obj/effect/proc_holder/spell/wizard/targeted/turf_teleport/blink
|
||||
name = "Blink"
|
||||
desc = "This spell randomly teleports you a short distance."
|
||||
|
||||
@@ -128,7 +128,7 @@
|
||||
|
||||
icon_power_button = "spell_blink"
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/area_teleport/teleport
|
||||
/obj/effect/proc_holder/spell/wizard/targeted/area_teleport/teleport
|
||||
name = "Teleport"
|
||||
desc = "This spell teleports you to a type of area of your selection."
|
||||
|
||||
@@ -146,7 +146,7 @@
|
||||
|
||||
icon_power_button = "spell_teleport"
|
||||
|
||||
/obj/effect/proc_holder/spell/aoe_turf/conjure/forcewall
|
||||
/obj/effect/proc_holder/spell/wizard/aoe_turf/conjure/forcewall
|
||||
name = "Forcewall"
|
||||
desc = "This spell creates an unbreakable wall that lasts for 30 seconds and does not need wizard garb."
|
||||
|
||||
@@ -163,7 +163,7 @@
|
||||
|
||||
icon_power_button = "spell_forcewall"
|
||||
|
||||
/obj/effect/proc_holder/spell/aoe_turf/conjure/carp
|
||||
/obj/effect/proc_holder/spell/wizard/aoe_turf/conjure/carp
|
||||
name = "Summon Carp"
|
||||
desc = "This spell conjures a simple carp."
|
||||
|
||||
@@ -177,7 +177,7 @@
|
||||
summon_type = list(/mob/living/simple_animal/hostile/carp)
|
||||
|
||||
|
||||
/obj/effect/proc_holder/spell/aoe_turf/conjure/construct
|
||||
/obj/effect/proc_holder/spell/wizard/aoe_turf/conjure/construct
|
||||
name = "Artificer"
|
||||
desc = "This spell conjures a construct which may be controlled by Shades"
|
||||
|
||||
@@ -191,7 +191,7 @@
|
||||
summon_type = list(/obj/structure/constructshell)
|
||||
|
||||
|
||||
/obj/effect/proc_holder/spell/aoe_turf/conjure/creature
|
||||
/obj/effect/proc_holder/spell/wizard/aoe_turf/conjure/creature
|
||||
name = "Summon Creature Swarm"
|
||||
desc = "This spell tears the fabric of reality, allowing horrific daemons to spill forth"
|
||||
|
||||
@@ -205,7 +205,7 @@
|
||||
|
||||
summon_type = list(/mob/living/simple_animal/hostile/creature)
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/trigger/blind
|
||||
/obj/effect/proc_holder/spell/wizard/targeted/trigger/blind
|
||||
name = "Blind"
|
||||
desc = "This spell temporarily blinds a single person and does not require wizard garb."
|
||||
|
||||
@@ -217,19 +217,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/targeted/inflict_handler/blind","/obj/effect/proc_holder/spell/targeted/genetic/blind")
|
||||
starting_spells = list("/obj/effect/proc_holder/spell/wizard/targeted/inflict_handler/blind","/obj/effect/proc_holder/spell/wizard/targeted/genetic/blind")
|
||||
|
||||
icon_power_button = "spell_blind"
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/inflict_handler/blind
|
||||
/obj/effect/proc_holder/spell/wizard/targeted/inflict_handler/blind
|
||||
amt_eye_blind = 10
|
||||
amt_eye_blurry = 20
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/genetic/blind
|
||||
/obj/effect/proc_holder/spell/wizard/targeted/genetic/blind
|
||||
disabilities = 1
|
||||
duration = 300
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/inflict_handler/flesh_to_stone
|
||||
/obj/effect/proc_holder/spell/wizard/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."
|
||||
|
||||
@@ -246,7 +246,7 @@
|
||||
|
||||
icon_power_button = "spell_stone"
|
||||
|
||||
/obj/effect/proc_holder/spell/dumbfire/fireball
|
||||
/obj/effect/proc_holder/spell/wizard/dumbfire/fireball
|
||||
name = "Fireball"
|
||||
desc = "This spell fires a fireball at a target and does not require wizard garb."
|
||||
|
||||
@@ -260,22 +260,22 @@
|
||||
|
||||
proj_icon_state = "fireball"
|
||||
proj_name = "a fireball"
|
||||
proj_type = "/obj/effect/proc_holder/spell/turf/fireball"
|
||||
proj_type = "/obj/effect/proc_holder/spell/wizard/turf/fireball"
|
||||
|
||||
proj_lifespan = 200
|
||||
proj_step_delay = 1
|
||||
|
||||
icon_power_button = "spell_fireball"
|
||||
|
||||
/obj/effect/proc_holder/spell/turf/fireball/cast(var/turf/T)
|
||||
/obj/effect/proc_holder/spell/wizard/turf/fireball/cast(var/turf/T)
|
||||
explosion(T, -1, 0, 2, 0)
|
||||
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/inflict_handler/fireball
|
||||
/obj/effect/proc_holder/spell/wizard/targeted/inflict_handler/fireball
|
||||
amt_dam_brute = 20
|
||||
amt_dam_fire = 25
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/explosion/fireball
|
||||
/obj/effect/proc_holder/spell/wizard/targeted/explosion/fireball
|
||||
ex_severe = -1
|
||||
ex_heavy = 0
|
||||
ex_light = 2
|
||||
|
||||
@@ -295,13 +295,13 @@
|
||||
deactivation_messages = list("You no longer feel uncomfortably hot.")
|
||||
instability=5
|
||||
|
||||
spelltype=/obj/effect/proc_holder/spell/targeted/immolate
|
||||
spelltype=/obj/effect/proc_holder/spell/wizard/targeted/immolate
|
||||
|
||||
New()
|
||||
..()
|
||||
block = IMMOLATEBLOCK
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/immolate
|
||||
/obj/effect/proc_holder/spell/wizard/targeted/immolate
|
||||
name = "Incendiary Mitochondria"
|
||||
desc = "The subject becomes able to convert excess cellular energy into thermal energy."
|
||||
panel = "Abilities"
|
||||
@@ -319,7 +319,7 @@
|
||||
|
||||
icon_power_button = "genetic_incendiary"
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/immolate/cast(list/targets)
|
||||
/obj/effect/proc_holder/spell/wizard/targeted/immolate/cast(list/targets)
|
||||
var/mob/living/L = usr
|
||||
|
||||
L.adjust_fire_stacks(0.5) // Same as walking into fire. Was 100 (goon fire)
|
||||
|
||||
@@ -79,7 +79,7 @@
|
||||
/////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/datum/dna/gene/basic/grant_spell
|
||||
var/obj/effect/proc_holder/spell/spelltype
|
||||
var/obj/effect/proc_holder/spell/wizard/spelltype
|
||||
|
||||
activate(var/mob/M, var/connected, var/flags)
|
||||
M.spell_list += new spelltype(M)
|
||||
@@ -87,7 +87,7 @@
|
||||
return 1
|
||||
|
||||
deactivate(var/mob/M, var/connected, var/flags)
|
||||
for(var/obj/effect/proc_holder/spell/S in M.spell_list)
|
||||
for(var/obj/effect/proc_holder/spell/wizard/S in M.spell_list)
|
||||
if(istype(S,spelltype))
|
||||
M.spell_list.Remove(S)
|
||||
..()
|
||||
@@ -113,13 +113,13 @@
|
||||
deactivation_messages = list("Your fingers feel warmer.")
|
||||
instability=10
|
||||
|
||||
spelltype = /obj/effect/proc_holder/spell/targeted/cryokinesis
|
||||
spelltype = /obj/effect/proc_holder/spell/wizard/targeted/cryokinesis
|
||||
|
||||
New()
|
||||
..()
|
||||
block = CRYOBLOCK
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/cryokinesis
|
||||
/obj/effect/proc_holder/spell/wizard/targeted/cryokinesis
|
||||
name = "Cryokinesis"
|
||||
desc = "Drops the bodytemperature of another person."
|
||||
panel = "Abilities"
|
||||
@@ -138,7 +138,7 @@
|
||||
|
||||
icon_power_button = "genetic_cryo"
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/cryokinesis/cast(list/targets)
|
||||
/obj/effect/proc_holder/spell/wizard/targeted/cryokinesis/cast(list/targets)
|
||||
if(!targets.len)
|
||||
usr << "<span class='notice'>No target found in range.</span>"
|
||||
return
|
||||
@@ -205,13 +205,13 @@
|
||||
deactivation_messages = list("You don't feel quite so hungry anymore.")
|
||||
instability=3
|
||||
|
||||
spelltype=/obj/effect/proc_holder/spell/targeted/eat
|
||||
spelltype=/obj/effect/proc_holder/spell/wizard/targeted/eat
|
||||
|
||||
New()
|
||||
..()
|
||||
block = EATBLOCK
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/eat
|
||||
/obj/effect/proc_holder/spell/wizard/targeted/eat
|
||||
name = "Eat"
|
||||
desc = "Eat just about anything!"
|
||||
panel = "Abilities"
|
||||
@@ -229,7 +229,7 @@
|
||||
|
||||
var/list/types_allowed=list(/obj/item,/mob/living/simple_animal, /mob/living/carbon/monkey, /mob/living/carbon/human)
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/eat/choose_targets(mob/user = usr)
|
||||
/obj/effect/proc_holder/spell/wizard/targeted/eat/choose_targets(mob/user = usr)
|
||||
var/list/targets = list()
|
||||
var/list/possible_targets = list()
|
||||
|
||||
@@ -245,7 +245,7 @@
|
||||
|
||||
perform(targets)
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/eat/proc/doHeal(var/mob/user)
|
||||
/obj/effect/proc_holder/spell/wizard/targeted/eat/proc/doHeal(var/mob/user)
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/H=user
|
||||
for(var/name in H.organs_by_name)
|
||||
@@ -259,7 +259,7 @@
|
||||
H.UpdateDamageIcon()
|
||||
H.updatehealth()
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/eat/cast(list/targets)
|
||||
/obj/effect/proc_holder/spell/wizard/targeted/eat/cast(list/targets)
|
||||
if(!targets.len)
|
||||
usr << "<span class='notice'>No target found in range.</span>"
|
||||
return
|
||||
@@ -327,13 +327,13 @@
|
||||
deactivation_messages = list("Your leg muscles shrink back to normal.")
|
||||
instability=2
|
||||
|
||||
spelltype =/obj/effect/proc_holder/spell/targeted/leap
|
||||
spelltype =/obj/effect/proc_holder/spell/wizard/targeted/leap
|
||||
|
||||
New()
|
||||
..()
|
||||
block = JUMPBLOCK
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/leap
|
||||
/obj/effect/proc_holder/spell/wizard/targeted/leap
|
||||
name = "Jump"
|
||||
desc = "Leap great distances!"
|
||||
panel = "Abilities"
|
||||
@@ -349,7 +349,7 @@
|
||||
|
||||
icon_power_button = "genetic_jump"
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/leap/cast(list/targets)
|
||||
/obj/effect/proc_holder/spell/wizard/targeted/leap/cast(list/targets)
|
||||
var/failure = 0
|
||||
if (istype(usr.loc,/mob/) || usr.lying || usr.stunned || usr.buckled || usr.stat)
|
||||
usr << "\red You can't jump right now!"
|
||||
@@ -422,7 +422,7 @@
|
||||
name = "Polymorphism"
|
||||
desc = "Enables the subject to reconfigure their appearance to mimic that of others."
|
||||
|
||||
spelltype =/obj/effect/proc_holder/spell/targeted/polymorph
|
||||
spelltype =/obj/effect/proc_holder/spell/wizard/targeted/polymorph
|
||||
//cooldown = 1800
|
||||
activation_messages = list("You don't feel entirely like yourself somehow.")
|
||||
deactivation_messages = list("You feel secure in your identity.")
|
||||
@@ -432,7 +432,7 @@
|
||||
..()
|
||||
block = POLYMORPHBLOCK
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/polymorph
|
||||
/obj/effect/proc_holder/spell/wizard/targeted/polymorph
|
||||
name = "Polymorph"
|
||||
desc = "Mimic the appearance of others!"
|
||||
panel = "Abilities"
|
||||
@@ -446,7 +446,7 @@
|
||||
|
||||
icon_power_button = "genetic_poly"
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/polymorph/cast(list/targets)
|
||||
/obj/effect/proc_holder/spell/wizard/targeted/polymorph/cast(list/targets)
|
||||
var/mob/living/M=targets[1]
|
||||
if(!ishuman(M))
|
||||
usr << "\red You can only change your appearance to that of another human."
|
||||
@@ -472,7 +472,7 @@
|
||||
name = "Empathic Thought"
|
||||
desc = "The subject becomes able to read the minds of others for certain information."
|
||||
|
||||
spelltype = /obj/effect/proc_holder/spell/targeted/empath
|
||||
spelltype = /obj/effect/proc_holder/spell/wizard/targeted/empath
|
||||
activation_messages = list("You suddenly notice more about others than you did before.")
|
||||
deactivation_messages = list("You no longer feel able to sense intentions.")
|
||||
instability=1
|
||||
@@ -483,7 +483,7 @@
|
||||
..()
|
||||
block = EMPATHBLOCK
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/empath
|
||||
/obj/effect/proc_holder/spell/wizard/targeted/empath
|
||||
name = "Read Mind"
|
||||
desc = "Read the minds of others for information."
|
||||
charge_max = 1800
|
||||
@@ -495,11 +495,11 @@
|
||||
|
||||
icon_power_button = "genetic_empath"
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/empath/choose_targets(mob/user = usr)
|
||||
/obj/effect/proc_holder/spell/wizard/targeted/empath/choose_targets(mob/user = usr)
|
||||
var/list/targets
|
||||
targets += input("Choose the target to spy on.", "Targeting") as mob in range(7,usr)
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/empath/cast(list/targets)
|
||||
/obj/effect/proc_holder/spell/wizard/targeted/empath/cast(list/targets)
|
||||
if(!ishuman(usr)) return
|
||||
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@ Obviously, requires DNA2.
|
||||
deactivation_messages = list("Your muscles quit tensing.")
|
||||
instability=7
|
||||
|
||||
spelltype = /obj/effect/proc_holder/spell/targeted/hulk
|
||||
spelltype = /obj/effect/proc_holder/spell/wizard/targeted/hulk
|
||||
|
||||
New()
|
||||
..()
|
||||
@@ -52,7 +52,7 @@ Obviously, requires DNA2.
|
||||
M.Weaken(3)
|
||||
M.emote("collapse")
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/hulk
|
||||
/obj/effect/proc_holder/spell/wizard/targeted/hulk
|
||||
name = "Hulk Out"
|
||||
panel = "Abilities"
|
||||
range = -1
|
||||
@@ -68,11 +68,11 @@ Obviously, requires DNA2.
|
||||
|
||||
icon_power_button = "genetic_hulk"
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/hulk/New()
|
||||
/obj/effect/proc_holder/spell/wizard/targeted/hulk/New()
|
||||
desc = "Get mad! For [HULK_DURATION/10] seconds, anyway."
|
||||
..()
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/hulk/cast(list/targets)
|
||||
/obj/effect/proc_holder/spell/wizard/targeted/hulk/cast(list/targets)
|
||||
if (istype(usr.loc,/mob/))
|
||||
usr << "\red You can't hulk out right now!"
|
||||
return
|
||||
@@ -92,7 +92,7 @@ Obviously, requires DNA2.
|
||||
name = "Morphism"
|
||||
desc = "Enables the subject to reconfigure their appearance to that of any human."
|
||||
|
||||
spelltype =/obj/effect/proc_holder/spell/targeted/morph
|
||||
spelltype =/obj/effect/proc_holder/spell/wizard/targeted/morph
|
||||
//cooldown = 1800
|
||||
activation_messages=list("Your body feels funny.")
|
||||
deactivation_messages = list("You body feels normal.")
|
||||
@@ -105,7 +105,7 @@ Obviously, requires DNA2.
|
||||
..()
|
||||
block = MORPHBLOCK
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/morph
|
||||
/obj/effect/proc_holder/spell/wizard/targeted/morph
|
||||
name = "Morph"
|
||||
desc = "Mimic the appearance of your choice!"
|
||||
panel = "Abilities"
|
||||
@@ -119,7 +119,7 @@ Obviously, requires DNA2.
|
||||
|
||||
icon_power_button = "genetic_morph"
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/morph/cast(list/targets)
|
||||
/obj/effect/proc_holder/spell/wizard/targeted/morph/cast(list/targets)
|
||||
if(!ishuman(usr)) return
|
||||
|
||||
if (istype(usr.loc,/mob/))
|
||||
@@ -199,13 +199,13 @@ Obviously, requires DNA2.
|
||||
mutation=M_REMOTE_TALK
|
||||
instability=1
|
||||
|
||||
spelltype =/obj/effect/proc_holder/spell/targeted/remotetalk
|
||||
spelltype =/obj/effect/proc_holder/spell/wizard/targeted/remotetalk
|
||||
|
||||
New()
|
||||
..()
|
||||
block=REMOTETALKBLOCK
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/remotetalk
|
||||
/obj/effect/proc_holder/spell/wizard/targeted/remotetalk
|
||||
name = "Project Mind"
|
||||
desc = "Make people understand your thoughts at any range!"
|
||||
charge_max = 100
|
||||
@@ -218,11 +218,11 @@ Obviously, requires DNA2.
|
||||
|
||||
icon_power_button = "genetic_project"
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/remotetalk/choose_targets(mob/user = usr)
|
||||
/obj/effect/proc_holder/spell/wizard/targeted/remotetalk/choose_targets(mob/user = usr)
|
||||
var/list/targets
|
||||
targets += input("Choose the target to talk to.", "Targeting") as mob in living_mob_list
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/remotetalk/cast(list/targets)
|
||||
/obj/effect/proc_holder/spell/wizard/targeted/remotetalk/cast(list/targets)
|
||||
if(!ishuman(usr)) return
|
||||
|
||||
var/say = input ("What do you wish to say")
|
||||
@@ -244,13 +244,13 @@ Obviously, requires DNA2.
|
||||
mutation=M_REMOTE_VIEW
|
||||
instability=3
|
||||
|
||||
spelltype =/obj/effect/proc_holder/spell/targeted/remoteview
|
||||
spelltype =/obj/effect/proc_holder/spell/wizard/targeted/remoteview
|
||||
|
||||
New()
|
||||
block=REMOTEVIEWBLOCK
|
||||
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/remoteview
|
||||
/obj/effect/proc_holder/spell/wizard/targeted/remoteview
|
||||
name = "Remote View"
|
||||
desc = "Spy on people from any range!"
|
||||
charge_max = 600
|
||||
@@ -263,11 +263,11 @@ Obviously, requires DNA2.
|
||||
|
||||
icon_power_button = "genetic_view"
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/remoteview/choose_targets(mob/user = usr)
|
||||
/obj/effect/proc_holder/spell/wizard/targeted/remoteview/choose_targets(mob/user = usr)
|
||||
var/list/targets
|
||||
targets += input("Choose the target to spy on.", "Targeting") as mob in living_mob_list
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/remoteview/cast(list/targets)
|
||||
/obj/effect/proc_holder/spell/wizard/targeted/remoteview/cast(list/targets)
|
||||
var/mob/living/carbon/human/user
|
||||
if(ishuman(usr))
|
||||
user = usr
|
||||
|
||||
@@ -60,21 +60,21 @@
|
||||
M << "<B>You are the [H.real_name]'s apprentice! You are bound by magic contract to follow their orders and help them in accomplishing their goals."
|
||||
switch(href_list["school"])
|
||||
if("destruction")
|
||||
M.spell_list += new /obj/effect/proc_holder/spell/targeted/projectile/magic_missile(M)
|
||||
M.spell_list += new /obj/effect/proc_holder/spell/dumbfire/fireball(M)
|
||||
M.spell_list += new /obj/effect/proc_holder/spell/wizard/targeted/projectile/magic_missile(M)
|
||||
M.spell_list += new /obj/effect/proc_holder/spell/wizard/dumbfire/fireball(M)
|
||||
M << "<B>Your service has not gone unrewarded, however. Studying under [H.real_name], you have learned powerful, destructive spells. You are able to cast magic missile and fireball."
|
||||
if("bluespace")
|
||||
M.spell_list += new /obj/effect/proc_holder/spell/targeted/area_teleport/teleport(M)
|
||||
M.spell_list += new /obj/effect/proc_holder/spell/targeted/ethereal_jaunt(M)
|
||||
M.spell_list += new /obj/effect/proc_holder/spell/wizard/targeted/area_teleport/teleport(M)
|
||||
M.spell_list += new /obj/effect/proc_holder/spell/wizard/targeted/ethereal_jaunt(M)
|
||||
M << "<B>Your service has not gone unrewarded, however. Studying under [H.real_name], you have learned reality bending mobility spells. You are able to cast teleport and ethereal jaunt."
|
||||
if("healing")
|
||||
M.spell_list += new /obj/effect/proc_holder/spell/targeted/charge(M)
|
||||
M.spell_list += new /obj/effect/proc_holder/spell/aoe_turf/conjure/forcewall(M)
|
||||
M.spell_list += new /obj/effect/proc_holder/spell/wizard/targeted/charge(M)
|
||||
M.spell_list += new /obj/effect/proc_holder/spell/wizard/aoe_turf/conjure/forcewall(M)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/gun/magic/staff/healing(M), slot_r_hand)
|
||||
M << "<B>Your service has not gone unrewarded, however. Studying under [H.real_name], you have learned livesaving survival spells. You are able to cast charge and forcewall."
|
||||
if("robeless")
|
||||
M.spell_list += new /obj/effect/proc_holder/spell/aoe_turf/knock(M)
|
||||
M.spell_list += new /obj/effect/proc_holder/spell/targeted/mind_transfer(M)
|
||||
M.spell_list += new /obj/effect/proc_holder/spell/wizard/aoe_turf/knock(M)
|
||||
M.spell_list += new /obj/effect/proc_holder/spell/wizard/targeted/mind_transfer(M)
|
||||
M << "<B>Your service has not gone unrewarded, however. Studying under [H.real_name], you have learned stealthy, robeless spells. You are able to cast knock and mindswap."
|
||||
M.update_power_buttons()
|
||||
M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_l_ear)
|
||||
|
||||
@@ -158,7 +158,7 @@
|
||||
*/
|
||||
var/list/available_spells = list(magicmissile = "Magic Missile", fireball = "Fireball", disintegrate = "Disintegrate", disabletech = "Disable Tech", smoke = "Smoke", blind = "Blind", mindswap = "Mind Transfer", forcewall = "Forcewall", blink = "Blink", teleport = "Teleport", mutate = "Mutate", etherealjaunt = "Ethereal Jaunt", knock = "Knock", horseman = "Curse of the Horseman", fleshtostone = "Flesh to Stone", summonguns = "Summon Guns", summonmagic = "Summon Magic", staffchange = "Staff of Change", soulstone = "Six Soul Stone Shards and the spell Artificer", armor = "Mastercrafted Armor Set", staffanimate = "Staff of Animation")
|
||||
var/already_knows = 0
|
||||
for(var/obj/effect/proc_holder/spell/aspell in H.spell_list)
|
||||
for(var/obj/effect/proc_holder/spell/wizard/aspell in H.spell_list)
|
||||
if(available_spells[href_list["spell_choice"]] == initial(aspell.name))
|
||||
already_knows = 1
|
||||
if(aspell.spell_level >= aspell.level_max)
|
||||
@@ -192,68 +192,68 @@
|
||||
switch(href_list["spell_choice"])
|
||||
if("noclothes")
|
||||
feedback_add_details("wizard_spell_learned","NC")
|
||||
H.spell_list += new /obj/effect/proc_holder/spell/noclothes
|
||||
H.spell_list += new /obj/effect/proc_holder/spell/wizard/noclothes
|
||||
temp = "This teaches you how to use your spells without your magical garb, truely you are the wizardest."
|
||||
uses--
|
||||
if("magicmissile")
|
||||
feedback_add_details("wizard_spell_learned","MM") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells
|
||||
H.spell_list += new /obj/effect/proc_holder/spell/targeted/projectile/magic_missile(H)
|
||||
H.spell_list += new /obj/effect/proc_holder/spell/wizard/targeted/projectile/magic_missile(H)
|
||||
temp = "You have learned magic missile."
|
||||
if("fireball")
|
||||
feedback_add_details("wizard_spell_learned","FB") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells
|
||||
H.spell_list += new /obj/effect/proc_holder/spell/dumbfire/fireball(H)
|
||||
H.spell_list += new /obj/effect/proc_holder/spell/wizard/dumbfire/fireball(H)
|
||||
temp = "You have learned fireball."
|
||||
if("disintegrate")
|
||||
feedback_add_details("wizard_spell_learned","DG") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells
|
||||
H.spell_list += new /obj/effect/proc_holder/spell/targeted/inflict_handler/disintegrate(H)
|
||||
H.spell_list += new /obj/effect/proc_holder/spell/wizard/targeted/inflict_handler/disintegrate(H)
|
||||
temp = "You have learned disintegrate."
|
||||
if("disabletech")
|
||||
feedback_add_details("wizard_spell_learned","DT") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells
|
||||
H.spell_list += new /obj/effect/proc_holder/spell/targeted/emplosion/disable_tech(H)
|
||||
H.spell_list += new /obj/effect/proc_holder/spell/wizard/targeted/emplosion/disable_tech(H)
|
||||
temp = "You have learned disable technology."
|
||||
if("smoke")
|
||||
feedback_add_details("wizard_spell_learned","SM") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells
|
||||
H.spell_list += new /obj/effect/proc_holder/spell/targeted/smoke(H)
|
||||
H.spell_list += new /obj/effect/proc_holder/spell/wizard/targeted/smoke(H)
|
||||
temp = "You have learned smoke."
|
||||
if("blind")
|
||||
feedback_add_details("wizard_spell_learned","BD") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells
|
||||
H.spell_list += new /obj/effect/proc_holder/spell/targeted/trigger/blind(H)
|
||||
H.spell_list += new /obj/effect/proc_holder/spell/wizard/targeted/trigger/blind(H)
|
||||
temp = "You have learned blind."
|
||||
if("mindswap")
|
||||
feedback_add_details("wizard_spell_learned","MT") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells
|
||||
H.spell_list += new /obj/effect/proc_holder/spell/targeted/mind_transfer(H)
|
||||
H.spell_list += new /obj/effect/proc_holder/spell/wizard/targeted/mind_transfer(H)
|
||||
temp = "You have learned mindswap."
|
||||
if("forcewall")
|
||||
feedback_add_details("wizard_spell_learned","FW") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells
|
||||
H.spell_list += new /obj/effect/proc_holder/spell/aoe_turf/conjure/forcewall(H)
|
||||
H.spell_list += new /obj/effect/proc_holder/spell/wizard/aoe_turf/conjure/forcewall(H)
|
||||
temp = "You have learned forcewall."
|
||||
if("blink")
|
||||
feedback_add_details("wizard_spell_learned","BL") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells
|
||||
H.spell_list += new /obj/effect/proc_holder/spell/targeted/turf_teleport/blink(H)
|
||||
H.spell_list += new /obj/effect/proc_holder/spell/wizard/targeted/turf_teleport/blink(H)
|
||||
temp = "You have learned blink."
|
||||
if("teleport")
|
||||
feedback_add_details("wizard_spell_learned","TP") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells
|
||||
H.spell_list += new /obj/effect/proc_holder/spell/targeted/area_teleport/teleport(H)
|
||||
H.spell_list += new /obj/effect/proc_holder/spell/wizard/targeted/area_teleport/teleport(H)
|
||||
temp = "You have learned teleport."
|
||||
if("mutate")
|
||||
feedback_add_details("wizard_spell_learned","MU") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells
|
||||
H.spell_list += new /obj/effect/proc_holder/spell/targeted/genetic/mutate(H)
|
||||
H.spell_list += new /obj/effect/proc_holder/spell/wizard/targeted/genetic/mutate(H)
|
||||
temp = "You have learned mutate."
|
||||
if("etherealjaunt")
|
||||
feedback_add_details("wizard_spell_learned","EJ") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells
|
||||
H.spell_list += new /obj/effect/proc_holder/spell/targeted/ethereal_jaunt(H)
|
||||
H.spell_list += new /obj/effect/proc_holder/spell/wizard/targeted/ethereal_jaunt(H)
|
||||
temp = "You have learned ethereal jaunt."
|
||||
if("knock")
|
||||
feedback_add_details("wizard_spell_learned","KN") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells
|
||||
H.spell_list += new /obj/effect/proc_holder/spell/aoe_turf/knock(H)
|
||||
H.spell_list += new /obj/effect/proc_holder/spell/wizard/aoe_turf/knock(H)
|
||||
temp = "You have learned knock."
|
||||
if("horseman")
|
||||
feedback_add_details("wizard_spell_learned","HH") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells
|
||||
H.spell_list += new /obj/effect/proc_holder/spell/targeted/horsemask(H)
|
||||
H.spell_list += new /obj/effect/proc_holder/spell/wizard/targeted/horsemask(H)
|
||||
temp = "You have learned curse of the horseman."
|
||||
if("fleshtostone")
|
||||
feedback_add_details("wizard_spell_learned","FS") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells
|
||||
H.spell_list += new /obj/effect/proc_holder/spell/targeted/inflict_handler/flesh_to_stone(H)
|
||||
H.spell_list += new /obj/effect/proc_holder/spell/wizard/targeted/inflict_handler/flesh_to_stone(H)
|
||||
temp = "You have learned flesh to stone."
|
||||
if("summonguns")
|
||||
if(max_uses < 5)
|
||||
@@ -281,7 +281,7 @@
|
||||
if("soulstone")
|
||||
feedback_add_details("wizard_spell_learned","SS") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells
|
||||
new /obj/item/weapon/storage/belt/soulstone/full(get_turf(H))
|
||||
H.spell_list += new /obj/effect/proc_holder/spell/aoe_turf/conjure/construct(H)
|
||||
H.spell_list += new /obj/effect/proc_holder/spell/wizard/aoe_turf/conjure/construct(H)
|
||||
temp = "You have purchased a belt full of soulstones and have learned the artificer spell."
|
||||
max_uses--
|
||||
if("armor")
|
||||
@@ -324,7 +324,7 @@
|
||||
//Single Use Spellbooks//
|
||||
|
||||
/obj/item/weapon/spellbook/oneuse
|
||||
var/spell = /obj/effect/proc_holder/spell/targeted/projectile/magic_missile //just a placeholder to avoid runtimes if someone spawned the generic
|
||||
var/spell = /obj/effect/proc_holder/spell/wizard/targeted/projectile/magic_missile //just a placeholder to avoid runtimes if someone spawned the generic
|
||||
var/spellname = "sandbox"
|
||||
var/used = 0
|
||||
name = "spellbook of "
|
||||
@@ -337,8 +337,8 @@
|
||||
name += spellname
|
||||
|
||||
/obj/item/weapon/spellbook/oneuse/attack_self(mob/user as mob)
|
||||
var/obj/effect/proc_holder/spell/S = new spell
|
||||
for(var/obj/effect/proc_holder/spell/knownspell in user.spell_list)
|
||||
var/obj/effect/proc_holder/spell/wizard/S = new spell
|
||||
for(var/obj/effect/proc_holder/spell/wizard/knownspell in user.spell_list)
|
||||
if(knownspell.type == S.type)
|
||||
if(user.mind)
|
||||
if(user.mind.special_role == "apprentice" || user.mind.special_role == "Wizard")
|
||||
@@ -366,7 +366,7 @@
|
||||
return
|
||||
|
||||
/obj/item/weapon/spellbook/oneuse/fireball
|
||||
spell = /obj/effect/proc_holder/spell/dumbfire/fireball
|
||||
spell = /obj/effect/proc_holder/spell/wizard/dumbfire/fireball
|
||||
spellname = "fireball"
|
||||
icon_state ="bookfireball"
|
||||
desc = "This book feels warm to the touch."
|
||||
@@ -377,7 +377,7 @@
|
||||
del(src)
|
||||
|
||||
/obj/item/weapon/spellbook/oneuse/smoke
|
||||
spell = /obj/effect/proc_holder/spell/targeted/smoke
|
||||
spell = /obj/effect/proc_holder/spell/wizard/targeted/smoke
|
||||
spellname = "smoke"
|
||||
icon_state ="booksmoke"
|
||||
desc = "This book is overflowing with the dank arts."
|
||||
@@ -391,7 +391,7 @@
|
||||
user.nutrition = 0
|
||||
|
||||
/obj/item/weapon/spellbook/oneuse/blind
|
||||
spell = /obj/effect/proc_holder/spell/targeted/trigger/blind
|
||||
spell = /obj/effect/proc_holder/spell/wizard/targeted/trigger/blind
|
||||
spellname = "blind"
|
||||
icon_state ="bookblind"
|
||||
desc = "This book looks blurry, no matter how you look at it."
|
||||
@@ -402,7 +402,7 @@
|
||||
user.eye_blind = 10
|
||||
|
||||
/obj/item/weapon/spellbook/oneuse/mindswap
|
||||
spell = /obj/effect/proc_holder/spell/targeted/mind_transfer
|
||||
spell = /obj/effect/proc_holder/spell/wizard/targeted/mind_transfer
|
||||
spellname = "mindswap"
|
||||
icon_state ="bookmindswap"
|
||||
desc = "This book's cover is pristine, though its pages look ragged and torn."
|
||||
@@ -419,7 +419,7 @@
|
||||
wabbajack(user)
|
||||
|
||||
/obj/item/weapon/spellbook/oneuse/forcewall
|
||||
spell = /obj/effect/proc_holder/spell/aoe_turf/conjure/forcewall
|
||||
spell = /obj/effect/proc_holder/spell/wizard/aoe_turf/conjure/forcewall
|
||||
spellname = "forcewall"
|
||||
icon_state ="bookforcewall"
|
||||
desc = "This book has a dedication to mimes everywhere inside the front cover."
|
||||
@@ -433,7 +433,7 @@
|
||||
|
||||
|
||||
/obj/item/weapon/spellbook/oneuse/knock
|
||||
spell = /obj/effect/proc_holder/spell/aoe_turf/knock
|
||||
spell = /obj/effect/proc_holder/spell/wizard/aoe_turf/knock
|
||||
spellname = "knock"
|
||||
icon_state ="bookknock"
|
||||
desc = "This book is hard to hold closed properly."
|
||||
@@ -445,7 +445,7 @@
|
||||
user.Weaken(20)
|
||||
|
||||
/obj/item/weapon/spellbook/oneuse/horsemask
|
||||
spell = /obj/effect/proc_holder/spell/targeted/horsemask
|
||||
spell = /obj/effect/proc_holder/spell/wizard/targeted/horsemask
|
||||
spellname = "horses"
|
||||
icon_state ="bookhorses"
|
||||
desc = "This book is more horse than your mind has room for."
|
||||
@@ -464,7 +464,7 @@
|
||||
user <<"<span class='notice'>I say thee neigh</span>"
|
||||
|
||||
/obj/item/weapon/spellbook/oneuse/charge
|
||||
spell = /obj/effect/proc_holder/spell/targeted/charge
|
||||
spell = /obj/effect/proc_holder/spell/wizard/targeted/charge
|
||||
spellname = "charging"
|
||||
icon_state ="bookcharge"
|
||||
desc = "This book is made of 100% post-consumer wizard."
|
||||
|
||||
@@ -147,7 +147,7 @@
|
||||
wizard_mob.verbs += /client/proc/jaunt
|
||||
wizard_mob.mind.special_verbs += /client/proc/jaunt
|
||||
else
|
||||
wizard_mob.spell_list += new /obj/effect/proc_holder/spell/targeted/ethereal_jaunt(usr)
|
||||
wizard_mob.spell_list += new /obj/effect/proc_holder/spell/wizard/targeted/ethereal_jaunt(usr)
|
||||
*/
|
||||
|
||||
/datum/game_mode/proc/equip_wizard(mob/living/carbon/human/wizard_mob)
|
||||
@@ -260,7 +260,7 @@
|
||||
if(wizard.current && wizard.current.spell_list)
|
||||
text += "<br><B>[wizard.name] used the following spells: </B>"
|
||||
var/i = 1
|
||||
for(var/obj/effect/proc_holder/spell/S in wizard.current.spell_list)
|
||||
for(var/obj/effect/proc_holder/spell/wizard/S in wizard.current.spell_list)
|
||||
text += "[S.name]"
|
||||
if(wizard.current.spell_list.len > i)
|
||||
text += ", "
|
||||
@@ -274,7 +274,7 @@
|
||||
|
||||
//To batch-remove wizard spells. Linked to mind.dm.
|
||||
/mob/proc/spellremove(var/mob/M as mob)
|
||||
for(var/obj/effect/proc_holder/spell/spell_to_remove in src.spell_list)
|
||||
for(var/obj/effect/proc_holder/spell/wizard/spell_to_remove in src.spell_list)
|
||||
del(spell_to_remove)
|
||||
update_power_buttons()
|
||||
|
||||
|
||||
@@ -395,7 +395,7 @@ var/list/admin_verbs_mod = list(
|
||||
set category = "Event"
|
||||
set name = "Give Spell"
|
||||
set desc = "Gives a spell to a mob."
|
||||
var/obj/effect/proc_holder/spell/S = input("Choose the spell to give to that guy", "ABRAKADABRA") as null|anything in spells
|
||||
var/obj/effect/proc_holder/spell/wizard/S = input("Choose the spell to give to that guy", "ABRAKADABRA") as null|anything in spells
|
||||
if(!S) return
|
||||
T.spell_list += new S
|
||||
T.update_power_buttons()
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
verbs += /mob/dead/observer/proc/dead_tele
|
||||
|
||||
// Our new boo spell.
|
||||
spell_list += new /obj/effect/proc_holder/spell/aoe_turf/boo(src)
|
||||
spell_list += new /obj/effect/proc_holder/spell/wizard/aoe_turf/boo(src)
|
||||
|
||||
can_reenter_corpse = flags & GHOST_CAN_REENTER
|
||||
started_as_observer = flags & GHOST_IS_OBSERVER
|
||||
|
||||
@@ -11,7 +11,7 @@ var/global/list/boo_phrases=list(
|
||||
"It feels like someone's standing behind you.",
|
||||
)
|
||||
|
||||
/obj/effect/proc_holder/spell/aoe_turf/boo
|
||||
/obj/effect/proc_holder/spell/wizard/aoe_turf/boo
|
||||
name = "Boo!"
|
||||
desc = "Fuck with the living."
|
||||
|
||||
@@ -24,7 +24,7 @@ var/global/list/boo_phrases=list(
|
||||
invocation_type = "none"
|
||||
range = 1 // Or maybe 3?
|
||||
|
||||
/obj/effect/proc_holder/spell/aoe_turf/boo/cast(list/targets)
|
||||
/obj/effect/proc_holder/spell/wizard/aoe_turf/boo/cast(list/targets)
|
||||
for(var/turf/T in targets)
|
||||
for(var/atom/A in T.contents)
|
||||
|
||||
|
||||
@@ -148,7 +148,7 @@
|
||||
environment_smash = 2
|
||||
attack_sound = 'sound/weapons/punch3.ogg'
|
||||
status_flags = 0
|
||||
construct_spells = list(/obj/effect/proc_holder/spell/aoe_turf/conjure/lesserforcewall)
|
||||
construct_spells = list(/obj/effect/proc_holder/spell/wizard/aoe_turf/conjure/lesserforcewall)
|
||||
|
||||
/mob/living/simple_animal/construct/armoured/attackby(var/obj/item/O as obj, var/mob/user as mob)
|
||||
if(O.force)
|
||||
@@ -222,7 +222,7 @@
|
||||
speed = -1
|
||||
see_in_dark = 7
|
||||
attack_sound = 'sound/weapons/bladeslice.ogg'
|
||||
construct_spells = list(/obj/effect/proc_holder/spell/targeted/ethereal_jaunt/shift)
|
||||
construct_spells = list(/obj/effect/proc_holder/spell/wizard/targeted/ethereal_jaunt/shift)
|
||||
|
||||
|
||||
|
||||
@@ -247,11 +247,11 @@
|
||||
speed = 0
|
||||
environment_smash = 2
|
||||
attack_sound = 'sound/weapons/punch2.ogg'
|
||||
construct_spells = list(/obj/effect/proc_holder/spell/aoe_turf/conjure/construct/lesser,
|
||||
/obj/effect/proc_holder/spell/aoe_turf/conjure/wall,
|
||||
/obj/effect/proc_holder/spell/aoe_turf/conjure/floor,
|
||||
/obj/effect/proc_holder/spell/aoe_turf/conjure/soulstone,
|
||||
/obj/effect/proc_holder/spell/targeted/projectile/magic_missile/lesser)
|
||||
construct_spells = list(/obj/effect/proc_holder/spell/wizard/aoe_turf/conjure/construct/lesser,
|
||||
/obj/effect/proc_holder/spell/wizard/aoe_turf/conjure/wall,
|
||||
/obj/effect/proc_holder/spell/wizard/aoe_turf/conjure/floor,
|
||||
/obj/effect/proc_holder/spell/wizard/aoe_turf/conjure/soulstone,
|
||||
/obj/effect/proc_holder/spell/wizard/targeted/projectile/magic_missile/lesser)
|
||||
|
||||
|
||||
/////////////////////////////Behemoth/////////////////////////
|
||||
|
||||
@@ -55,9 +55,9 @@
|
||||
/mob/living/simple_animal/hostile/statue/New()
|
||||
..()
|
||||
// Give spells
|
||||
spell_list += new /obj/effect/proc_holder/spell/aoe_turf/flicker_lights(src)
|
||||
spell_list += new /obj/effect/proc_holder/spell/aoe_turf/blindness(src)
|
||||
spell_list += new /obj/effect/proc_holder/spell/targeted/night_vision(src)
|
||||
spell_list += new /obj/effect/proc_holder/spell/wizard/aoe_turf/flicker_lights(src)
|
||||
spell_list += new /obj/effect/proc_holder/spell/wizard/aoe_turf/blindness(src)
|
||||
spell_list += new /obj/effect/proc_holder/spell/wizard/targeted/night_vision(src)
|
||||
|
||||
// Give nightvision
|
||||
see_invisible = SEE_INVISIBLE_OBSERVER_NOLIGHTING
|
||||
@@ -183,7 +183,7 @@
|
||||
// Statue powers
|
||||
|
||||
// Flicker lights
|
||||
/obj/effect/proc_holder/spell/aoe_turf/flicker_lights
|
||||
/obj/effect/proc_holder/spell/wizard/aoe_turf/flicker_lights
|
||||
name = "Flicker Lights"
|
||||
desc = "You will trigger a large amount of lights around you to flicker."
|
||||
|
||||
@@ -191,14 +191,14 @@
|
||||
clothes_req = 0
|
||||
range = 14
|
||||
|
||||
/obj/effect/proc_holder/spell/aoe_turf/flicker_lights/cast(list/targets)
|
||||
/obj/effect/proc_holder/spell/wizard/aoe_turf/flicker_lights/cast(list/targets)
|
||||
for(var/turf/T in targets)
|
||||
for(var/obj/machinery/light/L in T)
|
||||
L.flicker()
|
||||
return
|
||||
|
||||
//Blind AOE
|
||||
/obj/effect/proc_holder/spell/aoe_turf/blindness
|
||||
/obj/effect/proc_holder/spell/wizard/aoe_turf/blindness
|
||||
name = "Blindness"
|
||||
desc = "Your prey will be momentarily blind for you to advance on them."
|
||||
|
||||
@@ -207,7 +207,7 @@
|
||||
clothes_req = 0
|
||||
range = 8
|
||||
|
||||
/obj/effect/proc_holder/spell/aoe_turf/blindness/cast(list/targets)
|
||||
/obj/effect/proc_holder/spell/wizard/aoe_turf/blindness/cast(list/targets)
|
||||
for(var/mob/living/L in living_mob_list)
|
||||
var/turf/T = get_turf(L.loc)
|
||||
if(T && T in targets)
|
||||
@@ -217,7 +217,7 @@
|
||||
return
|
||||
|
||||
//Toggle Night Vision
|
||||
/obj/effect/proc_holder/spell/targeted/night_vision
|
||||
/obj/effect/proc_holder/spell/wizard/targeted/night_vision
|
||||
name = "Toggle Nightvision \[ON\]"
|
||||
desc = "Toggle your nightvision mode."
|
||||
|
||||
@@ -228,7 +228,7 @@
|
||||
range = -1
|
||||
include_user = 1
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/night_vision/cast(list/targets)
|
||||
/obj/effect/proc_holder/spell/wizard/targeted/night_vision/cast(list/targets)
|
||||
|
||||
for(var/mob/living/target in targets)
|
||||
if(target.see_invisible == SEE_INVISIBLE_LIVING)
|
||||
|
||||
@@ -863,7 +863,7 @@ var/list/slot_equipment_priority = list( \
|
||||
statpanel(listed_turf.name, null, A)
|
||||
|
||||
if(spell_list && spell_list.len)
|
||||
for(var/obj/effect/proc_holder/spell/S in spell_list)
|
||||
for(var/obj/effect/proc_holder/spell/wizard/S in spell_list)
|
||||
switch(S.charge_type)
|
||||
if("recharge")
|
||||
statpanel(S.panel,"[S.charge_counter/10.0]/[S.charge_max/10]",S)
|
||||
|
||||
@@ -177,7 +177,7 @@
|
||||
var/mob/living/carbon/LAssailant = null
|
||||
|
||||
//Wizard mode, but can be used in other modes thanks to the brand new "Give Spell" badmin button
|
||||
var/obj/effect/proc_holder/spell/list/spell_list = list()
|
||||
var/obj/effect/proc_holder/spell/wizard/list/spell_list = list()
|
||||
|
||||
//Changlings, but can be used in other modes
|
||||
// var/obj/effect/proc_holder/changpower/list/power_list = list()
|
||||
|
||||
@@ -4,28 +4,28 @@
|
||||
|
||||
/mob/spirit/mask/New()
|
||||
..()
|
||||
spell_list += new /obj/effect/proc_holder/spell/aoe_turf/conjure/create_talisman(src)
|
||||
spell_list += new /obj/effect/proc_holder/spell/aoe_turf/blood_speech(src)
|
||||
spell_list += new /obj/effect/proc_holder/spell/aoe_turf/shatter_lights(src)
|
||||
|
||||
spell_list += new /obj/effect/proc_holder/spell/wizard/aoe_turf/conjure/create_talisman(src)
|
||||
spell_list += new /obj/effect/proc_holder/spell/wizard/aoe_turf/blood_speech(src)
|
||||
spell_list += new /obj/effect/proc_holder/spell/wizard/aoe_turf/shatter_lights(src)
|
||||
|
||||
|
||||
/mob/spirit/mask/verb/go_to_follower()
|
||||
set category = "Mask"
|
||||
set name = "Go to follower"
|
||||
set desc = "Select who you would like to go too."
|
||||
|
||||
|
||||
var/obj/cult_viewpoint/cultist = pick_cultist()
|
||||
if (cultist)
|
||||
follow_cultist(cultist.owner)
|
||||
cult_log("[key_name_admin(src)] started following [key_name_admin(cultist)].")
|
||||
src << "You start following [cultist.get_display_name()]."
|
||||
|
||||
|
||||
|
||||
|
||||
/mob/spirit/mask/verb/urge_cultist()
|
||||
set category = "Mask"
|
||||
set name = "Urge cultist"
|
||||
set desc = "Push your cultists to do something."
|
||||
|
||||
|
||||
var/obj/cult_viewpoint/cultist = pick_cultist()
|
||||
if (cultist)
|
||||
if (cultist.owner)
|
||||
@@ -38,7 +38,7 @@
|
||||
set category = "Mask"
|
||||
set name = "Set Cult Name"
|
||||
set desc = "Grant a cultist a name."
|
||||
|
||||
|
||||
var/obj/cult_viewpoint/cultist = pick_cultist()
|
||||
if (cultist)
|
||||
var/newName = stripped_input(usr, "", "Set Cult Name", "")
|
||||
@@ -48,25 +48,25 @@
|
||||
src << "You grant [cultist.owner.name] the secret name of [newName]."
|
||||
if (cultist.owner)
|
||||
cult_log("[key_name_admin(src)] has set [key_name_admin(cultist.owner)] to \'[newName]\'")
|
||||
|
||||
|
||||
|
||||
|
||||
/mob/spirit/mask/verb/urge_cult()
|
||||
set category = "Mask"
|
||||
set name = "Urge Cult"
|
||||
set desc = "Set urge on the entire cult."
|
||||
|
||||
|
||||
var/newUrge = stripped_input(usr, "Please choose an urge.", "Set Urge", "")
|
||||
for(var/obj/cult_viewpoint/viewpoint in cult_viewpoints)
|
||||
viewpoint.set_urge(newUrge)
|
||||
src << "You urge the entire cult to [newUrge]."
|
||||
cult_log("[key_name_admin(src)] has urged the entire cult to [newUrge]")
|
||||
|
||||
|
||||
|
||||
|
||||
/mob/spirit/mask/verb/set_favor_for_cultist()
|
||||
set category = "Mask"
|
||||
set name = "Show your favor"
|
||||
set desc = "Set the favor for a cultist"
|
||||
|
||||
|
||||
var/obj/cult_viewpoint/cultist = pick_cultist()
|
||||
if (cultist)
|
||||
if (cultist.owner)
|
||||
@@ -82,15 +82,15 @@
|
||||
if("Indifference")
|
||||
cultist.set_favor(0)
|
||||
cult_log("[key_name_admin(src)] is indifferent too [key_name_admin(cultist.owner)]")
|
||||
|
||||
|
||||
|
||||
|
||||
/mob/spirit/mask/proc/set_name()
|
||||
spawn(0)
|
||||
var/newName = stripped_input(src, "Please pick a name.", "Pick Name for Mask", "")
|
||||
name = newName ? newName : "Mask of Nar'sie"
|
||||
src << "You have set your name to [name]."
|
||||
|
||||
|
||||
|
||||
|
||||
/mob/spirit/mask/proc/pick_cultist()
|
||||
var/list/cultists = list()
|
||||
for(var/obj/cult_viewpoint/viewpoint in cult_viewpoints)
|
||||
@@ -98,7 +98,7 @@
|
||||
var/input = input("Please, select a cultist!", "Cult", null, null) as null|anything in cultists
|
||||
var/obj/cult_viewpoint/result = cultists[input]
|
||||
return result
|
||||
|
||||
|
||||
|
||||
// this proc makes the mask visible very briefly
|
||||
/mob/spirit/mask/proc/flicker()
|
||||
@@ -108,13 +108,13 @@
|
||||
sleep(5)
|
||||
invisibility=initial(invisibility)
|
||||
alpha = 255
|
||||
|
||||
|
||||
/proc/flicker_mask(mob/spirit/mask/target)
|
||||
if(istype(target))
|
||||
target.flicker()
|
||||
|
||||
// SPELLS
|
||||
/obj/effect/proc_holder/spell/aoe_turf/blood_speech
|
||||
/obj/effect/proc_holder/spell/wizard/aoe_turf/blood_speech
|
||||
name = "Speak to your Acolytes"
|
||||
desc = "This spell allows you to speak to your flock."
|
||||
school = "unknown evil"
|
||||
@@ -124,8 +124,8 @@
|
||||
invocation = "none"
|
||||
invocation_type = "none"
|
||||
range = 0
|
||||
|
||||
/obj/effect/proc_holder/spell/aoe_turf/blood_speech/cast(list/targets)
|
||||
|
||||
/obj/effect/proc_holder/spell/wizard/aoe_turf/blood_speech/cast(list/targets)
|
||||
var/input = stripped_input(usr, "Please choose a message to tell your acolytes.", "Voice of Blood", "")
|
||||
if(!input)
|
||||
revert_cast(usr)
|
||||
@@ -133,12 +133,12 @@
|
||||
flicker_mask(usr)
|
||||
for(var/datum/mind/H in ticker.mode.cult)
|
||||
if (H.current)
|
||||
H.current << "<span class='cultspeech'><font size=3><span class='name'>[usr.name]: </span><span class='message'>[input]</span></font></span>"
|
||||
H.current << "<span class='cultspeech'><font size=3><span class='name'>[usr.name]: </span><span class='message'>[input]</span></font></span>"
|
||||
for(var/mob/spirit/spirit in spirits)
|
||||
spirit << "<span class='cultspeech'><font size=3><span class='name'>[usr.name]: </span><span class='message'>[input]</span></font></span>"
|
||||
|
||||
|
||||
/obj/effect/proc_holder/spell/aoe_turf/shatter_lights
|
||||
|
||||
/obj/effect/proc_holder/spell/wizard/aoe_turf/shatter_lights
|
||||
name = "Spread Shadows"
|
||||
desc = "This spell breaks lights near the mask."
|
||||
school = "unknown evil"
|
||||
@@ -148,8 +148,8 @@
|
||||
invocation = "none"
|
||||
invocation_type = "none"
|
||||
range = 0
|
||||
|
||||
/obj/effect/proc_holder/spell/aoe_turf/shatter_lights/cast(list/targets)
|
||||
|
||||
/obj/effect/proc_holder/spell/wizard/aoe_turf/shatter_lights/cast(list/targets)
|
||||
cult_log("[key_name_admin(usr)] used Spread Shadows.")
|
||||
flicker_mask(usr)
|
||||
spawn(0)
|
||||
@@ -160,9 +160,9 @@
|
||||
sleep(1)
|
||||
for(var/obj/item/device/flashlight/F in A)
|
||||
F.on = 0
|
||||
|
||||
|
||||
/obj/effect/proc_holder/spell/aoe_turf/conjure/create_talisman
|
||||
|
||||
|
||||
/obj/effect/proc_holder/spell/wizard/aoe_turf/conjure/create_talisman
|
||||
name = "Create Talisman"
|
||||
desc = "This spell conjures a talisman"
|
||||
|
||||
@@ -174,35 +174,35 @@
|
||||
invocation_type = "none"
|
||||
range = 0
|
||||
summon_type = list(/obj/item/weapon/paper/talisman)
|
||||
|
||||
|
||||
var/list/talismans = list( "Armor"="armor",
|
||||
"Blind"="blind",
|
||||
"Conceal"="conceal",
|
||||
"Communicate"="communicate",
|
||||
"Deafen"="deafen",
|
||||
"EMP"="emp",
|
||||
"Teleport"="teleport",
|
||||
"Tome"="newtome",
|
||||
"EMP"="emp",
|
||||
"Teleport"="teleport",
|
||||
"Tome"="newtome",
|
||||
"Reveal Runes",
|
||||
"Stun"="runestun",
|
||||
"Soul Stone"="soulstone",
|
||||
"Construct"="construct")
|
||||
|
||||
|
||||
/obj/effect/proc_holder/spell/aoe_turf/conjure/create_talisman/cast(list/targets)
|
||||
|
||||
|
||||
|
||||
/obj/effect/proc_holder/spell/wizard/aoe_turf/conjure/create_talisman/cast(list/targets)
|
||||
|
||||
var/talisman = input("Pick a talisman type", "Talisman", null, null) as null|anything in talismans
|
||||
var/imbue_value = talismans[talisman]
|
||||
if (!talisman)
|
||||
usr << "You choose not to create a talisman."
|
||||
revert_cast(usr)
|
||||
return
|
||||
|
||||
|
||||
cult_log("[key_name_admin(usr,0)] created a talisman of type [talisman].")
|
||||
flicker_mask(usr)
|
||||
|
||||
|
||||
switch(talisman)
|
||||
|
||||
|
||||
if ("Teleport")
|
||||
var/target_rune = input("Pick a teleport target", "Teleport Rune", null, null) as null|anything in engwords
|
||||
if (!target_rune)
|
||||
@@ -211,17 +211,17 @@
|
||||
return
|
||||
summon_type = list(/obj/item/weapon/paper/talisman)
|
||||
newVars = list("imbue" = "[target_rune]", "info" = "[target_rune]")
|
||||
|
||||
|
||||
if ("Soul Stone")
|
||||
summon_type = list(/obj/item/device/soulstone)
|
||||
newVars = list()
|
||||
|
||||
|
||||
if ("Construct")
|
||||
summon_type = list(/obj/structure/constructshell)
|
||||
newVars = list()
|
||||
|
||||
|
||||
else
|
||||
summon_type = list(/obj/item/weapon/paper/talisman)
|
||||
newVars = list("imbue" = "[imbue_value]")
|
||||
|
||||
|
||||
..()
|
||||
@@ -73,7 +73,7 @@
|
||||
else
|
||||
return
|
||||
|
||||
for (var/obj/effect/proc_holder/spell/S in M.spell_list)
|
||||
for (var/obj/effect/proc_holder/spell/wizard/S in M.spell_list)
|
||||
new_mob.spell_list += new S.type
|
||||
|
||||
new_mob.a_intent = "harm"
|
||||
|
||||
@@ -213,7 +213,7 @@ proc/wabbajack(mob/living/M)
|
||||
else
|
||||
return
|
||||
|
||||
for (var/obj/effect/proc_holder/spell/S in M.spell_list)
|
||||
for (var/obj/effect/proc_holder/spell/wizard/S in M.spell_list)
|
||||
new_mob.spell_list += new S.type
|
||||
|
||||
new_mob.a_intent = "harm"
|
||||
|
||||
Reference in New Issue
Block a user