mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-25 13:07:46 +01:00
Energy projectiles work again.
Rewrote the job selection system to use bitflags and the jobs are now objects. Fixed a path conflict with effect which caused a few things to be unable to be clicked on. Commented out the job.txt, Urist if you still want it to load from the .txt give me a yell and I can update it to work with the job objects. Fixed up the bits that were missing the slightly updated mob organ attack code. Moved the traps file into unused. git-svn-id: http://tgstation13.googlecode.com/svn/trunk@2340 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
@@ -47,7 +47,7 @@
|
||||
/*var/obj/effect/decal/cleanable/oil/o =*/
|
||||
new /obj/effect/decal/cleanable/oil/streak(src.loc)
|
||||
else if (prob(10))
|
||||
var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
|
||||
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
|
||||
s.set_up(3, 1, src)
|
||||
s.start()
|
||||
if (step_to(src, get_step(src, direction), 0))
|
||||
|
||||
@@ -3,8 +3,7 @@
|
||||
|
||||
/obj/structure/closet/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
|
||||
if(air_group || (height==0 || wall_mounted)) return 1
|
||||
|
||||
return opened
|
||||
return (!density)
|
||||
|
||||
/obj/structure/closet/proc/can_open()
|
||||
if (src.welded)
|
||||
@@ -44,6 +43,7 @@
|
||||
src.icon_state = src.icon_opened
|
||||
src.opened = 1
|
||||
playsound(src.loc, 'click.ogg', 15, 1, -3)
|
||||
density = 0
|
||||
return 1
|
||||
|
||||
/obj/structure/closet/proc/close()
|
||||
@@ -74,6 +74,7 @@
|
||||
src.icon_state = src.icon_closed
|
||||
src.opened = 0
|
||||
playsound(src.loc, 'click.ogg', 15, 1, -3)
|
||||
density = 1
|
||||
return 1
|
||||
|
||||
/obj/structure/closet/proc/toggle()
|
||||
@@ -188,17 +189,19 @@
|
||||
return
|
||||
|
||||
/obj/structure/closet
|
||||
var/lastbang
|
||||
var/lastbang = 0
|
||||
/obj/structure/closet/relaymove(mob/user as mob)
|
||||
if (user.stat)
|
||||
return
|
||||
|
||||
if (!src.open())
|
||||
user << "\blue It won't budge!"
|
||||
if (world.time > lastbang+5)
|
||||
lastbang = world.time
|
||||
if(!lastbang)
|
||||
lastbang = 1
|
||||
for (var/mob/M in hearers(src, null))
|
||||
M << text("<FONT size=[]>BANG, bang!</FONT>", max(0, 5 - get_dist(src, M)))
|
||||
spawn(30)
|
||||
lastbang = 0
|
||||
|
||||
/obj/structure/closet/Move()
|
||||
..()
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
desc = "It appears to be broken."
|
||||
icon_state = src.icon_broken
|
||||
if(istype(W, /obj/item/weapon/melee/energy/blade))
|
||||
var/datum/effect/system/spark_spread/spark_system = new /datum/effect/system/spark_spread()
|
||||
var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread()
|
||||
spark_system.set_up(5, 0, src.loc)
|
||||
spark_system.start()
|
||||
playsound(src.loc, 'blade1.ogg', 50, 1)
|
||||
|
||||
@@ -93,7 +93,7 @@
|
||||
|
||||
proc/disrupt()
|
||||
if(active_dummy)
|
||||
var/datum/effect/system/spark_spread/spark_system = new /datum/effect/system/spark_spread
|
||||
var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread
|
||||
spark_system.set_up(5, 0, src)
|
||||
spark_system.attach(src)
|
||||
spark_system.start()
|
||||
|
||||
@@ -154,7 +154,7 @@
|
||||
|
||||
|
||||
clown_check(var/mob/user)
|
||||
if((user.mutations & CLOWN) && prob(50))
|
||||
if((user.mutations & CLUMSY) && prob(50))
|
||||
user << "\red The Flash slips out of your hand."
|
||||
user.drop_item()
|
||||
return 0
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
attack(mob/M as mob, mob/user as mob)
|
||||
src.add_fingerprint(user)
|
||||
if(src.on && user.zone_sel.selecting == "eyes")
|
||||
if ((user.mutations & CLOWN || user.brainloss >= 60) && prob(50))//too dumb to use flashlight properly
|
||||
if ((user.mutations & CLUMSY || user.brainloss >= 60) && prob(50))//too dumb to use flashlight properly
|
||||
return ..()//just hit them in the head
|
||||
|
||||
if (!(istype(usr, /mob/living/carbon/human) || ticker) && ticker.mode.name != "monkey")//don't have dexterity
|
||||
|
||||
@@ -180,7 +180,7 @@ MASS SPECTROMETER
|
||||
origin_tech = "magnets=1;biotech=1"
|
||||
|
||||
/obj/item/device/healthanalyzer/attack(mob/M as mob, mob/user as mob)
|
||||
if ((user.mutations & CLOWN || user.brainloss >= 60) && prob(50))
|
||||
if ((user.mutations & CLUMSY || user.brainloss >= 60) && prob(50))
|
||||
user << text("\red You try to analyze the floor's vitals!")
|
||||
for(var/mob/O in viewers(M, null))
|
||||
O.show_message(text("\red [user] has analyzed the floor's vitals!"), 1)
|
||||
|
||||
@@ -6,14 +6,14 @@ would spawn and follow the beaker, even if it is carried or thrown.
|
||||
*/
|
||||
|
||||
|
||||
/obj/effect
|
||||
/obj/effect/effect
|
||||
name = "effect"
|
||||
icon = 'effects.dmi'
|
||||
mouse_opacity = 0
|
||||
unacidable = 1//So effect are not targeted by alien acid.
|
||||
flags = TABLEPASS
|
||||
|
||||
/obj/effect/water
|
||||
/obj/effect/effect/water
|
||||
name = "water"
|
||||
icon = 'effects.dmi'
|
||||
icon_state = "extinguish"
|
||||
@@ -21,7 +21,7 @@ would spawn and follow the beaker, even if it is carried or thrown.
|
||||
flags = 2.0
|
||||
mouse_opacity = 0
|
||||
|
||||
/obj/effect/smoke
|
||||
/obj/effect/effect/smoke
|
||||
name = "smoke"
|
||||
icon = 'water.dmi'
|
||||
icon_state = "smoke"
|
||||
@@ -31,7 +31,7 @@ would spawn and follow the beaker, even if it is carried or thrown.
|
||||
var/amount = 8.0
|
||||
|
||||
|
||||
/obj/effect/water/New()
|
||||
/obj/effect/effect/water/New()
|
||||
..()
|
||||
//var/turf/T = src.loc
|
||||
//if (istype(T, /turf))
|
||||
@@ -41,14 +41,14 @@ would spawn and follow the beaker, even if it is carried or thrown.
|
||||
return
|
||||
return
|
||||
|
||||
/obj/effect/water/Del()
|
||||
/obj/effect/effect/water/Del()
|
||||
//var/turf/T = src.loc
|
||||
//if (istype(T, /turf))
|
||||
// T.firelevel = 0 //TODO: FIX
|
||||
..()
|
||||
return
|
||||
|
||||
/obj/effect/water/Move(turf/newloc)
|
||||
/obj/effect/effect/water/Move(turf/newloc)
|
||||
//var/turf/T = src.loc
|
||||
//if (istype(T, /turf))
|
||||
// T.firelevel = 0 //TODO: FIX
|
||||
@@ -59,7 +59,7 @@ would spawn and follow the beaker, even if it is carried or thrown.
|
||||
return 0
|
||||
.=..()
|
||||
|
||||
/obj/effect/water/Bump(atom/A)
|
||||
/obj/effect/effect/water/Bump(atom/A)
|
||||
if(reagents)
|
||||
reagents.reaction(A)
|
||||
return ..()
|
||||
@@ -79,35 +79,35 @@ OPTIONAL: steam.attach(mob)
|
||||
steam.start() -- spawns the effect
|
||||
*/
|
||||
/////////////////////////////////////////////
|
||||
/obj/effect/steam
|
||||
/obj/effect/effect/steam
|
||||
name = "steam"
|
||||
icon = 'effects.dmi'
|
||||
icon_state = "extinguish"
|
||||
density = 0
|
||||
|
||||
/datum/effect/system/steam_spread
|
||||
/datum/effect/effect/system/steam_spread
|
||||
var/number = 3
|
||||
var/cardinals = 0
|
||||
var/turf/location
|
||||
var/atom/holder
|
||||
|
||||
/datum/effect/system/steam_spread/proc/set_up(n = 3, c = 0, turf/loc)
|
||||
/datum/effect/effect/system/steam_spread/proc/set_up(n = 3, c = 0, turf/loc)
|
||||
if(n > 10)
|
||||
n = 10
|
||||
number = n
|
||||
cardinals = c
|
||||
location = loc
|
||||
|
||||
/datum/effect/system/steam_spread/proc/attach(atom/atom)
|
||||
/datum/effect/effect/system/steam_spread/proc/attach(atom/atom)
|
||||
holder = atom
|
||||
|
||||
/datum/effect/system/steam_spread/proc/start()
|
||||
/datum/effect/effect/system/steam_spread/proc/start()
|
||||
var/i = 0
|
||||
for(i=0, i<src.number, i++)
|
||||
spawn(0)
|
||||
if(holder)
|
||||
src.location = get_turf(holder)
|
||||
var/obj/effect/steam/steam = new /obj/effect/steam(src.location)
|
||||
var/obj/effect/effect/steam/steam = new /obj/effect/effect/steam(src.location)
|
||||
var/direction
|
||||
if(src.cardinals)
|
||||
direction = pick(cardinal)
|
||||
@@ -132,14 +132,14 @@ steam.start() -- spawns the effect
|
||||
// will always spawn at the items location.
|
||||
/////////////////////////////////////////////
|
||||
|
||||
/obj/effect/sparks
|
||||
/obj/effect/effect/sparks
|
||||
name = "sparks"
|
||||
icon_state = "sparks"
|
||||
var/amount = 6.0
|
||||
anchored = 1.0
|
||||
mouse_opacity = 0
|
||||
|
||||
/obj/effect/sparks/New()
|
||||
/obj/effect/effect/sparks/New()
|
||||
..()
|
||||
playsound(src.loc, "sparks", 100, 1)
|
||||
var/turf/T = src.loc
|
||||
@@ -149,28 +149,28 @@ steam.start() -- spawns the effect
|
||||
del(src)
|
||||
return
|
||||
|
||||
/obj/effect/sparks/Del()
|
||||
/obj/effect/effect/sparks/Del()
|
||||
var/turf/T = src.loc
|
||||
if (istype(T, /turf))
|
||||
T.hotspot_expose(1000,100)
|
||||
..()
|
||||
return
|
||||
|
||||
/obj/effect/sparks/Move()
|
||||
/obj/effect/effect/sparks/Move()
|
||||
..()
|
||||
var/turf/T = src.loc
|
||||
if (istype(T, /turf))
|
||||
T.hotspot_expose(1000,100)
|
||||
return
|
||||
|
||||
/datum/effect/system/spark_spread
|
||||
/datum/effect/effect/system/spark_spread
|
||||
var/number = 3
|
||||
var/cardinals = 0
|
||||
var/turf/location
|
||||
var/atom/holder
|
||||
var/total_sparks = 0 // To stop it being spammed and lagging!
|
||||
|
||||
/datum/effect/system/spark_spread/proc/set_up(n = 3, c = 0, loca)
|
||||
/datum/effect/effect/system/spark_spread/proc/set_up(n = 3, c = 0, loca)
|
||||
if(n > 10)
|
||||
n = 10
|
||||
number = n
|
||||
@@ -180,10 +180,10 @@ steam.start() -- spawns the effect
|
||||
else
|
||||
location = get_turf(loca)
|
||||
|
||||
/datum/effect/system/spark_spread/proc/attach(atom/atom)
|
||||
/datum/effect/effect/system/spark_spread/proc/attach(atom/atom)
|
||||
holder = atom
|
||||
|
||||
/datum/effect/system/spark_spread/proc/start()
|
||||
/datum/effect/effect/system/spark_spread/proc/start()
|
||||
var/i = 0
|
||||
for(i=0, i<src.number, i++)
|
||||
if(src.total_sparks > 20)
|
||||
@@ -191,7 +191,7 @@ steam.start() -- spawns the effect
|
||||
spawn(0)
|
||||
if(holder)
|
||||
src.location = get_turf(holder)
|
||||
var/obj/effect/sparks/sparks = new /obj/effect/sparks(src.location)
|
||||
var/obj/effect/effect/sparks/sparks = new /obj/effect/effect/sparks(src.location)
|
||||
src.total_sparks++
|
||||
var/direction
|
||||
if(src.cardinals)
|
||||
@@ -219,7 +219,7 @@ steam.start() -- spawns the effect
|
||||
/////////////////////////////////////////////
|
||||
|
||||
|
||||
/obj/effect/harmless_smoke
|
||||
/obj/effect/effect/harmless_smoke
|
||||
name = "smoke"
|
||||
icon_state = "smoke"
|
||||
opacity = 1
|
||||
@@ -231,17 +231,17 @@ steam.start() -- spawns the effect
|
||||
pixel_x = -32
|
||||
pixel_y = -32
|
||||
|
||||
/obj/effect/harmless_smoke/New()
|
||||
/obj/effect/effect/harmless_smoke/New()
|
||||
..()
|
||||
spawn (100)
|
||||
del(src)
|
||||
return
|
||||
|
||||
/obj/effect/harmless_smoke/Move()
|
||||
/obj/effect/effect/harmless_smoke/Move()
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/effect/system/harmless_smoke_spread
|
||||
/datum/effect/effect/system/harmless_smoke_spread
|
||||
var/number = 3
|
||||
var/cardinals = 0
|
||||
var/turf/location
|
||||
@@ -249,7 +249,7 @@ steam.start() -- spawns the effect
|
||||
var/total_smoke = 0 // To stop it being spammed and lagging!
|
||||
var/direction
|
||||
|
||||
/datum/effect/system/harmless_smoke_spread/proc/set_up(n = 5, c = 0, loca, direct)
|
||||
/datum/effect/effect/system/harmless_smoke_spread/proc/set_up(n = 5, c = 0, loca, direct)
|
||||
if(n > 10)
|
||||
n = 10
|
||||
number = n
|
||||
@@ -262,10 +262,10 @@ steam.start() -- spawns the effect
|
||||
direction = direct
|
||||
|
||||
|
||||
/datum/effect/system/harmless_smoke_spread/proc/attach(atom/atom)
|
||||
/datum/effect/effect/system/harmless_smoke_spread/proc/attach(atom/atom)
|
||||
holder = atom
|
||||
|
||||
/datum/effect/system/harmless_smoke_spread/proc/start()
|
||||
/datum/effect/effect/system/harmless_smoke_spread/proc/start()
|
||||
var/i = 0
|
||||
for(i=0, i<src.number, i++)
|
||||
if(src.total_smoke > 20)
|
||||
@@ -273,7 +273,7 @@ steam.start() -- spawns the effect
|
||||
spawn(0)
|
||||
if(holder)
|
||||
src.location = get_turf(holder)
|
||||
var/obj/effect/harmless_smoke/smoke = new /obj/effect/harmless_smoke(src.location)
|
||||
var/obj/effect/effect/harmless_smoke/smoke = new /obj/effect/effect/harmless_smoke(src.location)
|
||||
src.total_smoke++
|
||||
var/direction = src.direction
|
||||
if(!direction)
|
||||
@@ -298,7 +298,7 @@ steam.start() -- spawns the effect
|
||||
// Bad smoke
|
||||
/////////////////////////////////////////////
|
||||
|
||||
/obj/effect/bad_smoke
|
||||
/obj/effect/effect/bad_smoke
|
||||
name = "smoke"
|
||||
icon_state = "smoke"
|
||||
opacity = 1
|
||||
@@ -310,13 +310,13 @@ steam.start() -- spawns the effect
|
||||
pixel_x = -32
|
||||
pixel_y = -32
|
||||
|
||||
/obj/effect/bad_smoke/New()
|
||||
/obj/effect/effect/bad_smoke/New()
|
||||
..()
|
||||
spawn (200+rand(10,30))
|
||||
del(src)
|
||||
return
|
||||
|
||||
/obj/effect/bad_smoke/Move()
|
||||
/obj/effect/effect/bad_smoke/Move()
|
||||
..()
|
||||
for(var/mob/living/carbon/M in get_turf(src))
|
||||
if (M.internal != null && M.wear_mask && (M.wear_mask.flags & MASKINTERNALS))
|
||||
@@ -331,7 +331,7 @@ steam.start() -- spawns the effect
|
||||
return
|
||||
|
||||
|
||||
/obj/effect/bad_smoke/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
|
||||
/obj/effect/effect/bad_smoke/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
|
||||
if(air_group || (height==0)) return 1
|
||||
if(istype(mover, /obj/item/projectile/beam))
|
||||
var/obj/item/projectile/beam/B = mover
|
||||
@@ -339,7 +339,7 @@ steam.start() -- spawns the effect
|
||||
return 1
|
||||
|
||||
|
||||
/obj/effect/bad_smoke/HasEntered(mob/living/carbon/M as mob )
|
||||
/obj/effect/effect/bad_smoke/HasEntered(mob/living/carbon/M as mob )
|
||||
..()
|
||||
if(istype(M, /mob/living/carbon))
|
||||
if (M.internal != null && M.wear_mask && (M.wear_mask.flags & MASKINTERNALS))
|
||||
@@ -354,7 +354,7 @@ steam.start() -- spawns the effect
|
||||
M.coughedtime = 0
|
||||
return
|
||||
|
||||
/datum/effect/system/bad_smoke_spread
|
||||
/datum/effect/effect/system/bad_smoke_spread
|
||||
var/number = 3
|
||||
var/cardinals = 0
|
||||
var/turf/location
|
||||
@@ -362,7 +362,7 @@ steam.start() -- spawns the effect
|
||||
var/total_smoke = 0 // To stop it being spammed and lagging!
|
||||
var/direction
|
||||
|
||||
/datum/effect/system/bad_smoke_spread/proc/set_up(n = 5, c = 0, loca, direct)
|
||||
/datum/effect/effect/system/bad_smoke_spread/proc/set_up(n = 5, c = 0, loca, direct)
|
||||
if(n > 20)
|
||||
n = 20
|
||||
number = n
|
||||
@@ -375,10 +375,10 @@ steam.start() -- spawns the effect
|
||||
direction = direct
|
||||
|
||||
|
||||
/datum/effect/system/bad_smoke_spread/proc/attach(atom/atom)
|
||||
/datum/effect/effect/system/bad_smoke_spread/proc/attach(atom/atom)
|
||||
holder = atom
|
||||
|
||||
/datum/effect/system/bad_smoke_spread/proc/start()
|
||||
/datum/effect/effect/system/bad_smoke_spread/proc/start()
|
||||
var/i = 0
|
||||
for(i=0, i<src.number, i++)
|
||||
if(src.total_smoke > 20)
|
||||
@@ -386,7 +386,7 @@ steam.start() -- spawns the effect
|
||||
spawn(0)
|
||||
if(holder)
|
||||
src.location = get_turf(holder)
|
||||
var/obj/effect/bad_smoke/smoke = new /obj/effect/bad_smoke(src.location)
|
||||
var/obj/effect/effect/bad_smoke/smoke = new /obj/effect/effect/bad_smoke(src.location)
|
||||
src.total_smoke++
|
||||
var/direction = src.direction
|
||||
if(!direction)
|
||||
@@ -407,7 +407,7 @@ steam.start() -- spawns the effect
|
||||
/////////////////////////////////////////////
|
||||
|
||||
|
||||
/obj/effect/chem_smoke
|
||||
/obj/effect/effect/chem_smoke
|
||||
name = "smoke"
|
||||
opacity = 1
|
||||
anchored = 0.0
|
||||
@@ -418,7 +418,7 @@ steam.start() -- spawns the effect
|
||||
pixel_x = -32
|
||||
pixel_y = -32
|
||||
|
||||
/obj/effect/chem_smoke/New()
|
||||
/obj/effect/effect/chem_smoke/New()
|
||||
..()
|
||||
var/datum/reagents/R = new/datum/reagents(500)
|
||||
reagents = R
|
||||
@@ -428,20 +428,20 @@ steam.start() -- spawns the effect
|
||||
del(src)
|
||||
return
|
||||
|
||||
/obj/effect/chem_smoke/Move()
|
||||
/obj/effect/effect/chem_smoke/Move()
|
||||
..()
|
||||
for(var/atom/A in view(1, src))
|
||||
reagents.reaction(A)
|
||||
|
||||
return
|
||||
|
||||
/obj/effect/chem_smoke/HasEntered(mob/living/carbon/M as mob )
|
||||
/obj/effect/effect/chem_smoke/HasEntered(mob/living/carbon/M as mob )
|
||||
..()
|
||||
reagents.reaction(M)
|
||||
|
||||
return
|
||||
|
||||
/datum/effect/system/chem_smoke_spread
|
||||
/datum/effect/effect/system/chem_smoke_spread
|
||||
var/number = 3
|
||||
var/cardinals = 0
|
||||
var/turf/location
|
||||
@@ -456,7 +456,7 @@ steam.start() -- spawns the effect
|
||||
chemholder.reagents = R
|
||||
R.my_atom = chemholder
|
||||
|
||||
/datum/effect/system/chem_smoke_spread/proc/set_up(var/datum/reagents/carry = null, n = 5, c = 0, loca, direct)
|
||||
/datum/effect/effect/system/chem_smoke_spread/proc/set_up(var/datum/reagents/carry = null, n = 5, c = 0, loca, direct)
|
||||
if(n > 20)
|
||||
n = 20
|
||||
number = n
|
||||
@@ -471,10 +471,10 @@ steam.start() -- spawns the effect
|
||||
direction = direct
|
||||
|
||||
|
||||
/datum/effect/system/chem_smoke_spread/proc/attach(atom/atom)
|
||||
/datum/effect/effect/system/chem_smoke_spread/proc/attach(atom/atom)
|
||||
holder = atom
|
||||
|
||||
/datum/effect/system/chem_smoke_spread/proc/start()
|
||||
/datum/effect/effect/system/chem_smoke_spread/proc/start()
|
||||
var/i = 0
|
||||
|
||||
// Calculate the smokes' color
|
||||
@@ -505,7 +505,7 @@ steam.start() -- spawns the effect
|
||||
spawn(0)
|
||||
if(holder)
|
||||
src.location = get_turf(holder)
|
||||
var/obj/effect/chem_smoke/smoke = new /obj/effect/chem_smoke(src.location)
|
||||
var/obj/effect/effect/chem_smoke/smoke = new /obj/effect/effect/chem_smoke(src.location)
|
||||
src.total_smoke++
|
||||
var/direction = src.direction
|
||||
if(!direction)
|
||||
@@ -537,7 +537,7 @@ steam.start() -- spawns the effect
|
||||
// Sleep smoke
|
||||
/////////////////////////////////////////////
|
||||
|
||||
/obj/effect/sleep_smoke
|
||||
/obj/effect/effect/sleep_smoke
|
||||
name = "smoke"
|
||||
icon_state = "smoke"
|
||||
opacity = 1
|
||||
@@ -549,13 +549,13 @@ steam.start() -- spawns the effect
|
||||
pixel_x = -32
|
||||
pixel_y = -32
|
||||
|
||||
/obj/effect/sleep_smoke/New()
|
||||
/obj/effect/effect/sleep_smoke/New()
|
||||
..()
|
||||
spawn (200+rand(10,30))
|
||||
del(src)
|
||||
return
|
||||
|
||||
/obj/effect/sleep_smoke/Move()
|
||||
/obj/effect/effect/sleep_smoke/Move()
|
||||
..()
|
||||
for(var/mob/living/carbon/M in get_turf(src))
|
||||
if (M.internal != null && M.wear_mask && (M.wear_mask.flags & MASKINTERNALS))
|
||||
@@ -570,7 +570,7 @@ steam.start() -- spawns the effect
|
||||
M.coughedtime = 0
|
||||
return
|
||||
|
||||
/obj/effect/sleep_smoke/HasEntered(mob/living/carbon/M as mob )
|
||||
/obj/effect/effect/sleep_smoke/HasEntered(mob/living/carbon/M as mob )
|
||||
..()
|
||||
if(istype(M, /mob/living/carbon))
|
||||
if (M.internal != null && M.wear_mask && (M.wear_mask.flags & MASKINTERNALS))
|
||||
@@ -586,7 +586,7 @@ steam.start() -- spawns the effect
|
||||
M.coughedtime = 0
|
||||
return
|
||||
|
||||
/datum/effect/system/sleep_smoke_spread
|
||||
/datum/effect/effect/system/sleep_smoke_spread
|
||||
var/number = 3
|
||||
var/cardinals = 0
|
||||
var/turf/location
|
||||
@@ -594,7 +594,7 @@ steam.start() -- spawns the effect
|
||||
var/total_smoke = 0 // To stop it being spammed and lagging!
|
||||
var/direction
|
||||
|
||||
/datum/effect/system/sleep_smoke_spread/proc/set_up(n = 5, c = 0, loca, direct)
|
||||
/datum/effect/effect/system/sleep_smoke_spread/proc/set_up(n = 5, c = 0, loca, direct)
|
||||
if(n > 20)
|
||||
n = 20
|
||||
number = n
|
||||
@@ -607,10 +607,10 @@ steam.start() -- spawns the effect
|
||||
direction = direct
|
||||
|
||||
|
||||
/datum/effect/system/sleep_smoke_spread/proc/attach(atom/atom)
|
||||
/datum/effect/effect/system/sleep_smoke_spread/proc/attach(atom/atom)
|
||||
holder = atom
|
||||
|
||||
/datum/effect/system/sleep_smoke_spread/proc/start()
|
||||
/datum/effect/effect/system/sleep_smoke_spread/proc/start()
|
||||
var/i = 0
|
||||
for(i=0, i<src.number, i++)
|
||||
if(src.total_smoke > 20)
|
||||
@@ -618,7 +618,7 @@ steam.start() -- spawns the effect
|
||||
spawn(0)
|
||||
if(holder)
|
||||
src.location = get_turf(holder)
|
||||
var/obj/effect/sleep_smoke/smoke = new /obj/effect/sleep_smoke(src.location)
|
||||
var/obj/effect/effect/sleep_smoke/smoke = new /obj/effect/effect/sleep_smoke(src.location)
|
||||
src.total_smoke++
|
||||
var/direction = src.direction
|
||||
if(!direction)
|
||||
@@ -638,7 +638,7 @@ steam.start() -- spawns the effect
|
||||
/////////////////////////////////////////////
|
||||
|
||||
|
||||
/obj/effect/mustard_gas
|
||||
/obj/effect/effect/mustard_gas
|
||||
name = "mustard gas"
|
||||
icon_state = "mustard"
|
||||
opacity = 1
|
||||
@@ -646,13 +646,13 @@ steam.start() -- spawns the effect
|
||||
mouse_opacity = 0
|
||||
var/amount = 6.0
|
||||
|
||||
/obj/effect/mustard_gas/New()
|
||||
/obj/effect/effect/mustard_gas/New()
|
||||
..()
|
||||
spawn (100)
|
||||
del(src)
|
||||
return
|
||||
|
||||
/obj/effect/mustard_gas/Move()
|
||||
/obj/effect/effect/mustard_gas/Move()
|
||||
..()
|
||||
for(var/mob/living/carbon/human/R in get_turf(src))
|
||||
if (R.internal != null && usr.wear_mask && (R.wear_mask.flags & MASKINTERNALS) && R.wear_suit != null && !istype(R.wear_suit, /obj/item/clothing/suit/labcoat) && !istype(R.wear_suit, /obj/item/clothing/suit/straight_jacket) && !istype(R.wear_suit, /obj/item/clothing/suit/straight_jacket && !istype(R.wear_suit, /obj/item/clothing/suit/armor)))
|
||||
@@ -666,7 +666,7 @@ steam.start() -- spawns the effect
|
||||
R.updatehealth()
|
||||
return
|
||||
|
||||
/obj/effect/mustard_gas/HasEntered(mob/living/carbon/human/R as mob )
|
||||
/obj/effect/effect/mustard_gas/HasEntered(mob/living/carbon/human/R as mob )
|
||||
..()
|
||||
if (istype(R, /mob/living/carbon/human))
|
||||
if (R.internal != null && usr.wear_mask && (R.wear_mask.flags & MASKINTERNALS) && R.wear_suit != null && !istype(R.wear_suit, /obj/item/clothing/suit/labcoat) && !istype(R.wear_suit, /obj/item/clothing/suit/straight_jacket) && !istype(R.wear_suit, /obj/item/clothing/suit/straight_jacket && !istype(R.wear_suit, /obj/item/clothing/suit/armor)))
|
||||
@@ -680,7 +680,7 @@ steam.start() -- spawns the effect
|
||||
R.updatehealth()
|
||||
return
|
||||
|
||||
/datum/effect/system/mustard_gas_spread
|
||||
/datum/effect/effect/system/mustard_gas_spread
|
||||
var/number = 3
|
||||
var/cardinals = 0
|
||||
var/turf/location
|
||||
@@ -688,7 +688,7 @@ steam.start() -- spawns the effect
|
||||
var/total_smoke = 0 // To stop it being spammed and lagging!
|
||||
var/direction
|
||||
|
||||
/datum/effect/system/mustard_gas_spread/proc/set_up(n = 5, c = 0, loca, direct)
|
||||
/datum/effect/effect/system/mustard_gas_spread/proc/set_up(n = 5, c = 0, loca, direct)
|
||||
if(n > 20)
|
||||
n = 20
|
||||
number = n
|
||||
@@ -700,10 +700,10 @@ steam.start() -- spawns the effect
|
||||
if(direct)
|
||||
direction = direct
|
||||
|
||||
/datum/effect/system/mustard_gas_spread/proc/attach(atom/atom)
|
||||
/datum/effect/effect/system/mustard_gas_spread/proc/attach(atom/atom)
|
||||
holder = atom
|
||||
|
||||
/datum/effect/system/mustard_gas_spread/proc/start()
|
||||
/datum/effect/effect/system/mustard_gas_spread/proc/start()
|
||||
var/i = 0
|
||||
for(i=0, i<src.number, i++)
|
||||
if(src.total_smoke > 20)
|
||||
@@ -711,7 +711,7 @@ steam.start() -- spawns the effect
|
||||
spawn(0)
|
||||
if(holder)
|
||||
src.location = get_turf(holder)
|
||||
var/obj/effect/mustard_gas/smoke = new /obj/effect/mustard_gas(src.location)
|
||||
var/obj/effect/effect/mustard_gas/smoke = new /obj/effect/effect/mustard_gas(src.location)
|
||||
src.total_smoke++
|
||||
var/direction = src.direction
|
||||
if(!direction)
|
||||
@@ -737,22 +737,22 @@ steam.start() -- spawns the effect
|
||||
/// and don't call start() in a loop that will be repeated otherwise it'll get spammed!
|
||||
/////////////////////////////////////////////
|
||||
|
||||
/obj/effect/ion_trails
|
||||
/obj/effect/effect/ion_trails
|
||||
name = "ion trails"
|
||||
icon_state = "ion_trails"
|
||||
anchored = 1.0
|
||||
|
||||
/datum/effect/system/ion_trail_follow
|
||||
/datum/effect/effect/system/ion_trail_follow
|
||||
var/atom/holder
|
||||
var/turf/oldposition
|
||||
var/processing = 1
|
||||
var/on = 1
|
||||
|
||||
/datum/effect/system/ion_trail_follow/proc/set_up(atom/atom)
|
||||
/datum/effect/effect/system/ion_trail_follow/proc/set_up(atom/atom)
|
||||
holder = atom
|
||||
oldposition = get_turf(atom)
|
||||
|
||||
/datum/effect/system/ion_trail_follow/proc/start()
|
||||
/datum/effect/effect/system/ion_trail_follow/proc/start()
|
||||
if(!src.on)
|
||||
src.on = 1
|
||||
src.processing = 1
|
||||
@@ -762,7 +762,7 @@ steam.start() -- spawns the effect
|
||||
var/turf/T = get_turf(src.holder)
|
||||
if(T != src.oldposition)
|
||||
if(istype(T, /turf/space))
|
||||
var/obj/effect/ion_trails/I = new /obj/effect/ion_trails(src.oldposition)
|
||||
var/obj/effect/effect/ion_trails/I = new /obj/effect/effect/ion_trails(src.oldposition)
|
||||
src.oldposition = T
|
||||
I.dir = src.holder.dir
|
||||
flick("ion_fade", I)
|
||||
@@ -779,7 +779,7 @@ steam.start() -- spawns the effect
|
||||
src.processing = 1
|
||||
src.start()
|
||||
|
||||
/datum/effect/system/ion_trail_follow/proc/stop()
|
||||
/datum/effect/effect/system/ion_trail_follow/proc/stop()
|
||||
src.processing = 0
|
||||
src.on = 0
|
||||
|
||||
@@ -792,18 +792,18 @@ steam.start() -- spawns the effect
|
||||
// even if it's carried of thrown.
|
||||
/////////////////////////////////////////////
|
||||
|
||||
/datum/effect/system/steam_trail_follow
|
||||
/datum/effect/effect/system/steam_trail_follow
|
||||
var/atom/holder
|
||||
var/turf/oldposition
|
||||
var/processing = 1
|
||||
var/on = 1
|
||||
var/number
|
||||
|
||||
/datum/effect/system/steam_trail_follow/proc/set_up(atom/atom)
|
||||
/datum/effect/effect/system/steam_trail_follow/proc/set_up(atom/atom)
|
||||
holder = atom
|
||||
oldposition = get_turf(atom)
|
||||
|
||||
/datum/effect/system/steam_trail_follow/proc/start()
|
||||
/datum/effect/effect/system/steam_trail_follow/proc/start()
|
||||
if(!src.on)
|
||||
src.on = 1
|
||||
src.processing = 1
|
||||
@@ -811,7 +811,7 @@ steam.start() -- spawns the effect
|
||||
src.processing = 0
|
||||
spawn(0)
|
||||
if(src.number < 3)
|
||||
var/obj/effect/steam/I = new /obj/effect/steam(src.oldposition)
|
||||
var/obj/effect/effect/steam/I = new /obj/effect/effect/steam(src.oldposition)
|
||||
src.number++
|
||||
src.oldposition = get_turf(holder)
|
||||
I.dir = src.holder.dir
|
||||
@@ -828,7 +828,7 @@ steam.start() -- spawns the effect
|
||||
src.processing = 1
|
||||
src.start()
|
||||
|
||||
/datum/effect/system/steam_trail_follow/proc/stop()
|
||||
/datum/effect/effect/system/steam_trail_follow/proc/stop()
|
||||
src.processing = 0
|
||||
src.on = 0
|
||||
|
||||
@@ -838,7 +838,7 @@ steam.start() -- spawns the effect
|
||||
// Similar to smoke, but spreads out more
|
||||
// metal foams leave behind a foamed metal wall
|
||||
|
||||
/obj/effect/foam
|
||||
/obj/effect/effect/foam
|
||||
name = "foam"
|
||||
icon_state = "foam"
|
||||
opacity = 0
|
||||
@@ -852,7 +852,7 @@ steam.start() -- spawns the effect
|
||||
var/metal = 0
|
||||
|
||||
|
||||
/obj/effect/foam/New(loc, var/ismetal=0)
|
||||
/obj/effect/effect/foam/New(loc, var/ismetal=0)
|
||||
..(loc)
|
||||
icon_state = "[ismetal ? "m":""]foam"
|
||||
metal = ismetal
|
||||
@@ -874,7 +874,7 @@ steam.start() -- spawns the effect
|
||||
return
|
||||
|
||||
// on delete, transfer any reagents to the floor
|
||||
/obj/effect/foam/Del()
|
||||
/obj/effect/effect/foam/Del()
|
||||
if(!metal && reagents)
|
||||
for(var/atom/A in oview(0,src))
|
||||
if(A == src)
|
||||
@@ -882,7 +882,7 @@ steam.start() -- spawns the effect
|
||||
reagents.reaction(A, 1, 1)
|
||||
..()
|
||||
|
||||
/obj/effect/foam/process()
|
||||
/obj/effect/effect/foam/process()
|
||||
if(--amount < 0)
|
||||
return
|
||||
|
||||
@@ -899,7 +899,7 @@ steam.start() -- spawns the effect
|
||||
if(!T.Enter(src))
|
||||
continue
|
||||
|
||||
var/obj/effect/foam/F = locate() in T
|
||||
var/obj/effect/effect/foam/F = locate() in T
|
||||
if(F)
|
||||
continue
|
||||
|
||||
@@ -914,7 +914,7 @@ steam.start() -- spawns the effect
|
||||
|
||||
// foam disolves when heated
|
||||
// except metal foams
|
||||
/obj/effect/foam/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)
|
||||
/obj/effect/effect/foam/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)
|
||||
if(!metal && prob(max(0, exposed_temperature - 475)))
|
||||
flick("[icon_state]-disolve", src)
|
||||
|
||||
@@ -922,7 +922,7 @@ steam.start() -- spawns the effect
|
||||
del(src)
|
||||
|
||||
|
||||
/obj/effect/foam/HasEntered(var/atom/movable/AM)
|
||||
/obj/effect/effect/foam/HasEntered(var/atom/movable/AM)
|
||||
if(metal)
|
||||
return
|
||||
|
||||
@@ -938,7 +938,7 @@ steam.start() -- spawns the effect
|
||||
M.weakened = 2
|
||||
|
||||
|
||||
/datum/effect/system/foam_spread
|
||||
/datum/effect/effect/system/foam_spread
|
||||
var/amount = 5 // the size of the foam spread.
|
||||
var/turf/location
|
||||
var/list/carried_reagents // the IDs of reagents present when the foam was mixed
|
||||
@@ -947,7 +947,7 @@ steam.start() -- spawns the effect
|
||||
|
||||
|
||||
|
||||
/datum/effect/system/foam_spread/proc/set_up(amt=5, loca, var/datum/reagents/carry = null, var/metalfoam = 0)
|
||||
/datum/effect/effect/system/foam_spread/proc/set_up(amt=5, loca, var/datum/reagents/carry = null, var/metalfoam = 0)
|
||||
amount = round(amt/5, 1)
|
||||
if(istype(loca, /turf/))
|
||||
location = loca
|
||||
@@ -967,9 +967,9 @@ steam.start() -- spawns the effect
|
||||
for(var/datum/reagent/R in carry.reagent_list)
|
||||
carried_reagents += R.id
|
||||
|
||||
/datum/effect/system/foam_spread/proc/start()
|
||||
/datum/effect/effect/system/foam_spread/proc/start()
|
||||
spawn(0)
|
||||
var/obj/effect/foam/F = locate() in location
|
||||
var/obj/effect/effect/foam/F = locate() in location
|
||||
if(F)
|
||||
F.amount += amount
|
||||
return
|
||||
@@ -1117,13 +1117,13 @@ steam.start() -- spawns the effect
|
||||
|
||||
return 1
|
||||
|
||||
/datum/effect/system/reagents_explosion
|
||||
/datum/effect/effect/system/reagents_explosion
|
||||
var/amount // TNT equivalent
|
||||
var/turf/location
|
||||
var/flashing = 0 // does explosion creates flash effect?
|
||||
var/flashing_factor = 0 // factor of how powerful the flash effect relatively to the explosion
|
||||
|
||||
/datum/effect/system/reagents_explosion/proc/set_up (amt, loc, flash = 0, flash_fact = 0)
|
||||
/datum/effect/effect/system/reagents_explosion/proc/set_up (amt, loc, flash = 0, flash_fact = 0)
|
||||
amount = amt
|
||||
if(istype(loc, /turf/))
|
||||
location = loc
|
||||
@@ -1135,9 +1135,9 @@ steam.start() -- spawns the effect
|
||||
|
||||
return
|
||||
|
||||
/datum/effect/system/reagents_explosion/proc/start()
|
||||
/datum/effect/effect/system/reagents_explosion/proc/start()
|
||||
if (amount <= 2)
|
||||
var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
|
||||
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
|
||||
s.set_up(2, 1, location)
|
||||
s.start()
|
||||
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
del(D)
|
||||
|
||||
if(sparks)
|
||||
var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
|
||||
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
|
||||
s.set_up(2, 1, location)
|
||||
s.start()
|
||||
|
||||
|
||||
@@ -150,7 +150,7 @@
|
||||
var/obj/structure/cable/C = T.get_cable_node()
|
||||
if(C)
|
||||
if (electrocute_mob(user, C, src))
|
||||
var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
|
||||
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
|
||||
s.set_up(5, 1, src)
|
||||
s.start()
|
||||
return 1
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
M.handcuffed = new /obj/item/weapon/handcuffs(M)
|
||||
|
||||
else
|
||||
if ((usr.mutations & CLOWN) && prob(50))
|
||||
if ((usr.mutations & CLUMSY) && prob(50))
|
||||
usr << "\red Uh ... how do those things work?!"
|
||||
if (istype(M, /mob/living/carbon/human))
|
||||
var/obj/effect/equip_e/human/O = new /obj/effect/equip_e/human( )
|
||||
@@ -123,7 +123,7 @@
|
||||
|
||||
for(var/a=0, a<5, a++)
|
||||
spawn(0)
|
||||
var/obj/effect/water/W = new /obj/effect/water( get_turf(src) )
|
||||
var/obj/effect/effect/water/W = new /obj/effect/effect/water( get_turf(src) )
|
||||
var/turf/my_target = pick(the_targets)
|
||||
var/datum/reagents/R = new/datum/reagents(5)
|
||||
if(!W) return
|
||||
|
||||
@@ -99,7 +99,7 @@
|
||||
if(5.0)
|
||||
t = "huge"
|
||||
else
|
||||
if ((usr.mutations & CLOWN) && prob(50)) t = "funny-looking"
|
||||
if ((usr.mutations & CLUMSY) && prob(50)) t = "funny-looking"
|
||||
usr << text("This is a []\icon[][]. It is a [] item.", !src.blood_DNA ? "" : "bloody ",src, src.name, t)
|
||||
if(src.desc)
|
||||
usr << src.desc
|
||||
@@ -330,6 +330,12 @@
|
||||
src.add_fingerprint(user)
|
||||
return 1
|
||||
|
||||
|
||||
/obj/item/proc/IsShield()
|
||||
return 0
|
||||
|
||||
|
||||
|
||||
/obj/item/proc/eyestab(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
|
||||
|
||||
var/mob/living/carbon/human/H = M
|
||||
@@ -358,7 +364,7 @@
|
||||
M.attack_log += "\[[time_stamp()]\]<font color='orange'> Attacked by [user.name] ([user.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])</font>"
|
||||
|
||||
src.add_fingerprint(user)
|
||||
//if((user.mutations & CLOWN) && prob(50))
|
||||
//if((user.mutations & CLUMSY) && prob(50))
|
||||
// M = user
|
||||
/*
|
||||
M << "\red You stab yourself in the eye."
|
||||
@@ -377,7 +383,7 @@
|
||||
"\red You stab yourself in the eyes with [src]!" \
|
||||
)
|
||||
if(istype(M, /mob/living/carbon/human))
|
||||
var/datum/organ/external/affecting = M:organs["head"]
|
||||
var/datum/organ/external/affecting = M:get_organ("head")
|
||||
affecting.take_damage(7)
|
||||
else
|
||||
M.take_organ_damage(7)
|
||||
|
||||
@@ -19,7 +19,7 @@ RCD
|
||||
m_amt = 50000
|
||||
origin_tech = "engineering=4;materials=2"
|
||||
var
|
||||
datum/effect/system/spark_spread/spark_system
|
||||
datum/effect/effect/system/spark_spread/spark_system
|
||||
matter = 0
|
||||
working = 0
|
||||
mode = 1
|
||||
@@ -28,7 +28,7 @@ RCD
|
||||
|
||||
New()
|
||||
desc = "A RCD. It currently holds [matter]/30 matter-units."
|
||||
src.spark_system = new /datum/effect/system/spark_spread
|
||||
src.spark_system = new /datum/effect/effect/system/spark_spread
|
||||
spark_system.set_up(5, 0, src)
|
||||
spark_system.attach(src)
|
||||
return
|
||||
|
||||
@@ -65,7 +65,7 @@ FLASHBANG
|
||||
|
||||
|
||||
clown_check(var/mob/living/user)
|
||||
if((user.mutations & CLOWN) && prob(50))
|
||||
if((user.mutations & CLUMSY) && prob(50))
|
||||
user << "\red Huh? How does this thing work?!"
|
||||
src.active = 1
|
||||
src.icon_state = "empar"
|
||||
@@ -242,7 +242,7 @@ FLASHBANG
|
||||
|
||||
|
||||
clown_check(var/mob/living/user)
|
||||
if ((user.mutations & CLOWN) && prob(50))
|
||||
if ((user.mutations & CLUMSY) && prob(50))
|
||||
user << "\red Huh? How does this thing work?!"
|
||||
src.active = 1
|
||||
src.icon_state = "flashbang1"
|
||||
|
||||
@@ -77,8 +77,8 @@ Deathnettle
|
||||
if(!user.gloves)
|
||||
user << "\red The nettle burns your bare hand!"
|
||||
if(istype(user, /mob/living/carbon/human))
|
||||
var/organ = (user.hand ? "l_":"r_") + pick("hand","hand","arm")
|
||||
var/datum/organ/external/affecting = user.organs[organ]
|
||||
var/organ = ((user.hand ? "l_":"r_") + "arm")
|
||||
var/datum/organ/external/affecting = user.get_organ(organ)
|
||||
affecting.take_damage(0,force)
|
||||
else
|
||||
user.take_organ_damage(0,force)
|
||||
@@ -96,8 +96,8 @@ Deathnettle
|
||||
/obj/item/weapon/grown/deathnettle/pickup(mob/living/carbon/human/user as mob)
|
||||
if(!user.gloves)
|
||||
if(istype(user, /mob/living/carbon/human))
|
||||
var/organ = (user.hand ? "l_":"r_") + pick("hand","hand","arm")
|
||||
var/datum/organ/external/affecting = user.organs[organ]
|
||||
var/organ = ((user.hand ? "l_":"r_") + "arm")
|
||||
var/datum/organ/external/affecting = user.get_organ(organ)
|
||||
affecting.take_damage(0,force)
|
||||
else
|
||||
user.take_organ_damage(0,force)
|
||||
|
||||
@@ -37,7 +37,7 @@ KNIFE
|
||||
src.icon_state = "fork"
|
||||
return
|
||||
else
|
||||
if((user.mutations & CLOWN) && prob(50))
|
||||
if((user.mutations & CLUMSY) && prob(50))
|
||||
M = user
|
||||
return eyestab(M,user)
|
||||
|
||||
@@ -47,7 +47,7 @@ KNIFE
|
||||
// ROLLING PIN
|
||||
|
||||
/obj/item/weapon/kitchen/rollingpin/attack(mob/M as mob, mob/living/user as mob)
|
||||
if ((user.mutations & CLOWN) && prob(50))
|
||||
if ((user.mutations & CLUMSY) && prob(50))
|
||||
user << "\red The [src] slips out of your hand and hits your head."
|
||||
user.take_organ_damage(10)
|
||||
user.paralysis += 2
|
||||
@@ -84,7 +84,7 @@ KNIFE
|
||||
// KNIFE
|
||||
|
||||
/obj/item/weapon/kitchen/utensil/knife/attack(target as mob, mob/living/user as mob)
|
||||
if ((user.mutations & CLOWN) && prob(50))
|
||||
if ((user.mutations & CLUMSY) && prob(50))
|
||||
user << "\red You accidentally cut yourself with the [src]."
|
||||
user.take_organ_damage(20)
|
||||
return
|
||||
@@ -107,7 +107,7 @@ KNIFE
|
||||
sleep(rand(2,4))
|
||||
|
||||
|
||||
if((user.mutations & CLOWN) && prob(50)) //What if he's a clown?
|
||||
if((user.mutations & CLUMSY) && prob(50)) //What if he's a clown?
|
||||
M << "\red You accidentally slam yourself with the [src]!"
|
||||
M.weakened += 1
|
||||
user.take_organ_damage(2)
|
||||
|
||||
@@ -180,7 +180,7 @@ CLIPBOARDS
|
||||
set category = "Object"
|
||||
set src in usr
|
||||
|
||||
if ((usr.mutations & CLOWN) && prob(50))
|
||||
if ((usr.mutations & CLUMSY) && prob(50))
|
||||
usr << text("\red You cut yourself on the paper.")
|
||||
return
|
||||
var/n_name = input(usr, "What would you like to label the paper?", "Paper Labelling", null) as text
|
||||
|
||||
@@ -68,7 +68,7 @@ CIRCULAR SAW
|
||||
if(M == user && prob(25))
|
||||
user << "\red You mess up!"
|
||||
if(istype(M, /mob/living/carbon/human))
|
||||
var/datum/organ/external/affecting = M:organs["head"]
|
||||
var/datum/organ/external/affecting = M:get_organ("head")
|
||||
affecting.take_damage(15)
|
||||
M.updatehealth()
|
||||
else
|
||||
@@ -154,7 +154,7 @@ CIRCULAR SAW
|
||||
if(M == user && prob(25))
|
||||
user << "\red You mess up!"
|
||||
if(istype(M, /mob/living/carbon/human))
|
||||
var/datum/organ/external/affecting = M:organs["head"]
|
||||
var/datum/organ/external/affecting = M:get_organ("head")
|
||||
affecting.take_damage(15)
|
||||
M.updatehealth()
|
||||
else
|
||||
@@ -229,7 +229,7 @@ CIRCULAR SAW
|
||||
if(M == user && prob(25))
|
||||
user << "\red You mess up!"
|
||||
if(istype(M, /mob/living/carbon/human))
|
||||
var/datum/organ/external/affecting = M:organs["head"]
|
||||
var/datum/organ/external/affecting = M:get_organ("head")
|
||||
affecting.take_damage(15)
|
||||
M.updatehealth()
|
||||
else
|
||||
@@ -253,7 +253,7 @@ CIRCULAR SAW
|
||||
if(!istype(M))
|
||||
return ..()
|
||||
|
||||
if((user.mutations & CLOWN) && prob(50))
|
||||
if((user.mutations & CLUMSY) && prob(50))
|
||||
M = user
|
||||
return eyestab(M,user)
|
||||
|
||||
@@ -325,13 +325,13 @@ CIRCULAR SAW
|
||||
if(M == user && prob(25))
|
||||
user << "\red You mess up!"
|
||||
if(istype(M, /mob/living/carbon/human))
|
||||
var/datum/organ/external/affecting = M:organs["head"]
|
||||
var/datum/organ/external/affecting = M:get_organ("head")
|
||||
affecting.take_damage(15)
|
||||
else
|
||||
M.take_organ_damage(15)
|
||||
|
||||
if(istype(M, /mob/living/carbon/human))
|
||||
var/datum/organ/external/affecting = M:organs["head"]
|
||||
var/datum/organ/external/affecting = M:get_organ("head")
|
||||
affecting.take_damage(7)
|
||||
else
|
||||
M.take_organ_damage(7)
|
||||
@@ -370,13 +370,13 @@ CIRCULAR SAW
|
||||
if(M == user && prob(25))
|
||||
user << "\red You nick an artery!"
|
||||
if(istype(M, /mob/living/carbon/human))
|
||||
var/datum/organ/external/affecting = M:organs["head"]
|
||||
var/datum/organ/external/affecting = M:get_organ("head")
|
||||
affecting.take_damage(75)
|
||||
else
|
||||
M.take_organ_damage(75)
|
||||
|
||||
if(istype(M, /mob/living/carbon/human))
|
||||
var/datum/organ/external/affecting = M:organs["head"]
|
||||
var/datum/organ/external/affecting = M:get_organ("head")
|
||||
affecting.take_damage(7)
|
||||
else
|
||||
M.take_organ_damage(7)
|
||||
@@ -425,7 +425,7 @@ CIRCULAR SAW
|
||||
if(M == user && prob(25))
|
||||
user << "\red You mess up!"
|
||||
if(istype(M, /mob/living/carbon/human))
|
||||
var/datum/organ/external/affecting = M:organs["head"]
|
||||
var/datum/organ/external/affecting = M:get_organ("head")
|
||||
affecting.take_damage(15)
|
||||
else
|
||||
M.take_organ_damage(15)
|
||||
@@ -450,7 +450,7 @@ CIRCULAR SAW
|
||||
if(!istype(M))
|
||||
return ..()
|
||||
|
||||
if((user.mutations & CLOWN) && prob(50))
|
||||
if((user.mutations & CLUMSY) && prob(50))
|
||||
M = user
|
||||
return eyestab(M,user)
|
||||
|
||||
@@ -494,14 +494,14 @@ CIRCULAR SAW
|
||||
if(M == user && prob(25))
|
||||
user << "\red You mess up!"
|
||||
if(istype(M, /mob/living/carbon/human))
|
||||
var/datum/organ/external/affecting = M:organs["head"]
|
||||
var/datum/organ/external/affecting = M:get_organ("head")
|
||||
affecting.take_damage(40)
|
||||
M.updatehealth()
|
||||
else
|
||||
M.take_organ_damage(40)
|
||||
|
||||
if(istype(M, /mob/living/carbon/human))
|
||||
var/datum/organ/external/affecting = M:organs["head"]
|
||||
var/datum/organ/external/affecting = M:get_organ("head")
|
||||
affecting.take_damage(7)
|
||||
else
|
||||
M.take_organ_damage(7)
|
||||
|
||||
@@ -10,6 +10,11 @@ STUN BATON
|
||||
|
||||
|
||||
// SWORD
|
||||
/obj/item/weapon/melee/energy/sword/IsShield()
|
||||
if(active)
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/obj/item/weapon/melee/energy/sword/attack(target as mob, mob/user as mob)
|
||||
..()
|
||||
|
||||
@@ -17,7 +22,7 @@ STUN BATON
|
||||
color = pick("red","blue","green","purple")
|
||||
|
||||
/obj/item/weapon/melee/energy/sword/attack_self(mob/living/user as mob)
|
||||
if ((user.mutations & CLOWN) && prob(50))
|
||||
if ((user.mutations & CLUMSY) && prob(50))
|
||||
user << "\red You accidentally cut yourself with [src]."
|
||||
user.take_organ_damage(5,5)
|
||||
active = !active
|
||||
@@ -55,7 +60,7 @@ STUN BATON
|
||||
//Most of the other special functions are handled in their own files.
|
||||
|
||||
/obj/item/weapon/melee/energy/blade/New()
|
||||
spark_system = new /datum/effect/system/spark_spread()
|
||||
spark_system = new /datum/effect/effect/system/spark_spread()
|
||||
spark_system.set_up(5, 0, src)
|
||||
spark_system.attach(src)
|
||||
return
|
||||
@@ -98,7 +103,7 @@ STUN BATON
|
||||
|
||||
/obj/item/weapon/melee/baton/attack_self(mob/user as mob)
|
||||
src.status = !( src.status )
|
||||
if ((usr.mutations & CLOWN) && prob(50))
|
||||
if ((usr.mutations & CLUMSY) && prob(50))
|
||||
usr << "\red You grab the stunbaton on the wrong side."
|
||||
usr.paralysis += 60
|
||||
return
|
||||
@@ -114,7 +119,7 @@ STUN BATON
|
||||
return
|
||||
|
||||
/obj/item/weapon/melee/baton/attack(mob/M as mob, mob/user as mob)
|
||||
if ((usr.mutations & CLOWN) && prob(50))
|
||||
if ((usr.mutations & CLUMSY) && prob(50))
|
||||
usr << "\red You grab the stunbaton on the wrong side."
|
||||
usr.weakened += 30
|
||||
return
|
||||
@@ -186,7 +191,7 @@ STUN BATON
|
||||
charges -= 5
|
||||
|
||||
/obj/item/weapon/melee/classic_baton/attack(mob/M as mob, mob/living/user as mob)
|
||||
if ((user.mutations & CLOWN) && prob(50))
|
||||
if ((user.mutations & CLUMSY) && prob(50))
|
||||
user << "\red You club yourself over the head."
|
||||
user.weakened = max(3 * force, user.weakened)
|
||||
if(ishuman(user))
|
||||
|
||||
@@ -39,7 +39,7 @@ WELDINGTOOOL
|
||||
if(!istype(M)) return ..()
|
||||
if(user.zone_sel.selecting != "eyes" && user.zone_sel.selecting != "head")
|
||||
return ..()
|
||||
if((user.mutations & CLOWN) && prob(50))
|
||||
if((user.mutations & CLUMSY) && prob(50))
|
||||
M = user
|
||||
return eyestab(M,user)
|
||||
|
||||
|
||||
@@ -59,7 +59,7 @@
|
||||
|
||||
/obj/item/weapon/firbang/afterattack(atom/target as mob|obj|turf|area, mob/user as mob)
|
||||
if (user.equipped() == src)
|
||||
if ((user.mutations & CLOWN) && prob(50))
|
||||
if ((user.mutations & CLUMSY) && prob(50))
|
||||
user << "\red Huh? How does this thing work?!"
|
||||
src.state = 1
|
||||
src.icon_state = "flashbang1"
|
||||
@@ -94,11 +94,11 @@
|
||||
playsound(src.loc, 'bang.ogg', 25, 1)
|
||||
var/turf/T = get_turf(src)
|
||||
if(T)
|
||||
var/datum/effect/system/harmless_smoke_spread/smoke = new
|
||||
var/datum/effect/effect/system/harmless_smoke_spread/smoke = new
|
||||
smoke.set_up(3, 0, src.loc)
|
||||
smoke.attach(src)
|
||||
smoke.start()
|
||||
var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
|
||||
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
|
||||
s.set_up(3, 1, src)
|
||||
s.start()
|
||||
new /obj/effect/new_year_tree(T)
|
||||
@@ -107,7 +107,7 @@
|
||||
|
||||
/obj/item/weapon/firbang/attack_self(mob/user as mob)
|
||||
if (!src.state)
|
||||
if (user.mutations & CLOWN)
|
||||
if (user.mutations & CLUMSY)
|
||||
user << "\red Huh? How does this thing work?!"
|
||||
spawn( 5 )
|
||||
prime()
|
||||
|
||||
@@ -134,7 +134,7 @@
|
||||
if (M.moved_recently && M.last_move)
|
||||
step(M, M.last_move)
|
||||
M.show_message("\red <B>You feel a sharp shock!</B>")
|
||||
var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
|
||||
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
|
||||
s.set_up(3, 1, M)
|
||||
s.start()
|
||||
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
/obj/item/device/Nradio
|
||||
icon = 'radio.dmi'
|
||||
name = "station bounced radio"
|
||||
suffix = "\[3\]"
|
||||
icon_state = "walkietalkie"
|
||||
item_state = "walkietalkie"
|
||||
|
||||
flags = 450//FFFF what does this even mean likely conduct+onbelt+someothershit
|
||||
throw_speed = 2
|
||||
throw_range = 9
|
||||
w_class = 2
|
||||
g_amt = 25
|
||||
m_amt = 75
|
||||
|
||||
var
|
||||
//General things
|
||||
frequency = 1459 //Default freq
|
||||
broadcasting = 0 //Mike
|
||||
listening = 1 //Speaker
|
||||
secured = 0 //Can you see our wires
|
||||
freerange = 0 // 0 - Sanitize frequencies, 1 - Full range
|
||||
|
||||
datum/radio_frequency/radio_connection = null
|
||||
list/datum/radio_frequency/secure_radio_connections = new
|
||||
|
||||
//Internal things
|
||||
obj/item/weapon/syndicate_uplink/uplink = null //If we have an uplink one of our freqs will activate it
|
||||
wires = WIRE_RECEIVE | WIRE_TRANSMIT //Active wires
|
||||
|
||||
list/channels = list() //see communications.dm for full list. First channes is a "default" for :h
|
||||
// "Example" = FREQ_LISTENING|FREQ_BROADCASTING
|
||||
|
||||
last_transmission //What is this
|
||||
obj/item/device/radio/patch_link = null //What is this
|
||||
|
||||
var/const
|
||||
WIRE_TRANSMIT = 1 //sends a signal, like to set off a bomb or electrocute someone, or talk
|
||||
WIRE_RECEIVE = 2 //we can hear things
|
||||
TRANSMISSION_DELAY = 5 // only 2/second/radio antispam protection
|
||||
FREQ_LISTENING = 1
|
||||
|
||||
|
||||
proc
|
||||
set_frequency(new_frequency)
|
||||
radio_controller.remove_object(src, frequency)
|
||||
frequency = new_frequency
|
||||
radio_connection = radio_controller.add_object(src, frequency, RADIO_CHAT)
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
new /obj/item/weapon/pen(src)
|
||||
|
||||
/obj/item/weapon/secstorage/sbriefcase/attack(mob/M as mob, mob/living/user as mob)
|
||||
if ((user.mutations & CLOWN) && prob(50))
|
||||
if ((user.mutations & CLUMSY) && prob(50))
|
||||
user << "\red The [src] slips out of your hand and hits your head."
|
||||
user.take_organ_damage(10)
|
||||
user.paralysis += 2
|
||||
|
||||
@@ -102,7 +102,7 @@
|
||||
overlays += image('storage.dmi', icon_locking)
|
||||
locked = 0
|
||||
if(istype(W, /obj/item/weapon/melee/energy/blade))
|
||||
var/datum/effect/system/spark_spread/spark_system = new /datum/effect/system/spark_spread()
|
||||
var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread()
|
||||
spark_system.set_up(5, 0, src.loc)
|
||||
spark_system.start()
|
||||
playsound(src.loc, 'blade1.ogg', 50, 1)
|
||||
|
||||
@@ -164,7 +164,7 @@
|
||||
desc = "It appears to be broken."
|
||||
icon_state = src.icon_broken
|
||||
if(istype(W, /obj/item/weapon/melee/energy/blade))
|
||||
var/datum/effect/system/spark_spread/spark_system = new /datum/effect/system/spark_spread()
|
||||
var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread()
|
||||
spark_system.set_up(5, 0, src.loc)
|
||||
spark_system.start()
|
||||
playsound(src.loc, 'blade1.ogg', 50, 1)
|
||||
|
||||
@@ -168,7 +168,7 @@ SHARDS
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(!H.shoes)
|
||||
var/datum/organ/external/affecting = H.organs[pick("l_foot", "r_foot")]
|
||||
var/datum/organ/external/affecting = H.get_organ(pick("l_leg", "r_leg"))
|
||||
H.weakened = max(3, H.weakened)
|
||||
affecting.take_damage(5, 0)
|
||||
H.UpdateDamageIcon()
|
||||
|
||||
@@ -189,7 +189,7 @@
|
||||
|
||||
flick("e_chairs", src)
|
||||
flick("e_chairos", src.overl)
|
||||
var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
|
||||
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
|
||||
s.set_up(12, 1, src)
|
||||
s.start()
|
||||
for(var/mob/living/M in src.loc)
|
||||
|
||||
@@ -7,17 +7,14 @@
|
||||
new /obj/item/weapon/spacecash(src)
|
||||
|
||||
/obj/item/weapon/storage/bible/proc/bless(mob/living/carbon/M as mob)
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/heal_amt = 10
|
||||
for(var/A in H.organs)
|
||||
var/datum/organ/external/affecting = null
|
||||
if(!H.organs[A]) continue
|
||||
affecting = H.organs[A]
|
||||
if(!istype(affecting, /datum/organ/external)) continue
|
||||
if(affecting.heal_damage(heal_amt, heal_amt))
|
||||
H.UpdateDamageIcon()
|
||||
else
|
||||
H.UpdateDamage()
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/heal_amt = 10
|
||||
for(var/datum/organ/external/affecting in H.organs)
|
||||
if(affecting.heal_damage(heal_amt, heal_amt))
|
||||
H.UpdateDamageIcon()
|
||||
else
|
||||
H.UpdateDamage()
|
||||
return
|
||||
|
||||
/obj/item/weapon/storage/bible/attack(mob/M as mob, mob/living/user as mob)
|
||||
@@ -38,7 +35,7 @@
|
||||
user.take_organ_damage(0,10)
|
||||
return
|
||||
|
||||
if ((user.mutations & CLOWN) && prob(50))
|
||||
if ((user.mutations & CLUMSY) && prob(50))
|
||||
user << "\red The [src] slips out of your hand and hits your head."
|
||||
user.take_organ_damage(10)
|
||||
user.paralysis += 20
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
/obj/item/weapon/storage/briefcase/attack(mob/M as mob, mob/living/user as mob)
|
||||
//..()
|
||||
|
||||
if ((user.mutations & CLOWN) && prob(50))
|
||||
if ((user.mutations & CLUMSY) && prob(50))
|
||||
user << "\red The [src] slips out of your hand and hits your head."
|
||||
user.take_organ_damage(10)
|
||||
user.paralysis += 2
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
desc = "It appears to be broken."
|
||||
icon_state = src.icon_broken
|
||||
if(istype(W, /obj/item/weapon/melee/energy/blade))
|
||||
var/datum/effect/system/spark_spread/spark_system = new /datum/effect/system/spark_spread()
|
||||
var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread()
|
||||
spark_system.set_up(5, 0, src.loc)
|
||||
spark_system.start()
|
||||
playsound(src.loc, 'blade1.ogg', 50, 1)
|
||||
|
||||
@@ -144,7 +144,7 @@ TABLE AND RACK OBJECT INTERATIONS
|
||||
return
|
||||
|
||||
if(istype(W, /obj/item/weapon/melee/energy/blade))
|
||||
var/datum/effect/system/spark_spread/spark_system = new /datum/effect/system/spark_spread()
|
||||
var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread()
|
||||
spark_system.set_up(5, 0, src.loc)
|
||||
spark_system.start()
|
||||
playsound(src.loc, 'blade1.ogg', 50, 1)
|
||||
@@ -186,7 +186,7 @@ TABLE AND RACK OBJECT INTERATIONS
|
||||
if(isrobot(user))
|
||||
return
|
||||
if(istype(W, /obj/item/weapon/melee/energy/blade))
|
||||
var/datum/effect/system/spark_spread/spark_system = new /datum/effect/system/spark_spread()
|
||||
var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread()
|
||||
spark_system.set_up(5, 0, src.loc)
|
||||
spark_system.start()
|
||||
playsound(src.loc, 'blade1.ogg', 50, 1)
|
||||
@@ -256,7 +256,7 @@ TABLE AND RACK OBJECT INTERATIONS
|
||||
return
|
||||
|
||||
if(istype(W, /obj/item/weapon/melee/energy/blade))
|
||||
var/datum/effect/system/spark_spread/spark_system = new /datum/effect/system/spark_spread()
|
||||
var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread()
|
||||
spark_system.set_up(5, 0, src.loc)
|
||||
spark_system.start()
|
||||
playsound(src.loc, 'blade1.ogg', 50, 1)
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
var/on = 0.0
|
||||
w_class = 4.0
|
||||
item_state = "jetpack"
|
||||
var/datum/effect/system/ion_trail_follow/ion_trail
|
||||
var/datum/effect/effect/system/ion_trail_follow/ion_trail
|
||||
distribute_pressure = ONE_ATMOSPHERE*O2STANDARD
|
||||
//volume = 140 //jetpack sould be larger, but then it will never deplete -rastaf0
|
||||
|
||||
@@ -400,7 +400,7 @@
|
||||
|
||||
/obj/item/weapon/tank/jetpack/New()
|
||||
..()
|
||||
src.ion_trail = new /datum/effect/system/ion_trail_follow()
|
||||
src.ion_trail = new /datum/effect/effect/system/ion_trail_follow()
|
||||
src.ion_trail.set_up(src)
|
||||
src.air_contents.oxygen = (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)
|
||||
return
|
||||
@@ -424,7 +424,7 @@
|
||||
/obj/item/weapon/tank/jetpack/proc/allow_thrust(num, mob/living/user as mob)
|
||||
if (!( src.on ))
|
||||
return 0
|
||||
if ((num < 0.01 || src.air_contents.total_moles() < num))
|
||||
if ((num < 0.005 || src.air_contents.total_moles() < num))
|
||||
src.ion_trail.stop()
|
||||
return 0
|
||||
|
||||
|
||||
@@ -1,225 +0,0 @@
|
||||
/obj/effect/pressure_plate
|
||||
name = "pressure plate"
|
||||
desc = "A pressure plate that triggers a trap or a few of them."
|
||||
density = 0
|
||||
var/list/connected_traps_names = list() //mappers, edit this when you place pressure plates on the map. don't forget to make the connected traps have an UNIQUE name
|
||||
var/list/connected_traps = list() //actual references to the connected traps. leave empty, it is generated at runtime from connected_traps_names
|
||||
var/trigger_type = "mob and obj" //can be "mob", "obj" or "mob and obj", the only moveable types
|
||||
|
||||
/obj/effect/pressure_plate/New()
|
||||
..()
|
||||
src:visibility = 0
|
||||
refresh()
|
||||
|
||||
/obj/effect/pressure_plate/verb/refresh()
|
||||
set name = "Refresh Pressure Plate Links"
|
||||
set category = "Object"
|
||||
set src in view()
|
||||
connected_traps = list() //emptying the list first
|
||||
for(var/trap_name in connected_traps_names)
|
||||
for(var/obj/effect/trap/the_trap in world)
|
||||
if(the_trap.name == trap_name)
|
||||
connected_traps += the_trap //adding the trap with the matching name
|
||||
|
||||
/obj/effect/pressure_plate/HasEntered(atom/victim as mob|obj)
|
||||
if(victim.density && (trigger_type == "mob and obj" || (trigger_type == "mob" && istype(victim,/mob)) || (trigger_type == "obj" && istype(victim,/obj))))
|
||||
for(var/obj/effect/trap/T in connected_traps)
|
||||
T.trigger(victim)
|
||||
|
||||
/obj/effect/pressure_plate/Bumped(atom/victim as mob|obj)
|
||||
if(victim.density && (trigger_type == "mob and obj" || (trigger_type == "mob" && istype(victim,/mob)) || (trigger_type == "obj" && istype(victim,/obj))))
|
||||
for(var/obj/effect/trap/T in connected_traps)
|
||||
T.trigger(victim)
|
||||
|
||||
/obj/effect/trap //has three subtypes - /aoe, /area (ie affects an entire area), /single (only the victim is affected)
|
||||
name = "trap"
|
||||
desc = "It's a trap!"
|
||||
density = 0
|
||||
var/uses = 1 //how many times it can be triggered
|
||||
var/trigger_type = "mob and obj" //can be "mob", "obj" or "mob and obj", the only moveable types. can also be "none" to not be triggered by entering its square (needs to have a pressure plate attached in that case)
|
||||
var/target_type = "mob" //if it targets mobs, turfs or objs
|
||||
var/include_dense = 1 //if it includes dense targets in the aoe (may be important for some reason). you'll probably want to change it to 1 if you target mobs or objs
|
||||
|
||||
/obj/effect/trap/New()
|
||||
..()
|
||||
src:visibility = 0 //seriously, it keeps saying "undefined var" when I try to do it in the define
|
||||
|
||||
/obj/effect/trap/HasEntered(victim as mob|obj)
|
||||
if(trigger_type == "mob and obj" || (trigger_type == "mob" && istype(victim,/mob)) || (trigger_type == "obj" && istype(victim,/obj)))
|
||||
trigger(victim)
|
||||
|
||||
/obj/effect/trap/Bumped(victim as mob|obj)
|
||||
if(trigger_type == "mob and obj" || (trigger_type == "mob" && istype(victim,/mob)) || (trigger_type == "obj" && istype(victim,/obj)))
|
||||
trigger(victim)
|
||||
|
||||
/obj/effect/trap/proc/trigger(victim)
|
||||
if(!uses)
|
||||
return
|
||||
uses--
|
||||
activate(victim)
|
||||
|
||||
/obj/effect/trap/proc/activate()
|
||||
|
||||
/obj/effect/trap/aoe
|
||||
name = "aoe trap"
|
||||
desc = "This trap affects a number of mobs, turfs or objs in an aoe"
|
||||
var/aoe_radius = 3 //radius of aoe
|
||||
var/aoe_range_or_view = "view" //if it includes all tiles in [radius] range or view
|
||||
|
||||
/obj/effect/trap/aoe/proc/picktargets()
|
||||
|
||||
var/list/targets = list()
|
||||
|
||||
switch(target_type)
|
||||
if("turf")
|
||||
switch(aoe_range_or_view)
|
||||
if("view")
|
||||
for(var/turf/T in view(src,aoe_radius))
|
||||
if(!T.density || include_dense)
|
||||
targets += T
|
||||
if("range")
|
||||
for(var/turf/T in range(src,aoe_radius))
|
||||
if(!T.density || include_dense)
|
||||
targets += T
|
||||
if("mob")
|
||||
switch(aoe_range_or_view)
|
||||
if("view")
|
||||
for(var/mob/living/M in view(src,aoe_radius))
|
||||
if(!M.density || include_dense)
|
||||
targets += M
|
||||
if("range")
|
||||
for(var/mob/living/M in range(src,aoe_radius))
|
||||
if(!M.density || include_dense)
|
||||
targets += M
|
||||
if("obj")
|
||||
switch(aoe_range_or_view)
|
||||
if("view")
|
||||
for(var/obj/O in view(src,aoe_radius))
|
||||
if(!O.density || include_dense)
|
||||
targets += O
|
||||
if("range")
|
||||
for(var/obj/O in range(src,aoe_radius))
|
||||
if(!O.density || include_dense)
|
||||
targets += O
|
||||
|
||||
return targets
|
||||
|
||||
/obj/effect/trap/aoe/rocksfall
|
||||
name = "rocks fall trap"
|
||||
desc = "Your DM must really hate you."
|
||||
target_type = "turf"
|
||||
include_dense = 0
|
||||
var/rocks_amt = 10 //amount of rocks falling
|
||||
var/rocks_min_dmg = 50 //min damage per rock
|
||||
var/rocks_max_dmg = 100 //max damage per rock
|
||||
var/rocks_hit_chance = 100 //the chance for a rock to hit you
|
||||
var/list/rocks_type = list() //what rocks might it drop on the target. with var editing, not even limited to rocks.
|
||||
|
||||
/obj/effect/trap/aoe/rocksfall/New()
|
||||
|
||||
..()
|
||||
|
||||
rocks_type = pick_rock_types()
|
||||
|
||||
/obj/effect/trap/aoe/rocksfall/proc/pick_rock_types() //since we may want subtypes of the trap with completely different rock types, which is best done this way
|
||||
|
||||
var/list/varieties = list()
|
||||
|
||||
varieties = typesof(/obj/item/weapon/ore)
|
||||
varieties -= /obj/item/weapon/ore/diamond //don't want easily available rare ores, hmm?
|
||||
varieties -= /obj/item/weapon/ore/uranium
|
||||
varieties -= /obj/item/weapon/ore/slag //that'd be just stupid
|
||||
|
||||
return varieties
|
||||
|
||||
/obj/effect/trap/aoe/rocksfall/activate()
|
||||
|
||||
var/list/targets = list()
|
||||
targets = picktargets()
|
||||
|
||||
if(target_type == "turf")
|
||||
for(var/i=0,i<rocks_amt,i++)
|
||||
var/turf/hit_loc = pick(targets)
|
||||
var/rock_type = pick(rocks_type)
|
||||
var/obj/item/weapon/ore/rock = new rock_type(hit_loc)
|
||||
for(var/mob/living/M in hit_loc)
|
||||
if(prob(rocks_hit_chance))
|
||||
M.take_organ_damage(rand(rocks_min_dmg,rocks_max_dmg))
|
||||
M << "A chunk of [lowertext(rock.name)] hits you in the head!"
|
||||
|
||||
if(target_type == "mob")
|
||||
for(var/i=0,i<rocks_amt,i++)
|
||||
var/mob/living/hit_loc = pick(targets)
|
||||
var/rock_type = pick(rocks_type)
|
||||
var/obj/item/weapon/ore/rock = new rock_type(hit_loc.loc)
|
||||
if(prob(rocks_hit_chance))
|
||||
hit_loc.take_organ_damage(rand(rocks_min_dmg,rocks_max_dmg))
|
||||
hit_loc << "A chunk of [lowertext(rock.name)] hits you in the head!"
|
||||
|
||||
/obj/effect/trap/single
|
||||
name = "single-target trap"
|
||||
desc = "This trap targets a single movable atom, usually the one who triggered it" //usually as in I will code only those ones. if you want to add a different type of targeting, go ahead.
|
||||
|
||||
/obj/effect/trap/single/rockfalls
|
||||
name = "rock falls trap"
|
||||
desc = "Your DM must really hate <b>YOU</b>."
|
||||
trigger_type = "mob"
|
||||
var/rock_min_dmg = 100 //min damage of the rock
|
||||
var/rock_max_dmg = 200 //max damage of the rock
|
||||
var/rock_hit_chance = 100 //the chance for the rock to hit you
|
||||
var/list/rocks_type = list() //what rocks might it drop on the target. with var editing, not even limited to rocks.
|
||||
|
||||
/obj/effect/trap/single/rockfalls/New()
|
||||
|
||||
..()
|
||||
|
||||
rocks_type = pick_rock_types()
|
||||
|
||||
/obj/effect/trap/single/rockfalls/proc/pick_rock_types() //since we may want subtypes of the trap with completely different rock types, which is best done this way
|
||||
|
||||
var/list/varieties = list()
|
||||
|
||||
varieties = typesof(/obj/item/weapon/ore)
|
||||
varieties -= /obj/item/weapon/ore/diamond //don't want easily available rare ores, hmm?
|
||||
varieties -= /obj/item/weapon/ore/uranium
|
||||
varieties -= /obj/item/weapon/ore/slag //that'd be just stupid
|
||||
|
||||
return varieties
|
||||
|
||||
/obj/effect/trap/single/rockfalls/activate(mob/living/victim)
|
||||
var/rock_type = pick(rocks_type)
|
||||
var/obj/item/weapon/ore/rock = new rock_type(victim:loc)
|
||||
if (istype(victim) && prob(rock_hit_chance))
|
||||
var/dmg = rand(rock_min_dmg,rock_max_dmg)
|
||||
if(istype(victim, /mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = victim
|
||||
var/datum/organ/external/affecting = H.organs["head"]
|
||||
affecting.take_damage(dmg)
|
||||
H.updatehealth()
|
||||
else
|
||||
victim.take_organ_damage(dmg)
|
||||
victim << "A chunk of [lowertext(rock.name)] hits you in the head!"
|
||||
|
||||
/obj/effect/trap/area
|
||||
name = "area trap"
|
||||
desc = "This trap targets all atoms of the target_type in its area"
|
||||
|
||||
/obj/effect/trap/area/proc/pick_targets() //src.loc.loc should be the area
|
||||
|
||||
var/list/targets = list()
|
||||
|
||||
switch(target_type)
|
||||
if("turf")
|
||||
for(var/turf/T in src.loc.loc)
|
||||
if(!T.density || include_dense)
|
||||
targets += T
|
||||
if("mob")
|
||||
for(var/mob/living/M in src.loc.loc)
|
||||
if(!M.density || include_dense)
|
||||
targets += M
|
||||
if("obj")
|
||||
for(var/obj/O in src.loc.loc)
|
||||
if(!O.density || include_dense)
|
||||
targets += O
|
||||
|
||||
return targets
|
||||
@@ -5,7 +5,7 @@
|
||||
user << "<font color='red'> You have <b>BANNED</b> [M]</font>"
|
||||
|
||||
/obj/effect/mine/proc/triggerrad(obj)
|
||||
var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
|
||||
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
|
||||
s.set_up(3, 1, src)
|
||||
s.start()
|
||||
obj:radiation += 50
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
/obj/effect/mine/proc/triggerstun(obj)
|
||||
obj:stunned += 30
|
||||
var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
|
||||
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
|
||||
s.set_up(3, 1, src)
|
||||
s.start()
|
||||
spawn(0)
|
||||
@@ -60,7 +60,7 @@
|
||||
del(src)
|
||||
|
||||
/obj/effect/mine/proc/triggerkick(obj)
|
||||
var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
|
||||
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
|
||||
s.set_up(3, 1, src)
|
||||
s.start()
|
||||
del(obj:client)
|
||||
@@ -129,11 +129,11 @@
|
||||
switch(type)
|
||||
if("feet")
|
||||
if(!H.shoes)
|
||||
affecting = H.organs[pick("l_foot", "r_foot")]
|
||||
affecting = H.get_organ(pick("l_leg", "r_leg"))
|
||||
H.weakened = max(3, H.weakened)
|
||||
if("l_hand", "r_hand")
|
||||
if(!H.gloves)
|
||||
affecting = H.organs[type]
|
||||
affecting = H.get_organ(type)
|
||||
H.stunned = max(3, H.stunned)
|
||||
if(affecting)
|
||||
affecting.take_damage(1, 0)
|
||||
@@ -153,7 +153,7 @@
|
||||
user << "\blue You arm the mousetrap."
|
||||
else
|
||||
icon_state = "mousetrap"
|
||||
if((user.brainloss >= 60 || user.mutations & CLOWN) && prob(50))
|
||||
if((user.brainloss >= 60 || user.mutations & CLUMSY) && prob(50))
|
||||
var/which_hand = "l_hand"
|
||||
if(!user.hand)
|
||||
which_hand = "r_hand"
|
||||
@@ -170,7 +170,7 @@
|
||||
|
||||
/obj/item/weapon/mousetrap/attack_hand(mob/user as mob)
|
||||
if(armed)
|
||||
if((user.brainloss >= 60 || user.mutations & CLOWN) && prob(50))
|
||||
if((user.brainloss >= 60 || user.mutations & CLUMSY) && prob(50))
|
||||
var/which_hand = "l_hand"
|
||||
if(!user.hand)
|
||||
which_hand = "r_hand"
|
||||
|
||||
Reference in New Issue
Block a user