diff --git a/modular_sand/code/game/machinery/telecomms/machines/receiver.dm b/modular_sand/code/game/machinery/telecomms/machines/receiver.dm index f1f313d3a2..b5be66fa83 100644 --- a/modular_sand/code/game/machinery/telecomms/machines/receiver.dm +++ b/modular_sand/code/game/machinery/telecomms/machines/receiver.dm @@ -36,6 +36,10 @@ idle_power_usage = 0 var/obj/item/integrated_circuit/input/tcomm_interceptor/holder +/obj/machinery/telecomms/receiver/circuit/Destroy() + holder = null + . = ..() + /obj/machinery/telecomms/receiver/circuit/receive_signal(datum/signal/signal) if(!holder.get_pin_data(IC_INPUT, 1)) return diff --git a/modular_sand/code/game/objects/items/chrono_eraser.dm b/modular_sand/code/game/objects/items/chrono_eraser.dm index a168920e1d..c341ca3bfc 100644 --- a/modular_sand/code/game/objects/items/chrono_eraser.dm +++ b/modular_sand/code/game/objects/items/chrono_eraser.dm @@ -136,6 +136,10 @@ if(istype(C)) gun = C.gun +/obj/item/projectile/energy/chrono_beam/Destroy() + gun = null + return ..() + /obj/item/projectile/energy/chrono_beam/on_hit(atom/target) if(target && gun && isliving(target)) var/obj/structure/chrono_field/F = new(target.loc, target, gun) @@ -154,6 +158,10 @@ gun = loc . = ..() +/obj/item/ammo_casing/energy/chrono_beam/Destroy() + gun = null + return ..() + /obj/structure/chrono_field name = "eradication field" desc = "An aura of time-bluespace energy." diff --git a/modular_sand/code/modules/clothing/spacesuits/chronosuit.dm b/modular_sand/code/modules/clothing/spacesuits/chronosuit.dm index fd6ce75120..945f95424d 100644 --- a/modular_sand/code/modules/clothing/spacesuits/chronosuit.dm +++ b/modular_sand/code/modules/clothing/spacesuits/chronosuit.dm @@ -15,6 +15,10 @@ suit.deactivate(1, 1) ..() +/obj/item/clothing/head/helmet/space/chronos/helmet/Destroy() + suit = null + return ..() + /obj/item/clothing/suit/space/chronos name = "Chronosuit" desc = "An advanced spacesuit equipped with time-bluespace teleportation and anti-compression technology." @@ -42,6 +46,13 @@ teleport_now.chronosuit = src teleport_now.target = src +/obj/item/clothing/suit/space/chronos/Destroy() + teleport_now.chronosuit = null + teleport_now.target = null + QDEL_NULL(teleport_now) + helmet = null + return ..() + /obj/item/clothing/suit/space/chronos/proc/new_camera(mob/user) if(camera) qdel(camera) diff --git a/modular_sand/code/modules/integrated_electronics/subtypes/input.dm b/modular_sand/code/modules/integrated_electronics/subtypes/input.dm index 118882922c..cfdbb60a5c 100644 --- a/modular_sand/code/modules/integrated_electronics/subtypes/input.dm +++ b/modular_sand/code/modules/integrated_electronics/subtypes/input.dm @@ -48,9 +48,9 @@ receiver.holder = src /obj/item/integrated_circuit/input/tcomm_interceptor/Destroy() - qdel(receiver) + QDEL_NULL(receiver) GLOB.ic_jammers -= src - ..() + return ..() /obj/item/integrated_circuit/input/tcomm_interceptor/receive_signal(datum/signal/signal) if((signal.transmission_method == TRANSMISSION_SUBSPACE) && get_pin_data(IC_INPUT, 1)) diff --git a/modular_sand/code/modules/integrated_electronics/subtypes/output.dm b/modular_sand/code/modules/integrated_electronics/subtypes/output.dm index 1c16cb3445..c1cee65d1b 100644 --- a/modular_sand/code/modules/integrated_electronics/subtypes/output.dm +++ b/modular_sand/code/modules/integrated_electronics/subtypes/output.dm @@ -29,7 +29,7 @@ /obj/item/integrated_circuit/output/text_to_radio/Destroy() qdel(radio) GLOB.ic_speakers -= src - ..() + return ..() /obj/item/integrated_circuit/output/text_to_radio/on_data_written() var/freq = get_pin_data(IC_INPUT, 2) diff --git a/modular_sand/code/modules/mining/lavaland/necropolis_chests.dm b/modular_sand/code/modules/mining/lavaland/necropolis_chests.dm index c96d95d358..85f7e6b0eb 100644 --- a/modular_sand/code/modules/mining/lavaland/necropolis_chests.dm +++ b/modular_sand/code/modules/mining/lavaland/necropolis_chests.dm @@ -52,7 +52,7 @@ icon_state = "raft" /obj/vehicle/ridden/lavaboat/dragon/gladiator/Initialize(mapload) - ..() + . = ..() var/datum/component/riding/D = LoadComponent(/datum/component/riding) D.vehicle_move_delay = 1 D.allowed_turf_typecache = typecacheof(/turf/open) //thanks Bob for telling me it was on purpose @@ -507,125 +507,89 @@ qdel(src) //normal chests -/obj/structure/closet/crate/necropolis/tendril/PopulateContents() +/obj/structure/closet/crate/necropolis/tendril/PopulateContents(spawn_cell = TRUE) var/loot = rand(1,35) - new /obj/item/stock_parts/cell/high/plus/argent(src) + if(spawn_cell) + new /obj/item/stock_parts/cell/high/plus/argent(src) switch(loot) if(1) new /obj/item/shared_storage/red(src) - return list(/obj/item/shared_storage/red) if(2) new /obj/item/clothing/suit/space/hardsuit/cult(src) - return list(/obj/item/clothing/suit/space/hardsuit/cult) if(3) new /obj/item/soulstone/anybody(src) - return list(/obj/item/soulstone/anybody) if(4) new /obj/item/katana/cursed(src) - return list(/obj/item/katana/cursed) if(5) new /obj/item/clothing/glasses/godeye(src) - return list(/obj/item/clothing/glasses/godeye) if(6) new /obj/item/reagent_containers/glass/bottle/potion/flight(src) - return list(/obj/item/reagent_containers/glass/bottle/potion/flight) if(7) new /obj/item/pickaxe/diamond(src) - return list(/obj/item/pickaxe/diamond) if(8) if(prob(50)) new /obj/item/disk/design_disk/modkit_disc/resonator_blast(src) - return list(/obj/item/disk/design_disk/modkit_disc/resonator_blast) else new /obj/item/disk/design_disk/modkit_disc/rapid_repeater(src) - return list(/obj/item/disk/design_disk/modkit_disc/rapid_repeater) if(9) new /obj/item/rod_of_asclepius(src) - return list(/obj/item/rod_of_asclepius) if(10) new /obj/item/organ/heart/cursed/wizard(src) - return list(/obj/item/organ/heart/cursed/wizard) if(11) new /obj/item/ship_in_a_bottle(src) - return list(/obj/item/ship_in_a_bottle) if(12) new /obj/item/clothing/suit/space/hardsuit/ert/paranormal/beserker/damaged(src) - return list(/obj/item/clothing/suit/space/hardsuit/ert/paranormal/beserker) if(13) new /obj/item/jacobs_ladder(src) - return list(/obj/item/jacobs_ladder) if(14) new /obj/item/nullrod/scythe/talking(src) - return list(/obj/item/nullrod/scythe/talking) if(15) new /obj/item/nullrod/armblade(src) - return list(/obj/item/nullrod/armblade) if(16) new /obj/item/guardiancreator(src) - return list(/obj/item/guardiancreator) if(17) if(prob(50)) new /obj/item/disk/design_disk/modkit_disc/mob_and_turf_aoe(src) - return list(/obj/item/disk/design_disk/modkit_disc/mob_and_turf_aoe) else new /obj/item/disk/design_disk/modkit_disc/bounty(src) - return list(/obj/item/disk/design_disk/modkit_disc/bounty) if(18) new /obj/item/warp_cube/red(src) - return list(/obj/item/warp_cube/red) if(19) new /obj/item/wisp_lantern(src) - return list(/obj/item/wisp_lantern) if(20) new /obj/item/immortality_talisman(src) - return list(/obj/item/immortality_talisman) if(21) new /obj/item/gun/magic/hook(src) - return list(/obj/item/gun/magic/hook) if(22) new /obj/item/voodoo(src) - return list(/obj/item/voodoo) if(23) new /obj/item/grenade/clusterbuster/inferno(src) - return list(/obj/item/grenade/clusterbuster/inferno) if(24) new /obj/item/reagent_containers/food/drinks/bottle/holywater/hell(src) new /obj/item/clothing/suit/space/hardsuit/ert/paranormal/inquisitor/damaged(src) - return list(/obj/item/clothing/suit/space/hardsuit/ert/paranormal/inquisitor, /obj/item/reagent_containers/food/drinks/bottle/holywater/hell) if(25) new /obj/item/book/granter/spell/summonitem(src) - return list(/obj/item/book/granter/spell/summonitem) if(26) new /obj/item/book_of_babel(src) - return list(/obj/item/book_of_babel) if(27) new /obj/item/borg/upgrade/modkit/lifesteal(src) new /obj/item/bedsheet/cult(src) - return list(/obj/item/borg/upgrade/modkit/lifesteal, /obj/item/bedsheet/cult) if(28) new /obj/item/clothing/neck/necklace/memento_mori(src) - return list(/obj/item/clothing/neck/necklace/memento_mori) if(29) new /obj/item/gun/magic/staff/door(src) - return list(/obj/item/gun/magic/staff/door) if(30) new /obj/item/katana/necropolis(src) - return list(/obj/item/katana/necropolis) if(31) new /obj/item/gun/ballistic/shotgun/boltaction(src) - return list(/obj/item/gun/ballistic/shotgun/boltaction) if(32) new /obj/item/gun/magic/staff/locker/trashy - return list(/obj/item/gun/magic/staff/locker) if(33) new /obj/item/clothing/accessory/fireresist(src) - return list(/obj/item/clothing/accessory/fireresist) if(34) new /obj/item/clothing/accessory/lavawalk(src) - return list(/obj/item/clothing/accessory/lavawalk) if(35) new /obj/item/gun/energy/kinetic_accelerator/premiumka/ashenka(src) - return list(/obj/item/gun/energy/kinetic_accelerator/premiumka/ashenka) /obj/item/gun/magic/staff/locker/trashy max_charges = 1 @@ -781,12 +745,8 @@ /obj/structure/closet/crate/necropolis/tendril/legion_loot name = "screeching legion crate" -/obj/structure/closet/crate/necropolis/tendril/legion_loot/PopulateContents() - var/obj/structure/closet/crate/necropolis/tendril/N = new /obj/structure/closet/crate/necropolis/tendril() - var/list/weedeater = N.PopulateContents() - for(var/loot in weedeater) - new loot(src) - qdel(N) +/obj/structure/closet/crate/necropolis/tendril/legion_loot/PopulateContents(spawn_cell) + . = ..(spawn_cell = FALSE) // I hate the previous guy who wrote a lot of bad code instead of this 1 line /obj/structure/closet/crate/necropolis/legion name = "echoing legion crate" @@ -804,13 +764,86 @@ new /obj/item/clothing/mask/gas/dagoth(src) new /obj/item/crusher_trophy/golden_skull(src) new /obj/item/borg/upgrade/modkit/skull(src) - var/obj/structure/closet/crate/necropolis/tendril/T = new /obj/structure/closet/crate/necropolis/tendril //Yup, i know, VERY spaghetti code. - var/obj/item/L - for(var/i = 0, i < 3, i++) - L = T.PopulateContents() - for(var/loot in L) - new loot(src) - qdel(T) + var/loot = rand(1,35) // Copying 1 switch statement is still better than having 9 runtimes on spawn + switch(loot) + if(1) + new /obj/item/shared_storage/red(src) + if(2) + new /obj/item/clothing/suit/space/hardsuit/cult(src) + if(3) + new /obj/item/soulstone/anybody(src) + if(4) + new /obj/item/katana/cursed(src) + if(5) + new /obj/item/clothing/glasses/godeye(src) + if(6) + new /obj/item/reagent_containers/glass/bottle/potion/flight(src) + if(7) + new /obj/item/pickaxe/diamond(src) + if(8) + if(prob(50)) + new /obj/item/disk/design_disk/modkit_disc/resonator_blast(src) + else + new /obj/item/disk/design_disk/modkit_disc/rapid_repeater(src) + if(9) + new /obj/item/rod_of_asclepius(src) + if(10) + new /obj/item/organ/heart/cursed/wizard(src) + if(11) + new /obj/item/ship_in_a_bottle(src) + if(12) + new /obj/item/clothing/suit/space/hardsuit/ert/paranormal/beserker/damaged(src) + if(13) + new /obj/item/jacobs_ladder(src) + if(14) + new /obj/item/nullrod/scythe/talking(src) + if(15) + new /obj/item/nullrod/armblade(src) + if(16) + new /obj/item/guardiancreator(src) + if(17) + if(prob(50)) + new /obj/item/disk/design_disk/modkit_disc/mob_and_turf_aoe(src) + else + new /obj/item/disk/design_disk/modkit_disc/bounty(src) + if(18) + new /obj/item/warp_cube/red(src) + if(19) + new /obj/item/wisp_lantern(src) + if(20) + new /obj/item/immortality_talisman(src) + if(21) + new /obj/item/gun/magic/hook(src) + if(22) + new /obj/item/voodoo(src) + if(23) + new /obj/item/grenade/clusterbuster/inferno(src) + if(24) + new /obj/item/reagent_containers/food/drinks/bottle/holywater/hell(src) + new /obj/item/clothing/suit/space/hardsuit/ert/paranormal/inquisitor/damaged(src) + if(25) + new /obj/item/book/granter/spell/summonitem(src) + if(26) + new /obj/item/book_of_babel(src) + if(27) + new /obj/item/borg/upgrade/modkit/lifesteal(src) + new /obj/item/bedsheet/cult(src) + if(28) + new /obj/item/clothing/neck/necklace/memento_mori(src) + if(29) + new /obj/item/gun/magic/staff/door(src) + if(30) + new /obj/item/katana/necropolis(src) + if(31) + new /obj/item/gun/ballistic/shotgun/boltaction(src) + if(32) + new /obj/item/gun/magic/staff/locker/trashy + if(33) + new /obj/item/clothing/accessory/fireresist(src) + if(34) + new /obj/item/clothing/accessory/lavawalk(src) + if(35) + new /obj/item/gun/energy/kinetic_accelerator/premiumka/ashenka(src) //dagoth ur mask /obj/item/clothing/mask/gas/dagoth diff --git a/modular_sand/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/fanaticminer.dm b/modular_sand/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/fanaticminer.dm index aeb10dfb71..0bb6a3db21 100644 --- a/modular_sand/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/fanaticminer.dm +++ b/modular_sand/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/fanaticminer.dm @@ -261,5 +261,5 @@ /obj/item/melee/diamondaxe/priest /obj/item/melee/diamondaxe/priest/Initialize(mapload) - ..() + . = ..() QDEL_IN(src, 30) diff --git a/modular_sand/code/modules/projectiles/guns/energy/kinetic_accelerator.dm b/modular_sand/code/modules/projectiles/guns/energy/kinetic_accelerator.dm index 12189b10ba..7ae265d5f8 100644 --- a/modular_sand/code/modules/projectiles/guns/energy/kinetic_accelerator.dm +++ b/modular_sand/code/modules/projectiles/guns/energy/kinetic_accelerator.dm @@ -52,7 +52,10 @@ /obj/item/gun/energy/kinetic_accelerator/nopenalty desc = "A self recharging, ranged mining tool that does increased damage in low pressure. This one feels a bit heavier than usual." - ammo_type = list(/obj/item/projectile/kinetic/nopenalty) + ammo_type = list(/obj/item/ammo_casing/energy/kinetic/nopenalty) + +/obj/item/ammo_casing/energy/kinetic/nopenalty + projectile_type = /obj/item/projectile/kinetic/nopenalty /obj/item/projectile/kinetic/nopenalty diff --git a/modular_sand/code/modules/ruins/lavalandruin_code/doom.dm b/modular_sand/code/modules/ruins/lavalandruin_code/doom.dm index 0384a10c14..b693d9b840 100644 --- a/modular_sand/code/modules/ruins/lavalandruin_code/doom.dm +++ b/modular_sand/code/modules/ruins/lavalandruin_code/doom.dm @@ -106,7 +106,7 @@ icon_state = "barrel" /obj/structure/fermenting_barrel/doom/Initialize(mapload) - ..() + . = ..() src.reagents.add_reagent(pick(subtypesof(/datum/reagent/toxin)), 300) /obj/structure/fermenting_barrel/doom/Destroy() diff --git a/modular_sand/code/modules/ruins/lavalandruin_code/misc.dm b/modular_sand/code/modules/ruins/lavalandruin_code/misc.dm index ecf4bf0f91..d001b41fda 100644 --- a/modular_sand/code/modules/ruins/lavalandruin_code/misc.dm +++ b/modular_sand/code/modules/ruins/lavalandruin_code/misc.dm @@ -71,7 +71,7 @@ var/list/cmegalist = list() /obj/effect/wrath/Initialize(mapload) - ..() + . = ..() megalist = list("Cockblock", "Cockblock", "Cockblock") //cockblock just to be sure that no one goes through the wrath wall in the 10 minute grace period addtimer(CALLBACK(src, .proc/updatemegalist), 6000) //10 minutes delay so that all megafauna can spawn and etc. diff --git a/modular_sand/code/modules/telescience/telepad.dm b/modular_sand/code/modules/telescience/telepad.dm index f01719fa18..e36bc0bc63 100644 --- a/modular_sand/code/modules/telescience/telepad.dm +++ b/modular_sand/code/modules/telescience/telepad.dm @@ -8,13 +8,9 @@ use_power = 1 idle_power_usage = 200 active_power_usage = 5000 + circuit = /obj/item/circuitboard/machine/telesci_pad var/efficiency -/obj/machinery/telepad/Initialize(mapload) - . = ..() - var/obj/item/circuitboard/machine/B = new /obj/item/circuitboard/machine/telesci_pad(null) - B.apply_default_parts(src) - /obj/item/circuitboard/machine/telesci_pad name = "Telepad (Machine Board)" build_path = /obj/machinery/telepad