Merge pull request #1673 from TheDZD/actual-pathing-changes

Nukes Useless /wizard/ Spell Pathing
This commit is contained in:
Fox-McCloud
2015-08-08 20:35:44 -04:00
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
+3 -3
View File
@@ -296,13 +296,13 @@
deactivation_messages = list("You no longer feel uncomfortably hot.")
instability=5
spelltype=/obj/effect/proc_holder/spell/wizard/targeted/immolate
spelltype=/obj/effect/proc_holder/spell/targeted/immolate
New()
..()
block = IMMOLATEBLOCK
/obj/effect/proc_holder/spell/wizard/targeted/immolate
/obj/effect/proc_holder/spell/targeted/immolate
name = "Incendiary Mitochondria"
desc = "The subject becomes able to convert excess cellular energy into thermal energy."
panel = "Abilities"
@@ -320,7 +320,7 @@
action_icon_state = "genetic_incendiary"
/obj/effect/proc_holder/spell/wizard/targeted/immolate/cast(list/targets)
/obj/effect/proc_holder/spell/targeted/immolate/cast(list/targets)
/* if(!targets.len) Uncomment this to allow the power to be used on targets other than yourself. That said, if you uncomment this I will find you and hurt you. Uncounterable and untracable burn damage with a 60-second cooldown is fun for exactly one person, and that's the person who is using it.
usr << "<span class='notice'>No target found in range.</span>"
+20 -20
View File
@@ -87,7 +87,7 @@
/////////////////////////////////////////////////////////////////////////////////////////
/datum/dna/gene/basic/grant_spell
var/obj/effect/proc_holder/spell/wizard/spelltype
var/obj/effect/proc_holder/spell/spelltype
activate(var/mob/M, var/connected, var/flags)
M.AddSpell(new spelltype(M))
@@ -95,7 +95,7 @@
return 1
deactivate(var/mob/M, var/connected, var/flags)
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)
if(istype(S,spelltype))
M.spell_list.Remove(S)
..()
@@ -121,13 +121,13 @@
deactivation_messages = list("Your fingers feel warmer.")
instability=10
spelltype = /obj/effect/proc_holder/spell/wizard/targeted/cryokinesis
spelltype = /obj/effect/proc_holder/spell/targeted/cryokinesis
New()
..()
block = CRYOBLOCK
/obj/effect/proc_holder/spell/wizard/targeted/cryokinesis
/obj/effect/proc_holder/spell/targeted/cryokinesis
name = "Cryokinesis"
desc = "Drops the bodytemperature of another person."
panel = "Abilities"
@@ -146,7 +146,7 @@
action_icon_state = "genetic_cryo"
/obj/effect/proc_holder/spell/wizard/targeted/cryokinesis/cast(list/targets)
/obj/effect/proc_holder/spell/targeted/cryokinesis/cast(list/targets)
if(!targets.len)
usr << "<span class='notice'>No target found in range.</span>"
return
@@ -218,13 +218,13 @@
deactivation_messages = list("You don't feel quite so hungry anymore.")
instability=3
spelltype=/obj/effect/proc_holder/spell/wizard/targeted/eat
spelltype=/obj/effect/proc_holder/spell/targeted/eat
New()
..()
block = EATBLOCK
/obj/effect/proc_holder/spell/wizard/targeted/eat
/obj/effect/proc_holder/spell/targeted/eat
name = "Eat"
desc = "Eat just about anything!"
panel = "Abilities"
@@ -242,7 +242,7 @@
var/list/types_allowed=list(/obj/item,/mob/living/simple_animal, /mob/living/carbon/human)
/obj/effect/proc_holder/spell/wizard/targeted/eat/choose_targets(mob/user = usr)
/obj/effect/proc_holder/spell/targeted/eat/choose_targets(mob/user = usr)
var/list/targets = new /list()
var/list/possible_targets = new /list()
@@ -258,7 +258,7 @@
perform(targets)
/obj/effect/proc_holder/spell/wizard/targeted/eat/proc/doHeal(var/mob/user)
/obj/effect/proc_holder/spell/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)
@@ -272,7 +272,7 @@
H.UpdateDamageIcon()
H.updatehealth()
/obj/effect/proc_holder/spell/wizard/targeted/eat/cast(list/targets)
/obj/effect/proc_holder/spell/targeted/eat/cast(list/targets)
if(!targets.len)
usr << "<span class='notice'>No target found in range.</span>"
return
@@ -340,13 +340,13 @@
deactivation_messages = list("Your leg muscles shrink back to normal.")
instability=2
spelltype =/obj/effect/proc_holder/spell/wizard/targeted/leap
spelltype =/obj/effect/proc_holder/spell/targeted/leap
New()
..()
block = JUMPBLOCK
/obj/effect/proc_holder/spell/wizard/targeted/leap
/obj/effect/proc_holder/spell/targeted/leap
name = "Jump"
desc = "Leap great distances!"
panel = "Abilities"
@@ -362,7 +362,7 @@
action_icon_state = "genetic_jump"
/obj/effect/proc_holder/spell/wizard/targeted/leap/cast(list/targets)
/obj/effect/proc_holder/spell/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!"
@@ -435,7 +435,7 @@
name = "Polymorphism"
desc = "Enables the subject to reconfigure their appearance to mimic that of others."
spelltype =/obj/effect/proc_holder/spell/wizard/targeted/polymorph
spelltype =/obj/effect/proc_holder/spell/targeted/polymorph
//cooldown = 1800
activation_messages = list("You don't feel entirely like yourself somehow.")
deactivation_messages = list("You feel secure in your identity.")
@@ -445,7 +445,7 @@
..()
block = POLYMORPHBLOCK
/obj/effect/proc_holder/spell/wizard/targeted/polymorph
/obj/effect/proc_holder/spell/targeted/polymorph
name = "Polymorph"
desc = "Mimic the appearance of others!"
panel = "Abilities"
@@ -459,7 +459,7 @@
action_icon_state = "genetic_poly"
/obj/effect/proc_holder/spell/wizard/targeted/polymorph/cast(list/targets)
/obj/effect/proc_holder/spell/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."
@@ -485,7 +485,7 @@
name = "Empathic Thought"
desc = "The subject becomes able to read the minds of others for certain information."
spelltype = /obj/effect/proc_holder/spell/wizard/targeted/empath
spelltype = /obj/effect/proc_holder/spell/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
@@ -495,7 +495,7 @@
..()
block = EMPATHBLOCK
/obj/effect/proc_holder/spell/wizard/targeted/empath
/obj/effect/proc_holder/spell/targeted/empath
name = "Read Mind"
desc = "Read the minds of others for information."
charge_max = 180
@@ -507,13 +507,13 @@
action_icon_state = "genetic_empath"
/obj/effect/proc_holder/spell/wizard/targeted/empath/choose_targets(mob/user = usr)
/obj/effect/proc_holder/spell/targeted/empath/choose_targets(mob/user = usr)
var/list/targets = new /list()
targets += input("Choose the target to spy on.", "Targeting") as mob in range(7,usr)
perform(targets)
/obj/effect/proc_holder/spell/wizard/targeted/empath/cast(list/targets)
/obj/effect/proc_holder/spell/targeted/empath/cast(list/targets)
if(!ishuman(usr)) return
+15 -15
View File
@@ -18,7 +18,7 @@ Obviously, requires DNA2.
deactivation_messages = list("Your muscles quit tensing.")
instability=7
spelltype = /obj/effect/proc_holder/spell/wizard/targeted/hulk
spelltype = /obj/effect/proc_holder/spell/targeted/hulk
New()
..()
@@ -52,7 +52,7 @@ Obviously, requires DNA2.
M.Weaken(3)
M.emote("collapse")
/obj/effect/proc_holder/spell/wizard/targeted/hulk
/obj/effect/proc_holder/spell/targeted/hulk
name = "Hulk Out"
panel = "Abilities"
range = -1
@@ -68,11 +68,11 @@ Obviously, requires DNA2.
action_icon_state = "genetic_hulk"
/obj/effect/proc_holder/spell/wizard/targeted/hulk/New()
/obj/effect/proc_holder/spell/targeted/hulk/New()
desc = "Get mad! For [HULK_DURATION/10] seconds, anyway."
..()
/obj/effect/proc_holder/spell/wizard/targeted/hulk/cast(list/targets)
/obj/effect/proc_holder/spell/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/wizard/targeted/morph
spelltype =/obj/effect/proc_holder/spell/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/wizard/targeted/morph
/obj/effect/proc_holder/spell/targeted/morph
name = "Morph"
desc = "Mimic the appearance of your choice!"
panel = "Abilities"
@@ -120,7 +120,7 @@ Obviously, requires DNA2.
action_icon_state = "genetic_morph"
/obj/effect/proc_holder/spell/wizard/targeted/morph/cast(list/targets)
/obj/effect/proc_holder/spell/targeted/morph/cast(list/targets)
if(!ishuman(usr)) return
if (istype(usr.loc,/mob/))
@@ -200,13 +200,13 @@ Obviously, requires DNA2.
mutation=REMOTE_TALK
instability=1
spelltype =/obj/effect/proc_holder/spell/wizard/targeted/remotetalk
spelltype =/obj/effect/proc_holder/spell/targeted/remotetalk
New()
..()
block=REMOTETALKBLOCK
/obj/effect/proc_holder/spell/wizard/targeted/remotetalk
/obj/effect/proc_holder/spell/targeted/remotetalk
name = "Project Mind"
desc = "Make people understand your thoughts at any range!"
charge_max = 100
@@ -219,7 +219,7 @@ Obviously, requires DNA2.
action_icon_state = "genetic_project"
/obj/effect/proc_holder/spell/wizard/targeted/remotetalk/choose_targets(mob/user = usr)
/obj/effect/proc_holder/spell/targeted/remotetalk/choose_targets(mob/user = usr)
var/list/targets = new /list()
var/list/validtargets = new /list()
for(var/mob/M in living_mob_list)
@@ -239,7 +239,7 @@ Obviously, requires DNA2.
perform(targets)
/obj/effect/proc_holder/spell/wizard/targeted/remotetalk/cast(list/targets)
/obj/effect/proc_holder/spell/targeted/remotetalk/cast(list/targets)
if(!ishuman(usr)) return
var/say = strip_html(input("What do you wish to say"))
@@ -260,13 +260,13 @@ Obviously, requires DNA2.
mutation=REMOTE_VIEW
instability=3
spelltype =/obj/effect/proc_holder/spell/wizard/targeted/remoteview
spelltype =/obj/effect/proc_holder/spell/targeted/remoteview
New()
block=REMOTEVIEWBLOCK
/obj/effect/proc_holder/spell/wizard/targeted/remoteview
/obj/effect/proc_holder/spell/targeted/remoteview
name = "Remote View"
desc = "Spy on people from any range!"
charge_max = 600
@@ -279,7 +279,7 @@ Obviously, requires DNA2.
action_icon_state = "genetic_view"
/obj/effect/proc_holder/spell/wizard/targeted/remoteview/choose_targets(mob/user = usr)
/obj/effect/proc_holder/spell/targeted/remoteview/choose_targets(mob/user = usr)
var/list/targets = living_mob_list
var/list/remoteviewers = new /list()
for(var/mob/M in targets)
@@ -293,7 +293,7 @@ Obviously, requires DNA2.
perform(targets)
/obj/effect/proc_holder/spell/wizard/targeted/remoteview/cast(list/targets)
/obj/effect/proc_holder/spell/targeted/remoteview/cast(list/targets)
var/mob/living/carbon/human/user
if(ishuman(usr))
user = usr
+7 -7
View File
@@ -133,8 +133,8 @@ Made by Xhuis
/datum/game_mode/proc/finalize_shadowling(var/datum/mind/shadow_mind)
var/mob/living/carbon/human/S = shadow_mind.current
shadow_mind.AddSpell(new /obj/effect/proc_holder/spell/wizard/targeted/shadowling_hatch)
shadow_mind.AddSpell(new /obj/effect/proc_holder/spell/wizard/targeted/enthrall)
shadow_mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/shadowling_hatch)
shadow_mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/enthrall)
spawn(0)
shadow_mind.current.add_language("Shadowling Hivemind")
update_shadow_icons_added(shadow_mind)
@@ -152,9 +152,9 @@ Made by Xhuis
update_shadow_icons_added(new_thrall_mind)
new_thrall_mind.current.attack_log += "\[[time_stamp()]\] <span class='danger'>Became a thrall</span>"
new_thrall_mind.current.add_language("Shadowling Hivemind")
new_thrall_mind.current.AddSpell(new /obj/effect/proc_holder/spell/wizard/targeted/lesser_glare)
new_thrall_mind.current.AddSpell(new /obj/effect/proc_holder/spell/wizard/targeted/lesser_shadow_walk)
//new_thrall_mind.current.AddSpell(new /obj/effect/proc_holder/spell/wizard/targeted/thrall_vision) //Uncomment when vision code is unfucked.
new_thrall_mind.current.AddSpell(new /obj/effect/proc_holder/spell/targeted/lesser_glare)
new_thrall_mind.current.AddSpell(new /obj/effect/proc_holder/spell/targeted/lesser_shadow_walk)
//new_thrall_mind.current.AddSpell(new /obj/effect/proc_holder/spell/targeted/thrall_vision) //Uncomment when vision code is unfucked.
new_thrall_mind.current << "<span class='shadowling'><b>You see the truth. Reality has been torn away and you realize what a fool you've been.</b></span>"
new_thrall_mind.current << "<span class='shadowling'><b>The shadowlings are your masters.</b> Serve them above all else and ensure they complete their goals.</span>"
new_thrall_mind.current << "<span class='shadowling'>You may not harm other thralls or the shadowlings. However, you do not need to obey other thralls.</span>"
@@ -172,8 +172,8 @@ Made by Xhuis
thrall_mind.current.attack_log += "\[[time_stamp()]\] <span class='danger'>Dethralled</span>"
thrall_mind.special_role = null
update_shadow_icons_removed(thrall_mind)
thrall_mind.remove_spell(/obj/effect/proc_holder/spell/wizard/targeted/lesser_glare)
thrall_mind.remove_spell(/obj/effect/proc_holder/spell/wizard/targeted/lesser_shadow_walk)
thrall_mind.remove_spell(/obj/effect/proc_holder/spell/targeted/lesser_glare)
thrall_mind.remove_spell(/obj/effect/proc_holder/spell/targeted/lesser_shadow_walk)
//thrall_mind.remove_spell(/obj/effect/proc_holder/spell/targeted/thrall_vision) //uncomment when vision code is unfucked.
thrall_mind.current.remove_language("Shadowling Hivemind")
if(kill && ishuman(thrall_mind.current)) //If dethrallization surgery fails, kill the mob as well as dethralling them
@@ -1,4 +1,4 @@
/obj/effect/proc_holder/spell/wizard/targeted/glare
/obj/effect/proc_holder/spell/targeted/glare
name = "Glare"
desc = "Stuns and mutes a target for a decent duration."
panel = "Shadowling Abilities"
@@ -6,7 +6,7 @@
clothes_req = 0
action_icon_state = "glare"
/obj/effect/proc_holder/spell/wizard/targeted/glare/cast(list/targets)
/obj/effect/proc_holder/spell/targeted/glare/cast(list/targets)
for(var/mob/living/carbon/human/target in targets)
if(!ishuman(target))
charge_counter = charge_max
@@ -29,7 +29,7 @@
target.Stun(10)
M.silent += 10
/obj/effect/proc_holder/spell/wizard/targeted/lesser_glare
/obj/effect/proc_holder/spell/targeted/lesser_glare
name = "Lesser Glare"
desc = "Stuns and mutes a target for a short duration."
panel = "Thrall Abilities"
@@ -37,7 +37,7 @@
clothes_req = 0
action_icon_state = "glare"
/obj/effect/proc_holder/spell/wizard/targeted/lesser_glare/cast(list/targets)
/obj/effect/proc_holder/spell/targeted/lesser_glare/cast(list/targets)
for(var/mob/living/carbon/human/target in targets)
if(!ishuman(target) || !target)
charge_counter = charge_max
@@ -59,7 +59,7 @@
target.Stun(3) //Roughly 30% as long as the normal one
M.silent += 3
/obj/effect/proc_holder/spell/wizard/aoe_turf/veil
/obj/effect/proc_holder/spell/aoe_turf/veil
name = "Veil"
desc = "Extinguishes most nearby light sources."
panel = "Shadowling Abilities"
@@ -69,7 +69,7 @@
var/blacklisted_lights = list(/obj/item/device/flashlight/flare, /obj/item/device/flashlight/slime)
action_icon_state = "veil"
/obj/effect/proc_holder/spell/wizard/aoe_turf/veil/proc/extinguishItem(var/obj/item/I) //WARNING NOT SUFFICIENT TO EXTINGUISH AN ITEM HELD BY A MOB
/obj/effect/proc_holder/spell/aoe_turf/veil/proc/extinguishItem(var/obj/item/I) //WARNING NOT SUFFICIENT TO EXTINGUISH AN ITEM HELD BY A MOB
if(istype(I, /obj/item/device/flashlight))
var/obj/item/device/flashlight/F = I
if(F.on)
@@ -91,12 +91,12 @@
R.set_light(0)
return I.light_range
/obj/effect/proc_holder/spell/wizard/aoe_turf/veil/proc/extinguishMob(var/mob/living/H)
/obj/effect/proc_holder/spell/aoe_turf/veil/proc/extinguishMob(var/mob/living/H)
for(var/obj/item/F in H)
if(F.light_range > 0)
extinguishItem(F)
/obj/effect/proc_holder/spell/wizard/aoe_turf/veil/cast(list/targets)
/obj/effect/proc_holder/spell/aoe_turf/veil/cast(list/targets)
usr << "<span class='shadowling'>You silently disable all nearby lights.</span>"
for(var/obj/effect/glowshroom/G in orange(2, usr)) //Why the fuck was this in the loop below?
G.visible_message("<span class='warning'>\The [G] withers away!</span>")
@@ -120,7 +120,7 @@
borg.update_headlamp(1, charge_max)
/obj/effect/proc_holder/spell/wizard/targeted/shadow_walk
/obj/effect/proc_holder/spell/targeted/shadow_walk
name = "Shadow Walk"
desc = "Phases you into the space between worlds for a short time, allowing movement through walls and invisbility."
panel = "Shadowling Abilities"
@@ -130,7 +130,7 @@
include_user = 1
action_icon_state = "shadow_walk"
/obj/effect/proc_holder/spell/wizard/targeted/shadow_walk/cast(list/targets)
/obj/effect/proc_holder/spell/targeted/shadow_walk/cast(list/targets)
for(var/mob/living/user in targets)
playsound(user.loc, 'sound/effects/bamf.ogg', 50, 1)
user.visible_message("<span class='warning'>[user] vanishes in a puff of black mist!</span>", "<span class='shadowling'>You enter the space between worlds as a passageway.</span>")
@@ -145,7 +145,7 @@
user.incorporeal_move = 0
user.alpha = 255
/obj/effect/proc_holder/spell/wizard/targeted/lesser_shadow_walk
/obj/effect/proc_holder/spell/targeted/lesser_shadow_walk
name = "Guise"
desc = "Wraps your form in shadows, making you harder to see."
panel = "Thrall Abilities"
@@ -155,7 +155,7 @@
include_user = 1
action_icon_state = "shadow_walk"
/obj/effect/proc_holder/spell/wizard/targeted/lesser_shadow_walk/cast(list/targets)
/obj/effect/proc_holder/spell/targeted/lesser_shadow_walk/cast(list/targets)
for(var/mob/living/user in targets)
var/lumcount = 0
var/turf/T = get_turf(user)
@@ -171,7 +171,7 @@
user.alpha = initial(user.alpha)
/*
/obj/effect/proc_holder/spell/wizard/targeted/thrall_vision //Uncomment this if we ever update our vision code to not be absolute garbage.
/obj/effect/proc_holder/spell/targeted/thrall_vision //Uncomment this if we ever update our vision code to not be absolute garbage.
name = "Darksight"
desc = "Gives you night vision."
panel = "Thrall Abilities"
@@ -181,7 +181,7 @@
clothes_req = 0
var/active = 0
/obj/effect/proc_holder/spell/wizard/targeted/thrall_vision/cast(list/targets)
/obj/effect/proc_holder/spell/targeted/thrall_vision/cast(list/targets)
for(var/mob/living/user in targets)
if(!istype(user) || !ishuman(user))
return
@@ -197,7 +197,7 @@
H.dna.species.invis_sight = initial(H.dna.species.invis_sight)
*/
/obj/effect/proc_holder/spell/wizard/aoe_turf/flashfreeze
/obj/effect/proc_holder/spell/aoe_turf/flashfreeze
name = "Icy Veins"
desc = "Instantly freezes the blood of nearby people, stunning them and causing burn damage."
panel = "Shadowling Abilities"
@@ -206,7 +206,7 @@
clothes_req = 0
action_icon_state = "icy_veins"
/obj/effect/proc_holder/spell/wizard/aoe_turf/flashfreeze/cast(list/targets)
/obj/effect/proc_holder/spell/aoe_turf/flashfreeze/cast(list/targets)
usr << "<span class='shadowling'>You freeze the nearby air.</span>"
playsound(usr.loc, 'sound/effects/ghost2.ogg', 50, 1)
@@ -228,7 +228,7 @@
//Enthrall is the single most important spell
/obj/effect/proc_holder/spell/wizard/targeted/enthrall
/obj/effect/proc_holder/spell/targeted/enthrall
name = "Enthrall"
desc = "Allows you to enslave a conscious, non-braindead, non-catatonic human to your will. This takes some time to cast."
panel = "Shadowling Abilities"
@@ -238,7 +238,7 @@
var/enthralling = 0
action_icon_state = "enthrall"
/obj/effect/proc_holder/spell/wizard/targeted/enthrall/cast(list/targets)
/obj/effect/proc_holder/spell/targeted/enthrall/cast(list/targets)
var/mob/living/carbon/human/user = usr
listclearnulls(ticker.mode.shadowling_thralls)
if(ticker.mode.shadowling_thralls.len >= 5 && (!istype(user.species, /datum/species/shadow/ling)))
@@ -314,7 +314,7 @@
ticker.mode.add_thrall(target.mind)
target.mind.special_role = "shadowling thrall"
/obj/effect/proc_holder/spell/wizard/targeted/collective_mind
/obj/effect/proc_holder/spell/targeted/collective_mind
name = "Collective Hivemind"
desc = "Gathers the power of all of your thralls and compares it to what is needed for ascendance. Also gains you new abilities."
panel = "Shadowling Abilities"
@@ -328,7 +328,7 @@
var/reviveThrallAcquired
action_icon_state = "collective_mind"
/obj/effect/proc_holder/spell/wizard/targeted/collective_mind/cast(list/targets)
/obj/effect/proc_holder/spell/targeted/collective_mind/cast(list/targets)
for(var/mob/living/user in targets)
var/thralls = 0
var/victory_threshold = 15
@@ -349,23 +349,23 @@
blind_smoke_acquired = 1
user << "<span class='shadowling'><i>The power of your thralls has granted you the <b>Blinding Smoke</b> ability. It will create a choking cloud that will blind any non-thralls who enter. \
</i></span>"
user.mind.AddSpell(new /obj/effect/proc_holder/spell/wizard/targeted/blindness_smoke)
user.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/blindness_smoke)
if(thralls >= 5 && !drainLifeAcquired)
drainLifeAcquired = 1
user << "<span class='shadowling'><i>The power of your thralls has granted you the <b>Drain Life</b> ability. You can now drain the health of nearby humans to heal yourself.</i></span>"
user.mind.AddSpell(new /obj/effect/proc_holder/spell/wizard/aoe_turf/drainLife)
user.mind.AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/drainLife)
if(thralls >= 7 && !screech_acquired)
screech_acquired = 1
user << "<span class='shadowling'><i>The power of your thralls has granted you the <b>Sonic Screech</b> ability. This ability will shatter nearby windows and deafen enemies, plus stunning silicon lifeforms.</span>"
user.mind.AddSpell(new /obj/effect/proc_holder/spell/wizard/aoe_turf/unearthly_screech)
user.mind.AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/unearthly_screech)
if(thralls >= 9 && !reviveThrallAcquired)
reviveThrallAcquired = 1
user << "<span class='shadowling'><i>The power of your thralls has granted you the <b>Black Recuperation</b> ability. This will, after a short time, bring a dead thrall completely back to life \
with no bodily defects.</i></span>"
user.mind.spell_list += new /obj/effect/proc_holder/spell/wizard/targeted/reviveThrall
user.mind.spell_list += new /obj/effect/proc_holder/spell/targeted/reviveThrall
if(thralls < victory_threshold)
user << "<span class='shadowling'>You do not have the power to ascend. You require [victory_threshold] thralls, but only [thralls] living thralls are present.</span>"
@@ -375,12 +375,12 @@
usr << "<span class='shadowling'><b>You may find Ascendance in the Shadowling Evolution tab.</b></span>"
for(M in living_mob_list)
if(is_shadow(M))
var/obj/effect/proc_holder/spell/wizard/targeted/collective_mind/CM
var/obj/effect/proc_holder/spell/targeted/collective_mind/CM
if(CM in M.mind.spell_list)
M.mind.spell_list -= CM
qdel(CM)
M.mind.remove_spell(/obj/effect/proc_holder/spell/wizard/targeted/shadowling_hatch)
M.mind.AddSpell(new /obj/effect/proc_holder/spell/wizard/targeted/shadowling_ascend)
M.mind.remove_spell(/obj/effect/proc_holder/spell/targeted/shadowling_hatch)
M.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/shadowling_ascend)
if(M == usr)
M << "<span class='shadowling'><i>You project this power to the rest of the shadowlings.</i></span>"
else
@@ -388,7 +388,7 @@
/obj/effect/proc_holder/spell/wizard/targeted/blindness_smoke
/obj/effect/proc_holder/spell/targeted/blindness_smoke
name = "Blindness Smoke"
desc = "Spews a cloud of smoke which will blind enemies."
panel = "Shadowling Abilities"
@@ -398,7 +398,7 @@
include_user = 1
action_icon_state = "black_smoke"
/obj/effect/proc_holder/spell/wizard/targeted/blindness_smoke/cast(list/targets) //Extremely hacky
/obj/effect/proc_holder/spell/targeted/blindness_smoke/cast(list/targets) //Extremely hacky
for(var/mob/living/user in targets)
user.visible_message("<span class='warning'>[user] suddenly bends over and coughs out a cloud of black smoke, which begins to spread rapidly!</span>")
user << "<span class='deadsay'>You regurgitate a vast cloud of blinding smoke.</span>"
@@ -440,7 +440,7 @@ datum/reagent/shadowling_blindness_smoke/on_mob_life(var/mob/living/M as mob)
/obj/effect/proc_holder/spell/wizard/aoe_turf/unearthly_screech
/obj/effect/proc_holder/spell/aoe_turf/unearthly_screech
name = "Sonic Screech"
desc = "Deafens, stuns, and confuses nearby people. Also shatters windows."
panel = "Shadowling Abilities"
@@ -449,7 +449,7 @@ datum/reagent/shadowling_blindness_smoke/on_mob_life(var/mob/living/M as mob)
clothes_req = 0
action_icon_state = "screech"
/obj/effect/proc_holder/spell/wizard/aoe_turf/unearthly_screech/cast(list/targets)
/obj/effect/proc_holder/spell/aoe_turf/unearthly_screech/cast(list/targets)
usr.audible_message("<span class='warning'><b>[usr] lets out a horrible scream!</b></span>")
playsound(usr.loc, 'sound/effects/screech.ogg', 100, 1)
@@ -480,7 +480,7 @@ datum/reagent/shadowling_blindness_smoke/on_mob_life(var/mob/living/M as mob)
/obj/effect/proc_holder/spell/wizard/aoe_turf/drainLife
/obj/effect/proc_holder/spell/aoe_turf/drainLife
name = "Drain Life"
desc = "Damages nearby humans, draining their life and healing your own wounds."
panel = "Shadowling Abilities"
@@ -491,7 +491,7 @@ datum/reagent/shadowling_blindness_smoke/on_mob_life(var/mob/living/M as mob)
var/list/nearbyTargets
action_icon_state = "drain_life"
/obj/effect/proc_holder/spell/wizard/aoe_turf/drainLife/cast(list/targets, var/mob/living/carbon/human/U = usr)
/obj/effect/proc_holder/spell/aoe_turf/drainLife/cast(list/targets, var/mob/living/carbon/human/U = usr)
targetsDrained = 0
nearbyTargets = list()
for(var/turf/T in targets)
@@ -518,7 +518,7 @@ datum/reagent/shadowling_blindness_smoke/on_mob_life(var/mob/living/M as mob)
/obj/effect/proc_holder/spell/wizard/targeted/reviveThrall
/obj/effect/proc_holder/spell/targeted/reviveThrall
name = "Black Recuperation"
desc = "Brings a dead thrall back to life."
panel = "Shadowling Abilities"
@@ -529,7 +529,7 @@ datum/reagent/shadowling_blindness_smoke/on_mob_life(var/mob/living/M as mob)
var/list/thralls_in_world = list()
action_icon_state = "revive_thrall"
/obj/effect/proc_holder/spell/wizard/targeted/reviveThrall/cast(list/targets)
/obj/effect/proc_holder/spell/targeted/reviveThrall/cast(list/targets)
for(var/mob/living/carbon/human/thrallToRevive in targets)
if(!is_thrall(thrallToRevive))
usr << "<span class='warning'>[thrallToRevive] is not a thrall.</span>"
@@ -563,7 +563,7 @@ datum/reagent/shadowling_blindness_smoke/on_mob_life(var/mob/living/M as mob)
// ASCENDANT ABILITIES BEYOND THIS POINT //
/obj/effect/proc_holder/spell/wizard/targeted/annihilate
/obj/effect/proc_holder/spell/targeted/annihilate
name = "Annihilate"
desc = "Gibs someone instantly."
panel = "Ascendant"
@@ -572,7 +572,7 @@ datum/reagent/shadowling_blindness_smoke/on_mob_life(var/mob/living/M as mob)
clothes_req = 0
action_icon_state = "annihilate"
/obj/effect/proc_holder/spell/wizard/targeted/annihilate/cast(list/targets)
/obj/effect/proc_holder/spell/targeted/annihilate/cast(list/targets)
var/mob/living/simple_animal/ascendant_shadowling/SHA = usr
if(SHA.phasing)
usr << "<span class='warning'>You are not in the same plane of existence. Unphase first.</span>"
@@ -593,7 +593,7 @@ datum/reagent/shadowling_blindness_smoke/on_mob_life(var/mob/living/M as mob)
/obj/effect/proc_holder/spell/wizard/targeted/hypnosis
/obj/effect/proc_holder/spell/targeted/hypnosis
name = "Hypnosis"
desc = "Instantly enthralls a human."
panel = "Ascendant"
@@ -602,7 +602,7 @@ datum/reagent/shadowling_blindness_smoke/on_mob_life(var/mob/living/M as mob)
clothes_req = 0
action_icon_state = "enthrall"
/obj/effect/proc_holder/spell/wizard/targeted/hypnosis/cast(list/targets)
/obj/effect/proc_holder/spell/targeted/hypnosis/cast(list/targets)
var/mob/living/simple_animal/ascendant_shadowling/SHA = usr
if(SHA.phasing)
charge_counter = charge_max
@@ -635,7 +635,7 @@ datum/reagent/shadowling_blindness_smoke/on_mob_life(var/mob/living/M as mob)
/obj/effect/proc_holder/spell/wizard/targeted/shadowling_phase_shift
/obj/effect/proc_holder/spell/targeted/shadowling_phase_shift
name = "Phase Shift"
desc = "Phases you into the space between worlds at will, allowing you to move through walls and become invisible."
panel = "Ascendant"
@@ -645,7 +645,7 @@ datum/reagent/shadowling_blindness_smoke/on_mob_life(var/mob/living/M as mob)
clothes_req = 0
action_icon_state = "shadow_walk"
/obj/effect/proc_holder/spell/wizard/targeted/shadowling_phase_shift/cast(list/targets)
/obj/effect/proc_holder/spell/targeted/shadowling_phase_shift/cast(list/targets)
var/mob/living/simple_animal/ascendant_shadowling/SHA = usr
for(SHA in targets)
SHA.phasing = !SHA.phasing
@@ -662,7 +662,7 @@ datum/reagent/shadowling_blindness_smoke/on_mob_life(var/mob/living/M as mob)
/obj/effect/proc_holder/spell/wizard/aoe_turf/ascendant_storm
/obj/effect/proc_holder/spell/aoe_turf/ascendant_storm
name = "Lightning Storm"
desc = "Shocks everyone nearby."
panel = "Ascendant"
@@ -671,7 +671,7 @@ datum/reagent/shadowling_blindness_smoke/on_mob_life(var/mob/living/M as mob)
clothes_req = 0
action_icon_state = "lightning_storm"
/obj/effect/proc_holder/spell/wizard/aoe_turf/ascendant_storm/cast(list/targets)
/obj/effect/proc_holder/spell/aoe_turf/ascendant_storm/cast(list/targets)
var/mob/living/simple_animal/ascendant_shadowling/SHA = usr
if(SHA.phasing)
usr << "<span class='warning'>You are not in the same plane of existence. Unphase first.</span>"
@@ -690,7 +690,7 @@ datum/reagent/shadowling_blindness_smoke/on_mob_life(var/mob/living/M as mob)
target.electrocute_act(80, "lightning bolt")
usr.Beam(target,icon_state="red_lightning",icon='icons/effects/effects.dmi',time=1)
/obj/effect/proc_holder/spell/wizard/targeted/shadowlingAscendantTransmit
/obj/effect/proc_holder/spell/targeted/shadowlingAscendantTransmit
name = "Ascendant Broadcast"
desc = "Sends a message to the whole wide world."
panel = "Ascendant"
@@ -700,7 +700,7 @@ datum/reagent/shadowling_blindness_smoke/on_mob_life(var/mob/living/M as mob)
include_user = 1
action_icon_state = "transmit"
/obj/effect/proc_holder/spell/wizard/targeted/shadowlingAscendantTransmit/cast(list/targets)
/obj/effect/proc_holder/spell/targeted/shadowlingAscendantTransmit/cast(list/targets)
for(var/mob/living/user in targets)
var/text = stripped_input(user, "What do you want to say to everything on and near [station_name()]?.", "Transmit to World", "")
if(!text)
@@ -1,6 +1,6 @@
//In here: Hatch and Ascendance
var/list/possibleShadowlingNames = list("U'ruan", "Y`shej", "Nex", "Hel-uae", "Noaey'gief", "Mii`mahza", "Amerziox", "Gyrg-mylin", "Kanet'pruunance")
/obj/effect/proc_holder/spell/wizard/targeted/shadowling_hatch
/obj/effect/proc_holder/spell/targeted/shadowling_hatch
name = "Hatch"
desc = "Casts off your disguise."
panel = "Shadowling Evolution"
@@ -10,7 +10,7 @@ var/list/possibleShadowlingNames = list("U'ruan", "Y`shej", "Nex", "Hel-uae", "N
include_user = 1
action_icon_state = "hatch"
/obj/effect/proc_holder/spell/wizard/targeted/shadowling_hatch/cast(list/targets)
/obj/effect/proc_holder/spell/targeted/shadowling_hatch/cast(list/targets)
if(usr.stat || !ishuman(usr) || !usr)
return
for(var/mob/living/carbon/human/H in targets)
@@ -90,15 +90,15 @@ var/list/possibleShadowlingNames = list("U'ruan", "Y`shej", "Nex", "Hel-uae", "N
sleep(10)
H << "<span class='shadowling'><b><i>Your powers are awoken. You may now live to your fullest extent. Remember your goal. Cooperate with your thralls and allies.</b></i></span>"
H.AddSpell(new /obj/effect/proc_holder/spell/wizard/targeted/shadowling_ascend)
H.AddSpell(new /obj/effect/proc_holder/spell/wizard/targeted/glare)
H.AddSpell(new /obj/effect/proc_holder/spell/wizard/aoe_turf/veil)
H.AddSpell(new /obj/effect/proc_holder/spell/wizard/targeted/shadow_walk)
H.AddSpell(new /obj/effect/proc_holder/spell/wizard/aoe_turf/flashfreeze)
H.AddSpell(new /obj/effect/proc_holder/spell/wizard/targeted/collective_mind)
H.AddSpell(new /obj/effect/proc_holder/spell/targeted/shadowling_ascend)
H.AddSpell(new /obj/effect/proc_holder/spell/targeted/glare)
H.AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/veil)
H.AddSpell(new /obj/effect/proc_holder/spell/targeted/shadow_walk)
H.AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/flashfreeze)
H.AddSpell(new /obj/effect/proc_holder/spell/targeted/collective_mind)
H.mind.remove_spell(src)
/obj/effect/proc_holder/spell/wizard/targeted/shadowling_ascend
/obj/effect/proc_holder/spell/targeted/shadowling_ascend
name = "Ascend"
desc = "Enters your true form."
panel = "Shadowling Evolution"
@@ -108,7 +108,7 @@ var/list/possibleShadowlingNames = list("U'ruan", "Y`shej", "Nex", "Hel-uae", "N
include_user = 1
action_icon_state = "ascend"
/obj/effect/proc_holder/spell/wizard/targeted/shadowling_ascend/cast(list/targets)
/obj/effect/proc_holder/spell/targeted/shadowling_ascend/cast(list/targets)
if(usr.stat || !ishuman(usr) || !usr)
return
for(var/mob/living/carbon/human/H in targets)
@@ -157,11 +157,11 @@ var/list/possibleShadowlingNames = list("U'ruan", "Y`shej", "Nex", "Hel-uae", "N
H.mind.transfer_to(A)
A.name = H.real_name
A.languages = H.languages
A.AddSpell(new /obj/effect/proc_holder/spell/wizard/targeted/annihilate)
A.AddSpell(new /obj/effect/proc_holder/spell/wizard/targeted/hypnosis)
A.AddSpell(new /obj/effect/proc_holder/spell/wizard/targeted/shadowling_phase_shift)
A.AddSpell(new /obj/effect/proc_holder/spell/wizard/aoe_turf/ascendant_storm)
A.AddSpell(new /obj/effect/proc_holder/spell/wizard/targeted/shadowlingAscendantTransmit)
A.AddSpell(new /obj/effect/proc_holder/spell/targeted/annihilate)
A.AddSpell(new /obj/effect/proc_holder/spell/targeted/hypnosis)
A.AddSpell(new /obj/effect/proc_holder/spell/targeted/shadowling_phase_shift)
A.AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/ascendant_storm)
A.AddSpell(new /obj/effect/proc_holder/spell/targeted/shadowlingAscendantTransmit)
if(A.real_name)
A.real_name = H.real_name
H.invisibility = 60 //This is pretty bad, but is also necessary for the shuttle call to function properly
+8 -8
View File
@@ -59,21 +59,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.mind.AddSpell(new /obj/effect/proc_holder/spell/wizard/targeted/projectile/magic_missile(M))
M.mind.AddSpell(new /obj/effect/proc_holder/spell/wizard/dumbfire/fireball(M))
M.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/projectile/magic_missile(M))
M.mind.AddSpell(new /obj/effect/proc_holder/spell/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.mind.AddSpell(new /obj/effect/proc_holder/spell/wizard/targeted/area_teleport/teleport(M))
M.mind.AddSpell(new /obj/effect/proc_holder/spell/wizard/targeted/ethereal_jaunt(M))
M.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/area_teleport/teleport(M))
M.mind.AddSpell(new /obj/effect/proc_holder/spell/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.mind.AddSpell(new /obj/effect/proc_holder/spell/wizard/targeted/charge(M))
M.mind.AddSpell(new /obj/effect/proc_holder/spell/wizard/aoe_turf/conjure/forcewall(M))
M.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/charge(M))
M.mind.AddSpell(new /obj/effect/proc_holder/spell/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.mind.AddSpell(new /obj/effect/proc_holder/spell/wizard/aoe_turf/knock(M))
M.mind.AddSpell(new /obj/effect/proc_holder/spell/wizard/targeted/mind_transfer(M))
M.mind.AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/knock(M))
M.mind.AddSpell(new /obj/effect/proc_holder/spell/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.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_l_ear)
+33 -33
View File
@@ -96,107 +96,107 @@
/datum/spellbook_entry/noclothes
name = "Remove Clothes Requirement"
spell_type = /obj/effect/proc_holder/spell/wizard/noclothes
spell_type = /obj/effect/proc_holder/spell/noclothes
log_name = "NC"
/datum/spellbook_entry/fireball
name = "Fireball"
spell_type = /obj/effect/proc_holder/spell/wizard/dumbfire/fireball
spell_type = /obj/effect/proc_holder/spell/dumbfire/fireball
log_name = "FB"
/datum/spellbook_entry/magicm
name = "Magic Missile"
spell_type = /obj/effect/proc_holder/spell/wizard/targeted/projectile/magic_missile
spell_type = /obj/effect/proc_holder/spell/targeted/projectile/magic_missile
log_name = "MM"
/datum/spellbook_entry/disintegrate
name = "Disintegrate"
spell_type = /obj/effect/proc_holder/spell/wizard/targeted/inflict_handler/disintegrate
spell_type = /obj/effect/proc_holder/spell/targeted/inflict_handler/disintegrate
log_name = "DG"
/datum/spellbook_entry/disabletech
name = "Disable Tech"
spell_type = /obj/effect/proc_holder/spell/wizard/targeted/emplosion/disable_tech
spell_type = /obj/effect/proc_holder/spell/targeted/emplosion/disable_tech
log_name = "DT"
category = "Utility Spells"
/datum/spellbook_entry/repulse
name = "Repulse"
spell_type = /obj/effect/proc_holder/spell/wizard/aoe_turf/repulse
spell_type = /obj/effect/proc_holder/spell/aoe_turf/repulse
log_name = "RP"
/datum/spellbook_entry/smoke
name = "Smoke"
spell_type = /obj/effect/proc_holder/spell/wizard/targeted/smoke
spell_type = /obj/effect/proc_holder/spell/targeted/smoke
log_name = "SM"
category = "Utility Spells"
/datum/spellbook_entry/blind
name = "Blind"
spell_type = /obj/effect/proc_holder/spell/wizard/targeted/trigger/blind
spell_type = /obj/effect/proc_holder/spell/targeted/trigger/blind
log_name = "BD"
/datum/spellbook_entry/mindswap
name = "Mindswap"
spell_type = /obj/effect/proc_holder/spell/wizard/targeted/mind_transfer
spell_type = /obj/effect/proc_holder/spell/targeted/mind_transfer
log_name = "MT"
category = "Utility Spells"
/datum/spellbook_entry/forcewall
name = "Force Wall"
spell_type = /obj/effect/proc_holder/spell/wizard/aoe_turf/conjure/forcewall
spell_type = /obj/effect/proc_holder/spell/aoe_turf/conjure/forcewall
log_name = "FW"
category = "Utility Spells"
/datum/spellbook_entry/blink
name = "Blink"
spell_type = /obj/effect/proc_holder/spell/wizard/targeted/turf_teleport/blink
spell_type = /obj/effect/proc_holder/spell/targeted/turf_teleport/blink
log_name = "BL"
category = "Utility Spells"
/datum/spellbook_entry/teleport
name = "Teleport"
spell_type = /obj/effect/proc_holder/spell/wizard/targeted/area_teleport/teleport
spell_type = /obj/effect/proc_holder/spell/targeted/area_teleport/teleport
log_name = "TP"
category = "Utility Spells"
/datum/spellbook_entry/mutate
name = "Mutate"
spell_type = /obj/effect/proc_holder/spell/wizard/targeted/genetic/mutate
spell_type = /obj/effect/proc_holder/spell/targeted/genetic/mutate
log_name = "MU"
category = "Utility Spells"
/datum/spellbook_entry/jaunt
name = "Ethereal Jaunt"
spell_type = /obj/effect/proc_holder/spell/wizard/targeted/ethereal_jaunt
spell_type = /obj/effect/proc_holder/spell/targeted/ethereal_jaunt
log_name = "EJ"
category = "Utility Spells"
/datum/spellbook_entry/knock
name = "Knock"
spell_type = /obj/effect/proc_holder/spell/wizard/aoe_turf/knock
spell_type = /obj/effect/proc_holder/spell/aoe_turf/knock
log_name = "KN"
category = "Utility Spells"
/datum/spellbook_entry/horseman
name = "Curse of The Horseman"
spell_type = /obj/effect/proc_holder/spell/wizard/targeted/horsemask
spell_type = /obj/effect/proc_holder/spell/targeted/horsemask
log_name = "HH"
/datum/spellbook_entry/fleshtostone
name = "Flesh to Stone"
spell_type = /obj/effect/proc_holder/spell/wizard/targeted/inflict_handler/flesh_to_stone
spell_type = /obj/effect/proc_holder/spell/targeted/inflict_handler/flesh_to_stone
log_name = "FS"
/datum/spellbook_entry/summonitem
name = "Summon Item"
spell_type = /obj/effect/proc_holder/spell/wizard/targeted/summonitem
spell_type = /obj/effect/proc_holder/spell/targeted/summonitem
log_name = "IS"
category = "Utility Spells"
/datum/spellbook_entry/lightningbolt
name = "Lightning Bolt"
spell_type = /obj/effect/proc_holder/spell/wizard/targeted/lightning
spell_type = /obj/effect/proc_holder/spell/targeted/lightning
log_name = "LB"
/datum/spellbook_entry/item
@@ -277,7 +277,7 @@
/datum/spellbook_entry/item/soulstones/Buy(var/mob/living/carbon/human/user,var/obj/item/weapon/spellbook/book)
. =..()
if(.)
user.mind.AddSpell(new /obj/effect/proc_holder/spell/wizard/aoe_turf/conjure/construct(null))
user.mind.AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/conjure/construct(null))
return .
/datum/spellbook_entry/item/wands
@@ -531,7 +531,7 @@
//Single Use Spellbooks//
/obj/item/weapon/spellbook/oneuse
var/spell = /obj/effect/proc_holder/spell/wizard/targeted/projectile/magic_missile //just a placeholder to avoid runtimes if someone spawned the generic
var/spell = /obj/effect/proc_holder/spell/targeted/projectile/magic_missile //just a placeholder to avoid runtimes if someone spawned the generic
var/spellname = "sandbox"
var/used = 0
name = "spellbook of "
@@ -543,8 +543,8 @@
name += spellname
/obj/item/weapon/spellbook/oneuse/attack_self(mob/user as mob)
var/obj/effect/proc_holder/spell/wizard/S = new spell
for(var/obj/effect/proc_holder/spell/wizard/knownspell in user.spell_list)
var/obj/effect/proc_holder/spell/S = new spell
for(var/obj/effect/proc_holder/spell/knownspell in user.spell_list)
if(knownspell.type == S.type)
if(user.mind)
if(user.mind.special_role == "apprentice" || user.mind.special_role == "Wizard")
@@ -572,7 +572,7 @@
return
/obj/item/weapon/spellbook/oneuse/fireball
spell = /obj/effect/proc_holder/spell/wizard/dumbfire/fireball
spell = /obj/effect/proc_holder/spell/dumbfire/fireball
spellname = "fireball"
icon_state ="bookfireball"
desc = "This book feels warm to the touch."
@@ -583,7 +583,7 @@
qdel(src)
/obj/item/weapon/spellbook/oneuse/smoke
spell = /obj/effect/proc_holder/spell/wizard/targeted/smoke
spell = /obj/effect/proc_holder/spell/targeted/smoke
spellname = "smoke"
icon_state ="booksmoke"
desc = "This book is overflowing with the dank arts."
@@ -597,7 +597,7 @@
user.nutrition = 0
/obj/item/weapon/spellbook/oneuse/blind
spell = /obj/effect/proc_holder/spell/wizard/targeted/trigger/blind
spell = /obj/effect/proc_holder/spell/targeted/trigger/blind
spellname = "blind"
icon_state ="bookblind"
desc = "This book looks blurry, no matter how you look at it."
@@ -608,7 +608,7 @@
user.eye_blind = 10
/obj/item/weapon/spellbook/oneuse/mindswap
spell = /obj/effect/proc_holder/spell/wizard/targeted/mind_transfer
spell = /obj/effect/proc_holder/spell/targeted/mind_transfer
spellname = "mindswap"
icon_state ="bookmindswap"
desc = "This book's cover is pristine, though its pages look ragged and torn."
@@ -663,7 +663,7 @@
stored_swap = null
/obj/item/weapon/spellbook/oneuse/forcewall
spell = /obj/effect/proc_holder/spell/wizard/aoe_turf/conjure/forcewall
spell = /obj/effect/proc_holder/spell/aoe_turf/conjure/forcewall
spellname = "forcewall"
icon_state ="bookforcewall"
desc = "This book has a dedication to mimes everywhere inside the front cover."
@@ -677,7 +677,7 @@
/obj/item/weapon/spellbook/oneuse/knock
spell = /obj/effect/proc_holder/spell/wizard/aoe_turf/knock
spell = /obj/effect/proc_holder/spell/aoe_turf/knock
spellname = "knock"
icon_state ="bookknock"
desc = "This book is hard to hold closed properly."
@@ -688,7 +688,7 @@
user.Weaken(20)
/obj/item/weapon/spellbook/oneuse/horsemask
spell = /obj/effect/proc_holder/spell/wizard/targeted/horsemask
spell = /obj/effect/proc_holder/spell/targeted/horsemask
spellname = "horses"
icon_state ="bookhorses"
desc = "This book is more horse than your mind has room for."
@@ -708,7 +708,7 @@
user <<"<span class='notice'>I say thee neigh</span>"
/obj/item/weapon/spellbook/oneuse/charge
spell = /obj/effect/proc_holder/spell/wizard/targeted/charge
spell = /obj/effect/proc_holder/spell/targeted/charge
spellname = "charging"
icon_state ="bookcharge"
desc = "This book is made of 100% post-consumer wizard."
@@ -719,7 +719,7 @@
empulse(src, 1, 1)
/obj/item/weapon/spellbook/oneuse/summonitem
spell = /obj/effect/proc_holder/spell/wizard/targeted/summonitem
spell = /obj/effect/proc_holder/spell/targeted/summonitem
spellname = "instant summons"
icon_state ="booksummons"
desc = "This book is bright and garish, very hard to miss."
@@ -731,7 +731,7 @@
/obj/item/weapon/spellbook/oneuse/fake_gib
spell = /obj/effect/proc_holder/spell/wizard/targeted/fake_gib
spell = /obj/effect/proc_holder/spell/targeted/fake_gib
spellname = "disintegrate"
icon_state ="bookfireball"
desc = "This book feels like it will rip stuff apart."
+3 -3
View File
@@ -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/wizard/targeted/ethereal_jaunt(usr)
wizard_mob.spell_list += new /obj/effect/proc_holder/spell/targeted/ethereal_jaunt(usr)
*/
/datum/game_mode/proc/equip_wizard(mob/living/carbon/human/wizard_mob)
@@ -260,7 +260,7 @@
if(wizard.spell_list)
text += "<br><B>[wizard.name] used the following spells: </B>"
var/i = 1
for(var/obj/effect/proc_holder/spell/wizard/S in wizard.spell_list)
for(var/obj/effect/proc_holder/spell/S in wizard.spell_list)
text += "[S.name]"
if(wizard.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, var/removeallspells=1)
for(var/obj/effect/proc_holder/spell/wizard/spell_to_remove in src.spell_list)
for(var/obj/effect/proc_holder/spell/spell_to_remove in src.spell_list)
if (spell_to_remove.name == "Artificer" && !removeallspells) continue
qdel(spell_to_remove)
+1 -1
View File
@@ -37,7 +37,7 @@ var/list/image/ghost_darkness_images = list() //this is a list of images for thi
verbs += /mob/dead/observer/proc/dead_tele
// Our new boo spell.
AddSpell(new /obj/effect/proc_holder/spell/wizard/aoe_turf/boo(src))
AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/boo(src))
can_reenter_corpse = flags & GHOST_CAN_REENTER
started_as_observer = flags & GHOST_IS_OBSERVER
+2 -2
View File
@@ -11,7 +11,7 @@ var/global/list/boo_phrases=list(
"It feels like someone's standing behind you.",
)
/obj/effect/proc_holder/spell/wizard/aoe_turf/boo
/obj/effect/proc_holder/spell/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/wizard/aoe_turf/boo/cast(list/targets)
/obj/effect/proc_holder/spell/aoe_turf/boo/cast(list/targets)
for(var/turf/T in targets)
for(var/atom/A in T.contents)
@@ -32,7 +32,7 @@
/datum/superheroes/proc/assign_spells(var/mob/living/carbon/human/H)
if(default_spells.len)
for(var/spell in default_spells)
var/obj/effect/proc_holder/spell/wizard/S = spell
var/obj/effect/proc_holder/spell/S = spell
if(!S) return
H.AddSpell(new S)
@@ -74,7 +74,7 @@
/datum/superheroes/griffin
name = "The Griffin"
default_spells = list(/obj/effect/proc_holder/spell/wizard/targeted/recruit)
default_spells = list(/obj/effect/proc_holder/spell/targeted/recruit)
class = "Supervillain"
desc = "You are The Griffin, the ultimate supervillain. You thrive on chaos and have no respect for the supposed authority \
of the command staff of this station. Along with your gang of dim-witted yet trusty henchmen, you will be able to execute \
@@ -103,7 +103,7 @@
desc = "You are LightnIan, the lord of lightning! A freak electrical accident while working in the station's kennel \
has given you mastery over lightning and a peculiar desire to sniff butts. Although you are a recent addition to the \
station's hero roster, you intend to leave your mark."
default_spells = list(/obj/effect/proc_holder/spell/wizard/targeted/lightning/lightnian)
default_spells = list(/obj/effect/proc_holder/spell/targeted/lightning/lightnian)
/datum/superheroes/lightnian/equip(var/mob/living/carbon/human/H)
..()
@@ -122,7 +122,7 @@
desc = "You were a roboticist, once. Now you are Electro-Negmatic, a name this station will learn to fear. You designed \
your costume to resemble E-N, your faithful dog that some callous RD destroyed because it was sparking up the plasma. You \
intend to take your revenge and make them all pay thanks to your magnetic powers."
default_spells = list(/obj/effect/proc_holder/spell/wizard/targeted/magnet)
default_spells = list(/obj/effect/proc_holder/spell/targeted/magnet)
/datum/superheroes/electro/equip(var/mob/living/carbon/human/H)
..()
@@ -140,7 +140,7 @@
//The Griffin's special recruit abilitiy
/obj/effect/proc_holder/spell/wizard/targeted/recruit
/obj/effect/proc_holder/spell/targeted/recruit
name = "Recruit Greyshirt"
desc = "Allows you to recruit a conscious, non-braindead, non-catatonic human to be part of the Greyshirts, your personal henchmen. This works on Civilians only and you can recruit a maximum of 3!."
charge_max = 450
@@ -149,7 +149,7 @@
action_icon_state = "spell_greytide"
var/recruiting = 0
/obj/effect/proc_holder/spell/wizard/targeted/recruit/cast(list/targets)
/obj/effect/proc_holder/spell/targeted/recruit/cast(list/targets)
for(var/mob/living/carbon/human/target in targets)
if(ticker.mode.greyshirts.len >= 3)
usr << "<span class='warning'>You have already recruited the maximum number of henchmen.</span>"
@@ -153,7 +153,7 @@
environment_smash = 2
attack_sound = 'sound/weapons/punch3.ogg'
status_flags = 0
construct_spells = list(/obj/effect/proc_holder/spell/wizard/aoe_turf/conjure/lesserforcewall)
construct_spells = list(/obj/effect/proc_holder/spell/aoe_turf/conjure/lesserforcewall)
/mob/living/simple_animal/construct/armoured/attackby(var/obj/item/O as obj, var/mob/user as mob, params)
if(O.force)
@@ -227,7 +227,7 @@
attacktext = "slashes"
see_in_dark = 7
attack_sound = 'sound/weapons/bladeslice.ogg'
construct_spells = list(/obj/effect/proc_holder/spell/wizard/targeted/ethereal_jaunt/shift)
construct_spells = list(/obj/effect/proc_holder/spell/targeted/ethereal_jaunt/shift)
@@ -251,11 +251,11 @@
attacktext = "rams"
environment_smash = 2
attack_sound = 'sound/weapons/punch2.ogg'
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)
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)
/////////////////////////////Behemoth/////////////////////////
@@ -322,7 +322,7 @@
environment_smash = 1
see_in_dark = 7
attack_sound = 'sound/weapons/tap.ogg'
construct_spells = list(/obj/effect/proc_holder/spell/wizard/targeted/smoke/disable)
construct_spells = list(/obj/effect/proc_holder/spell/targeted/smoke/disable)
/mob/living/simple_animal/construct/harvester/Process_Spacemove(var/check_drift = 0)
return 1
@@ -56,9 +56,9 @@
/mob/living/simple_animal/hostile/statue/New(loc, var/mob/living/creator)
..()
// Give spells
AddSpell(new /obj/effect/proc_holder/spell/wizard/aoe_turf/flicker_lights(src))
AddSpell(new /obj/effect/proc_holder/spell/wizard/aoe_turf/blindness(src))
AddSpell(new /obj/effect/proc_holder/spell/wizard/targeted/night_vision(src))
AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/flicker_lights(src))
AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/blindness(src))
AddSpell(new /obj/effect/proc_holder/spell/targeted/night_vision(src))
// Give nightvision
see_invisible = SEE_INVISIBLE_OBSERVER_NOLIGHTING
@@ -205,7 +205,7 @@
// Statue powers
// Flicker lights
/obj/effect/proc_holder/spell/wizard/aoe_turf/flicker_lights
/obj/effect/proc_holder/spell/aoe_turf/flicker_lights
name = "Flicker Lights"
desc = "You will trigger a large amount of lights around you to flicker."
@@ -213,14 +213,14 @@
clothes_req = 0
range = 14
/obj/effect/proc_holder/spell/wizard/aoe_turf/flicker_lights/cast(list/targets)
/obj/effect/proc_holder/spell/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/wizard/aoe_turf/blindness
/obj/effect/proc_holder/spell/aoe_turf/blindness
name = "Blindness"
desc = "Your prey will be momentarily blind for you to advance on them."
@@ -229,7 +229,7 @@
clothes_req = 0
range = 8
/obj/effect/proc_holder/spell/wizard/aoe_turf/blindness/cast(list/targets)
/obj/effect/proc_holder/spell/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)
@@ -239,7 +239,7 @@
return
//Toggle Night Vision
/obj/effect/proc_holder/spell/wizard/targeted/night_vision
/obj/effect/proc_holder/spell/targeted/night_vision
name = "Toggle Nightvision \[ON\]"
desc = "Toggle your nightvision mode."
@@ -250,7 +250,7 @@
range = -1
include_user = 1
/obj/effect/proc_holder/spell/wizard/targeted/night_vision/cast(list/targets)
/obj/effect/proc_holder/spell/targeted/night_vision/cast(list/targets)
for(var/mob/living/target in targets)
if(target.see_invisible == SEE_INVISIBLE_LIVING)
@@ -116,10 +116,10 @@
/mob/living/simple_animal/revenant/proc/giveSpells()
if(src.mind)
src.mind.spell_list += new /obj/effect/proc_holder/spell/wizard/targeted/revenant_harvest
src.mind.spell_list += new /obj/effect/proc_holder/spell/wizard/targeted/revenant_transmit
src.mind.spell_list += new /obj/effect/proc_holder/spell/wizard/aoe_turf/revenant_light
src.mind.spell_list += new /obj/effect/proc_holder/spell/wizard/aoe_turf/revenantDefile
src.mind.spell_list += new /obj/effect/proc_holder/spell/targeted/revenant_harvest
src.mind.spell_list += new /obj/effect/proc_holder/spell/targeted/revenant_transmit
src.mind.spell_list += new /obj/effect/proc_holder/spell/aoe_turf/revenant_light
src.mind.spell_list += new /obj/effect/proc_holder/spell/aoe_turf/revenantDefile
return 1
return 0
@@ -1,5 +1,5 @@
//Harvest Essence: The bread and butter of the revenant. The basic way of harvesting additional essence.
/obj/effect/proc_holder/spell/wizard/targeted/revenant_harvest
/obj/effect/proc_holder/spell/targeted/revenant_harvest
name = "Harvest (0E)"
desc = "Siphons the lingering spectral essence from a human, empowering yourself."
panel = "Revenant Abilities"
@@ -10,7 +10,7 @@
var/draining
var/list/drained_mobs = list() //Cannot harvest the same mob twice
/obj/effect/proc_holder/spell/wizard/targeted/revenant_harvest/cast(list/targets, var/mob/living/simple_animal/revenant/user = usr)
/obj/effect/proc_holder/spell/targeted/revenant_harvest/cast(list/targets, var/mob/living/simple_animal/revenant/user = usr)
if(!user.castcheck(0))
charge_counter = charge_max
return
@@ -72,7 +72,7 @@
//Transmit: the revemant's only direct way to communicate. Sends a single message silently to a single mob for 5E.
/obj/effect/proc_holder/spell/wizard/targeted/revenant_transmit
/obj/effect/proc_holder/spell/targeted/revenant_transmit
name = "Transmit (5E)"
desc = "Telepathically transmits a message to the target."
panel = "Revenant Abilities (Locked)"
@@ -82,7 +82,7 @@
include_user = 1
var/locked = 1
/obj/effect/proc_holder/spell/wizard/targeted/revenant_transmit/cast(list/targets, var/mob/living/simple_animal/revenant/user = usr)
/obj/effect/proc_holder/spell/targeted/revenant_transmit/cast(list/targets, var/mob/living/simple_animal/revenant/user = usr)
if(!user.castcheck(-5))
charge_counter = charge_max
return
@@ -105,7 +105,7 @@
//Overload Light: Breaks a light that's online and sends out lightning bolts to all nearby people.
/obj/effect/proc_holder/spell/wizard/aoe_turf/revenant_light
/obj/effect/proc_holder/spell/aoe_turf/revenant_light
name = "Overload Light (25E)"
desc = "Directs a large amount of essence into an electrical light, causing an impressive light show."
panel = "Revenant Abilities (Locked)"
@@ -114,7 +114,7 @@
range = 1
var/locked = 1
/obj/effect/proc_holder/spell/wizard/aoe_turf/revenant_light/cast(list/targets, var/mob/living/simple_animal/revenant/user = usr)
/obj/effect/proc_holder/spell/aoe_turf/revenant_light/cast(list/targets, var/mob/living/simple_animal/revenant/user = usr)
if(!user.castcheck(-25))
charge_counter = charge_max
return
@@ -143,7 +143,7 @@
//Defile: Corrupts nearby stuff, unblesses floor tiles.
/obj/effect/proc_holder/spell/wizard/aoe_turf/revenantDefile
/obj/effect/proc_holder/spell/aoe_turf/revenantDefile
name = "Defile (30E)"
desc = "Twists and corrupts certain nearby objects. Also dispels holy auras on floors, but not salt lines."
panel = "Revenant Abilities (Locked)"
@@ -152,7 +152,7 @@
range = 1
var/locked = 1
/obj/effect/proc_holder/spell/wizard/aoe_turf/revenantDefile/cast(list/targets, var/mob/living/simple_animal/revenant/user = usr)
/obj/effect/proc_holder/spell/aoe_turf/revenantDefile/cast(list/targets, var/mob/living/simple_animal/revenant/user = usr)
if(!user.castcheck(-30))
charge_counter = charge_max
return
+3 -3
View File
@@ -916,10 +916,10 @@ var/list/slot_equipment_priority = list( \
add_stings_to_statpanel(mind.changeling.purchasedpowers)
if(spell_list && spell_list.len)
for(var/obj/effect/proc_holder/spell/wizard/S in spell_list)
for(var/obj/effect/proc_holder/spell/S in spell_list)
add_spell_to_statpanel(S)
if(mind && istype(src, /mob/living) && mind.spell_list && mind.spell_list.len)
for(var/obj/effect/proc_holder/spell/wizard/S in mind.spell_list)
for(var/obj/effect/proc_holder/spell/S in mind.spell_list)
add_spell_to_statpanel(S)
@@ -1005,7 +1005,7 @@ var/list/slot_equipment_priority = list( \
for(var/obj/effect/proc_holder/changeling/S in stings)
if(S.chemical_cost >=0 && S.can_be_used_by(src))
statpanel("[S.panel]",((S.chemical_cost > 0) ? "[S.chemical_cost]" : ""),S)
/mob/proc/add_spell_to_statpanel(var/obj/effect/proc_holder/spell/wizard/S)
/mob/proc/add_spell_to_statpanel(var/obj/effect/proc_holder/spell/S)
switch(S.charge_type)
if("recharge")
statpanel(S.panel,"[S.charge_counter/10.0]/[S.charge_max/10]",S)
+1 -1
View File
@@ -184,7 +184,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/wizard/list/spell_list = list()
var/obj/effect/proc_holder/spell/list/spell_list = list()
//Changlings, but can be used in other modes
// var/obj/effect/proc_holder/changpower/list/power_list = list()
+9 -9
View File
@@ -4,9 +4,9 @@
/mob/spirit/mask/New()
..()
AddSpell(new /obj/effect/proc_holder/spell/wizard/aoe_turf/conjure/create_talisman(src))
AddSpell(new /obj/effect/proc_holder/spell/wizard/aoe_turf/blood_speech(src))
AddSpell(new /obj/effect/proc_holder/spell/wizard/aoe_turf/shatter_lights(src))
AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/conjure/create_talisman(src))
AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/blood_speech(src))
AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/shatter_lights(src))
/mob/spirit/mask/verb/go_to_follower()
@@ -114,7 +114,7 @@
target.flicker()
// SPELLS
/obj/effect/proc_holder/spell/wizard/aoe_turf/blood_speech
/obj/effect/proc_holder/spell/aoe_turf/blood_speech
name = "Speak to your Acolytes"
desc = "This spell allows you to speak to your flock."
school = "unknown evil"
@@ -125,7 +125,7 @@
invocation_type = "none"
range = 0
/obj/effect/proc_holder/spell/wizard/aoe_turf/blood_speech/cast(list/targets)
/obj/effect/proc_holder/spell/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)
@@ -138,7 +138,7 @@
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/wizard/aoe_turf/shatter_lights
/obj/effect/proc_holder/spell/aoe_turf/shatter_lights
name = "Spread Shadows"
desc = "This spell breaks lights near the mask."
school = "unknown evil"
@@ -149,7 +149,7 @@
invocation_type = "none"
range = 0
/obj/effect/proc_holder/spell/wizard/aoe_turf/shatter_lights/cast(list/targets)
/obj/effect/proc_holder/spell/aoe_turf/shatter_lights/cast(list/targets)
cult_log("[key_name_admin(usr)] used Spread Shadows.")
flicker_mask(usr)
spawn(0)
@@ -162,7 +162,7 @@
F.on = 0
/obj/effect/proc_holder/spell/wizard/aoe_turf/conjure/create_talisman
/obj/effect/proc_holder/spell/aoe_turf/conjure/create_talisman
name = "Create Talisman"
desc = "This spell conjures a talisman"
@@ -189,7 +189,7 @@
"Construct"="construct")
/obj/effect/proc_holder/spell/wizard/aoe_turf/conjure/create_talisman/cast(list/targets)
/obj/effect/proc_holder/spell/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]