mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2026-08-29 08:11:11 +01:00
Merge resolution.
This commit is contained in:
@@ -15,10 +15,16 @@
|
||||
if(can_buckle && istype(M))
|
||||
user_buckle_mob(M, user)
|
||||
|
||||
//Cleanup
|
||||
/obj/Del()
|
||||
unbuckle_mob()
|
||||
return ..()
|
||||
|
||||
/obj/Destroy()
|
||||
unbuckle_mob()
|
||||
return ..()
|
||||
|
||||
|
||||
/obj/proc/buckle_mob(mob/living/M)
|
||||
if(!can_buckle || !istype(M) || (M.loc != loc) || M.buckled || M.pinned.len || (buckle_require_restraints && !M.restrained()))
|
||||
return 0
|
||||
@@ -84,3 +90,4 @@
|
||||
"<span class='notice'>You hear metal clanking.</span>")
|
||||
add_fingerprint(user)
|
||||
return M
|
||||
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
var/turf/T = get_turf(src)
|
||||
T.thermal_conductivity = WALL_HEAT_TRANSFER_COEFFICIENT
|
||||
|
||||
/obj/effect/alien/resin/Del()
|
||||
/obj/effect/alien/resin/Destroy()
|
||||
var/turf/T = get_turf(src)
|
||||
T.thermal_conductivity = initial(T.thermal_conductivity)
|
||||
..()
|
||||
@@ -54,7 +54,7 @@
|
||||
/obj/effect/alien/resin/proc/healthcheck()
|
||||
if(health <=0)
|
||||
density = 0
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
/obj/effect/alien/resin/bullet_act(var/obj/item/projectile/Proj)
|
||||
@@ -174,7 +174,7 @@
|
||||
/obj/effect/alien/weeds/New(pos, node)
|
||||
..()
|
||||
if(istype(loc, /turf/space))
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
linked_node = node
|
||||
if(icon_state == "weeds")icon_state = pick("weeds", "weeds1", "weeds2")
|
||||
@@ -190,7 +190,7 @@
|
||||
if (locate(/obj/movable, U))
|
||||
U = locate(/obj/movable, U)
|
||||
if(U.density == 1)
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
Alien plants should do something if theres a lot of poison
|
||||
@@ -200,7 +200,7 @@ Alien plants should do something if theres a lot of poison
|
||||
return
|
||||
*/
|
||||
if (istype(U, /turf/space))
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
if(!linked_node || (get_dist(linked_node, src) > linked_node.node_range) )
|
||||
@@ -220,19 +220,19 @@ Alien plants should do something if theres a lot of poison
|
||||
if(O.density)
|
||||
continue direction_loop
|
||||
|
||||
new /obj/effect/alien/weeds(T, linked_node)
|
||||
PoolOrNew(/obj/effect/alien/weeds, T, linked_node)
|
||||
|
||||
|
||||
/obj/effect/alien/weeds/ex_act(severity)
|
||||
switch(severity)
|
||||
if(1.0)
|
||||
del(src)
|
||||
qdel(src)
|
||||
if(2.0)
|
||||
if (prob(50))
|
||||
del(src)
|
||||
qdel(src)
|
||||
if(3.0)
|
||||
if (prob(5))
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
/obj/effect/alien/weeds/attackby(var/obj/item/weapon/W, var/mob/user)
|
||||
@@ -255,7 +255,7 @@ Alien plants should do something if theres a lot of poison
|
||||
|
||||
/obj/effect/alien/weeds/proc/healthcheck()
|
||||
if(health <= 0)
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
|
||||
/obj/effect/alien/weeds/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
|
||||
@@ -294,7 +294,7 @@ Alien plants should do something if theres a lot of poison
|
||||
|
||||
/obj/effect/alien/acid/proc/tick()
|
||||
if(!target)
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
ticks += 1
|
||||
|
||||
@@ -307,8 +307,8 @@ Alien plants should do something if theres a lot of poison
|
||||
var/turf/simulated/wall/W = target
|
||||
W.dismantle_wall(1)
|
||||
else
|
||||
del(target)
|
||||
del(src)
|
||||
qdel(target)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
switch(target_strength - ticks)
|
||||
@@ -350,7 +350,7 @@ Alien plants should do something if theres a lot of poison
|
||||
spawn(rand(MIN_GROWTH_TIME,MAX_GROWTH_TIME))
|
||||
Grow()
|
||||
else
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/alien/egg/attack_hand(user as mob)
|
||||
|
||||
@@ -361,7 +361,7 @@ Alien plants should do something if theres a lot of poison
|
||||
switch(status)
|
||||
if(BURST)
|
||||
user << "\red You clear the hatched egg."
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
if(GROWING)
|
||||
user << "\red The child is not developed yet."
|
||||
|
||||
@@ -15,9 +15,9 @@ var/list/obj/effect/bump_teleporter/BUMP_TELEPORTERS = list()
|
||||
..()
|
||||
BUMP_TELEPORTERS += src
|
||||
|
||||
/obj/effect/bump_teleporter/Del()
|
||||
/obj/effect/bump_teleporter/Destroy()
|
||||
BUMP_TELEPORTERS -= src
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/effect/bump_teleporter/Bumped(atom/user)
|
||||
if(!ismob(user))
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
if(seed_name && plant_controller)
|
||||
seed = plant_controller.seeds[seed_name]
|
||||
if(!seed)
|
||||
del(src)
|
||||
qdel(src)
|
||||
..()
|
||||
|
||||
/datum/effect/effect/system/smoke_spread/chem/New()
|
||||
@@ -155,7 +155,7 @@
|
||||
|
||||
|
||||
//build smoke icon
|
||||
var/color = mix_color_from_reagents(chemholder.reagents.reagent_list)
|
||||
var/color = chemholder.reagents.get_color()
|
||||
var/icon/I
|
||||
if(color)
|
||||
I = icon('icons/effects/chemsmoke.dmi')
|
||||
@@ -204,7 +204,7 @@
|
||||
if(passed_smoke)
|
||||
smoke = passed_smoke
|
||||
else
|
||||
smoke = new(location)
|
||||
smoke = PoolOrNew(/obj/effect/effect/smoke/chem, location)
|
||||
|
||||
if(chemholder.reagents.reagent_list.len)
|
||||
chemholder.reagents.copy_to(smoke, chemholder.reagents.total_volume / dist, safety = 1) //copy reagents to the smoke so mob/breathe() can handle inhaling the reagents
|
||||
@@ -218,10 +218,10 @@
|
||||
sleep(150+rand(0,20)) // turning it off before it is deleted results in cleaner
|
||||
smoke.opacity = 0 // lighting and view range updates
|
||||
fadeOut(smoke)
|
||||
smoke.delete()
|
||||
qdel(src)
|
||||
|
||||
/datum/effect/effect/system/smoke_spread/chem/spores/spawnSmoke(var/turf/T, var/icon/I, var/dist = 1)
|
||||
var/obj/effect/effect/smoke/chem/spores = new(location)
|
||||
var/obj/effect/effect/smoke/chem/spores = PoolOrNew(/obj/effect/effect/smoke/chem, location)
|
||||
spores.name = "cloud of [seed.seed_name] [seed.seed_noun]"
|
||||
..(T, I, dist, spores)
|
||||
|
||||
@@ -229,6 +229,10 @@
|
||||
// Fades out the smoke smoothly using it's alpha variable.
|
||||
//------------------------------------------
|
||||
/datum/effect/effect/system/smoke_spread/chem/proc/fadeOut(var/atom/A, var/frames = 16)
|
||||
if(A.alpha == 0) //Handle already transparent case
|
||||
return
|
||||
if(frames == 0)
|
||||
frames = 1 //We will just assume that by 0 frames, the coder meant "during one frame".
|
||||
var/step = A.alpha / frames
|
||||
for(var/i = 0, i < frames, i++)
|
||||
A.alpha -= step
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
if(!has_spread)
|
||||
Spread()
|
||||
else
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
proc/Spread(exclude=list())
|
||||
//Allows liquid fuels to sometimes flow into other tiles.
|
||||
|
||||
@@ -21,10 +21,10 @@ var/global/list/image/splatter_cache=list()
|
||||
var/list/datum/disease2/disease/virus2 = list()
|
||||
var/amount = 5
|
||||
|
||||
/obj/effect/decal/cleanable/blood/Del()
|
||||
/obj/effect/decal/cleanable/blood/Destroy()
|
||||
for(var/datum/disease/D in viruses)
|
||||
D.cure(0)
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/effect/decal/cleanable/blood/New()
|
||||
..()
|
||||
@@ -37,7 +37,7 @@ var/global/list/image/splatter_cache=list()
|
||||
if(B != src)
|
||||
if (B.blood_DNA)
|
||||
blood_DNA |= B.blood_DNA.Copy()
|
||||
del(B)
|
||||
qdel(B)
|
||||
spawn(DRYING_TIME * (amount+1))
|
||||
dry()
|
||||
|
||||
@@ -198,7 +198,7 @@ var/global/list/image/splatter_cache=list()
|
||||
for (var/i = 0, i < pick(1, 200; 2, 150; 3, 50; 4), i++)
|
||||
sleep(3)
|
||||
if (i > 0)
|
||||
var/obj/effect/decal/cleanable/blood/b = new /obj/effect/decal/cleanable/blood/splatter(src.loc)
|
||||
var/obj/effect/decal/cleanable/blood/b = PoolOrNew(/obj/effect/decal/cleanable/blood/splatter, src.loc)
|
||||
b.basecolor = src.basecolor
|
||||
b.update_icon()
|
||||
for(var/datum/disease/D in src.viruses)
|
||||
|
||||
@@ -21,14 +21,14 @@
|
||||
var/turf/simulated/floor/F = get_turf(src)
|
||||
if (istype(F))
|
||||
F.dirt += 4
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/decal/cleanable/greenglow
|
||||
|
||||
New()
|
||||
..()
|
||||
spawn(1200)// 2 minutes
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/decal/cleanable/dirt
|
||||
name = "dirt"
|
||||
@@ -102,7 +102,7 @@
|
||||
random_icon_states = list("vomit_1", "vomit_2", "vomit_3", "vomit_4")
|
||||
var/list/viruses = list()
|
||||
|
||||
Del()
|
||||
Destroy()
|
||||
for(var/datum/disease/D in viruses)
|
||||
D.cure(0)
|
||||
..()
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
/obj/effect/decal/cleanable
|
||||
var/list/random_icon_states = list()
|
||||
var/targeted_by = null // Used so cleanbots can't claim a mess.
|
||||
|
||||
/obj/effect/decal/cleanable/New()
|
||||
if (random_icon_states && length(src.random_icon_states) > 0)
|
||||
|
||||
@@ -72,7 +72,7 @@
|
||||
else
|
||||
P.roll_and_drop(P.loc)
|
||||
|
||||
del(oldsrc) //delete it now to cut down on sanity checks afterwards. Agouri's code supports rerolling it anyway
|
||||
qdel(oldsrc) //delete it now to cut down on sanity checks afterwards. Agouri's code supports rerolling it anyway
|
||||
|
||||
//############################## THE ACTUAL DECALS ###########################
|
||||
|
||||
@@ -125,7 +125,7 @@
|
||||
playsound(loc, 'sound/items/Wirecutter.ogg', 100, 1)
|
||||
if(ruined)
|
||||
user << "<span class='notice'>You remove the remnants of the poster.</span>"
|
||||
del(src)
|
||||
qdel(src)
|
||||
else
|
||||
user << "<span class='notice'>You carefully remove the poster from the wall.</span>"
|
||||
roll_and_drop(user.loc)
|
||||
@@ -154,7 +154,7 @@
|
||||
var/obj/item/weapon/contraband/poster/P = new(src, serial_number)
|
||||
P.loc = newloc
|
||||
src.loc = P
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
/datum/poster
|
||||
// Name suffix. Poster - [name]
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
var/turf/simulated/floor/F = get_turf(src)
|
||||
if (istype(F))
|
||||
new /obj/effect/decal/cleanable/ash(F)
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/decal/remains/robot/attack_hand(mob/user as mob)
|
||||
return
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
/obj/effect/decal/warning_stripes
|
||||
icon = 'icons/effects/warning_stripes.dmi'
|
||||
layer = 2
|
||||
|
||||
/obj/effect/decal/warning_stripes/New()
|
||||
. = ..()
|
||||
|
||||
loc.overlays += src
|
||||
del src
|
||||
/obj/effect/decal/warning_stripes
|
||||
icon = 'icons/effects/warning_stripes.dmi'
|
||||
layer = 2
|
||||
|
||||
/obj/effect/decal/warning_stripes/New()
|
||||
. = ..()
|
||||
var/turf/T=get_turf(src)
|
||||
var/image/I=image(icon, icon_state = icon_state, dir = dir)
|
||||
I.color=color
|
||||
T.overlays += I
|
||||
qdel(src)
|
||||
|
||||
@@ -20,11 +20,10 @@ would spawn and follow the beaker, even if it is carried or thrown.
|
||||
var/life = 15.0
|
||||
mouse_opacity = 0
|
||||
|
||||
/obj/effect/proc/delete()
|
||||
loc = null
|
||||
/obj/effect/Destroy()
|
||||
if(reagents)
|
||||
reagents.delete()
|
||||
return
|
||||
return ..()
|
||||
|
||||
/obj/effect/effect/water/Move(turf/newloc)
|
||||
//var/turf/T = src.loc
|
||||
@@ -32,7 +31,7 @@ would spawn and follow the beaker, even if it is carried or thrown.
|
||||
// T.firelevel = 0 //TODO: FIX
|
||||
if (--src.life < 1)
|
||||
//SN src = null
|
||||
delete()
|
||||
qdel(src)
|
||||
if(newloc.density)
|
||||
return 0
|
||||
.=..()
|
||||
@@ -100,7 +99,7 @@ steam.start() -- spawns the effect
|
||||
spawn(0)
|
||||
if(holder)
|
||||
src.location = get_turf(holder)
|
||||
var/obj/effect/effect/steam/steam = new /obj/effect/effect/steam(src.location)
|
||||
var/obj/effect/effect/steam/steam = PoolOrNew(/obj/effect/effect/steam, src.location)
|
||||
var/direction
|
||||
if(src.cardinals)
|
||||
direction = pick(cardinal)
|
||||
@@ -110,7 +109,7 @@ steam.start() -- spawns the effect
|
||||
sleep(5)
|
||||
step(steam,direction)
|
||||
spawn(20)
|
||||
steam.delete()
|
||||
qdel(steam)
|
||||
|
||||
/////////////////////////////////////////////
|
||||
//SPARK SYSTEM (like steam system)
|
||||
@@ -133,15 +132,14 @@ steam.start() -- spawns the effect
|
||||
if (istype(T, /turf))
|
||||
T.hotspot_expose(1000,100)
|
||||
spawn (100)
|
||||
delete()
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
/obj/effect/effect/sparks/Del()
|
||||
/obj/effect/effect/sparks/Destroy()
|
||||
var/turf/T = src.loc
|
||||
if (istype(T, /turf))
|
||||
T.hotspot_expose(1000,100)
|
||||
..()
|
||||
return
|
||||
return ..()
|
||||
|
||||
/obj/effect/effect/sparks/Move()
|
||||
..()
|
||||
@@ -171,7 +169,7 @@ steam.start() -- spawns the effect
|
||||
spawn(0)
|
||||
if(holder)
|
||||
src.location = get_turf(holder)
|
||||
var/obj/effect/effect/sparks/sparks = new /obj/effect/effect/sparks(src.location)
|
||||
var/obj/effect/effect/sparks/sparks = PoolOrNew(/obj/effect/effect/sparks, src.location)
|
||||
src.total_sparks++
|
||||
var/direction
|
||||
if(src.cardinals)
|
||||
@@ -183,7 +181,7 @@ steam.start() -- spawns the effect
|
||||
step(sparks,direction)
|
||||
spawn(20)
|
||||
if(sparks)
|
||||
sparks.delete()
|
||||
qdel(sparks)
|
||||
src.total_sparks--
|
||||
|
||||
|
||||
@@ -212,7 +210,7 @@ steam.start() -- spawns the effect
|
||||
/obj/effect/effect/smoke/New()
|
||||
..()
|
||||
spawn (time_to_live)
|
||||
delete()
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
/obj/effect/effect/smoke/Crossed(mob/living/carbon/M as mob )
|
||||
@@ -357,7 +355,7 @@ steam.start() -- spawns the effect
|
||||
spawn(0)
|
||||
if(holder)
|
||||
src.location = get_turf(holder)
|
||||
var/obj/effect/effect/smoke/smoke = new smoke_type(src.location)
|
||||
var/obj/effect/effect/smoke/smoke = PoolOrNew(smoke_type, src.location)
|
||||
src.total_smoke++
|
||||
var/direction = src.direction
|
||||
if(!direction)
|
||||
@@ -369,7 +367,7 @@ steam.start() -- spawns the effect
|
||||
sleep(10)
|
||||
step(smoke,direction)
|
||||
spawn(smoke.time_to_live*0.75+rand(10,30))
|
||||
if (smoke) smoke.delete()
|
||||
if (smoke) qdel(smoke)
|
||||
src.total_smoke--
|
||||
|
||||
|
||||
@@ -415,13 +413,13 @@ steam.start() -- spawns the effect
|
||||
var/turf/T = get_turf(src.holder)
|
||||
if(T != src.oldposition)
|
||||
if(istype(T, /turf/space))
|
||||
var/obj/effect/effect/ion_trails/I = new /obj/effect/effect/ion_trails(src.oldposition)
|
||||
var/obj/effect/effect/ion_trails/I = PoolOrNew(/obj/effect/effect/ion_trails, src.oldposition)
|
||||
src.oldposition = T
|
||||
I.set_dir(src.holder.dir)
|
||||
flick("ion_fade", I)
|
||||
I.icon_state = "blank"
|
||||
spawn( 20 )
|
||||
I.delete()
|
||||
qdel(I)
|
||||
spawn(2)
|
||||
if(src.on)
|
||||
src.processing = 1
|
||||
@@ -461,12 +459,12 @@ steam.start() -- spawns the effect
|
||||
src.processing = 0
|
||||
spawn(0)
|
||||
if(src.number < 3)
|
||||
var/obj/effect/effect/steam/I = new /obj/effect/effect/steam(src.oldposition)
|
||||
var/obj/effect/effect/steam/I = PoolOrNew(/obj/effect/effect/steam, src.oldposition)
|
||||
src.number++
|
||||
src.oldposition = get_turf(holder)
|
||||
I.set_dir(src.holder.dir)
|
||||
spawn(10)
|
||||
I.delete()
|
||||
qdel(I)
|
||||
src.number--
|
||||
spawn(2)
|
||||
if(src.on)
|
||||
@@ -515,13 +513,13 @@ steam.start() -- spawns the effect
|
||||
sleep(30)
|
||||
|
||||
if(metal)
|
||||
var/obj/structure/foamedmetal/M = new(src.loc)
|
||||
var/obj/structure/foamedmetal/M = PoolOrNew(/obj/structure/foamedmetal, src.loc)
|
||||
M.metal = metal
|
||||
M.updateicon()
|
||||
|
||||
flick("[icon_state]-disolve", src)
|
||||
sleep(5)
|
||||
delete()
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
// transfer any reagents to the floor
|
||||
@@ -551,7 +549,7 @@ steam.start() -- spawns the effect
|
||||
if(F)
|
||||
continue
|
||||
|
||||
F = new(T, metal)
|
||||
F = PoolOrNew(/obj/effect/effect/foam, list(T, metal))
|
||||
F.amount = amount
|
||||
if(!metal)
|
||||
F.create_reagents(10)
|
||||
@@ -566,7 +564,7 @@ steam.start() -- spawns the effect
|
||||
flick("[icon_state]-disolve", src)
|
||||
|
||||
spawn(5)
|
||||
delete()
|
||||
qdel(src)
|
||||
|
||||
|
||||
/obj/effect/effect/foam/Crossed(var/atom/movable/AM)
|
||||
@@ -611,7 +609,7 @@ steam.start() -- spawns the effect
|
||||
F.amount += amount
|
||||
return
|
||||
|
||||
F = new(src.location, metal)
|
||||
F = PoolOrNew(/obj/effect/effect/foam, list(src.location, metal))
|
||||
F.amount = amount
|
||||
|
||||
if(!metal) // don't carry other chemicals if a metal foam
|
||||
@@ -642,7 +640,7 @@ steam.start() -- spawns the effect
|
||||
|
||||
|
||||
|
||||
Del()
|
||||
Destroy()
|
||||
|
||||
density = 0
|
||||
update_nearby_tiles(1)
|
||||
@@ -656,14 +654,14 @@ steam.start() -- spawns the effect
|
||||
|
||||
|
||||
ex_act(severity)
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
blob_act()
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
bullet_act()
|
||||
if(metal==1 || prob(50))
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
attack_hand(var/mob/user)
|
||||
if ((HULK in user.mutations) || (prob(75 - metal*25)))
|
||||
@@ -672,7 +670,7 @@ steam.start() -- spawns the effect
|
||||
if ((O.client && !( O.blinded )))
|
||||
O << "\red [user] smashes through the foamed metal."
|
||||
|
||||
del(src)
|
||||
qdel(src)
|
||||
else
|
||||
user << "\blue You hit the metal foam but bounce off it."
|
||||
return
|
||||
@@ -686,8 +684,8 @@ steam.start() -- spawns the effect
|
||||
for(var/mob/O in viewers(src))
|
||||
if (O.client)
|
||||
O << "\red [G.assailant] smashes [G.affecting] through the foamed metal wall."
|
||||
del(I)
|
||||
del(src)
|
||||
qdel(I)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
if(prob(I.force*20 - metal*25))
|
||||
@@ -695,7 +693,7 @@ steam.start() -- spawns the effect
|
||||
for(var/mob/O in oviewers(user))
|
||||
if ((O.client && !( O.blinded )))
|
||||
O << "\red [user] smashes through the foamed metal."
|
||||
del(src)
|
||||
qdel(src)
|
||||
else
|
||||
user << "\blue You hit the metal foam to no effect."
|
||||
|
||||
@@ -722,7 +720,7 @@ steam.start() -- spawns the effect
|
||||
|
||||
start()
|
||||
if (amount <= 2)
|
||||
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
|
||||
var/datum/effect/effect/system/spark_spread/s = PoolOrNew(/datum/effect/effect/system/spark_spread)
|
||||
s.set_up(2, 1, location)
|
||||
s.start()
|
||||
|
||||
|
||||
@@ -25,10 +25,10 @@
|
||||
var/obj/effect/decal/cleanable/blood/gibs/gib = null
|
||||
for(var/datum/disease/D in viruses)
|
||||
if(D.spread_type == SPECIAL)
|
||||
del(D)
|
||||
qdel(D)
|
||||
|
||||
if(sparks)
|
||||
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
|
||||
var/datum/effect/effect/system/spark_spread/s = PoolOrNew(/datum/effect/effect/system/spark_spread)
|
||||
s.set_up(2, 1, get_turf(location)) // Not sure if it's safe to pass an arbitrary object to set_up, todo
|
||||
s.start()
|
||||
|
||||
@@ -63,4 +63,4 @@
|
||||
if(directions.len)
|
||||
gib.streak(directions)
|
||||
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
@@ -13,86 +13,77 @@
|
||||
switch(name) //some of these are probably obsolete
|
||||
if("shuttle")
|
||||
shuttle_z = z
|
||||
del(src)
|
||||
|
||||
qdel(src)
|
||||
return
|
||||
if("airtunnel_stop")
|
||||
airtunnel_stop = x
|
||||
|
||||
if("airtunnel_start")
|
||||
airtunnel_start = x
|
||||
|
||||
if("airtunnel_bottom")
|
||||
airtunnel_bottom = y
|
||||
|
||||
if("monkey")
|
||||
monkeystart += loc
|
||||
del(src)
|
||||
|
||||
qdel(src)
|
||||
return
|
||||
if("start")
|
||||
newplayer_start += loc
|
||||
del(src)
|
||||
|
||||
qdel(src)
|
||||
if("JoinLate")
|
||||
latejoin += loc
|
||||
del(src)
|
||||
|
||||
qdel(src)
|
||||
if("JoinLateGateway")
|
||||
latejoin_gateway += loc
|
||||
del(src)
|
||||
|
||||
qdel(src)
|
||||
return
|
||||
if("JoinLateCryo")
|
||||
latejoin_cryo += loc
|
||||
del(src)
|
||||
|
||||
qdel(src)
|
||||
return
|
||||
if("JoinLateCyborg")
|
||||
latejoin_cyborg += loc
|
||||
del(src)
|
||||
|
||||
qdel(src)
|
||||
return
|
||||
if("prisonwarp")
|
||||
prisonwarp += loc
|
||||
del(src)
|
||||
|
||||
qdel(src)
|
||||
return
|
||||
if("Holding Facility")
|
||||
holdingfacility += loc
|
||||
|
||||
if("tdome1")
|
||||
tdome1 += loc
|
||||
|
||||
if("tdome2")
|
||||
tdome2 += loc
|
||||
|
||||
if("tdomeadmin")
|
||||
tdomeadmin += loc
|
||||
|
||||
if("tdomeobserve")
|
||||
tdomeobserve += loc
|
||||
|
||||
if("prisonsecuritywarp")
|
||||
prisonsecuritywarp += loc
|
||||
del(src)
|
||||
|
||||
qdel(src)
|
||||
return
|
||||
if("blobstart")
|
||||
blobstart += loc
|
||||
del(src)
|
||||
|
||||
qdel(src)
|
||||
return
|
||||
if("xeno_spawn")
|
||||
xeno_spawn += loc
|
||||
del(src)
|
||||
|
||||
qdel(src)
|
||||
return
|
||||
if("endgame_exit")
|
||||
endgame_safespawns += loc
|
||||
del(src)
|
||||
|
||||
qdel(src)
|
||||
return
|
||||
if("bluespacerift")
|
||||
endgame_exits += loc
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
landmarks_list += src
|
||||
return 1
|
||||
|
||||
/obj/effect/landmark/Del()
|
||||
/obj/effect/landmark/Destroy()
|
||||
landmarks_list -= src
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/effect/landmark/start
|
||||
name = "start"
|
||||
@@ -112,7 +103,8 @@
|
||||
|
||||
/obj/effect/landmark/start/ninja/New()
|
||||
..()
|
||||
ninjastart += src
|
||||
ninjastart += loc
|
||||
qdel(src)
|
||||
|
||||
//Costume spawner landmarks
|
||||
|
||||
@@ -121,51 +113,51 @@
|
||||
var/list/options = typesof(/obj/effect/landmark/costume)
|
||||
var/PICK= options[rand(1,options.len)]
|
||||
new PICK(src.loc)
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
//SUBCLASSES. Spawn a bunch of items and disappear likewise
|
||||
/obj/effect/landmark/costume/chicken/New()
|
||||
new /obj/item/clothing/suit/chickensuit(src.loc)
|
||||
new /obj/item/clothing/head/chicken(src.loc)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/egg(src.loc)
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/landmark/costume/gladiator/New()
|
||||
new /obj/item/clothing/under/gladiator(src.loc)
|
||||
new /obj/item/clothing/head/helmet/gladiator(src.loc)
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/landmark/costume/madscientist/New()
|
||||
new /obj/item/clothing/under/gimmick/rank/captain/suit(src.loc)
|
||||
new /obj/item/clothing/head/flatcap(src.loc)
|
||||
new /obj/item/clothing/suit/storage/toggle/labcoat/mad(src.loc)
|
||||
new /obj/item/clothing/glasses/gglasses(src.loc)
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/landmark/costume/elpresidente/New()
|
||||
new /obj/item/clothing/under/gimmick/rank/captain/suit(src.loc)
|
||||
new /obj/item/clothing/head/flatcap(src.loc)
|
||||
new /obj/item/clothing/mask/smokable/cigarette/cigar/havana(src.loc)
|
||||
new /obj/item/clothing/shoes/jackboots(src.loc)
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/landmark/costume/nyangirl/New()
|
||||
new /obj/item/clothing/under/schoolgirl(src.loc)
|
||||
new /obj/item/clothing/head/kitty(src.loc)
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/landmark/costume/maid/New()
|
||||
new /obj/item/clothing/under/blackskirt(src.loc)
|
||||
var/CHOICE = pick( /obj/item/clothing/head/beret , /obj/item/clothing/head/rabbitears )
|
||||
new CHOICE(src.loc)
|
||||
new /obj/item/clothing/glasses/sunglasses/blindfold(src.loc)
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/landmark/costume/butler/New()
|
||||
new /obj/item/clothing/suit/wcoat(src.loc)
|
||||
new /obj/item/clothing/under/suit_jacket(src.loc)
|
||||
new /obj/item/clothing/head/that(src.loc)
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/landmark/costume/scratch/New()
|
||||
new /obj/item/clothing/gloves/white(src.loc)
|
||||
@@ -173,12 +165,12 @@
|
||||
new /obj/item/clothing/under/scratch(src.loc)
|
||||
if (prob(30))
|
||||
new /obj/item/clothing/head/cueball(src.loc)
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/landmark/costume/highlander/New()
|
||||
new /obj/item/clothing/under/kilt(src.loc)
|
||||
new /obj/item/clothing/head/beret(src.loc)
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/landmark/costume/prig/New()
|
||||
new /obj/item/clothing/suit/wcoat(src.loc)
|
||||
@@ -189,24 +181,24 @@
|
||||
new /obj/item/weapon/cane(src.loc)
|
||||
new /obj/item/clothing/under/sl_suit(src.loc)
|
||||
new /obj/item/clothing/mask/fakemoustache(src.loc)
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/landmark/costume/plaguedoctor/New()
|
||||
new /obj/item/clothing/suit/bio_suit/plaguedoctorsuit(src.loc)
|
||||
new /obj/item/clothing/head/plaguedoctorhat(src.loc)
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/landmark/costume/nightowl/New()
|
||||
new /obj/item/clothing/under/owl(src.loc)
|
||||
new /obj/item/clothing/mask/gas/owl_mask(src.loc)
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/landmark/costume/waiter/New()
|
||||
new /obj/item/clothing/under/waiter(src.loc)
|
||||
var/CHOICE= pick( /obj/item/clothing/head/kitty, /obj/item/clothing/head/rabbitears)
|
||||
new CHOICE(src.loc)
|
||||
new /obj/item/clothing/suit/apron(src.loc)
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/landmark/costume/pirate/New()
|
||||
new /obj/item/clothing/under/pirate(src.loc)
|
||||
@@ -214,46 +206,46 @@
|
||||
var/CHOICE = pick( /obj/item/clothing/head/pirate , /obj/item/clothing/head/bandana )
|
||||
new CHOICE(src.loc)
|
||||
new /obj/item/clothing/glasses/eyepatch(src.loc)
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/landmark/costume/commie/New()
|
||||
new /obj/item/clothing/under/soviet(src.loc)
|
||||
new /obj/item/clothing/head/ushanka(src.loc)
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/landmark/costume/imperium_monk/New()
|
||||
new /obj/item/clothing/suit/imperium_monk(src.loc)
|
||||
if (prob(25))
|
||||
new /obj/item/clothing/mask/gas/cyborg(src.loc)
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/landmark/costume/holiday_priest/New()
|
||||
new /obj/item/clothing/suit/holidaypriest(src.loc)
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/landmark/costume/marisawizard/fake/New()
|
||||
new /obj/item/clothing/head/wizard/marisa/fake(src.loc)
|
||||
new/obj/item/clothing/suit/wizrobe/marisa/fake(src.loc)
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/landmark/costume/cutewitch/New()
|
||||
new /obj/item/clothing/under/sundress(src.loc)
|
||||
new /obj/item/clothing/head/witchwig(src.loc)
|
||||
new /obj/item/weapon/staff/broom(src.loc)
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/landmark/costume/fakewizard/New()
|
||||
new /obj/item/clothing/suit/wizrobe/fake(src.loc)
|
||||
new /obj/item/clothing/head/wizard/fake(src.loc)
|
||||
new /obj/item/weapon/staff/(src.loc)
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/landmark/costume/sexyclown/New()
|
||||
new /obj/item/clothing/mask/gas/sexyclown(src.loc)
|
||||
new /obj/item/clothing/under/sexyclown(src.loc)
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/landmark/costume/sexymime/New()
|
||||
new /obj/item/clothing/mask/gas/sexymime(src.loc)
|
||||
new /obj/item/clothing/under/sexymime(src.loc)
|
||||
del(src)
|
||||
qdel(src)
|
||||
@@ -17,5 +17,5 @@
|
||||
P.info = dat
|
||||
P.name = "paper- 'Crew Manifest'"
|
||||
//SN src = null
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
@@ -26,24 +26,24 @@
|
||||
call(src,triggerproc)(M)
|
||||
|
||||
/obj/effect/mine/proc/triggerrad(obj)
|
||||
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
|
||||
var/datum/effect/effect/system/spark_spread/s = PoolOrNew(/datum/effect/effect/system/spark_spread)
|
||||
s.set_up(3, 1, src)
|
||||
s.start()
|
||||
obj:radiation += 50
|
||||
randmutb(obj)
|
||||
domutcheck(obj,null)
|
||||
spawn(0)
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/mine/proc/triggerstun(obj)
|
||||
if(ismob(obj))
|
||||
var/mob/M = obj
|
||||
M.Stun(30)
|
||||
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
|
||||
var/datum/effect/effect/system/spark_spread/s = PoolOrNew(/datum/effect/effect/system/spark_spread)
|
||||
s.set_up(3, 1, src)
|
||||
s.start()
|
||||
spawn(0)
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/mine/proc/triggern2o(obj)
|
||||
//example: n2o triggerproc
|
||||
@@ -54,7 +54,7 @@
|
||||
target.assume_gas("sleeping_agent", 30)
|
||||
|
||||
spawn(0)
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/mine/proc/triggerphoron(obj)
|
||||
for (var/turf/simulated/floor/target in range(1,src))
|
||||
@@ -64,20 +64,20 @@
|
||||
target.hotspot_expose(1000, CELL_VOLUME)
|
||||
|
||||
spawn(0)
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/mine/proc/triggerkick(obj)
|
||||
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
|
||||
var/datum/effect/effect/system/spark_spread/s = PoolOrNew(/datum/effect/effect/system/spark_spread)
|
||||
s.set_up(3, 1, src)
|
||||
s.start()
|
||||
del(obj:client)
|
||||
qdel(obj:client)
|
||||
spawn(0)
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/mine/proc/explode(obj)
|
||||
explosion(loc, 0, 1, 2, 3)
|
||||
spawn(0)
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/mine/dnascramble
|
||||
name = "Radiation Mine"
|
||||
|
||||
@@ -3,10 +3,6 @@
|
||||
unacidable = 1
|
||||
var/i_attached//Added for possible image attachments to objects. For hallucinations and the like.
|
||||
|
||||
/obj/effect/overlay/Destroy()
|
||||
PlaceInPool(src)
|
||||
return 1 //cancels the GCing
|
||||
|
||||
/obj/effect/overlay/beam//Not actually a projectile, just an effect.
|
||||
name="beam"
|
||||
icon='icons/effects/beam.dmi'
|
||||
@@ -14,7 +10,7 @@
|
||||
var/tmp/atom/BeamSource
|
||||
New()
|
||||
..()
|
||||
spawn(10) del src
|
||||
spawn(10) qdel(src)
|
||||
|
||||
/obj/effect/overlay/palmtree_r
|
||||
name = "Palm tree"
|
||||
@@ -55,4 +51,4 @@
|
||||
/obj/effect/overlay/wallrot/New()
|
||||
..()
|
||||
pixel_x += rand(-10, 10)
|
||||
pixel_y += rand(-10, 10)
|
||||
pixel_y += rand(-10, 10)
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
|
||||
/obj/effect/portal/New()
|
||||
spawn(300)
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
return
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
if (icon_state == "portal1")
|
||||
return
|
||||
if (!( target ))
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
if (istype(M, /atom/movable))
|
||||
if(prob(failchance)) //oh dear a problem, put em in deep space
|
||||
|
||||
@@ -102,7 +102,7 @@
|
||||
p4.air_contents.temperature = btemp + T0C
|
||||
p2.secured = 1
|
||||
|
||||
del(src)
|
||||
qdel(src)
|
||||
*/
|
||||
|
||||
/obj/effect/spawner/newbomb
|
||||
@@ -168,4 +168,4 @@
|
||||
|
||||
V.update_icon()
|
||||
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
@@ -23,4 +23,4 @@
|
||||
else
|
||||
new /turf/simulated/floor/vault(locate(i,j,z),type)
|
||||
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
@@ -11,20 +11,20 @@
|
||||
/obj/effect/spider/ex_act(severity)
|
||||
switch(severity)
|
||||
if(1.0)
|
||||
del(src)
|
||||
qdel(src)
|
||||
if(2.0)
|
||||
if (prob(50))
|
||||
del(src)
|
||||
qdel(src)
|
||||
if(3.0)
|
||||
if (prob(5))
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
/obj/effect/spider/attackby(var/obj/item/weapon/W, var/mob/user)
|
||||
if(W.attack_verb.len)
|
||||
visible_message("\red <B>\The [src] have been [pick(W.attack_verb)] with \the [W][(user ? " by [user]." : ".")]")
|
||||
visible_message("<span class='warning'>\The [src] have been [pick(W.attack_verb)] with \the [W][(user ? " by [user]." : ".")]</span>")
|
||||
else
|
||||
visible_message("\red <B>\The [src] have been attacked with \the [W][(user ? " by [user]." : ".")]")
|
||||
visible_message("<span class='warning'>\The [src] have been attacked with \the [W][(user ? " by [user]." : ".")]</span>")
|
||||
|
||||
var/damage = W.force / 4.0
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
|
||||
/obj/effect/spider/proc/healthcheck()
|
||||
if(health <= 0)
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/spider/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
|
||||
if(exposed_temperature > 300)
|
||||
@@ -86,7 +86,7 @@
|
||||
var/num = rand(6,24)
|
||||
for(var/i=0, i<num, i++)
|
||||
new /obj/effect/spider/spiderling(src.loc)
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/spider/spiderling
|
||||
name = "spiderling"
|
||||
@@ -114,8 +114,8 @@
|
||||
|
||||
/obj/effect/spider/spiderling/proc/die()
|
||||
visible_message("<span class='alert'>[src] dies!</span>")
|
||||
new /obj/effect/decal/cleanable/spiderling_remains(src.loc)
|
||||
del(src)
|
||||
PoolOrNew(/obj/effect/decal/cleanable/spiderling_remains, src.loc)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/spider/spiderling/healthcheck()
|
||||
if(health <= 0)
|
||||
@@ -188,7 +188,7 @@
|
||||
if(amount_grown >= 100)
|
||||
var/spawn_type = pick(typesof(/mob/living/simple_animal/hostile/giant_spider))
|
||||
new spawn_type(src.loc)
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/decal/cleanable/spiderling_remains
|
||||
name = "spiderling remains"
|
||||
@@ -205,8 +205,8 @@
|
||||
New()
|
||||
icon_state = pick("cocoon1","cocoon2","cocoon3")
|
||||
|
||||
/obj/effect/spider/cocoon/Del()
|
||||
/obj/effect/spider/cocoon/Destroy()
|
||||
src.visible_message("\red \the [src] splits open.")
|
||||
for(var/atom/movable/A in contents)
|
||||
A.loc = src.loc
|
||||
..()
|
||||
return ..()
|
||||
|
||||
@@ -9,13 +9,13 @@ proc/empulse(turf/epicenter, heavy_range, light_range, log=0)
|
||||
log_game("EMP with size ([heavy_range], [light_range]) in area [epicenter.loc.name] ")
|
||||
|
||||
if(heavy_range > 1)
|
||||
var/obj/effect/overlay/pulse = new/obj/effect/overlay ( epicenter )
|
||||
var/obj/effect/overlay/pulse = PoolOrNew(/obj/effect/overlay, epicenter)
|
||||
pulse.icon = 'icons/effects/effects.dmi'
|
||||
pulse.icon_state = "emppulse"
|
||||
pulse.name = "emp pulse"
|
||||
pulse.anchored = 1
|
||||
spawn(20)
|
||||
pulse.delete()
|
||||
qdel(pulse)
|
||||
|
||||
if(heavy_range > light_range)
|
||||
light_range = heavy_range
|
||||
|
||||
@@ -65,7 +65,7 @@ proc/explosion_rec(turf/epicenter, power)
|
||||
var/explosion_resistance
|
||||
|
||||
/turf/space
|
||||
explosion_resistance = 10
|
||||
explosion_resistance = 3
|
||||
|
||||
/turf/simulated/floor
|
||||
explosion_resistance = 1
|
||||
@@ -83,10 +83,10 @@ proc/explosion_rec(turf/epicenter, power)
|
||||
explosion_resistance = 1
|
||||
|
||||
/turf/simulated/shuttle/wall
|
||||
explosion_resistance = 5
|
||||
explosion_resistance = 10
|
||||
|
||||
/turf/simulated/wall
|
||||
explosion_resistance = 5
|
||||
explosion_resistance = 10
|
||||
|
||||
//Code-wise, a safe value for power is something up to ~25 or ~30.. This does quite a bit of damage to the station.
|
||||
//direction is the direction that the spread took to come to this tile. So it is pointing in the main blast direction - meaning where this tile should spread most of it's force.
|
||||
@@ -104,24 +104,16 @@ proc/explosion_rec(turf/epicenter, power)
|
||||
explosion_turfs[src] = power
|
||||
|
||||
var/spread_power = power - src.explosion_resistance //This is the amount of power that will be spread to the tile in the direction of the blast
|
||||
var/side_spread_power = power - 2 * src.explosion_resistance //This is the amount of power that will be spread to the side tiles
|
||||
for(var/obj/O in src)
|
||||
if(O.explosion_resistance)
|
||||
spread_power -= O.explosion_resistance
|
||||
side_spread_power -= O.explosion_resistance
|
||||
|
||||
var/turf/T = get_step(src, direction)
|
||||
T.explosion_spread(spread_power, direction)
|
||||
T = get_step(src, turn(direction,90))
|
||||
T.explosion_spread(side_spread_power, turn(direction,90))
|
||||
T.explosion_spread(spread_power, turn(direction,90))
|
||||
T = get_step(src, turn(direction,-90))
|
||||
T.explosion_spread(side_spread_power, turn(direction,90))
|
||||
|
||||
/*
|
||||
for(var/direction in cardinal)
|
||||
var/turf/T = get_step(src, direction)
|
||||
T.explosion_spread(spread_power)
|
||||
*/
|
||||
T.explosion_spread(spread_power, turn(direction,90))
|
||||
|
||||
/turf/unsimulated/explosion_spread(power)
|
||||
return //So it doesn't get to the parent proc, which simulates explosions
|
||||
+121
-192
@@ -3,7 +3,6 @@
|
||||
icon = 'icons/obj/items.dmi'
|
||||
var/image/blood_overlay = null //this saves our blood splatter overlay, which will be processed not to go over the edges of the sprite
|
||||
var/abstract = 0
|
||||
var/item_state = null
|
||||
var/r_speed = 1.0
|
||||
var/health = null
|
||||
var/burn_point = null
|
||||
@@ -26,7 +25,6 @@
|
||||
|
||||
//Since any item can now be a piece of clothing, this has to be put here so all items share it.
|
||||
var/flags_inv //This flag is used to determine when items in someone's inventory cover others. IE helmets making it so you can't see glasses, etc.
|
||||
var/item_color = null
|
||||
var/body_parts_covered = 0 //see setup.dm for appropriate bit flags
|
||||
//var/heat_transfer_coefficient = 1 //0 prevents all transfers, 1 is invisible
|
||||
var/gas_transfer_coefficient = 1 // for leaking gas from turf to mask and vice-versa (for masks right now, but at some point, i'd like to include space helmets)
|
||||
@@ -40,6 +38,9 @@
|
||||
var/zoomdevicename = null //name used for message when binoculars/scope is used
|
||||
var/zoom = 0 //1 if item is actively being used to zoom. For scoped guns and binoculars.
|
||||
|
||||
var/item_state = null // Used to specify the item state for the on-mob overlays.
|
||||
var/item_state_slots = null //overrides the default item_state for particular slots.
|
||||
|
||||
// Used to specify the icon file to be used when the item is worn. If not set the default icon for that slot will be used.
|
||||
// If icon_override or sprite_sheets are set they will take precendence over this, assuming they apply to the slot in question.
|
||||
// Only slot_l_hand/slot_r_hand are implemented at the moment. Others to be implemented as needed.
|
||||
@@ -60,6 +61,12 @@
|
||||
*/
|
||||
var/list/sprite_sheets_obj = null
|
||||
|
||||
/obj/item/Destroy()
|
||||
if(ismob(loc))
|
||||
var/mob/m = loc
|
||||
m.unEquip(src, 1)
|
||||
return ..()
|
||||
|
||||
/obj/item/device
|
||||
icon = 'icons/obj/device.dmi'
|
||||
|
||||
@@ -75,15 +82,15 @@
|
||||
/obj/item/ex_act(severity)
|
||||
switch(severity)
|
||||
if(1.0)
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
if(2.0)
|
||||
if (prob(50))
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
if(3.0)
|
||||
if (prob(5))
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
else
|
||||
return
|
||||
@@ -147,11 +154,8 @@
|
||||
|
||||
src.throwing = 0
|
||||
if (src.loc == user)
|
||||
//canremove==0 means that object may not be removed. You can still wear it. This only applies to clothing. /N
|
||||
if(!src.canremove)
|
||||
if(!user.unEquip(src))
|
||||
return
|
||||
else
|
||||
user.u_equip(src)
|
||||
else
|
||||
if(isliving(src.loc))
|
||||
return
|
||||
@@ -161,7 +165,6 @@
|
||||
src.pickup(user)
|
||||
return
|
||||
|
||||
|
||||
/obj/item/attack_ai(mob/user as mob)
|
||||
if (istype(src.loc, /obj/item/weapon/robot_module))
|
||||
//If the item is part of a cyborg module, equip it
|
||||
@@ -239,198 +242,124 @@
|
||||
/obj/item/proc/equipped(var/mob/user, var/slot)
|
||||
return
|
||||
|
||||
//Defines which slots correspond to which slot flags
|
||||
var/list/global/slot_flags_enumeration = list(
|
||||
"[slot_wear_mask]" = SLOT_MASK,
|
||||
"[slot_back]" = SLOT_BACK,
|
||||
"[slot_wear_suit]" = SLOT_OCLOTHING,
|
||||
"[slot_gloves]" = SLOT_GLOVES,
|
||||
"[slot_shoes]" = SLOT_FEET,
|
||||
"[slot_belt]" = SLOT_BELT,
|
||||
"[slot_glasses]" = SLOT_EYES,
|
||||
"[slot_head]" = SLOT_HEAD,
|
||||
"[slot_l_ear]" = SLOT_EARS|SLOT_TWOEARS,
|
||||
"[slot_r_ear]" = SLOT_EARS|SLOT_TWOEARS,
|
||||
"[slot_w_uniform]" = SLOT_ICLOTHING,
|
||||
"[slot_wear_id]" = SLOT_ID,
|
||||
"[slot_tie]" = SLOT_TIE,
|
||||
)
|
||||
|
||||
//the mob M is attempting to equip this item into the slot passed through as 'slot'. Return 1 if it can do this and 0 if it can't.
|
||||
//If you are making custom procs but would like to retain partial or complete functionality of this one, include a 'return ..()' to where you want this to happen.
|
||||
//Set disable_warning to 1 if you wish it to not give you outputs.
|
||||
//Should probably move the bulk of this into mob code some time, as most of it is related to the definition of slots and not item-specific
|
||||
/obj/item/proc/mob_can_equip(M as mob, slot, disable_warning = 0)
|
||||
if(!slot) return 0
|
||||
if(!M) return 0
|
||||
|
||||
if(ishuman(M))
|
||||
//START HUMAN
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/list/mob_equip = list()
|
||||
if(H.species.hud && H.species.hud.equip_slots)
|
||||
mob_equip = H.species.hud.equip_slots
|
||||
if(!ishuman(M)) return 0
|
||||
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/list/mob_equip = list()
|
||||
if(H.species.hud && H.species.hud.equip_slots)
|
||||
mob_equip = H.species.hud.equip_slots
|
||||
|
||||
if(H.species && !(slot in mob_equip))
|
||||
if(H.species && !(slot in mob_equip))
|
||||
return 0
|
||||
|
||||
//First check if the item can be equipped to the desired slot.
|
||||
if("[slot]" in slot_flags_enumeration)
|
||||
var/req_flags = slot_flags_enumeration["[slot]"]
|
||||
if(!(req_flags & slot_flags))
|
||||
return 0
|
||||
|
||||
//Next check that the slot is free
|
||||
if(H.get_equipped_item(slot))
|
||||
return 0
|
||||
|
||||
//Next check if the slot is accessible.
|
||||
var/mob/_user = disable_warning? null : H
|
||||
if(!H.slot_is_accessible(slot, src, _user))
|
||||
return 0
|
||||
|
||||
//Lastly, check special rules for the desired slot.
|
||||
switch(slot)
|
||||
if(slot_l_ear, slot_r_ear)
|
||||
var/slot_other_ear = (slot == slot_l_ear)? slot_r_ear : slot_l_ear
|
||||
if( (w_class > 1) && !(slot_flags & SLOT_EARS) )
|
||||
return 0
|
||||
if( (slot_flags & SLOT_TWOEARS) && H.get_equipped_item(slot_other_ear) )
|
||||
return 0
|
||||
if(slot_wear_id)
|
||||
if(!H.w_uniform && (slot_w_uniform in mob_equip))
|
||||
if(!disable_warning)
|
||||
H << "<span class='warning'>You need a jumpsuit before you can attach this [name].</span>"
|
||||
return 0
|
||||
if(slot_l_store, slot_r_store)
|
||||
if(!H.w_uniform && (slot_w_uniform in mob_equip))
|
||||
if(!disable_warning)
|
||||
H << "<span class='warning'>You need a jumpsuit before you can attach this [name].</span>"
|
||||
return 0
|
||||
if(slot_flags & SLOT_DENYPOCKET)
|
||||
return 0
|
||||
if( w_class > 2 && !(slot_flags & SLOT_POCKET) )
|
||||
return 0
|
||||
if(slot_s_store)
|
||||
if(!H.wear_suit && (slot_wear_suit in mob_equip))
|
||||
if(!disable_warning)
|
||||
H << "<span class='warning'>You need a suit before you can attach this [name].</span>"
|
||||
return 0
|
||||
if(!H.wear_suit.allowed)
|
||||
if(!disable_warning)
|
||||
usr << "<span class='warning'>You somehow have a suit with no defined allowed items for suit storage, stop that.</span>"
|
||||
return 0
|
||||
if( !(istype(src, /obj/item/device/pda) || istype(src, /obj/item/weapon/pen) || is_type_in_list(src, H.wear_suit.allowed)) )
|
||||
return 0
|
||||
if(slot_handcuffed)
|
||||
if(!istype(src, /obj/item/weapon/handcuffs))
|
||||
return 0
|
||||
if(slot_legcuffed)
|
||||
if(!istype(src, /obj/item/weapon/legcuffs))
|
||||
return 0
|
||||
if(slot_in_backpack) //used entirely for equipping spawned mobs or at round start
|
||||
var/allow = 0
|
||||
if(H.back && istype(H.back, /obj/item/weapon/storage/backpack))
|
||||
var/obj/item/weapon/storage/backpack/B = H.back
|
||||
if(B.contents.len < B.storage_slots && w_class <= B.max_w_class)
|
||||
allow = 1
|
||||
if(!allow)
|
||||
return 0
|
||||
if(slot_tie)
|
||||
if(!H.w_uniform && (slot_w_uniform in mob_equip))
|
||||
if(!disable_warning)
|
||||
H << "<span class='warning'>You need a jumpsuit before you can attach this [name].</span>"
|
||||
return 0
|
||||
var/obj/item/clothing/under/uniform = H.w_uniform
|
||||
if(uniform.accessories.len && !uniform.can_attach_accessory(src))
|
||||
if (!disable_warning)
|
||||
H << "<span class='warning'>You already have an accessory of this type attached to your [uniform].</span>"
|
||||
return 0
|
||||
return 1
|
||||
|
||||
switch(slot)
|
||||
if(slot_l_hand)
|
||||
if(H.l_hand)
|
||||
return 0
|
||||
return 1
|
||||
if(slot_r_hand)
|
||||
if(H.r_hand)
|
||||
return 0
|
||||
return 1
|
||||
if(slot_wear_mask)
|
||||
if(H.wear_mask)
|
||||
return 0
|
||||
if(H.head && !(H.head.canremove) && (H.head.flags & HEADCOVERSMOUTH))
|
||||
if(!disable_warning)
|
||||
H << "<span class='warning'>\The [H.head] is in the way.</span>"
|
||||
return 0
|
||||
if( !(slot_flags & SLOT_MASK) )
|
||||
return 0
|
||||
return 1
|
||||
if(slot_back)
|
||||
if(H.back)
|
||||
return 0
|
||||
if( !(slot_flags & SLOT_BACK) )
|
||||
return 0
|
||||
return 1
|
||||
if(slot_wear_suit)
|
||||
if(H.wear_suit)
|
||||
return 0
|
||||
if( !(slot_flags & SLOT_OCLOTHING) )
|
||||
return 0
|
||||
return 1
|
||||
if(slot_gloves)
|
||||
if(H.gloves)
|
||||
return 0
|
||||
if( !(slot_flags & SLOT_GLOVES) )
|
||||
return 0
|
||||
return 1
|
||||
if(slot_shoes)
|
||||
if(H.shoes)
|
||||
return 0
|
||||
if( !(slot_flags & SLOT_FEET) )
|
||||
return 0
|
||||
return 1
|
||||
if(slot_belt)
|
||||
if(H.belt)
|
||||
return 0
|
||||
if(!H.w_uniform && (slot_w_uniform in mob_equip))
|
||||
if(!disable_warning)
|
||||
H << "<span class='warning'>You need a jumpsuit before you can attach this [name].</span>"
|
||||
return 0
|
||||
if( !(slot_flags & SLOT_BELT) )
|
||||
return
|
||||
return 1
|
||||
if(slot_glasses)
|
||||
if(H.glasses)
|
||||
return 0
|
||||
if(H.head && !(H.head.canremove) && (H.head.flags & HEADCOVERSEYES))
|
||||
if(!disable_warning)
|
||||
H << "<span class='warning'>\The [H.head] is in the way.</span>"
|
||||
return 0
|
||||
if( !(slot_flags & SLOT_EYES) )
|
||||
return 0
|
||||
return 1
|
||||
if(slot_head)
|
||||
if(H.head)
|
||||
return 0
|
||||
if( !(slot_flags & SLOT_HEAD) )
|
||||
return 0
|
||||
return 1
|
||||
if(slot_l_ear)
|
||||
if(H.l_ear)
|
||||
return 0
|
||||
if( (w_class > 1) && !(slot_flags & SLOT_EARS) )
|
||||
return 0
|
||||
if( (slot_flags & SLOT_TWOEARS) && H.r_ear )
|
||||
return 0
|
||||
return 1
|
||||
if(slot_r_ear)
|
||||
if(H.r_ear)
|
||||
return 0
|
||||
if( (w_class > 1) && !(slot_flags & SLOT_EARS) )
|
||||
return 0
|
||||
if( (slot_flags & SLOT_TWOEARS) && H.l_ear )
|
||||
return 0
|
||||
return 1
|
||||
if(slot_w_uniform)
|
||||
if(H.w_uniform)
|
||||
return 0
|
||||
if(H.wear_suit && (H.wear_suit.body_parts_covered & src.body_parts_covered))
|
||||
if(!disable_warning)
|
||||
H << "<span class='warning'>\The [H.wear_suit] is in the way.</span>"
|
||||
return 0
|
||||
if( !(slot_flags & SLOT_ICLOTHING) )
|
||||
return 0
|
||||
return 1
|
||||
if(slot_wear_id)
|
||||
if(H.wear_id)
|
||||
return 0
|
||||
if(!H.w_uniform && (slot_w_uniform in mob_equip))
|
||||
if(!disable_warning)
|
||||
H << "<span class='warning'>You need a jumpsuit before you can attach this [name].</span>"
|
||||
return 0
|
||||
if( !(slot_flags & SLOT_ID) )
|
||||
return 0
|
||||
return 1
|
||||
if(slot_l_store)
|
||||
if(H.l_store)
|
||||
return 0
|
||||
if(!H.w_uniform && (slot_w_uniform in mob_equip))
|
||||
if(!disable_warning)
|
||||
H << "<span class='warning'>You need a jumpsuit before you can attach this [name].</span>"
|
||||
return 0
|
||||
if(slot_flags & SLOT_DENYPOCKET)
|
||||
return 0
|
||||
if( w_class <= 2 || (slot_flags & SLOT_POCKET) )
|
||||
return 1
|
||||
if(slot_r_store)
|
||||
if(H.r_store)
|
||||
return 0
|
||||
if(!H.w_uniform && (slot_w_uniform in mob_equip))
|
||||
if(!disable_warning)
|
||||
H << "<span class='warning'>You need a jumpsuit before you can attach this [name].</span>"
|
||||
return 0
|
||||
if(slot_flags & SLOT_DENYPOCKET)
|
||||
return 0
|
||||
if( w_class <= 2 || (slot_flags & SLOT_POCKET) )
|
||||
return 1
|
||||
return 0
|
||||
if(slot_s_store)
|
||||
if(H.s_store)
|
||||
return 0
|
||||
if(!H.wear_suit && (slot_wear_suit in mob_equip))
|
||||
if(!disable_warning)
|
||||
H << "<span class='warning'>You need a suit before you can attach this [name].</span>"
|
||||
return 0
|
||||
if(!H.wear_suit.allowed)
|
||||
if(!disable_warning)
|
||||
usr << "<span class='warning'>You somehow have a suit with no defined allowed items for suit storage, stop that.</span>"
|
||||
return 0
|
||||
if( istype(src, /obj/item/device/pda) || istype(src, /obj/item/weapon/pen) || is_type_in_list(src, H.wear_suit.allowed) )
|
||||
return 1
|
||||
return 0
|
||||
if(slot_handcuffed)
|
||||
if(H.handcuffed)
|
||||
return 0
|
||||
if(!istype(src, /obj/item/weapon/handcuffs))
|
||||
return 0
|
||||
return 1
|
||||
if(slot_legcuffed)
|
||||
if(H.legcuffed)
|
||||
return 0
|
||||
if(!istype(src, /obj/item/weapon/legcuffs))
|
||||
return 0
|
||||
return 1
|
||||
if(slot_in_backpack)
|
||||
if (H.back && istype(H.back, /obj/item/weapon/storage/backpack))
|
||||
var/obj/item/weapon/storage/backpack/B = H.back
|
||||
if(B.contents.len < B.storage_slots && w_class <= B.max_w_class)
|
||||
return 1
|
||||
return 0
|
||||
if(slot_tie)
|
||||
if(!H.w_uniform && (slot_w_uniform in mob_equip))
|
||||
if(!disable_warning)
|
||||
H << "<span class='warning'>You need a jumpsuit before you can attach this [name].</span>"
|
||||
return 0
|
||||
var/obj/item/clothing/under/uniform = H.w_uniform
|
||||
if(uniform.accessories.len && !uniform.can_attach_accessory(src))
|
||||
if (!disable_warning)
|
||||
H << "<span class='warning'>You already have an accessory of this type attached to your [uniform].</span>"
|
||||
return 0
|
||||
if( !(slot_flags & SLOT_TIE) )
|
||||
return 0
|
||||
return 1
|
||||
return 0 //Unsupported slot
|
||||
//END HUMAN
|
||||
/obj/item/proc/mob_can_unequip(mob/M, slot, disable_warning = 0)
|
||||
if(!slot) return 0
|
||||
if(!M) return 0
|
||||
|
||||
if(!canremove)
|
||||
return 0
|
||||
if(!M.slot_is_accessible(slot, src, disable_warning? null : M))
|
||||
return 0
|
||||
return 1
|
||||
|
||||
/obj/item/verb/verb_pickup()
|
||||
set src in oview(1)
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
..()
|
||||
if (istype(W, /obj/item/weapon/wrench))
|
||||
new /obj/item/stack/sheet/metal( get_turf(src.loc), 2 )
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/apc_frame/proc/try_build(turf/on_wall)
|
||||
if (get_dist(on_wall,usr)>1)
|
||||
@@ -38,6 +38,6 @@
|
||||
var/obj/item/stack/cable_coil/C = new /obj/item/stack/cable_coil(loc)
|
||||
C.amount = 10
|
||||
usr << "You cut the cables and disassemble the unused power terminal."
|
||||
del(T)
|
||||
qdel(T)
|
||||
new /obj/machinery/power/apc(loc, ndir, 1)
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
processing_objects.Remove(cig)
|
||||
var/obj/item/butt = new cig.type_butt(src)
|
||||
cig.transfer_fingerprints_to(butt)
|
||||
del(cig)
|
||||
qdel(cig)
|
||||
W = butt
|
||||
else if (cig.lit == 0)
|
||||
user << "You place [cig] in [src] without even smoking it. Why would you do that?"
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
attack_self(mob/user)
|
||||
var/obj/structure/closet/body_bag/R = new /obj/structure/closet/body_bag(user.loc)
|
||||
R.add_fingerprint(user)
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
|
||||
/obj/item/weapon/storage/box/bodybags
|
||||
@@ -83,7 +83,7 @@
|
||||
visible_message("[usr] folds up the [src.name]")
|
||||
new item_path(get_turf(src))
|
||||
spawn(0)
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
/obj/structure/closet/body_bag/update_icon()
|
||||
@@ -105,7 +105,7 @@
|
||||
attack_self(mob/user)
|
||||
var/obj/structure/closet/body_bag/cryobag/R = new /obj/structure/closet/body_bag/cryobag(user.loc)
|
||||
R.add_fingerprint(user)
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
|
||||
|
||||
@@ -126,7 +126,7 @@
|
||||
O.icon = src.icon
|
||||
O.icon_state = "bodybag_used"
|
||||
O.desc = "Pretty useless now.."
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/structure/closet/body_bag/cryobag/MouseDrop(over_object, src_location, over_location)
|
||||
if((over_object == usr && (in_range(src, usr) || usr.contents.Find(src))))
|
||||
|
||||
@@ -1,40 +1,40 @@
|
||||
/obj/item/toy/crayon/red
|
||||
/obj/item/weapon/pen/crayon/red
|
||||
icon_state = "crayonred"
|
||||
colour = "#DA0000"
|
||||
shadeColour = "#810C0C"
|
||||
colourName = "red"
|
||||
|
||||
/obj/item/toy/crayon/orange
|
||||
/obj/item/weapon/pen/crayon/orange
|
||||
icon_state = "crayonorange"
|
||||
colour = "#FF9300"
|
||||
shadeColour = "#A55403"
|
||||
colourName = "orange"
|
||||
|
||||
/obj/item/toy/crayon/yellow
|
||||
/obj/item/weapon/pen/crayon/yellow
|
||||
icon_state = "crayonyellow"
|
||||
colour = "#FFF200"
|
||||
shadeColour = "#886422"
|
||||
colourName = "yellow"
|
||||
|
||||
/obj/item/toy/crayon/green
|
||||
/obj/item/weapon/pen/crayon/green
|
||||
icon_state = "crayongreen"
|
||||
colour = "#A8E61D"
|
||||
shadeColour = "#61840F"
|
||||
colourName = "green"
|
||||
|
||||
/obj/item/toy/crayon/blue
|
||||
/obj/item/weapon/pen/crayon/blue
|
||||
icon_state = "crayonblue"
|
||||
colour = "#00B7EF"
|
||||
shadeColour = "#0082A8"
|
||||
colourName = "blue"
|
||||
|
||||
/obj/item/toy/crayon/purple
|
||||
/obj/item/weapon/pen/crayon/purple
|
||||
icon_state = "crayonpurple"
|
||||
colour = "#DA00FF"
|
||||
shadeColour = "#810CFF"
|
||||
colourName = "purple"
|
||||
|
||||
/obj/item/toy/crayon/mime
|
||||
/obj/item/weapon/pen/crayon/mime
|
||||
icon_state = "crayonmime"
|
||||
desc = "A very sad-looking crayon."
|
||||
colour = "#FFFFFF"
|
||||
@@ -42,7 +42,7 @@
|
||||
colourName = "mime"
|
||||
uses = 0
|
||||
|
||||
/obj/item/toy/crayon/mime/attack_self(mob/living/user as mob) //inversion
|
||||
/obj/item/weapon/pen/crayon/mime/attack_self(mob/living/user as mob) //inversion
|
||||
if(colour != "#FFFFFF" && shadeColour != "#000000")
|
||||
colour = "#FFFFFF"
|
||||
shadeColour = "#000000"
|
||||
@@ -53,19 +53,19 @@
|
||||
user << "You will now draw in black and white with this crayon."
|
||||
return
|
||||
|
||||
/obj/item/toy/crayon/rainbow
|
||||
/obj/item/weapon/pen/crayon/rainbow
|
||||
icon_state = "crayonrainbow"
|
||||
colour = "#FFF000"
|
||||
shadeColour = "#000FFF"
|
||||
colourName = "rainbow"
|
||||
uses = 0
|
||||
|
||||
/obj/item/toy/crayon/rainbow/attack_self(mob/living/user as mob)
|
||||
/obj/item/weapon/pen/crayon/rainbow/attack_self(mob/living/user as mob)
|
||||
colour = input(user, "Please select the main colour.", "Crayon colour") as color
|
||||
shadeColour = input(user, "Please select the shade colour.", "Crayon colour") as color
|
||||
return
|
||||
|
||||
/obj/item/toy/crayon/afterattack(atom/target, mob/user as mob, proximity)
|
||||
/obj/item/weapon/pen/crayon/afterattack(atom/target, mob/user as mob, proximity)
|
||||
if(!proximity) return
|
||||
if(istype(target,/turf/simulated/floor))
|
||||
var/drawtype = input("Choose what you'd like to draw.", "Crayon scribbles") in list("graffiti","rune","letter")
|
||||
@@ -85,10 +85,10 @@
|
||||
uses--
|
||||
if(!uses)
|
||||
user << "\red You used up your crayon!"
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
/obj/item/toy/crayon/attack(mob/M as mob, mob/user as mob)
|
||||
/obj/item/weapon/pen/crayon/attack(mob/M as mob, mob/user as mob)
|
||||
if(M == user)
|
||||
user << "You take a bite of the crayon and swallow it."
|
||||
user.nutrition += 1
|
||||
@@ -97,6 +97,6 @@
|
||||
uses -= 5
|
||||
if(uses <= 0)
|
||||
user << "\red You ate your crayon!"
|
||||
del(src)
|
||||
qdel(src)
|
||||
else
|
||||
..()
|
||||
|
||||
@@ -938,7 +938,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
j = prob(10)
|
||||
|
||||
if(j) //This kills the PDA
|
||||
P.Del()
|
||||
qdel(P)
|
||||
if(message)
|
||||
message += "It melts in a puddle of plastic."
|
||||
else
|
||||
@@ -1240,7 +1240,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
if ( !(C:blood_DNA) )
|
||||
user << "\blue No blood found on [C]"
|
||||
if(C:blood_DNA)
|
||||
del(C:blood_DNA)
|
||||
qdel(C:blood_DNA)
|
||||
else
|
||||
user << "\blue Blood found on [C]. Analysing..."
|
||||
spawn(15)
|
||||
@@ -1370,7 +1370,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
explosion(T, 0, 0, 1, rand(1,2))
|
||||
return
|
||||
|
||||
/obj/item/device/pda/Del()
|
||||
/obj/item/device/pda/Destroy()
|
||||
PDAs -= src
|
||||
if (src.id && prob(90)) //IDs are kept in 90% of the cases
|
||||
src.id.loc = get_turf(src.loc)
|
||||
|
||||
@@ -58,10 +58,9 @@
|
||||
icon_state = "cart-s"
|
||||
access_security = 1
|
||||
|
||||
/obj/item/weapon/cartridge/security/New()
|
||||
/obj/item/weapon/cartridge/security/initialize()
|
||||
radio = new /obj/item/radio/integrated/beepsky(src)
|
||||
..()
|
||||
spawn(5)
|
||||
radio = new /obj/item/radio/integrated/beepsky(src)
|
||||
|
||||
/obj/item/weapon/cartridge/detective
|
||||
name = "\improper D.E.T.E.C.T. cartridge"
|
||||
@@ -102,6 +101,7 @@
|
||||
/obj/item/weapon/cartridge/signal
|
||||
name = "generic signaler cartridge"
|
||||
desc = "A data cartridge with an integrated radio signaler module."
|
||||
var/qdeled = 0
|
||||
|
||||
/obj/item/weapon/cartridge/signal/science
|
||||
name = "\improper Signal Ace 2 cartridge"
|
||||
@@ -110,12 +110,13 @@
|
||||
access_reagent_scanner = 1
|
||||
access_atmos = 1
|
||||
|
||||
/obj/item/weapon/cartridge/signal/New()
|
||||
/obj/item/weapon/cartridge/signal/initialize()
|
||||
radio = new /obj/item/radio/integrated/signal(src)
|
||||
..()
|
||||
|
||||
/obj/item/weapon/cartridge/signal/Destroy()
|
||||
qdel(radio)
|
||||
..()
|
||||
spawn(5)
|
||||
radio = new /obj/item/radio/integrated/signal(src)
|
||||
|
||||
|
||||
|
||||
/obj/item/weapon/cartridge/quartermaster
|
||||
name = "\improper Space Parts & Space Vendors cartridge"
|
||||
@@ -123,10 +124,9 @@
|
||||
icon_state = "cart-q"
|
||||
access_quartermaster = 1
|
||||
|
||||
/obj/item/weapon/cartridge/quartermaster/New()
|
||||
/obj/item/weapon/cartridge/quartermaster/initialize()
|
||||
radio = new /obj/item/radio/integrated/mule(src)
|
||||
..()
|
||||
spawn(5)
|
||||
radio = new /obj/item/radio/integrated/mule(src)
|
||||
|
||||
/obj/item/weapon/cartridge/head
|
||||
name = "\improper Easy-Record DELUXE"
|
||||
@@ -141,10 +141,8 @@
|
||||
access_janitor = 1
|
||||
access_security = 1
|
||||
|
||||
/obj/item/weapon/cartridge/hop/New()
|
||||
..()
|
||||
spawn(5)
|
||||
radio = new /obj/item/radio/integrated/mule(src)
|
||||
/obj/item/weapon/cartridge/hop/initialize()
|
||||
radio = new /obj/item/radio/integrated/mule(src)
|
||||
|
||||
/obj/item/weapon/cartridge/hos
|
||||
name = "\improper R.O.B.U.S.T. DELUXE"
|
||||
@@ -152,10 +150,9 @@
|
||||
access_status_display = 1
|
||||
access_security = 1
|
||||
|
||||
/obj/item/weapon/cartridge/hos/New()
|
||||
/obj/item/weapon/cartridge/hos/initialize()
|
||||
radio = new /obj/item/radio/integrated/beepsky(src)
|
||||
..()
|
||||
spawn(5)
|
||||
radio = new /obj/item/radio/integrated/beepsky(src)
|
||||
|
||||
/obj/item/weapon/cartridge/ce
|
||||
name = "\improper Power-On DELUXE"
|
||||
@@ -178,10 +175,9 @@
|
||||
access_reagent_scanner = 1
|
||||
access_atmos = 1
|
||||
|
||||
/obj/item/weapon/cartridge/rd/New()
|
||||
/obj/item/weapon/cartridge/rd/initialize()
|
||||
radio = new /obj/item/radio/integrated/signal(src)
|
||||
..()
|
||||
spawn(5)
|
||||
radio = new /obj/item/radio/integrated/signal(src)
|
||||
|
||||
/obj/item/weapon/cartridge/captain
|
||||
name = "\improper Value-PAK cartridge"
|
||||
@@ -331,7 +327,7 @@
|
||||
beepskyData["botstatus"] = list("loca" = null, "mode" = -1)
|
||||
var/botsCount=0
|
||||
if(SC.botlist && SC.botlist.len)
|
||||
for(var/obj/machinery/bot/B in SC.botlist)
|
||||
for(var/mob/living/bot/B in SC.botlist)
|
||||
botsCount++
|
||||
if(B.loc)
|
||||
botsData[++botsData.len] = list("Name" = sanitize(B.name), "Location" = sanitize(B.loc.loc.name), "ref" = "\ref[B]")
|
||||
@@ -465,7 +461,7 @@
|
||||
BucketData[++BucketData.len] = list("x" = 0, "y" = 0, dir=null, status = null)
|
||||
|
||||
var/CbotData[0]
|
||||
for(var/obj/machinery/bot/cleanbot/B in world)
|
||||
for(var/mob/living/bot/cleanbot/B in world)
|
||||
var/turf/bl = get_turf(B)
|
||||
if(bl)
|
||||
if(bl.z != cl.z)
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
|
||||
/obj/item/radio/integrated/beepsky
|
||||
var/list/botlist = null // list of bots
|
||||
var/obj/machinery/bot/secbot/active // the active bot; if null, show bot list
|
||||
var/mob/living/bot/secbot/active // the active bot; if null, show bot list
|
||||
var/list/botstatus // the status signal sent by the bot
|
||||
|
||||
var/control_freq = AI_FREQ
|
||||
@@ -99,6 +99,12 @@
|
||||
post_signal(control_freq, "command", "summon", "active", active, "target", get_turf(PDA) , s_filter = RADIO_SECBOT)
|
||||
post_signal(control_freq, "command", "bot_status", "active", active, s_filter = RADIO_SECBOT)
|
||||
|
||||
|
||||
/obj/item/radio/integrated/beepsky/Destroy()
|
||||
if(radio_controller)
|
||||
radio_controller.remove_object(src, control_freq)
|
||||
..()
|
||||
|
||||
/obj/item/radio/integrated/mule
|
||||
var/list/botlist = null // list of bots
|
||||
var/obj/machinery/bot/mulebot/active // the active bot; if null, show bot list
|
||||
@@ -211,12 +217,10 @@
|
||||
var/last_transmission
|
||||
var/datum/radio_frequency/radio_connection
|
||||
|
||||
New()
|
||||
..()
|
||||
if(radio_controller)
|
||||
initialize()
|
||||
|
||||
initialize()
|
||||
if(!radio_controller)
|
||||
return
|
||||
|
||||
if (src.frequency < 1441 || src.frequency > 1489)
|
||||
src.frequency = sanitize_frequency(src.frequency)
|
||||
|
||||
@@ -245,3 +249,8 @@
|
||||
radio_connection.post_signal(src, signal)
|
||||
|
||||
return
|
||||
|
||||
/obj/item/radio/integrated/signal/Destroy()
|
||||
if(radio_controller)
|
||||
radio_controller.remove_object(src, frequency)
|
||||
..()
|
||||
|
||||
@@ -41,25 +41,25 @@
|
||||
if(active_dummy)
|
||||
eject_all()
|
||||
playsound(get_turf(src), 'sound/effects/pop.ogg', 100, 1, -6)
|
||||
del(active_dummy)
|
||||
qdel(active_dummy)
|
||||
active_dummy = null
|
||||
usr << "\blue You deactivate the [src]."
|
||||
var/obj/effect/overlay/T = new/obj/effect/overlay(get_turf(src))
|
||||
var/obj/effect/overlay/T = PoolOrNew(/obj/effect/overlay, get_turf(src))
|
||||
T.icon = 'icons/effects/effects.dmi'
|
||||
flick("emppulse",T)
|
||||
spawn(8) T.delete()
|
||||
spawn(8) qdel(T)
|
||||
else
|
||||
playsound(get_turf(src), 'sound/effects/pop.ogg', 100, 1, -6)
|
||||
var/obj/O = new saved_item(src)
|
||||
if(!O) return
|
||||
var/obj/effect/dummy/chameleon/C = new/obj/effect/dummy/chameleon(usr.loc)
|
||||
var/obj/effect/dummy/chameleon/C = PoolOrNew(/obj/effect/dummy/chameleon, usr.loc)
|
||||
C.activate(O, usr, saved_icon, saved_icon_state, saved_overlays, src)
|
||||
del(O)
|
||||
qdel(O)
|
||||
usr << "\blue You activate the [src]."
|
||||
var/obj/effect/overlay/T = new/obj/effect/overlay(get_turf(src))
|
||||
T.icon = 'icons/effects/effects.dmi'
|
||||
flick("emppulse",T)
|
||||
spawn(8) T.delete()
|
||||
spawn(8) qdel(T)
|
||||
|
||||
/obj/item/device/chameleon/proc/disrupt(var/delete_dummy = 1)
|
||||
if(active_dummy)
|
||||
@@ -69,7 +69,7 @@
|
||||
spark_system.start()
|
||||
eject_all()
|
||||
if(delete_dummy)
|
||||
del(active_dummy)
|
||||
qdel(active_dummy)
|
||||
active_dummy = null
|
||||
can_use = 0
|
||||
spawn(50) can_use = 1
|
||||
@@ -140,6 +140,6 @@
|
||||
step(src, direction)
|
||||
return
|
||||
|
||||
/obj/effect/dummy/chameleon/Del()
|
||||
/obj/effect/dummy/chameleon/Destroy()
|
||||
master.disrupt(0)
|
||||
..()
|
||||
|
||||
@@ -103,7 +103,7 @@
|
||||
animation.master = user
|
||||
flick("blspell", animation)
|
||||
sleep(5)
|
||||
del(animation)
|
||||
qdel(animation)
|
||||
|
||||
if(!flashfail)
|
||||
flick("flash2", src)
|
||||
@@ -154,7 +154,7 @@
|
||||
animation.master = user
|
||||
flick("blspell", animation)
|
||||
sleep(5)
|
||||
del(animation)
|
||||
qdel(animation)
|
||||
|
||||
for(var/mob/living/carbon/M in oviewers(3, null))
|
||||
if(prob(50))
|
||||
|
||||
@@ -90,7 +90,7 @@
|
||||
AddUses(1)
|
||||
user << "You insert the [L.name] into the [src.name]. You have [uses] lights remaining."
|
||||
user.drop_item()
|
||||
del(L)
|
||||
qdel(L)
|
||||
return
|
||||
else
|
||||
user << "You need a working light."
|
||||
@@ -156,7 +156,7 @@
|
||||
target.brightness = L2.brightness
|
||||
target.on = target.has_power()
|
||||
target.update()
|
||||
del(L2)
|
||||
qdel(L2)
|
||||
|
||||
if(target.on && target.rigged)
|
||||
target.explode()
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
if(!parts)
|
||||
user << "<span class='warning'>This kit has no parts for this modification left.</span>"
|
||||
user.drop_from_inventory(src)
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
var/allowed = 0
|
||||
@@ -60,7 +60,7 @@
|
||||
|
||||
if(!parts)
|
||||
user.drop_from_inventory(src)
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/device/modkit/examine(mob/user)
|
||||
..(user)
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
..()
|
||||
overlays += "pai-off"
|
||||
|
||||
/obj/item/device/paicard/Del()
|
||||
/obj/item/device/paicard/Destroy()
|
||||
//Will stop people throwing friend pAIs into the singularity so they can respawn
|
||||
if(!isnull(pai))
|
||||
pai.death(0)
|
||||
@@ -311,7 +311,7 @@
|
||||
if(pai)
|
||||
pai.ex_act(severity)
|
||||
else
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/device/paicard/see_emote(mob/living/M, text)
|
||||
if(pai && pai.client)
|
||||
|
||||
@@ -14,108 +14,114 @@
|
||||
matter = list("steel" = 750,"waste" = 750)
|
||||
|
||||
origin_tech = "powerstorage=3;syndicate=5"
|
||||
var/drain_rate = 1000000 // amount of power to drain per tick
|
||||
var/dissipation_rate = 20000
|
||||
var/power_drained = 0 // has drained this much power
|
||||
var/max_power = 5e9 // maximum power that can be drained before exploding
|
||||
var/mode = 0 // 0 = off, 1=clamped (off), 2=operating
|
||||
|
||||
var/drain_rate = 1500000 // amount of power to drain per tick
|
||||
var/apc_drain_rate = 5000 // Max. amount drained from single APC. In Watts.
|
||||
var/dissipation_rate = 20000 // Passive dissipation of drained power. In Watts.
|
||||
var/power_drained = 0 // Amount of power drained.
|
||||
var/max_power = 5e9 // Detonation point.
|
||||
var/mode = 0 // 0 = off, 1=clamped (off), 2=operating
|
||||
var/drained_this_tick = 0 // This is unfortunately necessary to ensure we process powersinks BEFORE other machinery such as APCs.
|
||||
|
||||
var/datum/powernet/PN // Our powernet
|
||||
var/obj/structure/cable/attached // the attached cable
|
||||
|
||||
attackby(var/obj/item/I, var/mob/user)
|
||||
if(istype(I, /obj/item/weapon/screwdriver))
|
||||
if(mode == 0)
|
||||
var/turf/T = loc
|
||||
if(isturf(T) && !T.intact)
|
||||
attached = locate() in T
|
||||
if(!attached)
|
||||
user << "No exposed cable here to attach to."
|
||||
return
|
||||
else
|
||||
anchored = 1
|
||||
mode = 1
|
||||
user << "You attach the device to the cable."
|
||||
for(var/mob/M in viewers(user))
|
||||
if(M == user) continue
|
||||
M << "[user] attaches the power sink to the cable."
|
||||
return
|
||||
/obj/item/device/powersink/Destroy()
|
||||
processing_objects.Remove(src)
|
||||
..()
|
||||
|
||||
/obj/item/device/powersink/attackby(var/obj/item/I, var/mob/user)
|
||||
if(istype(I, /obj/item/weapon/screwdriver))
|
||||
if(mode == 0)
|
||||
var/turf/T = loc
|
||||
if(isturf(T) && !T.intact)
|
||||
attached = locate() in T
|
||||
if(!attached)
|
||||
user << "No exposed cable here to attach to."
|
||||
return
|
||||
else
|
||||
user << "Device must be placed over an exposed cable to attach to it."
|
||||
anchored = 1
|
||||
mode = 1
|
||||
src.visible_message("<span class='notice'>[user] attaches [src] to the cable!</span>")
|
||||
return
|
||||
else
|
||||
if (mode == 2)
|
||||
processing_objects.Remove(src) // Now the power sink actually stops draining the station's power if you unhook it. --NeoFite
|
||||
anchored = 0
|
||||
mode = 0
|
||||
user << "You detach the device from the cable."
|
||||
for(var/mob/M in viewers(user))
|
||||
if(M == user) continue
|
||||
M << "[user] detaches the power sink from the cable."
|
||||
SetLuminosity(0)
|
||||
icon_state = "powersink0"
|
||||
|
||||
user << "Device must be placed over an exposed cable to attach to it."
|
||||
return
|
||||
else
|
||||
..()
|
||||
if (mode == 2)
|
||||
processing_objects.Remove(src) // Now the power sink actually stops draining the station's power if you unhook it. --NeoFite
|
||||
anchored = 0
|
||||
mode = 0
|
||||
src.visible_message("<span class='notice'>[user] detaches [src] from the cable!</span>")
|
||||
SetLuminosity(0)
|
||||
icon_state = "powersink0"
|
||||
|
||||
attack_ai()
|
||||
return
|
||||
else
|
||||
..()
|
||||
|
||||
/obj/item/device/powersink/attack_ai()
|
||||
return
|
||||
|
||||
/obj/item/device/powersink/attack_hand(var/mob/user)
|
||||
switch(mode)
|
||||
if(0)
|
||||
..()
|
||||
if(1)
|
||||
src.visible_message("<span class='notice'>[user] activates [src]!</span>")
|
||||
mode = 2
|
||||
icon_state = "powersink1"
|
||||
processing_objects.Add(src)
|
||||
if(2) //This switch option wasn't originally included. It exists now. --NeoFite
|
||||
src.visible_message("<span class='notice'>[user] deactivates [src]!</span>")
|
||||
mode = 1
|
||||
SetLuminosity(0)
|
||||
icon_state = "powersink0"
|
||||
processing_objects.Remove(src)
|
||||
|
||||
/obj/item/device/powersink/proc/drain()
|
||||
if(!attached)
|
||||
return
|
||||
|
||||
attack_hand(var/mob/user)
|
||||
switch(mode)
|
||||
if(0)
|
||||
..()
|
||||
if(drained_this_tick)
|
||||
return
|
||||
drained_this_tick = 1
|
||||
|
||||
if(1)
|
||||
user << "You activate the device!"
|
||||
for(var/mob/M in viewers(user))
|
||||
if(M == user) continue
|
||||
M << "[user] activates the power sink!"
|
||||
mode = 2
|
||||
icon_state = "powersink1"
|
||||
processing_objects.Add(src)
|
||||
var/drained = 0
|
||||
|
||||
if(2) //This switch option wasn't originally included. It exists now. --NeoFite
|
||||
user << "You deactivate the device!"
|
||||
for(var/mob/M in viewers(user))
|
||||
if(M == user) continue
|
||||
M << "[user] deactivates the power sink!"
|
||||
mode = 1
|
||||
SetLuminosity(0)
|
||||
icon_state = "powersink0"
|
||||
processing_objects.Remove(src)
|
||||
if(!PN)
|
||||
return
|
||||
|
||||
process()
|
||||
power_drained -= min(dissipation_rate, power_drained)
|
||||
if(attached)
|
||||
var/datum/powernet/PN = attached.get_powernet()
|
||||
if(PN)
|
||||
SetLuminosity(12)
|
||||
PN.trigger_warning()
|
||||
// found a powernet, so drain up to max power from it
|
||||
var/drained = PN.draw_power(drain_rate)
|
||||
|
||||
// if tried to drain more than available on powernet
|
||||
// now look for APCs and drain their cells
|
||||
if(drained < drain_rate)
|
||||
for(var/obj/machinery/power/terminal/T in PN.nodes)
|
||||
// Enough power drained this tick, no need to torture more APCs
|
||||
if(drained >= drain_rate)
|
||||
break
|
||||
if(istype(T.master, /obj/machinery/power/apc))
|
||||
var/obj/machinery/power/apc/A = T.master
|
||||
if(A.operating && A.cell)
|
||||
var/cur_charge = A.cell.charge / CELLRATE
|
||||
var/drain_val = min(2000, cur_charge)
|
||||
|
||||
A.cell.use(drain_val * CELLRATE)
|
||||
drained += drain_val
|
||||
SetLuminosity(12)
|
||||
PN.trigger_warning()
|
||||
// found a powernet, so drain up to max power from it
|
||||
drained = PN.draw_power(drain_rate)
|
||||
// if tried to drain more than available on powernet
|
||||
// now look for APCs and drain their cells
|
||||
if(drained < drain_rate)
|
||||
for(var/obj/machinery/power/terminal/T in PN.nodes)
|
||||
// Enough power drained this tick, no need to torture more APCs
|
||||
if(drained >= drain_rate)
|
||||
break
|
||||
if(istype(T.master, /obj/machinery/power/apc))
|
||||
var/obj/machinery/power/apc/A = T.master
|
||||
if(A.operating && A.cell)
|
||||
var/cur_charge = A.cell.charge / CELLRATE
|
||||
var/drain_val = min(apc_drain_rate, cur_charge)
|
||||
A.cell.use(drain_val * CELLRATE)
|
||||
drained += drain_val
|
||||
power_drained += drained
|
||||
|
||||
|
||||
if(power_drained > max_power * 0.95)
|
||||
playsound(src, 'sound/effects/screech.ogg', 100, 1, 1)
|
||||
if(power_drained >= max_power)
|
||||
processing_objects.Remove(src)
|
||||
explosion(src.loc, 3,6,9,12)
|
||||
del(src)
|
||||
/obj/item/device/powersink/process()
|
||||
drained_this_tick = 0
|
||||
power_drained -= min(dissipation_rate, power_drained)
|
||||
if(power_drained > max_power * 0.95)
|
||||
playsound(src, 'sound/effects/screech.ogg', 100, 1, 1)
|
||||
if(power_drained >= max_power)
|
||||
explosion(src.loc, 3,6,9,12)
|
||||
qdel(src)
|
||||
return
|
||||
if(attached && attached.powernet)
|
||||
PN = attached.powernet
|
||||
else
|
||||
PN = null
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
/obj/item/device/radio/beacon/bacon //Probably a better way of doing this, I'm lazy.
|
||||
proc/digest_delay()
|
||||
spawn(600)
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
|
||||
// SINGULO BEACON SPAWNER
|
||||
@@ -45,5 +45,5 @@
|
||||
user << "\blue Locked In"
|
||||
new /obj/machinery/power/singularity_beacon/syndicate( user.loc )
|
||||
playsound(src, 'sound/effects/pop.ogg', 100, 1, 1)
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
@@ -26,6 +26,13 @@
|
||||
keyslot2 = new ks2type(src)
|
||||
recalculateChannels(1)
|
||||
|
||||
/obj/item/device/radio/headset/Destroy()
|
||||
qdel(keyslot1)
|
||||
qdel(keyslot2)
|
||||
keyslot1 = null
|
||||
keyslot2 = null
|
||||
..()
|
||||
|
||||
/obj/item/device/radio/headset/examine(mob/user)
|
||||
if(!(..(user, 1) && radio_desc))
|
||||
return
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
..()
|
||||
processing_objects += src
|
||||
|
||||
/obj/item/device/radio/intercom/Del()
|
||||
/obj/item/device/radio/intercom/Destroy()
|
||||
processing_objects -= src
|
||||
..()
|
||||
|
||||
|
||||
@@ -42,8 +42,15 @@
|
||||
/obj/item/device/radio/New()
|
||||
..()
|
||||
wires = new(src)
|
||||
|
||||
/obj/item/device/radio/Destroy()
|
||||
qdel(wires)
|
||||
wires = null
|
||||
if(radio_controller)
|
||||
initialize()
|
||||
radio_controller.remove_object(src, frequency)
|
||||
for (var/ch_name in channels)
|
||||
radio_controller.remove_object(src, radiochannels[ch_name])
|
||||
..()
|
||||
|
||||
|
||||
/obj/item/device/radio/initialize()
|
||||
@@ -172,7 +179,7 @@
|
||||
0, "*garbled automated announcement*", src,
|
||||
message, from, "Automated Announcement", from, "synthesized voice",
|
||||
4, 0, list(0), connection.frequency, "states")
|
||||
del(A)
|
||||
qdel(A)
|
||||
return
|
||||
|
||||
// Interprets the message mode when talking into a radio, possibly returning a connection datum
|
||||
@@ -625,7 +632,6 @@
|
||||
onclose(user, "radio")
|
||||
return
|
||||
|
||||
|
||||
/obj/item/device/radio/proc/config(op)
|
||||
if(radio_controller)
|
||||
for (var/ch_name in channels)
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
if(T)
|
||||
T.hotspot_expose(700,125)
|
||||
explosion(T, -1, -1, 0, 4)
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
/obj/item/device/taperecorder/verb/record()
|
||||
|
||||
@@ -64,7 +64,7 @@ datum/nano_item_lists
|
||||
|
||||
world_uplinks += src
|
||||
|
||||
/obj/item/device/uplink/Del()
|
||||
/obj/item/device/uplink/Destroy()
|
||||
world_uplinks -= src
|
||||
..()
|
||||
|
||||
@@ -180,7 +180,7 @@ datum/nano_item_lists
|
||||
/obj/item/device/uplink/hidden/New()
|
||||
spawn(2)
|
||||
if(!istype(src.loc, /obj/item))
|
||||
del(src)
|
||||
qdel(src)
|
||||
..()
|
||||
|
||||
// Toggles the uplink on and off. Normally this will bypass the item's normal functions and go to the uplink menu, if activated.
|
||||
|
||||
@@ -30,10 +30,10 @@
|
||||
burst()
|
||||
switch(severity)
|
||||
if (1)
|
||||
del(src)
|
||||
qdel(src)
|
||||
if (2)
|
||||
if (prob(50))
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/latexballon/bullet_act()
|
||||
burst()
|
||||
|
||||
@@ -134,7 +134,7 @@
|
||||
if (user.get_inactive_hand()==src)
|
||||
user.remove_from_mob(src)
|
||||
user.put_in_inactive_hand(B)
|
||||
del(src)
|
||||
qdel(src)
|
||||
else
|
||||
user << "<span class='warning'>You need one sheet of metal to arm the robot frame.</span>"
|
||||
if(istype(W, /obj/item/robot_parts/l_leg))
|
||||
@@ -250,7 +250,7 @@
|
||||
callHook("borgify", list(O))
|
||||
O.Namepick()
|
||||
|
||||
del(src)
|
||||
qdel(src)
|
||||
else
|
||||
user << "\blue The MMI must go in after everything else!"
|
||||
|
||||
@@ -303,8 +303,8 @@
|
||||
user << "\blue You install some manipulators and modify the head, creating a functional spider-bot!"
|
||||
new /mob/living/simple_animal/spiderbot(get_turf(loc))
|
||||
user.drop_item()
|
||||
del(W)
|
||||
del(src)
|
||||
qdel(W)
|
||||
qdel(src)
|
||||
return
|
||||
return
|
||||
|
||||
|
||||
@@ -28,20 +28,14 @@
|
||||
/obj/item/borg/upgrade/reset/action(var/mob/living/silicon/robot/R)
|
||||
if(..()) return 0
|
||||
R.uneq_all()
|
||||
R.hands.icon_state = "nomod"
|
||||
R.icon_state = "robot"
|
||||
//world << R.custom_sprite
|
||||
if(R.custom_sprite == 1)
|
||||
//world << R.icon_state
|
||||
icon = 'icons/mob/custom-synthetic.dmi'
|
||||
R.icon_state = "[R.ckey]-Standard"
|
||||
del(R.module)
|
||||
R.modtype = initial(R.modtype)
|
||||
R.hands.icon_state = initial(R.hands.icon_state)
|
||||
|
||||
R.choose_icon(1, R.set_module_sprites(list("Default" = "robot")))
|
||||
|
||||
R.notify_ai(ROBOT_NOTIFICATION_MODULE_RESET, R.module.name)
|
||||
R.module = null
|
||||
R.camera.remove_networks(list("Engineering","Medical","MINE"))
|
||||
R.module.Reset(R)
|
||||
R.updatename("Default")
|
||||
R.status_flags |= CANPUSH
|
||||
R.updateicon()
|
||||
|
||||
return 1
|
||||
|
||||
@@ -116,7 +110,7 @@
|
||||
/obj/item/borg/upgrade/tasercooler/action(var/mob/living/silicon/robot/R)
|
||||
if(..()) return 0
|
||||
|
||||
if(!istype(R.module, /obj/item/weapon/robot_module/security))
|
||||
if(!R.module || !(src in R.module.supported_upgrades))
|
||||
R << "Upgrade mounting error! No suitable hardpoint detected!"
|
||||
usr << "There's no mounting point for the module!"
|
||||
return 0
|
||||
@@ -150,7 +144,7 @@
|
||||
/obj/item/borg/upgrade/jetpack/action(var/mob/living/silicon/robot/R)
|
||||
if(..()) return 0
|
||||
|
||||
if(!istype(R.module, /obj/item/weapon/robot_module/miner))
|
||||
if(!R.module || !(src in R.module.supported_upgrades))
|
||||
R << "Upgrade mounting error! No suitable hardpoint detected!"
|
||||
usr << "There's no mounting point for the module!"
|
||||
return 0
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
var/icon/virtualIcon
|
||||
var/list/bulletholes = list()
|
||||
|
||||
Del()
|
||||
Destroy()
|
||||
// if a target is deleted and associated with a stake, force stake to forget
|
||||
for(var/obj/structure/target_stake/T in view(3,src))
|
||||
if(T.pinned_target == src)
|
||||
@@ -97,7 +97,7 @@
|
||||
for(var/mob/O in oviewers())
|
||||
if ((O.client && !( O.blinded )))
|
||||
O << "\red [src] breaks into tiny pieces and collapses!"
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
// Create a temporary object to represent the damage
|
||||
var/obj/bmark = new
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
new/obj/item/stack/sheet/glass(user.loc)
|
||||
if(amount <= 0)
|
||||
user.drop_from_inventory(src)
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
if(istype(O,/obj/item/stack/sheet/metal))
|
||||
var/obj/item/stack/sheet/metal/M = O
|
||||
|
||||
@@ -29,12 +29,12 @@
|
||||
src.amount = amount
|
||||
return
|
||||
|
||||
/obj/item/stack/Del()
|
||||
/obj/item/stack/Destroy()
|
||||
if(uses_charge)
|
||||
return
|
||||
return 1
|
||||
if (src && usr && usr.machine == src)
|
||||
usr << browse(null, "window=stack")
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/item/stack/examine(mob/user)
|
||||
if(..(user, 1))
|
||||
@@ -139,7 +139,7 @@
|
||||
|
||||
if (istype(O, /obj/item/weapon/storage)) //BubbleWrap - so newly formed boxes are empty
|
||||
for (var/obj/item/I in O)
|
||||
del(I)
|
||||
qdel(I)
|
||||
|
||||
/obj/item/stack/Topic(href, href_list)
|
||||
..()
|
||||
@@ -150,7 +150,7 @@
|
||||
list_recipes(usr, text2num(href_list["sublist"]))
|
||||
|
||||
if (href_list["make"])
|
||||
if (src.get_amount() < 1) del(src) //Never should happen
|
||||
if (src.get_amount() < 1) qdel(src) //Never should happen
|
||||
|
||||
var/list/recipes_list = recipes
|
||||
if (href_list["sublist"])
|
||||
@@ -187,7 +187,7 @@
|
||||
if (amount <= 0) //check again in case someone transferred stuff to us
|
||||
if(usr)
|
||||
usr.remove_from_mob(src)
|
||||
del(src)
|
||||
qdel(src)
|
||||
return 1
|
||||
else
|
||||
if(get_amount() < used)
|
||||
|
||||
@@ -33,4 +33,4 @@
|
||||
new/obj/item/stack/light_w(user.loc)
|
||||
if(amount <= 0)
|
||||
user.drop_from_inventory(src)
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
@@ -8,7 +8,6 @@
|
||||
* Toy swords
|
||||
* Toy bosun's whistle
|
||||
* Toy mechs
|
||||
* Crayons
|
||||
* Snap pops
|
||||
* Water flower
|
||||
* Therapy dolls
|
||||
@@ -63,7 +62,7 @@
|
||||
if(O.reagents.has_reagent("pacid", 1))
|
||||
user << "The acid chews through the balloon!"
|
||||
O.reagents.reaction(user)
|
||||
del(src)
|
||||
qdel(src)
|
||||
else
|
||||
src.desc = "A translucent balloon with some form of liquid sloshing around in it."
|
||||
user << "\blue You fill the balloon with the contents of [O]."
|
||||
@@ -80,7 +79,7 @@
|
||||
src.icon_state = "burst"
|
||||
spawn(5)
|
||||
if(src)
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
/obj/item/toy/balloon/update_icon()
|
||||
@@ -233,7 +232,7 @@
|
||||
if(istype(I, /obj/item/toy/ammo/crossbow))
|
||||
if(bullets <= 4)
|
||||
user.drop_item()
|
||||
del(I)
|
||||
qdel(I)
|
||||
bullets++
|
||||
user << "\blue You load the foam dart into the crossbow."
|
||||
else
|
||||
@@ -265,21 +264,21 @@
|
||||
for(var/mob/O in viewers(world.view, D))
|
||||
O.show_message(text("\red [] was hit by the foam dart!", M), 1)
|
||||
new /obj/item/toy/ammo/crossbow(M.loc)
|
||||
del(D)
|
||||
qdel(D)
|
||||
return
|
||||
|
||||
for(var/atom/A in D.loc)
|
||||
if(A == user) continue
|
||||
if(A.density)
|
||||
new /obj/item/toy/ammo/crossbow(A.loc)
|
||||
del(D)
|
||||
qdel(D)
|
||||
|
||||
sleep(1)
|
||||
|
||||
spawn(10)
|
||||
if(D)
|
||||
new /obj/item/toy/ammo/crossbow(D.loc)
|
||||
del(D)
|
||||
qdel(D)
|
||||
|
||||
return
|
||||
else if (bullets == 0)
|
||||
@@ -375,31 +374,6 @@
|
||||
w_class = 3
|
||||
attack_verb = list("attacked", "slashed", "stabbed", "sliced")
|
||||
|
||||
/*
|
||||
* Crayons
|
||||
*/
|
||||
|
||||
/obj/item/toy/crayon
|
||||
name = "crayon"
|
||||
desc = "A colourful crayon. Please refrain from eating it or putting it in your nose."
|
||||
icon = 'icons/obj/crayons.dmi'
|
||||
icon_state = "crayonred"
|
||||
w_class = 1.0
|
||||
attack_verb = list("attacked", "coloured")
|
||||
var/colour = "#FF0000" //RGB
|
||||
var/shadeColour = "#220000" //RGB
|
||||
var/uses = 30 //0 for unlimited uses
|
||||
var/instant = 0
|
||||
var/colourName = "red" //for updateIcon purposes
|
||||
|
||||
suicide_act(mob/user)
|
||||
viewers(user) << "\red <b>[user] is jamming the [src.name] up \his nose and into \his brain. It looks like \he's trying to commit suicide.</b>"
|
||||
return (BRUTELOSS|OXYLOSS)
|
||||
|
||||
New()
|
||||
name = "[colourName] crayon"
|
||||
..()
|
||||
|
||||
/*
|
||||
* Snap pops
|
||||
*/
|
||||
@@ -418,7 +392,7 @@
|
||||
new /obj/effect/decal/cleanable/ash(src.loc)
|
||||
src.visible_message("\red The [src.name] explodes!","\red You hear a snap!")
|
||||
playsound(src, 'sound/effects/snap.ogg', 50, 1)
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/toy/snappop/Crossed(H as mob|obj)
|
||||
if((ishuman(H))) //i guess carp and shit shouldn't set them off
|
||||
@@ -432,7 +406,7 @@
|
||||
new /obj/effect/decal/cleanable/ash(src.loc)
|
||||
src.visible_message("\red The [src.name] explodes!","\red You hear a snap!")
|
||||
playsound(src, 'sound/effects/snap.ogg', 50, 1)
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
/*
|
||||
* Water flower
|
||||
@@ -494,7 +468,7 @@
|
||||
if(ismob(T) && T:client)
|
||||
T:client << "\red [user] has sprayed you with water!"
|
||||
sleep(4)
|
||||
del(D)
|
||||
qdel(D)
|
||||
|
||||
return
|
||||
|
||||
|
||||
@@ -40,6 +40,11 @@
|
||||
spark_system.set_up(5, 0, src)
|
||||
spark_system.attach(src)
|
||||
|
||||
/obj/item/weapon/rcd/Destroy()
|
||||
qdel(spark_system)
|
||||
spark_system = null
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/rcd/attackby(obj/item/weapon/W, mob/user)
|
||||
|
||||
if(istype(W, /obj/item/weapon/rcd_ammo))
|
||||
@@ -47,7 +52,7 @@
|
||||
user << "<span class='notice'>The RCD can't hold any more matter-units.</span>"
|
||||
return
|
||||
user.drop_from_inventory(W)
|
||||
del(W)
|
||||
qdel(W)
|
||||
stored_matter += 10
|
||||
playsound(src.loc, 'sound/machines/click.ogg', 50, 1)
|
||||
user << "<span class='notice'>The RCD now holds [stored_matter]/30 matter-units.</span>"
|
||||
@@ -139,7 +144,7 @@
|
||||
else if(build_other)
|
||||
new build_other(T)
|
||||
else
|
||||
del(T)
|
||||
qdel(T)
|
||||
|
||||
playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
|
||||
return 1
|
||||
|
||||
@@ -28,7 +28,7 @@ RSF
|
||||
user << "The RSF can't hold any more matter."
|
||||
return
|
||||
|
||||
del(W)
|
||||
qdel(W)
|
||||
|
||||
stored_matter += 10
|
||||
playsound(src.loc, 'sound/machines/click.ogg', 10, 1)
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
else
|
||||
D.organ_names += ", [O.name]"
|
||||
|
||||
del D.organs_scanned[O.name]
|
||||
qdel(D.organs_scanned[O.name])
|
||||
D.organs_scanned[O.name] = W.copy()
|
||||
|
||||
for(var/V in O.trace_chemicals)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/obj/item/weapon/flame/candle
|
||||
name = "red candle"
|
||||
desc = "a candle"
|
||||
desc = "a small pillar candle. Its specially-formulated fuel-oxidizer wax mixture allows continued combustion in airless environments."
|
||||
icon = 'icons/obj/candle.dmi'
|
||||
icon_state = "candle1"
|
||||
item_state = "candle1"
|
||||
@@ -8,6 +8,10 @@
|
||||
|
||||
var/wax = 2000
|
||||
|
||||
/obj/item/weapon/flame/candle/New()
|
||||
wax = rand(800, 1000) // Enough for 27-33 minutes. 30 minutes on average.
|
||||
..()
|
||||
|
||||
/obj/item/weapon/flame/candle/update_icon()
|
||||
var/i
|
||||
if(wax > 1500)
|
||||
@@ -56,7 +60,7 @@
|
||||
new/obj/item/trash/candle(src.loc)
|
||||
if(istype(src.loc, /mob))
|
||||
src.dropped()
|
||||
del(src)
|
||||
qdel(src)
|
||||
update_icon()
|
||||
if(istype(loc, /turf)) //start a fire if possible
|
||||
var/turf/T = loc
|
||||
@@ -80,4 +84,4 @@
|
||||
/obj/item/weapon/flame/candle/dropped(mob/user)
|
||||
if(lit)
|
||||
user.SetLuminosity(user.luminosity - CANDLE_LUM)
|
||||
SetLuminosity(CANDLE_LUM)
|
||||
SetLuminosity(CANDLE_LUM)
|
||||
@@ -92,12 +92,12 @@
|
||||
/obj/machinery/shield_gen,
|
||||
/obj/machinery/clonepod,
|
||||
/obj/machinery/deployable,
|
||||
/obj/machinery/door_control,
|
||||
/obj/machinery/button/remote,
|
||||
/obj/machinery/porta_turret,
|
||||
/obj/machinery/shieldgen,
|
||||
/obj/machinery/turretid,
|
||||
/obj/machinery/vending,
|
||||
/obj/machinery/bot,
|
||||
/mob/living/bot,
|
||||
/obj/machinery/door,
|
||||
/obj/machinery/telecomms,
|
||||
/obj/machinery/mecha_part_fabricator,
|
||||
@@ -118,7 +118,7 @@
|
||||
user.drop_item()
|
||||
var/obj/item/weapon/card/emag_broken/junk = new(user.loc)
|
||||
junk.add_fingerprint(user)
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
..()
|
||||
@@ -170,7 +170,7 @@
|
||||
src.desc = W.desc
|
||||
src.icon = W.icon
|
||||
src.icon_state = W.icon_state
|
||||
del(W)
|
||||
qdel(W)
|
||||
return
|
||||
|
||||
/obj/item/weapon/card/id/verb/read()
|
||||
@@ -293,3 +293,11 @@
|
||||
New()
|
||||
access = get_all_centcom_access()
|
||||
..()
|
||||
|
||||
/obj/item/weapon/card/id/centcom/ERT
|
||||
name = "\improper Emergency Response Team ID"
|
||||
assignment = "Emergency Response Team"
|
||||
|
||||
/obj/item/weapon/card/id/centcom/ERT/New()
|
||||
..()
|
||||
access += get_all_accesses()
|
||||
|
||||
@@ -93,9 +93,9 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
flags |= NOREACT // so it doesn't react until you light it
|
||||
create_reagents(chem_volume) // making the cigarrete a chemical holder with a maximum volume of 15
|
||||
|
||||
/obj/item/clothing/mask/smokable/Del()
|
||||
/obj/item/clothing/mask/smokable/Destroy()
|
||||
..()
|
||||
del(reagents)
|
||||
qdel(reagents)
|
||||
|
||||
/obj/item/clothing/mask/smokable/process()
|
||||
var/turf/location = get_turf(src)
|
||||
@@ -127,13 +127,13 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
var/datum/effect/effect/system/reagents_explosion/e = new()
|
||||
e.set_up(round(reagents.get_reagent_amount("phoron") / 2.5, 1), get_turf(src), 0, 0)
|
||||
e.start()
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
if(reagents.get_reagent_amount("fuel")) // the fuel explodes, too, but much less violently
|
||||
var/datum/effect/effect/system/reagents_explosion/e = new()
|
||||
e.set_up(round(reagents.get_reagent_amount("fuel") / 5, 1), get_turf(src), 0, 0)
|
||||
e.start()
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
flags &= ~NOREACT // allowing reagents to react after being lit
|
||||
reagents.handle_reactions()
|
||||
@@ -162,7 +162,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
M.update_inv_l_hand(0)
|
||||
M.update_inv_r_hand(1)
|
||||
processing_objects.Remove(src)
|
||||
del(src)
|
||||
qdel(src)
|
||||
else
|
||||
new /obj/effect/decal/cleanable/ash(T)
|
||||
if(ismob(loc))
|
||||
@@ -377,7 +377,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
if(G.reagents)
|
||||
G.reagents.trans_to(src, G.reagents.total_volume)
|
||||
name = "[G.name]-packed [initial(name)]"
|
||||
del(G)
|
||||
qdel(G)
|
||||
|
||||
else if(istype(W, /obj/item/weapon/flame/lighter))
|
||||
var/obj/item/weapon/flame/lighter/L = W
|
||||
|
||||
@@ -57,9 +57,17 @@
|
||||
name = T_BOARD("employment records console")
|
||||
build_path = /obj/machinery/computer/skills
|
||||
|
||||
/obj/item/weapon/circuitboard/stationalert
|
||||
name = T_BOARD("station alert console")
|
||||
/obj/item/weapon/circuitboard/stationalert_engineering
|
||||
name = T_BOARD("station alert console (engineering)")
|
||||
build_path = /obj/machinery/computer/station_alert
|
||||
|
||||
/obj/item/weapon/circuitboard/stationalert_security
|
||||
name = T_BOARD("station alert console (security)")
|
||||
build_path = /obj/machinery/computer/station_alert
|
||||
|
||||
/obj/item/weapon/circuitboard/stationalert_all
|
||||
name = T_BOARD("station alert console (all)")
|
||||
build_path = /obj/machinery/computer/station_alert/all
|
||||
|
||||
/obj/item/weapon/circuitboard/atmos_alert
|
||||
name = T_BOARD("atmospheric alert console")
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
user << "<span class='notice'>You need to take that [target.name] off before cleaning it.</span>"
|
||||
else if(istype(target,/obj/effect/decal/cleanable))
|
||||
user << "<span class='notice'>You scrub \the [target.name] out.</span>"
|
||||
del(target)
|
||||
qdel(target)
|
||||
else if(istype(target,/turf))
|
||||
user << "<span class='notice'>You scrub \the [target.name] clean.</span>"
|
||||
var/turf/T = target
|
||||
|
||||
@@ -92,7 +92,7 @@
|
||||
spawn(0)//this prevents the collapse of space-time continuum
|
||||
if (user)
|
||||
user.drop_from_inventory(src)
|
||||
del(src)
|
||||
qdel(src)
|
||||
return uses
|
||||
|
||||
/obj/item/weapon/dnainjector/attack(mob/M as mob, mob/user as mob)
|
||||
|
||||
@@ -80,7 +80,7 @@
|
||||
target.ex_act(1)
|
||||
if(target)
|
||||
target.overlays -= image_overlay
|
||||
del(src) // qdel
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/plastique/attack(mob/M as mob, mob/user as mob, def_zone)
|
||||
return
|
||||
|
||||
@@ -115,7 +115,7 @@
|
||||
|
||||
for(var/a=0, a < spray_particles, a++)
|
||||
spawn(0)
|
||||
var/obj/effect/effect/water/W = new /obj/effect/effect/water( get_turf(src) )
|
||||
var/obj/effect/effect/water/W = PoolOrNew(/obj/effect/effect/water, get_turf(src))
|
||||
var/turf/my_target = pick(the_targets)
|
||||
var/datum/reagents/R = new/datum/reagents(spray_amount)
|
||||
if(!W) return
|
||||
@@ -139,7 +139,7 @@
|
||||
M.ExtinguishMob()
|
||||
if(W.loc == my_target) break
|
||||
sleep(2)
|
||||
W.delete()
|
||||
qdel(W)
|
||||
|
||||
if((istype(usr.loc, /turf/space)) || (usr.lastarea.has_gravity == 0))
|
||||
user.inertia_dir = get_dir(target, user)
|
||||
|
||||
@@ -22,13 +22,13 @@
|
||||
var/obj/item/weapon/tank/phoron/ptank = null
|
||||
|
||||
|
||||
/obj/item/weapon/flamethrower/Del()
|
||||
/obj/item/weapon/flamethrower/Destroy()
|
||||
if(weldtool)
|
||||
del(weldtool)
|
||||
qdel(weldtool)
|
||||
if(igniter)
|
||||
del(igniter)
|
||||
qdel(igniter)
|
||||
if(ptank)
|
||||
del(ptank)
|
||||
qdel(ptank)
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -82,8 +82,8 @@
|
||||
if(ptank)
|
||||
ptank.loc = T
|
||||
ptank = null
|
||||
new /obj/item/stack/rods(T)
|
||||
del(src)
|
||||
PoolOrNew(/obj/item/stack/rods, T)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
if(isscrewdriver(W) && igniter && !lit)
|
||||
|
||||
@@ -31,11 +31,11 @@
|
||||
src.gift.add_fingerprint(user)
|
||||
else
|
||||
user << "\blue The gift was empty!"
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
/obj/item/weapon/a_gift/ex_act()
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
/obj/effect/spresent/relaymove(mob/user as mob)
|
||||
@@ -58,7 +58,7 @@
|
||||
M.client.eye = M.client.mob
|
||||
M.client.perspective = MOB_PERSPECTIVE
|
||||
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/a_gift/attack_self(mob/M as mob)
|
||||
var/gift_type = pick(/obj/item/weapon/sord,
|
||||
@@ -112,7 +112,7 @@
|
||||
M.remove_from_mob(src)
|
||||
M.put_in_hands(I)
|
||||
I.add_fingerprint(M)
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
/*
|
||||
@@ -152,7 +152,7 @@
|
||||
src.add_fingerprint(user)
|
||||
if (src.amount <= 0)
|
||||
new /obj/item/weapon/c_tube( src.loc )
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
else
|
||||
user << "\blue You need scissors!"
|
||||
|
||||
@@ -167,7 +167,7 @@
|
||||
|
||||
invisibility = INVISIBILITY_MAXIMUM //Why am i doing this?
|
||||
spawn(50) //To make sure all reagents can work
|
||||
del(src) //correctly before deleting the grenade.
|
||||
qdel(src) //correctly before deleting the grenade.
|
||||
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/large
|
||||
|
||||
@@ -7,5 +7,5 @@
|
||||
prime()
|
||||
..()
|
||||
if(empulse(src, 4, 10))
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
|
||||
new/obj/effect/effect/sparks(src.loc)
|
||||
new/obj/effect/effect/smoke/illumination(src.loc, brightness=15)
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
proc/bang(var/turf/T , var/mob/living/carbon/M) // Added a new proc called 'bang' that takes a location and a person to be banged.
|
||||
@@ -124,9 +124,8 @@
|
||||
spawn(0)
|
||||
new /obj/item/weapon/grenade/flashbang/clusterbang/segment(src.loc)//Creates a 'segment' that launches a few more flashbangs
|
||||
playsound(src.loc, 'sound/weapons/armbomb.ogg', 75, 1, -3)
|
||||
spawn(0)
|
||||
del(src)
|
||||
return
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
/obj/item/weapon/grenade/flashbang/clusterbang/segment
|
||||
desc = "A smaller segment of a clusterbang. Better run."
|
||||
@@ -156,9 +155,8 @@
|
||||
spawn(0)
|
||||
new /obj/item/weapon/grenade/flashbang/cluster(src.loc)
|
||||
playsound(src.loc, 'sound/weapons/armbomb.ogg', 75, 1, -3)
|
||||
spawn(0)
|
||||
del(src)
|
||||
return
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
/obj/item/weapon/grenade/flashbang/cluster/New()//Same concept as the segments, so that all of the parts don't become reliant on the clusterbang
|
||||
spawn(0)
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
|
||||
New()
|
||||
..()
|
||||
src.smoke = new /datum/effect/effect/system/smoke_spread/bad
|
||||
src.smoke = PoolOrNew(/datum/effect/effect/system/smoke_spread/bad)
|
||||
src.smoke.attach(src)
|
||||
|
||||
prime()
|
||||
@@ -30,5 +30,5 @@
|
||||
B.health -= damage
|
||||
B.update_icon()
|
||||
sleep(80)
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
|
||||
// Spawn some hostile syndicate critters
|
||||
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
/obj/item/weapon/grenade/spawnergrenade/manhacks
|
||||
|
||||
@@ -132,7 +132,7 @@ var/last_chew = 0
|
||||
|
||||
user.put_in_hands(W)
|
||||
user << "<span class='notice'>You wrap the cable restraint around the top of the rod.</span>"
|
||||
del(src)
|
||||
qdel(src)
|
||||
update_icon(user)
|
||||
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
var/implanted = null
|
||||
var/mob/imp_in = null
|
||||
var/obj/item/organ/external/part = null
|
||||
item_color = "b"
|
||||
var/implant_color = "b"
|
||||
var/allow_reagents = 0
|
||||
var/malfunction = 0
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
icon_state = "implant_melted"
|
||||
malfunction = MALFUNCTION_PERMANENT
|
||||
|
||||
Del()
|
||||
Destroy()
|
||||
if(part)
|
||||
part.implants.Remove(src)
|
||||
..()
|
||||
@@ -155,7 +155,7 @@ Implant Specifics:<BR>"}
|
||||
msg = replace_characters(msg, replacechars)
|
||||
if(findtext(msg,phrase))
|
||||
activate()
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
activate()
|
||||
if (malfunction == MALFUNCTION_PERMANENT)
|
||||
@@ -179,11 +179,11 @@ Implant Specifics:<BR>"}
|
||||
istype(part,/obj/item/organ/external/head))
|
||||
part.createwound(BRUISE, 60) //mangle them instead
|
||||
explosion(get_turf(imp_in), -1, -1, 2, 3)
|
||||
del(src)
|
||||
qdel(src)
|
||||
else
|
||||
explosion(get_turf(imp_in), -1, -1, 2, 3)
|
||||
part.droplimb(0,DROPLIMB_BLUNT)
|
||||
del(src)
|
||||
qdel(src)
|
||||
if (elevel == "Destroy Body")
|
||||
explosion(get_turf(T), -1, 0, 1, 6)
|
||||
T.gib()
|
||||
@@ -249,7 +249,7 @@ Implant Specifics:<BR>"}
|
||||
else
|
||||
part.droplimb(0,DROPLIMB_BLUNT)
|
||||
explosion(get_turf(imp_in), -1, -1, 2, 3)
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/implant/chem
|
||||
name = "chemical implant"
|
||||
@@ -296,7 +296,7 @@ the implant may become unstable and either pre-maturely inject the subject or si
|
||||
if(!src.reagents.total_volume)
|
||||
R << "You hear a faint click from your chest."
|
||||
spawn(0)
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
emp_act(severity)
|
||||
@@ -421,17 +421,17 @@ the implant may become unstable and either pre-maturely inject the subject or si
|
||||
a.autosay("[mobname] has died in Space!", "[mobname]'s Death Alarm")
|
||||
else
|
||||
a.autosay("[mobname] has died in [t.name]!", "[mobname]'s Death Alarm")
|
||||
del(a)
|
||||
qdel(a)
|
||||
processing_objects.Remove(src)
|
||||
if ("emp")
|
||||
var/obj/item/device/radio/headset/a = new /obj/item/device/radio/headset(null)
|
||||
var/name = prob(50) ? t.name : pick(teleportlocs)
|
||||
a.autosay("[mobname] has died in [name]!", "[mobname]'s Death Alarm")
|
||||
del(a)
|
||||
qdel(a)
|
||||
else
|
||||
var/obj/item/device/radio/headset/a = new /obj/item/device/radio/headset(null)
|
||||
a.autosay("[mobname] has died-zzzzt in-in-in...", "[mobname]'s Death Alarm")
|
||||
del(a)
|
||||
qdel(a)
|
||||
processing_objects.Remove(src)
|
||||
|
||||
emp_act(severity) //for some reason alarms stop going off in case they are emp'd, even without this
|
||||
@@ -489,7 +489,7 @@ the implant may become unstable and either pre-maturely inject the subject or si
|
||||
imp_in.put_in_hands(scanned)
|
||||
else
|
||||
scanned.loc = t
|
||||
del src
|
||||
qdel(src)
|
||||
|
||||
implanted(mob/source as mob)
|
||||
src.activation_emote = input("Choose activation emote:") in list("blink", "blink_r", "eyebrow", "chuckle", "twitch_s", "frown", "nod", "blush", "giggle", "grin", "groan", "shrug", "smile", "pale", "sniff", "whimper", "wink")
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
|
||||
/obj/item/weapon/implantcase/proc/update()
|
||||
if (src.imp)
|
||||
src.icon_state = text("implantcase-[]", src.imp.item_color)
|
||||
src.icon_state = text("implantcase-[]", src.imp.implant_color)
|
||||
else
|
||||
src.icon_state = "implantcase-0"
|
||||
return
|
||||
|
||||
@@ -84,7 +84,7 @@
|
||||
return
|
||||
var/mob/M = G:affecting
|
||||
if(put_mob(M))
|
||||
del(G)
|
||||
qdel(G)
|
||||
src.updateUsrDialog()
|
||||
return
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/obj/item/weapon/implant/freedom
|
||||
name = "freedom implant"
|
||||
desc = "Use this to escape from those evil Red Shirts."
|
||||
item_color = "r"
|
||||
implant_color = "r"
|
||||
var/activation_emote = "chuckle"
|
||||
var/uses = 1.0
|
||||
|
||||
|
||||
@@ -113,6 +113,7 @@
|
||||
origin_tech = "magnets=3;syndicate=4"
|
||||
sharp = 1
|
||||
edge = 1
|
||||
var/blade_color
|
||||
|
||||
/obj/item/weapon/melee/energy/sword/dropped(var/mob/user)
|
||||
..()
|
||||
@@ -120,26 +121,26 @@
|
||||
deactivate(user)
|
||||
|
||||
/obj/item/weapon/melee/energy/sword/New()
|
||||
item_color = pick("red","blue","green","purple")
|
||||
blade_color = pick("red","blue","green","purple")
|
||||
|
||||
/obj/item/weapon/melee/energy/sword/green/New()
|
||||
item_color = "green"
|
||||
blade_color = "green"
|
||||
|
||||
/obj/item/weapon/melee/energy/sword/red/New()
|
||||
item_color = "red"
|
||||
blade_color = "red"
|
||||
|
||||
/obj/item/weapon/melee/energy/sword/blue/New()
|
||||
item_color = "blue"
|
||||
blade_color = "blue"
|
||||
|
||||
/obj/item/weapon/melee/energy/sword/purple/New()
|
||||
item_color = "purple"
|
||||
blade_color = "purple"
|
||||
|
||||
/obj/item/weapon/melee/energy/sword/activate(mob/living/user)
|
||||
if(!active)
|
||||
user << "<span class='notice'>\The [src] is now energised.</span>"
|
||||
..()
|
||||
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
|
||||
icon_state = "sword[item_color]"
|
||||
icon_state = "sword[blade_color]"
|
||||
|
||||
/obj/item/weapon/melee/energy/sword/deactivate(mob/living/user)
|
||||
if(active)
|
||||
@@ -192,16 +193,16 @@
|
||||
|
||||
processing_objects |= src
|
||||
|
||||
/obj/item/weapon/melee/energy/blade/Del()
|
||||
/obj/item/weapon/melee/energy/blade/Destroy()
|
||||
processing_objects -= src
|
||||
..()
|
||||
|
||||
/obj/item/weapon/melee/energy/blade/attack_self(mob/user as mob)
|
||||
user.drop_from_inventory(src)
|
||||
spawn(1) if(src) del(src)
|
||||
spawn(1) if(src) qdel(src)
|
||||
|
||||
/obj/item/weapon/melee/energy/blade/dropped()
|
||||
spawn(1) if(src) del(src)
|
||||
spawn(1) if(src) qdel(src)
|
||||
|
||||
/obj/item/weapon/melee/energy/blade/process()
|
||||
if(!creator || loc != creator || (creator.l_hand != src && creator.r_hand != src))
|
||||
@@ -216,4 +217,4 @@
|
||||
host.pinned -= src
|
||||
host.embedded -= src
|
||||
host.drop_from_inventory(src)
|
||||
spawn(1) if(src) del(src)
|
||||
spawn(1) if(src) qdel(src)
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
T.dirt = 0
|
||||
for(var/obj/effect/O in src)
|
||||
if(istype(O,/obj/effect/rune) || istype(O,/obj/effect/decal/cleanable) || istype(O,/obj/effect/overlay))
|
||||
del(O)
|
||||
qdel(O)
|
||||
source.reagents.reaction(src, TOUCH, 10) //10 is the multiplier for the reaction effect. probably needed to wet the floor properly.
|
||||
source.reagents.remove_any(1) //reaction() doesn't use up the reagents
|
||||
|
||||
|
||||
@@ -190,10 +190,10 @@ var/list/tape_roll_applications = list()
|
||||
for (var/obj/item/tape/P in cur)
|
||||
if(P.icon_state == icon_dir)
|
||||
N = 0
|
||||
del(P)
|
||||
qdel(P)
|
||||
cur = get_step(cur,dir[i])
|
||||
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
|
||||
|
||||
@@ -64,7 +64,7 @@
|
||||
G.attackby(NG, user)
|
||||
usr << "You add the newly-formed glass to the stack. It now contains [NG.amount] sheets."
|
||||
//SN src = null
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
return ..()
|
||||
|
||||
|
||||
@@ -6,8 +6,17 @@
|
||||
/obj/item/weapon/storage/backpack
|
||||
name = "backpack"
|
||||
desc = "You wear this on your back and put items into it."
|
||||
item_icons = list(
|
||||
slot_l_hand_str = 'icons/mob/items/lefthand_backpacks.dmi',
|
||||
slot_r_hand_str = 'icons/mob/items/righthand_backpacks.dmi',
|
||||
)
|
||||
icon_state = "backpack"
|
||||
item_state = "backpack"
|
||||
item_state = null
|
||||
//most backpacks use the default backpack state for inhand overlays
|
||||
item_state_slots = list(
|
||||
slot_l_hand_str = "backpack",
|
||||
slot_r_hand_str = "backpack",
|
||||
)
|
||||
w_class = 4
|
||||
slot_flags = SLOT_BACK
|
||||
max_w_class = 3
|
||||
@@ -52,18 +61,18 @@
|
||||
return
|
||||
if(istype(W, /obj/item/weapon/storage/backpack/holding) && !W.crit_fail)
|
||||
user << "\red The Bluespace interfaces of the two devices conflict and malfunction."
|
||||
del(W)
|
||||
qdel(W)
|
||||
return
|
||||
/* //BoH+BoH=Singularity, commented out.
|
||||
if(istype(W, /obj/item/weapon/storage/backpack/holding) && !W.crit_fail)
|
||||
investigate_log("has become a singularity. Caused by [user.key]","singulo")
|
||||
user << "\red The Bluespace interfaces of the two devices catastrophically malfunction!"
|
||||
del(W)
|
||||
var/obj/machinery/singularity/singulo = new /obj/machinery/singularity (get_turf(src))
|
||||
qdel(W)
|
||||
var/obj/singularity/singulo = new /obj/singularity (get_turf(src))
|
||||
singulo.energy = 300 //should make it a bit bigger~
|
||||
message_admins("[key_name_admin(user)] detonated a bag of holding")
|
||||
log_game("[key_name(user)] detonated a bag of holding")
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
*/
|
||||
..()
|
||||
@@ -81,7 +90,7 @@
|
||||
else
|
||||
user << "\red The Bluespace generator malfunctions!"
|
||||
for (var/obj/O in src.contents) //it broke, delete what was in it
|
||||
del(O)
|
||||
qdel(O)
|
||||
crit_fail = 1
|
||||
icon_state = "brokenpack"
|
||||
|
||||
@@ -95,6 +104,7 @@
|
||||
storage_slots = 20
|
||||
max_w_class = 3
|
||||
max_storage_space = 400 // can store a ton of shit!
|
||||
item_state_slots = null
|
||||
|
||||
/obj/item/weapon/storage/backpack/cultpack
|
||||
name = "trophy rack"
|
||||
@@ -105,61 +115,56 @@
|
||||
name = "Giggles von Honkerton"
|
||||
desc = "It's a backpack made by Honk! Co."
|
||||
icon_state = "clownpack"
|
||||
item_state = "clownpack"
|
||||
item_state_slots = null
|
||||
|
||||
/obj/item/weapon/storage/backpack/medic
|
||||
name = "medical backpack"
|
||||
desc = "It's a backpack especially designed for use in a sterile environment."
|
||||
icon_state = "medicalpack"
|
||||
item_state = "medicalpack"
|
||||
item_state_slots = null
|
||||
|
||||
/obj/item/weapon/storage/backpack/security
|
||||
name = "security backpack"
|
||||
desc = "It's a very robust backpack."
|
||||
icon_state = "securitypack"
|
||||
item_state = "securitypack"
|
||||
item_state_slots = null
|
||||
|
||||
/obj/item/weapon/storage/backpack/captain
|
||||
name = "captain's backpack"
|
||||
desc = "It's a special backpack made exclusively for Nanotrasen officers."
|
||||
icon_state = "captainpack"
|
||||
item_state = "captainpack"
|
||||
item_state_slots = null
|
||||
|
||||
/obj/item/weapon/storage/backpack/industrial
|
||||
name = "industrial backpack"
|
||||
desc = "It's a tough backpack for the daily grind of station life."
|
||||
icon_state = "engiepack"
|
||||
item_state = "engiepack"
|
||||
item_state_slots = null
|
||||
|
||||
/obj/item/weapon/storage/backpack/toxins
|
||||
name = "laboratory backpack"
|
||||
desc = "It's a light backpack modeled for use in laboratories and other scientific institutions."
|
||||
icon_state = "toxpack"
|
||||
item_state = "toxpack"
|
||||
|
||||
/obj/item/weapon/storage/backpack/hydroponics
|
||||
name = "herbalist's backpack"
|
||||
desc = "It's a green backpack with many pockets to store plants and tools in."
|
||||
icon_state = "hydpack"
|
||||
item_state = "hydpack"
|
||||
|
||||
/obj/item/weapon/storage/backpack/genetics
|
||||
name = "geneticist backpack"
|
||||
desc = "It's a backpack fitted with slots for diskettes and other workplace tools."
|
||||
icon_state = "genpack"
|
||||
item_state = "genpack"
|
||||
|
||||
/obj/item/weapon/storage/backpack/virology
|
||||
name = "sterile backpack"
|
||||
desc = "It's a sterile backpack able to withstand different pathogens from entering its fabric."
|
||||
icon_state = "viropack"
|
||||
item_state = "viropack"
|
||||
|
||||
/obj/item/weapon/storage/backpack/chemistry
|
||||
name = "chemistry backpack"
|
||||
desc = "It's an orange backpack which was designed to hold beakers, pill bottles and bottles."
|
||||
icon_state = "chempack"
|
||||
item_state = "chempack"
|
||||
|
||||
/*
|
||||
* Satchel Types
|
||||
@@ -184,13 +189,19 @@
|
||||
name = "industrial satchel"
|
||||
desc = "A tough satchel with extra pockets."
|
||||
icon_state = "satchel-eng"
|
||||
item_state = "engiepack"
|
||||
item_state_slots = list(
|
||||
slot_l_hand_str = "engiepack",
|
||||
slot_r_hand_str = "engiepack",
|
||||
)
|
||||
|
||||
/obj/item/weapon/storage/backpack/satchel_med
|
||||
name = "medical satchel"
|
||||
desc = "A sterile satchel used in medical departments."
|
||||
icon_state = "satchel-med"
|
||||
item_state = "medicalpack"
|
||||
item_state_slots = list(
|
||||
slot_l_hand_str = "medicalpack",
|
||||
slot_r_hand_str = "medicalpack",
|
||||
)
|
||||
|
||||
/obj/item/weapon/storage/backpack/satchel_vir
|
||||
name = "virologist satchel"
|
||||
@@ -216,7 +227,10 @@
|
||||
name = "security satchel"
|
||||
desc = "A robust satchel for security related needs."
|
||||
icon_state = "satchel-sec"
|
||||
item_state = "securitypack"
|
||||
item_state_slots = list(
|
||||
slot_l_hand_str = "securitypack",
|
||||
slot_r_hand_str = "securitypack",
|
||||
)
|
||||
|
||||
/obj/item/weapon/storage/backpack/satchel_hyd
|
||||
name = "hydroponics satchel"
|
||||
@@ -228,13 +242,17 @@
|
||||
desc = "An exclusive satchel for Nanotrasen officers."
|
||||
icon_state = "satchel-cap"
|
||||
item_state = "captainpack"
|
||||
item_state_slots = null
|
||||
|
||||
//ERT backpacks.
|
||||
/obj/item/weapon/storage/backpack/ert
|
||||
name = "emergency response team backpack"
|
||||
desc = "A spacious backpack with lots of pockets, used by members of the Nanotrasen Emergency Response Team."
|
||||
icon_state = "ert_commander"
|
||||
item_state = "backpack"
|
||||
item_state_slots = list(
|
||||
slot_l_hand_str = "securitypack",
|
||||
slot_r_hand_str = "securitypack",
|
||||
)
|
||||
|
||||
//Commander
|
||||
/obj/item/weapon/storage/backpack/ert/commander
|
||||
|
||||
@@ -162,7 +162,7 @@
|
||||
usr.client.screen -= S
|
||||
S.dropped(usr)
|
||||
if(!S.amount)
|
||||
del S
|
||||
qdel(S)
|
||||
else
|
||||
S.loc = src
|
||||
|
||||
@@ -207,7 +207,7 @@
|
||||
N.amount = stacksize
|
||||
S.amount -= stacksize
|
||||
if(!S.amount)
|
||||
del S // todo: there's probably something missing here
|
||||
qdel(S) // todo: there's probably something missing here
|
||||
orient2hud(usr)
|
||||
if(usr.s_active)
|
||||
usr.s_active.show_to(usr)
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
// Now make the cardboard
|
||||
user << "<span class='notice'>You fold [src] flat.</span>"
|
||||
new src.foldable(get_turf(src))
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/storage/box/survival/
|
||||
New()
|
||||
@@ -243,6 +243,20 @@
|
||||
new /obj/item/ammo_casing/shotgun/stunshell(src)
|
||||
new /obj/item/ammo_casing/shotgun/stunshell(src)
|
||||
|
||||
/obj/item/weapon/storage/box/practiceshells
|
||||
name = "box of practice shells"
|
||||
desc = "It has a picture of a gun and several warning symbols on the front.<br>WARNING: Live ammunition. Misuse may result in serious injury or death."
|
||||
|
||||
New()
|
||||
..()
|
||||
new /obj/item/ammo_casing/shotgun/practice(src)
|
||||
new /obj/item/ammo_casing/shotgun/practice(src)
|
||||
new /obj/item/ammo_casing/shotgun/practice(src)
|
||||
new /obj/item/ammo_casing/shotgun/practice(src)
|
||||
new /obj/item/ammo_casing/shotgun/practice(src)
|
||||
new /obj/item/ammo_casing/shotgun/practice(src)
|
||||
new /obj/item/ammo_casing/shotgun/practice(src)
|
||||
|
||||
/obj/item/weapon/storage/box/sniperammo
|
||||
name = "box of 14.5mm shells"
|
||||
desc = "It has a picture of a gun and several warning symbols on the front.<br>WARNING: Live ammunition. Misuse may result in serious injury or death."
|
||||
|
||||
@@ -93,27 +93,27 @@
|
||||
storage_slots = 6
|
||||
icon_type = "crayon"
|
||||
can_hold = list(
|
||||
/obj/item/toy/crayon
|
||||
/obj/item/weapon/pen/crayon
|
||||
)
|
||||
|
||||
/obj/item/weapon/storage/fancy/crayons/New()
|
||||
..()
|
||||
new /obj/item/toy/crayon/red(src)
|
||||
new /obj/item/toy/crayon/orange(src)
|
||||
new /obj/item/toy/crayon/yellow(src)
|
||||
new /obj/item/toy/crayon/green(src)
|
||||
new /obj/item/toy/crayon/blue(src)
|
||||
new /obj/item/toy/crayon/purple(src)
|
||||
new /obj/item/weapon/pen/crayon/red(src)
|
||||
new /obj/item/weapon/pen/crayon/orange(src)
|
||||
new /obj/item/weapon/pen/crayon/yellow(src)
|
||||
new /obj/item/weapon/pen/crayon/green(src)
|
||||
new /obj/item/weapon/pen/crayon/blue(src)
|
||||
new /obj/item/weapon/pen/crayon/purple(src)
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/storage/fancy/crayons/update_icon()
|
||||
overlays = list() //resets list
|
||||
overlays += image('icons/obj/crayons.dmi',"crayonbox")
|
||||
for(var/obj/item/toy/crayon/crayon in contents)
|
||||
for(var/obj/item/weapon/pen/crayon/crayon in contents)
|
||||
overlays += image('icons/obj/crayons.dmi',crayon.colourName)
|
||||
|
||||
/obj/item/weapon/storage/fancy/crayons/attackby(obj/item/W as obj, mob/user as mob)
|
||||
if(istype(W,/obj/item/toy/crayon))
|
||||
if(istype(W,/obj/item/weapon/pen/crayon))
|
||||
switch(W:colourName)
|
||||
if("mime")
|
||||
usr << "This crayon is too sad to be contained in this box."
|
||||
@@ -146,8 +146,8 @@
|
||||
new /obj/item/clothing/mask/smokable/cigarette(src)
|
||||
create_reagents(15 * storage_slots)//so people can inject cigarettes without opening a packet, now with being able to inject the whole one
|
||||
|
||||
/obj/item/weapon/storage/fancy/cigarettes/Del()
|
||||
del(reagents)
|
||||
/obj/item/weapon/storage/fancy/cigarettes/Destroy()
|
||||
qdel(reagents)
|
||||
..()
|
||||
|
||||
|
||||
@@ -202,8 +202,8 @@
|
||||
new /obj/item/clothing/mask/smokable/cigarette/cigar(src)
|
||||
create_reagents(15 * storage_slots)
|
||||
|
||||
/obj/item/weapon/storage/fancy/cigar/Del()
|
||||
del(reagents)
|
||||
/obj/item/weapon/storage/fancy/cigar/Destroy()
|
||||
qdel(reagents)
|
||||
..()
|
||||
|
||||
/obj/item/weapon/storage/fancy/cigar/update_icon()
|
||||
|
||||
@@ -131,6 +131,7 @@
|
||||
/obj/item/weapon/storage/firstaid/surgery
|
||||
name = "surgery kit"
|
||||
desc = "Contains tools for surgery."
|
||||
storage_slots = 10
|
||||
|
||||
/obj/item/weapon/storage/firstaid/surgery/New()
|
||||
..()
|
||||
@@ -142,6 +143,9 @@
|
||||
new /obj/item/weapon/retractor(src)
|
||||
new /obj/item/weapon/scalpel(src)
|
||||
new /obj/item/weapon/surgicaldrill(src)
|
||||
new /obj/item/weapon/bonegel(src)
|
||||
new /obj/item/weapon/FixOVein(src)
|
||||
new /obj/item/stack/medical/advanced/bruise_pack(src)
|
||||
return
|
||||
|
||||
/*
|
||||
|
||||
@@ -9,6 +9,10 @@
|
||||
name = master_item.name
|
||||
verbs -= /obj/item/verb/verb_pickup //make sure this is never picked up.
|
||||
..()
|
||||
|
||||
/obj/item/weapon/storage/internal/Destroy()
|
||||
master_item = null
|
||||
..()
|
||||
|
||||
/obj/item/weapon/storage/internal/attack_hand()
|
||||
return //make sure this is never picked up
|
||||
|
||||
@@ -37,5 +37,4 @@
|
||||
i++
|
||||
|
||||
/obj/item/weapon/storage/box/donut/empty
|
||||
icon_state = "donutbox0"
|
||||
startswith = 0
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
w_class = 3
|
||||
var/list/can_hold = new/list() //List of objects which this item can store (if set, it can't store anything else)
|
||||
var/list/cant_hold = new/list() //List of objects which this item can't store (in effect only if can_hold isn't set)
|
||||
var/list/is_seeing = new/list() //List of mobs which are currently seeing the contents of this item's storage
|
||||
var/max_w_class = 2 //Max size of objects that this object can store (in effect only if can_hold isn't set)
|
||||
var/max_storage_space = 14 //The sum of the storage costs of all the items in this storage item.
|
||||
var/storage_slots = 7 //The number of storage slots in this container.
|
||||
@@ -23,6 +24,12 @@
|
||||
var/collection_mode = 1; //0 = pick one at a time, 1 = pick all on tile
|
||||
var/use_sound = "rustle" //sound played when used. null for no sound.
|
||||
|
||||
/obj/item/weapon/storage/Destroy()
|
||||
close_all()
|
||||
qdel(boxes)
|
||||
qdel(closer)
|
||||
..()
|
||||
|
||||
/obj/item/weapon/storage/MouseDrop(obj/over_object as obj)
|
||||
|
||||
if(!canremove)
|
||||
@@ -30,7 +37,7 @@
|
||||
|
||||
if (ishuman(usr) || issmall(usr)) //so monkeys can take off their backpacks -- Urist
|
||||
|
||||
if (istype(usr.loc,/obj/mecha)) // stops inventory actions in a mech
|
||||
if (istype(usr.loc,/obj/mecha)) // stops inventory actions in a mech. why?
|
||||
return
|
||||
|
||||
if(over_object == usr && Adjacent(usr)) // this must come before the screen objects only block
|
||||
@@ -44,18 +51,21 @@
|
||||
//there's got to be a better way of doing this.
|
||||
if (!(src.loc == usr) || (src.loc && src.loc.loc == usr))
|
||||
return
|
||||
|
||||
if (!( usr.restrained() ) && !( usr.stat ))
|
||||
switch(over_object.name)
|
||||
if("r_hand")
|
||||
usr.u_equip(src)
|
||||
usr.put_in_r_hand(src)
|
||||
if("l_hand")
|
||||
usr.u_equip(src)
|
||||
usr.put_in_l_hand(src)
|
||||
src.add_fingerprint(usr)
|
||||
|
||||
if (( usr.restrained() ) || ( usr.stat ))
|
||||
return
|
||||
return
|
||||
|
||||
if ((src.loc == usr) && !usr.unEquip(src))
|
||||
return
|
||||
|
||||
switch(over_object.name)
|
||||
if("r_hand")
|
||||
usr.u_equip(src)
|
||||
usr.put_in_r_hand(src)
|
||||
if("l_hand")
|
||||
usr.u_equip(src)
|
||||
usr.put_in_l_hand(src)
|
||||
src.add_fingerprint(usr)
|
||||
|
||||
|
||||
/obj/item/weapon/storage/proc/return_inv()
|
||||
@@ -86,6 +96,7 @@
|
||||
user.client.screen += src.closer
|
||||
user.client.screen += src.contents
|
||||
user.s_active = src
|
||||
is_seeing |= user
|
||||
return
|
||||
|
||||
/obj/item/weapon/storage/proc/hide_from(mob/user as mob)
|
||||
@@ -97,7 +108,7 @@
|
||||
user.client.screen -= src.contents
|
||||
if(user.s_active == src)
|
||||
user.s_active = null
|
||||
return
|
||||
is_seeing -= user
|
||||
|
||||
/obj/item/weapon/storage/proc/open(mob/user as mob)
|
||||
if (src.use_sound)
|
||||
@@ -109,11 +120,24 @@
|
||||
show_to(user)
|
||||
|
||||
/obj/item/weapon/storage/proc/close(mob/user as mob)
|
||||
|
||||
src.hide_from(user)
|
||||
user.s_active = null
|
||||
return
|
||||
|
||||
/obj/item/weapon/storage/proc/close_all()
|
||||
for(var/mob/M in can_see_contents())
|
||||
close(M)
|
||||
. = 1
|
||||
|
||||
/obj/item/weapon/storage/proc/can_see_contents()
|
||||
var/list/cansee = list()
|
||||
for(var/mob/M in is_seeing)
|
||||
if(M.s_active == src && M.client)
|
||||
cansee |= M
|
||||
else
|
||||
is_seeing -= M
|
||||
return cansee
|
||||
|
||||
//This proc draws out the inventory and places the items on it. tx and ty are the upper left tile and mx, my are the bottm right.
|
||||
//The numbers are calculated from the bottom-left The bottom-left slot being 1,1.
|
||||
/obj/item/weapon/storage/proc/orient_objs(tx, ty, mx, my)
|
||||
@@ -163,7 +187,7 @@
|
||||
|
||||
New(obj/item/sample as obj)
|
||||
if(!istype(sample))
|
||||
del(src)
|
||||
qdel(src)
|
||||
sample_object = sample
|
||||
number = 1
|
||||
|
||||
@@ -463,4 +487,4 @@
|
||||
return depth
|
||||
|
||||
/obj/item/proc/get_storage_cost()
|
||||
return 2**(w_class-1) //1,2,4,8,16,...
|
||||
return 2**(w_class-1) //1,2,4,8,16,...
|
||||
|
||||
@@ -11,7 +11,6 @@
|
||||
/obj/item/device/flashlight/pen,
|
||||
/obj/item/seeds,
|
||||
/obj/item/stack/medical,
|
||||
/obj/item/toy/crayon,
|
||||
/obj/item/weapon/coin,
|
||||
/obj/item/weapon/dice,
|
||||
/obj/item/weapon/disk,
|
||||
|
||||
@@ -65,7 +65,7 @@
|
||||
H.update_body()
|
||||
M.updatehealth()
|
||||
M.UpdateDamageIcon()
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
return 1
|
||||
return 0
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
D.open()
|
||||
if(istype(T,/turf/simulated/wall))
|
||||
T.dismantle_wall(1)
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
|
||||
/*Detonator, disguised as a lighter*/
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
if (istype(W, /obj/item/weapon/wrench))
|
||||
for(var/material_type in stack_types)
|
||||
new material_type(get_turf(user))
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
else
|
||||
if(alter_type && alter_with && istype(W,alter_with))
|
||||
@@ -28,7 +28,7 @@
|
||||
if (R.use(alter_cost))
|
||||
var/obj/item/new_parts = new alter_type (get_turf(loc))
|
||||
user << "<span class='notice'>You modify \the [name] into \a [new_parts].</span>"
|
||||
del(src)
|
||||
qdel(src)
|
||||
else
|
||||
user << "<span class='warning'>You need at least [alter_cost] sheets to reinforce the [name].</span>"
|
||||
return
|
||||
@@ -41,7 +41,7 @@
|
||||
|
||||
new build_type( user.loc )
|
||||
user.drop_item()
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
/obj/item/weapon/table_parts/reinforced
|
||||
@@ -87,7 +87,7 @@
|
||||
new /obj/item/stack/tile/carpet( get_turf(loc) )
|
||||
new /obj/item/weapon/table_parts/wood( get_turf(loc) )
|
||||
user << "<span class='notice'>You pry the carpet out of the table.</span>"
|
||||
del(src)
|
||||
qdel(src)
|
||||
..()
|
||||
|
||||
/obj/item/weapon/table_parts/rack
|
||||
|
||||
@@ -63,7 +63,7 @@
|
||||
if(allgases >= 0.005)
|
||||
return 1
|
||||
|
||||
del(G)
|
||||
qdel(G)
|
||||
return
|
||||
|
||||
/obj/item/weapon/tank/jetpack/ui_action_click()
|
||||
@@ -143,5 +143,5 @@
|
||||
var/allgases = G.gas["carbon_dioxide"] + G.gas["nitrogen"] + G.gas["oxygen"] + G.gas["phoron"]
|
||||
if(allgases >= 0.005)
|
||||
return 1
|
||||
del(G)
|
||||
qdel(G)
|
||||
return
|
||||
|
||||
@@ -31,9 +31,9 @@
|
||||
processing_objects.Add(src)
|
||||
return
|
||||
|
||||
/obj/item/weapon/tank/Del()
|
||||
/obj/item/weapon/tank/Destroy()
|
||||
if(air_contents)
|
||||
del(air_contents)
|
||||
qdel(air_contents)
|
||||
|
||||
processing_objects.Remove(src)
|
||||
|
||||
@@ -71,12 +71,12 @@
|
||||
if(prob(50))
|
||||
var/turf/location = src.loc
|
||||
if (!( istype(location, /turf) ))
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
if(src.air_contents)
|
||||
location.assume_air(air_contents)
|
||||
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/tank/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
..()
|
||||
@@ -274,7 +274,7 @@
|
||||
//world << "\blue Exploding Pressure: [pressure] kPa, intensity: [range]"
|
||||
|
||||
explosion(epicenter, round(range*0.25), round(range*0.5), round(range), round(range*1.5))
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
else if(pressure > TANK_RUPTURE_PRESSURE)
|
||||
//world << "\blue[x],[y] tank is rupturing: [pressure] kPa, integrity [integrity]"
|
||||
@@ -284,7 +284,7 @@
|
||||
return
|
||||
T.assume_air(air_contents)
|
||||
playsound(src.loc, 'sound/effects/spray.ogg', 10, 1, -3)
|
||||
del(src)
|
||||
qdel(src)
|
||||
else
|
||||
integrity--
|
||||
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
user.put_in_hands(stuck)
|
||||
stuck = null
|
||||
overlays = null
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/ducttape/afterattack(var/A, mob/user, flag, params)
|
||||
if(!in_range(user, A) || istype(A, /obj/machinery/door) || !stuck)
|
||||
|
||||
@@ -112,10 +112,10 @@
|
||||
name = "offhand"
|
||||
|
||||
unwield()
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
wield()
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/twohanded/offhand/update_icon()
|
||||
return
|
||||
@@ -144,12 +144,12 @@
|
||||
var/obj/structure/window/W = A
|
||||
|
||||
new /obj/item/weapon/shard( W.loc )
|
||||
if(W.reinf) new /obj/item/stack/rods( W.loc)
|
||||
if(W.reinf) PoolOrNew(/obj/item/stack/rods, W.loc)
|
||||
|
||||
if (W.dir == SOUTHWEST)
|
||||
new /obj/item/weapon/shard( W.loc )
|
||||
if(W.reinf) new /obj/item/stack/rods( W.loc)
|
||||
del(A)
|
||||
if(W.reinf) PoolOrNew(/obj/item/stack/rods, W.loc)
|
||||
qdel(A)
|
||||
|
||||
|
||||
/*
|
||||
|
||||
@@ -177,7 +177,7 @@
|
||||
if(istype(W,/obj/item/weapon/screwdriver))
|
||||
user << "You finish the concealed blade weapon."
|
||||
new /obj/item/weapon/butterfly(user.loc)
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
/obj/item/butterflyblade
|
||||
@@ -198,8 +198,8 @@
|
||||
if(istype(W,/obj/item/butterflyblade))
|
||||
user << "You attach the two concealed blade parts."
|
||||
new /obj/item/butterflyconstruction(user.loc)
|
||||
del(W)
|
||||
del(src)
|
||||
qdel(W)
|
||||
qdel(src)
|
||||
return
|
||||
update_icon(user)
|
||||
|
||||
@@ -252,8 +252,8 @@ obj/item/weapon/wirerod/attackby(var/obj/item/I, mob/user as mob)
|
||||
|
||||
user.put_in_hands(S)
|
||||
user << "<span class='notice'>You fasten the glass shard to the top of the rod with the cable.</span>"
|
||||
del(I)
|
||||
del(src)
|
||||
qdel(I)
|
||||
qdel(src)
|
||||
update_icon(user)
|
||||
|
||||
else if(istype(I, /obj/item/weapon/wirecutters))
|
||||
@@ -261,8 +261,8 @@ obj/item/weapon/wirerod/attackby(var/obj/item/I, mob/user as mob)
|
||||
|
||||
user.put_in_hands(P)
|
||||
user << "<span class='notice'>You fasten the wirecutters to the top of the rod with the cable, prongs outward.</span>"
|
||||
del(I)
|
||||
del(src)
|
||||
qdel(I)
|
||||
qdel(src)
|
||||
update_icon(user)
|
||||
update_icon(user)
|
||||
|
||||
@@ -309,7 +309,7 @@ obj/item/weapon/wirerod/attackby(var/obj/item/I, mob/user as mob)
|
||||
|
||||
/obj/item/weapon/energy_net/dropped()
|
||||
spawn(10)
|
||||
if(src) del(src)
|
||||
if(src) qdel(src)
|
||||
|
||||
/obj/item/weapon/energy_net/throw_impact(atom/hit_atom)
|
||||
..()
|
||||
@@ -317,7 +317,7 @@ obj/item/weapon/wirerod/attackby(var/obj/item/I, mob/user as mob)
|
||||
var/mob/living/M = hit_atom
|
||||
|
||||
if(!istype(M) || locate(/obj/effect/energy_net) in M.loc)
|
||||
del(src)
|
||||
qdel(src)
|
||||
return 0
|
||||
|
||||
var/turf/T = get_turf(M)
|
||||
@@ -327,11 +327,11 @@ obj/item/weapon/wirerod/attackby(var/obj/item/I, mob/user as mob)
|
||||
M.captured = 1
|
||||
net.affecting = M
|
||||
T.visible_message("[M] was caught in an energy net!")
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
// If we miss or hit an obstacle, we still want to delete the net.
|
||||
spawn(10)
|
||||
if(src) del(src)
|
||||
if(src) qdel(src)
|
||||
|
||||
/obj/effect/energy_net
|
||||
name = "energy net"
|
||||
@@ -356,7 +356,7 @@ obj/item/weapon/wirerod/attackby(var/obj/item/I, mob/user as mob)
|
||||
..()
|
||||
processing_objects |= src
|
||||
|
||||
/obj/effect/energy_net/Del()
|
||||
/obj/effect/energy_net/Destroy()
|
||||
|
||||
if(affecting)
|
||||
var/mob/living/carbon/M = affecting
|
||||
@@ -372,13 +372,13 @@ obj/item/weapon/wirerod/attackby(var/obj/item/I, mob/user as mob)
|
||||
if(health <=0)
|
||||
density = 0
|
||||
src.visible_message("The energy net is torn apart!")
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
/obj/effect/energy_net/process()
|
||||
|
||||
if(isnull(affecting) || affecting.loc != loc)
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
// Countdown begin set to -1 will stop the teleporter from firing.
|
||||
@@ -411,7 +411,7 @@ obj/item/weapon/wirerod/attackby(var/obj/item/I, mob/user as mob)
|
||||
playsound(affecting.loc, 'sound/effects/sparks2.ogg', 50, 1)
|
||||
anim(affecting.loc,affecting,'icons/mob/mob.dmi',,"phasein",,affecting.dir)
|
||||
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/energy_net/bullet_act(var/obj/item/projectile/Proj)
|
||||
health -= Proj.damage
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
user << "\red That was stupid of you."
|
||||
explosion(get_turf(src),-1,0,2)
|
||||
if(src)
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
else
|
||||
if(T.welding)
|
||||
|
||||
@@ -61,9 +61,6 @@
|
||||
else
|
||||
return null
|
||||
|
||||
/atom/movable/proc/initialize()
|
||||
return
|
||||
|
||||
/obj/proc/updateUsrDialog()
|
||||
if(in_use)
|
||||
var/is_in_use = 0
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
..()
|
||||
if (!prob(spawn_nothing_percentage))
|
||||
spawn_item()
|
||||
del src
|
||||
qdel(src)
|
||||
|
||||
|
||||
// this function should return a specific item to spawn
|
||||
|
||||
@@ -6,11 +6,12 @@
|
||||
var/parts
|
||||
var/list/climbers = list()
|
||||
|
||||
/obj/structure/proc/destroy()
|
||||
/obj/structure/Destroy()
|
||||
if(opacity)
|
||||
UpdateAffectingLights()
|
||||
if(parts)
|
||||
new parts(loc)
|
||||
density = 0
|
||||
del(src)
|
||||
..()
|
||||
|
||||
/obj/structure/attack_hand(mob/user)
|
||||
if(breakable)
|
||||
@@ -31,10 +32,10 @@
|
||||
|
||||
/obj/structure/blob_act()
|
||||
if(prob(50))
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/structure/meteorhit(obj/O as obj)
|
||||
destroy(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/structure/attack_tk()
|
||||
return
|
||||
@@ -42,24 +43,24 @@
|
||||
/obj/structure/ex_act(severity)
|
||||
switch(severity)
|
||||
if(1.0)
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
if(2.0)
|
||||
if(prob(50))
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
if(3.0)
|
||||
return
|
||||
|
||||
/obj/structure/meteorhit(obj/O as obj)
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/structure/New()
|
||||
..()
|
||||
if(climbable)
|
||||
verbs += /obj/structure/proc/climb_on
|
||||
|
||||
/obj/structure/Del()
|
||||
/obj/structure/Destroy()
|
||||
..()
|
||||
|
||||
/obj/structure/proc/climb_on()
|
||||
@@ -193,5 +194,5 @@
|
||||
if(!breakable || !damage || !wallbreaker)
|
||||
return 0
|
||||
visible_message("<span class='danger'>[user] [attack_verb] the [src] apart!</span>")
|
||||
spawn(1) destroy()
|
||||
spawn(1) qdel(src)
|
||||
return 1
|
||||
|
||||
@@ -15,8 +15,6 @@ LINEN BINS
|
||||
throw_speed = 1
|
||||
throw_range = 2
|
||||
w_class = 2.0
|
||||
item_color = "white"
|
||||
|
||||
|
||||
/obj/item/weapon/bedsheet/attack_self(mob/user as mob)
|
||||
user.drop_item()
|
||||
@@ -30,67 +28,51 @@ LINEN BINS
|
||||
|
||||
/obj/item/weapon/bedsheet/blue
|
||||
icon_state = "sheetblue"
|
||||
item_color = "blue"
|
||||
|
||||
/obj/item/weapon/bedsheet/green
|
||||
icon_state = "sheetgreen"
|
||||
item_color = "green"
|
||||
|
||||
/obj/item/weapon/bedsheet/orange
|
||||
icon_state = "sheetorange"
|
||||
item_color = "orange"
|
||||
|
||||
/obj/item/weapon/bedsheet/purple
|
||||
icon_state = "sheetpurple"
|
||||
item_color = "purple"
|
||||
|
||||
/obj/item/weapon/bedsheet/rainbow
|
||||
icon_state = "sheetrainbow"
|
||||
item_color = "rainbow"
|
||||
|
||||
/obj/item/weapon/bedsheet/red
|
||||
icon_state = "sheetred"
|
||||
item_color = "red"
|
||||
|
||||
/obj/item/weapon/bedsheet/yellow
|
||||
icon_state = "sheetyellow"
|
||||
item_color = "yellow"
|
||||
|
||||
/obj/item/weapon/bedsheet/mime
|
||||
icon_state = "sheetmime"
|
||||
item_color = "mime"
|
||||
|
||||
/obj/item/weapon/bedsheet/clown
|
||||
icon_state = "sheetclown"
|
||||
item_color = "clown"
|
||||
|
||||
/obj/item/weapon/bedsheet/captain
|
||||
icon_state = "sheetcaptain"
|
||||
item_color = "captain"
|
||||
|
||||
/obj/item/weapon/bedsheet/rd
|
||||
icon_state = "sheetrd"
|
||||
item_color = "director"
|
||||
|
||||
/obj/item/weapon/bedsheet/medical
|
||||
icon_state = "sheetmedical"
|
||||
item_color = "medical"
|
||||
|
||||
/obj/item/weapon/bedsheet/hos
|
||||
icon_state = "sheethos"
|
||||
item_color = "hosred"
|
||||
|
||||
/obj/item/weapon/bedsheet/hop
|
||||
icon_state = "sheethop"
|
||||
item_color = "hop"
|
||||
|
||||
/obj/item/weapon/bedsheet/ce
|
||||
icon_state = "sheetce"
|
||||
item_color = "chief"
|
||||
|
||||
/obj/item/weapon/bedsheet/brown
|
||||
icon_state = "sheetbrown"
|
||||
item_color = "brown"
|
||||
|
||||
|
||||
/obj/structure/bedsheetbin
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user