Merge branch 'dev' into ofBotsAndMobs

Conflicts:
	code/game/machinery/bots/cleanbot.dm
	code/game/machinery/bots/ed209bot.dm
	code/game/machinery/bots/farmbot.dm
	code/game/machinery/bots/floorbot.dm
	code/game/machinery/bots/medbot.dm
	code/game/machinery/bots/secbot.dm
	code/game/objects/items/robot/robot_parts.dm
This commit is contained in:
Kelenius
2015-04-26 17:18:20 +03:00
697 changed files with 14108 additions and 11287 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))
+4 -4
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()
@@ -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)
@@ -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)
..()
@@ -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"
+1 -5
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"
+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)
+10 -10
View File
@@ -11,13 +11,13 @@
/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)
@@ -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
+9 -3
View File
@@ -60,6 +60,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 +81,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
+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))))
+2 -2
View File
@@ -85,7 +85,7 @@
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)
@@ -97,6 +97,6 @@
uses -= 5
if(uses <= 0)
user << "\red You ate your crayon!"
del(src)
qdel(src)
else
..()
+28 -13
View File
@@ -617,16 +617,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
ownrank = id.rank
name = "PDA-[owner] ([ownjob])"
if("Eject")//Ejects the cart, only done from hub.
if (!isnull(cartridge))
var/turf/T = loc
if(ismob(T))
T = T.loc
cartridge.loc = T
mode = 0
scanmode = 0
if (cartridge.radio)
cartridge.radio.hostpda = null
cartridge = null
verb_remove_cartridge()
//MENU FUNCTIONS===================================
@@ -947,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
@@ -1120,6 +1111,30 @@ var/global/list/obj/item/device/pda/PDAs = list()
else
usr << "<span class='notice'>You cannot do this while restrained.</span>"
/obj/item/device/pda/verb/verb_remove_cartridge()
set category = "Object"
set name = "Remove cartridge"
set src in usr
if(issilicon(usr))
return
if (can_use(usr) && !isnull(cartridge))
var/turf/T = get_turf(src)
cartridge.loc = T
if (ismob(loc))
var/mob/M = loc
M.put_in_hands(cartridge)
else
cartridge.loc = get_turf(src)
mode = 0
scanmode = 0
if (cartridge.radio)
cartridge.radio.hostpda = null
cartridge = null
usr << "<span class='notice'>You remove \the [cartridge] from the [name].</span>"
else
usr << "<span class='notice'>You cannot do this while restrained.</span>"
/obj/item/device/pda/proc/id_check(mob/user as mob, choice as num)//To check for IDs; 1 for in-pda use, 2 for out of pda use.
if(choice == 1)
@@ -1225,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)
@@ -1355,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)
+3 -1
View File
@@ -115,7 +115,9 @@
spawn(5)
radio = new /obj/item/radio/integrated/signal(src)
/obj/item/weapon/cartridge/signal/Destroy()
qdel(radio)
..()
/obj/item/weapon/cartridge/quartermaster
name = "\improper Space Parts & Space Vendors cartridge"
@@ -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
@@ -245,3 +251,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))
@@ -97,6 +97,10 @@
mode = "white"
mode_nice = "white"
return
if(design == "dark")
mode = "dark"
mode_nice = "dark"
return
if(design == "showroom" || design == "hydro" || design == "freezer")
mode = "[design]floor"
mode_nice = design
@@ -135,9 +139,9 @@
mode_nice = design
mode = "whitebluegreencorners"
tile_dir_mode = 2
else if(design == "delivery" || design == "bot")
else if(design == "delivery" || design == "bot" || design == "white-delivery" || design == "white-bot")
mode_nice = design
mode = design
mode = replacetext(design, "-", "")
tile_dir_mode = 0
else if(design == "loadingarea")
mode_nice = design
@@ -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)
+1 -1
View File
@@ -118,4 +118,4 @@
if(power_drained >= max_power)
processing_objects.Remove(src)
explosion(src.loc, 3,6,9,12)
del(src)
qdel(src)
@@ -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
..()
+10 -2
View File
@@ -45,6 +45,15 @@
if(radio_controller)
initialize()
/obj/item/device/radio/Destroy()
qdel(wires)
wires = null
if(radio_controller)
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 +181,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 +634,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.
+108
View File
@@ -0,0 +1,108 @@
/obj/item/glass_jar
name = "glass jar"
desc = "A small empty jar."
icon = 'icons/obj/items.dmi'
icon_state = "jar"
w_class = 2
matter = list("glass" = 200)
flags = NOBLUDGEON
var/list/accept_mobs = list(/mob/living/simple_animal/lizard, /mob/living/simple_animal/mouse)
var/contains = 0 // 0 = nothing, 1 = money, 2 = animal, 3 = spiderling
/obj/item/glass_jar/New()
..()
update_icon()
/obj/item/glass_jar/afterattack(var/atom/A, var/mob/user, var/proximity)
if(!proximity || contains)
return
if(istype(A, /mob))
var/accept = 0
for(var/D in accept_mobs)
if(istype(A, D))
accept = 1
if(!accept)
user << "[A] doesn't fit into \the [src]."
return
var/mob/L = A
user.visible_message("<span class='notice'>[user] scoops [L] into \the [src].</span>", "<span class='notice'>You scoop [L] into \the [src].</span>")
L.loc = src
contains = 2
update_icon()
return
else if(istype(A, /obj/effect/spider/spiderling))
var/obj/effect/spider/spiderling/S = A
user.visible_message("<span class='notice'>[user] scoops [S] into \the [src].</span>", "<span class='notice'>You scoop [S] into \the [src].</span>")
S.loc = src
processing_objects.Remove(S) // No growing inside jars
contains = 3
update_icon()
return
/obj/item/glass_jar/attack_self(var/mob/user)
switch(contains)
if(1)
for(var/obj/O in src)
O.loc = user.loc
user << "<span class='notice'>You take money out of \the [src].</span>"
contains = 0
update_icon()
return
if(2)
for(var/mob/M in src)
M.loc = user.loc
user.visible_message("<span class='notice'>[user] releases [M] from \the [src].</span>", "<span class='notice'>You release [M] from \the [src].</span>")
contains = 0
update_icon()
return
if(3)
for(var/obj/effect/spider/spiderling/S in src)
S.loc = user.loc
user.visible_message("<span class='notice'>[user] releases [S] from \the [src].</span>", "<span class='notice'>You release [S] from \the [src].</span>")
processing_objects.Add(S) // They can grow after being let out though
contains = 0
update_icon()
return
/obj/item/glass_jar/attackby(var/obj/item/W, var/mob/user)
if(istype(W, /obj/item/weapon/spacecash))
if(contains == 0)
contains = 1
if(contains != 1)
return
var/obj/item/weapon/spacecash/S = W
user.visible_message("<span class='notice'>[user] puts [S.worth] [S.worth > 1 ? "thalers" : "thaler"] into \the [src].</span>")
user.drop_from_inventory(S)
S.loc = src
update_icon()
/obj/item/glass_jar/update_icon() // Also updates name and desc
underlays.Cut()
overlays.Cut()
switch(contains)
if(0)
name = initial(name)
desc = initial(desc)
if(1)
name = "tip jar"
desc = "A small jar with money inside."
for(var/obj/item/weapon/spacecash/S in src)
var/image/money = image(S.icon, S.icon_state)
money.pixel_x = rand(-2, 3)
money.pixel_y = rand(-6, 6)
money.transform *= 0.6
underlays += money
if(2)
for(var/mob/M in src)
var/image/victim = image(M.icon, M.icon_state)
victim.pixel_y = 6
underlays += victim
name = "glass jar with [M]"
desc = "A small jar with [M] inside."
if(3)
for(var/obj/effect/spider/spiderling/S in src)
var/image/victim = image(S.icon, S.icon_state)
underlays += victim
name = "glass jar with [S]"
desc = "A small jar with [S] inside."
return
+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()
+7 -7
View File
@@ -128,13 +128,13 @@
if(istype(W, /obj/item/stack/sheet/metal) && !l_arm && !r_arm && !l_leg && !r_leg && !chest && !head)
var/obj/item/stack/sheet/metal/M = W
if (M.use(1))
//var/obj/item/weapon/secbot_assembly/ed209_assembly/B = new /obj/item/weapon/secbot_assembly/ed209_assembly
//B.loc = get_turf(src)
var/obj/item/weapon/secbot_assembly/ed209_assembly/B = new /obj/item/weapon/secbot_assembly/ed209_assembly
B.loc = get_turf(src)
user << "<span class='notice'>You armed the robot frame.</span>"
if (user.get_inactive_hand()==src)
user.remove_from_mob(src)
// user.put_in_inactive_hand(B)
del(src)
user.put_in_inactive_hand(B)
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
@@ -35,7 +35,7 @@
//world << R.icon_state
icon = 'icons/mob/custom-synthetic.dmi'
R.icon_state = "[R.ckey]-Standard"
del(R.module)
qdel(R.module)
R.notify_ai(ROBOT_NOTIFICATION_MODULE_RESET, R.module.name)
R.module = null
R.camera.remove_networks(list("Engineering","Medical","MINE"))
+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)
+10 -10
View File
@@ -63,7 +63,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 +80,7 @@
src.icon_state = "burst"
spawn(5)
if(src)
del(src)
qdel(src)
return
/obj/item/toy/balloon/update_icon()
@@ -233,7 +233,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 +265,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)
@@ -418,7 +418,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 +432,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
@@ -440,7 +440,7 @@
/obj/item/toy/waterflower
name = "water flower"
desc = "A seemingly innocent sunflower...with a twist."
//icon = 'icons/obj/harvest.dmi'
icon = 'icons/obj/device.dmi'
icon_state = "sunflower"
item_state = "sunflower"
var/empty = 0
@@ -494,7 +494,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>"
@@ -138,7 +143,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)
+1 -1
View File
@@ -56,7 +56,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
+2 -2
View File
@@ -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()
@@ -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
@@ -28,7 +28,11 @@
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
T.clean()
else
user << "<span class='notice'>You clean \the [target.name].</span>"
target.clean_blood()
@@ -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
@@ -83,7 +83,7 @@
ptank.loc = T
ptank = null
new /obj/item/stack/rods(T)
del(src)
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)
@@ -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")
@@ -84,7 +84,7 @@
return
var/mob/M = G:affecting
if(put_mob(M))
del(G)
qdel(G)
src.updateUsrDialog()
return
@@ -192,16 +192,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 +216,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
@@ -191,10 +191,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 ..()
@@ -52,18 +52,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 +81,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"
@@ -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()
@@ -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()
@@ -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
@@ -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)
@@ -86,6 +93,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 +105,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 +117,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 +184,7 @@
New(obj/item/sample as obj)
if(!istype(sample))
del(src)
qdel(src)
sample_object = sample
number = 1
@@ -463,4 +484,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,...
@@ -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)
+3 -3
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
@@ -149,7 +149,7 @@
if (W.dir == SOUTHWEST)
new /obj/item/weapon/shard( W.loc )
if(W.reinf) new /obj/item/stack/rods( W.loc)
del(A)
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)
+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
+28 -13
View File
@@ -4,12 +4,14 @@
var/climbable
var/breakable
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)
@@ -20,14 +22,20 @@
var/mob/living/carbon/human/H = user
if(H.species.can_shred(user))
attack_generic(user,1,"slices")
if(climbers.len && !(user in climbers))
user.visible_message("<span class='warning'>[user.name] shakes \the [src].</span>", \
"<span class='notice'>You shake \the [src].</span>")
structure_shaken()
return ..()
/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
@@ -35,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()
@@ -73,7 +81,7 @@
return ..()
/obj/structure/proc/can_climb(var/mob/living/user)
if (!can_touch(user) || !climbable)
if (!can_touch(user) || !climbable || (user in climbers))
return 0
if (!user.Adjacent(src))
@@ -103,25 +111,32 @@
return
usr.visible_message("<span class='warning'>[user] starts climbing onto \the [src]!</span>")
climbers |= user
if(!do_after(user,50))
climbers -= user
return
if (!can_climb(user))
climbers -= user
return
usr.forceMove(get_turf(src))
if (get_turf(user) == get_turf(src))
usr.visible_message("<span class='warning'>[user] climbs onto \the [src]!</span>")
climbers -= user
/obj/structure/proc/structure_shaken()
for(var/mob/living/M in climbers)
M.Weaken(1)
M << "<span class='danger'>You topple as you are shaken off \the [src]!</span>"
climbers.Cut(1,2)
for(var/mob/living/M in get_turf(src))
if(M.lying) return //No spamming this on people.
M.Weaken(5)
M.Weaken(3)
M << "<span class='danger'>You topple as \the [src] moves under you!</span>"
if(prob(25))
@@ -179,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
+2 -2
View File
@@ -4,7 +4,7 @@
anchored = 1
var/cult = 0
New()
ChangeSign(pick("pinkflamingo", "magmasea", "limbo", "rustyaxe", "armokbar", "brokendrum", "meadbay", "thedamnwall", "thecavern", "cindikate", "theorchard", "thesaucyclown", "theclownshead", "whiskeyimplant", "carpecarp", "robustroadhouse", "greytide", "theredshirt"))
ChangeSign(pick("pinkflamingo", "magmasea", "limbo", "rustyaxe", "armokbar", "brokendrum", "meadbay", "thedamnwall", "thecavern", "cindikate", "theorchard", "thesaucyclown", "theclownshead", "whiskeyimplant", "carpecarp", "robustroadhouse", "greytide", "theredshirt","thebark","theharmbaton","theharmedbaton","thesingulo","thedrukcarp","thedrunkcarp", "scotch","officerbeersky","on"))
return
proc/ChangeSign(var/Text)
src.icon_state = "[Text]"
@@ -19,7 +19,7 @@
if(istype(I, /obj/item/weapon/card/id))
var/obj/item/weapon/card/id/card = I
if(access_bar in card.GetAccess())
var/sign_type = input(user, "What would you like to change the barsign to?") as null|anything in list("Off", "Pink Flamingo", "Magma Sea", "Limbo", "Rusty Axe", "Armok Bar", "Broken Drum", "Mead Bay", "The Damn Wall", "The Cavern", "Cindi Kate", "The Orchard", "The Saucy Clown", "The Clowns Head", "Whiskey Implant", "Carpe Carp", "Robust Roadhouse", "Greytide", "The Redshirt")
var/sign_type = input(user, "What would you like to change the barsign to?") as null|anything in list("Off", "Pink Flamingo", "Magma Sea", "Limbo", "Rusty Axe", "Armok Bar", "Broken Drum", "Mead Bay", "The Damn Wall", "The Cavern", "Cindi Kate", "The Orchard", "The Saucy Clown", "The Clowns Head", "Whiskey Implant", "Carpe Carp", "Robust Roadhouse", "Greytide", "The Redshirt", "The Bark", "The Harm Baton", "The Harmed Baton", "The Singulo", "The Druk Carp", "The Drunk Carp", "Scotch", "Officer Beersky", "On")
if(sign_type == null)
return
else
@@ -146,19 +146,19 @@
for(var/atom/movable/A as mob|obj in src)//pulls everything out of the locker and hits it with an explosion
A.loc = src.loc
A.ex_act(severity++)
del(src)
qdel(src)
if(2)
if(prob(50))
for (var/atom/movable/A as mob|obj in src)
A.loc = src.loc
A.ex_act(severity++)
del(src)
qdel(src)
if(3)
if(prob(5))
for(var/atom/movable/A as mob|obj in src)
A.loc = src.loc
A.ex_act(severity++)
del(src)
qdel(src)
/obj/structure/closet/bullet_act(var/obj/item/projectile/Proj)
if(!(Proj.damage_type == BRUTE || Proj.damage_type == BURN))
@@ -169,7 +169,7 @@
if(health <= 0)
for(var/atom/movable/A as mob|obj in src)
A.loc = src.loc
del(src)
qdel(src)
return
@@ -178,14 +178,14 @@
if(prob(75))
for(var/atom/movable/A as mob|obj in src)
A.loc = src.loc
del(src)
qdel(src)
/obj/structure/closet/meteorhit(obj/O as obj)
if(O.icon_state == "flaming")
for(var/mob/M in src)
M.meteorhit(O)
src.dump_contents()
del(src)
qdel(src)
/obj/structure/closet/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(src.opened)
@@ -202,7 +202,7 @@
new /obj/item/stack/sheet/metal(src.loc)
for(var/mob/M in viewers(src))
M.show_message("<span class='notice'>\The [src] has been cut apart by [user] with \the [WT].</span>", 3, "You hear welding.", 2)
del(src)
qdel(src)
return
if(isrobot(user))
return
@@ -310,5 +310,5 @@
return
visible_message("<span class='danger'>[user] [attack_message] the [src]!</span>")
dump_contents()
spawn(1) del(src)
spawn(1) qdel(src)
return 1
@@ -18,6 +18,7 @@
/obj/structure/closet/l3closet/general/New()
..()
qdel(contents)
contents = list()
new /obj/item/clothing/suit/bio_suit/general( src )
new /obj/item/clothing/head/bio_hood/general( src )
@@ -30,6 +31,7 @@
/obj/structure/closet/l3closet/virology/New()
..()
qdel(contents)
contents = list()
new /obj/item/clothing/suit/bio_suit/virology( src )
new /obj/item/clothing/head/bio_hood/virology( src )
@@ -44,6 +46,7 @@
/obj/structure/closet/l3closet/security/New()
..()
qdel(contents)
contents = list()
new /obj/item/clothing/suit/bio_suit/security( src )
new /obj/item/clothing/head/bio_hood/security( src )
@@ -56,6 +59,7 @@
/obj/structure/closet/l3closet/janitor/New()
..()
qdel(contents)
contents = list()
new /obj/item/clothing/suit/bio_suit/janitor( src )
new /obj/item/clothing/head/bio_hood/janitor( src )
@@ -68,6 +72,7 @@
/obj/structure/closet/l3closet/scientist/New()
..()
qdel(contents)
contents = list()
new /obj/item/clothing/suit/bio_suit/scientist( src )
new /obj/item/clothing/head/bio_hood/scientist( src )
@@ -23,7 +23,7 @@
spawn(4)
// Not really the best way to do this, but it's better than "contents = list()"!
for(var/atom/movable/AM in contents)
del(AM)
qdel(AM)
new /obj/item/clothing/under/color/white( src )
new /obj/item/clothing/shoes/white( src )
return
@@ -55,7 +55,7 @@
spawn(4)
// Not really the best way to do this, but it's better than "contents = list()"!
for(var/atom/movable/AM in contents)
del(AM)
qdel(AM)
new /obj/item/weapon/storage/backpack/satchel/withwallet( src )
new /obj/item/device/radio/headset( src )
return
@@ -40,7 +40,7 @@
desc = "If it takes forever, I will wait for you..."
if(health == 0) //meaning if the statue didn't find a valid target
del(src)
qdel(src)
return
processing_objects.Add(src)
@@ -56,7 +56,7 @@
if (timer <= 0)
dump_contents()
processing_objects.Remove(src)
del(src)
qdel(src)
/obj/structure/closet/statue/dump_contents()
@@ -130,4 +130,4 @@
user.dust()
dump_contents()
visible_message("<span class='warning'>[src] shatters!.</span>")
del(src)
qdel(src)
@@ -56,12 +56,12 @@
// teehee - Ah, tg coders...
if ("delete")
del(src)
qdel(src)
//If you want to re-add fire, just add "fire" = 15 to the pick list.
/*if ("fire")
new /obj/structure/closet/firecloset(src.loc)
del(src)*/
qdel(src)*/
/obj/structure/closet/emcloset/legacy/New()
..()
@@ -105,18 +105,18 @@
switch(severity)
if(1.0)
for(var/obj/O in src.contents)
del(O)
del(src)
qdel(O)
qdel(src)
return
if(2.0)
for(var/obj/O in src.contents)
if(prob(50))
del(O)
del(src)
qdel(O)
qdel(src)
return
if(3.0)
if (prob(50))
del(src)
qdel(src)
return
else
return
@@ -18,7 +18,7 @@
user.visible_message("<span class='notice'>[user] pries \the [src] open.</span>", \
"<span class='notice'>You pry open \the [src].</span>", \
"<span class='notice'>You hear splitting wood.</span>")
del(src)
qdel(src)
else
return attack_hand(user)

Some files were not shown because too many files have changed in this diff Show More