From 14aec07fc40d96301157d66a6ffad1d371940e6c Mon Sep 17 00:00:00 2001
From: Shadow-Quill <44811257+Shadow-Quill@users.noreply.github.com>
Date: Tue, 6 May 2025 19:52:01 -0600
Subject: [PATCH] Removes Pollution (#3725)
## About The Pull Request
deletes pollution
## Why It's Good For The Game
`The odor of decaying waste fills your nostrils...`
## Changelog
:cl:
del: Due to new environmental regulations, we have removed all
pollutants from our space stations.
/:cl:
---------
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
Co-authored-by: Roxy <75404941+TealSeer@users.noreply.github.com>
---
.../bubberstation/icemoon_persistence.dmm | 5 -
.../icemoon_underground_icewalker_lower.dmm | 20 +-
.../bubberstation/lavaland_dauntless.dmm | 10 +-
.../bubberstation/lavaland_persistence.dmm | 5 -
.../bubberstation/space_dauntless.dmm | 10 +-
.../SpaceRuins/spacehotel_skyrat.dmm | 11 -
_maps/map_files/BoxStation/BoxStation.dmm | 23 +-
_maps/map_files/VoidRaptor/VoidRaptor.dmm | 38 +--
_maps/map_files/generic/CentCom_skyrat_z2.dmm | 47 ----
_maps/map_files/moonstation/moonstation.dmm | 9 -
code/__DEFINES/subsystems.dm | 1 -
code/__DEFINES/~skyrat_defines/pollution.dm | 41 ---
code/datums/components/crafting/tools.dm | 2 +-
code/datums/components/grillable.dm | 5 -
code/game/objects/items/cigarettes.dm | 23 --
.../items/stacks/sheets/sheet_types.dm | 2 +-
.../crates_lockers/closets/job_closets.dm | 5 -
code/game/turfs/change_turf.dm | 10 -
code/modules/admin/verbs/fix_air.dm | 4 -
.../environmental/LINDA_system.dm | 2 -
.../components/unary_devices/vent_scrubber.dm | 6 -
.../machinery/portable/scrubber.dm | 5 -
.../recipes/drinks/drinks_non-alcoholic.dm | 2 -
.../food_and_drinks/recipes/food_mixtures.dm | 4 -
code/modules/mob/living/carbon/life.dm | 14 -
.../reagents/chemistry/holder/reactions.dm | 16 --
code/modules/reagents/chemistry/recipes.dm | 6 -
.../reagents/chemistry/recipes/medicine.dm | 5 -
.../code/datums/components/grillable.dm | 9 -
.../code/modules/loadout/categories/pocket.dm | 45 ----
modular_skyrat/modules/emotes/code/emotes.dm | 12 -
.../code/liquid_systems/liquid_turf.dm | 4 -
.../modules/modular_vending/code/wardrobes.dm | 5 -
.../pollution/code/admin_spawn_pollution.dm | 12 -
.../modules/pollution/code/air_refresher.dm | 62 -----
.../modules/pollution/code/bonfire.dm | 19 --
.../pollution/code/fancy_storage_items.dm | 19 --
.../modules/pollution/code/perfumes.dm | 109 --------
.../modules/pollution/code/pollutant_datum.dm | 27 --
.../pollution/code/pollutants_generic.dm | 183 -------------
.../modules/pollution/code/pollution.dm | 247 ------------------
.../pollution/code/pollution_effect.dm | 10 -
.../pollution/code/pollution_emitters.dm | 39 ---
.../code/pollution_initializations.dm | 35 ---
.../pollution/code/pollution_subsystem.dm | 59 -----
.../modules/pollution/code/scented_candles.dm | 19 --
.../temporary_pollution_emission_component.dm | 36 ---
.../modules/pollution/code/turf_open.dm | 33 ---
.../modules/pollution/icons/air_refresher.dmi | Bin 285 -> 0 bytes
.../modules/pollution/icons/perfume.dmi | Bin 410 -> 0 bytes
.../pollution/icons/pollution_scrubber.dmi | Bin 918 -> 0 bytes
.../modules/salon/code/barbervend.dm | 1 -
.../modules/salon/code/misc_items.dm | 15 --
.../lists/maintenance_loot_common.dm | 13 -
.../lists/maintenance_loot_uncommon.dm | 1 -
.../spawners/random/moonstation_random.dm | 1 -
.../code/modules/loadout/categories/pocket.dm | 52 ----
.../code/modules/pollution/code/perfumes.dm | 47 ----
.../pollution/code/pollutants_generic.dm | 39 ---
tgstation.dme | 19 --
.../Scripts_Bubber/3725_remove_pollution.txt | 9 +
61 files changed, 18 insertions(+), 1494 deletions(-)
delete mode 100644 code/__DEFINES/~skyrat_defines/pollution.dm
delete mode 100644 modular_skyrat/master_files/code/datums/components/grillable.dm
delete mode 100644 modular_skyrat/modules/pollution/code/admin_spawn_pollution.dm
delete mode 100644 modular_skyrat/modules/pollution/code/air_refresher.dm
delete mode 100644 modular_skyrat/modules/pollution/code/bonfire.dm
delete mode 100644 modular_skyrat/modules/pollution/code/fancy_storage_items.dm
delete mode 100644 modular_skyrat/modules/pollution/code/perfumes.dm
delete mode 100644 modular_skyrat/modules/pollution/code/pollutant_datum.dm
delete mode 100644 modular_skyrat/modules/pollution/code/pollutants_generic.dm
delete mode 100644 modular_skyrat/modules/pollution/code/pollution.dm
delete mode 100644 modular_skyrat/modules/pollution/code/pollution_effect.dm
delete mode 100644 modular_skyrat/modules/pollution/code/pollution_emitters.dm
delete mode 100644 modular_skyrat/modules/pollution/code/pollution_initializations.dm
delete mode 100644 modular_skyrat/modules/pollution/code/pollution_subsystem.dm
delete mode 100644 modular_skyrat/modules/pollution/code/scented_candles.dm
delete mode 100644 modular_skyrat/modules/pollution/code/temporary_pollution_emission_component.dm
delete mode 100644 modular_skyrat/modules/pollution/code/turf_open.dm
delete mode 100644 modular_skyrat/modules/pollution/icons/air_refresher.dmi
delete mode 100644 modular_skyrat/modules/pollution/icons/perfume.dmi
delete mode 100644 modular_skyrat/modules/pollution/icons/pollution_scrubber.dmi
delete mode 100644 modular_zubbers/code/modules/pollution/code/perfumes.dm
delete mode 100644 modular_zubbers/code/modules/pollution/code/pollutants_generic.dm
create mode 100644 tools/UpdatePaths/Scripts_Bubber/3725_remove_pollution.txt
diff --git a/_maps/RandomRuins/IceRuins/bubberstation/icemoon_persistence.dmm b/_maps/RandomRuins/IceRuins/bubberstation/icemoon_persistence.dmm
index c69640a640c..6c6a0bc4c45 100644
--- a/_maps/RandomRuins/IceRuins/bubberstation/icemoon_persistence.dmm
+++ b/_maps/RandomRuins/IceRuins/bubberstation/icemoon_persistence.dmm
@@ -509,7 +509,6 @@
/area/ruin/space/has_grav/bubbers/persistance/service/sauna)
"bv" = (
/obj/structure/table/reinforced/plastitaniumglass,
-/obj/machinery/pollution_scrubber,
/obj/machinery/duct,
/turf/open/floor/mineral/plastitanium,
/area/ruin/space/has_grav/bubbers/persistance/service/janitorial)
@@ -8262,7 +8261,6 @@
/area/ruin/space/has_grav/bubbers/persistance/service/hydro)
"yz" = (
/obj/structure/table/reinforced/plastitaniumglass,
-/obj/machinery/pollution_scrubber,
/obj/effect/turf_decal/stripes/red/end,
/turf/open/floor/iron/dark/small,
/area/ruin/space/has_grav/bubbers/persistance/sec/prison)
@@ -11002,8 +11000,6 @@
dir = 6
},
/obj/structure/table/reinforced/plastitaniumglass,
-/obj/item/storage/box/perfume,
-/obj/item/storage/box/perfume,
/obj/machinery/light/directional/south,
/obj/machinery/button/door{
id = "syndisalon_w";
@@ -12524,7 +12520,6 @@
dir = 4
},
/obj/structure/table/reinforced/plastitaniumglass,
-/obj/machinery/pollution_scrubber,
/obj/machinery/duct,
/turf/open/floor/wood/large,
/area/ruin/space/has_grav/bubbers/persistance/service/diner)
diff --git a/_maps/RandomRuins/IceRuins/skyrat/icemoon_underground_icewalker_lower.dmm b/_maps/RandomRuins/IceRuins/skyrat/icemoon_underground_icewalker_lower.dmm
index 40cd53d6444..5731aec07d1 100644
--- a/_maps/RandomRuins/IceRuins/skyrat/icemoon_underground_icewalker_lower.dmm
+++ b/_maps/RandomRuins/IceRuins/skyrat/icemoon_underground_icewalker_lower.dmm
@@ -1,12 +1,4 @@
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
-"ak" = (
-/obj/machinery/pollution_scrubber{
- on = 1;
- use_power = 0;
- alpha = 0
- },
-/turf/open/misc/asteroid/snow/icemoon,
-/area/ruin/unpowered/primitive_catgirl_den)
"au" = (
/obj/structure/chair/wood{
dir = 1
@@ -290,14 +282,6 @@
},
/turf/open/misc/dirt/icemoon,
/area/ruin/unpowered/primitive_catgirl_den)
-"hb" = (
-/obj/machinery/pollution_scrubber{
- on = 1;
- use_power = 0;
- alpha = 0
- },
-/turf/closed/wall/mineral/stone,
-/area/ruin/unpowered/primitive_catgirl_den)
"hn" = (
/obj/structure/rack/wooden,
/obj/item/clothing/shoes/winterboots/ice_boots/primitive_catgirl_boots{
@@ -3625,7 +3609,7 @@ VZ
oJ
oJ
sS
-ak
+oJ
Vi
pa
oJ
@@ -3747,7 +3731,7 @@ yp
su
vx
AG
-hb
+yF
pa
pa
pa
diff --git a/_maps/RandomRuins/LavaRuins/bubberstation/lavaland_dauntless.dmm b/_maps/RandomRuins/LavaRuins/bubberstation/lavaland_dauntless.dmm
index 7513395ba15..31fda55e4e0 100644
--- a/_maps/RandomRuins/LavaRuins/bubberstation/lavaland_dauntless.dmm
+++ b/_maps/RandomRuins/LavaRuins/bubberstation/lavaland_dauntless.dmm
@@ -11215,14 +11215,6 @@
"VY" = (
/turf/closed/wall/r_wall/syndicate/nodiagonal,
/area/ruin/space/has_grav/bubbers/dauntless/command/vault)
-"VZ" = (
-/obj/structure/table/reinforced/plastitaniumglass,
-/obj/effect/turf_decal/siding/wood{
- dir = 4
- },
-/obj/machinery/pollution_scrubber,
-/turf/open/floor/wood/tile,
-/area/ruin/space/has_grav/bubbers/dauntless/service/diner)
"Wa" = (
/obj/effect/turf_decal/siding/dark{
dir = 10
@@ -13996,7 +13988,7 @@ Da
JP
jh
uP
-VZ
+jh
vn
pw
SO
diff --git a/_maps/RandomRuins/LavaRuins/bubberstation/lavaland_persistence.dmm b/_maps/RandomRuins/LavaRuins/bubberstation/lavaland_persistence.dmm
index 2c2483f601f..8e54f466223 100644
--- a/_maps/RandomRuins/LavaRuins/bubberstation/lavaland_persistence.dmm
+++ b/_maps/RandomRuins/LavaRuins/bubberstation/lavaland_persistence.dmm
@@ -1605,7 +1605,6 @@
/area/ruin/space/has_grav/bubbers/persistance/service)
"eZ" = (
/obj/structure/table/reinforced/plastitaniumglass,
-/obj/machinery/pollution_scrubber,
/obj/machinery/duct,
/turf/open/floor/mineral/plastitanium,
/area/ruin/space/has_grav/bubbers/persistance/service/janitorial)
@@ -3079,7 +3078,6 @@
dir = 4
},
/obj/structure/table/reinforced/plastitaniumglass,
-/obj/machinery/pollution_scrubber,
/obj/machinery/duct,
/turf/open/floor/wood/large,
/area/ruin/space/has_grav/bubbers/persistance/service/diner)
@@ -3446,7 +3444,6 @@
/area/ruin/space/has_grav/bubbers/persistance/engineering)
"kq" = (
/obj/structure/table/reinforced/plastitaniumglass,
-/obj/machinery/pollution_scrubber,
/obj/effect/turf_decal/stripes/red/end,
/turf/open/floor/iron/dark/small,
/area/ruin/space/has_grav/bubbers/persistance/sec/prison)
@@ -9922,8 +9919,6 @@
dir = 6
},
/obj/structure/table/reinforced/plastitaniumglass,
-/obj/item/storage/box/perfume,
-/obj/item/storage/box/perfume,
/obj/machinery/light/directional/south,
/obj/machinery/button/door{
id = "syndisalon_w";
diff --git a/_maps/RandomRuins/SpaceRuins/bubberstation/space_dauntless.dmm b/_maps/RandomRuins/SpaceRuins/bubberstation/space_dauntless.dmm
index 557090dfc83..b1f82b63f3e 100644
--- a/_maps/RandomRuins/SpaceRuins/bubberstation/space_dauntless.dmm
+++ b/_maps/RandomRuins/SpaceRuins/bubberstation/space_dauntless.dmm
@@ -3826,14 +3826,6 @@
/obj/effect/mapping_helpers/airlock/access/all/syndicate/general,
/turf/open/floor/iron/dark/small,
/area/ruin/space/has_grav/bubbers/dauntless/sec/prison)
-"rn" = (
-/obj/structure/table/reinforced/plastitaniumglass,
-/obj/effect/turf_decal/siding/wood{
- dir = 4
- },
-/obj/machinery/pollution_scrubber,
-/turf/open/floor/wood/tile,
-/area/ruin/space/has_grav/bubbers/dauntless/service/diner)
"ro" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
dir = 4
@@ -13838,7 +13830,7 @@ Kz
zH
dW
kZ
-rn
+dW
zl
qH
zl
diff --git a/_maps/RandomRuins/SpaceRuins/spacehotel_skyrat.dmm b/_maps/RandomRuins/SpaceRuins/spacehotel_skyrat.dmm
index ec331e0094a..b85cd625e55 100644
--- a/_maps/RandomRuins/SpaceRuins/spacehotel_skyrat.dmm
+++ b/_maps/RandomRuins/SpaceRuins/spacehotel_skyrat.dmm
@@ -134,7 +134,6 @@
/area/ruin/space/has_grav/hotel/guestroom/room_5)
"aD" = (
/obj/structure/table/wood,
-/obj/item/storage/fancy/candle_box/amber,
/obj/effect/spawner/random/entertainment/lighter,
/obj/item/wrench,
/turf/open/floor/carpet/neon/simple/pink/nodots,
@@ -264,7 +263,6 @@
/obj/structure/table/wood,
/obj/effect/spawner/random/entertainment/lighter,
/obj/item/wrench,
-/obj/item/storage/fancy/candle_box/amber,
/turf/open/floor/carpet/neon/simple/black/nodots,
/area/ruin/space/has_grav/hotel/guestroom/room_1)
"by" = (
@@ -3919,8 +3917,6 @@
/area/ruin/space/has_grav/hotel)
"tP" = (
/obj/structure/table/reinforced/plastitaniumglass,
-/obj/item/storage/fancy/candle_box/pear,
-/obj/item/storage/fancy/candle_box/vanilla,
/obj/effect/spawner/random/entertainment/lighter,
/obj/item/wrench,
/turf/open/floor/carpet/neon/simple/white/nodots,
@@ -5722,7 +5718,6 @@
"Ga" = (
/obj/structure/table/wood,
/obj/item/flashlight/lamp/green,
-/obj/item/storage/fancy/candle_box/mint,
/obj/effect/spawner/random/entertainment/lighter,
/obj/item/wrench,
/turf/open/floor/carpet/royalblack,
@@ -7088,7 +7083,6 @@
/obj/structure/table/wood/fancy/green,
/obj/item/wrench,
/obj/effect/spawner/random/entertainment/lighter,
-/obj/item/storage/fancy/candle_box/jasmine,
/obj/machinery/light{
dir = 4
},
@@ -7350,7 +7344,6 @@
"QM" = (
/obj/structure/table/wood,
/obj/item/flashlight/lamp/green,
-/obj/item/storage/fancy/candle_box/jasmine,
/obj/effect/spawner/random/entertainment/lighter,
/obj/item/wrench,
/turf/open/floor/wood,
@@ -8238,10 +8231,6 @@
/obj/item/cigarette/pipe{
pixel_x = -5
},
-/obj/machinery/pollution_scrubber{
- pixel_x = 7;
- pixel_y = -5
- },
/turf/open/floor/wood/large,
/area/ruin/space/has_grav/hotel/guestroom/room_4)
"Xk" = (
diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm
index 7e5a8b57975..eabc06b1331 100644
--- a/_maps/map_files/BoxStation/BoxStation.dmm
+++ b/_maps/map_files/BoxStation/BoxStation.dmm
@@ -2139,10 +2139,6 @@
pixel_x = -7;
pixel_y = 14
},
-/obj/machinery/pollution_scrubber{
- pixel_x = 5;
- pixel_y = -3
- },
/turf/open/floor/iron/grimy,
/area/station/security/detectives_office)
"aoM" = (
@@ -10935,10 +10931,6 @@
dir = 4
},
/obj/structure/table/wood,
-/obj/item/storage/box/perfume{
- pixel_x = 4;
- pixel_y = 5
- },
/obj/item/storage/box/lipsticks{
pixel_x = -6;
pixel_y = 3
@@ -35042,11 +35034,6 @@
/obj/structure/cable,
/turf/open/floor/iron/dark/textured,
/area/station/command/gateway)
-"dPy" = (
-/obj/structure/table,
-/obj/machinery/pollution_scrubber,
-/turf/open/floor/wood,
-/area/station/service/bar)
"dPz" = (
/obj/structure/table,
/obj/item/book/manual/wiki/security_space_law,
@@ -56389,12 +56376,6 @@
/obj/structure/plant_tank,
/turf/open/floor/grass,
/area/station/service/hydroponics)
-"rqb" = (
-/obj/machinery/pollution_scrubber,
-/obj/structure/chair/comfy/brown,
-/obj/effect/landmark/start/hangover,
-/turf/open/floor/wood/parquet,
-/area/station/service/bar)
"rqi" = (
/turf/open/floor/wood,
/area/station/command/heads_quarters/hop)
@@ -101454,7 +101435,7 @@ avC
pxR
adq
aQb
-dPy
+aPZ
aRu
chR
aCG
@@ -102739,7 +102720,7 @@ aKq
aSo
aNH
nah
-rqb
+aUg
iHH
fTS
clX
diff --git a/_maps/map_files/VoidRaptor/VoidRaptor.dmm b/_maps/map_files/VoidRaptor/VoidRaptor.dmm
index 8f17941f7fb..65902e08af8 100644
--- a/_maps/map_files/VoidRaptor/VoidRaptor.dmm
+++ b/_maps/map_files/VoidRaptor/VoidRaptor.dmm
@@ -8241,10 +8241,6 @@
/area/station/medical/chemistry)
"cyd" = (
/obj/structure/table,
-/obj/machinery/pollution_scrubber{
- pixel_x = 7;
- pixel_y = -5
- },
/turf/open/floor/wood/large,
/area/station/hallway/secondary/exit/departure_lounge)
"cyi" = (
@@ -11865,10 +11861,6 @@
id = "Barshutters";
name = "Bar Shutters"
},
-/obj/machinery/pollution_scrubber{
- pixel_x = 7;
- pixel_y = -5
- },
/turf/open/floor/iron/large,
/area/station/service/bar)
"dAD" = (
@@ -22928,9 +22920,6 @@
"gIT" = (
/obj/structure/table/reinforced,
/obj/item/book/manual/wiki/barman_recipes,
-/obj/machinery/pollution_scrubber{
- pixel_x = -15
- },
/turf/open/floor/carpet/purple,
/area/station/common/night_club)
"gIW" = (
@@ -28942,10 +28931,6 @@
id = "kitchen_counter";
name = "Kitchen Counter Shutters"
},
-/obj/machinery/pollution_scrubber{
- pixel_x = -7;
- pixel_y = 1
- },
/obj/structure/table,
/turf/open/floor/iron/large,
/area/station/service/kitchen)
@@ -49813,20 +49798,6 @@
/obj/machinery/airalarm/directional/east,
/turf/open/floor/iron/large,
/area/station/commons/toilet)
-"nWw" = (
-/obj/machinery/door/firedoor,
-/obj/structure/table/reinforced,
-/obj/machinery/door/poddoor/shutters/preopen{
- dir = 4;
- id = "Barshutters";
- name = "Bar Shutters"
- },
-/obj/machinery/pollution_scrubber{
- pixel_x = 7;
- pixel_y = 4
- },
-/turf/open/floor/iron/large,
-/area/station/service/bar)
"nWY" = (
/obj/effect/turf_decal/trimline/green/filled/warning,
/obj/structure/disposalpipe/segment,
@@ -65091,10 +65062,6 @@
/obj/structure/table/wood,
/obj/item/food/chips,
/obj/item/reagent_containers/cup/soda_cans/cola,
-/obj/machinery/pollution_scrubber{
- pixel_x = 6;
- pixel_y = 1
- },
/turf/open/floor/carpet/green,
/area/station/commons/dorms)
"sjE" = (
@@ -69915,9 +69882,6 @@
"twd" = (
/obj/structure/table/wood,
/obj/item/storage/fancy/donut_box,
-/obj/machinery/pollution_scrubber{
- pixel_x = -15
- },
/turf/open/floor/carpet,
/area/station/commons/dorms)
"twe" = (
@@ -118308,7 +118272,7 @@ oUR
iWH
hbf
sgE
-nWw
+dAz
eks
eaR
dAz
diff --git a/_maps/map_files/generic/CentCom_skyrat_z2.dmm b/_maps/map_files/generic/CentCom_skyrat_z2.dmm
index e1d17d35daa..22f17b52f81 100644
--- a/_maps/map_files/generic/CentCom_skyrat_z2.dmm
+++ b/_maps/map_files/generic/CentCom_skyrat_z2.dmm
@@ -1971,44 +1971,6 @@
/area/centcom/holding/cafe/park)
"aAq" = (
/obj/structure/rack/wooden,
-/obj/item/perfume/amber{
- pixel_x = -8;
- pixel_y = 10
- },
-/obj/item/perfume/cologne{
- pixel_x = -4;
- pixel_y = 10
- },
-/obj/item/perfume/wood{
- pixel_y = 10
- },
-/obj/item/perfume/mint{
- pixel_x = 4;
- pixel_y = 10
- },
-/obj/item/perfume/cherry{
- pixel_x = -8;
- pixel_y = -5
- },
-/obj/item/perfume/jasmine{
- pixel_x = -4;
- pixel_y = -5
- },
-/obj/item/perfume/pear{
- pixel_y = -5
- },
-/obj/item/perfume/rose{
- pixel_x = 4;
- pixel_y = -5
- },
-/obj/item/perfume/vanilla{
- pixel_x = 8;
- pixel_y = 10
- },
-/obj/item/perfume/strawberry{
- pixel_x = 8;
- pixel_y = -5
- },
/obj/structure/window/spawner/directional/east,
/obj/effect/turf_decal/siding/wood{
dir = 5
@@ -4614,12 +4576,6 @@
/obj/effect/turf_decal/siding/wood{
dir = 4
},
-/obj/item/storage/fancy/candle_box/pear{
- pixel_y = 10
- },
-/obj/item/storage/fancy/candle_box/vanilla{
- pixel_y = 4
- },
/turf/open/floor/wood,
/area/centcom/interlink)
"bqT" = (
@@ -15157,9 +15113,6 @@
/obj/item/storage/fancy/candle_box{
pixel_y = 10
},
-/obj/item/storage/fancy/candle_box/amber{
- pixel_y = 4
- },
/turf/open/floor/wood,
/area/centcom/interlink)
"pPw" = (
diff --git a/_maps/map_files/moonstation/moonstation.dmm b/_maps/map_files/moonstation/moonstation.dmm
index 52574a73b1d..123a85de8d4 100644
--- a/_maps/map_files/moonstation/moonstation.dmm
+++ b/_maps/map_files/moonstation/moonstation.dmm
@@ -12122,7 +12122,6 @@
/obj/structure/closet/secure_closet/miner,
/obj/item/storage/medkit/toxin,
/obj/item/gps/mining,
-/obj/item/perfume/iron,
/obj/machinery/button/door/directional/east{
id = "mining_shutters";
name = "Mining Shutters Control";
@@ -22306,7 +22305,6 @@
/obj/structure/closet/secure_closet/miner,
/obj/item/storage/medkit/toxin,
/obj/item/gps/mining,
-/obj/item/perfume/iron,
/obj/machinery/light/moonstation/directional/east,
/turf/open/floor/iron,
/area/station/cargo/miningdock)
@@ -35144,10 +35142,6 @@
/area/station/security/brig/entrance)
"jIc" = (
/obj/structure/closet/jcloset,
-/obj/item/air_refresher,
-/obj/item/air_refresher,
-/obj/item/air_refresher,
-/obj/item/air_refresher,
/obj/effect/turf_decal/tile/purple/half/contrasted{
dir = 4
},
@@ -43445,7 +43439,6 @@
/obj/structure/sign/poster/random/directional/east,
/obj/item/storage/medkit/toxin,
/obj/item/gps/mining,
-/obj/item/perfume/iron,
/turf/open/floor/iron,
/area/station/cargo/miningdock)
"lUt" = (
@@ -74545,7 +74538,6 @@
/obj/structure/closet/secure_closet/miner,
/obj/item/storage/medkit/toxin,
/obj/item/gps/mining,
-/obj/item/perfume/iron,
/obj/item/radio/intercom/directional/east,
/turf/open/floor/iron,
/area/station/cargo/miningdock)
@@ -75981,7 +75973,6 @@
/obj/effect/mapping_helpers/requests_console/ore_update,
/obj/effect/mapping_helpers/requests_console/supplies,
/obj/structure/table/wood,
-/obj/machinery/pollution_scrubber,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/turf/open/floor/iron/checker,
/area/station/cargo/blacksmith)
diff --git a/code/__DEFINES/subsystems.dm b/code/__DEFINES/subsystems.dm
index 0776e8f2adc..ea11d2294e5 100644
--- a/code/__DEFINES/subsystems.dm
+++ b/code/__DEFINES/subsystems.dm
@@ -168,7 +168,6 @@
#define INIT_ORDER_RESTAURANT 34
#define INIT_ORDER_TTS 33
#define INIT_ORDER_FLUIDS 32 // Needs to be above atoms, as some atoms may want to start fluids/gases on init
-#define INIT_ORDER_POLLUTION 31 //SKYRAT EDIT ADDITION - //Needs to be above atoms
#define INIT_ORDER_ATOMS 30
#define INIT_ORDER_ARMAMENTS 27 // SKYRAT EDIT ADDITION - Needs to be between atoms and default so it runs before gun companies
#define INIT_ORDER_LANGUAGE 25
diff --git a/code/__DEFINES/~skyrat_defines/pollution.dm b/code/__DEFINES/~skyrat_defines/pollution.dm
deleted file mode 100644
index 72e11bcb695..00000000000
--- a/code/__DEFINES/~skyrat_defines/pollution.dm
+++ /dev/null
@@ -1,41 +0,0 @@
-#define REGISTER_POLLUTION(pollution) SSpollution.all_polution[pollution] = TRUE
-#define UNREGISTER_POLLUTION(pollution) SSpollution.all_polution -= pollution
-#define SET_ACTIVE_POLLUTION(pollution) SSpollution.active_pollution[pollution] = TRUE
-#define SET_UNACTIVE_POLLUTION(pollution) SSpollution.active_pollution -= pollution
-#define SET_PROCESSED_THIS_RUN(pollution) SSpollution.processed_this_run[pollution] = TRUE
-#define REMOVE_POLLUTION_CURRENTRUN(pollution) SSpollution.current_run -= pollution
-
-#define POLLUTION_HEIGHT_DIVISOR 10
-
-#define TICKS_TO_DISSIPATE 20
-
-#define POLLUTION_TASK_PROCESS 1
-#define POLLUTION_TASK_DISSIPATE 2
-
-#define SCENT_DESC_ODOR "odour"
-#define SCENT_DESC_SMELL "smell"
-#define SCENT_DESC_FRAGRANCE "fragrance"
-
-#define POLLUTION_DISSIPATION_PLANETARY_MULTIPLIER 4
-
-///Minimum amount of smell power to be able to sniff a pollutant
-#define POLLUTANT_SMELL_THRESHOLD 3.5
-
-#define POLLUTANT_SMELL_NORMAL 20
-#define POLLUTANT_SMELL_STRONG 40
-
-#define SMELL_COOLDOWN (1 MINUTES)
-
-//Bitflags for pollutants
-#define POLLUTANT_APPEARANCE (1<<0) //Pollutant has an appearance
-#define POLLUTANT_SMELL (1<<1) //Pollutant has a smell
-#define POLLUTANT_TOUCH_ACT (1<<2) //Pollutant calls touch_act() on unprotected people touched by it
-#define POLLUTANT_BREATHE_ACT (1<<3) //Pollutant calls smell_act() on people breathing it in
-
-#define POLLUTANT_APPEARANCE_THICKNESS_THRESHOLD 30
-#define THICKNESS_ALPHA_COEFFICIENT 0.0025
-
-//Cap for active emitters that can be running for a very long time
-#define POLLUTION_ACTIVE_EMITTER_CAP 200
-//For things that you dont want to cause too much pollution
-#define POLLUTION_PASSIVE_EMITTER_CAP 70
diff --git a/code/datums/components/crafting/tools.dm b/code/datums/components/crafting/tools.dm
index 59ee1276d59..10b0352d376 100644
--- a/code/datums/components/crafting/tools.dm
+++ b/code/datums/components/crafting/tools.dm
@@ -14,7 +14,7 @@
reqs = list(/obj/item/grown/log = 5)
parts = list(/obj/item/grown/log = 5)
blacklist = list(/obj/item/grown/log/steel)
- result = /obj/structure/bonfire/player_made // SKYRAT EDIT - Pollution - ORIGINAL: result = /obj/structure/bonfire
+ result = /obj/structure/bonfire
category = CAT_TOOLS
/datum/crafting_recipe/boneshovel
diff --git a/code/datums/components/grillable.dm b/code/datums/components/grillable.dm
index e7b1de5e22a..3b3ef047c83 100644
--- a/code/datums/components/grillable.dm
+++ b/code/datums/components/grillable.dm
@@ -123,11 +123,6 @@
SIGNAL_HANDLER
. = COMPONENT_HANDLED_GRILLING
- //SKYRAT EDIT ADDITION
- if(pollutant_type)
- var/turf/parent_turf = get_turf(parent)
- parent_turf.pollute_turf(pollutant_type, 10)
- //SKYRAT EDIT END
current_cook_time += seconds_per_tick * 10 //turn it into ds
if(current_cook_time >= required_cook_time)
diff --git a/code/game/objects/items/cigarettes.dm b/code/game/objects/items/cigarettes.dm
index f2f64f7e28c..7720fe6976f 100644
--- a/code/game/objects/items/cigarettes.dm
+++ b/code/game/objects/items/cigarettes.dm
@@ -94,10 +94,6 @@ CIGARETTE PACKETS ARE IN FANCY.DM
/obj/item/match/proc/matchignite()
if(lit || burnt || broken)
return
- //SKYRAT EDIT ADDITION
- var/turf/my_turf = get_turf(src)
- my_turf.pollute_turf(/datum/pollutant/sulphur, 5)
- //SKYRAT EDIT END
playsound(src, 'sound/items/match_strike.ogg', 15, TRUE)
lit = TRUE
damtype = BURN
@@ -232,8 +228,6 @@ CIGARETTE PACKETS ARE IN FANCY.DM
/// Which people ate cigarettes and how many
var/static/list/cigarette_eaters = list()
- var/pollution_type = /datum/pollutant/smoke //SKYRAT EDIT ADDITION /// What type of pollution does this produce on smoking, changed to weed pollution sometimes
-
/obj/item/cigarette/Initialize(mapload)
. = ..()
AddComponent(/datum/component/knockoff, 90, list(BODY_ZONE_PRECISE_MOUTH), slot_flags) //90% to knock off when wearing a mask
@@ -420,12 +414,6 @@ CIGARETTE PACKETS ARE IN FANCY.DM
e.start(src)
qdel(src)
return
- //SKYRAT EDIT ADDITION
- // Setting the puffed pollutant to cannabis if we're smoking the space drugs reagent(obtained from cannabis)
- if(reagents.has_reagent(/datum/reagent/drug/space_drugs))
- pollution_type = /datum/pollutant/smoke/cannabis
- // allowing reagents to react after being lit
- //SKYRAT EDIT END
reagents.flags &= ~(NO_REACT)
reagents.handle_reactions()
@@ -553,11 +541,6 @@ CIGARETTE PACKETS ARE IN FANCY.DM
extinguish()
return
- // SKYRAT EDIT ADDITION START - Pollution
- var/turf/location = get_turf(src)
- location.pollute_turf(pollution_type, 5, POLLUTION_PASSIVE_EMITTER_CAP)
- // SKYRAT EDIT END
-
smoketime -= seconds_per_tick * (1 SECONDS)
if(smoketime <= 0)
put_out(user)
@@ -1123,12 +1106,6 @@ CIGARETTE PACKETS ARE IN FANCY.DM
//Time to start puffing those fat vapes, yo.
COOLDOWN_START(src, drag_cooldown, dragtime)
- //SKYRAT EDIT ADDITION
- //open flame removed because vapes are a closed system, they won't light anything on fire
- var/turf/my_turf = get_turf(src)
- my_turf.pollute_turf(/datum/pollutant/smoke/vape, 5, POLLUTION_PASSIVE_EMITTER_CAP)
- //SKYRAT EDIT END
-
if(obj_flags & EMAGGED)
var/datum/effect_system/fluid_spread/smoke/chem/smoke_machine/puff = new
puff.set_up(4, holder = src, location = loc, carry = reagents, efficiency = 24)
diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm
index 2a903c0f917..5d50e7a51a4 100644
--- a/code/game/objects/items/stacks/sheets/sheet_types.dm
+++ b/code/game/objects/items/stacks/sheets/sheet_types.dm
@@ -362,7 +362,7 @@ GLOBAL_LIST_INIT(wood_recipes, list ( \
new/datum/stack_recipe("loom", /obj/structure/loom, 10, time = 1.5 SECONDS, crafting_flags = CRAFT_CHECK_DENSITY | CRAFT_ONE_PER_TURF | CRAFT_ON_SOLID_GROUND, category = CAT_TOOLS), \
new/datum/stack_recipe("mortar", /obj/item/reagent_containers/cup/mortar, 3, crafting_flags = NONE, category = CAT_CHEMISTRY), \
new/datum/stack_recipe("firebrand", /obj/item/match/firebrand, 2, time = 10 SECONDS, crafting_flags = NONE, category = CAT_TOOLS), \
- new/datum/stack_recipe("bonfire", /obj/structure/bonfire/player_made, 10, time = 6 SECONDS, crafting_flags = CRAFT_CHECK_DENSITY | CRAFT_ONE_PER_TURF | CRAFT_ON_SOLID_GROUND, category = CAT_TOOLS), /* SKYRAT EDIT - Pollution - ORIGINAL: /obj/structure/bonfire */ \
+ new/datum/stack_recipe("bonfire", /obj/structure/bonfire, 10, time = 6 SECONDS, crafting_flags = CRAFT_CHECK_DENSITY | CRAFT_ONE_PER_TURF | CRAFT_ON_SOLID_GROUND, category = CAT_TOOLS), \
new/datum/stack_recipe("easel", /obj/structure/easel, 5, time = 1 SECONDS, crafting_flags = CRAFT_CHECK_DENSITY | CRAFT_ONE_PER_TURF | CRAFT_ON_SOLID_GROUND, category = CAT_ENTERTAINMENT), \
new/datum/stack_recipe("noticeboard", /obj/item/wallframe/noticeboard, 1, time = 1 SECONDS, crafting_flags = NONE, category = CAT_FURNITURE), \
new/datum/stack_recipe("fish mount", /obj/item/wallframe/fish, 2, time = 3 SECONDS, crafting_flags = NONE, category = CAT_FURNITURE),\
diff --git a/code/game/objects/structures/crates_lockers/closets/job_closets.dm b/code/game/objects/structures/crates_lockers/closets/job_closets.dm
index 8b72e6c815c..25745884838 100644
--- a/code/game/objects/structures/crates_lockers/closets/job_closets.dm
+++ b/code/game/objects/structures/crates_lockers/closets/job_closets.dm
@@ -67,11 +67,6 @@
new /obj/item/watertank/janitor(src)
new /obj/item/storage/belt/janitor(src)
- //SKYRAT EDIT ADDITION
- new /obj/item/air_refresher(src)
- new /obj/item/air_refresher(src)
- //SKYRAT EDIT END
-
/obj/structure/closet/lawcloset
name = "legal closet"
desc = "It's a storage unit for courtroom apparel and items."
diff --git a/code/game/turfs/change_turf.dm b/code/game/turfs/change_turf.dm
index 12bc1d3f2be..a2f416073ec 100644
--- a/code/game/turfs/change_turf.dm
+++ b/code/game/turfs/change_turf.dm
@@ -246,17 +246,11 @@ GLOBAL_LIST_INIT(blacklisted_automated_baseturfs, typecacheof(list(
var/datum/gas_mixture/stashed_air = new()
stashed_air.copy_from(air)
var/stashed_state = excited
- var/datum/pollution/stashed_pollution = pollution //SKYRAT EDIT ADDITION
var/datum/excited_group/stashed_group = excited_group
. = ..() //If path == type this will return us, don't bank on making a new type
if (!.) // changeturf failed or didn't do anything
return
var/turf/open/new_turf = .
- //SKYRAT EDIT ADDITION
- if(stashed_pollution)
- new_turf.pollution = stashed_pollution
- stashed_pollution.handle_overlay()
- //SKYRAT EDIT END
new_turf.air.copy_from(stashed_air)
new_turf.excited = stashed_state
new_turf.excited_group = stashed_group
@@ -268,10 +262,6 @@ GLOBAL_LIST_INIT(blacklisted_automated_baseturfs, typecacheof(list(
if(stashed_group.should_display || SSair.display_all_groups)
stashed_group.display_turf(new_turf)
else
- //SKYRAT EDIT ADDITION
- if(pollution)
- qdel(pollution)
- //SKYRAT EDIT END
if(excited || excited_group)
SSair.remove_from_active(src) //Clean up wall excitement, and refresh excited groups
if(ispath(path, /turf/closed) || ispath(path, /turf/cordon))
diff --git a/code/modules/admin/verbs/fix_air.dm b/code/modules/admin/verbs/fix_air.dm
index d9e81086c72..4da06921b92 100644
--- a/code/modules/admin/verbs/fix_air.dm
+++ b/code/modules/admin/verbs/fix_air.dm
@@ -7,10 +7,6 @@ ADMIN_VERB_AND_CONTEXT_MENU(fix_air, R_ADMIN, "Fix Air", "Fixes air in a specifi
if(valid_range_turf.blocks_air)
//skip walls
continue
- //SKYRAT EDIT ADDITION START
- if(valid_range_turf.pollution)
- qdel(valid_range_turf.pollution)
- //SKYRAT EDIT ADDITION END
var/datum/gas_mixture/GM = SSair.parse_gas_string(valid_range_turf.initial_gas_mix, /datum/gas_mixture/turf)
valid_range_turf.copy_air(GM)
valid_range_turf.temperature = initial(valid_range_turf.temperature)
diff --git a/code/modules/atmospherics/environmental/LINDA_system.dm b/code/modules/atmospherics/environmental/LINDA_system.dm
index 0556d085adf..87bec361231 100644
--- a/code/modules/atmospherics/environmental/LINDA_system.dm
+++ b/code/modules/atmospherics/environmental/LINDA_system.dm
@@ -134,8 +134,6 @@
src.atmos_adjacent_turfs = atmos_adjacent_turfs
SEND_SIGNAL(src, COMSIG_TURF_CALCULATED_ADJACENT_ATMOS)
- update_adjacent_pollutants() //SKYRAT EDIT ADDITION //Atmos adjacency could unlock/block adjacent pollutants, this is dirty flags anyway so its fine having it here
-
/**
* returns a list of adjacent turfs that can share air with this one.
* alldir includes adjacent diagonal tiles that can share
diff --git a/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm b/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm
index 6b591d4010c..cc94f04623b 100644
--- a/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm
+++ b/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm
@@ -256,12 +256,6 @@
environment.garbage_collect()
- // SKYRAT EDIT ADDITION
- if(isopenturf(tile))
- var/turf/open/floor_turf = tile
- floor_turf.pollution?.scrub_amount(1)
- // SKYRAT EDIT END
-
//Remix the resulting gases
air_contents.merge(filtered_out)
update_parents()
diff --git a/code/modules/atmospherics/machinery/portable/scrubber.dm b/code/modules/atmospherics/machinery/portable/scrubber.dm
index e9a5de25800..b1b094c9db0 100644
--- a/code/modules/atmospherics/machinery/portable/scrubber.dm
+++ b/code/modules/atmospherics/machinery/portable/scrubber.dm
@@ -69,11 +69,6 @@
scrub(epicentre.return_air())
for(var/turf/open/openturf as anything in epicentre.get_atmos_adjacent_turfs(alldir = TRUE))
scrub(openturf.return_air())
- //SKYRAT EDIT ADDITION
- for(var/turf/open/open_turf in view(3, src))
- if(open_turf.pollution)
- open_turf.pollution.scrub_amount(POLLUTION_HEIGHT_DIVISOR)
- //SKYRAT EDIT END
return ..()
/**
diff --git a/code/modules/food_and_drinks/recipes/drinks/drinks_non-alcoholic.dm b/code/modules/food_and_drinks/recipes/drinks/drinks_non-alcoholic.dm
index b3db43009a0..3790c7a3100 100644
--- a/code/modules/food_and_drinks/recipes/drinks/drinks_non-alcoholic.dm
+++ b/code/modules/food_and_drinks/recipes/drinks/drinks_non-alcoholic.dm
@@ -105,12 +105,10 @@
/datum/chemical_reaction/drink/coffee
results = list(/datum/reagent/consumable/coffee = 5)
required_reagents = list(/datum/reagent/toxin/coffeepowder = 1, /datum/reagent/water = 5)
- pollutant_type = /datum/pollutant/food/coffee //SKYRAT EDIT ADDITION - Pollution
/datum/chemical_reaction/drink/tea
results = list(/datum/reagent/consumable/tea = 5)
required_reagents = list(/datum/reagent/toxin/teapowder = 1, /datum/reagent/water = 5)
- pollutant_type = /datum/pollutant/food/tea //SKYRAT EDIT ADDITION
/datum/chemical_reaction/drink/cream_soda
results = list(/datum/reagent/consumable/cream_soda = 4)
diff --git a/code/modules/food_and_drinks/recipes/food_mixtures.dm b/code/modules/food_and_drinks/recipes/food_mixtures.dm
index f5a742688bb..e90f3ac6dbc 100644
--- a/code/modules/food_and_drinks/recipes/food_mixtures.dm
+++ b/code/modules/food_and_drinks/recipes/food_mixtures.dm
@@ -162,14 +162,10 @@
results = list(/datum/reagent/consumable/hot_ramen = 3)
required_reagents = list(/datum/reagent/water = 1, /datum/reagent/consumable/dry_ramen = 3)
- pollutant_type = /datum/pollutant/food/spicy_noodles //SKYRAT EDIT ADDITION
-
/datum/chemical_reaction/food/hell_ramen
results = list(/datum/reagent/consumable/hell_ramen = 6)
required_reagents = list(/datum/reagent/consumable/capsaicin = 1, /datum/reagent/consumable/hot_ramen = 6)
- pollutant_type = /datum/pollutant/food/spicy_noodles //SKYRAT EDIT ADDITION
-
/datum/chemical_reaction/food/imitationcarpmeat
required_reagents = list(/datum/reagent/toxin/carpotoxin = 5)
required_container = /obj/item/food/tofu
diff --git a/code/modules/mob/living/carbon/life.dm b/code/modules/mob/living/carbon/life.dm
index 55d9f00a502..bf7b32e6271 100644
--- a/code/modules/mob/living/carbon/life.dm
+++ b/code/modules/mob/living/carbon/life.dm
@@ -2,13 +2,6 @@
if(HAS_TRAIT(src, TRAIT_NO_TRANSFORM))
return
- //SKYRAT EDIT ADDITION
- if(isopenturf(loc))
- var/turf/open/my_our_turf = loc
- if(my_our_turf.pollution)
- my_our_turf.pollution.touch_act(src)
- //SKYRAT EDIT END
-
if(damageoverlaytemp)
damageoverlaytemp = 0
update_damage_hud()
@@ -131,13 +124,6 @@
visible_message("[src] chokes on [our_turf.liquids.reagents_to_text()]!", \
"You're choking on [our_turf.liquids.reagents_to_text()]!")
return FALSE
- if(isopenturf(our_turf))
- var/turf/open/open_turf = our_turf
- if(open_turf.pollution)
- if(next_smell <= world.time)
- next_smell = world.time + SMELL_COOLDOWN
- open_turf.pollution.smell_act(src)
- open_turf.pollution.breathe_act(src)
//SKYRAT EDIT END
var/breath_moles = 0
if(environment)
diff --git a/code/modules/reagents/chemistry/holder/reactions.dm b/code/modules/reagents/chemistry/holder/reactions.dm
index aee80400a98..a40dfd9f348 100644
--- a/code/modules/reagents/chemistry/holder/reactions.dm
+++ b/code/modules/reagents/chemistry/holder/reactions.dm
@@ -214,14 +214,6 @@
if(equilibrium.reaction.mix_sound)
playsound(get_turf(my_atom), equilibrium.reaction.mix_sound, 80, TRUE)
- //SKYRAT EDIT ADDITION
- //If the reaction pollutes, pollute it here if we have an atom
- if(equilibrium.reaction.pollutant_type && my_atom)
- var/turf/my_turf = get_turf(my_atom)
- if(my_turf) // reactions can happen in nullspace (like inside of a mob's stomach for instance).
- my_turf.pollute_turf(equilibrium.reaction.pollutant_type, equilibrium.reaction.pollutant_amount * equilibrium.reacted_vol)
- //SKYRAT EDIT END
-
qdel(equilibrium)
update_total()
@@ -350,13 +342,5 @@
extract.desc = "This extract has been used up."
extract.grind_results.Cut()
- //SKYRAT EDIT ADDITION
- //If the reaction pollutes, pollute it here if we have an atom
- if(selected_reaction.pollutant_type && my_atom)
- var/turf/my_turf = get_turf(my_atom)
- if(my_turf) // just to be safe here
- my_turf.pollute_turf(selected_reaction.pollutant_type, selected_reaction.pollutant_amount * multiplier)
- //SKYRAT EDIT END
-
//finish the reaction
selected_reaction.on_reaction(src, null, multiplier)
diff --git a/code/modules/reagents/chemistry/recipes.dm b/code/modules/reagents/chemistry/recipes.dm
index a3f051a27e5..105ce859ffd 100644
--- a/code/modules/reagents/chemistry/recipes.dm
+++ b/code/modules/reagents/chemistry/recipes.dm
@@ -59,12 +59,6 @@
///Tagging vars
///A bitflag var for tagging reagents for the reagent loopup functon
var/reaction_tags = NONE
- //SKYRAT EDIT ADDITION
- ///If defined, it'll emitt that pollutant on reaction
- var/pollutant_type
- ///How much amount per volume of the pollutant shall we emitt if `pollutant_type` is defined
- var/pollutant_amount = 1
- //SKYRAT EDIT END
///REACTION PROCS
diff --git a/code/modules/reagents/chemistry/recipes/medicine.dm b/code/modules/reagents/chemistry/recipes/medicine.dm
index 7cde5cd1160..84f251b759f 100644
--- a/code/modules/reagents/chemistry/recipes/medicine.dm
+++ b/code/modules/reagents/chemistry/recipes/medicine.dm
@@ -9,11 +9,6 @@
rate_up_lim = 35
reaction_tags = REACTION_TAG_HEALING | REACTION_TAG_EASY
- //SKYRAT EDIT ADDITION
- pollutant_type = /datum/pollutant/chemical_vapors
- pollutant_amount = 0.2
- //SKYRAT EDIT END
-
/datum/chemical_reaction/medicine/leporazine
results = list(/datum/reagent/medicine/leporazine = 2)
required_reagents = list(/datum/reagent/silicon = 1, /datum/reagent/copper = 1)
diff --git a/modular_skyrat/master_files/code/datums/components/grillable.dm b/modular_skyrat/master_files/code/datums/components/grillable.dm
deleted file mode 100644
index 42146559af1..00000000000
--- a/modular_skyrat/master_files/code/datums/components/grillable.dm
+++ /dev/null
@@ -1,9 +0,0 @@
-/datum/component/grillable
- /// What type of pollutant we spread around as we are grilleed, can be none
- var/pollutant_type
-
-/datum/component/grillable/Initialize(cook_result, required_cook_time, positive_result, use_large_steam_sprite, list/added_reagents, pollutant_type)
- . = ..()
- if(. == COMPONENT_INCOMPATIBLE)
- return
- src.pollutant_type = pollutant_type
diff --git a/modular_skyrat/master_files/code/modules/loadout/categories/pocket.dm b/modular_skyrat/master_files/code/modules/loadout/categories/pocket.dm
index 315989ef8cd..93ebbab8c76 100644
--- a/modular_skyrat/master_files/code/modules/loadout/categories/pocket.dm
+++ b/modular_skyrat/master_files/code/modules/loadout/categories/pocket.dm
@@ -190,51 +190,6 @@
name = "Liberty Cap Seeds"
item_path = /obj/item/seeds/liberty
-/*
-* FRAGRANCES
-*/
-
-/datum/loadout_item/pocket_items/fragrance_cologne
- name = "Cologne Bottle"
- item_path = /obj/item/perfume/cologne
-
-/datum/loadout_item/pocket_items/fragrance_wood
- name = "Wood Perfume"
- item_path = /obj/item/perfume/wood
-
-/datum/loadout_item/pocket_items/fragrance_rose
- name = "Rose Perfume"
- item_path = /obj/item/perfume/rose
-
-/datum/loadout_item/pocket_items/fragrance_jasmine
- name = "Jasmine Perfume"
- item_path = /obj/item/perfume/jasmine
-
-/datum/loadout_item/pocket_items/fragrance_mint
- name = "Mint Perfume"
- item_path = /obj/item/perfume/mint
-
-/datum/loadout_item/pocket_items/fragrance_vanilla
- name = "Vanilla Perfume"
- item_path = /obj/item/perfume/vanilla
-
-/datum/loadout_item/pocket_items/fragrance_pear
- name = "Pear Perfume"
- item_path = /obj/item/perfume/pear
-
-/datum/loadout_item/pocket_items/fragrance_strawberry
- name = "Strawberry Perfume"
- item_path = /obj/item/perfume/strawberry
-
-/datum/loadout_item/pocket_items/fragrance_cherry
- name = "Cherry Perfume"
- item_path = /obj/item/perfume/cherry
-
-/datum/loadout_item/pocket_items/fragrance_amber
- name = "Amber Perfume"
- item_path = /obj/item/perfume/amber
-
-
/*
* DONATOR
*/
diff --git a/modular_skyrat/modules/emotes/code/emotes.dm b/modular_skyrat/modules/emotes/code/emotes.dm
index 705123724ae..176c3225ff5 100644
--- a/modular_skyrat/modules/emotes/code/emotes.dm
+++ b/modular_skyrat/modules/emotes/code/emotes.dm
@@ -60,18 +60,6 @@
message_robot = "synthesizes a yawn."
message_AI = "synthesizes a yawns."
-/datum/emote/living/sniff/run_emote(mob/user, params, type_override, intentional)
- . = ..()
- if(.)
- var/turf/open/current_turf = get_turf(user)
- if(istype(current_turf) && current_turf.pollution)
- if(iscarbon(user))
- var/mob/living/carbon/carbon_user = user
- if(carbon_user.internal) //Breathing from internals means we cant smell
- return
- carbon_user.next_smell = world.time + SMELL_COOLDOWN
- current_turf.pollution.smell_act(user)
-
/datum/emote/living/peep
key = "peep"
key_third_person = "peeps"
diff --git a/modular_skyrat/modules/liquids/code/liquid_systems/liquid_turf.dm b/modular_skyrat/modules/liquids/code/liquid_systems/liquid_turf.dm
index 91fd436b217..92bf6e9d38a 100644
--- a/modular_skyrat/modules/liquids/code/liquid_systems/liquid_turf.dm
+++ b/modular_skyrat/modules/liquids/code/liquid_systems/liquid_turf.dm
@@ -312,10 +312,6 @@
/*
* OPEN TURFS
*/
-/turf/open
- /// Pollution stored on this turf
- var/datum/pollution/pollution
-
//Consider making all of these behaviours a smart component/element? Something that's only applied wherever it needs to be
//Could probably have the variables on the turf level, and the behaviours being activated/deactived on the component level as the vars are updated
/turf/open/CanPass(atom/movable/mover, turf/location)
diff --git a/modular_skyrat/modules/modular_vending/code/wardrobes.dm b/modular_skyrat/modules/modular_vending/code/wardrobes.dm
index 982e1ff14ee..fde6aeba880 100644
--- a/modular_skyrat/modules/modular_vending/code/wardrobes.dm
+++ b/modular_skyrat/modules/modular_vending/code/wardrobes.dm
@@ -104,11 +104,6 @@
/obj/machinery/vending/wardrobe/bar_wardrobe
skyrat_products = list(
- /obj/item/storage/fancy/candle_box/vanilla = 1,
- /obj/item/storage/fancy/candle_box/pear = 1,
- /obj/item/storage/fancy/candle_box/amber = 1,
- /obj/item/storage/fancy/candle_box/jasmine = 1,
- /obj/item/storage/fancy/candle_box/mint = 1,
/obj/item/clothing/suit/hooded/wintercoat/skyrat/bartender = 2,
)
diff --git a/modular_skyrat/modules/pollution/code/admin_spawn_pollution.dm b/modular_skyrat/modules/pollution/code/admin_spawn_pollution.dm
deleted file mode 100644
index 125a9fb740b..00000000000
--- a/modular_skyrat/modules/pollution/code/admin_spawn_pollution.dm
+++ /dev/null
@@ -1,12 +0,0 @@
-ADMIN_VERB(spawn_pollution, R_ADMIN, "Spawn Pollution", "Spawns an amount of chosen pollutant at your current location.", ADMIN_CATEGORY_FUN)
- var/list/singleton_list = SSpollution.singletons
- var/choice = tgui_input_list(user, "What type of pollutant would you like to spawn?", "Spawn Pollution", singleton_list)
- if(!choice)
- return
- var/amount_choice = input("Amount of pollution:") as null|num
- if(!amount_choice)
- return
- var/turf/epicenter = get_turf(user.mob)
- epicenter.pollute_turf(choice, amount_choice)
- message_admins("[ADMIN_LOOKUPFLW(user)] spawned pollution at [epicenter.loc] ([choice] - [amount_choice]).")
- log_admin("[key_name(user)] spawned pollution at [epicenter.loc] ([choice] - [amount_choice]).")
diff --git a/modular_skyrat/modules/pollution/code/air_refresher.dm b/modular_skyrat/modules/pollution/code/air_refresher.dm
deleted file mode 100644
index 53be9661de9..00000000000
--- a/modular_skyrat/modules/pollution/code/air_refresher.dm
+++ /dev/null
@@ -1,62 +0,0 @@
-/obj/item/air_refresher
- name = "air refresher"
- desc = "A bottle packed with sickly strong fragrance, with an easy to use pressurized release nozzle."
- icon = 'modular_skyrat/modules/pollution/icons/air_refresher.dmi'
- icon_state = "air_refresher"
- inhand_icon_state = "cleaner"
- worn_icon_state = "spraybottle"
- lefthand_file = 'icons/mob/inhands/equipment/custodial_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/equipment/custodial_righthand.dmi'
- w_class = WEIGHT_CLASS_TINY
- item_flags = NOBLUDGEON
- var/uses_remaining = 20
-
-/obj/item/air_refresher/examine(mob/user)
- . = ..()
- if(uses_remaining)
- . += "It has [uses_remaining] use\s left."
- else
- . += "It is empty."
-
-/obj/item/air_refresher/ranged_interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers)
- if(uses_remaining <= 0)
- to_chat(user, span_warning("\The [src] is empty!"))
- return NONE
- uses_remaining--
- var/turf/aimed_turf = get_turf(interacting_with)
- aimed_turf.pollute_turf(/datum/pollutant/fragrance/air_refresher, 200)
- user.visible_message(span_notice("[user] sprays the air around with \the [src]."), span_notice("You spray the air around with \the [src]."))
- user.changeNext_move(CLICK_CD_RANGE*2)
- playsound(aimed_turf, 'sound/effects/spray2.ogg', 50, TRUE, -6)
- return ITEM_INTERACT_SUCCESS
-
-/obj/machinery/pollution_scrubber
- name = "Pollution Scrubber"
- desc = "A scrubber that will process the air and filter out any contaminants."
- icon = 'modular_skyrat/modules/pollution/icons/pollution_scrubber.dmi'
- icon_state = "scrubber"
- var/scrub_amount = 2
- var/on = FALSE
-
-/obj/machinery/pollution_scrubber/attack_hand(mob/living/user, list/modifiers)
- . = ..()
- on = !on
- balloon_alert(user, "scrubber turned [on ? "on" : "off"]")
-
- update_appearance()
-
-/obj/machinery/pollution_scrubber/update_icon(updates)
- . = ..()
- if(on)
- icon_state = "scrubber_on"
- else
- icon_state = "scrubber"
-
-/obj/machinery/pollution_scrubber/process()
- if(machine_stat)
- return
- if(on && isopenturf(get_turf(src)))
- var/turf/open/open_turf = get_turf(src)
- if(open_turf.pollution)
- open_turf.pollution.scrub_amount(scrub_amount)
- use_energy(100 JOULES)
diff --git a/modular_skyrat/modules/pollution/code/bonfire.dm b/modular_skyrat/modules/pollution/code/bonfire.dm
deleted file mode 100644
index 5f4e8efd28c..00000000000
--- a/modular_skyrat/modules/pollution/code/bonfire.dm
+++ /dev/null
@@ -1,19 +0,0 @@
-/obj/structure/bonfire
- /// Whether or not this bonfire can cause pollution.
- var/produces_smoke = FALSE
-
-// We basically only want player-made bonfires to make smoke, so it's simpler.
-/obj/structure/bonfire/player_made
- produces_smoke = TRUE
-
-
-/obj/structure/bonfire/process(seconds_per_tick)
- . = ..()
-
- if(!burning || !produces_smoke)
- return
-
- var/turf/open/my_turf = get_turf(src)
- if(istype(my_turf) && !my_turf.planetary_atmos && !is_centcom_level(my_turf.z)) //Pollute, but only when we're not on planetary atmos or on CentCom
- my_turf.pollute_turf_list(list(/datum/pollutant/smoke = 15, /datum/pollutant/carbon_air_pollution = 5), POLLUTION_ACTIVE_EMITTER_CAP)
-
diff --git a/modular_skyrat/modules/pollution/code/fancy_storage_items.dm b/modular_skyrat/modules/pollution/code/fancy_storage_items.dm
deleted file mode 100644
index da666f57de2..00000000000
--- a/modular_skyrat/modules/pollution/code/fancy_storage_items.dm
+++ /dev/null
@@ -1,19 +0,0 @@
-/obj/item/storage/fancy/candle_box/vanilla
- name = "vanilla candle pack"
- spawn_type = /obj/item/flashlight/flare/candle/vanilla
-
-/obj/item/storage/fancy/candle_box/pear
- name = "pear candle pack"
- spawn_type = /obj/item/flashlight/flare/candle/pear
-
-/obj/item/storage/fancy/candle_box/amber
- name = "amber candle pack"
- spawn_type = /obj/item/flashlight/flare/candle/amber
-
-/obj/item/storage/fancy/candle_box/jasmine
- name = "jasmine candle pack"
- spawn_type = /obj/item/flashlight/flare/candle/jasmine
-
-/obj/item/storage/fancy/candle_box/mint
- name = "mint candle pack"
- spawn_type = /obj/item/flashlight/flare/candle/mint
diff --git a/modular_skyrat/modules/pollution/code/perfumes.dm b/modular_skyrat/modules/pollution/code/perfumes.dm
deleted file mode 100644
index 4fd617b3eb9..00000000000
--- a/modular_skyrat/modules/pollution/code/perfumes.dm
+++ /dev/null
@@ -1,109 +0,0 @@
-/obj/item/perfume
- desc = "A bottle of pleasantly smelling fragrance."
- icon = 'modular_skyrat/modules/pollution/icons/perfume.dmi'
- icon_state = "perfume"
- inhand_icon_state = "cleaner"
- worn_icon_state = "spraybottle"
- lefthand_file = 'icons/mob/inhands/equipment/custodial_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/equipment/custodial_righthand.dmi'
- w_class = WEIGHT_CLASS_TINY
- item_flags = NOBLUDGEON
- /// What type of the pollutant will this perfume be using
- var/fragrance_type
- /// How many uses remaining has it got
- var/uses_remaining = 10
- /// Whether the cap of the perfume is on or off
- var/cap = TRUE
- /// Whether we have a cap or not
- var/has_cap = TRUE
-
-/obj/item/perfume/Initialize(mapload)
- . = ..()
- update_appearance()
-
-/obj/item/perfume/update_icon_state()
- icon_state = (has_cap && cap) ? "[initial(icon_state)]_cap" : initial(icon_state)
- return ..()
-
-/obj/item/perfume/examine(mob/user)
- . = ..()
- if(uses_remaining)
- . += "It has [uses_remaining] use\s left."
- else
- . += "It is empty."
- if(has_cap)
- . += span_notice("Alt-click [src] to [ cap ? "take the cap off" : "put the cap on"].")
-
-/obj/item/perfume/click_alt(mob/user)
- toggle_cap(user)
- return CLICK_ACTION_SUCCESS
-
-/obj/item/perfume/attack_self(mob/user, modifiers)
- toggle_cap(user)
-
-/// Proc to handle removing the cap of the perfume bottle.
-/obj/item/perfume/proc/toggle_cap(mob/user)
- if(has_cap && user.can_perform_action(src, NEED_DEXTERITY))
- cap = !cap
- to_chat(user, span_notice("The cap on [src] is now [cap ? "on" : "off"]."))
- update_appearance()
-
-/obj/item/perfume/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers)
- if(.)
- return
- if(!ismovable(interacting_with))
- return
- if(has_cap && cap)
- to_chat(user, span_warning("Take the cap off first!"))
- return TRUE
- if(uses_remaining <= 0)
- to_chat(user, span_warning("\The [src] is empty!"))
- return TRUE
- uses_remaining--
- var/turf/my_turf = get_turf(user)
- my_turf.pollute_turf(fragrance_type, 20)
- user.visible_message(span_notice("[user] sprays [interacting_with] with \the [src]."), span_notice("You spray [interacting_with] with \the [src]."))
- user.changeNext_move(CLICK_CD_RANGE*2)
- playsound(my_turf, 'sound/effects/spray2.ogg', 50, TRUE, -6)
- interacting_with.AddComponent(/datum/component/temporary_pollution_emission, fragrance_type, 5, 10 MINUTES)
-
-/obj/item/perfume/cologne
- name = "cologne bottle"
- desc = "This one is sure to attract ladies."
- fragrance_type = /datum/pollutant/fragrance/cologne
-
-/obj/item/perfume/wood
- name = "wood perfume bottle"
- fragrance_type = /datum/pollutant/fragrance/wood
-
-/obj/item/perfume/rose
- name = "rose perfume bottle"
- fragrance_type = /datum/pollutant/fragrance/rose
-
-/obj/item/perfume/jasmine
- name = "jasmine perfume bottle"
- fragrance_type = /datum/pollutant/fragrance/jasmine
-
-/obj/item/perfume/mint
- name = "mint perfume bottle"
- fragrance_type = /datum/pollutant/fragrance/mint
-
-/obj/item/perfume/vanilla
- name = "vanilla perfume bottle"
- fragrance_type = /datum/pollutant/fragrance/vanilla
-
-/obj/item/perfume/pear
- name = "pear perfume bottle"
- fragrance_type = /datum/pollutant/fragrance/pear
-
-/obj/item/perfume/strawberry
- name = "strawberry perfume bottle"
- fragrance_type = /datum/pollutant/fragrance/strawberry
-
-/obj/item/perfume/cherry
- name = "cherry perfume bottle"
- fragrance_type = /datum/pollutant/fragrance/cherry
-
-/obj/item/perfume/amber
- name = "amber perfume bottle"
- fragrance_type = /datum/pollutant/fragrance/amber
diff --git a/modular_skyrat/modules/pollution/code/pollutant_datum.dm b/modular_skyrat/modules/pollution/code/pollutant_datum.dm
deleted file mode 100644
index 7d4fc7d8b94..00000000000
--- a/modular_skyrat/modules/pollution/code/pollutant_datum.dm
+++ /dev/null
@@ -1,27 +0,0 @@
-/datum/pollutant
- /// Name of the pollutant, if null will be treated as abstract and wont be initialized as singleton
- var/name
- /// Flags of the pollutant, determine whether it has an appearance, smell, touch act, breath act
- var/pollutant_flags = NONE
- /// Below are variables for appearance
- /// What color will the pollutant be, can be left null
- var/color
- /// What is it desired alpha?
- var/alpha = 255
- /// How "thick" is it, the thicker the quicker it gets to desired alpha and is stronger than other pollutants in blending appearance
- var/thickness = 1
- ///FILL THE BELOW OUT IF ITS SMELLABLE!
- /// How intense is one unit of the pollutant for smell purposes?
- var/smell_intensity
- /// Descriptor of the smell
- var/descriptor
- /// Scent of the smell
- var/scent
-
-///When a pollutant touches an unprotected carbon mob
-/datum/pollutant/proc/touch_act(mob/living/carbon/victim, amount)
- return
-
-///When a carbon mob breathes in the pollutant
-/datum/pollutant/proc/breathe_act(mob/living/carbon/victim, amount)
- return
diff --git a/modular_skyrat/modules/pollution/code/pollutants_generic.dm b/modular_skyrat/modules/pollution/code/pollutants_generic.dm
deleted file mode 100644
index da61911adc4..00000000000
--- a/modular_skyrat/modules/pollution/code/pollutants_generic.dm
+++ /dev/null
@@ -1,183 +0,0 @@
-///Smoke coming from cigarettes and fires
-/datum/pollutant/smoke //and mirrors
- name = "Smoke"
- pollutant_flags = POLLUTANT_APPEARANCE | POLLUTANT_SMELL | POLLUTANT_BREATHE_ACT
- smell_intensity = 1
- descriptor = SCENT_DESC_SMELL
- scent = "smoke"
-
-/datum/pollutant/smoke/breathe_act(mob/living/carbon/victim, amount)
- if(amount <= 50)
- return
- if(prob(20))
- victim.emote("cough")
-
-///From smoking weed
-/datum/pollutant/smoke/cannabis
- name = "Cannabis"
- smell_intensity = 2 //Stronger than the normal smoke
- scent = "cannabis"
-
-/datum/pollutant/smoke/vape
- name = "Vape Cloud"
- thickness = 2
- scent = "pleasant and soft vapour"
-
-///Dust from mining drills
-/datum/pollutant/dust
- name = "Dust"
- pollutant_flags = POLLUTANT_APPEARANCE | POLLUTANT_BREATHE_ACT
- thickness = 2
- color = "#ffed9c"
-
-/datum/pollutant/dust/breathe_act(mob/living/carbon/victim, amount)
- if(amount <= 10)
- return
- if(prob(40))
- victim.losebreath += 3 //Get in your lungs real bad
- victim.emote("cough")
-
-///Sulphur coming from igniting matches
-/datum/pollutant/sulphur
- name = "Sulphur"
- pollutant_flags = POLLUTANT_SMELL
- smell_intensity = 5 //Very pronounced smell (and good too, sniff sniff)
- descriptor = SCENT_DESC_SMELL
- scent = "sulphur"
-
-///Organic waste and garbage makes this
-/datum/pollutant/decaying_waste
- name = "Decaying Waste"
- pollutant_flags = POLLUTANT_SMELL
- smell_intensity = 3
- descriptor = SCENT_DESC_ODOR
- scent = "decaying waste"
-
-///Splashing blood makes a tiny bit of this
-/datum/pollutant/metallic_scent
- name = "Metallic Scent"
- pollutant_flags = POLLUTANT_SMELL
- smell_intensity = 1
- descriptor = SCENT_DESC_SMELL
- scent = "a metallic scent"
-
-///A special "Quick Dispersal" smoke for special cigars
-/datum/pollutant/bright_cosmos
- name = "Cosmic Smoke"
- pollutant_flags = POLLUTANT_SMELL
- smell_intensity = 1
- descriptor = SCENT_DESC_SMELL
- scent = "refreshing mint and inoffensive smoke"
-
-///Green goo piles and medicine chemical reactions make this
-/datum/pollutant/chemical_vapors
- name = "Chemical Vapors"
- pollutant_flags = POLLUTANT_SMELL
- smell_intensity = 1
- descriptor = SCENT_DESC_SMELL
- scent = "chemicals"
-
-///Dangerous fires release this from the waste they're burning
-/datum/pollutant/carbon_air_pollution
- name = "Carbon Air Pollution"
- pollutant_flags = POLLUTANT_BREATHE_ACT
-
-/datum/pollutant/carbon_air_pollution/breathe_act(mob/living/carbon/victim, amount)
- if(victim.body_position == LYING_DOWN)
- amount *= 0.35 //The victim is inhaling roughly a third when laying down
- if(amount <= 10)
- return
- victim.adjustOxyLoss(rand(5,10))
- victim.adjustToxLoss(1)
- if(prob(amount))
- victim.losebreath += 3
-
-//Food related smells
-/datum/pollutant/food
- pollutant_flags = POLLUTANT_SMELL
- smell_intensity = 0.5 //Low intensity because we want to carry it farther with more amounts
- descriptor = SCENT_DESC_SMELL
-
-/datum/pollutant/food/fried_meat
- name = "Fried Meat"
- scent = "fried meat"
-
-/datum/pollutant/food/fried_bacon
- name = "Fried Bacon"
- scent = "fried bacon"
-
-/datum/pollutant/food/fried_fish
- name = "Fried Fish"
- scent = "fried fish"
-
-/datum/pollutant/food/pancakes
- name = "Pancakes"
- scent = "pancakes"
-
-/datum/pollutant/food/coffee
- name = "Coffee"
- scent = "coffee"
-
-/datum/pollutant/food/tea
- name = "Tea"
- scent = "tea"
-
-/datum/pollutant/food/chocolate
- name = "Chocolate"
- scent = "chocolate"
-
-/datum/pollutant/food/spicy_noodles
- name = "Spicy Noodles"
- scent = "spicy noodles"
-
-//Fragrances that we spray on thing to make them smell nice
-/datum/pollutant/fragrance
- pollutant_flags = POLLUTANT_SMELL
- smell_intensity = 1
- descriptor = SCENT_DESC_FRAGRANCE
-
-/datum/pollutant/fragrance/air_refresher
- name = "Air Refresher"
- scent = "a strong flowery scent"
- smell_intensity = 3
-
-//Simple fragrances
-/datum/pollutant/fragrance/cologne
- name = "Cologne Water"
- scent = "cologne"
-
-/datum/pollutant/fragrance/wood
- name = "Wood Perfume"
- scent = "aging wood"
-
-/datum/pollutant/fragrance/rose
- name = "Rose Perfume"
- scent = "roses"
-
-/datum/pollutant/fragrance/jasmine
- name = "Jasmine Perfume"
- scent = "jasmine"
-
-/datum/pollutant/fragrance/mint
- name = "Mint Perfume"
- scent = "mint"
-
-/datum/pollutant/fragrance/vanilla
- name = "Vanilla Perfume"
- scent = "vanilla"
-
-/datum/pollutant/fragrance/pear
- name = "Pear Perfume"
- scent = "pear"
-
-/datum/pollutant/fragrance/strawberry
- name = "Strawberry Perfume"
- scent = "strawberries"
-
-/datum/pollutant/fragrance/cherry
- name = "Cherry Perfume"
- scent = "cherries"
-
-/datum/pollutant/fragrance/amber
- name = "Amber Perfume"
- scent = "a sweet and powdery scent"
diff --git a/modular_skyrat/modules/pollution/code/pollution.dm b/modular_skyrat/modules/pollution/code/pollution.dm
deleted file mode 100644
index 9377cd49164..00000000000
--- a/modular_skyrat/modules/pollution/code/pollution.dm
+++ /dev/null
@@ -1,247 +0,0 @@
-/datum/pollution
- /// Reference to the turf we're on
- var/turf/open/my_turf
- /// List of all pollutant types to their amount
- var/list/pollutants = list()
- /// Total amount
- var/total_amount = 0
- /// Height of the pollution, used to create a sandpiling effect
- var/height = 0
- /// The vis content we are managing
- var/obj/effect/abstract/pollution/managed_overlay
-
-/datum/pollution/New(turf/open/passed_turf)
- . = ..()
- my_turf = passed_turf
- my_turf.pollution = src
- REGISTER_POLLUTION(src)
-
-/datum/pollution/proc/touch_act(mob/living/carbon/victim)
- if(!victim.can_inject())
- return
- var/list/singleton_cache = SSpollution.singletons
- for(var/type in pollutants)
- var/datum/pollutant/pollutant = singleton_cache[type]
- if(!(pollutant.pollutant_flags & POLLUTANT_TOUCH_ACT))
- continue
- var/amount = pollutants[type]
- pollutant.touch_act(victim, amount)
-
-/datum/pollution/proc/breathe_act(mob/living/carbon/victim)
- var/list/singleton_cache = SSpollution.singletons
- for(var/type in pollutants)
- var/datum/pollutant/pollutant = singleton_cache[type]
- if(!(pollutant.pollutant_flags & POLLUTANT_BREATHE_ACT))
- continue
- var/amount = pollutants[type]
- pollutant.breathe_act(victim, amount)
-
-/// When a user smells this pollution
-/datum/pollution/proc/smell_act(mob/living/sniffer)
- if(HAS_TRAIT(sniffer, TRAIT_ANOSMIA))
- return
-
- var/list/singleton_cache = SSpollution.singletons
- var/datum/pollutant/dominant_pollutant
- var/dominiant_smell_power
- for(var/type in pollutants)
- var/datum/pollutant/pollutant = singleton_cache[type]
- if(!(pollutant.pollutant_flags & POLLUTANT_SMELL))
- continue
- var/smelly_power = pollutant.smell_intensity * pollutants[type]
- if(smelly_power < POLLUTANT_SMELL_THRESHOLD)
- continue
- if(!dominant_pollutant || smelly_power > dominiant_smell_power)
- dominant_pollutant = pollutant
- dominiant_smell_power = smelly_power
- if(!dominant_pollutant)
- return
-
- var/smell_string
- switch(dominiant_smell_power)
- if(0 to POLLUTANT_SMELL_NORMAL)
- if(sniffer.mob_biotypes & MOB_ROBOTIC)
- smell_string = "Your sensors detect trace amounts of [dominant_pollutant.scent] in the air."
- else
- smell_string = "The subtle [dominant_pollutant.descriptor] of [dominant_pollutant.scent] tickles your nose..."
- if(POLLUTANT_SMELL_NORMAL to POLLUTANT_SMELL_STRONG)
- if(sniffer.mob_biotypes & MOB_ROBOTIC)
- smell_string = "Your sensors pick up the presence of [dominant_pollutant.scent] in the air."
- else
- smell_string = "The [dominant_pollutant.descriptor] of [dominant_pollutant.scent] fills the air."
- if(POLLUTANT_SMELL_STRONG to INFINITY)
- if(sniffer.mob_biotypes & MOB_ROBOTIC)
- smell_string = "Your sensors pick up an intense concentration of [dominant_pollutant.scent]."
- else
- smell_string = "The unmistakable [dominant_pollutant.descriptor] of [dominant_pollutant.scent] bombards your nostrils."
-
- if(dominant_pollutant.descriptor == SCENT_DESC_ODOR)
- to_chat(sniffer, span_warning(smell_string))
- else
- to_chat(sniffer, span_notice(smell_string))
-
-/datum/pollution/proc/scrub_amount(amount_to_scrub, update_active = TRUE, planetary_multiplier = FALSE)
- if(amount_to_scrub >= total_amount)
- qdel(src)
- return
- if(planetary_multiplier && my_turf.planetary_atmos) //Dissipate faster on planetary atmos
- amount_to_scrub *= POLLUTION_DISSIPATION_PLANETARY_MULTIPLIER
- for(var/type in pollutants)
- pollutants[type] -= amount_to_scrub * pollutants[type] / total_amount
- total_amount -= amount_to_scrub
- update_height()
- handle_overlay()
- if(update_active)
- my_turf.update_adjacent_pollutants()
-
-/datum/pollution/proc/add_pollutant(polutant_type, amount)
- if(!pollutants[polutant_type])
- pollutants[polutant_type] = 0
- pollutants[polutant_type] += amount
- total_amount += amount
- update_height()
- handle_overlay()
- SET_ACTIVE_POLLUTION(src)
-
-/datum/pollution/proc/add_pollutant_list(list/passed_pollutants)
- for(var/polutant_type in passed_pollutants)
- if(!pollutants[polutant_type])
- pollutants[polutant_type] = 0
- pollutants[polutant_type] += passed_pollutants[polutant_type]
- total_amount += passed_pollutants[polutant_type]
- update_height()
- handle_overlay()
- SET_ACTIVE_POLLUTION(src)
-
-/datum/pollution/proc/update_height()
- height = calculate_height(total_amount)
-
-/datum/pollution/proc/calculate_height(passed_amount)
- return CEILING(passed_amount / POLLUTION_HEIGHT_DIVISOR, 1)
-
-/datum/pollution/Destroy()
- if(managed_overlay)
- if(my_turf)
- my_turf.vis_contents -= managed_overlay
- if(LAZYLEN(managed_overlay.vis_locs) == 0)
- qdel(managed_overlay)
- managed_overlay = null
- REMOVE_POLLUTION_CURRENTRUN(src)
- SET_UNACTIVE_POLLUTION(src)
- UNREGISTER_POLLUTION(src)
- if(my_turf)
- my_turf.pollution = null
- return ..()
-
-/datum/pollution/proc/process_cell()
- if(height <= 1)
- SET_UNACTIVE_POLLUTION(src)
- return
- var/list/sharing_turfs = list()
- var/list/already_processed_cache = SSpollution.processed_this_run
- var/list/potential_activers = list()
- for(var/turf/open/open_turf as anything in my_turf.atmos_adjacent_turfs)
- if(!already_processed_cache[open_turf])
- if(can_share_with(open_turf))
- sharing_turfs[open_turf] = TRUE
- else
- potential_activers[open_turf] = TRUE
- if(!sharing_turfs.len)
- SET_UNACTIVE_POLLUTION(src)
- return
- sharing_turfs[my_turf] = TRUE
- //Now we've gotten all the turfs that should share pollution. Gather their total pollutions and split evenly
- var/list/total_share_pollutants = list()
- var/total_share_amount = 0
- for(var/turf/open/open_turf as anything in sharing_turfs)
- if(!open_turf.pollution)
- continue
- var/datum/pollution/cached_pollution = open_turf.pollution
- for(var/type in cached_pollution.pollutants)
- if(!total_share_pollutants[type])
- total_share_pollutants[type] = 0
- total_share_pollutants[type] += cached_pollution.pollutants[type]
- total_share_amount += cached_pollution.pollutants[type]
-
- for(var/type in total_share_pollutants)
- total_share_pollutants[type] /= sharing_turfs.len
- total_share_amount /= sharing_turfs.len
- var/new_heights = calculate_height(total_share_amount)
- var/obj/effect/abstract/pollution/new_overlay = get_overlay(total_share_pollutants, total_share_amount)
- for(var/turf/open/open_turf as anything in sharing_turfs)
- if(istype(open_turf, /turf/open/space)) // Space should be voiding pollution, basically.
- continue
-
- assert_pollution(open_turf)
- var/datum/pollution/cached_pollution = open_turf.pollution
- if(cached_pollution.managed_overlay)
- cached_pollution.my_turf.vis_contents -= cached_pollution.managed_overlay
-
- cached_pollution.managed_overlay = new_overlay
- if(new_overlay)
- cached_pollution.my_turf.vis_contents += new_overlay
-
- cached_pollution.pollutants = total_share_pollutants.Copy()
- cached_pollution.total_amount = total_share_amount
- cached_pollution.height = new_heights
- SET_ACTIVE_POLLUTION(cached_pollution)
-
- for(var/turf/open/open_turf as anything in potential_activers)
- if(open_turf.pollution && open_turf.pollution.can_share_with(my_turf))
- SET_ACTIVE_POLLUTION(open_turf.pollution)
-
-/datum/pollution/proc/can_share_with(turf/open/shareto)
- if(!shareto.pollution)
- return TRUE
- if(shareto.pollution.height + 1 < height)
- return TRUE
- return FALSE
-
-/datum/pollution/proc/assert_pollution(turf/open/to_assert)
- if(!to_assert.pollution)
- new /datum/pollution(to_assert)
-
-/datum/pollution/proc/handle_overlay()
- if(managed_overlay)
- my_turf.vis_contents -= managed_overlay
- if(LAZYLEN(managed_overlay.vis_locs) == 0)
- qdel(managed_overlay)
- managed_overlay = get_overlay(pollutants, total_amount)
- if(managed_overlay)
- my_turf.vis_contents += managed_overlay
-
-///Probably the most costly thing happening here
-/datum/pollution/proc/get_overlay(list/pollutant_list, total_amount)
- var/datum/pollutant/pollutant
- var/total_thickness
- if(pollutant_list.len == 1)
- pollutant = SSpollution.singletons[pollutant_list[1]]
- if(!(pollutant.pollutant_flags & POLLUTANT_APPEARANCE))
- return
- total_thickness = total_amount * pollutant.thickness
- else
- var/list/pollutant_cache = SSpollution.singletons
- var/datum/pollutant/iterated_pollutant
- var/calc_thickness
- for(var/pollutant_type in pollutant_list)
- iterated_pollutant = pollutant_cache[pollutant_type]
- if(!(iterated_pollutant.pollutant_flags & POLLUTANT_APPEARANCE))
- continue
- calc_thickness = pollutant_list[pollutant_type] * iterated_pollutant.thickness
- if(!pollutant || calc_thickness > total_thickness)
- pollutant = iterated_pollutant
- total_thickness = calc_thickness
-
- if(!total_thickness || total_thickness < POLLUTANT_APPEARANCE_THICKNESS_THRESHOLD)
- return
-
- var/obj/effect/abstract/pollution/overlay = new()
- overlay.alpha = FLOOR(pollutant.alpha * total_thickness * THICKNESS_ALPHA_COEFFICIENT, 1)
- overlay.color = pollutant.color
- return overlay
-
-///Atmos adjacency has been updated on this turf, see if it affects any of our pollutants
-/turf/proc/update_adjacent_pollutants()
- for(var/turf/open/open_turf in atmos_adjacent_turfs)
- if(open_turf.pollution)
- SET_ACTIVE_POLLUTION(open_turf.pollution)
diff --git a/modular_skyrat/modules/pollution/code/pollution_effect.dm b/modular_skyrat/modules/pollution/code/pollution_effect.dm
deleted file mode 100644
index ecfea3705d7..00000000000
--- a/modular_skyrat/modules/pollution/code/pollution_effect.dm
+++ /dev/null
@@ -1,10 +0,0 @@
-/obj/effect/abstract/pollution
- icon = 'icons/effects/96x96.dmi'
- icon_state = "smoke"
- pixel_x = -32
- pixel_y = -32
- anchored = TRUE
- plane = ABOVE_GAME_PLANE
- layer = FLY_LAYER
- mouse_opacity = MOUSE_OPACITY_TRANSPARENT
- appearance_flags = KEEP_APART|RESET_TRANSFORM|RESET_COLOR
diff --git a/modular_skyrat/modules/pollution/code/pollution_emitters.dm b/modular_skyrat/modules/pollution/code/pollution_emitters.dm
deleted file mode 100644
index a632d99aea7..00000000000
--- a/modular_skyrat/modules/pollution/code/pollution_emitters.dm
+++ /dev/null
@@ -1,39 +0,0 @@
-PROCESSING_SUBSYSTEM_DEF(pollution_emitters)
- name = "Pollution Emitters"
- priority = FIRE_PRIORITY_OBJ
- flags = SS_NO_INIT
- wait = 10 SECONDS
-
-/datum/element/pollution_emitter
- element_flags = ELEMENT_DETACH_ON_HOST_DESTROY | ELEMENT_BESPOKE
- argument_hash_start_idx = 2
-
- /// List of all affected atoms
- var/list/affected = list()
- /// Type of the spawned pollutions
- var/pollutant_type
- /// Amount of the pollutants spawned per process
- var/pollutant_amount
-
-/datum/element/pollution_emitter/Attach(datum/target, pollutant_type, pollutant_amount)
- . = ..()
- if(!isatom(target))
- return ELEMENT_INCOMPATIBLE
- src.pollutant_type = pollutant_type
- src.pollutant_amount = pollutant_amount
- affected[target] = TRUE
-
- START_PROCESSING(SSpollution_emitters, src)
-
-/datum/element/pollution_emitter/Detach(datum/target)
- . = ..()
-
- affected -= target
-
- if(!affected.len)
- STOP_PROCESSING(SSpollution_emitters, src)
-
-/datum/element/pollution_emitter/process(seconds_per_tick)
- for(var/atom/affected_atom as anything in affected)
- var/turf/my_turf = get_turf(affected_atom)
- my_turf.pollute_turf(pollutant_type, pollutant_amount)
diff --git a/modular_skyrat/modules/pollution/code/pollution_initializations.dm b/modular_skyrat/modules/pollution/code/pollution_initializations.dm
deleted file mode 100644
index 086c8852912..00000000000
--- a/modular_skyrat/modules/pollution/code/pollution_initializations.dm
+++ /dev/null
@@ -1,35 +0,0 @@
-/obj/effect/decal/cleanable/greenglow/Initialize(mapload)
- . = ..()
- AddElement(/datum/element/pollution_emitter, /datum/pollutant/chemical_vapors, 10)
-
-/obj/effect/decal/cleanable/vomit/Initialize(mapload)
- . = ..()
- AddElement(/datum/element/pollution_emitter, /datum/pollutant/decaying_waste, 10)
-
-/obj/effect/decal/cleanable/insectguts/Initialize(mapload)
- . = ..()
- AddElement(/datum/element/pollution_emitter, /datum/pollutant/decaying_waste, 10)
-
-/obj/effect/decal/cleanable/garbage/Initialize(mapload)
- . = ..()
- AddElement(/datum/element/pollution_emitter, /datum/pollutant/decaying_waste, 30)
-
-/obj/effect/decal/cleanable/blood/gibs/old/Initialize(mapload, list/datum/disease/diseases)
- . = ..()
- AddElement(/datum/element/pollution_emitter, /datum/pollutant/decaying_waste, 30)
-
-/obj/structure/moisture_trap/Initialize(mapload)
- . = ..()
- AddElement(/datum/element/pollution_emitter, /datum/pollutant/decaying_waste, 30)
-
-/obj/item/reagent_containers/cup/glass/coffee/Initialize(mapload)
- . = ..()
- AddComponent(/datum/component/temporary_pollution_emission, /datum/pollutant/food/coffee, 5, 3 MINUTES)
-
-/obj/item/reagent_containers/cup/glass/mug/tea/Initialize(mapload)
- . = ..()
- AddComponent(/datum/component/temporary_pollution_emission, /datum/pollutant/food/tea, 5, 3 MINUTES)
-
-/obj/item/reagent_containers/cup/glass/mug/coco/Initialize(mapload)
- . = ..()
- AddComponent(/datum/component/temporary_pollution_emission, /datum/pollutant/food/chocolate, 5, 3 MINUTES)
diff --git a/modular_skyrat/modules/pollution/code/pollution_subsystem.dm b/modular_skyrat/modules/pollution/code/pollution_subsystem.dm
deleted file mode 100644
index 8d2c7579403..00000000000
--- a/modular_skyrat/modules/pollution/code/pollution_subsystem.dm
+++ /dev/null
@@ -1,59 +0,0 @@
-SUBSYSTEM_DEF(pollution)
- name = "Pollution"
- init_order = INIT_ORDER_POLLUTION //Before atoms, because the emitters may need to know the singletons
- runlevels = RUNLEVEL_GAME | RUNLEVEL_POSTGAME
- wait = 2 SECONDS
- /// Currently active pollution
- var/list/active_pollution = list()
- /// All pollution in the world
- var/list/all_polution = list()
- /// Currently processed batch of pollutants
- var/list/current_run = list()
- /// Already processed pollutants in cell process
- var/list/processed_this_run = list()
- /// Ticker for dissipation task
- var/dissapation_ticker = 0
- /// What's the current task we're doing
- var/pollution_task = POLLUTION_TASK_PROCESS
- /// Associative list of types of pollutants to their instanced singletons
- var/list/singletons = list()
-
-/datum/controller/subsystem/pollution/stat_entry(msg)
- msg += "|AT:[active_pollution.len]|P:[all_polution.len]"
- return ..()
-
-/datum/controller/subsystem/pollution/Initialize()
- //Initialize singletons
- for(var/type in subtypesof(/datum/pollutant))
- var/datum/pollutant/pollutant_cast = type
- if(!initial(pollutant_cast.name))
- continue
- singletons[type] = new type()
- return SS_INIT_SUCCESS
-
-/datum/controller/subsystem/pollution/fire(resumed = FALSE)
- var/list/current_run_cache = current_run
- if(pollution_task == POLLUTION_TASK_PROCESS)
- if(!current_run_cache.len)
- current_run_cache = active_pollution.Copy()
- processed_this_run.Cut()
- while(current_run_cache.len)
- var/datum/pollution/pollution = current_run_cache[current_run_cache.len]
- current_run_cache.len--
- processed_this_run[pollution] = TRUE
- pollution.process_cell()
- if(MC_TICK_CHECK)
- return
- dissapation_ticker++
- if(dissapation_ticker >= TICKS_TO_DISSIPATE)
- pollution_task = POLLUTION_TASK_DISSIPATE
- dissapation_ticker = 0
- current_run_cache = all_polution.Copy()
- if(pollution_task == POLLUTION_TASK_DISSIPATE)
- while(current_run_cache.len)
- var/datum/pollution/pollution = current_run_cache[current_run_cache.len]
- current_run_cache.len--
- pollution.scrub_amount(POLLUTION_HEIGHT_DIVISOR, FALSE, TRUE)
- if(MC_TICK_CHECK)
- return
- pollution_task = POLLUTION_TASK_PROCESS
diff --git a/modular_skyrat/modules/pollution/code/scented_candles.dm b/modular_skyrat/modules/pollution/code/scented_candles.dm
deleted file mode 100644
index 49fdedf2584..00000000000
--- a/modular_skyrat/modules/pollution/code/scented_candles.dm
+++ /dev/null
@@ -1,19 +0,0 @@
-/obj/item/flashlight/flare/candle/vanilla
- name = "vanilla scented candle"
- scented_type = /datum/pollutant/fragrance/vanilla
-
-/obj/item/flashlight/flare/candle/pear
- name = "pear scented candle"
- scented_type = /datum/pollutant/fragrance/pear
-
-/obj/item/flashlight/flare/candle/amber
- name = "amber scented candle"
- scented_type = /datum/pollutant/fragrance/amber
-
-/obj/item/flashlight/flare/candle/jasmine
- name = "jasmine scented candle"
- scented_type = /datum/pollutant/fragrance/jasmine
-
-/obj/item/flashlight/flare/candle/mint
- name = "mint scented candle"
- scented_type = /datum/pollutant/fragrance/mint
diff --git a/modular_skyrat/modules/pollution/code/temporary_pollution_emission_component.dm b/modular_skyrat/modules/pollution/code/temporary_pollution_emission_component.dm
deleted file mode 100644
index aaab4ec7410..00000000000
--- a/modular_skyrat/modules/pollution/code/temporary_pollution_emission_component.dm
+++ /dev/null
@@ -1,36 +0,0 @@
-/datum/component/temporary_pollution_emission
- dupe_mode = COMPONENT_DUPE_ALLOWED
- /// The type of the pollutant we're emitting
- var/pollutant_type
- /// The amount we emitt every process
- var/pollutant_amount
- /// When do we expire
- var/expiry_time
-
-/datum/component/temporary_pollution_emission/Initialize(pollutant_type, pollutant_amount, expiry_time)
- if(!isatom(parent))
- return COMPONENT_INCOMPATIBLE
- src.pollutant_type = pollutant_type
- src.pollutant_amount = pollutant_amount
- src.expiry_time = world.time + expiry_time
- RegisterSignal(parent, COMSIG_COMPONENT_CLEAN_ACT, PROC_REF(wash_off))
- START_PROCESSING(SSobj, src)
-
-/datum/component/temporary_pollution_emission/Destroy()
- UnregisterSignal(parent, COMSIG_COMPONENT_CLEAN_ACT)
- STOP_PROCESSING(SSobj, src)
- return ..()
-
-/datum/component/temporary_pollution_emission/process(seconds_per_tick = SSOBJ_DT)
- var/turf/my_turf = get_turf(parent)
- if(!my_turf || world.time >= expiry_time)
- qdel(src)
- return
-
- my_turf.pollute_turf(pollutant_type, pollutant_amount * seconds_per_tick)
-
-/datum/component/temporary_pollution_emission/proc/wash_off()
- SIGNAL_HANDLER
- if(ismob(parent))
- to_chat(parent, span_notice("The smell that lingered on your body fades."))
- qdel(src)
diff --git a/modular_skyrat/modules/pollution/code/turf_open.dm b/modular_skyrat/modules/pollution/code/turf_open.dm
deleted file mode 100644
index ec8313222ee..00000000000
--- a/modular_skyrat/modules/pollution/code/turf_open.dm
+++ /dev/null
@@ -1,33 +0,0 @@
-/turf/proc/pollute_turf(pollution_type, amount, cap)
- return
-
-/turf/proc/pollute_turf_list(list/pollutions, cap)
- return
-
-/turf/open/pollute_turf(pollution_type, amount, cap)
- // Don't add pollution when the subsystem is off.
- if(!SSpollution.can_fire)
- return
-
- if(!pollution)
- pollution = new(src)
- if(cap && pollution.total_amount >= cap)
- return
- pollution.add_pollutant(pollution_type, amount)
-
-/turf/open/pollute_turf_list(list/pollutions, cap)
- // Don't add pollution when the subsystem is off.
- if(!SSpollution.can_fire)
- return
-
- if(!pollution)
- pollution = new(src)
- if(cap && pollution.total_amount >= cap)
- return
- pollution.add_pollutant_list(pollutions)
-
-/turf/open/space/pollute_turf(pollution_type, amount, cap)
- return
-
-/turf/open/space/pollute_turf_list(list/pollutions, cap)
- return
diff --git a/modular_skyrat/modules/pollution/icons/air_refresher.dmi b/modular_skyrat/modules/pollution/icons/air_refresher.dmi
deleted file mode 100644
index 714b99a5e2a15ce449d5b364f6b6051bbf3d83c8..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 285
zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfv=>VS)*8>L*96NSw=FFL~`OEzi
zrmWoizhlY&jQW!{-sR@bChvgC7)yfuf*Bm1-ADs+3adgQN?cNllZ!G7N;32F7#J$%
z1cwzAm45#cT=4Ph6D@CDt#fD22X6>9xM=*~karp%blm8h+~_yuHl{UD41Yi
eR+u2+!N9Qpq+s;PxIbM$?F^o-elF{r5}E*P8fw4*
diff --git a/modular_skyrat/modules/pollution/icons/perfume.dmi b/modular_skyrat/modules/pollution/icons/perfume.dmi
deleted file mode 100644
index 0925a982129feead7f3a722ad583cf044016721b..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 410
zcmV;L0cHM)P);M1nVFgYnE+IZicWfZNM~nGgoT;^|A*n>alO4hU0T3u>b#t=JsT@
z!G-MqVX(bVk(&U_{{WZ00DPMO!SMi@{{V5l09>0kQdBTVO1#}dKj5!W~Fbu#_?r=j(fkOHJ
zGZA7Y87kBzUTqmb5F(&dLI-Ka4D!DRMOg)TtedtA@WBJ@hjE&}3(f;-t&JfDjDLfL
z84w=OTDxw
diff --git a/modular_skyrat/modules/pollution/icons/pollution_scrubber.dmi b/modular_skyrat/modules/pollution/icons/pollution_scrubber.dmi
deleted file mode 100644
index 9710221b087c0ba4166b92fc15b7d11a8671f07c..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 918
zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=ZB-!=B`&GO$wiq3C7Jno3=9=>
za!+mKI%FW?_R#XXX5FpOBO%v!dvv8_#5)ERn=~
zNVjt4L5rO7lzW!fSdQ&eo~&{|D0cak0M?#mF<&fw7xB)Vv9%%bWQ?gz%3Jx0xM%;j
zDGNW9vrD+qyHxD&iwA7}@h=`|AO3V>wF(0R(`io^$B>FSZ)e$O2q#J$o8OVQYl&VM
zt74{_Xv@937Y=qb@8HnVSlG-V`|0@tPySbG78V(u;vNQkd`_C~?K@tius9!V$Ys?O
zk=2`g)YE9E#ApcsE_RZ5fYG12aI89jU&y}F??zioY)>Ai}C#>|hW7awBvi6q4&5enY
zYNb9ZY`+2(STDT){xLIK*ij(CZu;R_&l8`&&Qnod^lMt;qKhRH{gx+4szuJPVY|`F
zwavbKYq0(0jQ+jS%MznF>e}8bsT;=nYUVoDozic~{di>a{UG8QFSI!sM$(OOe
zQkub`JY87+mh_EV|0L!y2B$A8_DC|tUARfoG^r%q7e)k6t_%HgXDO>qT
z-2Amfb%KxD!{2*9aP&ye{I%tEgQ)oZ@86t0UM=PSx%<1a(9ej0*+Y?J_x^h!<5vt>^E&zp`9&u}9CP`qKC8nbSV(KcMjN%9oc5w?toNNV56$
z|FZo>rl^)mCq|LEOOO2NO=4iMua~bc_^@~K@j6?{ue*F6T@c?TG{;5huHY<|5{5f$
zJ1#O7NI!66KakrXEz7W-F%Kcww#QJZJICzws`VxI4s55sF{cQwlur=X`tWz&B}JDg
zrqttUHzlWW?vw|H`K6a4QoiPw{@Iv6F?P5Hq(I6QMGhp?%iYND__N#o|DInu43A#3
zA89Q5%WzZUCjW%aNq-q;YTV|Z&>Hl&!6IOlya4;9UyN7&R^~1F%Dm$D=Q|o#`8$}u
n)iqoyZ&71Ja~ryYe=;9mGu!)Em&hkzMq}`F^>bP0l+XkK_dlmU
diff --git a/modular_skyrat/modules/salon/code/barbervend.dm b/modular_skyrat/modules/salon/code/barbervend.dm
index bc6d5fb1bb4..71844850e3b 100644
--- a/modular_skyrat/modules/salon/code/barbervend.dm
+++ b/modular_skyrat/modules/salon/code/barbervend.dm
@@ -24,7 +24,6 @@
/obj/item/storage/box/lipsticks = 3,
/obj/item/lipstick/quantum = 1,
/obj/item/razor = 1,
- /obj/item/storage/box/perfume = 1,
)
refill_canister = /obj/item/vending_refill/barbervend
default_price = PAYCHECK_CREW
diff --git a/modular_skyrat/modules/salon/code/misc_items.dm b/modular_skyrat/modules/salon/code/misc_items.dm
index e944ae6b38a..b43e8e315ba 100644
--- a/modular_skyrat/modules/salon/code/misc_items.dm
+++ b/modular_skyrat/modules/salon/code/misc_items.dm
@@ -179,18 +179,3 @@
icon = 'modular_skyrat/modules/salon/icons/items.dmi'
icon_state = "barber"
buildable_sign = FALSE // Don't want them removed, they look too jank.
-
-/obj/item/storage/box/perfume
- name = "box of perfumes"
-
-/obj/item/storage/box/perfume/PopulateContents()
- new /obj/item/perfume/cologne(src)
- new /obj/item/perfume/wood(src)
- new /obj/item/perfume/rose(src)
- new /obj/item/perfume/jasmine(src)
- new /obj/item/perfume/mint(src)
- new /obj/item/perfume/vanilla(src)
- new /obj/item/perfume/pear(src)
- new /obj/item/perfume/strawberry(src)
- new /obj/item/perfume/cherry(src)
- new /obj/item/perfume/amber(src)
diff --git a/modular_zubbers/code/_globalvars/lists/maintenance_loot_common.dm b/modular_zubbers/code/_globalvars/lists/maintenance_loot_common.dm
index 3c98377c370..15fc61e395a 100644
--- a/modular_zubbers/code/_globalvars/lists/maintenance_loot_common.dm
+++ b/modular_zubbers/code/_globalvars/lists/maintenance_loot_common.dm
@@ -1,7 +1,6 @@
GLOBAL_LIST_INIT(common_loot, list( //common: basic items
GLOB.arcade_prize_pool = 150,
/obj/item/relic = 100,
- /obj/item/air_refresher = 25,
list(
/obj/item/storage/backpack = 200,
/obj/item/storage/backpack/duffelbag = 100,
@@ -438,18 +437,6 @@ GLOBAL_LIST_INIT(common_loot, list( //common: basic items
/obj/item/storage/fancy/cigarettes/dromedaryco = 25,
/obj/item/storage/fancy/cigarettes/khi = 25
) = 100,
- list(
- /obj/item/perfume/amber = 1,
- /obj/item/perfume/cherry = 1,
- /obj/item/perfume/cologne = 1,
- /obj/item/perfume/jasmine = 1,
- /obj/item/perfume/mint = 1,
- /obj/item/perfume/pear = 1,
- /obj/item/perfume/rose = 1,
- /obj/item/perfume/strawberry = 1,
- /obj/item/perfume/vanilla = 1,
- /obj/item/perfume/wood = 1
- ) = 25,
list(
/obj/item/assembly/health = 25,
/obj/item/assembly/igniter = 100,
diff --git a/modular_zubbers/code/_globalvars/lists/maintenance_loot_uncommon.dm b/modular_zubbers/code/_globalvars/lists/maintenance_loot_uncommon.dm
index 66bbde19101..61735284b95 100644
--- a/modular_zubbers/code/_globalvars/lists/maintenance_loot_uncommon.dm
+++ b/modular_zubbers/code/_globalvars/lists/maintenance_loot_uncommon.dm
@@ -149,7 +149,6 @@ GLOBAL_LIST_INIT(uncommon_loot, list(//uncommon: useful items
/obj/item/storage/box/papersack/meat = 200,
/obj/item/storage/box/party_poppers = 75,
/obj/item/storage/box/pdas = 25,
- /obj/item/storage/box/perfume = 25,
/obj/item/storage/box/petridish = 75,
/obj/item/storage/box/pillbottles = 100,
/obj/item/storage/box/pinpointer_pairs = 1,
diff --git a/modular_zubbers/code/game/objects/effects/spawners/random/moonstation_random.dm b/modular_zubbers/code/game/objects/effects/spawners/random/moonstation_random.dm
index 2043d6905ce..fb23b6446c6 100644
--- a/modular_zubbers/code/game/objects/effects/spawners/random/moonstation_random.dm
+++ b/modular_zubbers/code/game/objects/effects/spawners/random/moonstation_random.dm
@@ -256,7 +256,6 @@
/obj/machinery/fax = 1,
/obj/machinery/microwave = 10,
/obj/machinery/plantgenes = 5,
- /obj/machinery/pollution_scrubber = 10,
/obj/machinery/reagentgrinder = 20,
/obj/machinery/recharger = 5,
/obj/machinery/smartfridge/disks = 10,
diff --git a/modular_zubbers/code/modules/loadout/categories/pocket.dm b/modular_zubbers/code/modules/loadout/categories/pocket.dm
index 3caf0b44153..1f9eddef25a 100644
--- a/modular_zubbers/code/modules/loadout/categories/pocket.dm
+++ b/modular_zubbers/code/modules/loadout/categories/pocket.dm
@@ -6,58 +6,6 @@
name = "Wine Bottle"
item_path = /obj/item/reagent_containers/cup/glass/bottle/wine
-/*
-* PERFUME
-*/
-
-/datum/loadout_item/pocket_items/fragrance_ash
- name = "Ash Perfume"
- item_path = /obj/item/perfume/ash
-
-/datum/loadout_item/pocket_items/fragrance_bergamot
- name = "Bergamot Perfume"
- item_path = /obj/item/perfume/bergamot
-
-/datum/loadout_item/pocket_items/fragrance_cardamom
- name = "Cardamom Perfume"
- item_path = /obj/item/perfume/cardamom
-
-/datum/loadout_item/pocket_items/fragrance_chocolate
- name = "Chocolate Perfume"
- item_path = /obj/item/perfume/chocolate
-
-/datum/loadout_item/pocket_items/fragrance_cinnamon
- name = "Cinnamon Perfume"
- item_path = /obj/item/perfume/cinnamon
-
-/datum/loadout_item/pocket_items/fragrance_citrus
- name = "Citrus Perfume"
- item_path = /obj/item/perfume/citrus
-
-/datum/loadout_item/pocket_items/fragrance_clove
- name = "Clove Perfume"
- item_path = /obj/item/perfume/clove
-
-/datum/loadout_item/pocket_items/fragrance_grass
- name = "Grass Perfume"
- item_path = /obj/item/perfume/grass
-
-/datum/loadout_item/pocket_items/fragrance_iron
- name = "Iron Perfume"
- item_path = /obj/item/perfume/iron
-
-/datum/loadout_item/pocket_items/fragrance_oil
- name = "Oil Perfume"
- item_path = /obj/item/perfume/oil
-
-/datum/loadout_item/pocket_items/fragrance_peach
- name = "Peach Perfume"
- item_path = /obj/item/perfume/peach
-
-/datum/loadout_item/pocket_items/fragrance_petrichor
- name = "Petrichor Perfume"
- item_path = /obj/item/perfume/petrichor
-
/*
* OTHER
*/
diff --git a/modular_zubbers/code/modules/pollution/code/perfumes.dm b/modular_zubbers/code/modules/pollution/code/perfumes.dm
deleted file mode 100644
index 4d3dbc05bf1..00000000000
--- a/modular_zubbers/code/modules/pollution/code/perfumes.dm
+++ /dev/null
@@ -1,47 +0,0 @@
-/obj/item/perfume/ash
- name = "ash perfume bottle"
- fragrance_type = /datum/pollutant/fragrance/ash
-
-/obj/item/perfume/bergamot
- name = "bergamot perfume bottle"
- fragrance_type = /datum/pollutant/fragrance/bergamot
-
-/obj/item/perfume/cardamom
- name = "cardamom perfume bottle"
- fragrance_type = /datum/pollutant/fragrance/cardamom
-
-/obj/item/perfume/chocolate
- name = "chocolate perfume bottle"
- fragrance_type = /datum/pollutant/food/chocolate
-
-/obj/item/perfume/cinnamon
- name = "cinnamon perfume bottle"
- fragrance_type = /datum/pollutant/fragrance/cinnamon
-
-/obj/item/perfume/citrus
- name = "citrus perfume bottle"
- fragrance_type = /datum/pollutant/fragrance/citrus
-
-/obj/item/perfume/clove
- name = "clove perfume bottle"
- fragrance_type = /datum/pollutant/fragrance/clove
-
-/obj/item/perfume/grass
- name = "grass perfume bottle"
- fragrance_type = /datum/pollutant/fragrance/grass
-
-/obj/item/perfume/iron
- name = "iron perfume bottle"
- fragrance_type = /datum/pollutant/metallic_scent
-
-/obj/item/perfume/oil
- name = "oil perfume bottle"
- fragrance_type = /datum/pollutant/fragrance/oil
-
-/obj/item/perfume/peach
- name = "peach perfume bottle"
- fragrance_type = /datum/pollutant/fragrance/peach
-
-/obj/item/perfume/petrichor
- name = "petrichor perfume bottle"
- fragrance_type = /datum/pollutant/fragrance/petrichor
diff --git a/modular_zubbers/code/modules/pollution/code/pollutants_generic.dm b/modular_zubbers/code/modules/pollution/code/pollutants_generic.dm
deleted file mode 100644
index ac2ab26bdc8..00000000000
--- a/modular_zubbers/code/modules/pollution/code/pollutants_generic.dm
+++ /dev/null
@@ -1,39 +0,0 @@
-/datum/pollutant/fragrance/ash
- name = "Ash Perfume"
- scent = "ash"
-
-/datum/pollutant/fragrance/bergamot
- name = "Bergamot Perfume"
- scent = "a fresh and fruity scent"
-
-/datum/pollutant/fragrance/cardamom
- name = "Cardamom Perfume"
- scent = "a minty and lemony scent"
-
-/datum/pollutant/fragrance/cinnamon
- name = "Cinnamon Perfume"
- scent = "cinnamon"
-
-/datum/pollutant/fragrance/citrus
- name = "Citrus Perfume"
- scent = "citrus"
-
-/datum/pollutant/fragrance/clove
- name = "Clove Perfume"
- scent = "a spicy and sweet scent"
-
-/datum/pollutant/fragrance/grass
- name = "Grass Perfume"
- scent = "a earthy and natural scent"
-
-/datum/pollutant/fragrance/oil
- name = "Oil Perfume"
- scent = "oil"
-
-/datum/pollutant/fragrance/peach
- name = "Peach Perfume"
- scent = "a sweet and peachy scent"
-
-/datum/pollutant/fragrance/petrichor
- name = "Petrichor Perfume"
- scent = "morning dew and fresh rain scent"
diff --git a/tgstation.dme b/tgstation.dme
index 4ec67f0f568..a766f2d3a3c 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -474,7 +474,6 @@
#include "code\__DEFINES\~skyrat_defines\obj_flags.dm"
#include "code\__DEFINES\~skyrat_defines\opposing_force_defines.dm"
#include "code\__DEFINES\~skyrat_defines\pinpointers.dm"
-#include "code\__DEFINES\~skyrat_defines\pollution.dm"
#include "code\__DEFINES\~skyrat_defines\preferences.dm"
#include "code\__DEFINES\~skyrat_defines\projectiles.dm"
#include "code\__DEFINES\~skyrat_defines\quirks.dm"
@@ -6751,7 +6750,6 @@
#include "modular_skyrat\master_files\code\datums\components\crafting.dm"
#include "modular_skyrat\master_files\code\datums\components\damage_tracker.dm"
#include "modular_skyrat\master_files\code\datums\components\fullauto.dm"
-#include "modular_skyrat\master_files\code\datums\components\grillable.dm"
#include "modular_skyrat\master_files\code\datums\components\leash.dm"
#include "modular_skyrat\master_files\code\datums\components\prone_mob.dm"
#include "modular_skyrat\master_files\code\datums\components\shielded_suit.dm"
@@ -8482,21 +8480,6 @@
#include "modular_skyrat\modules\polarized_windows\polarization_controller.dm"
#include "modular_skyrat\modules\polarized_windows\polarizer.dm"
#include "modular_skyrat\modules\polarized_windows\windows.dm"
-#include "modular_skyrat\modules\pollution\code\admin_spawn_pollution.dm"
-#include "modular_skyrat\modules\pollution\code\air_refresher.dm"
-#include "modular_skyrat\modules\pollution\code\bonfire.dm"
-#include "modular_skyrat\modules\pollution\code\fancy_storage_items.dm"
-#include "modular_skyrat\modules\pollution\code\perfumes.dm"
-#include "modular_skyrat\modules\pollution\code\pollutant_datum.dm"
-#include "modular_skyrat\modules\pollution\code\pollutants_generic.dm"
-#include "modular_skyrat\modules\pollution\code\pollution.dm"
-#include "modular_skyrat\modules\pollution\code\pollution_effect.dm"
-#include "modular_skyrat\modules\pollution\code\pollution_emitters.dm"
-#include "modular_skyrat\modules\pollution\code\pollution_initializations.dm"
-#include "modular_skyrat\modules\pollution\code\pollution_subsystem.dm"
-#include "modular_skyrat\modules\pollution\code\scented_candles.dm"
-#include "modular_skyrat\modules\pollution\code\temporary_pollution_emission_component.dm"
-#include "modular_skyrat\modules\pollution\code\turf_open.dm"
#include "modular_skyrat\modules\poly_commands\parrot.dm"
#include "modular_skyrat\modules\positronic_alert_console\code\positronic_alert_console.dm"
#include "modular_skyrat\modules\power\code\teg.dm"
@@ -9452,8 +9435,6 @@
#include "modular_zubbers\code\modules\paperwork\folders_premade.dm"
#include "modular_zubbers\code\modules\paperwork\paper_premade.dm"
#include "modular_zubbers\code\modules\paperwork\stamps.dm"
-#include "modular_zubbers\code\modules\pollution\code\perfumes.dm"
-#include "modular_zubbers\code\modules\pollution\code\pollutants_generic.dm"
#include "modular_zubbers\code\modules\power\powerator.dm"
#include "modular_zubbers\code\modules\power\lighting\light_mapping_helpers.dm"
#include "modular_zubbers\code\modules\power\supermatter\supermatter_delam.dm"
diff --git a/tools/UpdatePaths/Scripts_Bubber/3725_remove_pollution.txt b/tools/UpdatePaths/Scripts_Bubber/3725_remove_pollution.txt
new file mode 100644
index 00000000000..fa46b1a5abe
--- /dev/null
+++ b/tools/UpdatePaths/Scripts_Bubber/3725_remove_pollution.txt
@@ -0,0 +1,9 @@
+/obj/machinery/pollution_scrubber : @DELETE
+/obj/item/perfume/@SUBTYPES : @DELETE
+/obj/item/air_refresher : @DELETE
+/obj/item/storage/box/perfume : @DELETE
+/obj/item/storage/fancy/candle_box/amber : @DELETE
+/obj/item/storage/fancy/candle_box/pear : @DELETE
+/obj/item/storage/fancy/candle_box/vanilla : @DELETE
+/obj/item/storage/fancy/candle_box/mint : @DELETE
+/obj/item/storage/fancy/candle_box/jasmine : @DELETE