mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-22 11:37:40 +01:00
Fixed the map/code issues that the body bags caused.
/obj/effects is now /obj/effect. /obj/station_objects is now /obj/structure. Did a bit of minor blob work. The Bay 12 body bags were replaced with closets because having two sets of code that do almost the same thing is silly. Changed back a few of the last jobproc edits as the remove from list before assign was a check to see if the mob was fucked up and if it was remove it so we did not check it again as it would still be fucked up. The medbay/tox monkeys names are random once more. More random name monkeys will help with changeling and clean up the observe/mob menus. git-svn-id: http://tgstation13.googlecode.com/svn/trunk@2324 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
@@ -113,7 +113,7 @@ STI KALY - blind
|
||||
|
||||
var/area/thearea = pick(theareas)
|
||||
|
||||
var/datum/effects/system/harmless_smoke_spread/smoke = new /datum/effects/system/harmless_smoke_spread()
|
||||
var/datum/effect/system/harmless_smoke_spread/smoke = new /datum/effect/system/harmless_smoke_spread()
|
||||
smoke.set_up(5, 0, affected_mob.loc)
|
||||
smoke.attach(affected_mob)
|
||||
smoke.start()
|
||||
|
||||
+23
-23
@@ -1,9 +1,9 @@
|
||||
/obj/effects/proc_holder
|
||||
/obj/effect/proc_holder
|
||||
var/panel = "Debug"//What panel the proc holder needs to go on.
|
||||
|
||||
var/list/spells = typesof(/obj/effects/proc_holder/spell) //needed for the badmin verb for now
|
||||
var/list/spells = typesof(/obj/effect/proc_holder/spell) //needed for the badmin verb for now
|
||||
|
||||
/obj/effects/proc_holder/spell
|
||||
/obj/effect/proc_holder/spell
|
||||
name = "Spell"
|
||||
desc = "A wizard spell"
|
||||
density = 0
|
||||
@@ -33,7 +33,7 @@ var/list/spells = typesof(/obj/effects/proc_holder/spell) //needed for the badmi
|
||||
|
||||
var/critfailchance = 0
|
||||
|
||||
/obj/effects/proc_holder/spell/proc/cast_check(skipcharge = 0,mob/user = usr) //checks if the spell can be cast based on its settings; skipcharge is used when an additional cast_check is called inside the spell
|
||||
/obj/effect/proc_holder/spell/proc/cast_check(skipcharge = 0,mob/user = usr) //checks if the spell can be cast based on its settings; skipcharge is used when an additional cast_check is called inside the spell
|
||||
|
||||
if(!(src in usr.spell_list))
|
||||
usr << "\red You shouldn't have this spell! Something's wrong."
|
||||
@@ -74,7 +74,7 @@ var/list/spells = typesof(/obj/effects/proc_holder/spell) //needed for the badmi
|
||||
|
||||
return 1
|
||||
|
||||
/obj/effects/proc_holder/spell/proc/invocation(mob/user = usr) //spelling the spell out and setting it on recharge/reducing charges amount
|
||||
/obj/effect/proc_holder/spell/proc/invocation(mob/user = usr) //spelling the spell out and setting it on recharge/reducing charges amount
|
||||
|
||||
switch(invocation_type)
|
||||
if("shout")
|
||||
@@ -86,12 +86,12 @@ var/list/spells = typesof(/obj/effects/proc_holder/spell) //needed for the badmi
|
||||
if("whisper")
|
||||
usr.whisper(invocation)
|
||||
|
||||
/obj/effects/proc_holder/spell/New()
|
||||
/obj/effect/proc_holder/spell/New()
|
||||
..()
|
||||
|
||||
charge_counter = charge_max
|
||||
|
||||
/obj/effects/proc_holder/spell/Click()
|
||||
/obj/effect/proc_holder/spell/Click()
|
||||
..()
|
||||
|
||||
if(!cast_check())
|
||||
@@ -99,15 +99,15 @@ var/list/spells = typesof(/obj/effects/proc_holder/spell) //needed for the badmi
|
||||
|
||||
choose_targets()
|
||||
|
||||
/obj/effects/proc_holder/spell/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/effects/proc_holder/spell/proc/start_recharge()
|
||||
/obj/effect/proc_holder/spell/proc/start_recharge()
|
||||
while(charge_counter < charge_max)
|
||||
sleep(1)
|
||||
charge_counter++
|
||||
|
||||
/obj/effects/proc_holder/spell/proc/perform(list/targets, recharge = 1) //if recharge is started is important for the trigger spells
|
||||
/obj/effect/proc_holder/spell/proc/perform(list/targets, recharge = 1) //if recharge is started is important for the trigger spells
|
||||
before_cast(targets)
|
||||
invocation()
|
||||
spawn(0)
|
||||
@@ -119,7 +119,7 @@ var/list/spells = typesof(/obj/effects/proc_holder/spell) //needed for the badmi
|
||||
cast(targets)
|
||||
after_cast(targets)
|
||||
|
||||
/obj/effects/proc_holder/spell/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
|
||||
@@ -127,7 +127,7 @@ var/list/spells = typesof(/obj/effects/proc_holder/spell) //needed for the badmi
|
||||
location = target.loc
|
||||
else if(istype(target,/turf))
|
||||
location = target
|
||||
var/obj/effects/overlay/spell = new /obj/effects/overlay(location)
|
||||
var/obj/effect/overlay/spell = new /obj/effect/overlay(location)
|
||||
spell.icon = overlay_icon
|
||||
spell.icon_state = overlay_icon_state
|
||||
spell.anchored = 1
|
||||
@@ -135,7 +135,7 @@ var/list/spells = typesof(/obj/effects/proc_holder/spell) //needed for the badmi
|
||||
spawn(overlay_lifespan)
|
||||
del(spell)
|
||||
|
||||
/obj/effects/proc_holder/spell/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))
|
||||
@@ -145,26 +145,26 @@ var/list/spells = typesof(/obj/effects/proc_holder/spell) //needed for the badmi
|
||||
if(istype(target,/mob) && message)
|
||||
target << text("[message]")
|
||||
if(sparks_spread)
|
||||
var/datum/effects/system/spark_spread/sparks = new /datum/effects/system/spark_spread()
|
||||
var/datum/effect/system/spark_spread/sparks = new /datum/effect/system/spark_spread()
|
||||
sparks.set_up(sparks_amt, 0, location) //no idea what the 0 is
|
||||
sparks.start()
|
||||
if(smoke_spread)
|
||||
if(smoke_spread == 1)
|
||||
var/datum/effects/system/harmless_smoke_spread/smoke = new /datum/effects/system/harmless_smoke_spread()
|
||||
var/datum/effect/system/harmless_smoke_spread/smoke = new /datum/effect/system/harmless_smoke_spread()
|
||||
smoke.set_up(smoke_amt, 0, location) //no idea what the 0 is
|
||||
smoke.start()
|
||||
else if(smoke_spread == 2)
|
||||
var/datum/effects/system/bad_smoke_spread/smoke = new /datum/effects/system/bad_smoke_spread()
|
||||
var/datum/effect/system/bad_smoke_spread/smoke = new /datum/effect/system/bad_smoke_spread()
|
||||
smoke.set_up(smoke_amt, 0, location) //no idea what the 0 is
|
||||
smoke.start()
|
||||
|
||||
/obj/effects/proc_holder/spell/proc/cast(list/targets)
|
||||
/obj/effect/proc_holder/spell/proc/cast(list/targets)
|
||||
return
|
||||
|
||||
/obj/effects/proc_holder/spell/proc/critfail(list/targets)
|
||||
/obj/effect/proc_holder/spell/proc/critfail(list/targets)
|
||||
return
|
||||
|
||||
/obj/effects/proc_holder/spell/proc/revert_cast() //resets recharge or readds a charge
|
||||
/obj/effect/proc_holder/spell/proc/revert_cast() //resets recharge or readds a charge
|
||||
switch(charge_type)
|
||||
if("recharge")
|
||||
charge_counter = charge_max
|
||||
@@ -174,15 +174,15 @@ var/list/spells = typesof(/obj/effects/proc_holder/spell) //needed for the badmi
|
||||
return
|
||||
|
||||
|
||||
/obj/effects/proc_holder/spell/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
|
||||
|
||||
/obj/effects/proc_holder/spell/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/effects/proc_holder/spell/targeted/choose_targets(mob/user = usr)
|
||||
/obj/effect/proc_holder/spell/targeted/choose_targets(mob/user = usr)
|
||||
var/list/targets = list()
|
||||
|
||||
switch(selection_type)
|
||||
@@ -250,7 +250,7 @@ var/list/spells = typesof(/obj/effects/proc_holder/spell) //needed for the badmi
|
||||
|
||||
return
|
||||
|
||||
/obj/effects/proc_holder/spell/aoe_turf/choose_targets(mob/user = usr)
|
||||
/obj/effect/proc_holder/spell/aoe_turf/choose_targets(mob/user = usr)
|
||||
var/list/targets = list()
|
||||
|
||||
switch(selection_type)
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
/obj/effects/proc_holder/spell/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/effects/proc_holder/spell/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()
|
||||
@@ -17,7 +17,7 @@
|
||||
cast(targets,thearea)
|
||||
after_cast(targets)
|
||||
|
||||
/obj/effects/proc_holder/spell/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)
|
||||
@@ -29,7 +29,7 @@
|
||||
|
||||
return thearea
|
||||
|
||||
/obj/effects/proc_holder/spell/targeted/area_teleport/cast(list/targets,area/thearea)
|
||||
/obj/effect/proc_holder/spell/targeted/area_teleport/cast(list/targets,area/thearea)
|
||||
for(var/mob/target in targets)
|
||||
var/list/L = list()
|
||||
for(var/turf/T in get_area_turfs(thearea.type))
|
||||
@@ -46,7 +46,7 @@
|
||||
|
||||
return
|
||||
|
||||
/obj/effects/proc_holder/spell/targeted/area_teleport/invocation(area/chosenarea = null)
|
||||
/obj/effect/proc_holder/spell/targeted/area_teleport/invocation(area/chosenarea = null)
|
||||
if(!invocation_area || !chosenarea)
|
||||
..()
|
||||
else
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/effects/proc_holder/spell/aoe_turf/conjure
|
||||
/obj/effect/proc_holder/spell/aoe_turf/conjure
|
||||
name = "Conjure"
|
||||
desc = "This spell conjures objs of the specified types in range."
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
var/list/newVars = list() //vars of the summoned objects will be replaced with those where they meet
|
||||
//should have format of list("emagged" = 1,"name" = "Wizard's Justicebot"), for example
|
||||
|
||||
/obj/effects/proc_holder/spell/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)
|
||||
@@ -39,7 +39,7 @@
|
||||
|
||||
return
|
||||
|
||||
/obj/effects/proc_holder/spell/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."
|
||||
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
/obj/effects/proc_holder/spell/targeted/emplosion
|
||||
/obj/effect/proc_holder/spell/targeted/emplosion
|
||||
name = "Emplosion"
|
||||
desc = "This spell emplodes an area."
|
||||
|
||||
var/emp_heavy = 2
|
||||
var/emp_light = 3
|
||||
|
||||
/obj/effects/proc_holder/spell/targeted/emplosion/cast(list/targets)
|
||||
/obj/effect/proc_holder/spell/targeted/emplosion/cast(list/targets)
|
||||
|
||||
for(var/mob/target in targets)
|
||||
empulse(target.loc, emp_heavy, emp_light)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/effects/proc_holder/spell/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."
|
||||
|
||||
@@ -12,11 +12,11 @@
|
||||
|
||||
var/jaunt_duration = 50 //in deciseconds
|
||||
|
||||
/obj/effects/proc_holder/spell/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/target in targets)
|
||||
spawn(0)
|
||||
var/mobloc = get_turf(target.loc)
|
||||
var/obj/effects/dummy/spell_jaunt/holder = new /obj/effects/dummy/spell_jaunt( mobloc )
|
||||
var/obj/effect/dummy/spell_jaunt/holder = new /obj/effect/dummy/spell_jaunt( mobloc )
|
||||
var/atom/movable/overlay/animation = new /atom/movable/overlay( mobloc )
|
||||
animation.name = "water"
|
||||
animation.density = 0
|
||||
@@ -28,7 +28,7 @@
|
||||
flick("liquify",animation)
|
||||
target.loc = holder
|
||||
target.client.eye = holder
|
||||
var/datum/effects/system/steam_spread/steam = new /datum/effects/system/steam_spread()
|
||||
var/datum/effect/system/steam_spread/steam = new /datum/effect/system/steam_spread()
|
||||
steam.set_up(10, 0, mobloc)
|
||||
steam.start()
|
||||
sleep(jaunt_duration)
|
||||
@@ -46,7 +46,7 @@
|
||||
del(animation)
|
||||
del(holder)
|
||||
|
||||
/obj/effects/dummy/spell_jaunt
|
||||
/obj/effect/dummy/spell_jaunt
|
||||
name = "water"
|
||||
icon = 'effects.dmi'
|
||||
icon_state = "nothing"
|
||||
@@ -54,7 +54,7 @@
|
||||
density = 0
|
||||
anchored = 1
|
||||
|
||||
/obj/effects/dummy/spell_jaunt/relaymove(var/mob/user, direction)
|
||||
/obj/effect/dummy/spell_jaunt/relaymove(var/mob/user, direction)
|
||||
if (!src.canmove) return
|
||||
var/turf/newLoc = get_step(src,direction)
|
||||
if(!(newLoc.flags & NOJAUNT))
|
||||
@@ -84,7 +84,7 @@
|
||||
src.canmove = 0
|
||||
spawn(2) src.canmove = 1
|
||||
|
||||
/obj/effects/dummy/spell_jaunt/ex_act(blah)
|
||||
/obj/effect/dummy/spell_jaunt/ex_act(blah)
|
||||
return
|
||||
/obj/effects/dummy/spell_jaunt/bullet_act(blah)
|
||||
/obj/effect/dummy/spell_jaunt/bullet_act(blah)
|
||||
return
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/effects/proc_holder/spell/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/effects/proc_holder/spell/targeted/explosion/cast(list/targets)
|
||||
/obj/effect/proc_holder/spell/targeted/explosion/cast(list/targets)
|
||||
|
||||
for(var/mob/target in targets)
|
||||
explosion(target.loc,ex_severe,ex_heavy,ex_light,ex_flash)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/effects/proc_holder/spell/targeted/genetic
|
||||
/obj/effect/proc_holder/spell/targeted/genetic
|
||||
name = "Genetic"
|
||||
desc = "This spell inflicts a set of mutations and disabilities upon the target."
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
6th bit - fat
|
||||
*/
|
||||
|
||||
/obj/effects/proc_holder/spell/targeted/genetic/cast(list/targets)
|
||||
/obj/effect/proc_holder/spell/targeted/genetic/cast(list/targets)
|
||||
|
||||
for(var/mob/target in targets)
|
||||
target.mutations |= mutations
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/effects/proc_holder/spell/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."
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
var/destroys = "none" //can be "none", "gib" or "disintegrate"
|
||||
|
||||
/obj/effects/proc_holder/spell/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)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/effects/proc_holder/spell/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."
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
invocation_type = "whisper"
|
||||
range = 3
|
||||
|
||||
/obj/effects/proc_holder/spell/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)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/effects/proc_holder/spell/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."
|
||||
|
||||
@@ -22,7 +22,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/effects/proc_holder/spell/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
|
||||
@@ -61,7 +61,7 @@ Also, you never added distance checking after target is selected. I've went ahea
|
||||
|
||||
//SPELL LOSS BEGIN
|
||||
//NOTE: The caster must ALWAYS keep mind transfer, even when other spells are lost.
|
||||
var/obj/effects/proc_holder/spell/targeted/mind_transfer/m_transfer = locate() in user.spell_list//Find mind transfer directly.
|
||||
var/obj/effect/proc_holder/spell/targeted/mind_transfer/m_transfer = locate() in user.spell_list//Find mind transfer directly.
|
||||
var/list/checked_spells = user.spell_list
|
||||
checked_spells -= m_transfer //Remove Mind Transfer from the list.
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/effects/proc_holder/spell/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 = 'wizard.dmi'
|
||||
var/proj_trail_icon_state = "trail"
|
||||
|
||||
var/proj_type = "/obj/effects/proc_holder/spell/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/effects/proc_holder/spell/targeted/projectile/cast(list/targets, mob/user = usr)
|
||||
/obj/effect/proc_holder/spell/targeted/projectile/cast(list/targets, mob/user = usr)
|
||||
|
||||
for(var/mob/target in targets)
|
||||
spawn(0)
|
||||
var/obj/effects/proc_holder/spell/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/effects/proc_holder/spell))
|
||||
projectile = new /obj/effects/proc_holder/spell/targeted/trigger(user)
|
||||
if(istype(proj_type,/obj/effect/proc_holder/spell))
|
||||
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
|
||||
@@ -62,7 +62,7 @@
|
||||
if(proj_trail && projectile)
|
||||
spawn(0)
|
||||
if(projectile)
|
||||
var/obj/effects/overlay/trail = new /obj/effects/overlay(projectile.loc)
|
||||
var/obj/effect/overlay/trail = new /obj/effect/overlay(projectile.loc)
|
||||
trail.icon = proj_trail_icon
|
||||
trail.icon_state = proj_trail_icon_state
|
||||
trail.density = 0
|
||||
|
||||
@@ -1,28 +1,28 @@
|
||||
/obj/effects/proc_holder/spell/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/effects/proc_holder/spell/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/effects/proc_holder/spell/targeted/trigger/Del()
|
||||
/obj/effect/proc_holder/spell/targeted/trigger/Del()
|
||||
for(var/spell in contents)
|
||||
del(spell)
|
||||
|
||||
..()
|
||||
|
||||
/obj/effects/proc_holder/spell/targeted/trigger/cast(list/targets)
|
||||
/obj/effect/proc_holder/spell/targeted/trigger/cast(list/targets)
|
||||
for(var/mob/target in targets)
|
||||
for(var/obj/effects/proc_holder/spell/spell in contents)
|
||||
for(var/obj/effect/proc_holder/spell/spell in contents)
|
||||
spell.perform(list(target),0)
|
||||
for(var/obj/effects/proc_holder/spell/spell in linked_spells)
|
||||
for(var/obj/effect/proc_holder/spell/spell in linked_spells)
|
||||
spell.perform(list(target),0)
|
||||
|
||||
return
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/effects/proc_holder/spell/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/effects/proc_holder/spell/targeted/turf_teleport/cast(list/targets)
|
||||
/obj/effect/proc_holder/spell/targeted/turf_teleport/cast(list/targets)
|
||||
for(var/mob/target in targets)
|
||||
var/list/turfs = new/list()
|
||||
for(var/turf/T in range(target,outer_tele_radius))
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/effects/proc_holder/spell/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."
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
proj_icon_state = "magicm"
|
||||
proj_name = "a magic missile"
|
||||
proj_lingering = 1
|
||||
proj_type = "/obj/effects/proc_holder/spell/targeted/inflict_handler/magic_missile"
|
||||
proj_type = "/obj/effect/proc_holder/spell/targeted/inflict_handler/magic_missile"
|
||||
|
||||
proj_lifespan = 20
|
||||
proj_step_delay = 5
|
||||
@@ -23,11 +23,11 @@
|
||||
proj_trail_lifespan = 5
|
||||
proj_trail_icon_state = "magicmd"
|
||||
|
||||
/obj/effects/proc_holder/spell/targeted/inflict_handler/magic_missile
|
||||
/obj/effect/proc_holder/spell/targeted/inflict_handler/magic_missile
|
||||
amt_weaken = 5
|
||||
amt_dam_fire = 10
|
||||
|
||||
/obj/effects/proc_holder/spell/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."
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
mutations = LASER | HULK
|
||||
duration = 300
|
||||
|
||||
/obj/effects/proc_holder/spell/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."
|
||||
|
||||
@@ -59,7 +59,7 @@
|
||||
sparks_spread = 1
|
||||
sparks_amt = 4
|
||||
|
||||
/obj/effects/proc_holder/spell/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."
|
||||
|
||||
@@ -74,7 +74,7 @@
|
||||
smoke_spread = 2
|
||||
smoke_amt = 10
|
||||
|
||||
/obj/effects/proc_holder/spell/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
|
||||
@@ -87,7 +87,7 @@
|
||||
emp_heavy = 5
|
||||
emp_light = 7
|
||||
|
||||
/obj/effects/proc_holder/spell/targeted/turf_teleport/blink
|
||||
/obj/effect/proc_holder/spell/targeted/turf_teleport/blink
|
||||
name = "Blink"
|
||||
desc = "This spell randomly teleports you a short distance."
|
||||
|
||||
@@ -105,7 +105,7 @@
|
||||
inner_tele_radius = 0
|
||||
outer_tele_radius = 6
|
||||
|
||||
/obj/effects/proc_holder/spell/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."
|
||||
|
||||
@@ -120,7 +120,7 @@
|
||||
smoke_spread = 1
|
||||
smoke_amt = 5
|
||||
|
||||
/obj/effects/proc_holder/spell/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."
|
||||
|
||||
@@ -131,10 +131,10 @@
|
||||
invocation_type = "whisper"
|
||||
range = 0
|
||||
|
||||
summon_type = list("/obj/effects/forcefield")
|
||||
summon_type = list("/obj/effect/forcefield")
|
||||
summon_lifespan = 300
|
||||
|
||||
/obj/effects/proc_holder/spell/aoe_turf/conjure/carp
|
||||
/obj/effect/proc_holder/spell/aoe_turf/conjure/carp
|
||||
name = "Summon Bigger Carp"
|
||||
desc = "This spell conjures an elite carp."
|
||||
|
||||
@@ -145,9 +145,9 @@
|
||||
invocation_type = "shout"
|
||||
range = 1
|
||||
|
||||
summon_type = list("/obj/effects/critter/spesscarp/elite")
|
||||
summon_type = list("/obj/effect/critter/spesscarp/elite")
|
||||
|
||||
/obj/effects/proc_holder/spell/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."
|
||||
|
||||
@@ -158,17 +158,17 @@
|
||||
invocation_type = "whisper"
|
||||
message = "\blue Your eyes cry out in pain!"
|
||||
|
||||
starting_spells = list("/obj/effects/proc_holder/spell/targeted/inflict_handler/blind","/obj/effects/proc_holder/spell/targeted/genetic/blind")
|
||||
starting_spells = list("/obj/effect/proc_holder/spell/targeted/inflict_handler/blind","/obj/effect/proc_holder/spell/targeted/genetic/blind")
|
||||
|
||||
/obj/effects/proc_holder/spell/targeted/inflict_handler/blind
|
||||
/obj/effect/proc_holder/spell/targeted/inflict_handler/blind
|
||||
amt_eye_blind = 10
|
||||
amt_eye_blurry = 20
|
||||
|
||||
/obj/effects/proc_holder/spell/targeted/genetic/blind
|
||||
/obj/effect/proc_holder/spell/targeted/genetic/blind
|
||||
disabilities = 1
|
||||
duration = 300
|
||||
|
||||
/obj/effects/proc_holder/spell/targeted/projectile/fireball
|
||||
/obj/effect/proc_holder/spell/targeted/projectile/fireball
|
||||
name = "Fireball"
|
||||
desc = "This spell fires a fireball at a target and does not require wizard garb."
|
||||
|
||||
@@ -181,19 +181,19 @@
|
||||
proj_icon_state = "fireball"
|
||||
proj_name = "a fireball"
|
||||
proj_lingering = 1
|
||||
proj_type = "/obj/effects/proc_holder/spell/targeted/trigger/fireball"
|
||||
proj_type = "/obj/effect/proc_holder/spell/targeted/trigger/fireball"
|
||||
|
||||
proj_lifespan = 200
|
||||
proj_step_delay = 1
|
||||
|
||||
/obj/effects/proc_holder/spell/targeted/trigger/fireball
|
||||
starting_spells = list("/obj/effects/proc_holder/spell/targeted/inflict_handler/fireball","/obj/effects/proc_holder/spell/targeted/explosion/fireball")
|
||||
/obj/effect/proc_holder/spell/targeted/trigger/fireball
|
||||
starting_spells = list("/obj/effect/proc_holder/spell/targeted/inflict_handler/fireball","/obj/effect/proc_holder/spell/targeted/explosion/fireball")
|
||||
|
||||
/obj/effects/proc_holder/spell/targeted/inflict_handler/fireball
|
||||
/obj/effect/proc_holder/spell/targeted/inflict_handler/fireball
|
||||
amt_dam_brute = 20
|
||||
amt_dam_fire = 25
|
||||
|
||||
/obj/effects/proc_holder/spell/targeted/explosion/fireball
|
||||
/obj/effect/proc_holder/spell/targeted/explosion/fireball
|
||||
ex_severe = -1
|
||||
ex_heavy = -1
|
||||
ex_light = 2
|
||||
|
||||
Reference in New Issue
Block a user