Merge resolution.

This commit is contained in:
Zuhayr
2015-05-11 11:47:24 +09:30
777 changed files with 22019 additions and 21336 deletions
+7
View File
@@ -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
+15 -15
View File
@@ -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."
+2 -2
View File
@@ -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))
+9 -5
View File
@@ -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]
+1 -1
View File
@@ -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)
+31 -33
View File
@@ -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()
+3 -3
View File
@@ -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)
+51 -59
View File
@@ -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)
+1 -1
View File
@@ -17,5 +17,5 @@
P.info = dat
P.name = "paper- 'Crew Manifest'"
//SN src = null
del(src)
qdel(src)
return
+10 -10
View File
@@ -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"
+2 -6
View File
@@ -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)
+2 -2
View File
@@ -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)
+12 -12
View File
@@ -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 ..()
+2 -2
View File
@@ -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
+5 -13
View File
@@ -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
View File
@@ -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)
+3 -3
View File
@@ -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)
+1 -1
View File
@@ -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?"
+4 -4
View File
@@ -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))))
+14 -14
View File
@@ -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
..()
+3 -3
View File
@@ -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)
+19 -23
View File
@@ -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)
+15 -6
View File
@@ -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)
..()
+2 -2
View File
@@ -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()
+2 -2
View File
@@ -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)
+2 -2
View File
@@ -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)
+95 -89
View File
@@ -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()
+2 -2
View File
@@ -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.
+2 -2
View File
@@ -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()
+4 -4
View File
@@ -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
+2 -2
View File
@@ -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
+6 -6
View File
@@ -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)
+9 -35
View File
@@ -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
+7 -2
View File
@@ -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
+1 -1
View File
@@ -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)
+1 -1
View File
@@ -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)
+7 -3
View File
@@ -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)
+12 -4
View File
@@ -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
+1 -1
View File
@@ -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
+11 -10
View File
@@ -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)
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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--
+1 -1
View File
@@ -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)
+5 -5
View File
@@ -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)
/*
+15 -15
View File
@@ -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)
-3
View File
@@ -61,9 +61,6 @@
else
return null
/atom/movable/proc/initialize()
return
/obj/proc/updateUsrDialog()
if(in_use)
var/is_in_use = 0
+1 -1
View File
@@ -11,7 +11,7 @@
..()
if (!prob(spawn_nothing_percentage))
spawn_item()
del src
qdel(src)
// this function should return a specific item to spawn
+11 -10
View File
@@ -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