Newmap - SMC, Openturf, Arrivals Controller, and Mine Turf Improvements (#1958)

* Replace SSingulo with SScalamity; processing cleanup
- SScalamity now handles blobs as well as singularity-types.
- Processing subtypes have been simplified to not require a stop_processing definition.

* this is probably important

* Remove cascade disabling SSgarbage

* Fixed a bug where dust() did not qdel the target mob

* Misc fixes

* Fix decals surviving break-to-plating

* Subsystem flag tweaks

* Apparently subsystems are new'd before config is.

* Fix paper icons

* Speculative fix for insane lag

* Better machinery stat

* Make organs not use SSoverlay

* Misc bugfixes & tweaks

* Nightmode fixes

* Changelog for SMC

* Port /tg/'s improved MC crash handling

* Add some more SS Recover() procs

* supply_controller -> SScargo

* More New() -> Initialize()

* pAI and robot construction overlays

* Fix cargo unit tests

* Merge the DMM Suite's atom/New() into atoms_init

* Lighting pre-baking

* Lighting initialization logging

* Fix some bad SS init orders

* Fix SSlighting logging; rename Processes to MC

* Speculative fix for insane GC lag

* Prebaked openturf/icon_smooth & fix lighting prebake

* SS init status; SSatoms LATEQDEL

* Fix bug with MC init stat panel

* Fix parallax

* Misc

* Ignore SS_NO_DISPLAY during init

* apparently this is important

* REEEEEE

* Image GC fixes; broadcaster radio-new sanity

* RCON Cleanup

* Move pAI recruiter into subsystem

* Move global solars list into sun subsystem

* Make chickens not use a global

* Demote SSdisposals to SS_BACKGROUND; garbage-debug cleanup

* Speed up space init a little

* Fix bad timer flags on floor drying

* Subsystem panic-restart verb for mins

* Explosion speedup

* Minor subsystem & MC logging tweaks

* SSopenturf improvements

* Make pipenet actually initialize (whoops)

* Minor tweaks

* Implement lighting rounding

* comments are hard okay

* Minor lattice tweaks

* Fix some timer issues & better closet init

* Timer sanity

* Request console tweaks + Storage init sanity

* Minor SSmachiner RCON improvements

* Further reduce world-start timer count

* Standardize subsystem logging

* Garbage hard delete profiling from /tg/

* Timer hang detection & recovery

* Log machines that sleep in process() and fuck up SSmachinery

* Fix an issue with external airlocks sleeping in process()

* Failsafe logging

* Minor tweaks

* Revert "Request console tweaks + Storage init sanity"

This reverts commit 98d3579e35.

* Re-implement RC changes

* Fix SQL FT saving

* Fix SSmachinery sleep in disposals

* Minor SS tweaks

* Paper fixes

* Blood drying fixes

* Merge gameticker and SSticker

* Minor global list init cleanup

* Lagcheck biogenerator & bags

* Tweak SScargo init order; RIG Initialize()

* Caching tweaks

* Remove rogue comma

* Initialize fixes

* Lighting destroy cleanup

* Fix emagging airlocks

* Initial SSicon implementation

* Tweaks & Fixes

* Fire + Air alarm queued icon updates

* Overlays + Queued icon cleanup

* Runtime & background fixes

* Kill some meaningless set statements

* Kill some image qdels

* Bump up lighting rounding val

* Fix adv. scanner destroy runtimes

* Remove unneeded icon update limiting

* Move icon smoothing into helpers

* Show a warning if DM 510 compiles without memory leak hack enabled

* Re-organize subsystems & MC defines a little

* Airlock SFX

* Log of Changes

* Make SSicon_update disable itself when not doing anything

* Fix respawn verb runtime when used early in server-init

* Add more information to MC's stat_entry()

* Replace direct refernces to gcDestroyed with QDEL* macros

* plant_controller -> SSplants

* More plant tweaks

* Add more humor to changelog

* Move parallax globals into SSparallax

* Lighting responsiveness tweaks

* Fix parallax init order & better MC init panel stat

* Make mobs GC

* More overlays + Remove intercom spawn()

* SSfast_process; make pinpointers not use spawn-recursion to process
Also made the SM Cascade beach process with SSprocessing instead of a spawn loop.

* Update changelog

* Mob GC tweaks

* Del() cleanup

* Fix insomniac ZAS connection edges

* Minor pAI cleanup

* Convert more things to SSoverlay; fix duplicated overlay in field gens

* SM Bluespace turf tweaks

* Update SSgarbage debug globals list

* Human-type qdel tweaks

* Subsystem suspension; stat_entry improvements

* SQL Statistics cleanup

* Fix runtimes with ambrosia

* More disable() -> suspend(); fix nightmode again

* Human qdel fix; minor tweaks

* Update turbolift to work with StonedMC

* Make lifts use timers instead of a subsystem

* Make SSassets start earlier

* Convert the radio controller into a subsystem

* Fix some missing CHECK_TICKs in asteroid generation

* MC stat tweaks; make shouldnt_see a typecache

* Kill some redundant debug-controller entries

* radio_controller -> SSradio

* Better SSgarbage hard-del logging from /tg/ upstream

* Logging tweaks + GELF

* Misc client caching improvements

* Slime SSoverlay

* Oven icon fixes

* Implant fixes
- Death implants will no longer spam Common on death of user.
- Death implants should handle a deleted user better.

* Holder tweaks + Welding tool Initialize()

* Fix some bad subsystem logging

* Fix suit cooling units spawning without cells

* Starlight tweaks

* Gibber infinite gib fix

* More SSoverlay stuff

* Make crates use CUT_OVERLAY_IN

* Make SSarrivals suspend instead of disable

* Make openturf use split/phased tick checks

* Speculative fix for unwet timer runtimes

* Blood overlay tweaks/fixes

* Update crusher to play nice with SMC + SSoverlay

* Openturf improvements and fixes

* Minor turbolift tweaks

* Lighting performance improvements + ChangeTurf tweaks

* this is probably important

* Fix wall weld noises on changeturf

* More ChangeTurf tweaks

* Explosion tweaks

* Pre-game lobby tweaks

* Openturf tweaks

* Prevent admins from starting the game before init finishes

* Fix Travis

* Kill an unused var

* Fix ChangeTurf runtimes on openturfs

* Fixes

* Browser datum fixes, asset caching

* Update changelog

* Changelog

* Lobby tweaks

* Ticker tweaks; kill ticker var

* Further lobby tweaks

* Cascade tweaks

* air_master -> SSair

* Reduce overhead from radio autosay

* alarm_manager -> SSalarm

* bomb_processor -> SSexplosives

* corp_regs -> SSlaw

* ZAS overlay fixes

* Small wall icon optimization

* Fix effects master

* Assembly tweaks

* Megavend fixes

* Shuttle fixes

* Camera alert performance improvements

* Fix some world.log spam from lighting overlays

* Fix some Initialize() procs

* Openspace responsiveness tweaks

* Make HE pipes animate through openturfs

* Kill a spawn
This commit is contained in:
Lohikar
2017-05-02 14:40:40 -04:00
committed by LordFowl
parent 9dbf27a0f4
commit f6dc33a465
872 changed files with 17767 additions and 13417 deletions
+5 -5
View File
@@ -23,9 +23,9 @@
chemical_reagents_list[D.id] = D
/datum/reagents/Destroy()
..()
if(chemistryProcess)
chemistryProcess.active_holders -= src
. = ..()
if(SSchemistry)
SSchemistry.active_holders -= src
for(var/datum/reagent/R in reagent_list)
qdel(R)
@@ -94,8 +94,8 @@
my_atom.reagents = null
/datum/reagents/proc/handle_reactions()
if(chemistryProcess)
chemistryProcess.mark_for_update(src)
if(SSchemistry)
SSchemistry.mark_for_update(src)
//returns 1 if the holder should continue reactiong, 0 otherwise.
/datum/reagents/proc/process_reactions()
+1 -1
View File
@@ -417,7 +417,7 @@
if(archive_diseases[id])
var/datum/disease/advance/A = archive_diseases[id]
A.AssignName(new_name)
for(var/datum/disease/advance/AD in active_diseases)
for(var/datum/disease/advance/AD in SSdisease.processing)
AD.Refresh()
src.updateUsrDialog()
+1 -1
View File
@@ -112,7 +112,7 @@
return null
/datum/reagent/Destroy() // This should only be called by the holder, so it's already handled clearing its references
..()
. = ..()
holder = null
/* DEPRECATED - TODO: REMOVE EVERYWHERE */
@@ -166,7 +166,7 @@
if(holder && holder.my_atom && ismob(holder.my_atom))
var/mob/M = holder.my_atom
M.status_flags &= ~FAKEDEATH
..()
return ..()
/datum/reagent/toxin/fertilizer //Reagents used for plant fertilizers.
name = "fertilizer"
+1 -1
View File
@@ -96,7 +96,7 @@
return progress
/datum/chemical_reaction/proc/process(var/datum/reagents/holder)
/datum/chemical_reaction/process(var/datum/reagents/holder)
//determine how far the reaction can proceed
var/list/reaction_limits = list()
for(var/reactant in required_reagents)
@@ -18,8 +18,8 @@
density = 1
anchored = 1
/obj/machinery/chemical_dispenser/New()
..()
/obj/machinery/chemical_dispenser/Initialize()
. = ..()
if(spawn_cartridges)
for(var/type in spawn_cartridges)
@@ -56,7 +56,7 @@
C.loc = src
cartridges[C.label] = C
cartridges = sortAssoc(cartridges)
sortTim(cartridges, /proc/cmp_text_asc)
nanomanager.update_uis(src)
/obj/machinery/chemical_dispenser/proc/remove_cartridge(label)
@@ -44,8 +44,8 @@
if (reagents.get_reagent_amount("blood"))
user.visible_message("<span class='warning'>[user] raises \the [src] up to their mouth and bites into it.</span>", "<span class='notice'>You raise \the [src] up to your mouth and bite into it, starting to drain its contents.<br>You need to stand still.</span>")
vampire_marks = TRUE
if (!src.other_DNA.len)
src.other_DNA += M.dna.unique_enzymes
if (!LAZYLEN(src.other_DNA))
LAZYADD(src.other_DNA, M.dna.unique_enzymes)
src.other_DNA_type = "saliva"
while (do_after(user, 25, 5, 1))
@@ -35,7 +35,7 @@
/obj/item/weapon/reagent_containers/borghypo/Destroy()
processing_objects.Remove(src)
..()
return ..()
/obj/item/weapon/reagent_containers/borghypo/process() //Every [recharge_time] seconds, recharge some reagents for the cyborg+
if(++charge_tick < recharge_time)
@@ -1,87 +1,97 @@
var/list/lunchables_lunches_ = list(/obj/item/weapon/reagent_containers/food/snacks/sandwich,
/obj/item/weapon/reagent_containers/food/snacks/meatbreadslice/filled,
/obj/item/weapon/reagent_containers/food/snacks/tofubreadslice/filled,
/obj/item/weapon/reagent_containers/food/snacks/creamcheesebreadslice/filled,
/obj/item/weapon/reagent_containers/food/snacks/margheritaslice/filled,
/obj/item/weapon/reagent_containers/food/snacks/meatpizzaslice/filled,
/obj/item/weapon/reagent_containers/food/snacks/mushroompizzaslice/filled,
/obj/item/weapon/reagent_containers/food/snacks/vegetablepizzaslice/filled,
/obj/item/weapon/reagent_containers/food/snacks/tastybread,
/obj/item/weapon/reagent_containers/food/snacks/liquidfood,
/obj/item/weapon/reagent_containers/food/snacks/jellysandwich/cherry,
/obj/item/weapon/reagent_containers/food/snacks/tossedsalad,
/obj/item/weapon/reagent_containers/food/snacks/koiswaffles,
/obj/item/weapon/reagent_containers/food/snacks/funnelcake,
/obj/item/weapon/reagent_containers/food/snacks/hotdog)
var/list/lunchables_lunches_ = list(
/obj/item/weapon/reagent_containers/food/snacks/sandwich,
/obj/item/weapon/reagent_containers/food/snacks/meatbreadslice/filled,
/obj/item/weapon/reagent_containers/food/snacks/tofubreadslice/filled,
/obj/item/weapon/reagent_containers/food/snacks/creamcheesebreadslice/filled,
/obj/item/weapon/reagent_containers/food/snacks/margheritaslice/filled,
/obj/item/weapon/reagent_containers/food/snacks/meatpizzaslice/filled,
/obj/item/weapon/reagent_containers/food/snacks/mushroompizzaslice/filled,
/obj/item/weapon/reagent_containers/food/snacks/vegetablepizzaslice/filled,
/obj/item/weapon/reagent_containers/food/snacks/tastybread,
/obj/item/weapon/reagent_containers/food/snacks/liquidfood,
/obj/item/weapon/reagent_containers/food/snacks/jellysandwich/cherry,
/obj/item/weapon/reagent_containers/food/snacks/tossedsalad,
/obj/item/weapon/reagent_containers/food/snacks/koiswaffles,
/obj/item/weapon/reagent_containers/food/snacks/funnelcake,
/obj/item/weapon/reagent_containers/food/snacks/hotdog
)
var/list/lunchables_snacks_ = list(/obj/item/weapon/reagent_containers/food/snacks/donut/jelly,
/obj/item/weapon/reagent_containers/food/snacks/donut/cherryjelly,
/obj/item/weapon/reagent_containers/food/snacks/muffin,
/obj/item/weapon/reagent_containers/food/snacks/popcorn,
/obj/item/weapon/reagent_containers/food/snacks/sosjerky,
/obj/item/weapon/reagent_containers/food/snacks/no_raisin,
/obj/item/weapon/reagent_containers/food/snacks/spacetwinkie,
/obj/item/weapon/reagent_containers/food/snacks/cheesiehonkers,
/obj/item/weapon/reagent_containers/food/snacks/poppypretzel,
/obj/item/weapon/reagent_containers/food/snacks/carrotfries,
/obj/item/weapon/reagent_containers/food/snacks/candiedapple,
/obj/item/weapon/reagent_containers/food/snacks/applepie,
/obj/item/weapon/reagent_containers/food/snacks/cherrypie,
/obj/item/weapon/reagent_containers/food/snacks/plumphelmetbiscuit,
/obj/item/weapon/reagent_containers/food/snacks/appletart,
/obj/item/weapon/reagent_containers/food/snacks/carrotcakeslice/filled,
/obj/item/weapon/reagent_containers/food/snacks/cheesecakeslice/filled,
/obj/item/weapon/reagent_containers/food/snacks/plaincakeslice/filled,
/obj/item/weapon/reagent_containers/food/snacks/orangecakeslice/filled,
/obj/item/weapon/reagent_containers/food/snacks/limecakeslice/filled,
/obj/item/weapon/reagent_containers/food/snacks/lemoncakeslice/filled,
/obj/item/weapon/reagent_containers/food/snacks/chocolatecakeslice/filled,
/obj/item/weapon/reagent_containers/food/snacks/birthdaycakeslice/filled,
/obj/item/weapon/reagent_containers/food/snacks/watermelonslice/filled,
/obj/item/weapon/reagent_containers/food/snacks/applecakeslice/filled,
/obj/item/weapon/reagent_containers/food/snacks/pumpkinpieslice/filled,
/obj/item/weapon/reagent_containers/food/snacks/skrellsnacks,
/obj/item/weapon/reagent_containers/food/snacks/friedkois,
/obj/item/weapon/reagent_containers/food/snacks/meatsnack,
/obj/item/weapon/reagent_containers/food/snacks/maps,
/obj/item/weapon/reagent_containers/food/snacks/nathisnack)
var/list/lunchables_snacks_ = list(
/obj/item/weapon/reagent_containers/food/snacks/donut/jelly,
/obj/item/weapon/reagent_containers/food/snacks/donut/cherryjelly,
/obj/item/weapon/reagent_containers/food/snacks/muffin,
/obj/item/weapon/reagent_containers/food/snacks/popcorn,
/obj/item/weapon/reagent_containers/food/snacks/sosjerky,
/obj/item/weapon/reagent_containers/food/snacks/no_raisin,
/obj/item/weapon/reagent_containers/food/snacks/spacetwinkie,
/obj/item/weapon/reagent_containers/food/snacks/cheesiehonkers,
/obj/item/weapon/reagent_containers/food/snacks/poppypretzel,
/obj/item/weapon/reagent_containers/food/snacks/carrotfries,
/obj/item/weapon/reagent_containers/food/snacks/candiedapple,
/obj/item/weapon/reagent_containers/food/snacks/applepie,
/obj/item/weapon/reagent_containers/food/snacks/cherrypie,
/obj/item/weapon/reagent_containers/food/snacks/plumphelmetbiscuit,
/obj/item/weapon/reagent_containers/food/snacks/appletart,
/obj/item/weapon/reagent_containers/food/snacks/carrotcakeslice/filled,
/obj/item/weapon/reagent_containers/food/snacks/cheesecakeslice/filled,
/obj/item/weapon/reagent_containers/food/snacks/plaincakeslice/filled,
/obj/item/weapon/reagent_containers/food/snacks/orangecakeslice/filled,
/obj/item/weapon/reagent_containers/food/snacks/limecakeslice/filled,
/obj/item/weapon/reagent_containers/food/snacks/lemoncakeslice/filled,
/obj/item/weapon/reagent_containers/food/snacks/chocolatecakeslice/filled,
/obj/item/weapon/reagent_containers/food/snacks/birthdaycakeslice/filled,
/obj/item/weapon/reagent_containers/food/snacks/watermelonslice/filled,
/obj/item/weapon/reagent_containers/food/snacks/applecakeslice/filled,
/obj/item/weapon/reagent_containers/food/snacks/pumpkinpieslice/filled,
/obj/item/weapon/reagent_containers/food/snacks/skrellsnacks,
/obj/item/weapon/reagent_containers/food/snacks/friedkois,
/obj/item/weapon/reagent_containers/food/snacks/meatsnack,
/obj/item/weapon/reagent_containers/food/snacks/maps,
/obj/item/weapon/reagent_containers/food/snacks/nathisnack
)
var/list/lunchables_drinks_ = list(/obj/item/weapon/reagent_containers/food/drinks/cans/cola,
/obj/item/weapon/reagent_containers/food/drinks/cans/waterbottle,
/obj/item/weapon/reagent_containers/food/drinks/cans/space_mountain_wind,
/obj/item/weapon/reagent_containers/food/drinks/cans/dr_gibb,
/obj/item/weapon/reagent_containers/food/drinks/cans/starkist,
/obj/item/weapon/reagent_containers/food/drinks/cans/space_up,
/obj/item/weapon/reagent_containers/food/drinks/cans/lemon_lime,
/obj/item/weapon/reagent_containers/food/drinks/cans/iced_tea,
/obj/item/weapon/reagent_containers/food/drinks/cans/grape_juice,
/obj/item/weapon/reagent_containers/food/drinks/cans/tonic,
/obj/item/weapon/reagent_containers/food/drinks/cans/sodawater)
var/list/lunchables_drinks_ = list(
/obj/item/weapon/reagent_containers/food/drinks/cans/cola,
/obj/item/weapon/reagent_containers/food/drinks/cans/waterbottle,
/obj/item/weapon/reagent_containers/food/drinks/cans/space_mountain_wind,
/obj/item/weapon/reagent_containers/food/drinks/cans/dr_gibb,
/obj/item/weapon/reagent_containers/food/drinks/cans/starkist,
/obj/item/weapon/reagent_containers/food/drinks/cans/space_up,
/obj/item/weapon/reagent_containers/food/drinks/cans/lemon_lime,
/obj/item/weapon/reagent_containers/food/drinks/cans/iced_tea,
/obj/item/weapon/reagent_containers/food/drinks/cans/grape_juice,
/obj/item/weapon/reagent_containers/food/drinks/cans/tonic,
/obj/item/weapon/reagent_containers/food/drinks/cans/sodawater
)
// This default list is a bit different, it contains items we don't want
var/list/lunchables_drink_reagents_ = list(/datum/reagent/drink/nothing,
/datum/reagent/drink/doctor_delight,
/datum/reagent/drink/dry_ramen,
/datum/reagent/drink/hell_ramen,
/datum/reagent/drink/hot_ramen,
/datum/reagent/drink/nuka_cola,
/datum/reagent/drink/black_coffee,
/datum/reagent/drink/white_coffee,
/datum/reagent/drink/cafe_melange)
var/list/lunchables_drink_reagents_ = list(
/datum/reagent/drink/nothing,
/datum/reagent/drink/doctor_delight,
/datum/reagent/drink/dry_ramen,
/datum/reagent/drink/hell_ramen,
/datum/reagent/drink/hot_ramen,
/datum/reagent/drink/nuka_cola,
/datum/reagent/drink/black_coffee,
/datum/reagent/drink/white_coffee,
/datum/reagent/drink/cafe_melange
)
// This default list is a bit different, it contains items we don't want
var/list/lunchables_ethanol_reagents_ = list(/datum/reagent/ethanol/acid_spit,
/datum/reagent/ethanol/atomicbomb,
/datum/reagent/ethanol/beepsky_smash,
/datum/reagent/ethanol/coffee,
/datum/reagent/ethanol/hippies_delight,
/datum/reagent/ethanol/hooch,
/datum/reagent/ethanol/thirteenloko,
/datum/reagent/ethanol/manhattan_proj,
/datum/reagent/ethanol/neurotoxin,
/datum/reagent/ethanol/pwine,
/datum/reagent/ethanol/threemileisland,
/datum/reagent/ethanol/toxins_special)
var/list/lunchables_ethanol_reagents_ = list(
/datum/reagent/ethanol/acid_spit,
/datum/reagent/ethanol/atomicbomb,
/datum/reagent/ethanol/beepsky_smash,
/datum/reagent/ethanol/coffee,
/datum/reagent/ethanol/hippies_delight,
/datum/reagent/ethanol/hooch,
/datum/reagent/ethanol/thirteenloko,
/datum/reagent/ethanol/manhattan_proj,
/datum/reagent/ethanol/neurotoxin,
/datum/reagent/ethanol/pwine,
/datum/reagent/ethanol/threemileisland,
/datum/reagent/ethanol/toxins_special
)
/proc/lunchables_lunches()
if(!(lunchables_lunches_[lunchables_lunches_[1]]))
@@ -113,7 +123,8 @@ var/list/lunchables_ethanol_reagents_ = list(/datum/reagent/ethanol/acid_spit,
for(var/lunch in lunches)
var/obj/O = lunch
.[initial(O.name)] = lunch
return sortAssoc(.)
sortTim(., /proc/cmp_text_asc)
/proc/init_lunchable_reagent_list(var/list/banned_reagents, var/reagent_types)
. = list()
@@ -122,4 +133,5 @@ var/list/lunchables_ethanol_reagents_ = list(/datum/reagent/ethanol/acid_spit,
continue
var/datum/reagent/reagent = reagent_type
.[initial(reagent.name)] = initial(reagent.id)
return sortAssoc(.)
sortTim(., /proc/cmp_text_asc)
@@ -76,7 +76,7 @@
/obj/item/weapon/reagent_containers/food/snacks/csandwich/Destroy()
for(var/obj/item/O in ingredients)
qdel(O)
..()
return ..()
/obj/item/weapon/reagent_containers/food/snacks/csandwich/examine(mob/user)
..(user)
@@ -230,7 +230,7 @@
if(contents)
for(var/atom/movable/something in contents)
something.loc = get_turf(src)
..()
return ..()
//Code for dipping food in batter
@@ -982,13 +982,13 @@
/obj/item/weapon/reagent_containers/food/snacks/donkpocket/proc/cooltime()
if (src.warm)
spawn(4200)
if(src)
src.warm = 0
for(var/reagent in heated_reagents)
src.reagents.del_reagent(reagent)
src.name = initial(name)
return
addtimer(CALLBACK(src, .proc/cool_down))
/obj/item/weapon/reagent_containers/food/snacks/donkpocket/proc/cool_down()
warm = FALSE
for(var/reagent in heated_reagents)
reagents.del_reagent(reagent)
name = initial(name)
/obj/item/weapon/reagent_containers/food/snacks/donkpocket/cook()
..()
+9 -4
View File
@@ -182,6 +182,10 @@
explode()
return ..()
/obj/structure/reagent_dispensers/fueltank/tesla_act()
..()
explode()
/obj/structure/reagent_dispensers/fueltank/Move()
if (..() && modded)
leak_fuel(amount_per_transfer_from_this/10.0)
@@ -288,9 +292,10 @@
icon_state = "oiltank"
amount_per_transfer_from_this = 120
capacity = 5000
/obj/structure/reagent_dispensers/cookingoil/New()
..()
reagents.add_reagent("cornoil",capacity)
/obj/structure/reagent_dispensers/cookingoil/Initialize()
. = ..()
reagents.add_reagent("cornoil",capacity)
/obj/structure/reagent_dispensers/cookingoil/bullet_act(var/obj/item/projectile/Proj)
if(Proj.get_structure_damage())
@@ -302,4 +307,4 @@
/obj/structure/reagent_dispensers/cookingoil/proc/explode()
reagents.splash_area(get_turf(src), 3)
visible_message(span("danger", "The [src] bursts open, spreading oil all over the area."))
qdel(src)
qdel(src)