mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-23 03:57:13 +01:00
Merge pull request #6961 from Fox-McCloud/garbage-collect-stuffs
Garbage Collection and Code Cleanup
This commit is contained in:
@@ -0,0 +1,2 @@
|
||||
#define QDEL_IN(item, time) addtimer(GLOBAL_PROC, "qdel", time, FALSE, item)
|
||||
#define QDEL_NULL(item) qdel(item); item = null
|
||||
@@ -1162,13 +1162,6 @@
|
||||
/obj/item/weapon/screwdriver = 5,/obj/item/weapon/crowbar = 5)
|
||||
//everything after the power cell had no amounts, I improvised. -Sayu
|
||||
|
||||
|
||||
/obj/machinery/vending/eva
|
||||
name = "\improper Hardsuit Kits"
|
||||
desc = "Conversion kits for your alien hardsuit needs."
|
||||
products = list(/obj/item/device/modkit = 6,/obj/item/device/modkit/tajaran = 6,/obj/item/device/modkit/unathi = 6,/obj/item/device/modkit/skrell = 6,/obj/item/device/modkit/vox = 6)
|
||||
|
||||
|
||||
/obj/machinery/vending/sustenance
|
||||
name = "\improper Sustenance Vendor"
|
||||
desc = "A vending machine which vends food, as required by section 47-C of the NT's Prisoner Ethical Treatment Agreement."
|
||||
|
||||
@@ -8,6 +8,11 @@
|
||||
var/mob/owner = null // Carp doesn't attack owner, set when using in hand
|
||||
var/owned = 1 // Boolean, no owner to begin with
|
||||
|
||||
|
||||
/obj/item/toy/carpplushie/dehy_carp/Destroy()
|
||||
owner = null
|
||||
return ..()
|
||||
|
||||
// Attack self
|
||||
/obj/item/toy/carpplushie/dehy_carp/attack_self(mob/user as mob)
|
||||
src.add_fingerprint(user) // Anyone can add their fingerprints to it with this
|
||||
|
||||
@@ -1,87 +0,0 @@
|
||||
#define MODKIT_HELMET 1
|
||||
#define MODKIT_SUIT 2
|
||||
#define MODKIT_FULL 3
|
||||
|
||||
/obj/item/device/modkit
|
||||
name = "hardsuit modification kit"
|
||||
desc = "A kit containing all the needed tools and parts to modify a hardsuit for another user."
|
||||
icon_state = "modkit"
|
||||
var/parts = MODKIT_FULL
|
||||
var/target_species = "Human"
|
||||
|
||||
var/list/permitted_types = list(
|
||||
/obj/item/clothing/head/helmet/space/hardsuit,
|
||||
/obj/item/clothing/suit/space/hardsuit
|
||||
)
|
||||
|
||||
/obj/item/device/modkit/afterattack(obj/item/O, mob/user as mob, proximity)
|
||||
if(!proximity)
|
||||
return
|
||||
|
||||
if(!target_species)
|
||||
return //it shouldn't be null, okay?
|
||||
|
||||
if(!parts)
|
||||
to_chat(user, "<span class='warning'>This kit has no parts for this modification left.</span>")
|
||||
user.unEquip(src)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
var/allowed = 0
|
||||
for(var/permitted_type in permitted_types)
|
||||
if(istype(O, permitted_type))
|
||||
allowed = 1
|
||||
|
||||
var/obj/item/clothing/I = O
|
||||
if(!istype(I) || !allowed)
|
||||
to_chat(user, "<span class='notice'>[src] is unable to modify that.</span>")
|
||||
return
|
||||
|
||||
var/excluding = ("exclude" in I.species_restricted)
|
||||
var/in_list = (target_species in I.species_restricted)
|
||||
if(excluding ^ in_list)
|
||||
to_chat(user, "<span class='notice'>[I] is already modified.</span>")
|
||||
return
|
||||
|
||||
if(!isturf(O.loc))
|
||||
to_chat(user, "<span class='warning'>[O] must be safely placed on the ground for modification.</span>")
|
||||
return
|
||||
|
||||
playsound(user.loc, O.usesound, 100, 1)
|
||||
|
||||
user.visible_message("\red [user] opens \the [src] and modifies \the [O].","\red You open \the [src] and modify \the [O].")
|
||||
|
||||
I.refit_for_species(target_species)
|
||||
|
||||
if(istype(I, /obj/item/clothing/head/helmet))
|
||||
parts &= ~MODKIT_HELMET
|
||||
if(istype(I, /obj/item/clothing/suit))
|
||||
parts &= ~MODKIT_SUIT
|
||||
|
||||
if(!parts)
|
||||
user.unEquip(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/device/modkit/examine(mob/user)
|
||||
..(user)
|
||||
to_chat(user, "It looks as though it modifies hardsuits to fit [target_species] users.")
|
||||
|
||||
/obj/item/device/modkit/tajaran
|
||||
name = "Tajaran hardsuit modification kit"
|
||||
desc = "A kit containing all the needed tools and parts to modify a hardsuit for another user. This one looks like it's meant for Tajaran."
|
||||
target_species = "Tajaran"
|
||||
|
||||
/obj/item/device/modkit/unathi
|
||||
name = "Unathi hardsuit modification kit"
|
||||
desc = "A kit containing all the needed tools and parts to modify a hardsuit for another species. This one looks like it's meant for Unathi."
|
||||
target_species = "Unathi"
|
||||
|
||||
/obj/item/device/modkit/skrell
|
||||
name = "Skrell hardsuit modification kit"
|
||||
desc = "A kit containing all the needed tools and parts to modify a hardsuit for another species. This one looks like it's meant for Skrell."
|
||||
target_species = "Skrell"
|
||||
|
||||
/obj/item/device/modkit/vox
|
||||
name = "Vox hardsuit modification kit"
|
||||
desc = "A kit containing all the needed tools and parts to modify a hardsuit for another species. This one looks like it's meant for Vox."
|
||||
target_species = "Vox"
|
||||
@@ -32,6 +32,9 @@
|
||||
|
||||
// Syndicate device disguised as a multitool; it will turn red when an AI camera is nearby.
|
||||
|
||||
/obj/item/device/multitool/Destroy()
|
||||
buffer = null
|
||||
return ..()
|
||||
|
||||
/obj/item/device/multitool/ai_detect
|
||||
var/track_cooldown = 0
|
||||
@@ -56,7 +59,7 @@
|
||||
multitool_detect()
|
||||
icon_state = "[initial(icon_state)][detect_state]"
|
||||
track_cooldown = world.time + track_delay
|
||||
|
||||
|
||||
/obj/item/device/multitool/ai_detect/proc/multitool_detect()
|
||||
var/turf/our_turf = get_turf(src)
|
||||
for(var/mob/living/silicon/ai/AI in ai_list)
|
||||
@@ -76,7 +79,7 @@
|
||||
if(get_dist(our_turf, detect_turf) < rangewarning)
|
||||
detect_state = PROXIMITY_NEAR
|
||||
break
|
||||
|
||||
|
||||
/obj/item/device/multitool/ai_detect/admin
|
||||
desc = "Used for pulsing wires to test which to cut. Not recommended by doctors. Has a strange tag that says 'Grief in Safety'" //What else should I say for a meme item?
|
||||
track_delay = 5
|
||||
|
||||
@@ -27,6 +27,8 @@
|
||||
/obj/item/device/powersink/Destroy()
|
||||
processing_objects.Remove(src)
|
||||
processing_power_items.Remove(src)
|
||||
PN = null
|
||||
attached = null
|
||||
return ..()
|
||||
|
||||
/obj/item/device/powersink/attackby(var/obj/item/I, var/mob/user)
|
||||
|
||||
@@ -48,6 +48,7 @@ LIGHTERS ARE IN LIGHTERS.DM
|
||||
/obj/item/clothing/mask/cigarette/Destroy()
|
||||
if(reagents)
|
||||
qdel(reagents)
|
||||
reagents = null
|
||||
processing_objects -= src
|
||||
return ..()
|
||||
|
||||
|
||||
@@ -18,10 +18,11 @@
|
||||
..()
|
||||
|
||||
/obj/item/weapon/grenade/plastic/Destroy()
|
||||
qdel(nadeassembly)
|
||||
nadeassembly = null
|
||||
if(nadeassembly)
|
||||
qdel(nadeassembly)
|
||||
nadeassembly = null
|
||||
target = null
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/grenade/plastic/attackby(obj/item/I, mob/user, params)
|
||||
if(!nadeassembly && istype(I, /obj/item/device/assembly_holder))
|
||||
|
||||
@@ -34,6 +34,7 @@
|
||||
if(ptank)
|
||||
qdel(ptank)
|
||||
ptank = null
|
||||
previousturf = null
|
||||
return ..()
|
||||
|
||||
|
||||
|
||||
@@ -13,6 +13,10 @@
|
||||
var/improvised = 0
|
||||
var/garrote_time
|
||||
|
||||
/obj/item/weapon/twohanded/garrote/Destroy()
|
||||
strangling = null
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/twohanded/garrote/update_icon()
|
||||
if(strangling) // If we're strangling someone we want our icon to stay wielded
|
||||
icon_state = "garrot_unwrap"
|
||||
|
||||
@@ -26,6 +26,14 @@
|
||||
payload_name += " " // formatting, ignore me
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/Destroy()
|
||||
if(nadeassembly)
|
||||
qdel(nadeassembly)
|
||||
nadeassembly = null
|
||||
for(var/thing in beakers)
|
||||
qdel(thing)
|
||||
beakers.Cut()
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/examine(mob/user)
|
||||
..(user)
|
||||
|
||||
@@ -13,6 +13,12 @@
|
||||
var/list/signs = list()
|
||||
var/max_signs = 20
|
||||
|
||||
/obj/item/weapon/holosign_creator/Destroy()
|
||||
for(var/sign in signs)
|
||||
qdel(sign)
|
||||
signs.Cut()
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/holosign_creator/afterattack(atom/target, mob/user, flag)
|
||||
if(flag)
|
||||
var/turf/T = get_turf(target)
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
var/mopspeed = 30
|
||||
|
||||
/obj/item/weapon/mop/New()
|
||||
..()
|
||||
create_reagents(mopcap)
|
||||
janitorial_equipment += src
|
||||
|
||||
|
||||
@@ -201,11 +201,17 @@
|
||||
stunforce = 5
|
||||
hitcost = 3750
|
||||
slot_flags = SLOT_BACK
|
||||
var/obj/item/device/assembly/igniter/sparkler = 0
|
||||
var/obj/item/device/assembly/igniter/sparkler = null
|
||||
|
||||
/obj/item/weapon/melee/baton/cattleprod/New()
|
||||
..()
|
||||
sparkler = new (src)
|
||||
sparkler = new(src)
|
||||
|
||||
/obj/item/weapon/melee/baton/cattleprod/Destroy()
|
||||
if(sparkler)
|
||||
qdel(sparkler)
|
||||
sparkler = null
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/melee/baton/cattleprod/baton_stun()
|
||||
if(sparkler.activate())
|
||||
|
||||
@@ -19,6 +19,11 @@
|
||||
burntime = 15
|
||||
var/obj/item/weapon/canvas/painting = null
|
||||
|
||||
/obj/structure/easel/Destroy()
|
||||
if(painting)
|
||||
qdel(painting)
|
||||
painting = null
|
||||
return ..()
|
||||
|
||||
//Adding canvases
|
||||
/obj/structure/easel/attackby(var/obj/item/I, var/mob/user, params)
|
||||
|
||||
@@ -22,6 +22,15 @@ var/global/list/captain_display_cases = list()
|
||||
var/obj/item/device/assembly/prox_sensor/sensor = null
|
||||
var/state = DISPLAYCASE_FRAME_CIRCUIT
|
||||
|
||||
/obj/structure/displaycase_frame/Destroy()
|
||||
if(circuit)
|
||||
qdel(circuit)
|
||||
circuit = null
|
||||
if(sensor)
|
||||
qdel(sensor)
|
||||
sensor = null
|
||||
return ..()
|
||||
|
||||
/obj/structure/displaycase_frame/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
|
||||
var/pstate = state
|
||||
var/turf/T = get_turf(src)
|
||||
|
||||
@@ -17,6 +17,12 @@
|
||||
/obj/structure/door_assembly/New()
|
||||
update_state()
|
||||
|
||||
/obj/structure/door_assembly/Destroy()
|
||||
if(electronics)
|
||||
qdel(electronics)
|
||||
electronics = null
|
||||
return ..()
|
||||
|
||||
/obj/structure/door_assembly/door_assembly_com
|
||||
base_icon_state = "com"
|
||||
base_name = "Command Airlock"
|
||||
|
||||
@@ -14,6 +14,33 @@
|
||||
var/obj/item/weapon/storage/toolbox/emergency/myredtoolbox = null
|
||||
var/obj/item/taperoll/engineering/myengitape = null
|
||||
|
||||
/obj/structure/engineeringcart/Destroy()
|
||||
if(myglass)
|
||||
qdel(myglass)
|
||||
myglass = null
|
||||
if(mymetal)
|
||||
qdel(mymetal)
|
||||
mymetal = null
|
||||
if(myplasteel)
|
||||
qdel(myplasteel)
|
||||
myplasteel = null
|
||||
if(myflashlight)
|
||||
qdel(myflashlight)
|
||||
myflashlight = null
|
||||
if(mybluetoolbox)
|
||||
qdel(mybluetoolbox)
|
||||
mybluetoolbox = null
|
||||
if(myyellowtoolbox)
|
||||
qdel(myyellowtoolbox)
|
||||
myyellowtoolbox = null
|
||||
if(myredtoolbox)
|
||||
qdel(myredtoolbox)
|
||||
myredtoolbox = null
|
||||
if(myengitape)
|
||||
qdel(myengitape)
|
||||
myengitape = null
|
||||
return ..()
|
||||
|
||||
/obj/structure/engineeringcart/proc/put_in_cart(obj/item/I, mob/user)
|
||||
user.drop_item()
|
||||
I.loc = src
|
||||
|
||||
@@ -8,6 +8,11 @@
|
||||
var/obj/item/weapon/extinguisher/has_extinguisher = new/obj/item/weapon/extinguisher
|
||||
var/opened = 0
|
||||
|
||||
/obj/structure/extinguisher_cabinet/Destroy()
|
||||
if(has_extinguisher)
|
||||
qdel(has_extinguisher)
|
||||
has_extinguisher = null
|
||||
return ..()
|
||||
|
||||
/obj/structure/extinguisher_cabinet/attackby(obj/item/O, mob/user, params)
|
||||
if(isrobot(user) || isalien(user))
|
||||
|
||||
@@ -19,12 +19,24 @@
|
||||
|
||||
|
||||
/obj/structure/janitorialcart/New()
|
||||
..()
|
||||
create_reagents(100)
|
||||
janitorial_equipment += src
|
||||
|
||||
|
||||
/obj/structure/janitorialcart/Destroy()
|
||||
janitorial_equipment -= src
|
||||
if(mybag)
|
||||
qdel(mybag)
|
||||
mybag = null
|
||||
if(mymop)
|
||||
qdel(mymop)
|
||||
mymop = null
|
||||
if(myspray)
|
||||
qdel(myspray)
|
||||
myspray = null
|
||||
if(myreplacer)
|
||||
qdel(myreplacer)
|
||||
myreplacer = null
|
||||
return ..()
|
||||
|
||||
/obj/structure/janitorialcart/proc/wet_mop(obj/item/weapon/mop, mob/user)
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
var/amount_per_transfer_from_this = 5 //shit I dunno, adding this so syringes stop runtime erroring. --NeoFite
|
||||
|
||||
/obj/structure/mopbucket/New()
|
||||
..()
|
||||
create_reagents(100)
|
||||
janitorial_equipment += src
|
||||
|
||||
|
||||
@@ -8,45 +8,50 @@
|
||||
flags = CONDUCT
|
||||
var/obj/item/target/pinned_target // the current pinned target
|
||||
|
||||
Move()
|
||||
..()
|
||||
// Move the pinned target along with the stake
|
||||
if(pinned_target in view(3, src))
|
||||
pinned_target.loc = loc
|
||||
/obj/structure/target_stake/Destroy()
|
||||
if(pinned_target)
|
||||
qdel(pinned_target)
|
||||
pinned_target = null
|
||||
return ..()
|
||||
|
||||
else // Sanity check: if the pinned target can't be found in immediate view
|
||||
pinned_target = null
|
||||
density = 1
|
||||
/obj/structure/target_stake/Move()
|
||||
..()
|
||||
// Move the pinned target along with the stake
|
||||
if(pinned_target in view(3, src))
|
||||
pinned_target.loc = loc
|
||||
|
||||
attackby(obj/item/W as obj, mob/user as mob, params)
|
||||
// Putting objects on the stake. Most importantly, targets
|
||||
if(pinned_target)
|
||||
return // get rid of that pinned target first!
|
||||
else // Sanity check: if the pinned target can't be found in immediate view
|
||||
pinned_target = null
|
||||
density = 1
|
||||
|
||||
if(istype(W, /obj/item/target))
|
||||
density = 0
|
||||
W.density = 1
|
||||
user.drop_item(src)
|
||||
W.loc = loc
|
||||
W.layer = 3.1
|
||||
pinned_target = W
|
||||
to_chat(user, "You slide the target into the stake.")
|
||||
return
|
||||
/obj/structure/target_stake/attackby(obj/item/W, mob/user, params)
|
||||
// Putting objects on the stake. Most importantly, targets
|
||||
if(pinned_target)
|
||||
return // get rid of that pinned target first!
|
||||
|
||||
attack_hand(mob/user as mob)
|
||||
// taking pinned targets off!
|
||||
if(pinned_target)
|
||||
density = 1
|
||||
pinned_target.density = 0
|
||||
pinned_target.layer = OBJ_LAYER
|
||||
if(istype(W, /obj/item/target))
|
||||
density = 0
|
||||
W.density = 1
|
||||
user.drop_item(src)
|
||||
W.loc = loc
|
||||
W.layer = 3.1
|
||||
pinned_target = W
|
||||
to_chat(user, "You slide the target into the stake.")
|
||||
|
||||
pinned_target.loc = user.loc
|
||||
if(ishuman(user))
|
||||
if(!user.get_active_hand())
|
||||
user.put_in_hands(pinned_target)
|
||||
to_chat(user, "You take the target out of the stake.")
|
||||
else
|
||||
pinned_target.loc = get_turf(user)
|
||||
/obj/structure/target_stake/attack_hand(mob/user)
|
||||
// taking pinned targets off!
|
||||
if(pinned_target)
|
||||
density = 1
|
||||
pinned_target.density = 0
|
||||
pinned_target.layer = OBJ_LAYER
|
||||
|
||||
pinned_target.loc = user.loc
|
||||
if(ishuman(user))
|
||||
if(!user.get_active_hand())
|
||||
user.put_in_hands(pinned_target)
|
||||
to_chat(user, "You take the target out of the stake.")
|
||||
else
|
||||
pinned_target.loc = get_turf(user)
|
||||
to_chat(user, "You take the target out of the stake.")
|
||||
|
||||
pinned_target = null
|
||||
pinned_target = null
|
||||
@@ -14,9 +14,13 @@
|
||||
|
||||
|
||||
/obj/structure/toilet/New()
|
||||
..()
|
||||
open = round(rand(0, 1))
|
||||
update_icon()
|
||||
|
||||
/obj/structure/toilet/Destroy()
|
||||
swirlie = null
|
||||
return ..()
|
||||
|
||||
/obj/structure/toilet/attack_hand(mob/living/user)
|
||||
if(swirlie)
|
||||
|
||||
@@ -34,6 +34,9 @@ obj/structure/windoor_assembly/New(dir=NORTH)
|
||||
|
||||
obj/structure/windoor_assembly/Destroy()
|
||||
density = 0
|
||||
if(electronics)
|
||||
qdel(electronics)
|
||||
electronics = null
|
||||
air_update_turf(1)
|
||||
return ..()
|
||||
|
||||
|
||||
@@ -10,7 +10,9 @@
|
||||
..()
|
||||
|
||||
/obj/item/clothing/suit/hooded/Destroy()
|
||||
qdel(hood)
|
||||
if(hood)
|
||||
qdel(hood)
|
||||
hood = null
|
||||
return ..()
|
||||
|
||||
/obj/item/clothing/suit/hooded/proc/MakeHood()
|
||||
|
||||
@@ -82,7 +82,7 @@ var/global/datum/controller/process/garbage_collector/garbageCollector
|
||||
#undef GC_COLLECTIONS_PER_TICK
|
||||
|
||||
/datum/controller/process/garbage_collector/proc/hardDel(var/datum/D)
|
||||
gc_hard_del_types |= D.type
|
||||
gc_hard_del_types["[D.type]"]++
|
||||
D.hard_deleted = 1
|
||||
if(!D.gcDestroyed)
|
||||
spawn(-1)
|
||||
|
||||
@@ -25,9 +25,9 @@
|
||||
to_chat(usr, "<span class='notice'>No hard del()'d types found.</span>")
|
||||
return
|
||||
|
||||
to_chat(usr, "Types hard del()'d by the GC:")
|
||||
to_chat(usr, "Types hard del()'d by the GC and number of times failed:")
|
||||
for(var/A in gc_hard_del_types)
|
||||
to_chat(usr, "[A]")
|
||||
to_chat(usr, "[A] - [gc_hard_del_types[A]] times")
|
||||
|
||||
#ifdef TESTING
|
||||
/client/var/running_find_references
|
||||
|
||||
@@ -34,6 +34,9 @@
|
||||
if(beaker)
|
||||
qdel(beaker)
|
||||
beaker = null
|
||||
if(files)
|
||||
qdel(files)
|
||||
files = null
|
||||
return ..()
|
||||
|
||||
/obj/machinery/biogenerator/ex_act(severity)
|
||||
@@ -208,7 +211,7 @@
|
||||
|
||||
/obj/machinery/biogenerator/attack_hand(mob/user)
|
||||
interact(user)
|
||||
|
||||
|
||||
/obj/machinery/biogenerator/attack_ghost(mob/user)
|
||||
interact(user)
|
||||
|
||||
|
||||
@@ -24,13 +24,26 @@
|
||||
/obj/machinery/plantgenes/New()
|
||||
..()
|
||||
component_parts = list()
|
||||
component_parts += new /obj/item/weapon/circuitboard/plantgenes(src)
|
||||
component_parts += new /obj/item/weapon/stock_parts/console_screen(src)
|
||||
component_parts += new /obj/item/weapon/stock_parts/scanning_module(src)
|
||||
component_parts += new /obj/item/weapon/stock_parts/micro_laser(src)
|
||||
component_parts += new /obj/item/weapon/stock_parts/manipulator(src)
|
||||
component_parts += new /obj/item/weapon/circuitboard/plantgenes(null)
|
||||
component_parts += new /obj/item/weapon/stock_parts/console_screen(null)
|
||||
component_parts += new /obj/item/weapon/stock_parts/scanning_module(null)
|
||||
component_parts += new /obj/item/weapon/stock_parts/micro_laser(null)
|
||||
component_parts += new /obj/item/weapon/stock_parts/manipulator(null)
|
||||
RefreshParts()
|
||||
|
||||
/obj/machinery/plantgenes/Destroy()
|
||||
core_genes.Cut()
|
||||
reagent_genes.Cut()
|
||||
trait_genes.Cut()
|
||||
target = null
|
||||
if(seed)
|
||||
qdel(seed)
|
||||
seed = null
|
||||
if(disk)
|
||||
qdel(disk)
|
||||
disk = null
|
||||
return ..()
|
||||
|
||||
/obj/machinery/plantgenes/RefreshParts()
|
||||
rating = 0
|
||||
for(var/I in component_parts)
|
||||
@@ -90,7 +103,7 @@
|
||||
if(..())
|
||||
return
|
||||
interact(user)
|
||||
|
||||
|
||||
/obj/machinery/plantgenes/attack_ghost(mob/user)
|
||||
interact(user)
|
||||
|
||||
@@ -282,9 +295,9 @@
|
||||
repaint_seed()
|
||||
if("extract")
|
||||
if(disk && !disk.read_only)
|
||||
disk.gene = G
|
||||
if(istype(G, /datum/plant_gene/core/potency))
|
||||
var/datum/plant_gene/core/gene = G
|
||||
disk.gene = G.Copy()
|
||||
if(istype(disk.gene, /datum/plant_gene/core/potency))
|
||||
var/datum/plant_gene/core/gene = disk.gene
|
||||
gene.value = min(gene.value, max_extract_pot)
|
||||
disk.update_name()
|
||||
qdel(seed)
|
||||
@@ -370,6 +383,12 @@
|
||||
pixel_x = rand(-5, 5)
|
||||
pixel_y = rand(-5, 5)
|
||||
|
||||
/obj/item/weapon/disk/plantgene/Destroy()
|
||||
if(gene)
|
||||
qdel(gene)
|
||||
gene = null
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/disk/plantgene/attackby(obj/item/weapon/W, mob/user, params)
|
||||
..()
|
||||
if(istype(W, /obj/item/weapon/pen))
|
||||
|
||||
@@ -39,7 +39,11 @@
|
||||
transform *= TransformUsingVariable(seed.potency, 100, 0.5) //Makes the resulting produce's sprite larger or smaller based on potency!
|
||||
add_juice()
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/Destroy()
|
||||
if(seed)
|
||||
qdel(seed)
|
||||
seed = null
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/proc/add_juice()
|
||||
if(reagents)
|
||||
|
||||
@@ -31,6 +31,11 @@
|
||||
transform *= TransformUsingVariable(seed.potency, 100, 0.5)
|
||||
add_juice()
|
||||
|
||||
/obj/item/weapon/grown/Destroy()
|
||||
if(seed)
|
||||
qdel(seed)
|
||||
seed = null
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/grown/attackby(obj/item/O, mob/user, params)
|
||||
..()
|
||||
|
||||
@@ -68,6 +68,12 @@
|
||||
for(var/reag_id in reagents_add)
|
||||
genes += new /datum/plant_gene/reagent(reag_id, reagents_add[reag_id])
|
||||
|
||||
/obj/item/seeds/Destroy()
|
||||
for(var/thing in genes)
|
||||
qdel(thing)
|
||||
genes.Cut()
|
||||
return ..()
|
||||
|
||||
/obj/item/seeds/proc/Copy()
|
||||
var/obj/item/seeds/S = new type(null, 1)
|
||||
// Copy all the stats
|
||||
|
||||
@@ -48,8 +48,7 @@
|
||||
|
||||
if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/monkeycube))
|
||||
var/obj/item/weapon/reagent_containers/food/snacks/monkeycube/cube = O
|
||||
if(!cube.wrapped)
|
||||
cube.Expand()
|
||||
cube.Expand()
|
||||
// Dehydrated carp
|
||||
if(istype(O, /obj/item/toy/carpplushie/dehy_carp))
|
||||
var/obj/item/toy/carpplushie/dehy_carp/dehy = O
|
||||
|
||||
@@ -1146,11 +1146,11 @@
|
||||
|
||||
update()
|
||||
return
|
||||
|
||||
|
||||
/obj/structure/disposalpipe/trunk/Destroy()
|
||||
if(istype(linked, /obj/structure/disposaloutlet))
|
||||
var/obj/structure/disposaloutlet/O = linked
|
||||
O.expel()
|
||||
O.expel(animation = 0)
|
||||
else if(istype(linked, /obj/machinery/disposal))
|
||||
var/obj/machinery/disposal/D = linked
|
||||
if(D.trunk == src)
|
||||
@@ -1207,7 +1207,7 @@
|
||||
playsound(loc, W.usesound, 100, 1)
|
||||
to_chat(user, "<span class='notice'>Slicing the disposal pipe.</span>")
|
||||
if(do_after(user, 30 * W.toolspeed, target = src))
|
||||
if(!W.isOn())
|
||||
if(!W.isOn())
|
||||
return
|
||||
welded()
|
||||
else
|
||||
@@ -1290,12 +1290,13 @@
|
||||
|
||||
// expel the contents of the holder object, then delete it
|
||||
// called when the holder exits the outlet
|
||||
proc/expel(var/obj/structure/disposalholder/H)
|
||||
proc/expel(var/obj/structure/disposalholder/H, animation = 1)
|
||||
|
||||
flick("outlet-open", src)
|
||||
playsound(src, 'sound/machines/warning-buzzer.ogg', 50, 0, 0)
|
||||
sleep(20) //wait until correct animation frame
|
||||
playsound(src, 'sound/machines/hiss.ogg', 50, 0, 0)
|
||||
if(animation)
|
||||
flick("outlet-open", src)
|
||||
playsound(src, 'sound/machines/warning-buzzer.ogg', 50, 0, 0)
|
||||
sleep(20) //wait until correct animation frame
|
||||
playsound(src, 'sound/machines/hiss.ogg', 50, 0, 0)
|
||||
|
||||
if(H)
|
||||
for(var/atom/movable/AM in H)
|
||||
@@ -1308,7 +1309,6 @@
|
||||
H.vent_gas(src.loc)
|
||||
qdel(H)
|
||||
|
||||
return
|
||||
|
||||
attackby(var/obj/item/I, var/mob/user, params)
|
||||
if(!I || !user)
|
||||
|
||||
@@ -19,6 +19,12 @@
|
||||
|
||||
dir = EAST
|
||||
|
||||
/obj/structure/spacepod_frame/Destroy()
|
||||
if(construct)
|
||||
qdel(construct)
|
||||
construct = null
|
||||
return ..()
|
||||
|
||||
/obj/structure/spacepod_frame/attackby(obj/item/W as obj, mob/user as mob, params)
|
||||
if(!construct || !construct.action(W, user))
|
||||
..()
|
||||
|
||||
+1
-1
@@ -66,6 +66,7 @@
|
||||
#include "code\__HELPERS\matrices.dm"
|
||||
#include "code\__HELPERS\mobs.dm"
|
||||
#include "code\__HELPERS\names.dm"
|
||||
#include "code\__HELPERS\qdel.dm"
|
||||
#include "code\__HELPERS\sanitize_values.dm"
|
||||
#include "code\__HELPERS\text.dm"
|
||||
#include "code\__HELPERS\time.dm"
|
||||
@@ -724,7 +725,6 @@
|
||||
#include "code\game\objects\items\devices\laserpointer.dm"
|
||||
#include "code\game\objects\items\devices\lightreplacer.dm"
|
||||
#include "code\game\objects\items\devices\megaphone.dm"
|
||||
#include "code\game\objects\items\devices\modkit.dm"
|
||||
#include "code\game\objects\items\devices\multitool.dm"
|
||||
#include "code\game\objects\items\devices\paicard.dm"
|
||||
#include "code\game\objects\items\devices\pipe_painter.dm"
|
||||
|
||||
Reference in New Issue
Block a user