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:
mport2004@gmail.com
2011-10-11 07:52:30 +00:00
parent 59180f83cf
commit 46a7143e3a
138 changed files with 2459 additions and 2361 deletions
+1 -1
View File
@@ -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))
+8 -5
View File
@@ -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()
..()
+1 -1
View File
@@ -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)
+1 -1
View File
@@ -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()
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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)
+93 -93
View File
@@ -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()
+1 -1
View File
@@ -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()
+1 -1
View File
@@ -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
+2 -2
View File
@@ -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
+9 -3
View File
@@ -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)
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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)
+4 -4
View File
@@ -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))
+1 -1
View File
@@ -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)
+4 -4
View File
@@ -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()
+1 -1
View File
@@ -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()
+48
View File
@@ -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)
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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)
+1 -1
View File
@@ -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)
+1 -1
View File
@@ -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()
+1 -1
View File
@@ -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)
+9 -12
View File
@@ -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
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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)
+3 -3
View File
@@ -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)
+3 -3
View File
@@ -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
-225
View File
@@ -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
+7 -7
View File
@@ -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"