From 9cba046a24c3ecd03eef6d9d631c78488dba5f43 Mon Sep 17 00:00:00 2001 From: dwasint <82520990+dwasint@users.noreply.github.com> Date: Thu, 2 May 2024 22:23:35 -0400 Subject: [PATCH] Componented Growing Tray, Plus Goon Sprited Plants (#1689) * start of compoents * most things * replaces hydrotrays with growing trays * changes * changes and additions * fixes * whoops * Update lavaland_surface_gaia.dmm * Update fruits.dm * more changes * more stuff * more changes * whoops * Update plant_growth_holder.dm * Update plant_growth_holder.dm * fixes * Update plant_growing.dm * more changes * Update plant_growing.dm * whoops * Update plant_growth_holder.dm * craig knows nothing but killing people and watering plants * Update potty.dm * Update potty.dm * some math tweaks * Update seedling.dm * blocks age from affecting plants during bio_boost * fixes weeds racking up while bioboosted * runtime fix * finishes the mutli-seed helper * makes harvest bag work * replaces towercaps with tree seeds, adds paper and money trees. * updates the cash tree sprite * re-adds the animation for pouring nutrients * Update item_attack.dm * whoops * more fixes * Update hydrotray.dm * more fixes * Update composter.dm * gye * Update plant_growing.dm * Update plant_growing.dm * Update stack.dm * fixes * this was too much * Update plant_growth_holder.dm * Update plant_growth_holder.dm * fixes * Update other_reagents.dm * Update plant_growing.dm * Update other_reagents.dm * Update pollution.dm * fixes * drain trays * stuff * apid tweaks * more changes * Update holder.dm * Update plant_growing.dm * Update species.dm * whoops * fixes infusions * new apid ability * hydro * should fix the issue * Update vac_tagged.dm * converts types to names for blackbox foods * saves ran events as name * adds roundid and severity to logs which slightly increases storage for the cost of aggregation and alerting * womp womp * Update species.dm * adds toggle for hard delete if server ooms re-enable them but for now nah. * names instead of types all the feedback tables so we can graph em pretty * adds emote_used to tracker * removes dead songs and some rule breaking ones * hard deletes clients again * hard deletes clients again * ffs * adds power tracking * Update garbage.dm --- SQL/feedback_conversion_2017-11-12.py | 2 +- .../IceRuins/icemoon_surface_bughabitat.dmm | 2 +- .../IceRuins/icemoon_surface_smoking_room.dmm | 2 +- ...cemoon_underground_abandoned_homestead.dmm | 14 +- .../IceRuins/icemoon_underground_hermit.dmm | 6 +- .../LavaRuins/lavaland_biodome_beach.dmm | 6 +- .../lavaland_surface_ash_walker1.dmm | 10 +- .../LavaRuins/lavaland_surface_gaia.dmm | 4 +- .../LavaRuins/lavaland_surface_hermit.dmm | 6 +- .../LavaRuins/lavaland_surface_seed_vault.dmm | 20 +- .../SpaceRuins/botanical_haven.dmm | 4 +- _maps/RandomRuins/SpaceRuins/clownplanet.dmm | 2 +- _maps/RandomRuins/SpaceRuins/deepstorage.dmm | 12 +- .../SpaceRuins/hilbertresearchfacility.dmm | 2 +- .../SpaceRuins/listeningstation.dmm | 2 +- _maps/RandomRuins/SpaceRuins/oldstation.dmm | 4 +- .../SpaceRuins/spinwardsmoothies.dmm | 6 +- _maps/RandomZLevels/snowdin.dmm | 12 +- _maps/RandomZLevels/undergroundoutpost45.dmm | 2 +- _maps/map_files/Basketball/ash_gladiators.dmm | 2 +- _maps/map_files/BoxStation/BoxStation.dmm | 30 +- .../map_files/Deltastation/DeltaStation2.dmm | 77 +- .../map_files/IceBoxStation/IceBoxStation.dmm | 71 +- _maps/map_files/KiloStation/KiloStation.dmm | 50 +- _maps/map_files/MetaStation/MetaStation.dmm | 35 +- _maps/map_files/Mining/Lavaland.dmm | 18 +- _maps/map_files/Mining/Oshan.dmm | 14 +- _maps/map_files/NorthStar/north_star.dmm | 58 +- _maps/map_files/generic/CentCom.dmm | 487 ++++----- _maps/map_files/tramstation/tramstation.dmm | 35 +- _maps/shuttles/emergency_monastery.dmm | 20 +- _maps/shuttles/emergency_nature.dmm | 6 +- _maps/shuttles/whiteship_meta.dmm | 8 +- _maps/templates/holodeck_petpark.dmm | 6 +- _maps/templates/lazy_templates/ninja_den.dmm | 4 +- _maps/templates/lazy_templates/nukie_base.dmm | 6 +- _maps/virtual_domains/beach_bar.dmm | 4 +- .../RandomBars/Tram/tram_bar_biodome.dmm | 2 +- _maps/~monkestation/templates/hives.dmm | 300 ++++++ code/__DEFINES/icon_smoothing.dm | 1 + code/__DEFINES/logging.dm | 1 + code/__DEFINES/~monkestation/botany.dm | 44 + code/__HELPERS/global_lists.dm | 2 + code/__HELPERS/mobs.dm | 6 + code/_globalvars/lists/flavor_misc.dm | 2 + code/_onclick/item_attack.dm | 3 +- code/controllers/subsystem/garbage.dm | 76 +- code/datums/chatmessage.dm | 44 +- code/datums/components/bakeable.dm | 2 +- code/datums/components/crafting/crafting.dm | 2 +- code/datums/components/food/edible.dm | 2 +- code/datums/components/grillable.dm | 2 +- code/datums/elements/food/microwavable.dm | 2 +- code/datums/emotes.dm | 1 + .../machines/machine_circuitboards.dm | 2 +- code/game/objects/items/dna_probe.dm | 16 +- .../objects/items/stacks/sheets/mineral.dm | 2 +- code/game/objects/items/stacks/stack.dm | 2 +- code/game/objects/items/storage/bags.dm | 1 + code/game/say.dm | 2 +- code/game/turfs/closed/minerals.dm | 4 +- code/modules/admin/admin_verbs.dm | 1 + code/modules/admin/hardelete_toggle.dm | 17 + code/modules/admin/sql_ban_system.dm | 8 +- .../antagonists/heretic/magic/star_touch.dm | 2 +- code/modules/cargo/bounties/engineering.dm | 2 +- code/modules/cargo/exports.dm | 2 +- code/modules/events/_event.dm | 2 +- .../experisci/experiment/experiments.dm | 2 +- .../food_and_drinks/recipes/soup_mixtures.dm | 7 +- code/modules/hydroponics/gene_modder.dm | 2 + code/modules/hydroponics/grown/cherries.dm | 2 + code/modules/hydroponics/grown/citrus.dm | 2 +- code/modules/hydroponics/grown/cotton.dm | 4 +- code/modules/hydroponics/grown/flowers.dm | 5 + code/modules/hydroponics/grown/peas.dm | 3 - code/modules/hydroponics/grown/replicapod.dm | 4 +- code/modules/hydroponics/grown/seedling.dm | 3 +- code/modules/hydroponics/grown/towercap.dm | 2 +- code/modules/hydroponics/hydroitemdefines.dm | 59 +- code/modules/hydroponics/hydroponics.dm | 3 +- .../hydroponics/hydroponics_chemreact.dm | 4 - code/modules/hydroponics/seeds.dm | 39 +- .../modules/hydroponics/unique_plant_genes.dm | 9 +- code/modules/logging/log_category.dm | 3 +- code/modules/logging/log_entry.dm | 8 +- code/modules/logging/log_holder.dm | 4 +- code/modules/mapping/reader.dm | 3 +- .../monster_organs/regenerative_core.dm | 10 +- .../mob/living/basic/farm_animals/bee/_bee.dm | 24 +- .../basic/farm_animals/bee/bee_ai_behavior.dm | 6 +- .../basic/farm_animals/bee/bee_ai_subtree.dm | 2 +- .../living/basic/jungle/seedling/seedling.dm | 44 +- .../basic/jungle/seedling/seedling_ai.dm | 51 +- .../revenant/revenant_abilities.dm | 11 +- code/modules/mob/living/brain/brain_item.dm | 2 +- .../mob/living/carbon/human/human_defense.dm | 2 +- .../mob/living/carbon/human/human_helpers.dm | 2 +- code/modules/mob/living/living.dm | 3 +- code/modules/paperwork/paper.dm | 1 + code/modules/projectiles/gun.dm | 2 +- .../projectiles/guns/special/medbeam.dm | 2 +- code/modules/projectiles/projectile/magic.dm | 50 +- .../modules/reagents/chemistry/equilibrium.dm | 8 +- code/modules/reagents/chemistry/holder.dm | 24 +- code/modules/reagents/chemistry/reagents.dm | 17 - .../reagents/cat2_medicine_reagents.dm | 6 - .../reagents/drinks/alcohol_reagents.dm | 11 - .../reagents/drinks/drink_reagents.dm | 17 - .../chemistry/reagents/drug_reagents.dm | 6 - .../chemistry/reagents/food_reagents.dm | 28 - .../chemistry/reagents/medicine_reagents.dm | 19 +- .../chemistry/reagents/other_reagents.dm | 167 +-- .../reagents/pyrotechnic_reagents.dm | 9 - .../chemistry/reagents/toxin_reagents.dm | 58 +- .../reagents/reagent_containers/cups/_cup.dm | 3 +- .../reagents/reagent_containers/spray.dm | 2 +- code/modules/research/destructive_analyzer.dm | 2 +- .../modules/research/machinery/_production.dm | 4 +- code/modules/surgery/surgery.dm | 2 +- code/modules/vending/_vending.dm | 2 +- code/modules/vending/megaseed.dm | 2 +- config/game_options.txt | 1 + goon/icons/floors.dmi | Bin 0 -> 1288 bytes goon/icons/obj/hydroponics/plants_alien.dmi | Bin 0 -> 30357 bytes goon/icons/obj/hydroponics/plants_crop.dmi | Bin 0 -> 94637 bytes goon/icons/obj/hydroponics/plants_flower.dmi | Bin 0 -> 30165 bytes goon/icons/obj/hydroponics/plants_fruit.dmi | Bin 977 -> 102851 bytes goon/icons/obj/hydroponics/plants_herb.dmi | Bin 0 -> 89274 bytes goon/icons/obj/hydroponics/plants_unused.dmi | Bin 0 -> 3106 bytes goon/icons/obj/hydroponics/plants_veg.dmi | Bin 0 -> 38828 bytes goon/icons/obj/hydroponics/plants_weed.dmi | Bin 0 -> 21874 bytes goon/icons/walls_beehive.dmi | Bin 0 -> 9584 bytes .../artifact_components/_base_component.dm | 1 + .../botany/components/plant_growing.dm | 340 +++++++ .../botany/components/plant_growth_holder.dm | 184 ++++ .../botany/components/plant_tray_overlays.dm | 172 ++++ monkestation/code/modules/botany/hydrotray.dm | 61 ++ .../modules/botany/icons/apid_sprites.dmi | Bin 0 -> 22266 bytes .../code/modules/botany/icons/pollen.dmi | Bin 0 -> 346 bytes .../code/modules/botany/icons/potty.dmi | Bin 0 -> 892 bytes .../modules/botany/new_seeds/mutations.dm | 18 + .../code/modules/botany/new_seeds/seeds.dm | 71 ++ .../botany/plant_icon_overrides/crops.dm | 85 ++ .../botany/plant_icon_overrides/flowers.dm | 46 + .../botany/plant_icon_overrides/fruits.dm | 201 ++++ .../botany/plant_icon_overrides/herbs.dm | 100 ++ .../plant_icon_overrides/plants_done.md | 27 + .../botany/plant_icon_overrides/veggies.dm | 106 ++ .../botany/plant_icon_overrides/weeds.dm | 15 + .../code/modules/botany/plant_processing.dm | 4 + monkestation/code/modules/botany/potty.dm | 96 ++ .../code/modules/botany/reagents/_base.dm | 4 + .../cat2_medicine_reagents.dm | 2 + .../growing_component_apply/drug_reagents.dm | 3 + .../growing_component_apply/food_reagents.dm | 7 + .../growing_component_apply/medicine.dm | 7 + .../growing_component_apply/other_reagents.dm | 23 + .../growing_component_apply/pyrotechnics.dm | 2 + .../growing_component_apply/toxins.dm | 26 + .../reagents/plant_apply/drink_reagents.dm | 6 + .../botany/reagents/plant_apply/ethanol.dm | 6 + .../reagents/plant_apply/food_reagents.dm | 9 + .../botany/reagents/plant_apply/medicine.dm | 2 + .../reagents/plant_apply/other_reagents.dm | 79 ++ .../reagents/plant_apply/pyrotechnics.dm | 5 + .../botany/reagents/plant_apply/toxins.dm | 11 + .../modules/botany/species/apid/abilities.dm | 86 ++ .../code/modules/botany/species/apid/bee.dm | 54 + .../modules/botany/species/apid/bodyparts.dm | 51 + .../apid/external_organs/apid_antennae.dm | 121 +++ .../apid/external_organs/preferences.dm | 46 + .../species/apid/external_organs/wings.dm | 60 ++ .../botany/species/apid/hive/ability.dm | 50 + .../modules/botany/species/apid/hive/area.dm | 12 + .../botany/species/apid/hive/hive_object.dm | 125 +++ .../botany/species/apid/hive/hive_turfs.dm | 18 + .../modules/botany/species/apid/organs.dm | 5 + .../modules/botany/species/apid/species.dm | 154 +++ monkestation/code/modules/botany/tools.dm | 29 + .../cassettes/track_folder/base_tracks.json | 954 +----------------- .../modules/ghost_players/arena/maps/snow.dmm | 6 +- .../modules/hydroponics/grown/honeydew.dm | 2 + .../modules/hydroponics/machines/composter.dm | 2 + .../modules/hydroponics/machines/splicer.dm | 2 +- .../code/modules/hydroponics/seeds.dm | 5 +- .../code/modules/hydroponics/seeds/coconut.dm | 2 +- .../modules/mech_comp/objects/collector.dm | 5 + .../modules/mech_comp/objects/interactor.dm | 7 +- .../metrics/subsystem_analytics/generics.dm | 8 + .../modules/pollution/generic_pollutants.dm | 3 + .../code/modules/pollution/pollution.dm | 2 +- .../slimecore/components/vac_tagged.dm | 8 + .../modules/slimecore/corral/corral_data.dm | 3 + .../virology/disease/symtoms/stage2.dm | 14 - tgstation.dme | 44 + 196 files changed, 3886 insertions(+), 2083 deletions(-) create mode 100644 _maps/~monkestation/templates/hives.dmm create mode 100644 code/__DEFINES/~monkestation/botany.dm create mode 100644 code/modules/admin/hardelete_toggle.dm create mode 100644 goon/icons/floors.dmi create mode 100644 goon/icons/obj/hydroponics/plants_alien.dmi create mode 100644 goon/icons/obj/hydroponics/plants_crop.dmi create mode 100644 goon/icons/obj/hydroponics/plants_flower.dmi create mode 100644 goon/icons/obj/hydroponics/plants_herb.dmi create mode 100644 goon/icons/obj/hydroponics/plants_unused.dmi create mode 100644 goon/icons/obj/hydroponics/plants_veg.dmi create mode 100644 goon/icons/obj/hydroponics/plants_weed.dmi create mode 100644 goon/icons/walls_beehive.dmi create mode 100644 monkestation/code/modules/botany/components/plant_growing.dm create mode 100644 monkestation/code/modules/botany/components/plant_growth_holder.dm create mode 100644 monkestation/code/modules/botany/components/plant_tray_overlays.dm create mode 100644 monkestation/code/modules/botany/hydrotray.dm create mode 100644 monkestation/code/modules/botany/icons/apid_sprites.dmi create mode 100644 monkestation/code/modules/botany/icons/pollen.dmi create mode 100644 monkestation/code/modules/botany/icons/potty.dmi create mode 100644 monkestation/code/modules/botany/new_seeds/mutations.dm create mode 100644 monkestation/code/modules/botany/new_seeds/seeds.dm create mode 100644 monkestation/code/modules/botany/plant_icon_overrides/crops.dm create mode 100644 monkestation/code/modules/botany/plant_icon_overrides/flowers.dm create mode 100644 monkestation/code/modules/botany/plant_icon_overrides/fruits.dm create mode 100644 monkestation/code/modules/botany/plant_icon_overrides/herbs.dm create mode 100644 monkestation/code/modules/botany/plant_icon_overrides/plants_done.md create mode 100644 monkestation/code/modules/botany/plant_icon_overrides/veggies.dm create mode 100644 monkestation/code/modules/botany/plant_icon_overrides/weeds.dm create mode 100644 monkestation/code/modules/botany/plant_processing.dm create mode 100644 monkestation/code/modules/botany/potty.dm create mode 100644 monkestation/code/modules/botany/reagents/_base.dm create mode 100644 monkestation/code/modules/botany/reagents/growing_component_apply/cat2_medicine_reagents.dm create mode 100644 monkestation/code/modules/botany/reagents/growing_component_apply/drug_reagents.dm create mode 100644 monkestation/code/modules/botany/reagents/growing_component_apply/food_reagents.dm create mode 100644 monkestation/code/modules/botany/reagents/growing_component_apply/medicine.dm create mode 100644 monkestation/code/modules/botany/reagents/growing_component_apply/other_reagents.dm create mode 100644 monkestation/code/modules/botany/reagents/growing_component_apply/pyrotechnics.dm create mode 100644 monkestation/code/modules/botany/reagents/growing_component_apply/toxins.dm create mode 100644 monkestation/code/modules/botany/reagents/plant_apply/drink_reagents.dm create mode 100644 monkestation/code/modules/botany/reagents/plant_apply/ethanol.dm create mode 100644 monkestation/code/modules/botany/reagents/plant_apply/food_reagents.dm create mode 100644 monkestation/code/modules/botany/reagents/plant_apply/medicine.dm create mode 100644 monkestation/code/modules/botany/reagents/plant_apply/other_reagents.dm create mode 100644 monkestation/code/modules/botany/reagents/plant_apply/pyrotechnics.dm create mode 100644 monkestation/code/modules/botany/reagents/plant_apply/toxins.dm create mode 100644 monkestation/code/modules/botany/species/apid/abilities.dm create mode 100644 monkestation/code/modules/botany/species/apid/bee.dm create mode 100644 monkestation/code/modules/botany/species/apid/bodyparts.dm create mode 100644 monkestation/code/modules/botany/species/apid/external_organs/apid_antennae.dm create mode 100644 monkestation/code/modules/botany/species/apid/external_organs/preferences.dm create mode 100644 monkestation/code/modules/botany/species/apid/external_organs/wings.dm create mode 100644 monkestation/code/modules/botany/species/apid/hive/ability.dm create mode 100644 monkestation/code/modules/botany/species/apid/hive/area.dm create mode 100644 monkestation/code/modules/botany/species/apid/hive/hive_object.dm create mode 100644 monkestation/code/modules/botany/species/apid/hive/hive_turfs.dm create mode 100644 monkestation/code/modules/botany/species/apid/organs.dm create mode 100644 monkestation/code/modules/botany/species/apid/species.dm create mode 100644 monkestation/code/modules/botany/tools.dm diff --git a/SQL/feedback_conversion_2017-11-12.py b/SQL/feedback_conversion_2017-11-12.py index 8a60e10b7e1c..718eabd10b55 100644 --- a/SQL/feedback_conversion_2017-11-12.py +++ b/SQL/feedback_conversion_2017-11-12.py @@ -456,7 +456,7 @@ def pick_parsing(var_name, var_value, details, multirows_completed): raise Exception("Python must be at least version 3 for this script.") text_keys = ["religion_book", "religion_deity", "religion_name", "shuttle_fasttravel", "shuttle_manipulator", "shuttle_purchase", "shuttle_reason", "station_renames"] amount_keys = ["admin_cookies_spawned", "cyborg_ais_created", "cyborg_frames_built", "cyborg_mmis_filled", "newscaster_newspapers_printed", "newscaster_stories", "nuclear_challenge_mode"] -simple_tallies = ["admin_secrets_fun_used", "admin_verb", "assembly_made", "brother_success", "cell_used", "changeling_power_purchase", "changeling_success", "chaplain_weapon", "chemical_reaction", "circuit_printed", "clockcult_scripture_recited", "contamination", "cult_runes_scribed", "engine_started", "event_admin_cancelled", "event_ran", "food_harvested", "food_made", "gun_fired", "handcuffs", "item_deconstructed", "item_printed", "jaunter", "lazarus_injector", "megafauna_kills", "mining_voucher_redeemed", "mobs_killed_mining", "object_crafted", "ore_mined", "pick_used_mining", "slime_cores_used", "surgeries_completed", "time_dilation_current", "traitor_random_uplink_items_gotten", "traitor_success", "voice_of_god", "warp_cube", "wisp_lantern", "wizard_spell_learned", "wizard_success", "zone_targeted"] +simple_tallies = ["admin_secrets_fun_used", "admin_verb", "assembly_made", "brother_success", "cell_used", "changeling_power_purchase", "changeling_success", "chaplain_weapon", "chemical_reaction", "circuit_printed", "clockcult_scripture_recited", "contamination", "cult_runes_scribed", "engine_started", "event_admin_cancelled", "event_ran", "food_harvested", "food_made", "gun_fired", "handcuffs", "item_deconstructed", "item_printed", "jaunter", "lazarus_injector", "megafauna_kills", "mining_voucher_redeemed", "mobs_killed_mining", "object_crafted", "ore_mined", "pick_used_mining", "slime_cores_used", "surgeries_completed", "time_dilation_current", "traitor_random_uplink_items_gotten", "traitor_success", "voice_of_god", "warp_cube", "wisp_lantern", "wizard_spell_learned", "wizard_success", "zone_targeted", "emote_used"] nested_tallies = ["admin_toggle", "cargo_imports", "changeling_objective", "changeling_powers", "cult_objective", "export_sold_cost", "hivelord_core", "item_used_for_combat", "job_preferences", "mining_equipment_bought", "played_url", "preferences_verb", "testmerged_prs", "traitor_objective", "traitor_uplink_items_bought", "vending_machine_usage", "wizard_objective", "wizard_spell_improved"] associatives = ["colonies_dropped", "commendation", "high_research_level"] special_cases = ["immortality_talisman", "newscaster_channels", "radio_usage", "shuttle_gib", "slime_babies_born", "slime_core_harvested"] diff --git a/_maps/RandomRuins/IceRuins/icemoon_surface_bughabitat.dmm b/_maps/RandomRuins/IceRuins/icemoon_surface_bughabitat.dmm index baa64e12c7c3..6392388b1096 100644 --- a/_maps/RandomRuins/IceRuins/icemoon_surface_bughabitat.dmm +++ b/_maps/RandomRuins/IceRuins/icemoon_surface_bughabitat.dmm @@ -289,7 +289,7 @@ /turf/open/floor/carpet/neon/simple/lime, /area/ruin/bughabitat) "IX" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /turf/open/floor/plastic, /area/ruin/bughabitat) "Jr" = ( diff --git a/_maps/RandomRuins/IceRuins/icemoon_surface_smoking_room.dmm b/_maps/RandomRuins/IceRuins/icemoon_surface_smoking_room.dmm index 297685b06af7..7914006c65ee 100644 --- a/_maps/RandomRuins/IceRuins/icemoon_surface_smoking_room.dmm +++ b/_maps/RandomRuins/IceRuins/icemoon_surface_smoking_room.dmm @@ -116,7 +116,7 @@ /turf/open/floor/wood, /area/ruin/smoking_room/house) "w" = ( -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /turf/open/misc/asteroid/snow/icemoon, /area/icemoon/surface/outdoors/nospawn) "x" = ( diff --git a/_maps/RandomRuins/IceRuins/icemoon_underground_abandoned_homestead.dmm b/_maps/RandomRuins/IceRuins/icemoon_underground_abandoned_homestead.dmm index f8fd8f41c92a..5ab59bf79dab 100644 --- a/_maps/RandomRuins/IceRuins/icemoon_underground_abandoned_homestead.dmm +++ b/_maps/RandomRuins/IceRuins/icemoon_underground_abandoned_homestead.dmm @@ -1,6 +1,6 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "bf" = ( -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /turf/open/misc/asteroid/snow/icemoon, /area/icemoon/surface/outdoors/nospawn) "cP" = ( @@ -44,7 +44,7 @@ color = "#8a7453"; dir = 8 }, -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /turf/open/floor/plating/snowed/smoothed/icemoon, /area/icemoon/surface/outdoors/nospawn) "ng" = ( @@ -120,7 +120,7 @@ color = "#8a7453"; dir = 10 }, -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /turf/open/floor/plating/snowed/smoothed/icemoon, /area/icemoon/surface/outdoors/nospawn) "vI" = ( @@ -209,7 +209,7 @@ /obj/structure/railing{ color = "#8a7453" }, -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /turf/open/floor/plating/snowed/smoothed/icemoon, /area/icemoon/surface/outdoors/nospawn) "Fg" = ( @@ -328,18 +328,18 @@ color = "#8a7453"; dir = 8 }, -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /turf/open/misc/asteroid/snow/icemoon, /area/icemoon/surface/outdoors/nospawn) "Tf" = ( /obj/structure/railing{ color = "#8a7453" }, -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /turf/open/misc/asteroid/snow/icemoon, /area/icemoon/surface/outdoors/nospawn) "TP" = ( -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /turf/open/floor/plating/snowed/smoothed/icemoon, /area/icemoon/surface/outdoors/nospawn) "Vf" = ( diff --git a/_maps/RandomRuins/IceRuins/icemoon_underground_hermit.dmm b/_maps/RandomRuins/IceRuins/icemoon_underground_hermit.dmm index 786b4130df5f..eb4f49bdba7c 100644 --- a/_maps/RandomRuins/IceRuins/icemoon_underground_hermit.dmm +++ b/_maps/RandomRuins/IceRuins/icemoon_underground_hermit.dmm @@ -78,7 +78,7 @@ /turf/open/floor/plating, /area/ruin/powered/hermit) "sj" = ( -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /obj/machinery/light/directional/north, /turf/open/floor/grass/fairy, /area/ruin/powered/hermit) @@ -87,7 +87,7 @@ /turf/open/floor/wood, /area/ruin/powered/hermit) "uw" = ( -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /turf/open/floor/grass/fairy, /area/ruin/powered/hermit) "wf" = ( @@ -157,7 +157,7 @@ "Yi" = ( /obj/item/seeds/plump, /obj/item/seeds/plump, -/obj/item/seeds/tower, +/obj/item/seeds/tree, /obj/item/seeds/reishi, /obj/structure/table/wood, /obj/item/food/grown/mushroom/glowshroom, diff --git a/_maps/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm b/_maps/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm index ee999a468bfb..d980033f1c94 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm @@ -582,7 +582,7 @@ /turf/open/floor/wood, /area/ruin/powered/beach) "sV" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /turf/open/floor/iron/grimy, /area/ruin/powered/beach) "ta" = ( @@ -853,14 +853,14 @@ /turf/closed/wall/mineral/sandstone, /area/ruin/powered/beach) "CZ" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4{ dir = 4 }, /turf/open/floor/iron/grimy, /area/ruin/powered/beach) "Dg" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{ dir = 4 }, diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_ash_walker1.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_ash_walker1.dmm index 47fe3152a8b5..1423580debe1 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_ash_walker1.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_ash_walker1.dmm @@ -711,7 +711,7 @@ /turf/open/misc/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "ie" = ( -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /obj/structure/stone_tile/block/cracked{ dir = 1 }, @@ -1112,8 +1112,8 @@ /obj/item/seeds/glowshroom, /obj/item/seeds/lavaland/porcini, /obj/item/seeds/lavaland/porcini, -/obj/item/seeds/tower, -/obj/item/seeds/tower, +/obj/item/seeds/tree, +/obj/item/seeds/tree, /turf/open/misc/asteroid/basalt/lava_land_surface, /area/ruin/unpowered/ash_walkers) "GW" = ( @@ -1131,7 +1131,7 @@ /turf/open/misc/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "Ic" = ( -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /obj/structure/stone_tile/surrounding_tile/cracked{ dir = 1 }, @@ -1301,7 +1301,7 @@ /turf/open/misc/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "Tr" = ( -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /obj/structure/stone_tile/block{ dir = 8 }, diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_gaia.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_gaia.dmm index b34c93c82104..f59641d4bb49 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_gaia.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_gaia.dmm @@ -30,9 +30,7 @@ /turf/open/misc/grass/lavaland, /area/ruin/unpowered/gaia) "i" = ( -/obj/machinery/hydroponics/soil{ - self_sustaining = 1 - }, +/obj/machinery/growing/soil, /turf/open/misc/grass/lavaland, /area/ruin/unpowered/gaia) "j" = ( diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_hermit.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_hermit.dmm index 49e241256578..d363d32a2d5c 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_hermit.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_hermit.dmm @@ -56,11 +56,11 @@ /obj/item/seeds/plump, /obj/item/seeds/plump, /obj/item/food/grown/mushroom/glowshroom, -/obj/item/seeds/tower, +/obj/item/seeds/tree, /turf/open/misc/asteroid/basalt, /area/ruin/powered) "n" = ( -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /turf/open/floor/plating, /area/ruin/powered) "o" = ( @@ -168,7 +168,7 @@ }, /area/ruin/powered) "L" = ( -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /obj/item/cultivator, /turf/open/floor/plating, /area/ruin/powered) diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_seed_vault.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_seed_vault.dmm index 0c96ffbd6d5f..dbdebf0adf81 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_seed_vault.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_seed_vault.dmm @@ -385,7 +385,7 @@ /area/ruin/powered/seedvault) "bc" = ( /obj/machinery/light/directional/west, -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/trimline/green/line{ dir = 8 @@ -423,7 +423,7 @@ /area/ruin/powered/seedvault) "bg" = ( /obj/machinery/light/directional/east, -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/cobweb/cobweb2, /obj/effect/turf_decal/trimline/green/line{ @@ -435,7 +435,7 @@ /turf/open/floor/mineral/plastitanium, /area/ruin/powered/seedvault) "bh" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/effect/turf_decal/trimline/green/line{ dir = 6 }, @@ -456,7 +456,7 @@ /turf/open/floor/mineral/plastitanium, /area/ruin/powered/seedvault) "bj" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/effect/turf_decal/trimline/green/line{ dir = 10 }, @@ -474,7 +474,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/trimline/green/line{ dir = 8 @@ -522,7 +522,7 @@ /area/ruin/powered/seedvault) "bq" = ( /obj/machinery/light/directional/east, -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/trimline/green/line{ dir = 8 @@ -559,7 +559,7 @@ /area/ruin/powered/seedvault) "bv" = ( /obj/machinery/light/directional/south, -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/trimline/green/line{ dir = 1 @@ -569,7 +569,7 @@ /area/ruin/powered/seedvault) "bw" = ( /obj/machinery/light/directional/south, -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/trimline/green/line{ @@ -601,14 +601,14 @@ /turf/closed/wall/r_wall, /area/ruin/powered/seedvault) "bB" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/effect/turf_decal/trimline/green/line{ dir = 5 }, /turf/open/floor/mineral/plastitanium, /area/ruin/powered/seedvault) "bC" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/effect/turf_decal/trimline/green/line{ dir = 9 }, diff --git a/_maps/RandomRuins/SpaceRuins/botanical_haven.dmm b/_maps/RandomRuins/SpaceRuins/botanical_haven.dmm index 010f710de6e8..b9a2a0cc79f4 100644 --- a/_maps/RandomRuins/SpaceRuins/botanical_haven.dmm +++ b/_maps/RandomRuins/SpaceRuins/botanical_haven.dmm @@ -17,11 +17,11 @@ "f" = ( /obj/structure/flora/bush/flowers_br/style_random, /obj/machinery/light/warm/directional/east, -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /turf/open/misc/grass, /area/ruin/space/has_grav/powered/botanical_haven) "g" = ( -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /turf/open/misc/grass, /area/ruin/space/has_grav/powered/botanical_haven) "h" = ( diff --git a/_maps/RandomRuins/SpaceRuins/clownplanet.dmm b/_maps/RandomRuins/SpaceRuins/clownplanet.dmm index fa0b50cc4435..90e5c179cf5b 100644 --- a/_maps/RandomRuins/SpaceRuins/clownplanet.dmm +++ b/_maps/RandomRuins/SpaceRuins/clownplanet.dmm @@ -63,7 +63,7 @@ }, /area/ruin/space/has_grav/powered/clownplanet) "ao" = ( -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /obj/item/seeds/banana, /turf/open/floor/grass{ color = "#1eff00" diff --git a/_maps/RandomRuins/SpaceRuins/deepstorage.dmm b/_maps/RandomRuins/SpaceRuins/deepstorage.dmm index f2cf7a9f8a8c..3ba6eec1dca0 100644 --- a/_maps/RandomRuins/SpaceRuins/deepstorage.dmm +++ b/_maps/RandomRuins/SpaceRuins/deepstorage.dmm @@ -447,14 +447,14 @@ /turf/open/floor/iron, /area/ruin/space/has_grav/deepstorage/hydroponics) "bk" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ dir = 4 }, /turf/open/floor/light, /area/ruin/space/has_grav/deepstorage/hydroponics) "bl" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ dir = 10 }, @@ -664,7 +664,7 @@ /turf/open/floor/iron, /area/ruin/space/has_grav/deepstorage/hydroponics) "bS" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /turf/open/floor/light, /area/ruin/space/has_grav/deepstorage/hydroponics) "bT" = ( @@ -924,14 +924,14 @@ /turf/open/floor/iron, /area/ruin/space/has_grav/deepstorage/hydroponics) "cz" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ dir = 4 }, /turf/open/floor/light, /area/ruin/space/has_grav/deepstorage/hydroponics) "cA" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ dir = 9 }, @@ -2532,7 +2532,7 @@ /turf/open/floor/plating, /area/ruin/space/has_grav/deepstorage/crusher) "hf" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ dir = 4 }, diff --git a/_maps/RandomRuins/SpaceRuins/hilbertresearchfacility.dmm b/_maps/RandomRuins/SpaceRuins/hilbertresearchfacility.dmm index fb1cc9c069e9..50cdbe733db9 100644 --- a/_maps/RandomRuins/SpaceRuins/hilbertresearchfacility.dmm +++ b/_maps/RandomRuins/SpaceRuins/hilbertresearchfacility.dmm @@ -1893,7 +1893,7 @@ /turf/open/floor/plating, /area/ruin/space/has_grav/powered/hilbertresearchfacility) "Rj" = ( -/obj/machinery/hydroponics, +/obj/machinery/growing, /turf/open/floor/mineral/titanium/white, /area/ruin/space/has_grav/powered/hilbertresearchfacility) "Rk" = ( diff --git a/_maps/RandomRuins/SpaceRuins/listeningstation.dmm b/_maps/RandomRuins/SpaceRuins/listeningstation.dmm index d0930b9f29dd..3e2ebf4927da 100644 --- a/_maps/RandomRuins/SpaceRuins/listeningstation.dmm +++ b/_maps/RandomRuins/SpaceRuins/listeningstation.dmm @@ -209,7 +209,7 @@ /area/ruin/space) "hK" = ( /obj/structure/extinguisher_cabinet/directional/south, -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /turf/open/floor/iron, /area/ruin/space/has_grav/listeningstation) "iU" = ( diff --git a/_maps/RandomRuins/SpaceRuins/oldstation.dmm b/_maps/RandomRuins/SpaceRuins/oldstation.dmm index d1b6e937645d..09751e3f4faa 100644 --- a/_maps/RandomRuins/SpaceRuins/oldstation.dmm +++ b/_maps/RandomRuins/SpaceRuins/oldstation.dmm @@ -888,7 +888,7 @@ /turf/open/floor/iron, /area/ruin/space/ancientstation/charlie/hydro) "dp" = ( -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /turf/open/floor/grass, /area/ruin/space/ancientstation/charlie/hydro) "dq" = ( @@ -5405,7 +5405,7 @@ /turf/open/floor/iron, /area/ruin/space/ancientstation/charlie/engie) "wO" = ( -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /obj/machinery/light/small/directional/south, /turf/open/floor/grass, /area/ruin/space/ancientstation/charlie/hydro) diff --git a/_maps/RandomRuins/SpaceRuins/spinwardsmoothies.dmm b/_maps/RandomRuins/SpaceRuins/spinwardsmoothies.dmm index d3ca2e27e377..7a1bd14fef8f 100644 --- a/_maps/RandomRuins/SpaceRuins/spinwardsmoothies.dmm +++ b/_maps/RandomRuins/SpaceRuins/spinwardsmoothies.dmm @@ -18,7 +18,7 @@ /obj/effect/turf_decal/siding/thinplating/terracotta{ dir = 10 }, -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /turf/open/floor/bamboo{ smoothing_flags = 0 }, @@ -96,7 +96,7 @@ /obj/effect/turf_decal/siding/thinplating/terracotta{ dir = 8 }, -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /turf/open/floor/bamboo{ smoothing_flags = 0 }, @@ -194,7 +194,7 @@ /turf/open/floor/grass, /area/ruin/space/has_grav/spinwardsmoothies) "XG" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/effect/turf_decal/siding/thinplating/terracotta{ dir = 9 }, diff --git a/_maps/RandomZLevels/snowdin.dmm b/_maps/RandomZLevels/snowdin.dmm index 05445ae1d834..577daa1036f5 100644 --- a/_maps/RandomZLevels/snowdin.dmm +++ b/_maps/RandomZLevels/snowdin.dmm @@ -2129,7 +2129,7 @@ /turf/open/floor/plating, /area/awaymission/snowdin/post/hydro) "gG" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /turf/open/floor/plating, /area/awaymission/snowdin/post/hydro) "gH" = ( @@ -2137,7 +2137,7 @@ /turf/open/floor/iron, /area/awaymission/snowdin/post/hydro) "gI" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/awaymission/snowdin/post/hydro) @@ -2146,7 +2146,7 @@ /turf/open/floor/plating, /area/awaymission/snowdin/post/hydro) "gK" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/awaymission/snowdin/post/hydro) @@ -3682,11 +3682,11 @@ /turf/open/floor/iron, /area/awaymission/snowdin/post/hydro) "kR" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /turf/open/floor/iron, /area/awaymission/snowdin/post/hydro) "kS" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, @@ -4400,7 +4400,7 @@ /turf/open/floor/plating, /area/awaymission/snowdin/post/hydro) "ms" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/effect/decal/cleanable/dirt, /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, diff --git a/_maps/RandomZLevels/undergroundoutpost45.dmm b/_maps/RandomZLevels/undergroundoutpost45.dmm index 8379a5185d3d..9ed55883ce32 100644 --- a/_maps/RandomZLevels/undergroundoutpost45.dmm +++ b/_maps/RandomZLevels/undergroundoutpost45.dmm @@ -1587,7 +1587,7 @@ }, /area/awaymission/undergroundoutpost45/central) "eb" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /turf/open/floor/iron/dark{ heat_capacity = 1e+006 }, diff --git a/_maps/map_files/Basketball/ash_gladiators.dmm b/_maps/map_files/Basketball/ash_gladiators.dmm index 75315e028a83..0a54af6cd227 100644 --- a/_maps/map_files/Basketball/ash_gladiators.dmm +++ b/_maps/map_files/Basketball/ash_gladiators.dmm @@ -266,7 +266,7 @@ /turf/open/floor/fakebasalt, /area/centcom/basketball) "nv" = ( -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /turf/open/floor/fakebasalt, /area/centcom/basketball) "oR" = ( diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm index 404099bf8c3a..16d25aa722db 100644 --- a/_maps/map_files/BoxStation/BoxStation.dmm +++ b/_maps/map_files/BoxStation/BoxStation.dmm @@ -8550,7 +8550,7 @@ /turf/open/floor/iron, /area/station/engineering/break_room) "cSx" = ( -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /turf/open/floor/grass, /area/station/service/chapel/funeral) "cSz" = ( @@ -23579,6 +23579,10 @@ }, /turf/open/floor/iron/dark/side, /area/station/commons/locker) +"hZv" = ( +/mob/living/basic/pet/potty, +/turf/open/floor/iron, +/area/station/service/hydroponics) "hZS" = ( /obj/effect/turf_decal/delivery/red, /obj/structure/cable, @@ -29845,7 +29849,7 @@ /turf/closed/wall/r_wall, /area/station/security/evidence) "kgn" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /turf/open/floor/iron, /area/station/service/hydroponics) "kgv" = ( @@ -35712,9 +35716,9 @@ /obj/machinery/camera/autoname/directional/south, /obj/structure/closet/crate/hydroponics, /obj/item/shovel/spade, -/obj/item/seeds/tower, -/obj/item/seeds/tower, -/obj/item/seeds/tower, +/obj/item/seeds/tree, +/obj/item/seeds/tree, +/obj/item/seeds/tree, /turf/open/floor/wood, /area/station/service/chapel/funeral) "mfe" = ( @@ -37161,7 +37165,7 @@ /obj/item/seeds/wheat, /obj/item/seeds/pumpkin, /obj/effect/spawner/random/contraband/prison, -/obj/item/seeds/tower, +/obj/item/seeds/tree, /turf/open/floor/iron/dark, /area/station/security/prison/garden) "mGu" = ( @@ -38994,7 +38998,7 @@ /turf/open/floor/iron/dark/textured, /area/station/command/teleporter) "nmw" = ( -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /turf/open/floor/grass, /area/station/hallway/primary/central) "nmY" = ( @@ -57623,7 +57627,7 @@ /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/ai_upload) "tIO" = ( -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /turf/open/floor/grass, /area/station/service/hydroponics/garden) "tIU" = ( @@ -64154,7 +64158,7 @@ /turf/open/floor/wood, /area/station/commons/dorms) "vSd" = ( -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /turf/open/floor/grass, /area/station/security/prison/garden) "vSj" = ( @@ -66328,7 +66332,7 @@ dir = 1 }, /obj/machinery/light/directional/south, -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /turf/open/floor/iron/dark/side, /area/station/service/hydroponics) "wGN" = ( @@ -67946,7 +67950,7 @@ /obj/item/seeds/sugarcane, /obj/item/seeds/wheat, /obj/item/seeds/watermelon, -/obj/item/seeds/tower, +/obj/item/seeds/tree, /turf/open/floor/iron/dark/side{ dir = 1 }, @@ -68248,7 +68252,7 @@ /obj/effect/turf_decal/tile/green/half/contrasted{ dir = 1 }, -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /turf/open/floor/iron/dark/side, /area/station/service/hydroponics) "xqW" = ( @@ -84596,7 +84600,7 @@ emg dSO juc juc -juc +hZv qxQ pig pff diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index 6bfc274f6e11..ec40b9bc0b67 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -373,7 +373,7 @@ /turf/open/floor/engine, /area/station/science/research) "aeu" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/effect/turf_decal/tile/blue{ dir = 4 }, @@ -2955,7 +2955,7 @@ /turf/open/floor/iron/grimy, /area/station/command/heads_quarters/captain) "aHd" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/effect/turf_decal/tile/green{ dir = 8 }, @@ -4805,7 +4805,7 @@ /turf/open/floor/wood/large, /area/station/service/library) "bgl" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/effect/turf_decal/tile/blue{ dir = 4 }, @@ -4820,7 +4820,7 @@ /turf/open/floor/iron, /area/station/service/hydroponics) "bgo" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/effect/turf_decal/trimline/green/line{ dir = 4 }, @@ -6051,7 +6051,7 @@ /obj/effect/landmark/blobstart, /obj/effect/landmark/generic_maintenance_landmark, /obj/effect/landmark/event_spawn, -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/service/hydroponics/garden/abandoned) @@ -7241,7 +7241,7 @@ }, /obj/effect/turf_decal/tile/blue, /obj/machinery/light/directional/south, -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/machinery/status_display/ai/directional/south, /turf/open/floor/iron, /area/station/service/hydroponics) @@ -10718,7 +10718,7 @@ /turf/open/floor/wood/large, /area/station/command/corporate_showroom) "czg" = ( -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /obj/effect/decal/cleanable/dirt, /obj/item/plant_analyzer, /obj/machinery/camera/directional/east{ @@ -13857,7 +13857,7 @@ /area/station/engineering/atmos/project) "dps" = ( /obj/machinery/light/small/directional/south, -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/service/hydroponics/garden/abandoned) @@ -14696,7 +14696,7 @@ /area/station/security/brig) "dzk" = ( /obj/effect/turf_decal/trimline/green/end, -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/effect/turf_decal/trimline/green/mid_joiner{ dir = 8 }, @@ -20059,7 +20059,7 @@ /turf/open/floor/iron, /area/station/engineering/atmos) "eQx" = ( -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /obj/effect/decal/cleanable/dirt, /obj/item/shovel/spade, /obj/effect/mapping_helpers/burnt_floor, @@ -23614,7 +23614,7 @@ /turf/closed/wall, /area/station/security/brig) "fJx" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/effect/turf_decal/tile/blue{ dir = 4 }, @@ -26847,7 +26847,7 @@ /turf/open/floor/plating, /area/station/maintenance/port) "gwL" = ( -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/food_or_drink/seed, /turf/open/floor/iron/dark, @@ -27981,7 +27981,7 @@ /turf/open/floor/iron/white, /area/station/medical/pathology) "gLT" = ( -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /obj/item/cultivator, /obj/effect/decal/cleanable/dirt, /obj/structure/sign/warning/electric_shock/directional/west, @@ -28243,7 +28243,7 @@ /turf/open/floor/iron, /area/station/maintenance/fore) "gPj" = ( -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/food_or_drink/seed, /obj/machinery/airalarm/directional/north, @@ -34159,6 +34159,7 @@ /obj/effect/turf_decal/siding/green{ dir = 1 }, +/mob/living/basic/pet/potty, /turf/open/floor/iron/dark/smooth_large, /area/station/service/hydroponics) "inR" = ( @@ -37302,7 +37303,7 @@ /turf/open/floor/plating, /area/station/hallway/secondary/service) "jdl" = ( -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /obj/effect/decal/cleanable/dirt, /obj/structure/sign/poster/contraband/ambrosia_vulgaris{ pixel_x = -30 @@ -37577,7 +37578,7 @@ /area/station/maintenance/port) "jgb" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/effect/turf_decal/tile/green{ dir = 1 }, @@ -39241,7 +39242,7 @@ /turf/open/floor/iron, /area/station/engineering/atmos/storage) "jAp" = ( -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /obj/effect/decal/cleanable/dirt, /obj/machinery/light/directional/east, /obj/item/radio/intercom/directional/east, @@ -39442,7 +39443,7 @@ /area/station/cargo/miningoffice) "jCv" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/effect/turf_decal/tile/green{ dir = 4 }, @@ -43812,7 +43813,7 @@ /turf/open/floor/iron/dark, /area/station/science/xenobiology) "kFi" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/effect/turf_decal/tile/green, /obj/effect/turf_decal/tile/green{ dir = 1 @@ -53539,7 +53540,7 @@ /obj/effect/turf_decal/tile/blue{ dir = 4 }, -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/item/radio/intercom/directional/north, /obj/machinery/light/directional/east, /obj/machinery/camera/directional/east{ @@ -55955,7 +55956,7 @@ dir = 8 }, /obj/effect/turf_decal/tile/blue, -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /turf/open/floor/iron, /area/station/service/hydroponics) "nFj" = ( @@ -56353,7 +56354,7 @@ /area/station/hallway/primary/starboard) "nJV" = ( /obj/machinery/light/small/directional/north, -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /obj/item/shovel/spade, /turf/open/floor/iron/dark, /area/station/service/hydroponics/garden/abandoned) @@ -57334,7 +57335,7 @@ /turf/open/floor/plating, /area/station/maintenance/starboard/aft) "nXn" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/effect/turf_decal/trimline/green/end{ dir = 1 }, @@ -63604,7 +63605,7 @@ /turf/open/space/basic, /area/space/nearstation) "pCV" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/effect/turf_decal/trimline/green/line{ dir = 4 }, @@ -64280,7 +64281,7 @@ /obj/effect/decal/cleanable/dirt, /obj/structure/cable, /obj/structure/closet/crate/hydroponics, -/obj/item/seeds/tower, +/obj/item/seeds/tree, /obj/effect/spawner/random/contraband/prison, /obj/item/seeds/pumpkin, /obj/item/seeds/wheat, @@ -64679,7 +64680,7 @@ "pOD" = ( /obj/structure/cable, /obj/machinery/seed_extractor, -/obj/item/seeds/tower, +/obj/item/seeds/tree, /obj/item/seeds/watermelon, /obj/item/seeds/wheat, /obj/item/seeds/sugarcane, @@ -69918,7 +69919,7 @@ dir = 8 }, /obj/effect/turf_decal/tile/blue, -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/machinery/light/directional/west, /turf/open/floor/iron, /area/station/service/hydroponics) @@ -73813,7 +73814,7 @@ /obj/effect/turf_decal/tile/blue{ dir = 1 }, -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /turf/open/floor/iron, /area/station/service/hydroponics) "sau" = ( @@ -76072,7 +76073,7 @@ dir = 4 }, /obj/effect/turf_decal/tile/blue, -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/item/radio/intercom/directional/south, /obj/machinery/camera/directional/east{ c_tag = "Service - Hydroponics Front Aft"; @@ -76293,7 +76294,7 @@ /turf/open/floor/iron/white, /area/station/medical/medbay) "sHL" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/effect/turf_decal/tile/blue{ dir = 4 }, @@ -83110,7 +83111,7 @@ }, /area/station/hallway/primary/central/aft) "unh" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/effect/turf_decal/tile/green{ dir = 8 }, @@ -86449,7 +86450,7 @@ /area/station/engineering/atmos/project) "vex" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/effect/turf_decal/tile/green, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, @@ -86495,7 +86496,7 @@ /area/station/hallway/primary/fore) "vfN" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/effect/turf_decal/tile/green{ dir = 8 }, @@ -89135,7 +89136,7 @@ /area/station/security/courtroom) "vME" = ( /obj/effect/turf_decal/trimline/green/end, -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/effect/turf_decal/trimline/green/mid_joiner{ dir = 4 }, @@ -92611,7 +92612,7 @@ /turf/open/floor/iron/white, /area/station/medical/paramedic) "wAt" = ( -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /obj/item/cultivator, /obj/effect/decal/cleanable/dirt, /obj/machinery/airalarm/directional/east, @@ -95390,7 +95391,7 @@ /turf/open/floor/iron/dark, /area/station/medical/medbay/lobby) "xns" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/effect/turf_decal/trimline/green/end{ dir = 1 }, @@ -97854,7 +97855,7 @@ /turf/open/floor/iron/dark, /area/station/security/lockers) "xTm" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/effect/turf_decal/tile/blue{ dir = 4 }, @@ -98171,7 +98172,7 @@ /turf/open/floor/iron, /area/station/commons/storage/primary) "xXd" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/effect/turf_decal/tile/blue, /obj/effect/turf_decal/tile/green{ dir = 8 diff --git a/_maps/map_files/IceBoxStation/IceBoxStation.dmm b/_maps/map_files/IceBoxStation/IceBoxStation.dmm index 09037509e070..54b315ed98bd 100644 --- a/_maps/map_files/IceBoxStation/IceBoxStation.dmm +++ b/_maps/map_files/IceBoxStation/IceBoxStation.dmm @@ -329,7 +329,7 @@ /turf/open/floor/iron/smooth, /area/station/security/holding_cell) "ahI" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/effect/turf_decal/trimline/green/filled/line{ dir = 8 }, @@ -3985,7 +3985,7 @@ /turf/closed/wall/r_wall, /area/station/maintenance/department/medical/central) "boV" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/effect/turf_decal/trimline/green/filled/line{ dir = 10 }, @@ -5832,7 +5832,7 @@ /turf/open/floor/plating, /area/station/hallway/secondary/entry) "bRz" = ( -/obj/machinery/hydroponics/soil{ +/obj/machinery/growing/soil{ pixel_y = 8 }, /turf/open/floor/grass, @@ -6735,7 +6735,7 @@ /turf/open/floor/iron, /area/station/engineering/atmos) "cfR" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/effect/decal/cleanable/dirt, /obj/item/seeds/redbeet, /obj/machinery/light/directional/east, @@ -8255,7 +8255,7 @@ /turf/open/floor/iron/white, /area/station/medical/medbay/aft) "cCF" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/structure/window/reinforced/spawner/directional/west, /obj/effect/decal/cleanable/dirt, /obj/item/seeds/carrot, @@ -11337,7 +11337,7 @@ /turf/open/floor/iron, /area/station/engineering/lobby) "dAx" = ( -/obj/machinery/hydroponics/soil{ +/obj/machinery/growing/soil{ pixel_y = 8 }, /obj/item/cultivator/rake, @@ -12548,7 +12548,7 @@ }, /area/station/science/research) "dWK" = ( -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /obj/item/shovel/spade, /turf/open/floor/grass, /area/station/security/prison/garden) @@ -15483,7 +15483,7 @@ /obj/item/seeds/wheat, /obj/item/seeds/watermelon, /obj/structure/table/glass, -/obj/item/seeds/tower, +/obj/item/seeds/tree, /turf/open/floor/iron/dark, /area/station/service/hydroponics/garden) "eUw" = ( @@ -16701,7 +16701,7 @@ }, /area/station/security/prison/safe) "fpA" = ( -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /obj/effect/turf_decal/siding/wideplating/dark{ dir = 1 }, @@ -18497,7 +18497,7 @@ /turf/open/floor/wood, /area/station/security/prison/rec) "fWe" = ( -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /obj/item/plant_analyzer, /turf/open/floor/grass, /area/station/security/prison/garden) @@ -19260,7 +19260,7 @@ /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/aisat/atmos) "giD" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/effect/turf_decal/siding/wideplating/dark{ dir = 1 }, @@ -20029,7 +20029,7 @@ /turf/open/floor/iron, /area/station/science/xenobiology) "gvV" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/item/seeds/soya, /obj/effect/turf_decal/tile/green/half/contrasted{ dir = 4 @@ -22375,7 +22375,7 @@ /turf/open/floor/iron, /area/station/hallway/secondary/entry) "hlP" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/effect/turf_decal/trimline/green/filled/line{ dir = 9 }, @@ -26158,7 +26158,7 @@ /turf/open/floor/plating, /area/station/maintenance/port/aft) "iAA" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/structure/window/reinforced/spawner/directional/west, /obj/item/cultivator, /obj/item/seeds/potato, @@ -27706,7 +27706,7 @@ /obj/effect/turf_decal/siding/wideplating/dark{ dir = 1 }, -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /turf/open/floor/grass, /area/station/maintenance/starboard/fore) "iZz" = ( @@ -33630,7 +33630,7 @@ /turf/open/floor/iron/dark/side, /area/mine/eva) "kTO" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/effect/turf_decal/tile/blue, /obj/effect/turf_decal/tile/green{ dir = 4 @@ -38488,7 +38488,7 @@ /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/ai) "mCT" = ( -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /turf/open/floor/grass, /area/station/service/hydroponics/garden) "mCX" = ( @@ -40178,7 +40178,7 @@ /turf/open/floor/wood, /area/station/security/courtroom) "neM" = ( -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /turf/open/misc/asteroid/snow/icemoon, /area/icemoon/underground/explored) "neR" = ( @@ -40699,7 +40699,7 @@ /turf/open/floor/iron, /area/station/commons/dorms) "nmr" = ( -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /obj/item/cultivator, /obj/effect/spawner/random/contraband/cannabis, /turf/open/floor/grass, @@ -42323,7 +42323,7 @@ /turf/open/misc/asteroid/snow/icemoon, /area/icemoon/underground/explored) "nKn" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/machinery/light/directional/east, /obj/effect/turf_decal/tile/blue, /obj/effect/turf_decal/tile/green{ @@ -45006,7 +45006,7 @@ /turf/open/floor/iron/white, /area/station/maintenance/port/fore) "ozX" = ( -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /turf/open/floor/grass, /area/station/security/prison/garden) "ozZ" = ( @@ -50418,7 +50418,7 @@ /obj/effect/turf_decal/trimline/blue/filled/warning{ dir = 8 }, -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /turf/open/floor/iron/dark, /area/station/service/hydroponics) "qoY" = ( @@ -51439,7 +51439,7 @@ /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/aisat_interior) "qFC" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/effect/turf_decal/siding/wideplating/dark{ dir = 1 }, @@ -52248,7 +52248,7 @@ /turf/open/floor/iron, /area/station/hallway/primary/port) "qSa" = ( -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /obj/machinery/light/directional/west, /obj/structure/sign/poster/contraband/kudzu{ pixel_x = -32 @@ -52970,6 +52970,7 @@ /obj/effect/turf_decal/trimline/blue/filled/warning{ dir = 1 }, +/mob/living/basic/pet/potty, /turf/open/floor/iron/dark, /area/station/service/hydroponics) "rdl" = ( @@ -53951,7 +53952,7 @@ /area/station/security/prison) "rwv" = ( /obj/structure/window/reinforced/spawner/directional/north, -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /obj/machinery/light/directional/east, /turf/open/floor/grass, /area/station/service/hydroponics) @@ -55820,7 +55821,7 @@ /turf/open/floor/iron/smooth_half, /area/station/security/brig/upper) "sbO" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/effect/decal/cleanable/dirt, /obj/item/seeds/onion, /obj/effect/turf_decal/tile/green/anticorner/contrasted, @@ -57835,7 +57836,7 @@ /turf/open/floor/grass, /area/station/service/hydroponics) "sIm" = ( -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /turf/open/floor/grass, /area/station/service/hydroponics) "sIt" = ( @@ -58287,7 +58288,7 @@ /turf/open/floor/iron, /area/station/hallway/primary/starboard) "sRc" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/effect/turf_decal/trimline/green/filled/line{ dir = 10 }, @@ -61733,7 +61734,7 @@ /turf/open/floor/plating/icemoon, /area/icemoon/surface/outdoors/nospawn) "tZd" = ( -/obj/machinery/hydroponics/soil{ +/obj/machinery/growing/soil{ pixel_y = 8 }, /obj/item/shovel/spade, @@ -62840,7 +62841,7 @@ /turf/open/floor/plating, /area/station/maintenance/port/fore) "urt" = ( -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /obj/machinery/light/directional/east, /turf/open/floor/grass, /area/station/service/hydroponics/garden) @@ -65309,7 +65310,7 @@ /turf/open/floor/plating, /area/station/maintenance/aft/greater) "vkg" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/effect/turf_decal/trimline/green/filled/line, /obj/effect/turf_decal/trimline/blue/filled/warning, /turf/open/floor/iron/dark, @@ -68238,7 +68239,7 @@ /turf/open/floor/plating, /area/station/medical/morgue) "whr" = ( -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /obj/item/cultivator, /turf/open/floor/grass, /area/station/security/prison/garden) @@ -69195,7 +69196,7 @@ /turf/open/floor/wood, /area/station/command/heads_quarters/captain) "wwG" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/effect/turf_decal/siding/wideplating/dark{ dir = 1 }, @@ -69681,7 +69682,7 @@ /turf/open/floor/plating, /area/station/maintenance/starboard/upper) "wDs" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/structure/window/reinforced/spawner/directional/west, /obj/effect/decal/cleanable/dirt, /obj/item/plant_analyzer, @@ -73911,7 +73912,7 @@ /obj/effect/turf_decal/trimline/blue/filled/warning{ dir = 10 }, -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /turf/open/floor/iron/dark, /area/station/service/hydroponics) "xVG" = ( diff --git a/_maps/map_files/KiloStation/KiloStation.dmm b/_maps/map_files/KiloStation/KiloStation.dmm index 63d1b8f7a7eb..5069ec2169ee 100644 --- a/_maps/map_files/KiloStation/KiloStation.dmm +++ b/_maps/map_files/KiloStation/KiloStation.dmm @@ -225,7 +225,7 @@ /area/station/security/detectives_office) "acj" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/trimline/blue/line, /obj/effect/turf_decal/trimline/blue/line{ @@ -2221,7 +2221,7 @@ /turf/open/floor/iron/showroomfloor, /area/station/security/lockers) "aJM" = ( -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /obj/item/shovel/spade, /obj/item/cultivator{ pixel_x = 9 @@ -3583,7 +3583,7 @@ /turf/open/floor/iron/showroomfloor, /area/station/science/ordnance/office) "bmn" = ( -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /obj/item/seeds/potato, /obj/structure/cable, /turf/open/floor/grass, @@ -4446,7 +4446,7 @@ /turf/closed/wall, /area/station/cargo/storage) "bBY" = ( -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /obj/item/seeds/watermelon, /turf/open/floor/grass, /area/station/security/prison/garden) @@ -7223,7 +7223,7 @@ /turf/open/floor/plating, /area/station/security/execution/transfer) "cyZ" = ( -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /obj/item/seeds/ambrosia, /turf/open/floor/grass, /area/station/security/prison/garden) @@ -8770,7 +8770,7 @@ /turf/open/floor/iron/dark, /area/station/service/library) "dcF" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/structure/railing{ dir = 8 }, @@ -17619,7 +17619,7 @@ /turf/open/floor/iron/dark, /area/station/maintenance/port/fore) "fSK" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /turf/open/floor/grass, /area/station/service/hydroponics/garden) "fSS" = ( @@ -31327,7 +31327,7 @@ }, /obj/structure/rack, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/item/seeds/tower, +/obj/item/seeds/tree, /obj/item/seeds/watermelon, /obj/item/seeds/wheat, /obj/item/seeds/sugarcane, @@ -31874,7 +31874,7 @@ "kxf" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/effect/turf_decal/trimline/blue/end{ dir = 4 }, @@ -34789,7 +34789,7 @@ /area/station/commons/locker) "lsZ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/trimline/green/end{ dir = 8 @@ -35736,7 +35736,7 @@ /area/station/cargo/storage) "lJJ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/effect/turf_decal/trimline/green/line, /obj/effect/turf_decal/trimline/green/line{ dir = 1 @@ -44607,7 +44607,7 @@ /turf/open/floor/iron/dark, /area/station/science/ordnance) "oQe" = ( -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /turf/open/floor/grass, /area/station/service/hydroponics/garden) "oQg" = ( @@ -46280,7 +46280,7 @@ /area/station/security/detectives_office) "ppH" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/effect/turf_decal/trimline/blue/line, /obj/effect/turf_decal/trimline/blue/line{ dir = 1 @@ -46705,7 +46705,7 @@ /turf/closed/wall/r_wall, /area/station/command/heads_quarters/hop) "pxH" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/structure/railing/corner, /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, @@ -53529,7 +53529,7 @@ /area/station/science/xenobiology) "rJS" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/trimline/green/line, /obj/effect/turf_decal/trimline/green/line{ @@ -53872,8 +53872,8 @@ /turf/open/floor/iron, /area/station/commons/storage/primary) "rOX" = ( -/obj/machinery/hydroponics/constructable, -/obj/item/seeds/tower{ +/obj/machinery/growing/tray, +/obj/item/seeds/tree{ pixel_y = -6 }, /turf/open/floor/plating, @@ -54154,7 +54154,7 @@ /area/station/maintenance/department/electrical) "rSN" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/effect/turf_decal/trimline/green/end{ dir = 8 }, @@ -54395,7 +54395,7 @@ /turf/open/floor/wood, /area/station/service/library) "rYx" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/effect/turf_decal/tile/green{ dir = 1 }, @@ -59294,7 +59294,7 @@ /turf/open/floor/iron/dark, /area/station/construction/mining/aux_base) "tAM" = ( -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /obj/item/seeds/carrot, /turf/open/floor/grass, /area/station/security/prison/garden) @@ -66029,7 +66029,7 @@ /turf/open/floor/plating, /area/station/maintenance/disposal/incinerator) "vJN" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/structure/railing{ dir = 4 }, @@ -66677,7 +66677,7 @@ /turf/open/floor/plating, /area/station/service/chapel/monastery) "vTs" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/item/seeds/apple, /obj/item/reagent_containers/cup/bottle/nutrient/l4z, /obj/effect/decal/cleanable/dirt, @@ -68685,7 +68685,7 @@ /turf/open/floor/carpet/blue, /area/station/command/heads_quarters/hop) "wzp" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/structure/railing/corner{ dir = 8 }, @@ -70208,7 +70208,7 @@ "wYk" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/effect/turf_decal/trimline/blue/end{ dir = 4 }, @@ -70677,7 +70677,7 @@ /turf/open/floor/plating, /area/station/maintenance/aft) "xhI" = ( -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /obj/item/shovel/spade, /obj/item/cultivator{ pixel_x = 8 diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index 848b92cedae6..25f1ced0bbd8 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -1848,7 +1848,7 @@ /turf/open/floor/iron, /area/station/construction/storage_wing) "aII" = ( -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /obj/item/cultivator, /obj/effect/decal/cleanable/dirt, /turf/open/floor/grass, @@ -4406,7 +4406,7 @@ /turf/open/floor/iron/dark, /area/station/engineering/transit_tube) "byW" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/effect/turf_decal/bot, /turf/open/floor/iron, /area/station/service/hydroponics) @@ -9738,7 +9738,7 @@ /turf/open/floor/wood, /area/station/command/heads_quarters/captain/private) "dJo" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/effect/turf_decal/bot, /obj/machinery/airalarm/directional/east, /obj/machinery/light/directional/east, @@ -10526,7 +10526,7 @@ /turf/open/floor/iron, /area/station/hallway/secondary/entry) "dXP" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/effect/turf_decal/bot, /turf/open/floor/iron/dark, /area/station/service/hydroponics) @@ -22119,7 +22119,7 @@ /turf/open/floor/iron, /area/station/commons/dorms) "ikw" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/effect/turf_decal/bot, /obj/structure/cable, /obj/structure/disposalpipe/segment, @@ -22207,7 +22207,7 @@ /turf/open/floor/iron, /area/station/engineering/atmos) "ilg" = ( -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /obj/effect/decal/cleanable/dirt, /obj/structure/cable, /turf/open/floor/grass, @@ -22622,7 +22622,7 @@ /turf/open/floor/iron, /area/station/hallway/primary/starboard) "irh" = ( -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /obj/machinery/camera/directional/west{ c_tag = "Prison Forestry"; network = list("ss13","prison") @@ -26555,7 +26555,7 @@ /turf/open/floor/grass, /area/station/medical/pathology) "jBY" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/effect/turf_decal/bot, /turf/open/floor/iron, /area/station/service/hydroponics/garden) @@ -33398,7 +33398,7 @@ /turf/open/floor/plating, /area/station/maintenance/aft/lesser) "lXl" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/effect/turf_decal/bot, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, @@ -40177,7 +40177,7 @@ /turf/open/floor/plating/airless, /area/space/nearstation) "opF" = ( -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /obj/item/cultivator, /obj/effect/decal/cleanable/dirt, /obj/structure/cable, @@ -50882,7 +50882,7 @@ }, /area/station/medical/medbay/lobby) "sbX" = ( -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /obj/effect/decal/cleanable/dirt, /obj/structure/cable, /obj/item/plant_analyzer, @@ -54132,7 +54132,7 @@ /turf/open/floor/wood, /area/station/commons/dorms) "tjf" = ( -/obj/machinery/hydroponics/soil{ +/obj/machinery/growing/soil{ pixel_y = 8 }, /obj/effect/turf_decal/stripes/line{ @@ -54675,7 +54675,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 8 }, -/obj/machinery/hydroponics/soil{ +/obj/machinery/growing/soil{ pixel_y = 8 }, /obj/effect/spawner/random/food_or_drink/seed, @@ -54822,7 +54822,7 @@ /turf/open/floor/iron/white, /area/station/medical/treatment_center) "tuG" = ( -/obj/machinery/hydroponics/soil{ +/obj/machinery/growing/soil{ pixel_y = 8 }, /obj/effect/turf_decal/stripes/line{ @@ -62734,7 +62734,7 @@ /turf/open/floor/iron, /area/station/service/hydroponics) "wlj" = ( -/obj/machinery/hydroponics/soil{ +/obj/machinery/growing/soil{ pixel_y = 8 }, /obj/item/food/grown/harebell, @@ -63349,7 +63349,7 @@ /turf/open/floor/plating, /area/station/maintenance/aft/greater) "wyn" = ( -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /obj/item/shovel/spade, /obj/effect/decal/cleanable/dirt, /turf/open/floor/grass, @@ -64668,6 +64668,7 @@ /obj/effect/turf_decal/tile/blue, /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/delivery, +/mob/living/basic/pet/potty, /turf/open/floor/iron, /area/station/service/hydroponics) "wVW" = ( @@ -64924,7 +64925,7 @@ /turf/open/floor/iron, /area/station/hallway/secondary/entry) "xaG" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/effect/turf_decal/bot, /obj/machinery/firealarm/directional/east, /turf/open/floor/iron/dark, diff --git a/_maps/map_files/Mining/Lavaland.dmm b/_maps/map_files/Mining/Lavaland.dmm index 69cf4ecfe203..34d550810cdb 100644 --- a/_maps/map_files/Mining/Lavaland.dmm +++ b/_maps/map_files/Mining/Lavaland.dmm @@ -2306,7 +2306,7 @@ }, /area/mine/medical) "mP" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/structure/window/spawner/directional/west, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/trimline/green/filled/line{ @@ -3892,7 +3892,7 @@ /obj/effect/turf_decal/trimline/green/filled/corner{ dir = 4 }, -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/item/seeds/tomato, /turf/open/floor/iron/dark, /area/mine/laborcamp) @@ -3987,7 +3987,7 @@ /area/mine/lounge) "wr" = ( /obj/item/seeds/plump, -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /turf/open/misc/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "wt" = ( @@ -4000,7 +4000,7 @@ /turf/open/floor/iron/dark/smooth_edge, /area/mine/production) "wu" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/trimline/green/filled/line{ dir = 5 @@ -7417,7 +7417,7 @@ /turf/open/floor/iron/large, /area/mine/lounge) "Sn" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/machinery/airalarm/directional/west, /obj/effect/turf_decal/trimline/green/filled/line{ dir = 9 @@ -7458,7 +7458,7 @@ }, /area/mine/laborcamp/security) "Sz" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/machinery/light/small/directional/west, /obj/effect/turf_decal/trimline/green/filled/line{ dir = 8 @@ -7919,7 +7919,7 @@ }, /area/mine/laborcamp) "Vm" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/structure/window/spawner/directional/west, /obj/machinery/light/small/directional/north, /obj/effect/turf_decal/trimline/green/filled/line{ @@ -8027,7 +8027,7 @@ /turf/open/floor/plating, /area/mine/maintenance/labor) "VS" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/trimline/green/filled/line{ dir = 4 @@ -8331,7 +8331,7 @@ /turf/open/misc/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "XJ" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/structure/window/spawner/directional/west, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/trimline/green/filled/line{ diff --git a/_maps/map_files/Mining/Oshan.dmm b/_maps/map_files/Mining/Oshan.dmm index 6bc35bec685c..d61005b96f37 100644 --- a/_maps/map_files/Mining/Oshan.dmm +++ b/_maps/map_files/Mining/Oshan.dmm @@ -323,7 +323,7 @@ /turf/open/floor/iron/dark, /area/station/security/prison) "nl" = ( -/obj/machinery/hydroponics, +/obj/machinery/growing, /obj/machinery/light/directional/east, /turf/open/floor/iron/white, /area/station/security/prison/garden) @@ -422,7 +422,7 @@ /turf/open/floor/plating, /area/station/security/prison/visit) "qL" = ( -/obj/machinery/hydroponics, +/obj/machinery/growing, /obj/machinery/power/apc/auto_name/directional/west, /obj/structure/cable, /turf/open/floor/iron, @@ -437,7 +437,7 @@ /turf/open/floor/iron, /area/station/security/prison/mess) "rA" = ( -/obj/machinery/hydroponics, +/obj/machinery/growing, /turf/open/floor/iron/white, /area/station/security/prison/garden) "rN" = ( @@ -837,7 +837,7 @@ /turf/closed/wall, /area/station/security/prison/rec) "Jk" = ( -/obj/machinery/hydroponics, +/obj/machinery/growing, /obj/machinery/light/directional/west, /turf/open/floor/iron, /area/station/security/prison/garden) @@ -845,7 +845,7 @@ /turf/closed/wall, /area/mine/production) "Kc" = ( -/obj/machinery/hydroponics, +/obj/machinery/growing, /obj/machinery/airalarm/directional/south, /turf/open/floor/iron, /area/station/security/prison/garden) @@ -890,7 +890,7 @@ /turf/open/floor/iron/dark, /area/station/security/prison/rec) "Np" = ( -/obj/machinery/hydroponics, +/obj/machinery/growing, /obj/machinery/camera/autoname/directional/north, /turf/open/floor/iron/white, /area/station/security/prison/garden) @@ -994,7 +994,7 @@ /turf/open/floor/iron/white, /area/station/security/prison) "Rx" = ( -/obj/machinery/hydroponics, +/obj/machinery/growing, /turf/open/floor/iron, /area/station/security/prison/garden) "Sq" = ( diff --git a/_maps/map_files/NorthStar/north_star.dmm b/_maps/map_files/NorthStar/north_star.dmm index 056d85d90db0..854bab378a66 100644 --- a/_maps/map_files/NorthStar/north_star.dmm +++ b/_maps/map_files/NorthStar/north_star.dmm @@ -822,7 +822,7 @@ /area/space/nearstation) "akl" = ( /obj/machinery/status_display/evac/directional/north, -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /turf/open/floor/iron/white, /area/station/science/research/abandoned) "akr" = ( @@ -5299,7 +5299,7 @@ /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/aisat/hallway) "boB" = ( -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /obj/item/shovel/spade, /turf/open/misc/dirt/jungle, /area/station/security/prison/garden) @@ -13684,7 +13684,7 @@ /turf/open/floor/catwalk_floor, /area/station/maintenance/floor2/starboard/fore) "dAr" = ( -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /obj/machinery/camera/directional/west{ c_tag = "Prison Forestry"; network = list("ss13","prison") @@ -17453,7 +17453,7 @@ /area/station/hallway/secondary/entry) "eAv" = ( /obj/effect/turf_decal/bot, -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /turf/open/floor/iron/dark, /area/station/service/hydroponics/garden) "eAE" = ( @@ -18300,7 +18300,7 @@ dir = 8 }, /obj/machinery/airalarm/directional/south, -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /turf/open/floor/iron/white, /area/station/cargo/miningdock) "eNS" = ( @@ -19932,7 +19932,7 @@ "fnB" = ( /obj/effect/turf_decal/bot, /obj/machinery/light/small/directional/west, -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /turf/open/floor/iron/dark, /area/station/service/hydroponics/garden) "fnJ" = ( @@ -21745,7 +21745,7 @@ /area/station/hallway/floor2/fore) "fNg" = ( /obj/effect/turf_decal/tile/green/full, -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /turf/open/floor/iron, /area/station/service/hydroponics) "fNh" = ( @@ -22866,7 +22866,7 @@ "gbW" = ( /obj/effect/turf_decal/bot, /obj/machinery/firealarm/directional/west, -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /turf/open/floor/iron/dark, /area/station/service/hydroponics/garden) "gbZ" = ( @@ -23121,7 +23121,7 @@ "gfI" = ( /obj/effect/turf_decal/bot, /obj/machinery/light_switch/directional/east, -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /turf/open/floor/iron/dark, /area/station/service/hydroponics/garden) "gfP" = ( @@ -23245,7 +23245,7 @@ /obj/effect/turf_decal/stripes/line, /obj/machinery/firealarm/directional/west, /obj/structure/window/reinforced/spawner/directional/south, -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /turf/open/floor/iron/white, /area/station/science/research/abandoned) "ghF" = ( @@ -25459,7 +25459,7 @@ "gOd" = ( /obj/effect/turf_decal/bot, /obj/machinery/camera/autoname/directional/west, -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /turf/open/floor/iron/dark, /area/station/service/hydroponics/garden) "gOf" = ( @@ -29877,7 +29877,7 @@ /obj/effect/turf_decal/trimline/green/filled/line{ dir = 6 }, -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /turf/open/floor/iron, /area/station/service/hydroponics) "iaS" = ( @@ -32703,7 +32703,7 @@ /turf/open/floor/iron, /area/station/hallway/floor2/aft) "iQF" = ( -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /obj/item/plant_analyzer, /turf/open/misc/dirt/jungle, /area/station/security/prison/garden) @@ -36698,7 +36698,7 @@ /turf/open/floor/iron/dark, /area/station/maintenance/floor2/starboard/aft) "jSa" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /turf/open/floor/iron, /area/station/maintenance/floor1/port/aft) "jSt" = ( @@ -39655,7 +39655,7 @@ "kHN" = ( /obj/effect/turf_decal/tile/purple, /obj/machinery/camera/autoname/directional/east, -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /turf/open/floor/iron/white, /area/station/cargo/miningdock) "kHO" = ( @@ -50304,7 +50304,7 @@ /area/station/science/breakroom) "nof" = ( /obj/item/seeds/coffee, -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /turf/open/misc/sandy_dirt, /area/station/maintenance/floor3/starboard) "noh" = ( @@ -55126,7 +55126,7 @@ "ozF" = ( /obj/effect/turf_decal/bot, /obj/machinery/light/small/directional/east, -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /turf/open/floor/iron/dark, /area/station/service/hydroponics/garden) "ozJ" = ( @@ -58347,7 +58347,7 @@ dir = 4 }, /obj/machinery/newscaster/directional/east, -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /turf/open/floor/iron, /area/station/service/hydroponics) "pwL" = ( @@ -59079,7 +59079,7 @@ /area/station/command/teleporter) "pHe" = ( /obj/structure/flora/bush/sparsegrass/style_random, -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /turf/open/floor/grass, /area/station/service/hydroponics/garden/abandoned) "pHf" = ( @@ -60547,7 +60547,7 @@ /obj/effect/turf_decal/weather/dirt{ dir = 4 }, -/obj/machinery/hydroponics/constructable{ +/obj/machinery/growing/tray{ anchored = 0 }, /turf/open/floor/iron, @@ -61056,7 +61056,7 @@ /area/station/service/chapel/funeral) "qkx" = ( /obj/machinery/newscaster/directional/east, -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /turf/open/floor/iron/white, /area/station/cargo/miningdock) "qkz" = ( @@ -61794,7 +61794,7 @@ "qtR" = ( /obj/structure/flora/bush/sparsegrass/style_random, /obj/machinery/light/broken/directional/south, -/obj/machinery/hydroponics/constructable{ +/obj/machinery/growing/tray{ anchored = 0 }, /turf/open/floor/grass, @@ -66028,7 +66028,7 @@ /area/station/hallway/floor4/fore) "ryQ" = ( /obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /turf/open/floor/plating, /area/station/maintenance/floor4/starboard) "rza" = ( @@ -72988,7 +72988,7 @@ "tzD" = ( /obj/structure/flora/bush/sparsegrass/style_random, /obj/structure/flora/bush/lavendergrass/style_random, -/obj/machinery/hydroponics/constructable{ +/obj/machinery/growing/tray{ anchored = 0 }, /turf/open/floor/grass, @@ -75286,7 +75286,7 @@ "uiE" = ( /obj/structure/cable, /obj/effect/turf_decal/tile/green/full, -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /turf/open/floor/iron, /area/station/service/hydroponics) "uiH" = ( @@ -77616,7 +77616,7 @@ /turf/open/floor/iron/white/small, /area/station/medical/chemistry) "uRy" = ( -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /obj/item/radio/intercom/prison/directional/west, /turf/open/misc/dirt/jungle, /area/station/security/prison/garden) @@ -80732,7 +80732,7 @@ /turf/open/floor/plating, /area/station/maintenance/disposal/incinerator) "vHE" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/maintenance/floor1/port/aft) @@ -86121,7 +86121,7 @@ /turf/open/floor/iron/white, /area/station/hallway/floor2/fore) "xaW" = ( -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /obj/item/cultivator, /obj/structure/sign/poster/official/random/directional/north, /turf/open/misc/dirt/jungle, @@ -87173,7 +87173,7 @@ /obj/machinery/airalarm/directional/east, /obj/effect/decal/cleanable/dirt, /obj/item/seeds/apple, -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /turf/open/floor/grass, /area/station/service/library/garden) "xpQ" = ( diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm index e5b29c800e85..27b121a28db0 100644 --- a/_maps/map_files/generic/CentCom.dmm +++ b/_maps/map_files/generic/CentCom.dmm @@ -37,6 +37,10 @@ }, /turf/open/floor/wood/large, /area/centcom/central_command_areas/kitchen) +"ag" = ( +/obj/structure/hive_exit, +/turf/closed/indestructible/hive, +/area/station/hive/one) "ah" = ( /obj/effect/turf_decal/siding/thinplating_new/dark{ dir = 10 @@ -216,7 +220,7 @@ /turf/open/floor/iron/dark/herringbone, /area/centcom/central_command_areas/supply) "aG" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/effect/turf_decal/trimline/blue, /turf/open/floor/iron/dark, /area/centcom/central_command_areas/botany) @@ -772,12 +776,7 @@ /obj/effect/turf_decal/siding/wood{ dir = 1 }, -/obj/machinery/hydroponics/constructable{ - self_growing = 1; - self_sustaining = 1; - sustaining_precent = 100; - multi = 15 - }, +/obj/machinery/growing/tray, /turf/open/floor/wood/large, /area/centcom/central_command_areas/botany) "cd" = ( @@ -1574,7 +1573,7 @@ /obj/effect/turf_decal/siding/wood{ dir = 1 }, -/obj/machinery/hydroponics, +/obj/machinery/growing, /obj/item/seeds/pumpkin, /turf/open/floor/carpet/red, /area/centcom/central_command_areas/admin) @@ -1672,7 +1671,7 @@ /turf/open/floor/iron/dark, /area/centcom/tdome/observation) "ex" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /turf/open/floor/mineral/titanium/tiled, /area/centcom/syndicate_mothership/expansion_bioterrorism) "ey" = ( @@ -2138,10 +2137,6 @@ /obj/machinery/light/directional/east, /turf/open/floor/iron/dark/herringbone, /area/centcom/central_command_areas/hall) -"fZ" = ( -/obj/effect/landmark/ctf, -/turf/open/space/basic, -/area/space) "ga" = ( /obj/machinery/atmospherics/pipe/heat_exchanging/simple, /turf/closed/indestructible/syndicate, @@ -2820,7 +2815,7 @@ /area/centcom/central_command_areas/admin) "hS" = ( /obj/structure/window/reinforced/survival_pod/spawner/directional/east, -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /turf/open/floor/mineral/titanium/tiled, /area/centcom/syndicate_mothership/expansion_bioterrorism) "hT" = ( @@ -3241,7 +3236,7 @@ /area/centcom/syndicate_mothership/control) "jf" = ( /obj/machinery/light/floor/has_bulb, -/obj/machinery/hydroponics/constructable/helper, +/obj/machinery/growing/tray, /obj/effect/turf_decal/trimline/green/line{ dir = 8 }, @@ -3599,7 +3594,7 @@ /turf/open/floor/iron/dark, /area/centcom/central_command_areas/botany) "kh" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/effect/turf_decal/trimline/green/line{ dir = 5 }, @@ -4236,6 +4231,9 @@ /obj/machinery/light/floor/has_bulb, /turf/open/floor/mineral/plastitanium, /area/centcom/syndicate_mothership/control) +"lV" = ( +/turf/open/indestructible/hive, +/area/station/hive/four) "lW" = ( /obj/effect/turf_decal/siding/thinplating_new/dark, /obj/machinery/camera/autoname/directional/south{ @@ -5261,6 +5259,9 @@ }, /turf/open/floor/mineral/plastitanium, /area/centcom/syndicate_mothership/control) +"oR" = ( +/turf/closed/indestructible/hive, +/area/station/hive/three) "oS" = ( /obj/effect/turf_decal/siding/thinplating_new/dark, /turf/open/floor/mineral/plastitanium, @@ -6279,6 +6280,9 @@ /obj/effect/turf_decal/trimline/red, /turf/open/floor/mineral/plastitanium, /area/centcom/syndicate_mothership/expansion_chemicalwarfare) +"rD" = ( +/turf/closed/indestructible/hive, +/area/station/hive/two) "rE" = ( /obj/structure/table/reinforced, /obj/item/radio, @@ -6482,7 +6486,7 @@ /turf/open/floor/mineral/titanium/white, /area/centcom/central_command_areas/admin) "si" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/machinery/light/cold/directional/west, /obj/item/seeds/cannabis{ pixel_y = 8 @@ -8864,7 +8868,7 @@ /turf/open/floor/wood, /area/centcom/wizard_station) "yG" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/effect/turf_decal/trimline/green/line{ dir = 10 }, @@ -9964,6 +9968,10 @@ /obj/structure/fake_stairs/wood/directional/south, /turf/open/floor/wood/large, /area/centcom/central_command_areas/kitchen) +"BF" = ( +/obj/structure/hive_exit, +/turf/closed/indestructible/hive, +/area/station/hive/two) "BG" = ( /obj/structure/fence{ dir = 4 @@ -10110,6 +10118,9 @@ }, /turf/open/floor/wood/parquet, /area/centcom/central_command_areas/borbop) +"BZ" = ( +/turf/open/indestructible/hive, +/area/station/hive/one) "Cb" = ( /obj/effect/turf_decal/siding/wood, /obj/structure/sign{ @@ -10749,6 +10760,9 @@ }, /turf/open/floor/wood/parquet, /area/centcom/central_command_areas/borbop) +"DW" = ( +/turf/open/indestructible/hive, +/area/station/hive/three) "DX" = ( /obj/machinery/light/directional/north, /obj/effect/turf_decal/siding/dark{ @@ -10889,6 +10903,10 @@ }, /turf/open/floor/iron/dark/textured_large, /area/centcom/syndicate_mothership/control) +"Et" = ( +/obj/structure/hive_exit, +/turf/closed/indestructible/hive, +/area/station/hive/three) "Eu" = ( /obj/effect/decal/cleanable/blood/splatter, /obj/effect/decal/cleanable/blood/gibs/body, @@ -11164,7 +11182,7 @@ /area/centcom/central_command_areas/evacuation/ship) "Fg" = ( /obj/machinery/light/floor/has_bulb, -/obj/machinery/hydroponics/constructable/helper, +/obj/machinery/growing/tray, /obj/effect/turf_decal/trimline/green/line{ dir = 4 }, @@ -11777,12 +11795,7 @@ /obj/effect/turf_decal/siding/wood{ dir = 5 }, -/obj/machinery/hydroponics/constructable{ - self_growing = 1; - self_sustaining = 1; - sustaining_precent = 100; - multi = 15 - }, +/obj/machinery/growing/tray, /turf/open/floor/wood/large, /area/centcom/central_command_areas/botany) "GS" = ( @@ -12043,6 +12056,9 @@ }, /turf/open/floor/iron/dark/herringbone, /area/centcom/central_command_areas/borbop) +"HE" = ( +/turf/open/indestructible/hive, +/area/station/hive/two) "HF" = ( /obj/structure/flora/rock/icy/style_random, /turf/open/misc/asteroid/snow/airless, @@ -12722,7 +12738,7 @@ /turf/open/floor/iron/dark/textured_large, /area/centcom/central_command_areas/evacuation/ship) "JF" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /turf/open/floor/iron/dark, /area/centcom/central_command_areas/botany) "JG" = ( @@ -14263,7 +14279,7 @@ /turf/open/floor/stone, /area/centcom/central_command_areas/evacuation/ship) "NJ" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/effect/turf_decal/trimline/green/line{ dir = 6 }, @@ -14302,6 +14318,9 @@ /obj/machinery/door/airlock/centcom, /turf/open/floor/wood/large, /area/centcom/central_command_areas/evacuation) +"NP" = ( +/turf/closed/indestructible/hive, +/area/station/hive/one) "NQ" = ( /obj/structure/bookcase/random, /obj/machinery/light/directional/north, @@ -14343,6 +14362,10 @@ }, /turf/open/floor/wood/large, /area/centcom/central_command_areas/hall) +"NX" = ( +/obj/structure/hive_exit, +/turf/closed/indestructible/hive, +/area/station/hive/four) "NY" = ( /obj/effect/turf_decal/siding/wideplating/dark, /obj/effect/turf_decal/siding/wideplating/dark{ @@ -16387,7 +16410,7 @@ /turf/open/floor/iron, /area/centcom/central_command_areas/ferry) "TL" = ( -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /turf/open/misc/snow/actually_safe, /area/centcom/central_command_areas/admin) "TM" = ( @@ -16684,7 +16707,7 @@ /turf/closed/indestructible/syndicate, /area/centcom/syndicate_mothership/control) "UF" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/effect/turf_decal/trimline/green/line{ dir = 9 }, @@ -17063,6 +17086,9 @@ }, /turf/open/floor/wood/large, /area/centcom/central_command_areas/borbop) +"VG" = ( +/turf/closed/indestructible/hive, +/area/station/hive/four) "VH" = ( /obj/effect/turf_decal/siding/wood{ dir = 5 @@ -17410,12 +17436,7 @@ /obj/effect/turf_decal/siding/wood{ dir = 9 }, -/obj/machinery/hydroponics/constructable{ - self_growing = 1; - self_sustaining = 1; - sustaining_precent = 100; - multi = 15 - }, +/obj/machinery/growing/tray, /turf/open/floor/wood/large, /area/centcom/central_command_areas/botany) "WK" = ( @@ -66727,7 +66748,7 @@ aa aa aa aa -fZ +aa aa aa aa @@ -80278,21 +80299,21 @@ aa aa "} (241,1,1) = {" +NP +NP +NP +ag +NP +NP +NP aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +rD +rD +rD +BF +rD +rD +rD aa aa aa @@ -80535,21 +80556,21 @@ aa aa "} (242,1,1) = {" +NP +BZ +BZ +BZ +BZ +BZ +NP aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +rD +HE +HE +HE +HE +HE +rD aa aa aa @@ -80792,21 +80813,21 @@ aa aa "} (243,1,1) = {" +NP +BZ +BZ +BZ +BZ +BZ +NP aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +rD +HE +HE +HE +HE +HE +rD aa aa aa @@ -81049,21 +81070,21 @@ aa aa "} (244,1,1) = {" +NP +BZ +BZ +BZ +BZ +BZ +NP aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +rD +HE +HE +HE +HE +HE +rD aa aa aa @@ -81306,21 +81327,21 @@ aa aa "} (245,1,1) = {" +NP +BZ +BZ +BZ +BZ +BZ +NP aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +rD +HE +HE +HE +HE +HE +rD aa aa aa @@ -81563,21 +81584,21 @@ aa aa "} (246,1,1) = {" +NP +BZ +BZ +BZ +BZ +BZ +NP aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +rD +HE +HE +HE +HE +HE +rD aa aa aa @@ -81820,21 +81841,21 @@ aa aa "} (247,1,1) = {" +NP +NP +NP +NP +NP +NP +NP aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +rD +rD +rD +rD +rD +rD +rD aa aa aa @@ -82334,21 +82355,21 @@ aa aa "} (249,1,1) = {" +oR +oR +oR +Et +oR +oR +oR aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +VG +VG +VG +NX +VG +VG +VG aa aa aa @@ -82591,21 +82612,21 @@ aa aa "} (250,1,1) = {" +oR +DW +DW +DW +DW +DW +oR aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +VG +lV +lV +lV +lV +lV +VG aa aa aa @@ -82848,21 +82869,21 @@ aa aa "} (251,1,1) = {" +oR +DW +DW +DW +DW +DW +oR aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +VG +lV +lV +lV +lV +lV +VG aa aa aa @@ -83105,21 +83126,21 @@ aa aa "} (252,1,1) = {" +oR +DW +DW +DW +DW +DW +oR aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +VG +lV +lV +lV +lV +lV +VG aa aa aa @@ -83362,21 +83383,21 @@ aa aa "} (253,1,1) = {" +oR +DW +DW +DW +DW +DW +oR aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +VG +lV +lV +lV +lV +lV +VG aa aa aa @@ -83619,21 +83640,21 @@ aa aa "} (254,1,1) = {" +oR +DW +DW +DW +DW +DW +oR aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +VG +lV +lV +lV +lV +lV +VG aa aa aa @@ -83876,21 +83897,21 @@ aa aa "} (255,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +oR +oR +oR +oR +oR +oR +oR +aa +VG +VG +VG +VG +VG +VG +VG aa aa aa diff --git a/_maps/map_files/tramstation/tramstation.dmm b/_maps/map_files/tramstation/tramstation.dmm index c39aa9b56578..eac92289e047 100644 --- a/_maps/map_files/tramstation/tramstation.dmm +++ b/_maps/map_files/tramstation/tramstation.dmm @@ -1170,7 +1170,7 @@ /turf/open/floor/iron, /area/station/escapepodbay) "adw" = ( -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /obj/machinery/power/apc/auto_name/directional/east, /obj/effect/turf_decal/trimline/green/filled/line{ dir = 6 @@ -15956,6 +15956,7 @@ /area/station/medical/treatment_center) "dXA" = ( /obj/structure/cable, +/mob/living/basic/pet/potty, /turf/open/floor/iron/dark, /area/station/service/hydroponics) "dXC" = ( @@ -18712,7 +18713,7 @@ /turf/open/floor/catwalk_floor, /area/station/maintenance/port/aft) "eRw" = ( -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /obj/machinery/firealarm/directional/west, /obj/effect/turf_decal/trimline/green/filled/line{ dir = 9 @@ -19402,7 +19403,7 @@ /turf/open/floor/iron/dark, /area/station/security/courtroom) "feC" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/effect/turf_decal/trimline/green/line{ dir = 1 }, @@ -29946,7 +29947,7 @@ /obj/item/seeds/wheat, /obj/item/seeds/pumpkin, /obj/effect/spawner/random/contraband/prison, -/obj/item/seeds/tower, +/obj/item/seeds/tree, /turf/open/floor/iron, /area/station/security/prison/garden) "iHH" = ( @@ -40015,7 +40016,7 @@ /turf/open/misc/asteroid/dug, /area/station/maintenance/starboard/lesser) "lQx" = ( -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /obj/machinery/status_display/ai/directional/south, /obj/effect/turf_decal/trimline/green/filled/line, /obj/item/cultivator, @@ -41547,7 +41548,7 @@ /turf/open/floor/iron, /area/station/hallway/primary/tram/center) "moV" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /turf/open/floor/iron/dark, /area/station/service/hydroponics) "moX" = ( @@ -41583,7 +41584,7 @@ /turf/open/floor/iron, /area/station/hallway/secondary/construction/engineering) "mpw" = ( -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /turf/open/floor/grass, /area/station/service/hydroponics/garden) "mpz" = ( @@ -47816,7 +47817,7 @@ /turf/open/floor/glass/reinforced, /area/station/security/brig) "otn" = ( -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /obj/machinery/status_display/evac/directional/north, /obj/effect/turf_decal/trimline/green/filled/line{ dir = 1 @@ -50688,7 +50689,7 @@ /obj/effect/turf_decal/trimline/green/line{ dir = 1 }, -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /turf/open/floor/iron/dark, /area/station/service/hydroponics) "ptT" = ( @@ -53485,7 +53486,7 @@ /turf/open/floor/iron/white, /area/station/medical/pathology) "qjG" = ( -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /obj/effect/turf_decal/trimline/green/filled/line{ dir = 10 }, @@ -56845,7 +56846,7 @@ /turf/open/floor/plating, /area/station/science/xenobiology) "rkP" = ( -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /obj/effect/turf_decal/trimline/green/filled/line, /obj/effect/turf_decal/trimline/neutral/filled/corner{ dir = 4 @@ -59150,7 +59151,7 @@ /turf/open/floor/iron, /area/station/security/prison) "rZI" = ( -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /obj/effect/turf_decal/trimline/green/filled/line{ dir = 1 }, @@ -63671,7 +63672,7 @@ /turf/open/floor/iron, /area/station/engineering/atmos) "tsw" = ( -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /obj/machinery/airalarm/directional/east, /obj/effect/turf_decal/trimline/green/filled/line{ dir = 5 @@ -63742,7 +63743,7 @@ /turf/open/floor/engine, /area/station/science/xenobiology) "tto" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/effect/turf_decal/trimline/green/line{ dir = 1 }, @@ -72450,7 +72451,7 @@ /area/station/commons/fitness/recreation) "wed" = ( /obj/structure/window/reinforced/spawner/directional/north, -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /turf/open/floor/grass, /area/station/service/hydroponics) "wei" = ( @@ -75475,7 +75476,7 @@ /turf/open/floor/engine, /area/station/science/ordnance/burnchamber) "xet" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /turf/open/floor/grass, /area/station/service/hydroponics) "xez" = ( @@ -77097,7 +77098,7 @@ /area/station/command/meeting_room) "xIu" = ( /obj/structure/window/reinforced/spawner/directional/south, -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /turf/open/floor/grass, /area/station/service/hydroponics) "xIL" = ( diff --git a/_maps/shuttles/emergency_monastery.dmm b/_maps/shuttles/emergency_monastery.dmm index c497f1150c3c..7380fe8fe3ff 100644 --- a/_maps/shuttles/emergency_monastery.dmm +++ b/_maps/shuttles/emergency_monastery.dmm @@ -181,7 +181,7 @@ /turf/open/floor/iron/dark, /area/shuttle/escape) "bK" = ( -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /obj/item/seeds/watermelon/holy, /turf/open/floor/grass, /area/shuttle/escape) @@ -865,7 +865,7 @@ /turf/open/floor/iron/dark, /area/shuttle/escape) "mQ" = ( -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /obj/machinery/light/small/directional/north, /obj/item/seeds/watermelon/holy, /turf/open/floor/grass, @@ -2144,7 +2144,7 @@ /turf/open/floor/iron/dark, /area/shuttle/escape) "EL" = ( -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /obj/item/seeds/carrot, /turf/open/floor/grass, /area/shuttle/escape) @@ -2155,7 +2155,7 @@ /turf/open/floor/grass, /area/shuttle/escape) "EU" = ( -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /obj/item/seeds/wheat, /obj/machinery/light/small/directional/west, /turf/open/floor/grass, @@ -2267,7 +2267,7 @@ /turf/open/floor/iron/dark, /area/shuttle/escape) "Gk" = ( -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /obj/item/seeds/harebell, /turf/open/floor/grass, /area/shuttle/escape) @@ -2349,7 +2349,7 @@ /turf/open/floor/iron/chapel, /area/shuttle/escape) "HL" = ( -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /obj/item/seeds/poppy, /turf/open/floor/grass, /area/shuttle/escape) @@ -2951,7 +2951,7 @@ /turf/open/floor/iron/dark, /area/shuttle/escape) "Py" = ( -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /obj/item/seeds/sugarcane, /turf/open/floor/grass, /area/shuttle/escape) @@ -3084,7 +3084,7 @@ /turf/open/floor/carpet, /area/shuttle/escape) "Rd" = ( -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /obj/machinery/light/small/directional/south, /obj/item/seeds/poppy, /turf/open/floor/grass, @@ -3174,7 +3174,7 @@ /turf/open/floor/iron, /area/shuttle/escape) "RZ" = ( -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /obj/item/seeds/sugarcane, /obj/machinery/light/small/directional/east, /turf/open/floor/grass, @@ -3460,7 +3460,7 @@ /turf/open/floor/iron/dark, /area/shuttle/escape) "UC" = ( -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /obj/item/seeds/wheat, /turf/open/floor/grass, /area/shuttle/escape) diff --git a/_maps/shuttles/emergency_nature.dmm b/_maps/shuttles/emergency_nature.dmm index 10cc53aebff3..f113af4cc80e 100644 --- a/_maps/shuttles/emergency_nature.dmm +++ b/_maps/shuttles/emergency_nature.dmm @@ -205,7 +205,7 @@ /area/shuttle/escape) "gR" = ( /obj/effect/turf_decal/weather/dirt, -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /turf/open/floor/grass, /area/shuttle/escape) "ht" = ( @@ -1119,7 +1119,7 @@ /obj/effect/turf_decal/weather/dirt{ dir = 1 }, -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /turf/open/floor/grass, /area/shuttle/escape) "TH" = ( @@ -1320,7 +1320,7 @@ /turf/open/floor/iron/white, /area/shuttle/escape) "ZL" = ( -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /obj/item/seeds/banana, /turf/open/floor/grass, /area/shuttle/escape) diff --git a/_maps/shuttles/whiteship_meta.dmm b/_maps/shuttles/whiteship_meta.dmm index 0e3c921935f6..ae5b59b08897 100644 --- a/_maps/shuttles/whiteship_meta.dmm +++ b/_maps/shuttles/whiteship_meta.dmm @@ -1201,7 +1201,7 @@ /area/shuttle/abandoned/bar) "dm" = ( /obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/effect/decal/cleanable/dirt/dust, /obj/machinery/light/small/directional/west, /obj/effect/turf_decal/tile/green/half/contrasted, @@ -1507,7 +1507,7 @@ "ef" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/machinery/light/small/built/directional/west, -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/effect/decal/cleanable/dirt/dust, /obj/effect/turf_decal/tile/green/half/contrasted{ dir = 1 @@ -1760,7 +1760,7 @@ /area/shuttle/abandoned/cargo) "tq" = ( /obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/machinery/firealarm/directional/east, /obj/effect/spawner/random/food_or_drink/seed_rare, /obj/effect/turf_decal/tile/green/half/contrasted{ @@ -2138,7 +2138,7 @@ /area/shuttle/abandoned/cargo) "SW" = ( /obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/machinery/airalarm/all_access{ dir = 4; pixel_x = 24 diff --git a/_maps/templates/holodeck_petpark.dmm b/_maps/templates/holodeck_petpark.dmm index 0217e5098511..b0c5a34722f6 100644 --- a/_maps/templates/holodeck_petpark.dmm +++ b/_maps/templates/holodeck_petpark.dmm @@ -8,7 +8,7 @@ /turf/open/floor/holofloor/grass, /area/template_noop) "c" = ( -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /turf/open/floor/holofloor/grass, /area/template_noop) "f" = ( @@ -33,7 +33,7 @@ /turf/open/floor/holofloor/grass, /area/template_noop) "q" = ( -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /obj/effect/holodeck_effect/mobspawner/pet, /turf/open/floor/holofloor/grass, /area/template_noop) @@ -94,7 +94,7 @@ /turf/open/floor/holofloor, /area/template_noop) "U" = ( -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /obj/item/cultivator, /turf/open/floor/holofloor/grass, /area/template_noop) diff --git a/_maps/templates/lazy_templates/ninja_den.dmm b/_maps/templates/lazy_templates/ninja_den.dmm index 981fd15854fa..f8a773cb1fa4 100644 --- a/_maps/templates/lazy_templates/ninja_den.dmm +++ b/_maps/templates/lazy_templates/ninja_den.dmm @@ -643,7 +643,7 @@ }, /area/centcom/central_command_areas/holding) "qi" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /turf/open/floor/grass, /area/centcom/central_command_areas/holding) "ql" = ( @@ -1014,7 +1014,7 @@ /turf/open/floor/iron/sepia, /area/centcom/central_command_areas/holding) "Al" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/machinery/light/directional/east, /turf/open/floor/grass, /area/centcom/central_command_areas/holding) diff --git a/_maps/templates/lazy_templates/nukie_base.dmm b/_maps/templates/lazy_templates/nukie_base.dmm index 751488dbff04..506f5b101314 100644 --- a/_maps/templates/lazy_templates/nukie_base.dmm +++ b/_maps/templates/lazy_templates/nukie_base.dmm @@ -419,7 +419,7 @@ /turf/open/floor/catwalk_floor/iron_smooth, /area/centcom/syndicate_mothership/control) "fK" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /turf/open/floor/mineral/titanium/tiled, /area/centcom/syndicate_mothership/expansion_bioterrorism) "fR" = ( @@ -1326,7 +1326,7 @@ /area/centcom/syndicate_mothership/expansion_chemicalwarfare) "pY" = ( /obj/structure/window/reinforced/survival_pod/spawner/directional/east, -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /turf/open/floor/mineral/titanium/tiled, /area/centcom/syndicate_mothership/expansion_bioterrorism) "qh" = ( @@ -3271,7 +3271,7 @@ /turf/open/floor/catwalk_floor/iron, /area/centcom/syndicate_mothership/control) "MH" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/machinery/light/cold/directional/west, /obj/item/seeds/cannabis{ pixel_y = 8 diff --git a/_maps/virtual_domains/beach_bar.dmm b/_maps/virtual_domains/beach_bar.dmm index 6d0420d9b3d9..ed3c56409c3c 100644 --- a/_maps/virtual_domains/beach_bar.dmm +++ b/_maps/virtual_domains/beach_bar.dmm @@ -642,7 +642,7 @@ /turf/open/misc/beach/sand, /area/virtual_domain/powered) "Cv" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /turf/open/floor/iron/grimy, /area/virtual_domain/powered) "CA" = ( @@ -788,7 +788,7 @@ /turf/open/misc/beach/sand, /area/virtual_domain/powered) "IM" = ( -/obj/machinery/hydroponics/constructable, +/obj/machinery/growing/tray, /obj/machinery/light/directional/east, /turf/open/floor/iron/grimy, /area/virtual_domain/powered) diff --git a/_maps/~monkestation/RandomBars/Tram/tram_bar_biodome.dmm b/_maps/~monkestation/RandomBars/Tram/tram_bar_biodome.dmm index 53e84271edb1..15c9c93944e6 100644 --- a/_maps/~monkestation/RandomBars/Tram/tram_bar_biodome.dmm +++ b/_maps/~monkestation/RandomBars/Tram/tram_bar_biodome.dmm @@ -392,7 +392,7 @@ /area/station/commons/lounge) "kz" = ( /obj/structure/flora/tree/pine/style_random, -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /turf/open/floor/pod/light, /area/station/service/theater) "kA" = ( diff --git a/_maps/~monkestation/templates/hives.dmm b/_maps/~monkestation/templates/hives.dmm new file mode 100644 index 000000000000..0211acf88ab0 --- /dev/null +++ b/_maps/~monkestation/templates/hives.dmm @@ -0,0 +1,300 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/closed/indestructible/hive, +/area/station/hive/four) +"c" = ( +/obj/structure/hive_exit, +/turf/closed/indestructible/hive, +/area/station/hive/one) +"k" = ( +/turf/open/space/basic, +/area/space) +"n" = ( +/turf/open/indestructible/hive, +/area/station/hive/two) +"r" = ( +/turf/closed/indestructible/hive, +/area/station/hive/one) +"A" = ( +/turf/open/indestructible/hive, +/area/station/hive/four) +"B" = ( +/obj/structure/hive_exit, +/turf/closed/indestructible/hive, +/area/station/hive/four) +"C" = ( +/turf/closed/indestructible/hive, +/area/station/hive/three) +"F" = ( +/turf/closed/indestructible/hive, +/area/station/hive/two) +"K" = ( +/turf/open/indestructible/hive, +/area/station/hive/one) +"L" = ( +/turf/open/indestructible/hive, +/area/station/hive/three) +"N" = ( +/obj/structure/hive_exit, +/turf/closed/indestructible/hive, +/area/station/hive/two) +"O" = ( +/obj/structure/hive_exit, +/turf/closed/indestructible/hive, +/area/station/hive/three) + +(1,1,1) = {" +r +r +r +c +r +r +r +k +F +F +F +N +F +F +F +"} +(2,1,1) = {" +r +K +K +K +K +K +r +k +F +n +n +n +n +n +F +"} +(3,1,1) = {" +r +K +K +K +K +K +r +k +F +n +n +n +n +n +F +"} +(4,1,1) = {" +r +K +K +K +K +K +r +k +F +n +n +n +n +n +F +"} +(5,1,1) = {" +r +K +K +K +K +K +r +k +F +n +n +n +n +n +F +"} +(6,1,1) = {" +r +K +K +K +K +K +r +k +F +n +n +n +n +n +F +"} +(7,1,1) = {" +r +r +r +r +r +r +r +k +F +F +F +F +F +F +F +"} +(8,1,1) = {" +k +k +k +k +k +k +k +k +k +k +k +k +k +k +k +"} +(9,1,1) = {" +C +C +C +O +C +C +C +k +a +a +a +B +a +a +a +"} +(10,1,1) = {" +C +L +L +L +L +L +C +k +a +A +A +A +A +A +a +"} +(11,1,1) = {" +C +L +L +L +L +L +C +k +a +A +A +A +A +A +a +"} +(12,1,1) = {" +C +L +L +L +L +L +C +k +a +A +A +A +A +A +a +"} +(13,1,1) = {" +C +L +L +L +L +L +C +k +a +A +A +A +A +A +a +"} +(14,1,1) = {" +C +L +L +L +L +L +C +k +a +A +A +A +A +A +a +"} +(15,1,1) = {" +C +C +C +C +C +C +C +k +a +a +a +a +a +a +a +"} diff --git a/code/__DEFINES/icon_smoothing.dm b/code/__DEFINES/icon_smoothing.dm index 22a4a91cab40..1bb7712f6f2b 100644 --- a/code/__DEFINES/icon_smoothing.dm +++ b/code/__DEFINES/icon_smoothing.dm @@ -174,6 +174,7 @@ DEFINE_BITFIELD(smoothing_flags, list( #define SMOOTH_GROUP_GRILLE S_OBJ(75) +#define SMOOTH_GROUP_WAXWALL S_OBJ(76) /// Performs the work to set smoothing_groups and canSmoothWith. /// An inlined function used in both turf/Initialize and atom/Initialize. #define SETUP_SMOOTHING(...) \ diff --git a/code/__DEFINES/logging.dm b/code/__DEFINES/logging.dm index 27a48520a404..172f2cdf4682 100644 --- a/code/__DEFINES/logging.dm +++ b/code/__DEFINES/logging.dm @@ -79,6 +79,7 @@ // Log entry keys #define LOG_ENTRY_KEY_TIMESTAMP "ts" +#define LOG_ENTRY_KEY_ROUNDID "round_id" #define LOG_ENTRY_KEY_CATEGORY "cat" #define LOG_ENTRY_KEY_MESSAGE "msg" #define LOG_ENTRY_KEY_DATA "data" diff --git a/code/__DEFINES/~monkestation/botany.dm b/code/__DEFINES/~monkestation/botany.dm new file mode 100644 index 000000000000..6cd5b1f0ea3b --- /dev/null +++ b/code/__DEFINES/~monkestation/botany.dm @@ -0,0 +1,44 @@ +#define COMSIG_GROWING_WATER_UPDATE "growing_water_update" +#define COMSIG_PLANT_TRY_POLLINATE "try_pollinate" +#define COMSIG_PLANT_TRY_HARVEST "plant_try_harvest" +#define COMSIG_PLANT_BUILD_IMAGE "plant_build_image" +#define COMSIG_PLANT_ADJUST_WEED "plant_adjust_weeds" +#define COMSIG_PLANT_GROWTH_PROCESS "process_plant_growth" +#define COMSIG_TRY_HARVEST_SEEDS "try_harvest_seeds" +#define COMSIG_TRY_PLANT_SEED "try_plant_seeds" +#define COMSIG_PLANT_CHANGE_PLANTER "plant_change_planter" +#define COMSIG_PLANT_SENDING_IMAGE "plant_sending_image" +#define COMSIG_TRY_POLLINATE "try_pollinate_grower" +#define COMSIG_ADJUST_PLANT_HEALTH "adjust_plant_health" +#define COMSIG_GROWING_ADJUST_TOXIN "adjust_growing_toxicity" +#define COMSIG_GROWING_ADJUST_PEST "adjust_growing_pests" +#define COMSIG_PLANT_UPDATE_HEALTH_COLOR "update_health_color" +#define COMSIG_GROWING_ADJUST_WEED "adjust_growing_weed" +#define COMSIG_GROWER_ADJUST_SELFGROW "adjust_grower_selfgrow" +#define COMSIG_GROWER_INCREASE_WORK_PROCESSES "increase_work_process_grower" +#define COMSIG_NUTRIENT_UPDATE "nutrient_update" +#define COMSIG_TOXICITY_UPDATE "toxicity_update" +#define COMSIG_PEST_UPDATE "pest_update" +#define COMSIG_WEEDS_UPDATE "weeds_update" +#define COMSIG_GROWER_SET_HARVESTABLE "set_harvestable_grower" +#define COMSIG_REMOVE_PLANT "remove_plant_grower" +#define REMOVE_PLANT_VISUALS "remove_plant_visuals" +#define COMSIG_GROWER_CHECK_POLLINATED "check_grower_pollinated" +#define COMSIG_ATTEMPT_BIOBOOST "attempt_bioboost" +#define COMSIG_PLANTER_REMOVE_PLANTS "remove_all_plants" +#define COMSIG_TOGGLE_BIOBOOST "toggle_bioboost" +#define COMSIG_REAGENT_CACHE_ADD_ATTEMPT "reagent_cache_attempt" +#define COMSIG_REAGENT_PRE_TRANS_TO "reagent_pre_trans" +#define COMSIG_GROWING_TRY_SECATEUR "try_secateur" +#define COMSIG_PLANT_TRY_SECATEUR "plant_try_secateur" +#define COMSIG_GROWER_TRY_GRAFT "plant_grower_try_graft" + +#define SHOW_WATER (1<<0) +#define SHOW_HEALTH (1<<1) +#define SHOW_WEED (1<<2) +#define SHOW_PEST (1<<3) +#define SHOW_TOXIC (1<<4) +#define SHOW_NUTRIENT (1<<5) +#define SHOW_HARVEST (1<<6) + +#define SPECIES_APID "apid" diff --git a/code/__HELPERS/global_lists.dm b/code/__HELPERS/global_lists.dm index c6cf55d002a0..86e0f81367c7 100644 --- a/code/__HELPERS/global_lists.dm +++ b/code/__HELPERS/global_lists.dm @@ -33,6 +33,7 @@ init_sprite_accessory_subtypes(/datum/sprite_accessory/moth_wings, GLOB.moth_wings_list) init_sprite_accessory_subtypes(/datum/sprite_accessory/moth_antennae, GLOB.moth_antennae_list) init_sprite_accessory_subtypes(/datum/sprite_accessory/moth_markings, GLOB.moth_markings_list) + init_sprite_accessory_subtypes(/datum/sprite_accessory/apid_antenna, GLOB.apid_antenna_list) //Monkestation Addition init_sprite_accessory_subtypes(/datum/sprite_accessory/ipc_screens, GLOB.ipc_screens_list) //Monkestation Addition init_sprite_accessory_subtypes(/datum/sprite_accessory/ipc_antennas, GLOB.ipc_antennas_list) //Monkestation Addition init_sprite_accessory_subtypes(/datum/sprite_accessory/ipc_chassis, GLOB.ipc_chassis_list) //Monkestation Addition @@ -45,6 +46,7 @@ init_sprite_accessory_subtypes(/datum/sprite_accessory/arachnid_chelicerae, GLOB.arachnid_chelicerae_list) //Monkestation Addition init_sprite_accessory_subtypes(/datum/sprite_accessory/goblin_ears, GLOB.goblin_ears_list) //Monkestation Addition init_sprite_accessory_subtypes(/datum/sprite_accessory/floran_leaves, GLOB.floran_leaves_list) //Monkestation Addition + init_sprite_accessory_subtypes(/datum/sprite_accessory/apid_wings, GLOB.apid_wings_list) //Monkestation Addition /// Inits GLOB.species_list. Not using GLOBAL_LIST_INIT b/c it depends on GLOB.string_lists /proc/init_species_list() diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm index 07ffc03e49a6..c6ecf3f4881d 100644 --- a/code/__HELPERS/mobs.dm +++ b/code/__HELPERS/mobs.dm @@ -90,6 +90,10 @@ if(!GLOB.pod_hair_list.len) init_sprite_accessory_subtypes(/datum/sprite_accessory/pod_hair, GLOB.pod_hair_list) //Monkestation Addition Start + if(!GLOB.apid_antenna_list.len) + init_sprite_accessory_subtypes(/datum/sprite_accessory/apid_antenna, GLOB.apid_antenna_list) + if(!GLOB.apid_wings_list.len) + init_sprite_accessory_subtypes(/datum/sprite_accessory/apid_wings, GLOB.apid_wings_list) if(!GLOB.ipc_screens_list.len) init_sprite_accessory_subtypes(/datum/sprite_accessory/ipc_screens, GLOB.ipc_screens_list) if(!GLOB.ipc_antennas_list.len) @@ -133,6 +137,8 @@ "moth_wings" = pick(GLOB.moth_wings_list), "moth_antennae" = pick(GLOB.moth_antennae_list), "moth_markings" = pick(GLOB.moth_markings_list), + "apid_antenna" = pick(GLOB.apid_antenna_list), //Monkestation Addition + "apid_wings" = pick(GLOB.apid_wings_list), //Monkestation Addition "ipc_screen" = pick(GLOB.ipc_screens_list), //Monkestation Addition "ipc_antenna" = pick(GLOB.ipc_antennas_list), //Monkestation Addition "ipc_chassis" = pick(GLOB.ipc_chassis_list), //Monkestation Addition diff --git a/code/_globalvars/lists/flavor_misc.dm b/code/_globalvars/lists/flavor_misc.dm index 36ad9188f834..0448c8aa73ca 100644 --- a/code/_globalvars/lists/flavor_misc.dm +++ b/code/_globalvars/lists/flavor_misc.dm @@ -38,9 +38,11 @@ GLOBAL_LIST_EMPTY(wings_open_list) GLOBAL_LIST_EMPTY(moth_wings_list) GLOBAL_LIST_EMPTY(moth_antennae_list) GLOBAL_LIST_EMPTY(moth_markings_list) +GLOBAL_LIST_EMPTY(apid_antenna_list) //Monkestation Addition GLOBAL_LIST_EMPTY(ipc_screens_list) //Monkestation Addition GLOBAL_LIST_EMPTY(ipc_antennas_list) //Monkestation Addition GLOBAL_LIST_EMPTY(ipc_chassis_list) //Monkestation Addition +GLOBAL_LIST_EMPTY(apid_wings_list) //Monkestation Addition GLOBAL_LIST_EMPTY(caps_list) GLOBAL_LIST_EMPTY(pod_hair_list) GLOBAL_LIST_EMPTY(tails_list_monkey) //Monkestation Addition diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index 83582c4b0f6f..4bf89bac58cd 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -309,7 +309,8 @@ if(item_flags & NOBLUDGEON) return user.changeNext_move(attack_speed) - user.do_attack_animation(attacked_atom) + if(!is_reagent_container(src) || force) + user.do_attack_animation(attacked_atom) attacked_atom.attacked_by(src, user) /// Called from [/obj/item/proc/attack_atom] and [/obj/item/proc/attack] if the attack succeeds diff --git a/code/controllers/subsystem/garbage.dm b/code/controllers/subsystem/garbage.dm index 396d5caeab2e..4b4c1a4c0417 100644 --- a/code/controllers/subsystem/garbage.dm +++ b/code/controllers/subsystem/garbage.dm @@ -56,6 +56,8 @@ SUBSYSTEM_DEF(garbage) #endif #endif + /// Toggle for enabling/disabling hard deletes. Objects that don't explicitly request hard deletion with this disabled will leak. + var/enable_hard_deletes = FALSE /datum/controller/subsystem/garbage/PreInit() InitQueues() @@ -263,10 +265,29 @@ SUBSYSTEM_DEF(garbage) queue[++queue.len] = list(queue_time, D, D.gc_destroyed) // not += for byond reasons //this is mainly to separate things profile wise. -/datum/controller/subsystem/garbage/proc/HardDelete(datum/D) +/datum/controller/subsystem/garbage/proc/HardDelete(datum/D, non_datum = FALSE, override = FALSE) + if(!D) + return + + if (!override && !enable_hard_deletes) + return + ++delslasttick ++totaldels - var/type = D.type + var/type + if (!non_datum) + type = D.type + else if (islist(D)) + type = "/list" + else if (istext(D)) + type = "string" + else if (isnum(D)) + type = "number" + else if (isfile(D)) + type = "file" + else + type = "unknown" + var/refID = text_ref(D) var/tick_usage = TICK_USAGE @@ -274,28 +295,29 @@ SUBSYSTEM_DEF(garbage) tick_usage = TICK_USAGE_TO_MS(tick_usage) var/datum/qdel_item/I = items[type] - I.hard_deletes++ - I.hard_delete_time += tick_usage - if (tick_usage > I.hard_delete_max) - I.hard_delete_max = tick_usage - if (tick_usage > highest_del_ms) - highest_del_ms = tick_usage - highest_del_type_string = "[type]" - - var/time = MS2DS(tick_usage) - - if (time > 0.1 SECONDS) - postpone(time) - var/threshold = CONFIG_GET(number/hard_deletes_overrun_threshold) - if (threshold && (time > threshold SECONDS)) - if (!(I.qdel_flags & QDEL_ITEM_ADMINS_WARNED)) - log_game("Error: [type]([refID]) took longer than [threshold] seconds to delete (took [round(time/10, 0.1)] seconds to delete)") - message_admins("Error: [type]([refID]) took longer than [threshold] seconds to delete (took [round(time/10, 0.1)] seconds to delete).") - I.qdel_flags |= QDEL_ITEM_ADMINS_WARNED - I.hard_deletes_over_threshold++ - var/overrun_limit = CONFIG_GET(number/hard_deletes_overrun_limit) - if (overrun_limit && I.hard_deletes_over_threshold >= overrun_limit) - I.qdel_flags |= QDEL_ITEM_SUSPENDED_FOR_LAG + if(I) + I.hard_deletes++ + I.hard_delete_time += tick_usage + if (tick_usage > I.hard_delete_max) + I.hard_delete_max = tick_usage + if (tick_usage > highest_del_ms) + highest_del_ms = tick_usage + highest_del_type_string = "[type]" + + var/time = MS2DS(tick_usage) + + if (time > 0.1 SECONDS) + postpone(time) + var/threshold = CONFIG_GET(number/hard_deletes_overrun_threshold) + if (threshold && (time > threshold SECONDS)) + if (!(I.qdel_flags & QDEL_ITEM_ADMINS_WARNED)) + log_game("Error: [type]([refID]) took longer than [threshold] seconds to delete (took [round(time/10, 0.1)] seconds to delete)") + message_admins("Error: [type]([refID]) took longer than [threshold] seconds to delete (took [round(time/10, 0.1)] seconds to delete).") + I.qdel_flags |= QDEL_ITEM_ADMINS_WARNED + I.hard_deletes_over_threshold++ + var/overrun_limit = CONFIG_GET(number/hard_deletes_overrun_limit) + if (overrun_limit && I.hard_deletes_over_threshold >= overrun_limit) + I.qdel_flags |= QDEL_ITEM_SUSPENDED_FOR_LAG /datum/controller/subsystem/garbage/Recover() InitQueues() //We first need to create the queues before recovering data @@ -327,7 +349,7 @@ SUBSYSTEM_DEF(garbage) /// Datums passed to this will be given a chance to clean up references to allow the GC to collect them. /proc/qdel(datum/D, force=FALSE, ...) if(!istype(D)) - del(D) + SSgarbage.HardDelete(D, TRUE, TRUE) return var/datum/qdel_item/I = SSgarbage.items[D.type] @@ -378,10 +400,10 @@ SUBSYSTEM_DEF(garbage) SSgarbage.Queue(D, GC_QUEUE_HARDDELETE) if (QDEL_HINT_HARDDEL_NOW) //qdel should assume this object won't gc, and hard del it post haste. SSdemo.mark_destroyed(D) //Monkestation Edit: REPLAYS - SSgarbage.HardDelete(D) + SSgarbage.HardDelete(D, override = TRUE) #ifdef REFERENCE_TRACKING if (QDEL_HINT_FINDREFERENCE) //qdel will, if REFERENCE_TRACKING is enabled, display all references to this object, then queue the object for deletion. - SSgarbage.Queue(D) + SSgarbage.HardDelete(D, override = TRUE) // Need to override enable_hard_deletes, stuff like /client uses this D.find_references() //This breaks ci. Consider it insurance against somehow pring reftracking on accident if (QDEL_HINT_IFFAIL_FINDREFERENCE) //qdel will, if REFERENCE_TRACKING is enabled and the object fails to collect, display all references to this object. SSgarbage.Queue(D) diff --git a/code/datums/chatmessage.dm b/code/datums/chatmessage.dm index 7c5c8a6df5b1..804562afe277 100644 --- a/code/datums/chatmessage.dm +++ b/code/datums/chatmessage.dm @@ -44,10 +44,6 @@ var/eol_complete /// Contains the approximate amount of lines for height decay var/approx_lines - /// Contains the reference to the next chatmessage in the bucket, used by runechat subsystem - var/datum/chatmessage/next - /// Contains the reference to the previous chatmessage in the bucket, used by runechat subsystem - var/datum/chatmessage/prev /// The current index used for adjusting the layer of each sequential chat message such that recent messages will overlay older ones var/static/current_z_idx = 0 /// When we started animating the message @@ -125,12 +121,6 @@ if (length_char(text) > maxlen) text = copytext_char(text, 1, maxlen + 1) + "..." // BYOND index moment - // Calculate target color if not already present - if (!target.chat_color || target.chat_color_name != target.name) - target.chat_color = colorize_string(target.name) - target.chat_color_darkened = colorize_string(target.name, 0.85, 0.85) - target.chat_color_name = target.name - // Get rid of any URL schemes that might cause BYOND to automatically wrap something in an anchor tag var/static/regex/url_scheme = new(@"[A-Za-z][A-Za-z0-9+-\.]*:\/\/", "g") text = replacetext(text, url_scheme, "") @@ -150,6 +140,7 @@ extra_classes |= SPAN_YELL var/list/prefixes + var/chat_color_name_to_use // Append radio icon if from a virtual speaker if (extra_classes.Find("virtual-speaker")) @@ -158,6 +149,19 @@ else if (extra_classes.Find("emote")) var/image/r_icon = image('icons/ui_icons/chat/chat_icons.dmi', icon_state = "emote") LAZYADD(prefixes, "\icon[r_icon]") + chat_color_name_to_use = target.get_visible_name(add_id_name = FALSE) // use face name for nonverbal messages + + if(isnull(chat_color_name_to_use)) + if(HAS_TRAIT(target, TRAIT_SIGN_LANG)) + chat_color_name_to_use = target.get_visible_name(add_id_name = FALSE) // use face name for signers too + else + chat_color_name_to_use = target.GetVoice() // for everything else, use the target's voice name + + // Calculate target color if not already present + if (!target.chat_color || target.chat_color_name != chat_color_name_to_use) + target.chat_color = colorize_string(chat_color_name_to_use) + target.chat_color_darkened = colorize_string(chat_color_name_to_use, 0.85, 0.85) + target.chat_color_name = chat_color_name_to_use // Append language icon if the language uses one var/datum/language/language_instance = GLOB.language_datum_instances[language] @@ -193,7 +197,7 @@ /datum/chatmessage/proc/finish_image_generation(mheight, atom/target, mob/owner, complete_text, lifespan) var/rough_time = REALTIMEOFDAY approx_lines = max(1, mheight / CHAT_MESSAGE_APPROX_LHEIGHT) - + var/starting_height = target.maptext_height // Translate any existing messages upwards, apply exponential decay factors to timers message_loc = isturf(target) ? target : get_atom_on_turf(target) if (owned_by.seen_messages) @@ -208,7 +212,12 @@ // When choosing to update the remaining time we have to be careful not to update the // scheduled time once the EOL has been executed. if (time_spent >= time_before_fade) - animate(m.message, pixel_y = m.message.pixel_y + mheight, time = CHAT_MESSAGE_SPAWN_TIME, flags = ANIMATION_PARALLEL) + if(m.message.pixel_y < starting_height) + var/max_height = m.message.pixel_y + m.approx_lines * CHAT_MESSAGE_APPROX_LHEIGHT - starting_height + if(max_height > 0) + animate(m.message, pixel_y = m.message.pixel_y + max_height, time = CHAT_MESSAGE_SPAWN_TIME, flags = ANIMATION_PARALLEL) + else if(mheight + starting_height >= m.message.pixel_y) + animate(m.message, pixel_y = m.message.pixel_y + mheight, time = CHAT_MESSAGE_SPAWN_TIME, flags = ANIMATION_PARALLEL) continue var/remaining_time = time_before_fade * (CHAT_MESSAGE_EXP_DECAY ** idx++) * (CHAT_MESSAGE_HEIGHT_DECAY ** combined_height) @@ -225,7 +234,12 @@ animate(alpha = 0, time = CHAT_MESSAGE_EOL_FADE) // We run this after the alpha animate, because we don't want to interrup it, but also don't want to block it by running first // Sooo instead we do this. bit messy but it fuckin works - animate(m.message, pixel_y = m.message.pixel_y + mheight, time = CHAT_MESSAGE_SPAWN_TIME, flags = ANIMATION_PARALLEL) + if(m.message.pixel_y < starting_height) + var/max_height = m.message.pixel_y + m.approx_lines * CHAT_MESSAGE_APPROX_LHEIGHT - starting_height + if(max_height > 0) + animate(m.message, pixel_y = m.message.pixel_y + max_height, time = CHAT_MESSAGE_SPAWN_TIME, flags = ANIMATION_PARALLEL) + else if(mheight + starting_height >= m.message.pixel_y) + animate(m.message, pixel_y = m.message.pixel_y + mheight, time = CHAT_MESSAGE_SPAWN_TIME, flags = ANIMATION_PARALLEL) // Reset z index if relevant if (current_z_idx >= CHAT_LAYER_MAX_Z) @@ -236,7 +250,7 @@ SET_PLANE_EXPLICIT(message, RUNECHAT_PLANE, message_loc) message.appearance_flags = APPEARANCE_UI_IGNORE_ALPHA | KEEP_APART message.alpha = 0 - message.pixel_y = target.maptext_height + message.pixel_y = starting_height message.pixel_x = -target.base_pixel_x message.maptext_width = CHAT_MESSAGE_WIDTH message.maptext_height = mheight * 1.25 // We add extra because some characters are superscript, like actions @@ -305,7 +319,7 @@ return // Display visual above source - if(CHECK_BITFIELD(runechat_flags, EMOTE_MESSAGE)) + if(runechat_flags & EMOTE_MESSAGE) new /datum/chatmessage(raw_message, speaker, src, message_language, list("emote", "italics")) else if(CHECK_BITFIELD(runechat_flags, LOOC_MESSAGE)) new /datum/chatmessage(raw_message, speaker, src, message_language, list("looc", "italics")) diff --git a/code/datums/components/bakeable.dm b/code/datums/components/bakeable.dm index a5367769f684..3a654b4e4696 100644 --- a/code/datums/components/bakeable.dm +++ b/code/datums/components/bakeable.dm @@ -80,7 +80,7 @@ if(positive_result) used_oven.visible_message(span_notice("You smell something great coming from [used_oven]."), blind_message = span_notice("You smell something great...")) - BLACKBOX_LOG_FOOD_MADE(baked_result.type) + BLACKBOX_LOG_FOOD_MADE(baked_result) else used_oven.visible_message(span_warning("You smell a burnt smell coming from [used_oven]."), blind_message = span_warning("You smell a burnt smell...")) SEND_SIGNAL(parent, COMSIG_ITEM_BAKED, baked_result) diff --git a/code/datums/components/crafting/crafting.dm b/code/datums/components/crafting/crafting.dm index 59f689e5b9d1..c7f773d82701 100644 --- a/code/datums/components/crafting/crafting.dm +++ b/code/datums/components/crafting/crafting.dm @@ -209,7 +209,7 @@ qdel(thing) I.CheckParts(parts, R) if(send_feedback) - SSblackbox.record_feedback("tally", "object_crafted", 1, I.type) + SSblackbox.record_feedback("tally", "object_crafted", 1, I.name) return I //Send the item back to whatever called this proc so it can handle whatever it wants to do with the new item return ", missing tool." return ", missing component." diff --git a/code/datums/components/food/edible.dm b/code/datums/components/food/edible.dm index 0e7f4f0762f2..19496e59ab48 100644 --- a/code/datums/components/food/edible.dm +++ b/code/datums/components/food/edible.dm @@ -292,7 +292,7 @@ Behavior that's still missing from this component that original food items had t this_food.reagents.maximum_volume = ROUND_UP(this_food.reagents.maximum_volume) // Just because I like whole numbers for this. - BLACKBOX_LOG_FOOD_MADE(this_food.type) + BLACKBOX_LOG_FOOD_MADE(this_food) ///Makes sure the thing hasn't been destroyed or fully eaten to prevent eating phantom edibles /datum/component/edible/proc/IsFoodGone(atom/owner, mob/living/feeder) diff --git a/code/datums/components/grillable.dm b/code/datums/components/grillable.dm index 2e299bd4b069..62b568df769a 100644 --- a/code/datums/components/grillable.dm +++ b/code/datums/components/grillable.dm @@ -90,7 +90,7 @@ grilled_result.set_custom_materials(original_object.custom_materials) if(IS_EDIBLE(grilled_result)) - BLACKBOX_LOG_FOOD_MADE(grilled_result.type) + BLACKBOX_LOG_FOOD_MADE(grilled_result) SEND_SIGNAL(parent, COMSIG_ITEM_GRILLED, grilled_result) if(who_placed_us) diff --git a/code/datums/elements/food/microwavable.dm b/code/datums/elements/food/microwavable.dm index 86a43c0603c5..8ed96be74b2c 100644 --- a/code/datums/elements/food/microwavable.dm +++ b/code/datums/elements/food/microwavable.dm @@ -49,7 +49,7 @@ result.reagents?.multiply_reagents(efficiency * CRAFTED_FOOD_BASE_REAGENT_MODIFIER) source.reagents?.trans_to(result, source.reagents.total_volume) - BLACKBOX_LOG_FOOD_MADE(result.type) + BLACKBOX_LOG_FOOD_MADE(result) qdel(source) diff --git a/code/datums/emotes.dm b/code/datums/emotes.dm index feca02e6e6d4..06493f772f00 100644 --- a/code/datums/emotes.dm +++ b/code/datums/emotes.dm @@ -131,6 +131,7 @@ to_chat(viewer, msg) SEND_SIGNAL(user, COMSIG_MOB_EMOTED(key)) + SSblackbox.record_feedback("tally", "emote_used", 1, name) /** * For handling emote cooldown, return true to allow the emote to happen. diff --git a/code/game/objects/items/circuitboards/machines/machine_circuitboards.dm b/code/game/objects/items/circuitboards/machines/machine_circuitboards.dm index 49d821a8cd81..b59e43b7781b 100644 --- a/code/game/objects/items/circuitboards/machines/machine_circuitboards.dm +++ b/code/game/objects/items/circuitboards/machines/machine_circuitboards.dm @@ -1185,7 +1185,7 @@ /obj/item/circuitboard/machine/hydroponics name = "Hydroponics Tray" greyscale_colors = CIRCUIT_COLOR_SERVICE - build_path = /obj/machinery/hydroponics/constructable + build_path = /obj/machinery/growing/tray req_components = list( /datum/stock_part/matter_bin = 2, /datum/stock_part/manipulator = 1, diff --git a/code/game/objects/items/dna_probe.dm b/code/game/objects/items/dna_probe.dm index 6c9651a31421..954d673a2cd8 100644 --- a/code/game/objects/items/dna_probe.dm +++ b/code/game/objects/items/dna_probe.dm @@ -57,22 +57,24 @@ playsound(user, 'sound/machines/buzz-sigh.ogg', 50) balloon_alert(user, "need database!") return - if((allowed_scans & DNA_PROBE_SCAN_PLANTS) && istype(target, /obj/machinery/hydroponics)) - var/obj/machinery/hydroponics/hydro_tray = target - if(!hydro_tray.myseed) + if((allowed_scans & DNA_PROBE_SCAN_PLANTS) && target.GetComponent(/datum/component/plant_growing)) + var/obj/item/seeds/seed = locate(/obj/item/seeds) in target.contents + if(seed) return - if(our_vault.plant_dna[hydro_tray.myseed.type]) + var/datum/component/growth_information/info = seed.GetComponent(/datum/component/growth_information) + if(our_vault.plant_dna[seed.type]) to_chat(user, span_notice("Plant data is already present in vault storage.")) return - if(stored_dna_plants[hydro_tray.myseed.type]) + if(stored_dna_plants[seed.type]) to_chat(user, span_notice("Plant data already present in local storage.")) return - if(hydro_tray.plant_status != HYDROTRAY_PLANT_HARVESTABLE) // So it's bit harder. + if(info.plant_state != HYDROTRAY_PLANT_HARVESTABLE) // So it's bit harder. to_chat(user, span_alert("Plant needs to be ready to harvest to perform full data scan.")) //Because space dna is actually magic return . - stored_dna_plants[hydro_tray.myseed.type] = TRUE + stored_dna_plants[seed.type] = TRUE playsound(src, 'sound/misc/compiler-stage2.ogg', 50) balloon_alert(user, "data added") + else if((allowed_scans & DNA_PROBE_SCAN_HUMANS) && ishuman(target)) var/mob/living/carbon/human/human_target = target if(our_vault.human_dna[human_target.dna.unique_identity]) diff --git a/code/game/objects/items/stacks/sheets/mineral.dm b/code/game/objects/items/stacks/sheets/mineral.dm index d4af2586a62a..f0a773f690d8 100644 --- a/code/game/objects/items/stacks/sheets/mineral.dm +++ b/code/game/objects/items/stacks/sheets/mineral.dm @@ -24,7 +24,7 @@ Mineral Sheets */ GLOBAL_LIST_INIT(sandstone_recipes, list ( \ - new/datum/stack_recipe("pile of dirt", /obj/machinery/hydroponics/soil, 3, time = 1 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_TOOLS), \ + new/datum/stack_recipe("pile of dirt", /obj/machinery/growing/soil, 3, time = 1 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_TOOLS), \ new/datum/stack_recipe("sandstone door", /obj/structure/mineral_door/sandstone, 10, time = 5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, applies_mats = TRUE, category = CAT_DOORS), \ new/datum/stack_recipe("Breakdown into sand", /obj/item/stack/ore/glass, 1, one_per_turf = FALSE, on_solid_ground = TRUE, category = CAT_MISC) \ )) diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm index 11f556479ae2..78e6ca8a7a2f 100644 --- a/code/game/objects/items/stacks/stack.dm +++ b/code/game/objects/items/stacks/stack.dm @@ -79,7 +79,7 @@ var/absorption_rate /obj/item/stack/Initialize(mapload, new_amount, merge = TRUE, list/mat_override=null, mat_amt=1) - if(new_amount != null) + if(new_amount != null && isnum(new_amount)) amount = new_amount while(amount > max_amount) amount -= max_amount diff --git a/code/game/objects/items/storage/bags.dm b/code/game/objects/items/storage/bags.dm index 99d5fd4e91c9..da73a9689bee 100644 --- a/code/game/objects/items/storage/bags.dm +++ b/code/game/objects/items/storage/bags.dm @@ -237,6 +237,7 @@ /obj/item/reagent_containers/honeycomb, /obj/item/graft, /obj/item/disk/plantgene, + /obj/item/paper, )) //////// diff --git a/code/game/say.dm b/code/game/say.dm index 83f14d6e7452..5f25b82417ff 100644 --- a/code/game/say.dm +++ b/code/game/say.dm @@ -218,7 +218,7 @@ GLOBAL_LIST_INIT(freqtospan, list( return "2" return "0" -/atom/movable/proc/GetVoice() +/atom/proc/GetVoice() return "[src]" //Returns the atom's name, prepended with 'The' if it's not a proper noun /atom/movable/proc/get_alt_name() diff --git a/code/game/turfs/closed/minerals.dm b/code/game/turfs/closed/minerals.dm index f894f2988f34..424696ee4ed6 100644 --- a/code/game/turfs/closed/minerals.dm +++ b/code/game/turfs/closed/minerals.dm @@ -137,7 +137,7 @@ SEND_SIGNAL(user, COMSIG_MOB_MINED, src, give_exp) if (mineralType && (mineralAmt > 0)) new mineralType(src, mineralAmt) - SSblackbox.record_feedback("tally", "ore_mined", mineralAmt, mineralType) + SSblackbox.record_feedback("tally", "ore_mined", mineralAmt, initial(mineralType.name)) if(ishuman(user)) var/mob/living/carbon/human/H = user if(HAS_TRAIT(H, FOOD_JOB_MINER)) @@ -158,7 +158,7 @@ picked_ore = /obj/item/stack/ore/bluespace_crystal if(picked_ore) new picked_ore(src, 1) - SSblackbox.record_feedback("tally", "ore_mined", 1, picked_ore) + SSblackbox.record_feedback("tally", "ore_mined", 1, initial(picked_ore.name)) if(give_exp) if (mineralType && (mineralAmt > 0)) diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 87140c0cb7bd..689b585882d6 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -191,6 +191,7 @@ GLOBAL_PROTECT(admin_verbs_debug) /proc/machine_upgrade, /datum/admins/proc/create_or_modify_area, /client/proc/adventure_manager, + /client/proc/hard_deletion_toggle, /client/proc/atmos_control, /client/proc/callproc, /client/proc/callproc_datum, diff --git a/code/modules/admin/hardelete_toggle.dm b/code/modules/admin/hardelete_toggle.dm new file mode 100644 index 000000000000..6c2fa4b6405e --- /dev/null +++ b/code/modules/admin/hardelete_toggle.dm @@ -0,0 +1,17 @@ +/client/proc/hard_deletion_toggle() + set category = "Debug" + set name = "Enable/Disable Hard Deletes" + + var/static/list/warned_users + + LAZYINITLIST(warned_users) + var/current_val = SSgarbage.enable_hard_deletes + if (current_val && !warned_users[usr.ckey]) + to_chat(usr, "WARNING: Disabling garbage hard deletion will likely result in permanent memory leaks until the next round. Run this verb again to disable it.") + warned_users[usr.ckey] = TRUE + return + + SSgarbage.enable_hard_deletes = !current_val + + log_admin("[key_name(usr)] toggled garbage hard deletion [SSgarbage.enable_hard_deletes ? "ON" : "OFF"].") + SSblackbox.record_feedback("tally", "admin_verb", 1, "hard_deletion_toggle") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! diff --git a/code/modules/admin/sql_ban_system.dm b/code/modules/admin/sql_ban_system.dm index 9dc31be8498f..05b73e6d0d67 100644 --- a/code/modules/admin/sql_ban_system.dm +++ b/code/modules/admin/sql_ban_system.dm @@ -1055,7 +1055,9 @@ if(GLOB.admin_datums[player_client.ckey] || GLOB.deadmins[player_client.ckey]) is_admin = TRUE if(kick_banned_players && (!is_admin || (is_admin && applies_to_admins))) - qdel(player_client) + SSgarbage.HardDelete(player_client, override = TRUE) + if(player_client) + qdel(player_client) for(var/client/other_player_client in GLOB.clients - player_client) if(other_player_client.address == banned_player_ip || other_player_client.computer_id == banned_player_cid) @@ -1064,7 +1066,9 @@ if(GLOB.admin_datums[other_player_client.ckey] || GLOB.deadmins[other_player_client.ckey]) is_admin = TRUE if(kick_banned_players && (!is_admin || (is_admin && applies_to_admins))) - qdel(other_player_client) + SSgarbage.HardDelete(other_player_client, override = TRUE) + if(other_player_client) + qdel(other_player_client) #undef MAX_ADMINBANS_PER_ADMIN #undef MAX_ADMINBANS_PER_HEADMIN diff --git a/code/modules/antagonists/heretic/magic/star_touch.dm b/code/modules/antagonists/heretic/magic/star_touch.dm index c7f0dfb47031..bab07f0871bd 100644 --- a/code/modules/antagonists/heretic/magic/star_touch.dm +++ b/code/modules/antagonists/heretic/magic/star_touch.dm @@ -196,7 +196,7 @@ current_beam = user.Beam(current_target, icon_state="cosmic_beam", time = 1 MINUTES, maxdistance = max_range, beam_type = /obj/effect/ebeam/cosmic) RegisterSignal(current_beam, COMSIG_QDELETING, PROC_REF(beam_died)) - SSblackbox.record_feedback("tally", "gun_fired", 1, type) + SSblackbox.record_feedback("tally", "gun_fired", 1, "Cosmic Beam") if(current_target) on_beam_hit(current_target) diff --git a/code/modules/cargo/bounties/engineering.dm b/code/modules/cargo/bounties/engineering.dm index 9da865ec7533..ddfa4b9c45c5 100644 --- a/code/modules/cargo/bounties/engineering.dm +++ b/code/modules/cargo/bounties/engineering.dm @@ -8,7 +8,7 @@ name = "Hydroponics Tray" description = "The lab technicians are trying to figure out how to lower the power drain of hydroponics trays, but we fried our last one. Mind building one for us?" reward = CARGO_CRATE_VALUE * 4 - wanted_types = list(/obj/machinery/hydroponics/constructable = TRUE) + wanted_types = list(/obj/machinery/growing/tray = TRUE) /datum/bounty/item/engineering/cyborg_charger name = "Recharging Station" diff --git a/code/modules/cargo/exports.dm b/code/modules/cargo/exports.dm index 06acc0ba46cd..5c456f4073ca 100644 --- a/code/modules/cargo/exports.dm +++ b/code/modules/cargo/exports.dm @@ -159,7 +159,7 @@ Then the player gets the profit from selling his own wasted time. if(!dry_run) if(apply_elastic) cost *= NUM_E**(-1 * k_elasticity * export_amount) //marginal cost modifier - SSblackbox.record_feedback("nested tally", "export_sold_cost", 1, list("[sold_item.type]", "[export_value]")) + SSblackbox.record_feedback("nested tally", "export_sold_cost", 1, list("[initial(sold_item.name)]", "[export_value]")) return TRUE // Total printout for the cargo console. diff --git a/code/modules/events/_event.dm b/code/modules/events/_event.dm index 2efc1936f442..4979d2dd1fc0 100644 --- a/code/modules/events/_event.dm +++ b/code/modules/events/_event.dm @@ -203,7 +203,7 @@ Runs the event if(alert_observers) round_event.announce_deadchat(random, event_cause) - SSblackbox.record_feedback("tally", "event_ran", 1, "[round_event]") + SSblackbox.record_feedback("tally", "event_ran", 1, "[name]") return round_event //Returns the component for the listener diff --git a/code/modules/experisci/experiment/experiments.dm b/code/modules/experisci/experiment/experiments.dm index a946cb780e96..86a84c19428d 100644 --- a/code/modules/experisci/experiment/experiments.dm +++ b/code/modules/experisci/experiment/experiments.dm @@ -220,7 +220,7 @@ /obj/machinery/rnd/production/circuit_imprinter/department/science = 1, /obj/machinery/processor = 2, /obj/machinery/reagentgrinder = 2, - /obj/machinery/hydroponics = 2, + /obj/machinery/growing/tray = 2, /obj/machinery/biogenerator = 3, /obj/machinery/gibber = 3, /obj/machinery/chem_master = 3, diff --git a/code/modules/food_and_drinks/recipes/soup_mixtures.dm b/code/modules/food_and_drinks/recipes/soup_mixtures.dm index 186d144a0771..4a09b1352b51 100644 --- a/code/modules/food_and_drinks/recipes/soup_mixtures.dm +++ b/code/modules/food_and_drinks/recipes/soup_mixtures.dm @@ -221,11 +221,16 @@ if(resulting_food_path) var/obj/item/created = new resulting_food_path(get_turf(pot)) created.pixel_y += 8 + BLACKBOX_LOG_FOOD_MADE(created) + else + var/results_length = length(results) + var/datum/reagent/reagent = results[results_length] + if(reagent) + BLACKBOX_LOG_FOOD_MADE(initial(reagent.name)) // Anything left in the ingredient list will get dumped out pot.dump_ingredients(get_turf(pot), y_offset = 8) // Blackbox log the chemical reaction used, to account for soup reaction that don't produce typical results - BLACKBOX_LOG_FOOD_MADE(type) /** * Transfers reagents from the passed reagent to the soup pot, as a "result" diff --git a/code/modules/hydroponics/gene_modder.dm b/code/modules/hydroponics/gene_modder.dm index e172d8250950..70fae57a0bb8 100644 --- a/code/modules/hydroponics/gene_modder.dm +++ b/code/modules/hydroponics/gene_modder.dm @@ -330,6 +330,8 @@ if(disk && disk.gene && istype(disk.gene, G.type) && istype(G, /datum/plant_gene/core)) seed.genes -= G var/datum/plant_gene/core/C = disk.gene.Copy() + var/datum/plant_gene/core/disk_core = disk.gene + C.value = disk_core.value seed.genes += C C.apply_stat(seed) repaint_seed() diff --git a/code/modules/hydroponics/grown/cherries.dm b/code/modules/hydroponics/grown/cherries.dm index 236d6939cf8f..7a97d28e911a 100644 --- a/code/modules/hydroponics/grown/cherries.dm +++ b/code/modules/hydroponics/grown/cherries.dm @@ -59,6 +59,8 @@ /obj/item/seeds/cherry/bulb name = "pack of cherry bulb pits" desc = "The glowy kind of cherries." + //growing_icon = 'icons/obj/hydroponics/growing_fruits.dmi' + //growthstages = 5 icon_state = "seed-cherrybulb" species = "cherrybulb" plantname = "Cherry Bulb Tree" diff --git a/code/modules/hydroponics/grown/citrus.dm b/code/modules/hydroponics/grown/citrus.dm index 0c38a0a307de..491b8c3f026b 100644 --- a/code/modules/hydroponics/grown/citrus.dm +++ b/code/modules/hydroponics/grown/citrus.dm @@ -92,7 +92,7 @@ species = "firelemon" plantname = "Combustible Lemon Tree" product = /obj/item/food/grown/firelemon - growing_icon = 'icons/obj/hydroponics/growing_fruits.dmi' + //growing_icon = 'icons/obj/hydroponics/growing_fruits.dmi' icon_grow = "lime-grow" icon_dead = "lime-dead" genes = list(/datum/plant_gene/trait/repeated_harvest, /datum/plant_gene/trait/bomb_plant/potency_based) diff --git a/code/modules/hydroponics/grown/cotton.dm b/code/modules/hydroponics/grown/cotton.dm index 0e96c8e23fd8..c67c30440538 100644 --- a/code/modules/hydroponics/grown/cotton.dm +++ b/code/modules/hydroponics/grown/cotton.dm @@ -70,8 +70,8 @@ production = 1 yield = 2 potency = 50 - growthstages = 3 - growing_icon = 'icons/obj/hydroponics/growing.dmi' + //growthstages = 3 + //growing_icon = 'icons/obj/hydroponics/growing.dmi' icon_dead = "cotton-dead" possible_mutations = list() diff --git a/code/modules/hydroponics/grown/flowers.dm b/code/modules/hydroponics/grown/flowers.dm index 7026ee8a5453..10c05b8586c3 100644 --- a/code/modules/hydroponics/grown/flowers.dm +++ b/code/modules/hydroponics/grown/flowers.dm @@ -39,6 +39,11 @@ icon_state = "seed-lily" species = "lily" plantname = "Lily Plants" + growthstages = 3 + growing_icon = 'icons/obj/hydroponics/growing_flowers.dmi' + icon_grow = "poppy-grow" + icon_dead = "poppy-dead" + icon_harvest = null product = /obj/item/food/grown/poppy/lily possible_mutations = list(/datum/hydroponics/plant_mutation/trumpet) diff --git a/code/modules/hydroponics/grown/peas.dm b/code/modules/hydroponics/grown/peas.dm index daca786c50e7..a813601bee3b 100644 --- a/code/modules/hydroponics/grown/peas.dm +++ b/code/modules/hydroponics/grown/peas.dm @@ -70,9 +70,6 @@ potency = 75 yield = 1 production = 10 - growthstages = 3 - icon_grow = "worldpeas-grow" - icon_dead = "worldpeas-dead" genes = list (/datum/plant_gene/trait/glow/blue) reagents_add = list (/datum/reagent/pax = 0.1, /datum/reagent/drug/happiness = 0.1, /datum/reagent/consumable/nutriment = 0.15) rarity = 50 // This absolutely will make even the most hardened Syndicate Operators relax. diff --git a/code/modules/hydroponics/grown/replicapod.dm b/code/modules/hydroponics/grown/replicapod.dm index 3fc4f704428c..5dd01a418fa2 100644 --- a/code/modules/hydroponics/grown/replicapod.dm +++ b/code/modules/hydroponics/grown/replicapod.dm @@ -121,7 +121,7 @@ return null /obj/item/seeds/replicapod/harvest(mob/user) //now that one is fun -- Urist - var/obj/machinery/hydroponics/parent = loc + var/atom/movable/parent = loc var/make_podman = FALSE var/ckey_holder = null var/list/result = list() @@ -175,7 +175,6 @@ var/obj/item/seeds/replicapod/harvestseeds = src.Copy() result.Add(harvestseeds) harvestseeds.forceMove(output_loc) - parent.update_tray(user, seed_count) return result // Congratulations! %Do you want to build a pod man?% @@ -211,5 +210,4 @@ podman.dna.species.exotic_blood = most_plentiful_reagent[1] investigate_log("[key_name(mind)] cloned as a podman via [src] in [parent]", INVESTIGATE_BOTANY) - parent.update_tray(user, 1) return result diff --git a/code/modules/hydroponics/grown/seedling.dm b/code/modules/hydroponics/grown/seedling.dm index 9a915c41659d..e50b8fe10d13 100644 --- a/code/modules/hydroponics/grown/seedling.dm +++ b/code/modules/hydroponics/grown/seedling.dm @@ -16,12 +16,11 @@ potency = 30 /obj/item/seeds/seedling/harvest(mob/harvester) - var/obj/machinery/hydroponics/parent = loc + var/atom/movable/parent = loc var/list/grow_locations = get_adjacent_open_turfs(parent) var/turf/final_location = length(grow_locations) ? pick(grow_locations) : get_turf(parent) var/mob/living/basic/seedling/seed_pet = new product(final_location) seed_pet.befriend(harvester) - parent.update_tray(user = harvester, product_count = 1) /obj/item/seeds/seedling/evil product = /mob/living/basic/seedling/meanie diff --git a/code/modules/hydroponics/grown/towercap.dm b/code/modules/hydroponics/grown/towercap.dm index 701c7387ce1b..5c1aa0d40013 100644 --- a/code/modules/hydroponics/grown/towercap.dm +++ b/code/modules/hydroponics/grown/towercap.dm @@ -121,7 +121,7 @@ name = "steel-cap log" desc = "It's made of metal." icon_state = "steellogs" - plank_type = /obj/item/stack/rods + plank_type = /obj/item/stack/sheet/iron plank_name = "rods" /obj/item/grown/log/steel/CheckAccepted(obj/item/I) diff --git a/code/modules/hydroponics/hydroitemdefines.dm b/code/modules/hydroponics/hydroitemdefines.dm index 434666ff7546..e12c0378b433 100644 --- a/code/modules/hydroponics/hydroitemdefines.dm +++ b/code/modules/hydroponics/hydroitemdefines.dm @@ -49,15 +49,20 @@ return NONE /// When we attack something, first - try to scan something we hit with left click. Left-clicking uses scans for stats -/obj/item/plant_analyzer/pre_attack(atom/target, mob/living/user) +/obj/item/plant_analyzer/afterattack(atom/target, mob/user, proximity_flag, click_parameters) . = ..() + if(!can_see(user, target, 7)) + return if((user.istate & ISTATE_HARM) || !user.can_read(src)) return return do_plant_stats_scan(target, user) /// Same as above, but with right click. Right-clicking scans for chemicals. -/obj/item/plant_analyzer/pre_attack_secondary(atom/target, mob/living/user) +/obj/item/plant_analyzer/afterattack_secondary(atom/target, mob/user, proximity_flag, click_parameters) + if(!can_see(user, target, 7)) + return + if((user.istate & ISTATE_HARM) || !user.can_read(src)) return SECONDARY_ATTACK_CONTINUE_CHAIN @@ -73,8 +78,9 @@ * returns TRUE if we can scan the object, and outputs the message to the USER. */ /obj/item/plant_analyzer/proc/do_plant_stats_scan(atom/scan_target, mob/user) - if(istype(scan_target, /obj/machinery/hydroponics)) - to_chat(user, examine_block(scan_tray_stats(scan_target))) + if(scan_target.GetComponent(/datum/component/plant_growing)) + var/obj/item/seeds/seed = locate(/obj/item/seeds) in scan_target.contents + to_chat(user, examine_block(scan_tray_stats(seed, scan_target.GetComponent(/datum/component/plant_growing)))) return TRUE if(istype(scan_target, /obj/structure/glowshroom)) var/obj/structure/glowshroom/shroom_plant = scan_target @@ -106,8 +112,9 @@ * returns TRUE if we can scan the object, and outputs the message to the USER. */ /obj/item/plant_analyzer/proc/do_plant_chem_scan(atom/scan_target, mob/user) - if(istype(scan_target, /obj/machinery/hydroponics)) - to_chat(user, examine_block(scan_tray_chems(scan_target))) + if(scan_target.GetComponent(/datum/component/plant_growing)) + var/obj/item/seeds/seed = locate(/obj/item/seeds) in scan_target.contents + to_chat(user, examine_block(scan_tray_chems(scan_target, seed))) return TRUE if(istype(scan_target, /obj/structure/glowshroom)) var/obj/structure/glowshroom/shroom_plant = scan_target @@ -166,24 +173,21 @@ * * Returns the formatted message as text. */ -/obj/item/plant_analyzer/proc/scan_tray_stats(obj/machinery/hydroponics/scanned_tray) +/obj/item/plant_analyzer/proc/scan_tray_stats(obj/item/seeds/seed, datum/component/plant_growing/growing) var/returned_message = "" - if(scanned_tray.myseed) - returned_message += "[span_bold("[scanned_tray.myseed.plantname]")]" - returned_message += "\nPlant Age: [span_notice("[scanned_tray.age]")]" - returned_message += "\nPlant Health: [span_notice("[scanned_tray.plant_health]")]" - returned_message += scan_plant_stats(scanned_tray.myseed, TRUE) + if(seed) + var/datum/component/growth_information/info = seed.GetComponent(/datum/component/growth_information) + returned_message += "[span_bold("[seed.plantname]")]" + returned_message += "\nPlant Age: [span_notice("[info.age]")]" + returned_message += "\nPlant Health: [span_notice("[info.health_value]")]" + returned_message += scan_plant_stats(seed, TRUE) returned_message += "\nGrowth medium" else returned_message += span_bold("No plant found.") - returned_message += "\nWeed level: [span_notice("[scanned_tray.weedlevel] / [MAX_TRAY_WEEDS]")]" - returned_message += "\nPest level: [span_notice("[scanned_tray.pestlevel] / [MAX_TRAY_PESTS]")]" - returned_message += "\nToxicity level: [span_notice("[scanned_tray.toxic] / [MAX_TRAY_TOXINS]")]" - returned_message += "\nWater level: [span_notice("[scanned_tray.waterlevel] / [scanned_tray.maxwater]")]" - returned_message += "\nNutrition level: [span_notice("[round(scanned_tray.reagents.total_volume)] / [scanned_tray.maxnutri]")] Right-click to empty." - if(scanned_tray.yieldmod != 1) - returned_message += "\nYield modifier on harvest: [span_notice("[scanned_tray.yieldmod]x")]" + returned_message += "\nWeed level: [span_notice("[growing.weed_level] / [MAX_TRAY_WEEDS]")]" + returned_message += "\nPest level: [span_notice("[growing.pest_level] / [MAX_TRAY_PESTS]")]" + returned_message += "\nToxicity level: [span_notice("[growing.toxicity_contents]")]" return span_info(returned_message) @@ -195,20 +199,21 @@ * * Returns the formatted message as text. */ -/obj/item/plant_analyzer/proc/scan_tray_chems(obj/machinery/hydroponics/scanned_tray) +/obj/item/plant_analyzer/proc/scan_tray_chems(atom/movable/scanned_tray, obj/item/seeds/seed) var/returned_message = "" - if(scanned_tray.myseed) - returned_message += "[span_bold("[scanned_tray.myseed.plantname]")]" - returned_message += "\nPlant Age: [span_notice("[scanned_tray.age]")]" - returned_message += "\nPlant Growth: [round(((scanned_tray.growth * (1.01 ** -scanned_tray.myseed.maturation)) / scanned_tray.myseed.harvest_age) * 100, 0.1)]%" - returned_message += scan_plant_chems(scanned_tray.myseed, TRUE) + if(seed) + var/datum/component/growth_information/info = seed.GetComponent(/datum/component/growth_information) + returned_message += "[span_bold("[seed.plantname]")]" + returned_message += "\nPlant Age: [span_notice("[info.age]")]" + returned_message += "\nPlant Growth: [round(((info.growth_cycle * (1.01 ** -seed.maturation)) / seed.harvest_age) * 100, 0.1)]%" + returned_message += scan_plant_chems(seed, TRUE) else returned_message += span_bold("No plant found.") returned_message += "\nGrowth medium contains:" if(scanned_tray.reagents.reagent_list.len) for(var/datum/reagent/reagent_id in scanned_tray.reagents.reagent_list) - returned_message += "\n[span_notice("• [reagent_id.volume] / [scanned_tray.maxnutri] units of [reagent_id]")]" + returned_message += "\n[span_notice("• [reagent_id.volume] units of [reagent_id]")]" else returned_message += "\n[span_notice("No reagents found.")]" @@ -638,7 +643,7 @@ /obj/item/reagent_containers/cup/bottle/nutrient/l4z name = "bottle of Left 4 Zed" - desc = "Contains a fertilizer that lightly heals the plant but causes significant mutations in plants over generations." + desc = "Contains a fertilizer that quickly wilts the plant in exchange for the plant gaining all stats." list_reagents = list(/datum/reagent/plantnutriment/left4zednutriment = 50) /obj/item/reagent_containers/cup/bottle/nutrient/rh diff --git a/code/modules/hydroponics/hydroponics.dm b/code/modules/hydroponics/hydroponics.dm index 72eb6b54e398..5ac57538d8a4 100644 --- a/code/modules/hydroponics/hydroponics.dm +++ b/code/modules/hydroponics/hydroponics.dm @@ -480,7 +480,6 @@ /obj/machinery/hydroponics/proc/update_plant_overlay() var/mutable_appearance/plant_overlay = mutable_appearance(myseed.growing_icon, layer = OBJ_LAYER + 0.01) - plant_overlay.pixel_y = myseed.seed_offset switch(plant_status) if(HYDROTRAY_PLANT_DEAD) plant_overlay.icon_state = myseed.icon_dead @@ -656,7 +655,7 @@ if(8 to 9) new_seed = new /obj/item/seeds/chanter(src) if(6 to 7) - new_seed = new /obj/item/seeds/tower(src) + new_seed = new /obj/item/seeds/tree(src) if(4 to 5) new_seed = new /obj/item/seeds/plump(src) else diff --git a/code/modules/hydroponics/hydroponics_chemreact.dm b/code/modules/hydroponics/hydroponics_chemreact.dm index 4d9ee050fae4..44e3362811ad 100644 --- a/code/modules/hydroponics/hydroponics_chemreact.dm +++ b/code/modules/hydroponics/hydroponics_chemreact.dm @@ -7,10 +7,6 @@ if(myseed) myseed.on_chem_reaction(reagents) //In case seeds have some special interactions with special chems, currently only used by vines - for(var/c in reagents.reagent_list) - var/datum/reagent/chem = c - chem.on_hydroponics_apply(myseed, reagents, src, user) - /obj/machinery/hydroponics/proc/mutation_roll(mob/user) switch(rand(100)) diff --git a/code/modules/hydroponics/seeds.dm b/code/modules/hydroponics/seeds.dm index 47fa445a4bcc..b86e545dbc5c 100644 --- a/code/modules/hydroponics/seeds.dm +++ b/code/modules/hydroponics/seeds.dm @@ -71,8 +71,6 @@ var/list/infusion_mutations = list() ///infusion damage var/infusion_damage = 0 - /// How many pixels on the Y axis this plant should be shifted. - var/seed_offset = 0 /obj/item/seeds/Initialize(mapload, nogenes = FALSE) . = ..() @@ -97,7 +95,7 @@ var/list/generated_infusions = list() for(var/datum/hydroponics/plant_mutation/infusion/listed_item as anything in infusion_mutations) var/datum/hydroponics/plant_mutation/infusion/created_list_item = new listed_item - generated_mutations += created_list_item + generated_infusions += created_list_item infusion_mutations = generated_infusions if(!nogenes) // not used on Copy() @@ -184,7 +182,7 @@ copy_seed.icon_dead = icon_dead copy_seed.growthstages = growthstages copy_seed.growing_icon = growing_icon - copy_seed.seed_offset = seed_offset + copy_seed.plant_icon_offset = plant_icon_offset copy_seed.traits_in_progress = traits_in_progress if(istype(src, /obj/item/seeds/spliced)) @@ -233,10 +231,6 @@ /obj/item/seeds/bullet_act(obj/projectile/Proj) //Works with the Somatoray to modify plant variables. if(istype(Proj, /obj/projectile/energy/flora/yield)) var/rating = 1 - if(istype(loc, /obj/machinery/hydroponics)) - var/obj/machinery/hydroponics/H = loc - rating = H.rating - if(yield == 0)//Oh god don't divide by zero you'll doom us all. adjust_yield(1 * rating) else if(prob(1/(yield * yield) * 100))//This formula gives you diminishing returns based on yield. 100% with 1 yield, decreasing to 25%, 11%, 6, 4, 2... @@ -247,21 +241,12 @@ // Harvest procs /obj/item/seeds/proc/getYield() - var/return_yield = yield - - var/obj/machinery/hydroponics/parent = loc - if(istype(loc, /obj/machinery/hydroponics)) - if(parent.yieldmod == 0) - return_yield = min(return_yield, 1)//1 if above zero, 0 otherwise - else - return_yield *= (parent.yieldmod) - - return return_yield + return yield /obj/item/seeds/proc/harvest(mob/user) ///Reference to the tray/soil the seeds are planted in. - var/obj/machinery/hydroponics/parent = loc //for ease of access + var/atom/movable/parent = loc //for ease of access ///Count used for creating the correct amount of results to the harvest. var/t_amount = 0 ///List of plants all harvested from the same batch. @@ -298,20 +283,20 @@ t_amount++ continue t_prod = new product(output_loc, src) - if(parent.myseed.plantname != initial(parent.myseed.plantname)) - t_prod.name = parent.myseed.plantname - t_prod.seed.name = parent.myseed.name - t_prod.seed.desc = parent.myseed.desc - t_prod.seed.plantname = parent.myseed.plantname + if(plantname != initial(plantname)) + t_prod.name = plantname + if(istype(t_prod)) + t_prod.seed.name = name + t_prod.seed.desc = desc + t_prod.seed.plantname = plantname result.Add(t_prod) // User gets a consumable if(!t_prod) return t_amount++ - product_name = t_prod.seed.plantname + if(istype(t_prod)) + product_name = t_prod.seed.plantname if(product_count >= 1) SSblackbox.record_feedback("tally", "food_harvested", product_count, product_name) - parent.update_tray(user, product_count) - parent.update_overlays() return result /** diff --git a/code/modules/hydroponics/unique_plant_genes.dm b/code/modules/hydroponics/unique_plant_genes.dm index 560a5dc29c96..0cc9a3188258 100644 --- a/code/modules/hydroponics/unique_plant_genes.dm +++ b/code/modules/hydroponics/unique_plant_genes.dm @@ -643,7 +643,7 @@ * our_seed - the seed growing * grown_tray - the tray we were planted in */ -/datum/plant_gene/trait/gas_production/proc/set_home_tray(obj/item/seeds/our_seed, obj/machinery/hydroponics/grown_tray) +/datum/plant_gene/trait/gas_production/proc/set_home_tray(obj/item/seeds/our_seed, atom/movable/grown_tray) SIGNAL_HANDLER home_tray = WEAKREF(grown_tray) @@ -654,10 +654,11 @@ * our_seed - the seed growing * grown_tray - the tray, we're currently growing within */ -/datum/plant_gene/trait/gas_production/proc/try_release_gas(obj/item/seeds/our_seed, obj/machinery/hydroponics/grown_tray) +/datum/plant_gene/trait/gas_production/proc/try_release_gas(obj/item/seeds/our_seed, atom/movable/grown_tray) SIGNAL_HANDLER - if(grown_tray.age < our_seed.maturation) // Start a little before it blooms + var/datum/component/growth_information/info = our_seed.GetComponent(/datum/component/growth_information) + if(info.growth_precent < 90) return START_PROCESSING(SSobj, src) @@ -675,7 +676,7 @@ */ /datum/plant_gene/trait/gas_production/process(seconds_per_tick) var/obj/item/seeds/seed = stinky_seed?.resolve() - var/obj/machinery/hydroponics/tray = home_tray?.resolve() + var/atom/movable/tray = home_tray?.resolve() // If our weakrefs don't resolve, or if our seed is /somehow/ not in the tray it was planted in, stop processing. if(!seed || !tray || seed.loc != tray) diff --git a/code/modules/logging/log_category.dm b/code/modules/logging/log_category.dm index 359f9d47f249..c2bfd28f7a1d 100644 --- a/code/modules/logging/log_category.dm +++ b/code/modules/logging/log_category.dm @@ -31,7 +31,7 @@ GENERAL_PROTECT_DATUM(/datum/log_category) /// Add an entry to this category. It is very important that any data you provide doesn't hold references to anything! -/datum/log_category/proc/create_entry(message, list/data, list/semver_store) +/datum/log_category/proc/create_entry(message, list/data, list/semver_store, severity) var/datum/log_entry/entry = new( // world state contains raw timestamp timestamp = logger.human_readable_timestamp(), @@ -39,6 +39,7 @@ GENERAL_PROTECT_DATUM(/datum/log_category) message = message, data = data, semver_store = semver_store, + severity = severity ) write_entry(entry) diff --git a/code/modules/logging/log_entry.dm b/code/modules/logging/log_entry.dm index df87f9330987..a1e4d0a8f60c 100644 --- a/code/modules/logging/log_entry.dm +++ b/code/modules/logging/log_entry.dm @@ -27,18 +27,22 @@ /// Data of the log entry; optional. var/list/data + ///severity level of this log + var/severity = "info" + /// Semver store of the log entry, used to store the schema of data entries var/list/semver_store GENERAL_PROTECT_DATUM(/datum/log_entry) -/datum/log_entry/New(timestamp, category, message, list/data, list/semver_store) +/datum/log_entry/New(timestamp, category, message, list/data, list/semver_store, severity = "info") ..() src.id = next_id++ src.timestamp = timestamp src.category = category src.message = message + src.severity = severity with_data(data) with_semver_store(semver_store) @@ -74,6 +78,7 @@ GENERAL_PROTECT_DATUM(/datum/log_entry) // I do not trust byond's json encoder, and need to ensure the order doesn't change. var/list/json_entries = list() MANUAL_JSON_ENTRY(json_entries, LOG_ENTRY_KEY_TIMESTAMP, timestamp) + MANUAL_JSON_ENTRY(json_entries, LOG_ENTRY_KEY_ROUNDID, GLOB.round_id) // monkestation edit MANUAL_JSON_ENTRY(json_entries, LOG_ENTRY_KEY_CATEGORY, category) MANUAL_JSON_ENTRY(json_entries, LOG_ENTRY_KEY_MESSAGE, message) MANUAL_JSON_ENTRY(json_entries, LOG_ENTRY_KEY_DATA, data) @@ -81,6 +86,7 @@ GENERAL_PROTECT_DATUM(/datum/log_entry) MANUAL_JSON_ENTRY(json_entries, LOG_ENTRY_KEY_SEMVER_STORE, semver_store) MANUAL_JSON_ENTRY(json_entries, LOG_ENTRY_KEY_ID, id) MANUAL_JSON_ENTRY(json_entries, LOG_ENTRY_KEY_SCHEMA_VERSION, schema_version) + MANUAL_JSON_ENTRY(json_entries, "level", severity) return "{[json_entries.Join(",")]}" #undef MANUAL_JSON_ENTRY diff --git a/code/modules/logging/log_holder.dm b/code/modules/logging/log_holder.dm index 37f2ca4cae60..ecfdf5d7851c 100644 --- a/code/modules/logging/log_holder.dm +++ b/code/modules/logging/log_holder.dm @@ -293,7 +293,7 @@ GENERAL_PROTECT_DATUM(/datum/log_holder) /// Adds an entry to the given category, if the category is disabled it will not be logged. /// If the category does not exist, we will CRASH and log to the error category. /// the data list is optional and will be recursively json serialized. -/datum/log_holder/proc/Log(category, message, list/data) +/datum/log_holder/proc/Log(category, message, list/data, severity = "info") // This is Log because log is a byond internal proc if(shutdown) return @@ -327,7 +327,7 @@ GENERAL_PROTECT_DATUM(/datum/log_holder) if(length(data)) semver_store = list() data = recursive_jsonify(data, semver_store) - log_category.create_entry(message, data, semver_store) + log_category.create_entry(message, data, semver_store, severity) /// Recursively converts an associative list of datums into their jsonified(list) form /datum/log_holder/proc/recursive_jsonify(list/data_list, list/semvers) diff --git a/code/modules/mapping/reader.dm b/code/modules/mapping/reader.dm index f4f4b985c39b..ca91c58847fb 100644 --- a/code/modules/mapping/reader.dm +++ b/code/modules/mapping/reader.dm @@ -1067,7 +1067,6 @@ GLOBAL_LIST_EMPTY(map_model_default) return text /datum/parsed_map/Destroy() - ..() SSatoms.map_loader_stop(REF(src)) // Just in case, I don't want to double up here if(turf_blacklist) turf_blacklist.Cut() @@ -1075,7 +1074,7 @@ GLOBAL_LIST_EMPTY(map_model_default) bounds.Cut() grid_models.Cut() gridSets.Cut() - return QDEL_HINT_HARDDEL_NOW + return ..() #undef MAP_DMM #undef MAP_TGM diff --git a/code/modules/mining/equipment/monster_organs/regenerative_core.dm b/code/modules/mining/equipment/monster_organs/regenerative_core.dm index 3f7c2058be82..f1ac86146793 100644 --- a/code/modules/mining/equipment/monster_organs/regenerative_core.dm +++ b/code/modules/mining/equipment/monster_organs/regenerative_core.dm @@ -14,16 +14,16 @@ /obj/item/organ/internal/monster_core/regenerative_core/preserve(implanted = FALSE) if (implanted) - SSblackbox.record_feedback("nested tally", "hivelord_core", 1, list("[type]", "implanted")) + SSblackbox.record_feedback("nested tally", "hivelord_core", 1, list("[initial(name)]", "implanted")) else - SSblackbox.record_feedback("nested tally", "hivelord_core", 1, list("[type]", "stabilizer")) + SSblackbox.record_feedback("nested tally", "hivelord_core", 1, list("[initial(name)]]", "stabilizer")) return ..() /obj/item/organ/internal/monster_core/regenerative_core/go_inert() . = .. () if (!.) return - SSblackbox.record_feedback("nested tally", "hivelord_core", 1, list("[type]", "inert")) + SSblackbox.record_feedback("nested tally", "hivelord_core", 1, list("[initial(name)]]", "inert")) /obj/item/organ/internal/monster_core/regenerative_core/on_life(seconds_per_tick, times_fired) . = ..() @@ -39,10 +39,10 @@ target.add_mood_event(MOOD_CATEGORY_LEGION_CORE, /datum/mood_event/healsbadman) if (target != user) target.visible_message(span_notice("[user] forces [target] to apply [src]... Black tendrils entangle and reinforce [target.p_them()]!")) - SSblackbox.record_feedback("nested tally", "hivelord_core", 1, list("[type]", "used", "other")) + SSblackbox.record_feedback("nested tally", "hivelord_core", 1, list("[initial(name)]]", "used", "other")) else to_chat(user, span_notice("You start to smear [src] on yourself. Disgusting tendrils hold you together and allow you to keep moving, but for how long?")) - SSblackbox.record_feedback("nested tally", "hivelord_core", 1, list("[type]", "used", "self")) + SSblackbox.record_feedback("nested tally", "hivelord_core", 1, list("[initial(name)]]", "used", "self")) return ..() /// Different graphics/desc for the lavaland legion diff --git a/code/modules/mob/living/basic/farm_animals/bee/_bee.dm b/code/modules/mob/living/basic/farm_animals/bee/_bee.dm index 85d03a4aa4f8..997705880ab7 100644 --- a/code/modules/mob/living/basic/farm_animals/bee/_bee.dm +++ b/code/modules/mob/living/basic/farm_animals/bee/_bee.dm @@ -117,8 +117,8 @@ /mob/living/basic/bee/proc/pre_attack(mob/living/puncher, atom/target) SIGNAL_HANDLER - if(istype(target, /obj/machinery/hydroponics)) - var/obj/machinery/hydroponics/hydro = target + if(target.GetComponent(/datum/component/plant_growing)) + var/atom/movable/hydro = target pollinate(hydro) return COMPONENT_HOSTILE_NO_ATTACK @@ -166,25 +166,11 @@ add_overlay("[icon_base]_wings") -/mob/living/basic/bee/proc/pollinate(obj/machinery/hydroponics/hydro) - if(!hydro.can_bee_pollinate()) - return FALSE - hydro.recent_bee_visit = TRUE - addtimer(VARSET_CALLBACK(hydro, recent_bee_visit, FALSE), BEE_TRAY_RECENT_VISIT) - - var/growth = health //Health also means how many bees are in the swarm, roughly. - //better healthier plants! - hydro.adjust_plant_health(growth*0.5) - if(prob(BEE_POLLINATE_PEST_CHANCE)) - hydro.adjust_pestlevel(-10) - if(prob(BEE_POLLINATE_YIELD_CHANCE)) - hydro.myseed.adjust_yield(1) - hydro.yieldmod = 2 - if(prob(BEE_POLLINATE_POTENCY_CHANCE)) - hydro.myseed.adjust_potency(1) +/mob/living/basic/bee/proc/pollinate(atom/movable/hydro) + SEND_SIGNAL(hydro, COMSIG_TRY_POLLINATE) if(beehome) - beehome.bee_resources = min(beehome.bee_resources + growth, 100) + beehome.bee_resources = min(beehome.bee_resources + health, 100) /mob/living/basic/bee/proc/assign_reagent(datum/reagent/toxin) if(!istype(toxin)) diff --git a/code/modules/mob/living/basic/farm_animals/bee/bee_ai_behavior.dm b/code/modules/mob/living/basic/farm_animals/bee/bee_ai_behavior.dm index 3d2d81bf9c19..9d2a9760470b 100644 --- a/code/modules/mob/living/basic/farm_animals/bee/bee_ai_behavior.dm +++ b/code/modules/mob/living/basic/farm_animals/bee/bee_ai_behavior.dm @@ -1,14 +1,14 @@ /datum/ai_behavior/hunt_target/pollinate always_reset_target = TRUE -/datum/ai_behavior/hunt_target/pollinate/target_caught(mob/living/hunter, obj/machinery/hydroponics/hydro_target) +/datum/ai_behavior/hunt_target/pollinate/target_caught(mob/living/hunter, atom/movable/hydro_target) var/datum/callback/callback = CALLBACK(hunter, TYPE_PROC_REF(/mob/living/basic/bee, pollinate), hydro_target) callback.Invoke() /datum/ai_behavior/find_hunt_target/pollinate -/datum/ai_behavior/find_hunt_target/pollinate/valid_dinner(mob/living/source, obj/machinery/hydroponics/dinner, radius) - if(!dinner.can_bee_pollinate()) +/datum/ai_behavior/find_hunt_target/pollinate/valid_dinner(mob/living/source, atom/movable/dinner, radius) + if(SEND_SIGNAL(dinner, COMSIG_GROWER_CHECK_POLLINATED)) return FALSE return can_see(source, dinner, radius) diff --git a/code/modules/mob/living/basic/farm_animals/bee/bee_ai_subtree.dm b/code/modules/mob/living/basic/farm_animals/bee/bee_ai_subtree.dm index 242eb9ae4d7e..932d038a4bda 100644 --- a/code/modules/mob/living/basic/farm_animals/bee/bee_ai_subtree.dm +++ b/code/modules/mob/living/basic/farm_animals/bee/bee_ai_subtree.dm @@ -81,6 +81,6 @@ target_key = BB_TARGET_HYDRO hunting_behavior = /datum/ai_behavior/hunt_target/pollinate finding_behavior = /datum/ai_behavior/find_hunt_target/pollinate - hunt_targets = list(/obj/machinery/hydroponics) + hunt_targets = list(/obj/machinery/growing) hunt_range = 10 hunt_chance = 85 diff --git a/code/modules/mob/living/basic/jungle/seedling/seedling.dm b/code/modules/mob/living/basic/jungle/seedling/seedling.dm index 61a1a59f338a..0968ef6bc5b8 100644 --- a/code/modules/mob/living/basic/jungle/seedling/seedling.dm +++ b/code/modules/mob/living/basic/jungle/seedling/seedling.dm @@ -86,7 +86,7 @@ /mob/living/basic/seedling/proc/pre_attack(mob/living/puncher, atom/target) SIGNAL_HANDLER - if(istype(target, /obj/machinery/hydroponics)) + if(target.GetComponent(/datum/component/plant_growing)) treat_hydro_tray(target) return COMPONENT_HOSTILE_NO_ATTACK @@ -99,24 +99,33 @@ ///seedlings can water trays, remove weeds, or remove dead plants -/mob/living/basic/seedling/proc/treat_hydro_tray(obj/machinery/hydroponics/hydro) - - if(hydro.plant_status == HYDROTRAY_PLANT_DEAD) - balloon_alert(src, "dead plant removed") - hydro.set_seed(null) +/mob/living/basic/seedling/proc/treat_hydro_tray(atom/movable/hydro) + var/datum/component/plant_growing/growing = hydro.GetComponent(/datum/component/plant_growing) + if(!growing) return - if(hydro.weedlevel > 0) - balloon_alert(src, "weeds uprooted") - hydro.set_weedlevel(0) - return + for(var/item as anything in growing.managed_seeds) + var/obj/item/seeds/seed = growing.managed_seeds[item] + if(!seed) + continue + var/datum/component/growth_information/info = seed.GetComponent(/datum/component/growth_information) + + if(info.plant_state == HYDROTRAY_PLANT_DEAD) + balloon_alert(src, "dead plant removed") + SEND_SIGNAL(hydro, COMSIG_REMOVE_PLANT, item) + return + + if(growing.weed_level > 0) + balloon_alert(src, "weeds uprooted") + SEND_SIGNAL(hydro, COMSIG_PLANT_ADJUST_WEED, -10) + return var/list/can_reagents = held_can?.reagents.reagent_list if(!length(can_reagents)) return - if((locate(/datum/reagent/water) in can_reagents) && (hydro.waterlevel < hydro.maxwater)) + if((locate(/datum/reagent/water) in can_reagents) && (growing.water_precent < 100)) INVOKE_ASYNC(held_can, TYPE_PROC_REF(/obj/item, melee_attack_chain), src, hydro) return @@ -324,12 +333,17 @@ /datum/action/cooldown/mob_cooldown/solarbeam/proc/launch_beam(mob/living/firer, turf/target_turf) for(var/atom/target_atom as anything in target_turf) - if(istype(target_atom, /obj/machinery/hydroponics)) - var/obj/machinery/hydroponics/hydro = target_atom - hydro.adjust_plant_health(10) + if(target_atom.GetComponent(/datum/component/plant_growing)) + var/datum/component/plant_growing/growing = target_atom.GetComponent(/datum/component/plant_growing) + for(var/item as anything in growing.managed_seeds) + var/obj/item/seeds/seed = growing.managed_seeds[item] + if(!seed) + continue + SEND_SIGNAL(seed, COMSIG_ADJUST_PLANT_HEALTH, 10) + new /obj/effect/temp_visual/heal(target_turf, COLOR_HEALING_CYAN) - if(!isliving(target_atom)) + if(!isliving(target_atom) || istype(target_atom, /mob/living/basic/pet/potty)) continue var/mob/living/living_target = target_atom diff --git a/code/modules/mob/living/basic/jungle/seedling/seedling_ai.dm b/code/modules/mob/living/basic/jungle/seedling/seedling_ai.dm index 2ed4811e46f2..47aaa3beb227 100644 --- a/code/modules/mob/living/basic/jungle/seedling/seedling_ai.dm +++ b/code/modules/mob/living/basic/jungle/seedling/seedling_ai.dm @@ -33,7 +33,7 @@ target_key = BB_HYDROPLANT_TARGET finding_behavior = /datum/ai_behavior/find_and_set/treatable_hydro hunting_behavior = /datum/ai_behavior/hunt_target/unarmed_attack_target/treat_hydroplant - hunt_targets = list(/obj/machinery/hydroponics) + hunt_targets = list(/obj/machinery/growing/tray) hunt_range = 7 /datum/ai_behavior/find_and_set/treatable_hydro @@ -45,13 +45,17 @@ var/weedlevel_threshold = controller.blackboard[BB_WEEDLEVEL_THRESHOLD] var/watering_can = locate(/obj/item/reagent_containers/cup/watering_can) in living_pawn - for(var/obj/machinery/hydroponics/hydro in oview(search_range, controller.pawn)) - if(isnull(hydro.myseed)) + for(var/atom/movable/hydro in oview(search_range, controller.pawn)) + if(!hydro.GetComponent(/datum/component/plant_growing)) continue - if(hydro.waterlevel < waterlevel_threshold && watering_can) + if(!(locate(/obj/item/seeds) in hydro.contents)) + continue + + var/datum/component/plant_growing/grow = hydro.GetComponent(/datum/component/plant_growing) + if(grow.water_precent < waterlevel_threshold && watering_can) possible_trays += hydro continue - if(hydro.weedlevel > weedlevel_threshold || hydro.plant_status == HYDROTRAY_PLANT_DEAD) + if(grow.weed_level > weedlevel_threshold) possible_trays += hydro continue @@ -62,12 +66,21 @@ hunt_cooldown = 2 SECONDS always_reset_target = TRUE -/datum/ai_behavior/hunt_target/unarmed_attack_target/treat_hydroplant/target_caught(mob/living/living_pawn, obj/machinery/hydroponics/hydro_target) - if(QDELETED(hydro_target) || QDELETED(hydro_target.myseed)) +/datum/ai_behavior/hunt_target/unarmed_attack_target/treat_hydroplant/target_caught(mob/living/living_pawn, atom/movable/hydro_target) + var/datum/component/plant_growing/growing = hydro_target.GetComponent(/datum/component/plant_growing) + if(!growing) + return + + if(QDELETED(hydro_target)) return - if(hydro_target.plant_status == HYDROTRAY_PLANT_DEAD) - living_pawn.manual_emote("weeps...") //weep over the dead plants + for(var/item as anything in growing.managed_seeds) + var/obj/item/seeds/seed = growing.managed_seeds[item] + if(!seed) + continue + var/datum/component/growth_information/info = seed.GetComponent(/datum/component/growth_information) + if(info.plant_state == HYDROTRAY_PLANT_DEAD) + living_pawn.manual_emote("weeps...") //weep over the dead plants return ..() @@ -75,7 +88,7 @@ target_key = BB_BEAMABLE_HYDROPLANT_TARGET finding_behavior = /datum/ai_behavior/find_and_set/beamable_hydroplants hunting_behavior = /datum/ai_behavior/hunt_target/use_ability_on_target/solarbeam - hunt_targets = list(/obj/machinery/hydroponics) + hunt_targets = list(/obj/machinery/growing) hunt_range = 7 /datum/ai_planning_subtree/find_and_hunt_target/beamable_hydroplants/SelectBehaviors(datum/ai_controller/controller, seconds_per_tick) @@ -100,11 +113,21 @@ /datum/ai_behavior/find_and_set/beamable_hydroplants/search_tactic(datum/ai_controller/controller, locate_path, search_range) var/list/possible_trays = list() - for(var/obj/machinery/hydroponics/hydro in oview(search_range, controller.pawn)) - if(isnull(hydro.myseed)) + for(var/atom/movable/hydro in oview(search_range, controller.pawn)) + if(!hydro.GetComponent(/datum/component/plant_growing)) continue - if(hydro.plant_health < hydro.myseed.endurance) - possible_trays += hydro + if(!(locate(/obj/item/seeds) in hydro.contents)) + continue + + var/datum/component/plant_growing/growing = hydro.GetComponent(/datum/component/plant_growing) + for(var/item as anything in growing.managed_seeds) + var/obj/item/seeds/seed = growing.managed_seeds[item] + if(!seed) + continue + var/datum/component/growth_information/info = seed.GetComponent(/datum/component/growth_information) + if(info.health_value < seed.endurance) + possible_trays |= hydro + break if(possible_trays.len) return pick(possible_trays) diff --git a/code/modules/mob/living/basic/space_fauna/revenant/revenant_abilities.dm b/code/modules/mob/living/basic/space_fauna/revenant/revenant_abilities.dm index 2bc080de59ef..0d218d73ec14 100644 --- a/code/modules/mob/living/basic/space_fauna/revenant/revenant_abilities.dm +++ b/code/modules/mob/living/basic/space_fauna/revenant/revenant_abilities.dm @@ -277,11 +277,14 @@ shroom.add_atom_colour("#823abb", TEMPORARY_COLOUR_PRIORITY) new /obj/effect/temp_visual/revenant(shroom.loc) QDEL_IN(shroom, 10) - for(var/obj/machinery/hydroponics/tray in victim) + for(var/atom/movable/tray in victim) + if(!tray.GetComponent(/datum/component/plant_growing)) + continue + new /obj/effect/temp_visual/revenant(tray.loc) - tray.set_pestlevel(rand(8, 10)) - tray.set_weedlevel(rand(8, 10)) - tray.set_toxic(rand(45, 55)) + SEND_SIGNAL(tray, COMSIG_GROWING_ADJUST_TOXIN, rand(45, 55)) + SEND_SIGNAL(tray, COMSIG_GROWING_ADJUST_PEST, rand(8, 10)) + SEND_SIGNAL(tray, COMSIG_GROWING_ADJUST_WEED, rand(8, 10)) /datum/action/cooldown/spell/aoe/revenant/haunt_object name = "Haunt Object" diff --git a/code/modules/mob/living/brain/brain_item.dm b/code/modules/mob/living/brain/brain_item.dm index 76b09bc390a6..b34d3d7e2941 100644 --- a/code/modules/mob/living/brain/brain_item.dm +++ b/code/modules/mob/living/brain/brain_item.dm @@ -460,7 +460,7 @@ actual_trauma.on_gain() if(resilience) actual_trauma.resilience = resilience - SSblackbox.record_feedback("tally", "traumas", 1, actual_trauma.type) + SSblackbox.record_feedback("tally", "traumas", 1, actual_trauma) return actual_trauma /// Adds the passed trauma instance to our list of traumas and links it to our brain. diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index 494e4b9dc724..282b9e494269 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -172,7 +172,7 @@ SEND_SIGNAL(I, COMSIG_ITEM_ATTACK_ZONE, src, user, affecting) I.disease_contact(src, check_zone(user.zone_selected)) - SSblackbox.record_feedback("nested tally", "item_used_for_combat", 1, list("[I.force]", "[I.type]")) + SSblackbox.record_feedback("nested tally", "item_used_for_combat", 1, list("[I.force]", "[initial(I.name)]")) SSblackbox.record_feedback("tally", "zone_targeted", 1, target_area) // the attacked_by code varies among species diff --git a/code/modules/mob/living/carbon/human/human_helpers.dm b/code/modules/mob/living/carbon/human/human_helpers.dm index 14b1318cc47e..3734ef71d105 100644 --- a/code/modules/mob/living/carbon/human/human_helpers.dm +++ b/code/modules/mob/living/carbon/human/human_helpers.dm @@ -57,7 +57,7 @@ return if_no_id //repurposed proc. Now it combines get_id_name() and get_face_name() to determine a mob's name variable. Made into a separate proc as it'll be useful elsewhere -/mob/living/carbon/human/get_visible_name() +/mob/living/carbon/human/get_visible_name(add_id_name = TRUE) var/face_name = get_face_name("") var/id_name = get_id_name("") if(HAS_TRAIT(src, TRAIT_UNKNOWN)) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 57b437207346..8ad2aab931fe 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -1183,7 +1183,8 @@ /mob/living/proc/resist_restraints() return -/mob/living/proc/get_visible_name() +/// Used by mobs to determine the name for someone wearing a mask, or with a disfigured or missing face. By default just returns the atom's name. add_id_name will control whether or not we append "(as [id_name])". +/atom/proc/get_visible_name(add_id_name) return name /mob/living/proc/update_gravity(gravity) diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index ea0fb8f64a31..816ef408d777 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -71,6 +71,7 @@ /obj/item/paper/Initialize(mapload) . = ..() + AddComponent(/datum/component/customizable_reagent_holder, /obj/item/clothing/mask/cigarette/rollie, CUSTOM_INGREDIENT_ICON_NOCHANGE, ingredient_type=CUSTOM_INGREDIENT_TYPE_DRYABLE, max_ingredients=2, job_xp = 1, job = JOB_BOTANIST) pixel_x = base_pixel_x + rand(-9, 9) pixel_y = base_pixel_y + rand(-8, 8) diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index fe994db74756..8cea3e0b7fcb 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -422,7 +422,7 @@ if(user) user.update_held_items() - SSblackbox.record_feedback("tally", "gun_fired", 1, type) + SSblackbox.record_feedback("tally", "gun_fired", 1, initial(name)) return TRUE diff --git a/code/modules/projectiles/guns/special/medbeam.dm b/code/modules/projectiles/guns/special/medbeam.dm index d3ee77ef3b3a..d25943e95bfe 100644 --- a/code/modules/projectiles/guns/special/medbeam.dm +++ b/code/modules/projectiles/guns/special/medbeam.dm @@ -70,7 +70,7 @@ current_beam = user.Beam(current_target, icon_state="medbeam", time = 10 MINUTES, maxdistance = max_range, beam_type = /obj/effect/ebeam/medical) RegisterSignal(current_beam, COMSIG_QDELETING, PROC_REF(beam_died))//this is a WAY better rangecheck than what was done before (process check) - SSblackbox.record_feedback("tally", "gun_fired", 1, type) + SSblackbox.record_feedback("tally", "gun_fired", 1, initial(name)) /obj/item/gun/medbeam/process() if(!mounted && !isliving(loc)) diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm index e365af020e26..e545cf615acb 100644 --- a/code/modules/projectiles/projectile/magic.dm +++ b/code/modules/projectiles/projectile/magic.dm @@ -19,13 +19,16 @@ visible_message(span_warning("[src] fizzles on contact with [victim]!")) return PROJECTILE_DELETE_WITHOUT_HITTING - if(istype(target, /obj/machinery/hydroponics)) // even plants can block antimagic - var/obj/machinery/hydroponics/plant_tray = target - if(!plant_tray.myseed) - return - if(plant_tray.myseed.get_gene(/datum/plant_gene/trait/anti_magic)) - visible_message(span_warning("[src] fizzles on contact with [plant_tray]!")) - return PROJECTILE_DELETE_WITHOUT_HITTING + if(target.GetComponent(/datum/component/plant_growing)) // even plants can block antimagic + var/datum/component/plant_growing/growing = target.GetComponent(/datum/component/plant_growing) + + for(var/item as anything in growing.managed_seeds) + var/obj/item/seeds/seed = growing.managed_seeds[item] + if(!seed) + continue + if(seed.get_gene(/datum/plant_gene/trait/anti_magic)) + visible_message(span_warning("[src] fizzles on contact with [target]!")) + return PROJECTILE_DELETE_WITHOUT_HITTING /obj/projectile/magic/death name = "bolt of death" @@ -46,12 +49,14 @@ victim.investigate_log("has been killed by a bolt of death.", INVESTIGATE_DEATHS) victim.death() - if(istype(target, /obj/machinery/hydroponics)) - var/obj/machinery/hydroponics/plant_tray = target - if(!plant_tray.myseed) - return - plant_tray.set_weedlevel(0) // even the weeds perish - plant_tray.plantdies() + if(target.GetComponent(/datum/component/plant_growing)) // even plants can block antimagic + var/datum/component/plant_growing/growing = target.GetComponent(/datum/component/plant_growing) + + for(var/item as anything in growing.managed_seeds) + var/obj/item/seeds/seed = growing.managed_seeds[item] + if(!seed) + continue + SEND_SIGNAL(seed, COMSIG_ADJUST_PLANT_HEALTH, -300) /obj/projectile/magic/resurrection name = "bolt of resurrection" @@ -73,11 +78,14 @@ else if(victim.stat != DEAD) to_chat(victim, span_notice("You feel great!")) - if(istype(target, /obj/machinery/hydroponics)) - var/obj/machinery/hydroponics/plant_tray = target - if(!plant_tray.myseed) - return - plant_tray.set_plant_health(plant_tray.myseed.endurance, forced = TRUE) + if(target.GetComponent(/datum/component/plant_growing)) // even plants can block antimagic + var/datum/component/plant_growing/growing = target.GetComponent(/datum/component/plant_growing) + + for(var/item as anything in growing.managed_seeds) + var/obj/item/seeds/seed = growing.managed_seeds[item] + if(!seed) + continue + SEND_SIGNAL(seed, COMSIG_ADJUST_PLANT_HEALTH, 1000) /obj/projectile/magic/teleport name = "bolt of teleportation" @@ -160,12 +168,6 @@ var/mob/living/victim = target victim.wabbajack(set_wabbajack_effect, set_wabbajack_changeflags) - if(istype(target, /obj/machinery/hydroponics)) - var/obj/machinery/hydroponics/plant_tray = target - if(!plant_tray.myseed) - return - plant_tray.polymorph() - /obj/projectile/magic/animate name = "bolt of animation" icon_state = "red_1" diff --git a/code/modules/reagents/chemistry/equilibrium.dm b/code/modules/reagents/chemistry/equilibrium.dm index a30a1cda6324..4e1aaeca21bf 100644 --- a/code/modules/reagents/chemistry/equilibrium.dm +++ b/code/modules/reagents/chemistry/equilibrium.dm @@ -69,7 +69,7 @@ to_delete = TRUE return LAZYADD(holder.reaction_list, src) - SSblackbox.record_feedback("tally", "chemical_reaction", 1, "[reaction.type] attempts") + SSblackbox.record_feedback("tally", "chemical_reaction", 1, "[reaction] attempts") /datum/equilibrium/Destroy() @@ -210,11 +210,11 @@ //Are we overheated? if(reaction.is_cold_recipe) if(holder.chem_temp < reaction.overheat_temp && reaction.overheat_temp != NO_OVERHEAT) //This is before the process - this is here so that overly_impure and overheated() share the same code location (and therefore vars) for calls. - SSblackbox.record_feedback("tally", "chemical_reaction", 1, "[reaction.type] overheated reaction steps") + SSblackbox.record_feedback("tally", "chemical_reaction", 1, "[reaction] overheated reaction steps") reaction.overheated(holder, src, step_volume_added) else if(holder.chem_temp > reaction.overheat_temp) - SSblackbox.record_feedback("tally", "chemical_reaction", 1, "[reaction.type] overheated reaction steps") + SSblackbox.record_feedback("tally", "chemical_reaction", 1, "[reaction] overheated reaction steps") reaction.overheated(holder, src, step_volume_added) //is our product too impure? @@ -223,7 +223,7 @@ if(!reagent) //might be missing from overheat exploding continue if (reagent.purity < reaction.purity_min)//If purity is below the min, call the proc - SSblackbox.record_feedback("tally", "chemical_reaction", 1, "[reaction.type] overly impure reaction steps") + SSblackbox.record_feedback("tally", "chemical_reaction", 1, "[reaction] overly impure reaction steps") reaction.overly_impure(holder, src, step_volume_added) //did we explode? diff --git a/code/modules/reagents/chemistry/holder.dm b/code/modules/reagents/chemistry/holder.dm index 264f2a4cce7d..3fd53be8df48 100644 --- a/code/modules/reagents/chemistry/holder.dm +++ b/code/modules/reagents/chemistry/holder.dm @@ -314,10 +314,15 @@ /// Remove an amount of reagents without caring about what they are /datum/reagents/proc/remove_any(amount = 1) + if(!amount) + return + var/list/cached_reagents = reagent_list var/total_removed = 0 var/current_list_element = 1 - var/initial_list_length = cached_reagents.len //stored here because removing can cause some reagents to be deleted, ergo length change. + var/initial_list_length = length(cached_reagents) //stored here because removing can cause some reagents to be deleted, ergo length change. + if(!initial_list_length) + return current_list_element = rand(1, cached_reagents.len) @@ -331,7 +336,7 @@ current_list_element = 1 var/datum/reagent/R = cached_reagents[current_list_element] - var/remove_amt = min(amount-total_removed,round(amount/rand(2,initial_list_length),round(amount/10,0.01))) //double round to keep it at a somewhat even spread relative to amount without getting funky numbers. + var/remove_amt = min(amount-total_removed,round(amount/max(1, rand(2,initial_list_length)),round(amount/10,0.01))) //double round to keep it at a somewhat even spread relative to amount without getting funky numbers. //min ensures we don't go over amount. remove_reagent(R.type, remove_amt) @@ -515,6 +520,7 @@ var/transfer_log = list() var/r_to_send = list() // Validated list of reagents to be exposed var/reagents_to_remove = list() + SEND_SIGNAL(R, COMSIG_REAGENT_PRE_TRANS_TO, src) if(!round_robin) var/part = amount / src.total_volume for(var/datum/reagent/reagent as anything in cached_reagents) @@ -525,6 +531,10 @@ trans_data = copy_data(reagent) if(reagent.intercept_reagents_transfer(R, cached_amount))//Use input amount instead. continue + if(is_reagent_container(my_atom)) + var/obj/item/reagent_containers/container = my_atom + if(SEND_SIGNAL(R, COMSIG_REAGENT_CACHE_ADD_ATTEMPT, reagent, src, container.amount_per_transfer_from_this)) + return if(!R.add_reagent(reagent.type, transfer_amount * multiplier, trans_data, chem_temp, reagent.purity, reagent.ph, no_react = TRUE, ignore_splitting = reagent.chemical_flags & REAGENT_DONOTSPLIT)) //we only handle reaction after every reagent has been transfered. continue if(methods) @@ -557,10 +567,14 @@ var/transfer_amount = amount if(amount > reagent.volume) transfer_amount = reagent.volume - if(reagent.intercept_reagents_transfer(R, cached_amount))//Use input amount instead. + if(is_reagent_container(my_atom)) + var/obj/item/reagent_containers/container = my_atom + if(SEND_SIGNAL(R, COMSIG_REAGENT_CACHE_ADD_ATTEMPT, reagent, src, container.amount_per_transfer_from_this)) + return + if(SEND_SIGNAL(R, COMSIG_REAGENT_CACHE_ADD_ATTEMPT, reagent, src, amount)) continue if(!R.add_reagent(reagent.type, transfer_amount * multiplier, trans_data, chem_temp, reagent.purity, reagent.ph, no_react = TRUE, ignore_splitting = reagent.chemical_flags & REAGENT_DONOTSPLIT)) //we only handle reaction after every reagent has been transfered. - continue + return to_transfer = max(to_transfer - transfer_amount , 0) if(methods) if(isorgan(target_atom)) @@ -1030,7 +1044,7 @@ if(!text_in_list(temp_mix_message, mix_message)) mix_message += temp_mix_message continue - SSblackbox.record_feedback("tally", "chemical_reaction", 1, "[equilibrium.reaction.type] total reaction steps") + SSblackbox.record_feedback("tally", "chemical_reaction", 1, "[equilibrium.reaction] total reaction steps") if(num_reactions) SEND_SIGNAL(src, COMSIG_REAGENTS_REACTION_STEP, num_reactions, seconds_per_tick) diff --git a/code/modules/reagents/chemistry/reagents.dm b/code/modules/reagents/chemistry/reagents.dm index c0f4fd62281b..5d85c69987dd 100644 --- a/code/modules/reagents/chemistry/reagents.dm +++ b/code/modules/reagents/chemistry/reagents.dm @@ -266,27 +266,10 @@ Primarily used in reagents/reaction_agents M.add_mood_event("[type]_overdose", /datum/mood_event/overdose, name) return -/** - * New, standardized method for chemicals to affect hydroponics trays. - * Defined on a per-chem level as opposed to by the tray. - * Can affect plant's health, stats, or cause the plant to react in certain ways. - */ -/datum/reagent/proc/on_hydroponics_apply(obj/item/seeds/myseed, datum/reagents/chems, obj/machinery/hydroponics/mytray, mob/user) - mytray.adjustNutri(round(chems.get_reagent_amount(src.type) * 0.1)) - /datum/reagent/proc/generate_infusion_values(datum/reagents/chems) if(!chems) return -/// Proc is used by [/datum/reagent/proc/on_hydroponics_apply] to see if the tray and the reagents inside is in a valid state to apply reagent effects -/datum/reagent/proc/check_tray(datum/reagents/chems, obj/machinery/hydroponics/mytray) - ASSERT(mytray) - // Check if we have atleast a single amount of the reagent - if(!chems.has_reagent(type, 1)) - return FALSE - - return TRUE - /** * Specifically made for mutation reagent reactions */ diff --git a/code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm index 9ea62c503cbf..42a66921c5f8 100644 --- a/code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm @@ -363,12 +363,6 @@ ..() return TRUE -// Antitoxin binds plants pretty well. So the tox goes significantly down -/datum/reagent/medicine/c2/multiver/on_hydroponics_apply(obj/item/seeds/myseed, datum/reagents/chems, obj/machinery/hydroponics/mytray, mob/user) - . = ..() - if(chems.has_reagent(src.type, 1)) - mytray.adjust_toxic(-round(chems.get_reagent_amount(src.type) * 2)) - #define issyrinormusc(A) (istype(A,/datum/reagent/medicine/c2/syriniver) || istype(A,/datum/reagent/medicine/c2/musiver)) //musc is metab of syrin so let's make sure we're not purging either /datum/reagent/medicine/c2/syriniver //Inject >> SYRINge diff --git a/code/modules/reagents/chemistry/reagents/drinks/alcohol_reagents.dm b/code/modules/reagents/chemistry/reagents/drinks/alcohol_reagents.dm index 1fd79f131f42..0a565b1a279f 100644 --- a/code/modules/reagents/chemistry/reagents/drinks/alcohol_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drinks/alcohol_reagents.dm @@ -50,10 +50,6 @@ addiction_types = list(/datum/addiction/alcohol = 0.05 * boozepwr) return ..() -/datum/reagent/consumable/ethanol/on_hydroponics_apply(obj/item/seeds/myseed, datum/reagents/chems, obj/machinery/hydroponics/mytray, mob/user) - . = ..() - myseed.process_trait_gain(/datum/plant_gene/trait/brewing, ((chems.get_reagent_amount(src.type) * 0.25) + (boozepwr * 0.1))) - /datum/reagent/consumable/ethanol/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, times_fired) if(drinker.get_drunk_amount() < volume * boozepwr * ALCOHOL_THRESHOLD_MODIFIER || boozepwr < 0) var/booze_power = boozepwr @@ -110,13 +106,6 @@ chemical_flags = REAGENT_CAN_BE_SYNTHESIZED glass_price = DRINK_PRICE_STOCK - // Beer is a chemical composition of alcohol and various other things. It's a garbage nutrient but hey, it's still one. Also alcohol is bad, mmmkay? -/datum/reagent/consumable/ethanol/beer/on_hydroponics_apply(obj/item/seeds/myseed, datum/reagents/chems, obj/machinery/hydroponics/mytray, mob/user) - . = ..() - if(chems.has_reagent(src.type, 1)) - mytray.adjust_plant_health(-round(chems.get_reagent_amount(src.type) * 0.05)) - mytray.adjust_waterlevel(round(chems.get_reagent_amount(src.type) * 0.7)) - /datum/reagent/consumable/ethanol/beer/light name = "Light Beer" description = "An alcoholic beverage brewed since ancient times on Old Earth. This variety has reduced calorie and alcohol content." diff --git a/code/modules/reagents/chemistry/reagents/drinks/drink_reagents.dm b/code/modules/reagents/chemistry/reagents/drinks/drink_reagents.dm index 19b9e82f518d..f7aacbb5a381 100644 --- a/code/modules/reagents/chemistry/reagents/drinks/drink_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drinks/drink_reagents.dm @@ -193,14 +193,6 @@ chemical_flags = REAGENT_CAN_BE_SYNTHESIZED default_container = /obj/item/reagent_containers/condiment/milk - // Milk is good for humans, but bad for plants. The sugars cannot be used by plants, and the milk fat harms growth. Not shrooms though. I can't deal with this now... -/datum/reagent/consumable/milk/on_hydroponics_apply(obj/item/seeds/myseed, datum/reagents/chems, obj/machinery/hydroponics/mytray, mob/user) - . = ..() - if(chems.has_reagent(src.type, 1)) - mytray.adjust_waterlevel(round(chems.get_reagent_amount(type) * 1)) - mytray.adjust_plant_health(round(chems.get_reagent_amount(type) * 0.1)) - if(myseed) - myseed.adjust_potency(-chems.get_reagent_amount(src.type) * 0.5) /datum/reagent/consumable/milk/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired) if(affected_mob.getBruteLoss() && SPT_PROB(10, seconds_per_tick)) @@ -590,15 +582,6 @@ taste_description = "carbonated water" chemical_flags = REAGENT_CAN_BE_SYNTHESIZED -// A variety of nutrients are dissolved in club soda, without sugar. -// These nutrients include carbon, oxygen, hydrogen, phosphorous, potassium, sulfur and sodium, all of which are needed for healthy plant growth. -/datum/reagent/consumable/sodawater/on_hydroponics_apply(obj/item/seeds/myseed, datum/reagents/chems, obj/machinery/hydroponics/mytray, mob/user) - . = ..() - if(chems.has_reagent(src.type, 1)) - mytray.adjust_waterlevel(round(chems.get_reagent_amount(type) * 1)) - mytray.adjust_plant_health(round(chems.get_reagent_amount(type) * 0.1)) - - /datum/reagent/consumable/sodawater/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired) affected_mob.adjust_dizzy(-10 SECONDS * REM * seconds_per_tick) affected_mob.adjust_drowsiness(-6 SECONDS * REM * seconds_per_tick) diff --git a/code/modules/reagents/chemistry/reagents/drug_reagents.dm b/code/modules/reagents/chemistry/reagents/drug_reagents.dm index b7be546dc238..928b36764430 100644 --- a/code/modules/reagents/chemistry/reagents/drug_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drug_reagents.dm @@ -82,12 +82,6 @@ chemical_flags = REAGENT_CAN_BE_SYNTHESIZED addiction_types = list(/datum/addiction/nicotine = 15) // 6 per 2 seconds - //Nicotine is used as a pesticide IRL. -/datum/reagent/drug/nicotine/on_hydroponics_apply(obj/item/seeds/myseed, datum/reagents/chems, obj/machinery/hydroponics/mytray, mob/user) - . = ..() - if(chems.has_reagent(src.type, 1)) - mytray.adjust_toxic(round(chems.get_reagent_amount(type))) - mytray.adjust_pestlevel(-rand(1,2)) /datum/reagent/drug/nicotine/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired) if(SPT_PROB(0.5, seconds_per_tick)) diff --git a/code/modules/reagents/chemistry/reagents/food_reagents.dm b/code/modules/reagents/chemistry/reagents/food_reagents.dm index 95ef729d7091..567c700e76f0 100644 --- a/code/modules/reagents/chemistry/reagents/food_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/food_reagents.dm @@ -64,11 +64,6 @@ . = ..() target.fertility_boosting += min(25, volume * 0.5) -/datum/reagent/consumable/nutriment/on_hydroponics_apply(obj/item/seeds/myseed, datum/reagents/chems, obj/machinery/hydroponics/mytray, mob/user) - . = ..() - if(chems.has_reagent(src.type, 1)) - mytray.adjust_plant_health(round(chems.get_reagent_amount(type) * 0.2)) - /datum/reagent/consumable/nutriment/on_mob_life(mob/living/carbon/M, seconds_per_tick, times_fired) if(SPT_PROB(30, seconds_per_tick)) M.heal_bodypart_damage(brute = brute_heal, burn = burn_heal, updating_health = FALSE, required_bodytype = BODYTYPE_ORGANIC) @@ -236,13 +231,6 @@ chemical_flags = REAGENT_CAN_BE_SYNTHESIZED default_container = /obj/item/reagent_containers/condiment/sugar -// Plants should not have sugar, they can't use it and it prevents them getting water/ nutients, it is good for mold though... -/datum/reagent/consumable/sugar/on_hydroponics_apply(obj/item/seeds/myseed, datum/reagents/chems, obj/machinery/hydroponics/mytray, mob/user) - . = ..() - if(chems.has_reagent(src.type, 1)) - mytray.adjust_weedlevel(rand(1,2)) - mytray.adjust_pestlevel(rand(1,2)) - /datum/reagent/consumable/sugar/feed_interaction(mob/living/basic/chicken/target, volume) .=..() @@ -266,12 +254,6 @@ taste_description = "watery milk" chemical_flags = REAGENT_CAN_BE_SYNTHESIZED - // Compost for EVERYTHING -/datum/reagent/consumable/virus_food/on_hydroponics_apply(obj/item/seeds/myseed, datum/reagents/chems, obj/machinery/hydroponics/mytray, mob/user) - . = ..() - if(chems.has_reagent(src.type, 1)) - mytray.adjust_plant_health(-round(chems.get_reagent_amount(type) * 0.5)) - /datum/reagent/consumable/soysauce name = "Soysauce" description = "A salty sauce made from the soy plant." @@ -780,16 +762,6 @@ chemical_flags = REAGENT_CAN_BE_SYNTHESIZED default_container = /obj/item/reagent_containers/condiment/honey - // On the other hand, honey has been known to carry pollen with it rarely. Can be used to take in a lot of plant qualities all at once, or harm the plant. -/datum/reagent/consumable/honey/on_hydroponics_apply(obj/item/seeds/myseed, datum/reagents/chems, obj/machinery/hydroponics/mytray, mob/user) - . = ..() - if(chems.has_reagent(src.type, 1)) - if(myseed && prob(80)) - mytray.adjust_weedlevel(rand(1,2)) - mytray.adjust_pestlevel(rand(1,2)) - myseed.adjust_maturation(rand(1,2)) - myseed.adjust_lifespan(rand(1,2)) - /datum/reagent/consumable/honey/on_mob_life(mob/living/carbon/M, seconds_per_tick, times_fired) holder.add_reagent(/datum/reagent/consumable/sugar, 3 * REM * seconds_per_tick) if(SPT_PROB(33, seconds_per_tick)) diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm index 9519846b59b6..9ce86ecc29e0 100644 --- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm @@ -46,6 +46,7 @@ /// Flags to fullheal every metabolism tick var/full_heal_flags = ~(HEAL_BRUTE|HEAL_BURN|HEAL_TOX|HEAL_RESTRAINTS|HEAL_REFRESH_ORGANS) +/* // The best stuff there is. For testing/debugging. /datum/reagent/medicine/adminordrazine/on_hydroponics_apply(obj/item/seeds/myseed, datum/reagents/chems, obj/machinery/hydroponics/mytray, mob/user) . = ..() @@ -65,6 +66,7 @@ else if(prob(20)) mytray.visible_message(span_warning("Nothing happens...")) +*/ /datum/reagent/medicine/adminordrazine/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired) affected_mob.heal_bodypart_damage(5 * REM * seconds_per_tick, 5 * REM * seconds_per_tick, 0, FALSE, affected_bodytype) @@ -148,13 +150,6 @@ ..() return TRUE -// Healing -/datum/reagent/medicine/cryoxadone/on_hydroponics_apply(obj/item/seeds/myseed, datum/reagents/chems, obj/machinery/hydroponics/mytray, mob/user) - . = ..() - if(chems.has_reagent(src.type, 1)) - mytray.adjust_plant_health(round(chems.get_reagent_amount(type) * 3)) - mytray.adjust_toxic(-round(chems.get_reagent_amount(type) * 3)) - /datum/reagent/medicine/clonexadone name = "Clonexadone" description = "A chemical that derives from Cryoxadone. It specializes in healing clone damage, but nothing else. Requires very cold temperatures to properly metabolize, and metabolizes quicker than cryoxadone." @@ -883,11 +878,13 @@ var/expected_amount_to_full_heal = round(max_health / healing_per_reagent_unit, DAMAGE_PRECISION) / excess_healing_ratio return amount_needed_to_revive + expected_amount_to_full_heal +/* // FEED ME SEYMOUR /datum/reagent/medicine/strange_reagent/on_hydroponics_apply(obj/item/seeds/myseed, datum/reagents/chems, obj/machinery/hydroponics/mytray, mob/user) . = ..() if(chems.has_reagent(src.type, 1)) mytray.spawnplant() +*/ /datum/reagent/medicine/strange_reagent/expose_mob(mob/living/exposed_mob, methods=TOUCH, reac_volume) if(exposed_mob.stat != DEAD || !(exposed_mob.mob_biotypes & MOB_ORGANIC)) @@ -1193,14 +1190,6 @@ addiction_types = list(/datum/addiction/hallucinogens = 14) metabolized_traits = list(TRAIT_PACIFISM) -/datum/reagent/medicine/earthsblood/on_hydroponics_apply(obj/item/seeds/myseed, datum/reagents/chems, obj/machinery/hydroponics/mytray, mob/user) - . = ..() - if(chems.has_reagent(src.type, 1)) - if(!mytray.self_sustaining) - mytray.increase_sustaining(round(chems.get_reagent_amount(type))) - else - mytray.lastcycle += 2.5 SECONDS /// makes trays roughly 25% faster - /// Returns a hippie-esque string for the person affected by the reagent to say. /datum/reagent/medicine/earthsblood/proc/return_hippie_line() var/static/list/earthsblood_lines = list( diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index 8df7408e8892..a0625e127bc3 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -35,13 +35,6 @@ desc = "Are you sure this is tomato juice?" icon_state = "glass_red" - - // FEED ME -/datum/reagent/blood/on_hydroponics_apply(obj/item/seeds/myseed, datum/reagents/chems, obj/machinery/hydroponics/mytray) - . = ..() - if(chems.has_reagent(src.type, 1)) - mytray.adjust_pestlevel(rand(2,3)) - /datum/reagent/blood/expose_mob(mob/living/exposed_mob, methods=TOUCH, reac_volume, show_message=TRUE, touch_protection=0) . = ..() if(data && data["viruses"]) @@ -283,14 +276,6 @@ if(affected_mob.blood_volume) affected_mob.blood_volume += 0.1 * REM * seconds_per_tick // water is good for you! -/datum/reagent/water/on_hydroponics_apply(obj/item/seeds/myseed, datum/reagents/chems, obj/machinery/hydroponics/mytray) - if(!myseed) - return - if(chems.has_reagent(src.type, 1)) - mytray.adjustWater(round(chems.get_reagent_amount(src.type) * 1)) - //You don't belong in this world, monster! - chems.remove_reagent(type, chems.get_reagent_amount(src.type)) - /datum/reagent/water/salt name = "Saltwater" description = "Water, but salty. Smells like... the station infirmary?" @@ -355,12 +340,6 @@ desc = "A glass of holy water." icon_state = "glass_clear" - // Holy water. Mostly the same as water, it also heals the plant a little with the power of the spirits. -/datum/reagent/water/holywater/on_hydroponics_apply(obj/item/seeds/myseed, datum/reagents/chems, obj/machinery/hydroponics/mytray) - if(chems.has_reagent(src.type, 1)) - mytray.adjust_waterlevel(round(chems.get_reagent_amount(type) * 1)) - mytray.adjust_plant_health(round(chems.get_reagent_amount(type) * 0.1)) - /datum/reagent/water/holywater/on_mob_add(mob/living/affected_mob, amount) . = ..() if(data) @@ -545,11 +524,6 @@ chemical_flags = REAGENT_CAN_BE_SYNTHESIZED turf_exposure = TRUE -/datum/reagent/lube/on_hydroponics_apply(obj/item/seeds/myseed, datum/reagents/chems, obj/machinery/hydroponics/mytray, mob/user) - . = ..() - myseed.process_trait_gain(/datum/plant_gene/trait/slip, chems.get_reagent_amount(src.type) * 0.25) - myseed.adjust_endurance(chems.get_reagent_amount(src.type) * 0.08) - /datum/reagent/lube/expose_turf(turf/open/exposed_turf, reac_volume) . = ..() if(!istype(exposed_turf)) @@ -1023,19 +997,6 @@ chemical_flags = REAGENT_CAN_BE_SYNTHESIZED -// You're an idiot for thinking that one of the most corrosive and deadly gasses would be beneficial -/datum/reagent/chlorine/on_hydroponics_apply(obj/item/seeds/myseed, datum/reagents/chems, obj/machinery/hydroponics/mytray, mob/user) - if(!check_tray(chems, mytray)) - return - - mytray.adjust_plant_health(-round(chems.get_reagent_amount(type))) - mytray.adjust_toxic(round(chems.get_reagent_amount(type) * 1.5)) - mytray.adjust_waterlevel(-round(chems.get_reagent_amount(type) * 0.5)) - mytray.adjust_weedlevel(-rand(1,3)) - myseed.adjust_lifespan(-round(chems.get_reagent_amount(type) * 0.2)) - // White Phosphorous + water -> phosphoric acid. That's not a good thing really. - - /datum/reagent/chlorine/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired) affected_mob.take_bodypart_damage(0.5*REM*seconds_per_tick, 0) . = TRUE @@ -1050,16 +1011,6 @@ ph = 2 chemical_flags = REAGENT_CAN_BE_SYNTHESIZED -// You're an idiot for thinking that one of the most corrosive and deadly gasses would be beneficial -/datum/reagent/fluorine/on_hydroponics_apply(obj/item/seeds/myseed, datum/reagents/chems, obj/machinery/hydroponics/mytray, mob/user) - if(!check_tray(chems, mytray)) - return - - mytray.adjust_plant_health(-round(chems.get_reagent_amount(type) * 2)) - mytray.adjust_toxic(round(chems.get_reagent_amount(type) * 2.5)) - mytray.adjust_waterlevel(-round(chems.get_reagent_amount(type) * 0.5)) - mytray.adjust_weedlevel(-rand(1,4)) - /datum/reagent/fluorine/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired) affected_mob.adjustToxLoss(0.5*REM*seconds_per_tick, 0) . = TRUE @@ -1085,14 +1036,6 @@ chemical_flags = REAGENT_CAN_BE_SYNTHESIZED restricted = TRUE -// Phosphoric salts are beneficial though. And even if the plant suffers, in the long run the tray gets some nutrients. The benefit isn't worth that much. -/datum/reagent/phosphorus/on_hydroponics_apply(obj/item/seeds/myseed, datum/reagents/chems, obj/machinery/hydroponics/mytray, mob/user) - . = ..() - if(chems.has_reagent(src.type, 1)) - mytray.adjust_plant_health(-round(chems.get_reagent_amount(src.type) * 0.75)) - mytray.adjust_waterlevel(-round(chems.get_reagent_amount(src.type) * 0.5)) - mytray.adjust_weedlevel(-rand(1,2)) - /datum/reagent/lithium name = "Lithium" description = "A silver metal, its claim to fame is its remarkably low density. Using it is a bit too effective in calming oneself down." @@ -1214,15 +1157,6 @@ generated_values["endurance_change"] = amount * rand(-10, 10) * 0.1 return generated_values -//Mutagenic chem side-effects. -/datum/reagent/uranium/on_hydroponics_apply(obj/item/seeds/myseed, datum/reagents/chems, obj/machinery/hydroponics/mytray, mob/user) - . = ..() - if(chems.has_reagent(src.type, 1)) - mytray.adjust_plant_health(-round(chems.get_reagent_amount(src.type) * 1)) - mytray.adjust_toxic(round(chems.get_reagent_amount(src.type) * 1)) - plant_mutation_reagent_apply(chems, mytray, user, mr = 10, hm = 5) - - /datum/reagent/uranium/radium name = "Radium" description = "Radium is an alkaline earth metal. It is extremely radioactive." @@ -1247,15 +1181,6 @@ generated_values["endurance_change"] = amount * rand(-10, 10) * 0.1 return generated_values -/datum/reagent/uranium/radium/on_hydroponics_apply(obj/item/seeds/myseed, datum/reagents/chems, obj/machinery/hydroponics/mytray, mob/user) - if(!myseed) - return - - if(chems.has_reagent(src.type, 1)) - mytray.adjust_plant_health(-round(chems.get_reagent_amount(src.type) * 1)) - mytray.adjust_toxic(round(chems.get_reagent_amount(src.type) * 1)) - plant_mutation_reagent_apply(chems, mytray, user, mr = 10, hm = 5) - /datum/reagent/bluespace name = "Bluespace Dust" description = "A dust composed of microscopic bluespace crystals, with minor space-warping properties." @@ -1546,17 +1471,6 @@ generated_values["production_change"] = (amount * rand(2, 5) * 0.1) return generated_values -/datum/reagent/ammonia/on_hydroponics_apply(obj/item/seeds/myseed, datum/reagents/chems, obj/machinery/hydroponics/mytray, mob/user) - if(!check_tray(chems, mytray)) - return - // Ammonia is bad ass. - if(chems.has_reagent(src.type, 1)) - mytray.adjust_plant_health(round(chems.get_reagent_amount(src.type) * 0.12)) - myseed.adjust_maturation(round(chems.get_reagent_amount(src.type) * 0.2)) - myseed.adjust_production(round(chems.get_reagent_amount(src.type) * 0.1)) - if(myseed && prob(10)) - myseed.adjust_yield(1) - /datum/reagent/diethylamine name = "Diethylamine" description = "A secondary amine, mildly corrosive." @@ -1565,15 +1479,6 @@ ph = 12 chemical_flags = REAGENT_CAN_BE_SYNTHESIZED -// This is more bad ass, and pests get hurt by the corrosive nature of it, not the plant. The new trade off is it culls stability. -/datum/reagent/diethylamine/on_hydroponics_apply(obj/item/seeds/myseed, datum/reagents/chems, obj/machinery/hydroponics/mytray, mob/user) - . = ..() - if(chems.has_reagent(src.type, 1)) - mytray.adjust_plant_health(round(chems.get_reagent_amount(src.type) * 1)) - mytray.adjust_pestlevel(-rand(1,2)) - if(myseed) - myseed.adjust_yield(round(chems.get_reagent_amount(src.type) * 0.2)) - /datum/reagent/carbondioxide name = "Carbon Dioxide" reagent_state = GAS @@ -1779,30 +1684,13 @@ tox_prob = 5 chemical_flags = REAGENT_CAN_BE_SYNTHESIZED -// gives half the potency of saltpetre, and half the yield of diethylamine -/datum/reagent/plantnutriment/eznutriment/on_hydroponics_apply(obj/item/seeds/myseed, datum/reagents/chems, obj/machinery/hydroponics/mytray) - . = ..() - if(chems.has_reagent(src.type, 1)) - mytray.mutmod = 1 - myseed.adjust_lifespan(round(chems.get_reagent_amount(type) * 0.15)) - if(myseed) - myseed.adjust_potency(round(chems.get_reagent_amount(src.type) * 0.1)) - myseed.adjust_yield(round(chems.get_reagent_amount(src.type) * 0.1)) - - /datum/reagent/plantnutriment/left4zednutriment name = "Left 4 Zed" - description = "Unstable nutriment that makes plants mutate more often than usual." + description = "Unstable nutriment that makes plants wilt quickly but increases all stats while doing so." color = "#1A1E4D" // RBG: 26, 30, 77 tox_prob = 13 chemical_flags = REAGENT_CAN_BE_SYNTHESIZED -/datum/reagent/plantnutriment/left4zednutriment/on_hydroponics_apply(obj/item/seeds/myseed, datum/reagents/chems, obj/machinery/hydroponics/mytray) - . = ..() - if(chems.has_reagent(src.type, 1)) - mytray.yieldmod = 0 - mytray.mutmod = 2 - /datum/reagent/plantnutriment/robustharvestnutriment name = "Robust Harvest" description = "Very potent nutriment that slows plants from mutating whilst also making them grow faster." @@ -1823,14 +1711,6 @@ generated_values["lifespan_change"] = (amount * (rand(-2, 0) * 0.1)) return generated_values -/datum/reagent/plantnutriment/robustharvestnutriment/on_hydroponics_apply(obj/item/seeds/myseed, datum/reagents/chems, obj/machinery/hydroponics/mytray) - . = ..() - if(chems.has_reagent(src.type, 1)) - mytray.yieldmod = 1.3 - mytray.mutmod = 0 - myseed.adjust_maturation(round(chems.get_reagent_amount(src.type) * 0.1)) - myseed.adjust_production(round(chems.get_reagent_amount(src.type) * 0.05)) - /datum/reagent/plantnutriment/endurogrow name = "Enduro Grow" description = "A specialized nutriment, which decreases product quantity and potency, but strengthens the plants endurance." @@ -1838,15 +1718,6 @@ tox_prob = 8 chemical_flags = REAGENT_CAN_BE_SYNTHESIZED -/datum/reagent/plantnutriment/endurogrow/on_hydroponics_apply(obj/item/seeds/myseed, datum/reagents/chems, obj/machinery/hydroponics/mytray) - if(!check_tray(chems, mytray)) - return - - if(myseed) - myseed.adjust_potency(-round(chems.get_reagent_amount(type) * 0.1)) - myseed.adjust_yield(-round(chems.get_reagent_amount(type) * 0.075)) - myseed.adjust_endurance(round(chems.get_reagent_amount(type) * 0.35)) - /datum/reagent/plantnutriment/liquidearthquake name = "Liquid Earthquake" description = "A specialized nutriment, which increases the plant's production speed, as well as it's susceptibility to weeds." @@ -1854,15 +1725,6 @@ tox_prob = 13 chemical_flags = REAGENT_CAN_BE_SYNTHESIZED -/datum/reagent/plantnutriment/liquidearthquake/on_hydroponics_apply(obj/item/seeds/myseed, datum/reagents/chems, obj/machinery/hydroponics/mytray) - if(!check_tray(chems, mytray)) - return - - if(myseed) - myseed.adjust_weed_rate(round(chems.get_reagent_amount(type) * 0.1)) - myseed.adjust_weed_chance(round(chems.get_reagent_amount(type) * 0.3)) - myseed.adjust_production(-round(chems.get_reagent_amount(type) * 0.075)) - // GOON OTHERS @@ -2181,13 +2043,6 @@ chemical_flags = REAGENT_CAN_BE_SYNTHESIZED default_container = /obj/effect/decal/cleanable/ash -// Ash is also used IRL in gardening, as a fertilizer enhancer and weed killer -/datum/reagent/ash/on_hydroponics_apply(obj/item/seeds/myseed, datum/reagents/chems, obj/machinery/hydroponics/mytray, mob/user) - . = ..() - if(chems.has_reagent(src.type, 1)) - mytray.adjust_plant_health(round(chems.get_reagent_amount(src.type) * 1)) - mytray.adjust_weedlevel(-1) - /datum/reagent/acetone name = "Acetone" description = "A slick, slightly carcinogenic liquid. Has a multitude of mundane uses in everyday life." @@ -2362,16 +2217,6 @@ generated_values["yield_change"] = (amount * (rand(0,2) * 0.2)) return generated_values -// Saltpetre is used for gardening IRL, to simplify highly, it raises potency and lowers production -/datum/reagent/saltpetre/on_hydroponics_apply(obj/item/seeds/myseed, datum/reagents/chems, obj/machinery/hydroponics/mytray, mob/user) - . = ..() - if(chems.has_reagent(src.type, 1)) - var/salt = chems.get_reagent_amount(src.type) - mytray.adjust_plant_health(round(salt * 0.18)) - if(myseed) - myseed.adjust_production(-round(salt * 0.1)-prob(salt%10)) - myseed.adjust_potency(round(salt*0.2)) - /datum/reagent/lye name = "Lye" description = "Also known as sodium hydroxide. As a profession making this is somewhat underwhelming." @@ -3047,16 +2892,6 @@ . = ..() affected_mob.adjustFireLoss((ispodperson(affected_mob) ? -1 : 1) * seconds_per_tick) -/datum/reagent/brimdust/on_hydroponics_apply(obj/item/seeds/myseed, datum/reagents/chems, obj/machinery/hydroponics/mytray, mob/user) - if(!check_tray(chems, mytray)) - return - - if(chems.has_reagent(src.type, 1)) - mytray.adjust_weedlevel(-1) - mytray.adjust_pestlevel(-1) - mytray.adjust_plant_health(round(chems.get_reagent_amount(src.type) * 1)) - if(myseed) - myseed.adjust_potency(round(chems.get_reagent_amount(src.type) * 0.5)) // I made this food....with love. // Reagent added to food by chef's with a chef's kiss. Makes people happy. /datum/reagent/love diff --git a/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm b/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm index 796c9cf19e06..173d503cf547 100644 --- a/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm @@ -192,15 +192,6 @@ chemical_flags = REAGENT_CAN_BE_SYNTHESIZED liquid_fire_power = 1 - // why, just why -/datum/reagent/napalm/on_hydroponics_apply(obj/item/seeds/myseed, datum/reagents/chems, obj/machinery/hydroponics/mytray, mob/user) - . = ..() - if(chems.has_reagent(type, 1)) - if(!(myseed.resistance_flags & FIRE_PROOF)) - mytray.adjust_plant_health(-round(chems.get_reagent_amount(type) * 6)) - mytray.adjust_toxic(round(chems.get_reagent_amount(type) * 7)) - mytray.adjust_weedlevel(-rand(5,9)) //At least give them a small reward if they bother. - /datum/reagent/napalm/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired) affected_mob.adjust_fire_stacks(1 * REM * seconds_per_tick) diff --git a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm index aad8860acaeb..ac0ad4079e43 100644 --- a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm @@ -17,12 +17,6 @@ ///The afflicted must be above this health value in order for the toxin to deal damage var/health_required = -100 -// Are you a bad enough dude to poison your own plants? -/datum/reagent/toxin/on_hydroponics_apply(obj/item/seeds/myseed, datum/reagents/chems, obj/machinery/hydroponics/mytray, mob/user) - . = ..() - if(chems.has_reagent(type, 1)) - mytray.adjust_toxic(round(chems.get_reagent_amount(type) * 2)) - /datum/reagent/toxin/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired) if(toxpwr && affected_mob.health > health_required) affected_mob.adjustToxLoss(toxpwr * REM * normalise_creation_purity() * seconds_per_tick, FALSE, required_biotype = affected_biotype) @@ -71,6 +65,7 @@ /datum/reagent/toxin/mutagen/feed_interaction(mob/living/basic/chicken/target, volume) target.instability += min(25, volume) +/* /datum/reagent/toxin/mutagen/on_hydroponics_apply(obj/item/seeds/myseed, datum/reagents/chems, obj/machinery/hydroponics/mytray, mob/user) if(!myseed) return @@ -80,6 +75,7 @@ if(prob(10)) chems.remove_all_type(type, chems.get_reagent_amount(type)) mytray.mutatespecie_new() +*/ #define LIQUID_PLASMA_BP (50+T0C) #define LIQUID_PLASMA_IG (325+T0C) @@ -350,16 +346,6 @@ ph = 2.7 chemical_flags = REAGENT_CAN_BE_SYNTHESIZED - // Plant-B-Gone is just as bad -/datum/reagent/toxin/plantbgone/on_hydroponics_apply(obj/item/seeds/myseed, datum/reagents/chems, obj/machinery/hydroponics/mytray, mob/user) - if(!check_tray(chems, mytray)) - return - - if(chems.has_reagent(type, 1)) - mytray.adjust_plant_health(-round(chems.get_reagent_amount(type) * 10)) - mytray.adjust_toxic(round(chems.get_reagent_amount(type) * 6)) - mytray.adjust_weedlevel(-rand(4,8)) - /datum/reagent/toxin/plantbgone/expose_obj(obj/exposed_obj, reac_volume) . = ..() if(istype(exposed_obj, /obj/structure/alien/weeds)) @@ -395,14 +381,6 @@ ph = 3 chemical_flags = REAGENT_CAN_BE_SYNTHESIZED - //Weed Spray -/datum/reagent/toxin/plantbgone/weedkiller/on_hydroponics_apply(obj/item/seeds/myseed, datum/reagents/chems, obj/machinery/hydroponics/mytray, mob/user) - if(!check_tray(chems, mytray)) - return - if(chems.has_reagent(type, 1)) - mytray.adjust_toxic(round(chems.get_reagent_amount(type) * 0.5)) - mytray.adjust_weedlevel(-rand(1,2)) - /datum/reagent/toxin/pestkiller name = "Pest Killer" description = "A harmful toxic mixture to kill pests. Do not ingest!" @@ -411,14 +389,6 @@ ph = 3.2 chemical_flags = REAGENT_CAN_BE_SYNTHESIZED -//Pest Spray -/datum/reagent/toxin/pestkiller/on_hydroponics_apply(obj/item/seeds/myseed, datum/reagents/chems, obj/machinery/hydroponics/mytray, mob/user) - if(!check_tray(chems, mytray)) - return - if(chems.has_reagent(type, 1)) - mytray.adjust_toxic(round(chems.get_reagent_amount(type) * 1)) - mytray.adjust_pestlevel(-rand(1,2)) - /datum/reagent/toxin/pestkiller/expose_mob(mob/living/exposed_mob, methods=TOUCH, reac_volume) . = ..() if(exposed_mob.mob_biotypes & MOB_BUG) @@ -432,14 +402,6 @@ toxpwr = 1 chemical_flags = REAGENT_CAN_BE_SYNTHESIZED -//Pest Spray -/datum/reagent/toxin/pestkiller/organic/on_hydroponics_apply(obj/item/seeds/myseed, datum/reagents/chems, obj/machinery/hydroponics/mytray, mob/user) - if(!check_tray(chems, mytray)) - return - if(chems.has_reagent(type, 1)) - mytray.adjust_toxic(round(chems.get_reagent_amount(type) * 0.1)) - mytray.adjust_pestlevel(-rand(1,2)) - /datum/reagent/toxin/spore name = "Spore Toxin" description = "A natural toxin produced by blob spores that inhibits vision when ingested." @@ -1048,14 +1010,6 @@ ph = 2.75 chemical_flags = REAGENT_CAN_BE_SYNTHESIZED -// ...Why? I mean, clearly someone had to have done this and thought, well, acid doesn't hurt plants, but what brought us here, to this point? -/datum/reagent/toxin/acid/on_hydroponics_apply(obj/item/seeds/myseed, datum/reagents/chems, obj/machinery/hydroponics/mytray, mob/user) - . = ..() - if(chems.has_reagent(type, 1)) - mytray.adjust_plant_health(-round(chems.get_reagent_amount(type) * 1)) - mytray.adjust_toxic(round(chems.get_reagent_amount(type) * 1.5)) - mytray.adjust_weedlevel(-rand(1,2)) - /datum/reagent/toxin/acid/expose_mob(mob/living/carbon/exposed_carbon, methods=TOUCH, reac_volume) . = ..() if(!istype(exposed_carbon)) @@ -1094,14 +1048,6 @@ ph = 0.0 chemical_flags = REAGENT_CAN_BE_SYNTHESIZED -// SERIOUSLY -/datum/reagent/toxin/acid/fluacid/on_hydroponics_apply(obj/item/seeds/myseed, datum/reagents/chems, obj/machinery/hydroponics/mytray, mob/user) - . = ..() - if(chems.has_reagent(type, 1)) - mytray.adjust_plant_health(-round(chems.get_reagent_amount(type) * 2)) - mytray.adjust_toxic(round(chems.get_reagent_amount(type) * 3)) - mytray.adjust_weedlevel(-rand(1,4)) - /datum/reagent/toxin/acid/fluacid/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired) affected_mob.adjustFireLoss((current_cycle/15) * REM * normalise_creation_purity() * seconds_per_tick, FALSE, required_bodytype = affected_bodytype) . = TRUE diff --git a/code/modules/reagents/reagent_containers/cups/_cup.dm b/code/modules/reagents/reagent_containers/cups/_cup.dm index 43ca9fec4e2f..c52315087dd8 100644 --- a/code/modules/reagents/reagent_containers/cups/_cup.dm +++ b/code/modules/reagents/reagent_containers/cups/_cup.dm @@ -124,7 +124,8 @@ return var/trans = reagents.trans_to(target, amount_per_transfer_from_this, transfered_by = user) - to_chat(user, span_notice("You transfer [trans] unit\s of the solution to [target].")) + if(trans) + to_chat(user, span_notice("You transfer [trans] unit\s of the solution to [target].")) else if(target.is_drainable()) //A dispenser. Transfer FROM it TO us. if(!target.reagents.total_volume) diff --git a/code/modules/reagents/reagent_containers/spray.dm b/code/modules/reagents/reagent_containers/spray.dm index 419455054e33..3e122bd7350c 100644 --- a/code/modules/reagents/reagent_containers/spray.dm +++ b/code/modules/reagents/reagent_containers/spray.dm @@ -28,7 +28,7 @@ /obj/item/reagent_containers/spray/afterattack(atom/target, mob/user, proximity_flag, click_parameters) . = ..() - if(istype(target, /obj/structure/sink) || istype(target, /obj/structure/mop_bucket/janitorialcart) || istype(target, /obj/machinery/hydroponics)) + if(istype(target, /obj/structure/sink) || istype(target, /obj/structure/mop_bucket/janitorialcart)) return . |= AFTERATTACK_PROCESSED_ITEM diff --git a/code/modules/research/destructive_analyzer.dm b/code/modules/research/destructive_analyzer.dm index a752a4d870dd..b4ead91fe11d 100644 --- a/code/modules/research/destructive_analyzer.dm +++ b/code/modules/research/destructive_analyzer.dm @@ -97,7 +97,7 @@ Note: Must be placed within 3 tiles of the R&D Console return FALSE if(QDELETED(loaded_item) || QDELETED(src)) return FALSE - SSblackbox.record_feedback("nested tally", "item_deconstructed", 1, list("[TN.id]", "[loaded_item.type]")) + SSblackbox.record_feedback("nested tally", "item_deconstructed", 1, list("[TN.id]", "[initial(loaded_item.name)]")) if(destroy_item(loaded_item)) stored_research.boost_with_item(SSresearch.techweb_node_by_id(TN.id), dpath) diff --git a/code/modules/research/machinery/_production.dm b/code/modules/research/machinery/_production.dm index a203d4cfc194..2dc7f7852271 100644 --- a/code/modules/research/machinery/_production.dm +++ b/code/modules/research/machinery/_production.dm @@ -218,11 +218,11 @@ return ..() -/obj/machinery/rnd/production/proc/do_print(path, amount, list/matlist) +/obj/machinery/rnd/production/proc/do_print(atom/path, amount, list/matlist) for(var/i in 1 to amount) new path(get_turf(src)) - SSblackbox.record_feedback("nested tally", "item_printed", amount, list("[type]", "[path]")) + SSblackbox.record_feedback("nested tally", "item_printed", amount, list("[initial(name)]", "[initial(path.name)]")) /obj/machinery/rnd/production/proc/efficient_with(path) return !ispath(path, /obj/item/stack/sheet) && !ispath(path, /obj/item/stack/ore/bluespace_crystal) diff --git a/code/modules/surgery/surgery.dm b/code/modules/surgery/surgery.dm index bc2c20d68236..3f30cd9244a1 100644 --- a/code/modules/surgery/surgery.dm +++ b/code/modules/surgery/surgery.dm @@ -138,7 +138,7 @@ return null /datum/surgery/proc/complete(mob/surgeon) - SSblackbox.record_feedback("tally", "surgeries_completed", 1, type) + SSblackbox.record_feedback("tally", "surgeries_completed", 1, name) surgeon.add_mob_memory(/datum/memory/surgery, deuteragonist = surgeon, surgery_type = name) qdel(src) diff --git a/code/modules/vending/_vending.dm b/code/modules/vending/_vending.dm index de6f281f7946..03e2862c2eb2 100644 --- a/code/modules/vending/_vending.dm +++ b/code/modules/vending/_vending.dm @@ -1325,7 +1325,7 @@ to_chat(usr, span_notice("You take [R.name] out of the slot.")) else to_chat(usr, span_warning("[capitalize(R.name)] falls onto the floor!")) - SSblackbox.record_feedback("nested tally", "vending_machine_usage", 1, list("[type]", "[R.product_path]")) + SSblackbox.record_feedback("nested tally", "vending_machine_usage", 1, list("[name]", "[R.name]")) vend_ready = TRUE /obj/machinery/vending/process(seconds_per_tick) diff --git a/code/modules/vending/megaseed.dm b/code/modules/vending/megaseed.dm index 36971f312da2..ee7199dab91e 100644 --- a/code/modules/vending/megaseed.dm +++ b/code/modules/vending/megaseed.dm @@ -79,7 +79,7 @@ /obj/item/seeds/wheat/rice = 3, /obj/item/seeds/tea = 3, /obj/item/seeds/tobacco = 3, - /obj/item/seeds/tower = 3, + /obj/item/seeds/tree = 3, /obj/item/seeds/wheat = 3, ), ), diff --git a/config/game_options.txt b/config/game_options.txt index 9553ef352df5..c992facbe9f9 100644 --- a/config/game_options.txt +++ b/config/game_options.txt @@ -355,6 +355,7 @@ ROUNDSTART_RACES oozeling ROUNDSTART_RACES ipc ROUNDSTART_RACES simian ROUNDSTART_RACES arachnid +ROUNDSTART_RACES apid ## Races that are better than humans in some ways, but worse in others ROUNDSTART_RACES ethereal diff --git a/goon/icons/floors.dmi b/goon/icons/floors.dmi new file mode 100644 index 0000000000000000000000000000000000000000..c9f51ab46309180460db0131c946646a91b1f99c GIT binary patch literal 1288 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

IEPyt(-JI- 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 literal 0 HcmV?d00001 diff --git a/goon/icons/obj/hydroponics/plants_crop.dmi b/goon/icons/obj/hydroponics/plants_crop.dmi new file mode 100644 index 0000000000000000000000000000000000000000..f95ccb0b75676bf72f75da344634971ef0dc9735 GIT binary patch literal 94637 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 BhaCU_ literal 0 HcmV?d00001 diff --git a/goon/icons/obj/hydroponics/plants_flower.dmi b/goon/icons/obj/hydroponics/plants_flower.dmi new file mode 100644 index 0000000000000000000000000000000000000000..53a2e6662dde0bf406059352a2c72f74797ae32c GIT binary patch literal 30165 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 literal 0 HcmV?d00001 diff --git a/goon/icons/obj/hydroponics/plants_fruit.dmi b/goon/icons/obj/hydroponics/plants_fruit.dmi index 91e60bf777d77dd0c770d0b50f4c034b3ede2de0..5c338151e094c801c48118160bfb3957ea18d8b3 100644 GIT binary patch literal 102851 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�bE;>hv_m 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 !OdZkqKYV2|%RPp0~sg(MuiU@jm=g*Z;9N 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 bFc#xKPa&;At~<~Z00000NkvXXu0mjf00~La literal 0 HcmV?d00001 diff --git a/goon/icons/obj/hydroponics/plants_unused.dmi b/goon/icons/obj/hydroponics/plants_unused.dmi new file mode 100644 index 0000000000000000000000000000000000000000..7cc970ad4ef94ed9bd15c3d6341f5f49372a9f40 GIT binary patch literal 3106 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 IhF#Qu09yUk0{{R3 literal 0 HcmV?d00001 diff --git a/goon/icons/obj/hydroponics/plants_veg.dmi b/goon/icons/obj/hydroponics/plants_veg.dmi new file mode 100644 index 0000000000000000000000000000000000000000..86f4a29ad2ec250871738304c3a4751eb3d4f42f GIT binary patch literal 38828 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 literal 0 HcmV?d00001 diff --git a/goon/icons/obj/hydroponics/plants_weed.dmi b/goon/icons/obj/hydroponics/plants_weed.dmi new file mode 100644 index 0000000000000000000000000000000000000000..c86f05d9c30ad2b480c7dcc918738b005b2eb5fa GIT binary patch literal 21874 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 H@5KKCivw?R literal 0 HcmV?d00001 diff --git a/goon/icons/walls_beehive.dmi b/goon/icons/walls_beehive.dmi new file mode 100644 index 0000000000000000000000000000000000000000..306952e0365f70524f6d671e8ff90f3c6ab198d4 GIT binary patch literal 9584 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 as7ts5siy|A(9dBM_BuH4&iUQ@>i+@ih*dHG literal 0 HcmV?d00001 diff --git a/monkestation/code/modules/art_sci_overrides/artifact_components/_base_component.dm b/monkestation/code/modules/art_sci_overrides/artifact_components/_base_component.dm index 5163bf0a2aae..0722c3b9e8f0 100644 --- a/monkestation/code/modules/art_sci_overrides/artifact_components/_base_component.dm +++ b/monkestation/code/modules/art_sci_overrides/artifact_components/_base_component.dm @@ -213,6 +213,7 @@ continue checked_fault = TRUE if(prob(chosen_fault.trigger_chance)) + logger.Log(LOG_CATEGORY_ARTIFACT, "[parent]'s fault has been triggered, trigger type [chosen_fault].") chosen_fault.on_trigger(src) if(chosen_fault.visible_message) holder.visible_message("[holder] [chosen_fault.visible_message]") diff --git a/monkestation/code/modules/botany/components/plant_growing.dm b/monkestation/code/modules/botany/components/plant_growing.dm new file mode 100644 index 000000000000..dcaff44ffaee --- /dev/null +++ b/monkestation/code/modules/botany/components/plant_growing.dm @@ -0,0 +1,340 @@ +//this is the source of the old hydrotray behaviours +/datum/component/plant_growing + ///this is our managed seeds + var/list/managed_seeds = list() + ///this is the amount of seeds we can have at once in a tray + var/maximum_seeds = 1 + + ///are we bioboosted + var/bio_boosted = FALSE + + ///our current water precent + var/water_precent = 100 + ///how much water we can have at max used to determine % + var/max_water = 200 + + ///how many processes we need to work + + var/work_processes = 10 SECONDS + ///what work time we are at + var/next_work = 0 + ///what stage are we one + var/work_cycle = 0 + + ///how toxic our tray currently is % wise + var/toxicity_contents = 0 + + ///the icon we apply to our parent if we are self sustaining + var/self_sustaining_overlay + ///the current precentage we are to self sustaining + var/self_sustaining_precent = 0 + ///does self sustaining also increase plant stats slowly + var/self_growing = FALSE + + var/pest_level = 0 + var/weed_level = 0 + + var/pollinated = FALSE + +/datum/component/plant_growing/Initialize(max_reagents = 40, maximum_seeds = 1) + . = ..() + + var/atom/movable/movable_parent = parent + src.maximum_seeds = maximum_seeds + for(var/i = 1 to maximum_seeds) + managed_seeds["[i]"] = null + + ///we create reagents using max_reagents, then make it visible and an open container + movable_parent.create_reagents(max_reagents, (OPENCONTAINER | AMOUNT_VISIBLE)) + + RegisterSignals(parent, list(COMSIG_TRY_PLANT_SEED, COMSIG_ATOM_ATTACKBY), PROC_REF(try_plant_seed)) + RegisterSignal(parent, COMSIG_TRY_POLLINATE, PROC_REF(try_pollinate)) + RegisterSignal(parent, COMSIG_ATOM_ATTACK_HAND_SECONDARY, PROC_REF(try_drain)) + + RegisterSignals(parent, list(COMSIG_TRY_HARVEST_SEEDS, COMSIG_ATOM_ATTACK_HAND), PROC_REF(try_harvest)) + RegisterSignals(movable_parent.reagents, list(COMSIG_REAGENTS_NEW_REAGENT, COMSIG_REAGENTS_ADD_REAGENT, COMSIG_REAGENTS_DEL_REAGENT, COMSIG_REAGENTS_REM_REAGENT), PROC_REF(on_reagent_change)) + RegisterSignals(movable_parent.reagents, list(COMSIG_REAGENT_CACHE_ADD_ATTEMPT), PROC_REF(on_reagent_cache_pre)) + + RegisterSignal(parent, COMSIG_GROWING_ADJUST_TOXIN, PROC_REF(adjust_toxin)) + RegisterSignal(parent, COMSIG_GROWING_ADJUST_PEST, PROC_REF(adjust_pests)) + RegisterSignal(parent, COMSIG_GROWING_ADJUST_WEED, PROC_REF(adjust_weeds)) + RegisterSignal(parent, COMSIG_GROWER_ADJUST_SELFGROW, PROC_REF(adjust_selfgrow)) + RegisterSignal(parent, COMSIG_GROWER_INCREASE_WORK_PROCESSES, PROC_REF(increase_work_processes)) + RegisterSignal(parent, COMSIG_REMOVE_PLANT, PROC_REF(remove_plant)) + RegisterSignal(parent, COMSIG_GROWER_CHECK_POLLINATED, PROC_REF(check_pollinated)) + RegisterSignal(parent, COMSIG_ATTEMPT_BIOBOOST, PROC_REF(try_bioboost)) + RegisterSignal(parent, COMSIG_PLANTER_REMOVE_PLANTS, PROC_REF(remove_all_plants)) + RegisterSignal(parent, COMSIG_TOGGLE_BIOBOOST, PROC_REF(toggle_bioboost)) + RegisterSignal(movable_parent.reagents, COMSIG_REAGENT_PRE_TRANS_TO, PROC_REF(pre_trans)) + RegisterSignal(parent, COMSIG_GROWING_TRY_SECATEUR, PROC_REF(try_secateur)) + RegisterSignal(parent, COMSIG_GROWER_TRY_GRAFT, PROC_REF(try_graft)) + + RegisterSignal(parent, COMSIG_ATOM_EXAMINE, PROC_REF(on_examine)) + + START_PROCESSING(SSplants, src) + SEND_SIGNAL(parent, COMSIG_GROWING_WATER_UPDATE, water_precent) + +/datum/component/plant_growing/process(seconds_per_tick) + if(!length(managed_seeds)) + return + var/atom/movable/movable_parent = parent + movable_parent.update_appearance() + if((world.time < next_work) && !bio_boosted) + return + next_work = world.time + work_processes + work_cycle++ + + for(var/datum/reagent/reagent as anything in movable_parent.reagents.reagent_list) + reagent.on_plant_grower_apply(parent) + + for(var/item as anything in managed_seeds) + var/obj/item/seeds/seed = managed_seeds[item] + if(!seed) + continue + + if(seed.get_gene(/datum/plant_gene/trait/glow)) + var/datum/plant_gene/trait/glow/G = seed.get_gene(/datum/plant_gene/trait/glow) + movable_parent.set_light(l_outer_range = G.glow_range(seed), l_power = G.glow_power(seed), l_color = G.glow_color) + + if(!bio_boosted) + if(work_cycle >= 2) + adjust_water(-rand(1, 6)) + if(water_precent <= 0 || weed_level >= 10) + SEND_SIGNAL(seed, COMSIG_ADJUST_PLANT_HEALTH, -rand(0, 2)) + continue + if(movable_parent.reagents.total_volume <= 5) + SEND_SIGNAL(seed, COMSIG_ADJUST_PLANT_HEALTH, -rand(0, 2)) + + if(pollinated) + seed.adjust_potency(rand(1,2)) + seed.adjust_yield(rand(1,2)) + seed.adjust_endurance(rand(1,2)) + seed.adjust_lifespan(rand(1,2)) + + if(water_precent >= 10) + SEND_SIGNAL(seed, COMSIG_ADJUST_PLANT_HEALTH, rand(1, 2)) + SEND_SIGNAL(seed, COMSIG_PLANT_GROWTH_PROCESS, movable_parent.reagents, bio_boosted) + if((self_sustaining_precent >= 100) || bio_boosted) + continue + + if(work_cycle >= 2 && !bio_boosted) + if(prob(seed.weed_chance)) + SEND_SIGNAL(seed, COMSIG_GROWING_ADJUST_WEED, seed.weed_rate) + + if(work_cycle >= 2) + work_cycle = 0 + + if(movable_parent.reagents.total_volume > 5) + if(bio_boosted) + movable_parent.reagents.remove_any(max(1,round(movable_parent.reagents.total_volume * 0.01, CHEMICAL_QUANTISATION_LEVEL))) + else + movable_parent.reagents.remove_any(max(1,round(movable_parent.reagents.total_volume * 0.025, CHEMICAL_QUANTISATION_LEVEL))) + + SEND_SIGNAL(movable_parent, COMSIG_NUTRIENT_UPDATE, movable_parent.reagents.total_volume / movable_parent.reagents.maximum_volume) + + +/datum/component/plant_growing/proc/try_plant_seed(datum/source, obj/item/seeds/seed, mob/living/user) + SIGNAL_HANDLER + if(istype(seed, /obj/item/storage/bag/plants)) + for(var/id as anything in managed_seeds) + var/obj/item/seeds/harvest = managed_seeds[id] + if(!harvest) + continue + SEND_SIGNAL(harvest, COMSIG_PLANT_TRY_HARVEST, user) + + for(var/obj/item/food/grown/G in locate(user.x,user.y,user.z)) + seed.atom_storage?.attempt_insert(G, user, TRUE) + return COMPONENT_NO_AFTERATTACK + + var/atom/movable/movable_parent = parent + if(!istype(seed)) + return FALSE + + var/slot_number = 0 + var/free_slot = FALSE + for(var/item as anything in managed_seeds) + slot_number++ + if(isnull(managed_seeds[item])) + free_slot = TRUE + break + + if(!free_slot) + return FALSE + + managed_seeds["[slot_number]"] = seed + seed.forceMove(parent) + if(seed.GetComponent(/datum/component/growth_information)) + SEND_SIGNAL(seed, COMSIG_PLANT_BUILD_IMAGE) + SEND_SIGNAL(seed, COMSIG_PLANT_CHANGE_PLANTER, parent, "[slot_number]") + return COMPONENT_NO_AFTERATTACK + + seed.AddComponent(/datum/component/growth_information, parent, "[slot_number]") + SEND_SIGNAL(seed, COMSIG_PLANT_BUILD_IMAGE) + movable_parent.update_appearance() + return COMPONENT_NO_AFTERATTACK + +/datum/component/plant_growing/proc/try_harvest(datum/source, mob/living/user) + if(!length(managed_seeds)) + return + + for(var/item as anything in managed_seeds) + var/obj/item/seeds/seed = managed_seeds[item] + if(!seed) + continue + SEND_SIGNAL(seed, COMSIG_PLANT_TRY_HARVEST, user) + + +/datum/component/plant_growing/proc/try_pollinate(datum/source) + if(!length(managed_seeds)) + return + + pollinated = TRUE + var/set_time = rand(600, 900) + for(var/item as anything in managed_seeds) + var/obj/item/seeds/seed = managed_seeds[item] + if(!seed) + continue + SEND_SIGNAL(seed, COMSIG_PLANT_TRY_POLLINATE, parent, set_time) + + addtimer(VARSET_CALLBACK(src, pollinated, FALSE), set_time) + +///here we just remove any water added and increase the water precent, add other things you want done once. +/datum/component/plant_growing/proc/on_reagent_cache_pre(datum/reagents/holder, datum/reagent/reagent, datum/reagents/coming_from, amount) + ///restocks water + var/atom/movable/movable_parent = parent + if(reagent.type == /datum/reagent/water) + var/water_pre_precent = max_water / 100 + var/water_needed = round(water_pre_precent * (100 - water_precent)) + var/water_volume = min(reagent.volume, amount) + + + var/water_transfer = min(water_volume, water_needed) + adjust_water(water_transfer) + var/image/splash_animation = image('icons/effects/effects.dmi', movable_parent, "splash_hydroponics") + splash_animation.color = mix_color_from_reagents(coming_from.reagent_list) + splash_animation.layer += 5 + flick_overlay_global(splash_animation, GLOB.clients, 1.1 SECONDS) + playsound(movable_parent, 'sound/effects/slosh.ogg', 25, TRUE) + coming_from.remove_reagent(/datum/reagent/water, water_transfer) + return TRUE + +/datum/component/plant_growing/proc/pre_trans(datum/reagents/main, datum/reagents/incoming) + var/atom/movable/movable_parent = parent + var/image/splash_animation = image('icons/effects/effects.dmi', movable_parent, "splash_hydroponics") + splash_animation.color = mix_color_from_reagents(incoming.reagent_list) + splash_animation.layer += 5 + flick_overlay_global(splash_animation, GLOB.clients, 1.1 SECONDS) + playsound(movable_parent, 'sound/effects/slosh.ogg', 25, TRUE) + +/datum/component/plant_growing/proc/on_reagent_change(datum/reagents/holder, ...) + SEND_SIGNAL(parent, COMSIG_NUTRIENT_UPDATE, holder.total_volume / holder.maximum_volume) + +/datum/component/plant_growing/proc/adjust_water(amount) + var/water_precent_filled = (amount / max_water) * 100 + water_precent = clamp(water_precent + water_precent_filled, 0, 100) + SEND_SIGNAL(parent, COMSIG_GROWING_WATER_UPDATE, water_precent) + +/datum/component/plant_growing/proc/adjust_toxin(datum/source, amount) + toxicity_contents = max(0, toxicity_contents + amount) + SEND_SIGNAL(parent, COMSIG_TOXICITY_UPDATE, toxicity_contents) + +/datum/component/plant_growing/proc/adjust_pests(datum/source, amount) + pest_level = clamp(pest_level + amount, 0, 10) + SEND_SIGNAL(parent, COMSIG_PEST_UPDATE, pest_level) + +/datum/component/plant_growing/proc/adjust_weeds(datum/source, amount) + weed_level = clamp(weed_level + amount, 0, 10) + SEND_SIGNAL(parent, COMSIG_WEEDS_UPDATE, weed_level) + return TRUE + +/datum/component/plant_growing/proc/adjust_selfgrow(datum/source, amount) + self_sustaining_precent = clamp(self_sustaining_precent + amount, 0, 10) + +/datum/component/plant_growing/proc/increase_work_processes(datum/source, amount) + next_work -= amount + +/datum/component/plant_growing/proc/on_examine(atom/A, mob/user, list/examine_list) + SIGNAL_HANDLER + var/atom/movable/movable_parent = parent + + examine_list += span_info("Water: [water_precent]%") + examine_list += span_info("Nutrients: [movable_parent.reagents.total_volume] units") + + if(bio_boosted) + examine_list += span_boldnotice("It's currently being bio boosted, plants will grow incredibly quickly.") + + if(self_sustaining_precent >= 100) + examine_list += span_info("The tray's self-sustenance is active, protecting it from species mutations, weeds, and pests.") + if(self_growing) + examine_list += span_info("The tray's self sustaining growth dampeners are off.") + if(weed_level >= 5) + examine_list += span_warning("It's filled with weeds!") + if(pest_level >= 5) + examine_list += span_warning("It's filled with tiny worms!") + +/datum/component/plant_growing/proc/remove_plant(datum/source, id) + var/obj/item/seeds/seed = managed_seeds[id] + managed_seeds[id] = null + qdel(seed) + SEND_SIGNAL(parent, REMOVE_PLANT_VISUALS, id) + +/datum/component/plant_growing/proc/check_pollinated(datum/source) + return pollinated + +/datum/component/plant_growing/proc/try_bioboost(datum/source, duration) + if(bio_boosted) + return FALSE + bio_boosted = TRUE + addtimer(VARSET_CALLBACK(src, bio_boosted, FALSE), duration) + return TRUE + +/datum/component/plant_growing/proc/remove_all_plants(datum/source) + for(var/item as anything in managed_seeds) + var/obj/item/seeds/seed = managed_seeds[item] + managed_seeds[item] = null + qdel(seed) + SEND_SIGNAL(parent, REMOVE_PLANT_VISUALS, item) + +/datum/component/plant_growing/proc/toggle_bioboost(datum/source) + bio_boosted = !bio_boosted + +/datum/component/plant_growing/proc/try_secateur(datum/source, mob/user) + for(var/item as anything in managed_seeds) + var/obj/item/seeds/seed = managed_seeds[item] + if(!seed) + continue + SEND_SIGNAL(seed, COMSIG_PLANT_TRY_SECATEUR, user) + return TRUE + +/datum/component/plant_growing/proc/try_graft(datum/source, mob/user, obj/item/graft/snip) + for(var/item as anything in managed_seeds) + var/obj/item/seeds/seed = managed_seeds[item] + if(!seed) + continue + if(seed.apply_graft(snip)) + to_chat(user, span_notice("You carefully integrate the grafted plant limb onto [seed.plantname], granting it [snip.stored_trait.get_name()].")) + else + to_chat(user, span_notice("You integrate the grafted plant limb onto [seed.plantname], but it does not accept the [snip.stored_trait.get_name()] trait from the [snip].")) + qdel(snip) + return TRUE + +/datum/component/plant_growing/proc/try_drain(datum/source, mob/user) + INVOKE_ASYNC(src, PROC_REF(start_drain), user) + +/datum/component/plant_growing/proc/start_drain(mob/user) + var/atom/movable/movable = parent + if(movable.reagents.total_volume) + to_chat(user, span_notice("You begin to dump out the tray's nutrient mix.")) + if(do_after(user, 4 SECONDS, target = movable)) + playsound(user.loc, 'sound/effects/slosh.ogg', 50, TRUE, -1) + //dump everything on the floor + var/turf/user_loc = user.loc + if(istype(user_loc, /turf/open)) + user_loc.add_liquid_from_reagents(movable.reagents) + else + user_loc = get_step_towards(user_loc, movable) + user_loc.add_liquid_from_reagents(movable.reagents) + movable.reagents.remove_all(movable.reagents.total_volume) + else + to_chat(user, span_warning("The tray's nutrient mix is already empty!")) + diff --git a/monkestation/code/modules/botany/components/plant_growth_holder.dm b/monkestation/code/modules/botany/components/plant_growth_holder.dm new file mode 100644 index 000000000000..e06b1b011e3c --- /dev/null +++ b/monkestation/code/modules/botany/components/plant_growth_holder.dm @@ -0,0 +1,184 @@ +/datum/component/growth_information + ///how much we have grown % wise + var/growth_precent = 0 + ///our age + var/age = 0 + ///how many growth cycles we have gone through + var/growth_cycle = 0 + ///can we be harvested multiple times? + var/repeated_harvest = FALSE + ///has a bee visited us recently + var/pollinated = FALSE + ///our current health value + var/health_value + ///our modifier to yield + var/yield_modifier = 1 + ///the mutable appearance we have created + var/mutable_appearance/current_looks + ///our current planter host + var/atom/movable/planter + ///our current plant state + var/plant_state + ///how much lifespan is lost to repeated harvest + var/repeated_harvest_value = 0 + var/planter_id + +/datum/component/growth_information/Initialize(planter, id) + . = ..() + src.planter = planter + planter_id = id + + RegisterSignal(parent, COMSIG_PLANT_CHANGE_PLANTER, PROC_REF(change_planter)) + RegisterSignal(parent, COMSIG_PLANT_GROWTH_PROCESS, PROC_REF(process_growth)) + RegisterSignal(parent, COMSIG_PLANT_BUILD_IMAGE, PROC_REF(update_plant_visuals)) + RegisterSignal(parent, COMSIG_ADJUST_PLANT_HEALTH, PROC_REF(adjust_health)) + RegisterSignal(parent, COMSIG_PLANT_TRY_HARVEST, PROC_REF(try_harvest)) + RegisterSignal(parent, COMSIG_PLANT_TRY_SECATEUR, PROC_REF(try_secateur)) + RegisterSignal(parent, COMSIG_PLANT_TRY_POLLINATE, PROC_REF(try_pollinate)) + + var/obj/item/seeds/seed = parent + if(seed.get_gene(/datum/plant_gene/trait/repeated_harvest)) + repeated_harvest = TRUE + + health_value = seed.endurance * 3 + +/datum/component/growth_information/proc/update_plant_visuals(datum/source) + var/obj/item/seeds/seed = parent + update_growth_information() + var/t_growthstate = clamp(round(((growth_cycle / (seed.harvest_age * (1.01 ** -seed.maturation))) * 10) * seed.growthstages, 1),1, seed.growthstages) + + if(!current_looks) + current_looks = mutable_appearance(seed.growing_icon, "[seed.icon_grow][t_growthstate]", offset_spokesman = planter) + + current_looks.icon_state = "[seed.icon_grow][t_growthstate]" + + if(pollinated) + planter.particles = new /particles/pollen + else + planter.particles = null + + if((plant_state == HYDROTRAY_PLANT_HARVESTABLE) && seed.icon_harvest) + current_looks.icon_state = seed.icon_harvest + + if(plant_state == HYDROTRAY_PLANT_DEAD) + current_looks.icon_state = seed.icon_dead + SEND_SIGNAL(planter, COMSIG_PLANT_SENDING_IMAGE, current_looks, 0, seed.plant_icon_offset, planter_id) + +/datum/component/growth_information/proc/process_growth(datum/source, datum/reagents/planter_reagents, bio_boosted) + var/obj/item/seeds/seed = parent + growth_cycle++ + var/growth_mult = (1.01 ** -seed.maturation) + + //Checks if a self sustaining tray is fully grown and fully "functional" (corpse flowers require a specific age to produce miasma) + if(!(age > max(seed.maturation, seed.production) && (growth_cycle >= seed.harvest_age * growth_mult))) + age++ + + if(age > (seed.lifespan + repeated_harvest_value) && !bio_boosted) + adjust_health(src, -rand(1, 5)) + + for(var/datum/reagent/reagent as anything in planter_reagents.reagent_list) + reagent.on_plant_apply(parent) + + update_plant_visuals() + +/datum/component/growth_information/proc/update_growth_information() + var/obj/item/seeds/seed = parent + var/growth_mult = (1.01 ** -seed.maturation) + var/growth_cycles_needed = round(seed.harvest_age * growth_mult) + if(growth_cycles_needed == 0) + growth_precent = 100 + else + growth_precent = round((growth_cycle / growth_cycles_needed) * 100) + + plant_state = HYDROTRAY_PLANT_GROWING + + if(growth_precent >= 100) + plant_state = HYDROTRAY_PLANT_HARVESTABLE + SEND_SIGNAL(planter, COMSIG_GROWER_SET_HARVESTABLE, TRUE) + + if(health_value <= 0) + plant_state = HYDROTRAY_PLANT_DEAD + SEND_SIGNAL(planter, COMSIG_GROWER_SET_HARVESTABLE, FALSE) + +/datum/component/growth_information/proc/change_planter(datum/source, atom/movable/new_planter, id) + planter = new_planter + planter_id = id + +/datum/component/growth_information/proc/adjust_health(datum/source, amount) + if(plant_state == HYDROTRAY_PLANT_DEAD) + update_and_send_health_color() + return + var/obj/item/seeds/seed = parent + health_value = clamp(health_value + amount, 0, seed.endurance * 3) + + update_and_send_health_color() + +/datum/component/growth_information/proc/update_and_send_health_color() + var/obj/item/seeds/seed = parent + var/health_color + if(health_value < (seed.endurance * 0.9)) + health_color = "#FF3300" + else if(health_value < (seed.endurance * 1.5)) + health_color = "#FFFF00" + else if(health_value < (seed.endurance * 2.1)) + health_color = "#99FF66" + else + health_color = "#66FFFA" + + SEND_SIGNAL(planter, COMSIG_PLANT_UPDATE_HEALTH_COLOR, health_color) + +/datum/component/growth_information/proc/try_harvest(datum/source, mob/user) + if(plant_state == HYDROTRAY_PLANT_DEAD) + var/obj/item/seeds/seed = parent + var/atom/movable/to_send = planter + qdel(current_looks) + SEND_SIGNAL(planter, COMSIG_PLANT_SENDING_IMAGE, current_looks, 0, seed.plant_icon_offset, planter_id) + SEND_SIGNAL(planter, COMSIG_GROWER_SET_HARVESTABLE, FALSE) + planter = null + SEND_SIGNAL(to_send, COMSIG_REMOVE_PLANT, planter_id) + planter_id = null + return + + if(plant_state != HYDROTRAY_PLANT_HARVESTABLE) + return + + var/obj/item/seeds/seed = parent + + if(seed.get_gene(/datum/plant_gene/trait/repeated_harvest)) + repeated_harvest = TRUE + + seed.harvest(user) + if(repeated_harvest) + growth_cycle = 0 + repeated_harvest_value += (seed.lifespan * 0.1) //20% of lifespan is added to the value so that it won't start dying right away + update_plant_visuals() + SEND_SIGNAL(planter, COMSIG_GROWER_SET_HARVESTABLE, FALSE) + return + var/atom/movable/to_send = planter + qdel(current_looks) + SEND_SIGNAL(planter, COMSIG_PLANT_SENDING_IMAGE, current_looks, 0, seed.plant_icon_offset, planter_id) + SEND_SIGNAL(planter, COMSIG_GROWER_SET_HARVESTABLE, FALSE) + planter = null + SEND_SIGNAL(to_send, COMSIG_REMOVE_PLANT, planter_id) + planter_id = null + +/datum/component/growth_information/proc/try_secateur(datum/source, mob/user) + if(plant_state != HYDROTRAY_PLANT_HARVESTABLE) + return + var/obj/item/seeds/seed = parent + if(seed.grafted) + return + + user.visible_message(span_notice("[user] grafts off a limb from [seed.plantname]."), span_notice("You carefully graft off a portion of [seed.plantname].")) + var/obj/item/graft/snip = seed.create_graft() + + if(!snip) + return // The plant did not return a graft. + + snip.forceMove(planter.drop_location()) + seed.grafted = TRUE + adjust_health(src, -5) + +/datum/component/growth_information/proc/try_pollinate(datum/source, atom/movable/planter, time) + pollinated = TRUE + addtimer(VARSET_CALLBACK(src, pollinated, FALSE), time) diff --git a/monkestation/code/modules/botany/components/plant_tray_overlays.dm b/monkestation/code/modules/botany/components/plant_tray_overlays.dm new file mode 100644 index 000000000000..338a6d0ee9bd --- /dev/null +++ b/monkestation/code/modules/botany/components/plant_tray_overlays.dm @@ -0,0 +1,172 @@ +/datum/component/plant_tray_overlay + ///our self growing state + var/self_growing_state + ///our water state base + var/base_water_state + ///our current water state + var/current_water_state + ///the file we check for our overlays + var/overlay_icon + + ///pest overlay + var/pest_overlay + ///harvest state + var/harvest_overlay + ///our nutrient light + var/nutrient_overlay + + ///health overlay + var/health_overlay + ///health color + var/health_color + + ///the visuals we have stored from the seed + var/list/plant_visual_list = list() + var/base_offset_x = 0 + var/base_offset_y = 0 + + var/overlay_flags = NONE + + var/list/offsets = list() + +/datum/component/plant_tray_overlay/Initialize(overlay_icon, self_growing_state, base_water_state, pest_overlay, harvest_overlay, nutriment_overlay, health_overlay, plant_x, plant_y, maximum_seeds = 1, offsets = list(list(0,0))) + . = ..() + src.overlay_icon = overlay_icon + src.self_growing_state = self_growing_state + src.base_water_state = base_water_state + src.pest_overlay = pest_overlay + src.harvest_overlay = harvest_overlay + src.nutrient_overlay = nutrient_overlay + src.health_overlay = health_overlay + + base_offset_x = plant_x + base_offset_y = plant_y + + for(var/i = 1 to maximum_seeds) + plant_visual_list["[i]"] = null + + src.offsets = offsets +/datum/component/plant_tray_overlay/RegisterWithParent() + . = ..() + RegisterSignal(parent, COMSIG_GROWING_WATER_UPDATE, PROC_REF(get_water_state)) + RegisterSignal(parent, COMSIG_ATOM_UPDATE_OVERLAYS, PROC_REF(apply_overlays)) + RegisterSignal(parent, COMSIG_PLANT_SENDING_IMAGE, PROC_REF(update_plant)) + RegisterSignal(parent, COMSIG_PLANT_UPDATE_HEALTH_COLOR, PROC_REF(update_health_color)) + RegisterSignal(parent, COMSIG_WEEDS_UPDATE, PROC_REF(weed_update)) + RegisterSignal(parent, COMSIG_PEST_UPDATE, PROC_REF(pest_update)) + RegisterSignal(parent, COMSIG_TOXICITY_UPDATE, PROC_REF(toxic_update)) + RegisterSignal(parent, COMSIG_NUTRIENT_UPDATE, PROC_REF(nutrient_update)) + RegisterSignal(parent, COMSIG_GROWER_SET_HARVESTABLE, PROC_REF(update_harvestable)) + RegisterSignal(parent, REMOVE_PLANT_VISUALS, PROC_REF(remove_plant_visuals)) + + +/datum/component/plant_tray_overlay/proc/get_water_state(datum/source, precent) + SIGNAL_HANDLER + + if(!base_water_state) + return + switch(precent) + if(0 to 20) + current_water_state = "[base_water_state]5" + if(21 to 40) + current_water_state = "[base_water_state]4" + if(40 to 60) + current_water_state = "[base_water_state]3" + if(61 to 80) + current_water_state = "[base_water_state]2" + if(81 to 100) + current_water_state = "[base_water_state]1" + overlay_flags |= SHOW_WATER + +/datum/component/plant_tray_overlay/proc/update_plant(datum/source, mutable_appearance/plant, x = 0, y = 0, id) + var/atom/movable/movable = parent + var/mutable_appearance/visuals = plant_visual_list[id] + if(visuals) + plant_visual_list[id] = null + qdel(visuals) + if(!plant) + movable.update_overlays() + return + + visuals = new(plant) + + var/list/current_offsets = offsets[text2num(id)] + + visuals.layer = ABOVE_MOB_LAYER + SET_PLANE_EXPLICIT(visuals, GAME_PLANE_FOV_HIDDEN, movable) + if(current_offsets[2] > 0) + visuals.layer -= 0.01 + + var/plant_offset_x = x + base_offset_x + current_offsets[1] + var/plant_offset_y = y + base_offset_y + current_offsets[2] + + visuals.pixel_x = plant_offset_x + visuals.pixel_y = plant_offset_y + + plant_visual_list[id] = visuals + +/datum/component/plant_tray_overlay/proc/apply_overlays(atom/source, list/overlays) + SIGNAL_HANDLER + if(!overlay_icon) + return + + if(overlay_flags & SHOW_WATER) + overlays += mutable_appearance(overlay_icon, current_water_state, offset_spokesman = parent) + + if((overlay_flags & SHOW_PEST) || (overlay_flags & SHOW_TOXIC) || (overlay_flags & SHOW_WEED)) + overlays += mutable_appearance(overlay_icon, pest_overlay, offset_spokesman = parent) + + if(overlay_flags & SHOW_NUTRIENT) + overlays += mutable_appearance(overlay_icon, nutrient_overlay, offset_spokesman = parent) + + if(overlay_flags & SHOW_HEALTH) + var/mutable_appearance/health = mutable_appearance(overlay_icon, health_overlay, offset_spokesman = parent) + health.color = health_color + overlays += health + + if(overlay_flags & SHOW_HARVEST) + overlays += mutable_appearance(overlay_icon, harvest_overlay, offset_spokesman = parent) + + for(var/item in plant_visual_list) + if(!isnull(plant_visual_list[item])) + overlays += plant_visual_list[item] + +/datum/component/plant_tray_overlay/proc/update_health_color(datum/source, color) + health_color = color + if(health_overlay) + overlay_flags |= SHOW_HEALTH + +/datum/component/plant_tray_overlay/proc/weed_update(datum/source, amount) + if(pest_overlay && amount >= 6) + overlay_flags |= SHOW_WEED + else + overlay_flags &= ~SHOW_WEED + +/datum/component/plant_tray_overlay/proc/pest_update(datum/source, amount) + if(pest_overlay && amount >= 6) + overlay_flags |= SHOW_PEST + else + overlay_flags &= ~SHOW_PEST + +/datum/component/plant_tray_overlay/proc/toxic_update(datum/source, amount) + if(pest_overlay && amount >= 40) + overlay_flags |= SHOW_TOXIC + else + overlay_flags &= ~SHOW_TOXIC + +/datum/component/plant_tray_overlay/proc/nutrient_update(datum/source, precent) + if(nutrient_overlay && precent < 0.35) + overlay_flags |= SHOW_NUTRIENT + else + overlay_flags &= ~SHOW_NUTRIENT + +/datum/component/plant_tray_overlay/proc/update_harvestable(datum/soruce, harvestable) + if(harvest_overlay && harvestable) + overlay_flags |= SHOW_HARVEST + else + overlay_flags &= ~SHOW_HARVEST + +/datum/component/plant_tray_overlay/proc/remove_plant_visuals(datum/source, id) + plant_visual_list[id] = null + var/atom/movable/movable = parent + movable.update_appearance() diff --git a/monkestation/code/modules/botany/hydrotray.dm b/monkestation/code/modules/botany/hydrotray.dm new file mode 100644 index 000000000000..4d5ce0ce3bec --- /dev/null +++ b/monkestation/code/modules/botany/hydrotray.dm @@ -0,0 +1,61 @@ +/obj/machinery/growing + name = "hydroponics tray" + icon = 'monkestation/icons/obj/machines/hydroponics.dmi' + icon_state = "hydrotray" + density = TRUE + pass_flags_self = PASSMACHINE | LETPASSTHROW + pixel_z = 8 + obj_flags = CAN_BE_HIT | UNIQUE_RENAME + var/maximum_seeds = 1 + +/obj/machinery/growing/Initialize(mapload) + . = ..() + AddComponent(/datum/component/plant_growing, 60, maximum_seeds) + + +/obj/machinery/growing/tray + circuit = /obj/item/circuitboard/machine/hydroponics + +/obj/machinery/growing/tray/Initialize(mapload) + AddComponent(/datum/component/plant_tray_overlay, icon, "hydrotray_gaia", "hydrotray_water_", "hydrotray_pests", "hydrotray_harvest", "hydrotray_nutriment", "hydrotray_health", 0, 0) + . = ..() + +/obj/machinery/growing/tray/attackby(obj/item/I, mob/living/user, params) + if (!(user.istate & ISTATE_HARM)) + // handle opening the panel + if(default_deconstruction_screwdriver(user, icon_state, icon_state, I)) + return + if(default_deconstruction_crowbar(I)) + return + + return ..() + +/obj/machinery/growing/tray/can_be_unfasten_wrench(mob/user, silent) + return ..() + +/obj/machinery/growing/tray/wrench_act(mob/living/user, obj/item/tool) + . = ..() + default_unfasten_wrench(user, tool) + return TOOL_ACT_TOOLTYPE_SUCCESS + +/obj/machinery/growing/soil + name = "soil" + desc = "A patch of dirt." + icon = 'icons/obj/hydroponics/equipment.dmi' + icon_state = "soil" + density = FALSE + +/obj/machinery/growing/soil/Initialize(mapload) + AddComponent(/datum/component/plant_tray_overlay, icon, null, null, null, null, null, null, 0, 0) + . = ..() + +/obj/machinery/growing/multi + name = "soil" + icon = 'icons/obj/hydroponics/equipment.dmi' + icon_state = "soil" + maximum_seeds = 4 + density = FALSE + +/obj/machinery/growing/multi/Initialize(mapload) + AddComponent(/datum/component/plant_tray_overlay, icon, null, null, null, null, null, null, 0, 0, maximum_seeds, list(list(-4,-4), list(8,-4), list(-4, 4), list(8, 4))) + . = ..() diff --git a/monkestation/code/modules/botany/icons/apid_sprites.dmi b/monkestation/code/modules/botany/icons/apid_sprites.dmi new file mode 100644 index 0000000000000000000000000000000000000000..0212f10030290e816658be3c1c3908f868ffd825 GIT binary patch literal 22266 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 S9xW9B0000= ONE_ATMOSPHERE*0.85)) //as long as there's reasonable pressure and no gravity, flight is possible + ADD_TRAIT(owner, TRAIT_FREE_FLOAT_MOVEMENT, REF(src)) + return + + REMOVE_TRAIT(owner, TRAIT_FREE_FLOAT_MOVEMENT, REF(src)) + + +///Moth wing bodypart overlay, including burn functionality! +/datum/bodypart_overlay/mutant/wings/apid + feature_key = "apid_wings" + layers = EXTERNAL_BEHIND | EXTERNAL_FRONT + +/datum/bodypart_overlay/mutant/wings/apid/get_global_feature_list() + return GLOB.apid_wings_list + +/datum/bodypart_overlay/mutant/wings/apid/can_draw_on_bodypart(mob/living/carbon/human/human) + if(!(human.wear_suit?.flags_inv & HIDEMUTWINGS)) + return TRUE + return FALSE + +/datum/bodypart_overlay/mutant/wings/apid/get_base_icon_state() + return sprite_datum.icon_state + +/datum/sprite_accessory/apid_wings + icon = 'monkestation/code/modules/botany/icons/apid_sprites.dmi' + color_src = null + em_block = TRUE + +/datum/sprite_accessory/apid_wings/normal + name = "Normal" + icon_state = "normal" + diff --git a/monkestation/code/modules/botany/species/apid/hive/ability.dm b/monkestation/code/modules/botany/species/apid/hive/ability.dm new file mode 100644 index 000000000000..29da7ae69f03 --- /dev/null +++ b/monkestation/code/modules/botany/species/apid/hive/ability.dm @@ -0,0 +1,50 @@ + +/datum/action/cooldown/spell/build_hive + name = "Build Hive Home" + desc = "You construct a once home for you and your bee people." + button_icon = 'icons/obj/hydroponics/equipment.dmi' + button_icon_state = "beebox" + + cooldown_time = 25 MINUTES + spell_requirements = NONE + + var/obj/structure/beebox/hive/created_hive + +/datum/action/cooldown/spell/build_hive/can_cast_spell(feedback = TRUE) + . = ..() + if(created_hive) + return FALSE + +/datum/action/cooldown/spell/build_hive/cast(mob/living/carbon/human/user = usr) + . = ..() + if(is_species(user, /datum/species/apid)) + var/datum/species/apid/apid = user.dna.species + if(apid.stored_honey < 150) + to_chat(user, span_notice("Not enough stored honey")) + addtimer(CALLBACK(src, PROC_REF(reset_spell_cooldown)), 2 SECONDS) + return + + if(!do_after(user, 10 SECONDS, get_turf(user))) + addtimer(CALLBACK(src, PROC_REF(reset_spell_cooldown)), 2 SECONDS) + return + + if(is_species(user, /datum/species/apid)) + var/datum/species/apid/apid = user.dna.species + if(apid.stored_honey < 150) + addtimer(CALLBACK(src, PROC_REF(reset_spell_cooldown)), 2 SECONDS) + return + + apid.adjust_honeycount(-150) + created_hive = new(get_turf(user), user.real_name) + apid.owned_hive = created_hive + created_hive.current_stat = apid.current_stat + + RegisterSignals(created_hive, list(COMSIG_QDELETING, COMSIG_PREQDELETED), PROC_REF(remove_hive)) + +/datum/action/cooldown/spell/build_hive/proc/remove_hive() + UnregisterSignal(created_hive, list(COMSIG_QDELETING, COMSIG_PREQDELETED)) + created_hive = null + var/mob/living/carbon/human/user = owner + if(is_species(user, /datum/species/apid)) + var/datum/species/apid/apid = user.dna.species + apid.owned_hive = null diff --git a/monkestation/code/modules/botany/species/apid/hive/area.dm b/monkestation/code/modules/botany/species/apid/hive/area.dm new file mode 100644 index 000000000000..849e508f5a45 --- /dev/null +++ b/monkestation/code/modules/botany/species/apid/hive/area.dm @@ -0,0 +1,12 @@ +/area/station/hive + name = "Hive" + area_flags = NOTELEPORT | EVENT_PROTECTED | ABDUCTOR_PROOF + has_gravity = TRUE + +/area/station/hive/one + +/area/station/hive/two + +/area/station/hive/three + +/area/station/hive/four diff --git a/monkestation/code/modules/botany/species/apid/hive/hive_object.dm b/monkestation/code/modules/botany/species/apid/hive/hive_object.dm new file mode 100644 index 000000000000..9745794125ca --- /dev/null +++ b/monkestation/code/modules/botany/species/apid/hive/hive_object.dm @@ -0,0 +1,125 @@ +GLOBAL_LIST_INIT(hive_exits, list()) + +/obj/structure/beebox/hive + name = "generic hive" + desc = "A generic hive without an owner." + + icon = 'monkestation/code/modules/botany/icons/apid_sprites.dmi' + icon_state = "hive" + + var/obj/structure/hive_exit/linked_exit + var/stored_honey = 0 + var/current_stat = "potency" + +/obj/structure/beebox/hive/Initialize(mapload, created_name) + . = ..() + ADD_TRAIT(src, TRAIT_BANNED_FROM_CARGO_SHUTTLE, INNATE_TRAIT) // womp womp + + name = "[created_name]'s hive" + for(var/i = 1 to 3) + var/obj/item/honey_frame/HF = new(src) + honey_frames += HF + + for(var/obj/structure/hive_exit/exit as anything in GLOB.hive_exits) + if(exit.linked_hive) + continue + exit.linked_hive = src + linked_exit = exit + linked_exit.name = "[created_name]'s hive exit" + break + + if(!linked_exit) + var/datum/map_template/hive/hive = new() + var/datum/turf_reservation/roomReservation = SSmapping.request_turf_block_reservation(hive.width, hive.height, 1) + var/turf/bottom_left = roomReservation.bottom_left_turfs[1] + var/datum/map_template/load_from = hive + + load_from.load(bottom_left) + for(var/obj/structure/hive_exit/exit as anything in GLOB.hive_exits) + if(exit.linked_hive) + continue + exit.linked_hive = src + linked_exit = exit + break + +/obj/structure/beebox/hive/Destroy() + . = ..() + for(var/atom/movable/listed in linked_exit?.atoms_inside) + listed.forceMove(get_turf(src)) + linked_exit?.linked_hive = null + linked_exit.name = "generic hive exit" + linked_exit = null + +/obj/structure/beebox/hive/attack_hand(mob/living/user, list/modifiers) + . = ..() + if(!linked_exit) + return + + var/enter_time = 4 SECONDS + if(is_species(user, /datum/species/apid)) + enter_time = 2 SECONDS + + if(!do_after(user, enter_time, src)) + return + + if(user.pulling && user.pulling != src) + do_teleport(user.pulling, get_step(linked_exit, EAST), no_effects = TRUE, forced = TRUE) + do_teleport(user, get_step(linked_exit, EAST), no_effects = TRUE, forced = TRUE) + + +/obj/structure/hive_exit + name = "generic hive exit" + desc = "A generic hive exit without an owner" + + icon = 'monkestation/code/modules/botany/icons/apid_sprites.dmi' + icon_state = "hive_exit" + + var/obj/structure/beebox/hive/linked_hive + + var/list/atoms_inside = list() + +/obj/structure/hive_exit/Initialize(mapload) + . = ..() + GLOB.hive_exits += src + RegisterSignal(get_area(src), COMSIG_AREA_EXITED, PROC_REF(exit_area)) + RegisterSignal(get_area(src), COMSIG_AREA_ENTERED, PROC_REF(enter_area)) + +/obj/structure/hive_exit/Destroy() + . = ..() + for(var/atom/movable/listed in atoms_inside) + listed.forceMove(get_turf(linked_hive)) + GLOB.hive_exits -= src + linked_hive?.linked_exit = null + linked_hive = null + +/obj/structure/hive_exit/attack_hand(mob/living/user, list/modifiers) + . = ..() + if(!linked_hive) + return + + var/enter_time = 4 SECONDS + if(is_species(user, /datum/species/apid)) + enter_time = 2 SECONDS + + if(!do_after(user, enter_time, src)) + return + if(user.pulling) + do_teleport(user.pulling, get_turf(linked_hive), no_effects = TRUE, forced = TRUE) + do_teleport(user, get_turf(linked_hive), no_effects = TRUE, forced = TRUE) + +/obj/structure/hive_exit/proc/exit_area(datum/source, atom/removed) + if(isturf(removed)) + return + atoms_inside -= removed + +/obj/structure/hive_exit/proc/enter_area(datum/source, atom/added) + if(isturf(added)) + return + atoms_inside += added + + +/datum/map_template/hive + name = "Hive Template" + width = 15 + height = 15 + mappath = "_maps/~monkestation/templates/hives.dmm" diff --git a/monkestation/code/modules/botany/species/apid/hive/hive_turfs.dm b/monkestation/code/modules/botany/species/apid/hive/hive_turfs.dm new file mode 100644 index 000000000000..dd056c5d8429 --- /dev/null +++ b/monkestation/code/modules/botany/species/apid/hive/hive_turfs.dm @@ -0,0 +1,18 @@ +/turf/open/indestructible/hive + name = "wax floor" + desc = "A floor made of beeswax" + + icon = 'goon/icons/floors.dmi' + icon_state = "hive" + +/turf/closed/indestructible/hive + name = "wax wall" + desc = "A wall made of wax" + + icon = 'goon/icons/walls_beehive.dmi' + icon_state = "bee-0" + base_icon_state = "bee" + + smoothing_flags = SMOOTH_BITMASK + smoothing_groups = SMOOTH_GROUP_WAXWALL + canSmoothWith = SMOOTH_GROUP_WAXWALL diff --git a/monkestation/code/modules/botany/species/apid/organs.dm b/monkestation/code/modules/botany/species/apid/organs.dm new file mode 100644 index 000000000000..ab8a0ac7e872 --- /dev/null +++ b/monkestation/code/modules/botany/species/apid/organs.dm @@ -0,0 +1,5 @@ +/obj/item/organ/internal/eyes/apid + name = "apid eyes" + desc = "Designed for navigating dark hives, these eyes have improvement to low light vision." + lighting_cutoff = LIGHTING_CUTOFF_MEDIUM + eye_icon_state = "motheyes" diff --git a/monkestation/code/modules/botany/species/apid/species.dm b/monkestation/code/modules/botany/species/apid/species.dm new file mode 100644 index 000000000000..5424db2b397a --- /dev/null +++ b/monkestation/code/modules/botany/species/apid/species.dm @@ -0,0 +1,154 @@ +#define ui_honeydisplay "WEST,CENTER-2:15" +#define FORMAT_HONEY_CHARGES_TEXT(charges) MAPTEXT("

") + +/datum/language_holder/apid + understood_languages = list(/datum/language/common = list(LANGUAGE_ATOM)) + spoken_languages = list(/datum/language/common = list(LANGUAGE_ATOM)) + + +/obj/item/food/meat/slab/human/mutant/apid + icon_state = "mothmeat" + desc = "Unpleasantly powdery and dry. Kind of pretty, though." + tastes = list("dust" = 1, "powder" = 1, "meat" = 2) + foodtypes = MEAT | RAW | BUGS | GORE + venue_value = FOOD_MEAT_MUTANT + +/atom/movable/screen/apid + icon = 'monkestation/code/modules/botany/icons/apid_sprites.dmi' + + +/atom/movable/screen/apid/honey + name = "honey storage" + icon_state = "honey_counter" + screen_loc = ui_honeydisplay + + +/datum/species/apid + name = "\improper Apid" + plural_form = "Apids" + id = SPECIES_APID + species_traits = list( + LIPS, + HAS_MARKINGS, + HAIR + ) + + /* + mutant_bodyparts = list( + "apid_stripes" = "None", + "apid_headstripes" = "None", + ) + */ + + mutanteyes = /obj/item/organ/internal/eyes/apid + + external_organs = list( + /obj/item/organ/external/wings/apid = "Normal", + /obj/item/organ/external/antennae_apid = "Moth", + ) + + inherent_traits = list( + TRAIT_TACKLING_WINGED_ATTACKER, + TRAIT_ANTENNAE, + ) + inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID|MOB_BUG + + meat = /obj/item/food/meat/slab/human/mutant/apid + liked_food = VEGETABLES | MEAT | FRUIT + disliked_food = GROSS | BUGS | GORE + toxic_food = RAW | SEAFOOD + + changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_MAGIC | MIRROR_PRIDE | ERT_SPAWN | RACE_SWAP | SLIME_EXTRACT + species_language_holder = /datum/language_holder/apid + + bodypart_overrides = list( + BODY_ZONE_HEAD = /obj/item/bodypart/head/apid, + BODY_ZONE_CHEST = /obj/item/bodypart/chest/apid, + BODY_ZONE_L_ARM = /obj/item/bodypart/arm/left/apid, + BODY_ZONE_R_ARM = /obj/item/bodypart/arm/right/apid, + BODY_ZONE_L_LEG = /obj/item/bodypart/leg/left/apid, + BODY_ZONE_R_LEG = /obj/item/bodypart/leg/right/apid, + ) + + var/obj/structure/beebox/hive/owned_hive + + var/datum/action/cooldown/spell/build_hive/build + var/datum/action/cooldown/spell/pointed/pollinate/pollinate + var/datum/action/cooldown/spell/change_pollination_stat/change_stat + + var/stored_honey = 0 + var/current_stat = "potency" + + /// UI displaying how much honey we have + var/atom/movable/screen/apid/honey/honeydisplay + + +/datum/species/apid/on_species_gain(mob/living/carbon/human/human_who_gained_species, datum/species/old_species, pref_load) + . = ..() + RegisterSignal(human_who_gained_species, COMSIG_MOB_APPLY_DAMAGE_MODIFIERS, PROC_REF(damage_weakness)) + build = new + build.Grant(human_who_gained_species) + + pollinate = new + pollinate.Grant(human_who_gained_species) + + change_stat = new + change_stat.Grant(human_who_gained_species) + + if(human_who_gained_species.hud_used) + var/datum/hud/hud_used = human_who_gained_species.hud_used + + honeydisplay = new /atom/movable/screen/apid/honey() + honeydisplay.hud = hud_used + hud_used.infodisplay += honeydisplay + adjust_honeycount(0) + hud_used.show_hud(hud_used.hud_version) + +/datum/species/apid/proc/adjust_honeycount(amount) + stored_honey = max(0, amount + stored_honey) + honeydisplay?.maptext = FORMAT_HONEY_CHARGES_TEXT(stored_honey) + +/datum/species/apid/on_species_loss(mob/living/carbon/human/C, datum/species/new_species, pref_load) + . = ..() + UnregisterSignal(C, COMSIG_MOB_APPLY_DAMAGE_MODIFIERS) + if(build) + build.Remove(C) + if(pollinate) + pollinate.Remove(C) + if(change_stat) + change_stat.Remove(C) + + if(C.hud_used) + var/datum/hud/hud_used = C.hud_used + + hud_used.infodisplay -= honeydisplay + QDEL_NULL(honeydisplay) + +/datum/species/apid/spec_life(mob/living/carbon/human/H, seconds_per_tick, times_fired) + . = ..() + if(honeydisplay) + return + + if(H.hud_used) + var/datum/hud/hud_used = H.hud_used + + honeydisplay = new /atom/movable/screen/apid/honey() + honeydisplay.hud = hud_used + hud_used.infodisplay += honeydisplay + adjust_honeycount(0) + hud_used.show_hud(hud_used.hud_version) + +/datum/species/apid/proc/damage_weakness(datum/source, list/damage_mods, damage_amount, damagetype, def_zone, sharpness, attack_direction, obj/item/attacking_item) + SIGNAL_HANDLER + + if(istype(attacking_item, /obj/item/melee/flyswatter)) + damage_mods += 10 // Yes, a 10x damage modifier + +/datum/species/apid/get_scream_sound(mob/living/carbon/human/human) + return 'sound/voice/moth/scream_moth.ogg' + +/datum/species/apid/get_species_description() + return "Apids are a race of bipedal bees from the jungle planet of Saltu. Due to their large bodies, they have lost the ability to fly." + +#undef ui_honeydisplay +#undef FORMAT_HONEY_CHARGES_TEXT diff --git a/monkestation/code/modules/botany/tools.dm b/monkestation/code/modules/botany/tools.dm new file mode 100644 index 000000000000..9802dd996396 --- /dev/null +++ b/monkestation/code/modules/botany/tools.dm @@ -0,0 +1,29 @@ +/obj/item/shovel/spade/pre_attack(atom/A, mob/living/user, params) + if(A.GetComponent(/datum/component/plant_growing)) + if(!do_after(user, 3 SECONDS, A)) + return ..() + SEND_SIGNAL(A, COMSIG_PLANTER_REMOVE_PLANTS) + return TRUE + . = ..() + +/obj/item/cultivator/pre_attack(atom/A, mob/living/user, params) + if(SEND_SIGNAL(A, COMSIG_GROWING_ADJUST_WEED, -10)) + user.visible_message(span_notice("[user] uproots the weeds."), span_notice("You remove the weeds from [src].")) + return TRUE + . = ..() + +/obj/item/secateurs/pre_attack(atom/A, mob/living/user, params) + if(SEND_SIGNAL(A, COMSIG_GROWING_TRY_SECATEUR, user)) + return TRUE + . = ..() + +/obj/item/graft/pre_attack(atom/A, mob/living/user, params) + if(SEND_SIGNAL(A, COMSIG_GROWER_TRY_GRAFT, user, src)) + return TRUE + . = ..() + +/obj/item/bio_cube/pre_attack(atom/A, mob/living/user, params) + if(SEND_SIGNAL(A, COMSIG_ATTEMPT_BIOBOOST, total_duration)) + qdel(src) + return TRUE + . = ..() diff --git a/monkestation/code/modules/cassettes/track_folder/base_tracks.json b/monkestation/code/modules/cassettes/track_folder/base_tracks.json index 20c98475f40e..f55fa3d0da61 100644 --- a/monkestation/code/modules/cassettes/track_folder/base_tracks.json +++ b/monkestation/code/modules/cassettes/track_folder/base_tracks.json @@ -190,16 +190,6 @@ "genre": "Rock" }, { - "url": "https://files.catbox.moe/977069.m4a", - "title": "Miles Away", - "duration": 2520, - "artist": "Winger", - "secret": false, - "lobby": false, - "jukebox": true, - "genre": "Rock" - }, - { "url": "https://files.catbox.moe/i5q08z.m4a", "title": "Run, Sally, Run!", "duration": 2870, @@ -210,16 +200,6 @@ "genre": "Electronic" }, { - "url": "https://files.catbox.moe/34kdfv.mp3", - "title": "Kickstart my Heart", - "duration": 2830, - "artist": "Motley Crue", - "secret": false, - "lobby": false, - "jukebox": true, - "genre": "Metal" - }, - { "url": "https://files.catbox.moe/ul3m8e.mp3", "title": "Bizarre Love Triangle", "duration": 2610, @@ -340,16 +320,6 @@ "genre": "Rock" }, { - "url": "https://files.catbox.moe/1rgsqr.m4a", - "title": "A Night on Bald Mountain", - "duration": 6830, - "artist": "Modest Mussorgsky", - "secret": false, - "lobby": false, - "jukebox": true, - "genre": "Classical and Orchestral" - }, - { "url": "https://files.catbox.moe/frq3un.m4a", "title": "Keep on Loving You", "duration": 2000, @@ -440,16 +410,6 @@ "genre": "Metal" }, { - "url": "https://files.catbox.moe/0e0wmd.m4a", - "title": "Gettin' Jiggy Wit It", - "duration": 2270, - "artist": "Will Smith", - "secret": false, - "lobby": false, - "jukebox": true, - "genre": "Hip-Hop and Rap" - }, - { "url": "https://files.catbox.moe/fm20mk.m4a", "title": "Lay It Down", "duration": 2050, @@ -580,16 +540,6 @@ "genre": "Folk and Indie" }, { - "url": "https://files.catbox.moe/8c3n30.m4a", - "title": "New Sins for Old", - "duration": 1520, - "artist": "Leslie Fish", - "secret": false, - "lobby": false, - "jukebox": true, - "genre": "Folk and Indie" - }, - { "url": "https://files.catbox.moe/t9i5vh.mp3", "title": "Space Hero", "duration": 1680, @@ -620,16 +570,6 @@ "genre": "Folk and Indie" }, { - "url": "https://files.catbox.moe/1vowpl.m4a", - "title": "Harder, Better, Faster, Stronger", - "duration": 2260, - "artist": "Daft Punk", - "secret": false, - "lobby": false, - "jukebox": true, - "genre": "Electronic" - }, - { "url": "https://files.catbox.moe/fnse07.m4a", "title": "Crazy Train", "duration": 2960, @@ -680,36 +620,6 @@ "genre": "Disco, Funk, Soul, and R&B" }, { - "url": "https://files.catbox.moe/u3ylxd.m4a", - "title": "Still D.R.E", - "duration": 2740, - "artist": "Dr. Dre (feat. Snoop Dogg)", - "secret": false, - "lobby": false, - "jukebox": true, - "genre": "Hip-Hop and Rap" - }, - { - "url": "https://files.catbox.moe/2r3cbk.m4a", - "title": "It Was a Good Day", - "duration": 2600, - "artist": "Ice Cube", - "secret": false, - "lobby": false, - "jukebox": true, - "genre": "Hip-Hop and Rap" - }, - { - "url": "https://files.catbox.moe/asthsu.m4a", - "title": "A Kiss to Build a Dream On", - "duration": 1840, - "artist": "Louis Armstrong", - "secret": false, - "lobby": false, - "jukebox": true, - "genre": "Jazz" - }, - { "url": "https://files.catbox.moe/rze7qx.m4a", "title": "(I Always Kill) The Things I Love", "duration": 1750, @@ -780,16 +690,6 @@ "genre": "Electronic" }, { - "url": "https://files.catbox.moe/4vxedh.m4a", - "title": "Miami Disco", - "duration": 2700, - "artist": "Perturbator", - "secret": false, - "lobby": false, - "jukebox": true, - "genre": "Electronic" - }, - { "url": "https://files.catbox.moe/dw5h51.m4a", "title": "Shattered Dreams", "duration": 2050, @@ -840,16 +740,6 @@ "genre": "Electronic" }, { - "url": "https://files.catbox.moe/0y4tjc.m4a", - "title": "Angel", - "duration": 3790, - "artist": "Massive Attack", - "secret": false, - "lobby": false, - "jukebox": true, - "genre": "Electronic" - }, - { "url": "https://files.catbox.moe/ke8uk5.m4a", "title": "Beware the Beast", "duration": 2260, @@ -870,16 +760,6 @@ "genre": "Pop" }, { - "url": "https://cdn.discordapp.com/attachments/528973352728264714/956446080638283826/Deus_Ex_-_009_-_UNATCO_-_Ambient.mp3", - "title": "UNATCO - Ambience", - "duration": 1610, - "artist": "Michiel van den Bos", - "secret": false, - "lobby": false, - "jukebox": true, - "genre": "Electronic" - }, - { "url": "https://files.catbox.moe/gcej08.m4a", "title": "UNATCO - Conversation", "duration": 1720, @@ -890,26 +770,6 @@ "genre": "Electronic" }, { - "url": "https://cdn.discordapp.com/attachments/528973352728264714/956453078750593044/EdenShard_-_Deus_Ex-_Revision_Original_Soundtrack_-_06_The_Oath_of_Service.mp3", - "title": "Oath of Service", - "duration": 2160, - "artist": "EdenShard", - "secret": false, - "lobby": false, - "jukebox": true, - "genre": "Electronic" - }, - { - "url": "https://cdn.discordapp.com/attachments/528973352728264714/956453288600039434/EdenShard_-_Deus_Ex-_Revision_Original_Soundtrack_-_08_Mind_the_Synaptic_Gap.mp3", - "title": "Mind the Synaptic Gap", - "duration": 5460, - "artist": "EdenShard", - "secret": false, - "lobby": false, - "jukebox": true, - "genre": "Electronic" - }, - { "url": "https://files.catbox.moe/pf929m.m4a", "title": "Virtual Insanity", "duration": 3400, @@ -950,16 +810,6 @@ "genre": "Disco, Funk, Soul, and R&B" }, { - "url": "https://files.catbox.moe/cqqyzj.m4a", - "title": "Sexual Healing", - "duration": 2430, - "artist": "Marvin Gaye", - "secret": false, - "lobby": false, - "jukebox": true, - "genre": "Disco, Funk, Soul, and R&B" - }, - { "url": "https://files.catbox.moe/t9mwa9.m4a", "title": "Sometimes", "duration": 2530, @@ -1010,16 +860,6 @@ "genre": "Rock" }, { - "url": "https://files.catbox.moe/50sksv.m4a", - "title": "Do It Again", - "duration": 3560, - "artist": "Steely Dan", - "secret": false, - "lobby": false, - "jukebox": true, - "genre": "Rock" - }, - { "url": "https://files.catbox.moe/j3ntvh.m4a", "title": "Reelin' In The Years", "duration": 2750, @@ -1040,16 +880,6 @@ "genre": "Rock" }, { - "url": "https://files.catbox.moe/5sh98r.m4a", - "title": "Everlong", - "duration": 2500, - "artist": "Foo Fighters", - "secret": false, - "lobby": false, - "jukebox": true, - "genre": "Rock" - }, - { "url": "https://files.catbox.moe/fdjdmj.m4a", "title": "Limelight", "duration": 2590, @@ -1080,16 +910,6 @@ "genre": "Rock" }, { - "url": "https://files.catbox.moe/c961k1.m4a", - "title": "Blue Monday", - "duration": 4430, - "artist": "New Order", - "secret": false, - "lobby": false, - "jukebox": true, - "genre": "Pop" - }, - { "url": "https://files.catbox.moe/gldcwv.m4a", "title": "Dancin' In the Ruins", "duration": 2410, @@ -1100,16 +920,6 @@ "genre": "Rock" }, { - "url": "https://files.catbox.moe/1ckdtl.m4a", - "title": "The Boys Are Back In Town", - "duration": 2690, - "artist": "Thin Lizzy", - "secret": false, - "lobby": false, - "jukebox": true, - "genre": "Rock" - }, - { "url": "https://files.catbox.moe/w8plzv.m4a", "title": "What It Takes", "duration": 3110, @@ -1200,16 +1010,6 @@ "genre": "Hip-Hop and Rap" }, { - "url": "https://files.catbox.moe/5qgnr9.m4a", - "title": "The Power Of Love", - "duration": 2340, - "artist": "Huey Lewis and The News", - "secret": false, - "lobby": false, - "jukebox": true, - "genre": "Rock" - }, - { "url": "https://files.catbox.moe/whbte8.m4a", "title": "Just a Gigolo / I Ain't Got Nobody", "duration": 2780, @@ -1260,16 +1060,6 @@ "genre": "Folk and Indie" }, { - "url": "https://files.catbox.moe/6rbq2q.m4a", - "title": "All That Could Ever Be", - "duration": 3960, - "artist": "Rik Schaffer", - "secret": false, - "lobby": false, - "jukebox": true, - "genre": "Folk and Indie" - }, - { "url": "https://files.catbox.moe/l8baty.m4a", "title": "Sleepwalking", "duration": 2170, @@ -1330,7 +1120,7 @@ "genre": "Disco, Funk, Soul, and R&B" }, { - "url": "https://files.catbox.moe/mt0w0u.mp3", + "url": "https://files.catbox.moe/tpab44.m4a", "title": "Wayfarer", "duration": 2710, "artist": "Kavinsky", @@ -1430,26 +1220,6 @@ "genre": "Metal" }, { - "url": "https://files.catbox.moe/4sdesv.m4a", - "title": "Ace of Spades", - "duration": 1670, - "artist": "Motorhead", - "secret": false, - "lobby": false, - "jukebox": true, - "genre": "Metal" - }, - { - "url": "https://files.catbox.moe/3qqt2v.m4a", - "title": "Rise Of The Chaos Wizards", - "duration": 2370, - "artist": "Gloryhammer", - "secret": false, - "lobby": false, - "jukebox": true, - "genre": "Metal" - }, - { "url": "https://files.catbox.moe/fgcdu2.m4a", "title": "Turn Up the Radio", "duration": 2780, @@ -1480,16 +1250,6 @@ "genre": "Metal" }, { - "url": "https://files.catbox.moe/gl22vl.m4a", - "title": "The Hellion / Electric Eye", - "duration": 2610, - "artist": "Judas Priest", - "secret": false, - "lobby": false, - "jukebox": true, - "genre": "Metal" - }, - { "url": "https://files.catbox.moe/j4fvlc.mp3", "title": "2 Minutes To Midnight", "duration": 3600, @@ -1590,26 +1350,6 @@ "genre": "Hip-Hop and Rap" }, { - "url": "https://files.catbox.moe/8nyu9s.m4a", - "title": "Just a Friend", - "duration": 2380, - "artist": "Biz Markie", - "secret": false, - "lobby": false, - "jukebox": true, - "genre": "Hip-Hop and Rap" - }, - { - "url": "https://files.catbox.moe/2b0wu2.m4a", - "title": "Intergalactic", - "duration": 2290, - "artist": "Beastie Boys", - "secret": false, - "lobby": false, - "jukebox": true, - "genre": "Hip-Hop and Rap" - }, - { "url": "https://files.catbox.moe/nv66ck.mp3", "title": "Wild Child", "duration": 3120, @@ -1690,26 +1430,6 @@ "genre": "Classical and Orchestral" }, { - "url": "https://files.catbox.moe/15ybh9.mp3", - "title": "Handel This", - "duration": 890, - "artist": "Andreas Waldetoft", - "secret": false, - "lobby": false, - "jukebox": true, - "genre": "Classical and Orchestral" - }, - { - "url": "https://files.catbox.moe/0294ze.m4a", - "title": "Lohengrin: Prelude", - "duration": 5930, - "artist": "Richard Wagner", - "secret": false, - "lobby": false, - "jukebox": true, - "genre": "Classical and Orchestral" - }, - { "url": "https://files.catbox.moe/xgq1tr.m4a", "title": "Concerto Grosso no. 10 in B Minor - Allegro", "duration": 2150, @@ -1730,16 +1450,6 @@ "genre": "Classical and Orchestral" }, { - "url": "https://files.catbox.moe/8bdxq3.m4a", - "title": "Secunda", - "duration": 1230, - "artist": "Jeremy Soule", - "secret": false, - "lobby": false, - "jukebox": true, - "genre": "Classical and Orchestral" - }, - { "url": "https://files.catbox.moe/lqgoiv.m4a", "title": "Far Horizons", "duration": 3310, @@ -1840,26 +1550,6 @@ "genre": "Rock" }, { - "url": "https://files.catbox.moe/231ksl.m4a", - "title": "Pjanoo (Club Mix)", - "duration": 4500, - "artist": "Eric Prydz", - "secret": false, - "lobby": false, - "jukebox": true, - "genre": "Electronic" - }, - { - "url": "https://files.catbox.moe/58hrry.m4a", - "title": "Inferno Galore", - "duration": 2250, - "artist": "Carpenter Brut", - "secret": false, - "lobby": false, - "jukebox": true, - "genre": "Electronic" - }, - { "url": "https://files.catbox.moe/vsdg7v.m4a", "title": "Low Rider", "duration": 1910, @@ -1890,16 +1580,6 @@ "genre": "Disco, Funk, Soul, and R&B" }, { - "url": "https://files.catbox.moe/24cqmw.m4a", - "title": "Every Rose Has It's Thorn", - "duration": 2600, - "artist": "Poison", - "secret": false, - "lobby": false, - "jukebox": true, - "genre": "Rock" - }, - { "url": "https://files.catbox.moe/v3otpl.m4a", "title": "Fallen Angel", "duration": 2380, @@ -1930,26 +1610,6 @@ "genre": "Rock" }, { - "url": "https://files.catbox.moe/cavpff.m4a", - "title": "Take Me Home Tonight", - "duration": 2110, - "artist": "Eddie Money", - "secret": false, - "lobby": false, - "jukebox": true, - "genre": "Rock" - }, - { - "url": "https://files.catbox.moe/n8l93a.m4a", - "title": "Same Ol' Situation (S.O.S.)", - "duration": 2530, - "artist": "Motely Crue", - "secret": false, - "lobby": false, - "jukebox": true, - "genre": "Metal" - }, - { "url": "https://files.catbox.moe/gnr6py.m4a", "title": "Metal Health (Bang Your Head)", "duration": 3160, @@ -1960,16 +1620,6 @@ "genre": "Metal" }, { - "url": "https://files.catbox.moe/1drakx.m4a", - "title": "Shout At The Devil", - "duration": 1950, - "artist": "Motley Crue", - "secret": false, - "lobby": false, - "jukebox": true, - "genre": "Metal" - }, - { "url": "https://files.catbox.moe/1kevft.m4a", "title": "Walk With Me in Hell", "duration": 3110, @@ -2120,16 +1770,6 @@ "genre": "Metal" }, { - "url": "https://files.catbox.moe/0gol3u.m4a", - "title": "Superbeast", - "duration": 2200, - "artist": "Rob Zombie", - "secret": false, - "lobby": false, - "jukebox": true, - "genre": "Metal" - }, - { "url": "https://files.catbox.moe/irrxal.m4a", "title": "Perihelion", "duration": 1910, @@ -2160,16 +1800,6 @@ "genre": "Metal" }, { - "url": "https://files.catbox.moe/isa0lb.m4a", - "title": "On The Wind", - "duration": 2250, - "artist": "Dream Evil", - "secret": false, - "lobby": false, - "jukebox": true, - "genre": "Metal" - }, - { "url": "https://files.catbox.moe/oi9dt1.m4a", "title": "Catch The Rainbow", "duration": 3960, @@ -2180,16 +1810,6 @@ "genre": "Rock" }, { - "url": "https://files.catbox.moe/1ozes3.m4a", - "title": "Peace Sells", - "duration": 2440, - "artist": "Megadeth", - "secret": false, - "lobby": false, - "jukebox": true, - "genre": "Metal" - }, - { "url": "https://files.catbox.moe/iyi2ll.m4a", "title": "Never Gonna Give You Up", "duration": 2130, @@ -2210,16 +1830,6 @@ "genre": "Rock" }, { - "url": "https://files.catbox.moe/3blefo.m4a", - "title": "Piano Man", - "duration": 3400, - "artist": "Billy Joel", - "secret": false, - "lobby": false, - "jukebox": true, - "genre": "Rock" - }, - { "url": "https://files.catbox.moe/qq4cbx.m4a", "title": "Mr. Blue Sky", "duration": 3030, @@ -2260,16 +1870,6 @@ "genre": "Rock" }, { - "url": "https://files.catbox.moe/2n2gdq.m4a", - "title": "Changes", - "duration": 2170, - "artist": "David Bowie", - "secret": false, - "lobby": false, - "jukebox": true, - "genre": "Rock" - }, - { "url": "https://files.catbox.moe/jzucsv.mp3", "title": "A Horse With No Name", "duration": 2470, @@ -2430,16 +2030,6 @@ "genre": "Country and Western" }, { - "url": "https://files.catbox.moe/5mtinr.m4a", - "title": "The Devil Went Down to Georgia", - "duration": 2140, - "artist": "The Charlie Daniels Band", - "secret": false, - "lobby": false, - "jukebox": true, - "genre": "Country and Western" - }, - { "url": "https://files.catbox.moe/qvd0qg.m4a", "title": "Cottonwood Tree", "duration": 2370, @@ -2640,26 +2230,6 @@ "genre": "Electronic" }, { - "url": "https://files.catbox.moe/36juno.mp3", - "title": "Head First", - "duration": 2130, - "artist": "HOME", - "secret": false, - "lobby": false, - "jukebox": true, - "genre": "Electronic" - }, - { - "url": "https://files.catbox.moe/bvwhm0.m4a", - "title": "Dust", - "duration": 3020, - "artist": "M|O|O|N", - "secret": false, - "lobby": false, - "jukebox": true, - "genre": "Electronic" - }, - { "url": "https://files.catbox.moe/b6urx6.m4a", "title": "Silent Strike", "duration": 2970, @@ -2710,16 +2280,6 @@ "genre": "Electronic" }, { - "url": "https://files.catbox.moe/3zb1hx.m4a", - "title": "Into The Labyrinth", - "duration": 3100, - "artist": "Kraddy", - "secret": false, - "lobby": false, - "jukebox": true, - "genre": "Electronic" - }, - { "url": "https://files.catbox.moe/qxadpn.m4a", "title": "Turbo Killer", "duration": 2080, @@ -2760,16 +2320,6 @@ "genre": "Electronic" }, { - "url": "https://files.catbox.moe/bem2ur.m4a", - "title": "Cheerleader Effect", - "duration": 2170, - "artist": "Carpenter Brut", - "secret": false, - "lobby": false, - "jukebox": true, - "genre": "Electronic" - }, - { "url": "https://files.catbox.moe/hwfg7e.m4a", "title": "Hairspray Hurricane", "duration": 3310, @@ -2790,26 +2340,6 @@ "genre": "Electronic" }, { - "url": "https://files.catbox.moe/4ju4p1.mp3", - "title": "Lone Digger", - "duration": 2300, - "artist": "Caravan Palace", - "secret": false, - "lobby": false, - "jukebox": true, - "genre": "Electronic" - }, - { - "url": "https://files.catbox.moe/4c0lmk.m4a", - "title": "Dessert", - "duration": 1840, - "artist": "Jun Chikuma", - "secret": false, - "lobby": false, - "jukebox": true, - "genre": "Electronic" - }, - { "url": "https://files.catbox.moe/g0ms06.m4a", "title": "Propane Nightmares", "duration": 3130, @@ -2850,26 +2380,6 @@ "genre": "Folk and Indie" }, { - "url": "https://files.catbox.moe/6ryyk0.m4a", - "title": "Apocalypse", - "duration": 2900, - "artist": "Cigarettes After Sex", - "secret": false, - "lobby": false, - "jukebox": true, - "genre": "Folk and Indie" - }, - { - "url": "https://files.catbox.moe/2z6lpx.mp3", - "title": "Pioneer's Song", - "duration": 1790, - "artist": "Leslie Fish", - "secret": false, - "lobby": false, - "jukebox": true, - "genre": "Folk and Indie" - }, - { "url": "https://files.catbox.moe/e55ey0.mp3", "title": "Bones", "duration": 1200, @@ -2940,26 +2450,6 @@ "genre": "Pop" }, { - "url": "https://files.catbox.moe/zifzgk.m4a", - "title": "Little Girls", - "duration": 2230, - "artist": "Oingo Boingo", - "secret": false, - "lobby": false, - "jukebox": true, - "genre": "Pop" - }, - { - "url": "https://files.catbox.moe/5yk0mm.m4a", - "title": "Everything She Wants", - "duration": 3920, - "artist": "Wham!", - "secret": false, - "lobby": false, - "jukebox": true, - "genre": "Pop" - }, - { "url": "https://files.catbox.moe/5ye8et.m4a", "title": "Careless Whisper", "duration": 3030, @@ -2970,16 +2460,6 @@ "genre": "Pop" }, { - "url": "https://files.catbox.moe/9a5dov.m4a", - "title": "Space Cowboy", - "duration": 2160, - "artist": "Jamiroquai", - "secret": false, - "lobby": false, - "jukebox": true, - "genre": "Disco, Funk, Soul, and R&B" - }, - { "url": "https://files.catbox.moe/dpjb9r.m4a", "title": "Video Killed The Radio Star", "duration": 2530, @@ -3270,16 +2750,6 @@ "genre": "Rock" }, { - "url": "https://files.catbox.moe/20exnb.mp3", - "title": "Fortunate Son", - "duration": 1400, - "artist": "Creedence Clearwater Revival", - "secret": false, - "lobby": false, - "jukebox": true, - "genre": "Rock" - }, - { "url": "https://files.catbox.moe/8xzmw5.mp3", "title": "Bohemian Rhapsody", "duration": 3580, @@ -3320,26 +2790,6 @@ "genre": "Hip-Hop and Rap" }, { - "url": "https://files.catbox.moe/6i31kh.m4a", - "title": "Rapper's Delight", - "duration": 8850, - "artist": "The Sugar Hill Gang", - "secret": false, - "lobby": false, - "jukebox": true, - "genre": "Hip-Hop and Rap" - }, - { - "url": "https://files.catbox.moe/3y9k43.m4a", - "title": "Super Freak", - "duration": 2020, - "artist": "Rick James", - "secret": false, - "lobby": false, - "jukebox": true, - "genre": "Hip-Hop and Rap" - }, - { "url": "https://files.catbox.moe/93ynna.m4a", "title": "Party All The Time", "duration": 2530, @@ -3390,16 +2840,6 @@ "genre": "Hip-Hop and Rap" }, { - "url": "https://files.catbox.moe/59nnfc.m4a", - "title": "Take_it_Back_v2", - "duration": 1690, - "artist": "Denzel Curry & Kenny Beats", - "secret": false, - "lobby": false, - "jukebox": true, - "genre": "Hip-Hop and Rap" - }, - { "url": "https://files.catbox.moe/pkwkd1.m4a", "title": "All Caps", "duration": 1340, @@ -3539,397 +2979,6 @@ "jukebox": true }, { - "url" : "https://cdn.discordapp.com/attachments/404660884531707906/676726491806957568/Cassette.mp3", - "title" : "Cassette", - "duration" :2310, - "artist" : "Efence", - "secret": false, - "lobby": false, - "jukebox": true, - "genre": "Ambience" - }, - { - "url" : "https://cdn.discordapp.com/attachments/676384242426707979/676730040624480264/Glowing_Red_Dust.mp3", - "title" : "Red Glowing Dust", - "duration" :3370, - "artist" : "Jón Hallur Haraldsson (also known as RealX)", - "secret": false, - "lobby": false, - "jukebox": true, - "genre": "Ambience" - }, - { - - "url" : "https://cdn.discordapp.com/attachments/676384242426707979/676730820530274323/Stellardrone_-_Eternity.mp3", - "title" : "Eternity", - "duration" :3810, - "artist" : "Stellardrone", - "secret": false, - "lobby": false, - "jukebox": true, - "genre": "Ambience" - }, - { - "url" : "https://cdn.discordapp.com/attachments/612993188655005697/676732888712216596/DJ-ZEK_-_Simulate.mp3", - "title" : "Simulate", - "duration" :4850, - "artist" : "Fawxtrot (now know as DJ Zek)", - "secret": false, - "lobby": false, - "jukebox": true, - "genre": "Ambience" - }, - { - "url" : "https://cdn.discordapp.com/attachments/520929567540772873/707899715261562960/FitnessGram_20_Meter_PACER_Test_Full_Length_OFFICIAL_Audio_Version.mp3", - "title" : "The FitnessGram Pacer Test", - "duration" : 13720, - "artist" : "The Cooper Institute (FitnessGram)", - "secret": true, - "lobby": false, - "jukebox": true, - "genre": "Ambience" - }, - { - "url" : "https://cdn.discordapp.com/attachments/575066308362895444/701639140109844530/Peaceful_Orbits.mp3", - "title" : "Peaceful Orbits", - "duration" : 2040, - "artist" : "TeknoAXE", - "secret": false, - "lobby": false, - "jukebox": true, - "genre": "Ambience" - }, - { - "url" : "https://cdn.discordapp.com/attachments/575066308362895444/701639311896084511/Passing_Time_in_an_Escape_Pod.mp3", - "title" : "Passing Time in an Escape Pod", - "duration" : 2300, - "artist" : "TeknoAXE", - "secret": false, - "lobby": false, - "jukebox": true, - "genre": "Ambience" - }, - { - "url" : "https://cdn.discordapp.com/attachments/331435060735508480/613310956927451137/Persona_5_48_-_Beneath_the_Mask_-rain-.mp3", - "title" : "Beneath the Mask -Rain Version-", - "duration" : 2790, - "artist" : "Persona 5", - "secret": false, - "lobby": false, - "jukebox": true, - "genre": "Jazz" - }, - { - "url" : "https://cdn.discordapp.com/attachments/331037116094087168/543191420370944001/DragonSharkOriginal3.mp3", - "title" : "Terrorbyte/Dragon Shark theme", - "duration" : 2100, - "artist" : "RetroSpecter", - "secret": true, - "lobby": false, - "jukebox": true, - "genre": "Rock" - }, - { - "url" : "https://cdn.discordapp.com/attachments/528973352728264714/583441087633555456/Prey_-_Everything_is_Going_to_Be_Ok_online-audio-converter.com.mp3", - "title" : "Everything Is Going To Be Ok", - "duration" : 1600, - "artist" : "Mick Gordon", - "secret": false, - "lobby": false, - "jukebox": true, - "genre": "Electronic" - }, - { - "url" : "https://cdn.discordapp.com/attachments/311691674130710528/463590234978910228/Saga_of_Tanya_the_Evil_-_Jingo_Jungle_Opening_ENGLISH_ver_AmaLee.mp3", - "title" : "Jingo Jungle", - "duration" : 2440, - "artist" : "Leeandlie http://bit.ly/Leeandlie", - "secret": true, - "lobby": false, - "jukebox": true, - "genre": "Electronic" - }, - { - "url" : "https://cdn.discordapp.com/attachments/311691674130710528/468345155498541066/TheMadnessOfFate.mp3", - "title" : "Madness of Fate", - "duration" :4030, - "artist" : "NIIC the singing dog - http://bit.ly/NIICDOGYT", - "secret": true, - "lobby": false, - "jukebox": true, - "genre": "Electronic" - }, - { - "url" : "https://cdn.discordapp.com/attachments/311691674130710528/449909217403469837/Hard_Bass_School_-_narkotik_kal.mp3", - "title" : "Narkotik kal", - "duration" : 2350, - "artist" : "Hardbass", - "secret": true, - "lobby": false, - "jukebox": true, - "genre": "Ambience" - }, - { - "url" : "https://cdn.discordapp.com/attachments/528973352728264714/613807206047154217/TERRORBYTE_-_HELIOS.mp3", - "title" : "Helios", - "duration" : 2850, - "artist" : "TERRORBYTE", - "secret": true, - "lobby": false, - "jukebox": true, - "genre": "Metal" - }, - { - "url" : "https://cdn.discordapp.com/attachments/377217220041900034/453308819422838784/System_Of_A_Down_-_Shimmy_11.mp3", - "title" : "Shimmy", - "duration" : 1110, - "artist" : "System of a Down", - "secret": false, - "lobby": false, - "jukebox": true, - "genre": "Rock" - }, - { - "url" : "https://cdn.discordapp.com/attachments/377217220041900034/453308919067049995/System_Of_A_Down_-_Science_10.mp3", - "title" : "Science", - "duration" : 1630, - "artist" : "System of a Down", - "secret": false, - "lobby": false, - "jukebox": true, - "genre": "Rock" - }, - { - "url" : "https://cdn.discordapp.com/attachments/377217220041900034/453308944706699284/System_Of_A_Down_-_Deer_Dance_03.mp3", - "title" : "deer dance", - "duration" : 1750, - "artist" : "System of a Down", - "secret": false, - "lobby": false, - "jukebox": true, - "genre": "Rock" - }, - { - "url" : "https://cdn.discordapp.com/attachments/377217220041900034/453308945411473428/System_Of_A_Down_-_Atwa.mp3", - "title" : "Atwa", - "duration" : 1790, - "artist" : "System of a Down", - "secret": false, - "lobby": false, - "jukebox": true, - "genre": "Rock" - }, - { - "url" : "https://cdn.discordapp.com/attachments/377217220041900034/453308969772122112/System_Of_A_Down_-_Forest_08.mp3", - "title" : "Forest", - "duration" : 2400, - "artist" : "System of a Down", - "secret": false, - "lobby": false, - "jukebox": true, - "genre": "Rock" - }, - { - "url" : "https://cdn.discordapp.com/attachments/377217220041900034/453308978089426985/System_Of_A_Down_-_Prison_Song_01.mp3", - "title" : "Prison song", - "duration" : 2110, - "artist" : "System of a Down", - "secret": false, - "lobby": false, - "jukebox": true, - "genre": "Rock" - }, - { - "url" : "https://cdn.discordapp.com/attachments/377217220041900034/453308978089426985/System_Of_A_Down_-_Prison_Song_01.mp3", - "title" : "SPIDERS!", - "duration" : 2150, - "artist" : "System of a Down", - "secret": false, - "lobby": false, - "jukebox": true, - "genre": "Rock" - }, - { - "url" : "https://cdn.discordapp.com/attachments/377217220041900034/453309000780611604/System_Of_A_Down_-_Aerials_14.mp3", - "title" : "Aerials", - "duration" : 2320, - "artist" : "System of a Down", - "secret": false, - "lobby": false, - "jukebox": true, - "genre": "Rock" - }, - { - "url" : "https://cdn.discordapp.com/attachments/377217220041900034/453309015955472394/System_Of_A_Down_-_Jet_Pilot_04.mp3", - "title" : "Jet Pilot", - "duration" : 1260, - "artist" : "System of a Down", - "secret": false, - "lobby": false, - "jukebox": true, - "genre": "Rock" - }, - { - "url" : "https://cdn.discordapp.com/attachments/377217220041900034/454653832945860608/Skeleton_Man-_The_Axis_of_Awesome.mp3", - "title" : "Skeleton Man", - "duration" : 1510, - "artist" : "AoW", - "secret": true, - "lobby": false, - "jukebox": true, - "genre": "Classical and Orchestral" - }, - { - "url" : "https://cdn.discordapp.com/attachments/745916615606140938/775593951259918336/Nanook_Rubs_It.mp3", - "title" : "Nanook Rubs It", - "duration" :2770, - "artist" : "Frank Zappa", - "secret": true, - "lobby": false, - "jukebox": true, - "genre": "Country and Western" - }, - { - "url" : "https://cdn.discordapp.com/attachments/745916615606140938/775593948307521566/Muffin_Man.mp3", - "title" : "Muffin Man", - "duration" :3370, - "artist" : "Frank Zappa", - "secret": true, - "lobby": false, - "jukebox": true, - "genre": "Folk and Indie" - }, - { - "url" : "https://cdn.discordapp.com/attachments/404660884531707906/456271996314058752/Edgar_Rothermich_-01_Theme_from_Silent_Hill_jungle-vibe.com.mp3", - "title" : "Silent Hill", - "duration" : 1760, - "artist" : "Akira Yamaoka and Edgar Rothermich", - "secret": false, - "lobby": false, - "jukebox": true, - "genre": "Country and Western" - }, - { - "url" : "https://cdn.discordapp.com/attachments/377217220041900034/460490120240300052/Nightcore_-_Tetris.mp3", - "title" : "Tetris Remixed", - "duration" : 1910, - "artist" : "nightcore", - "secret": true, - "lobby": false, - "jukebox": true, - "genre": "Electronic" - }, - { - "url" : "https://cdn.discordapp.com/attachments/377217220041900034/460490219167154186/VERSACE_2017_-_TIX__The_Pssy_Project.mp3", - "title" : "Versance", - "duration" : 2030, - "artist" : "PussyProject", - "secret": true, - "lobby": false, - "jukebox": true, - "genre": "Classical and Orchestral" - }, - { - "url" : "https://cdn.discordapp.com/attachments/377217220041900034/460490229523021834/-_.mp3", - "title" : "Russian Techno", - "duration" : 2400, - "artist" : "Some russians", - "secret": true, - "lobby": false, - "jukebox": true, - "genre": "Hip-Hop and Rap" - }, - { - "url" : "https://cdn.discordapp.com/attachments/377217220041900034/460490231611654144/Rock_Dog_2017_Movie_Official_Lyric_Video_Glorious_by_Adam_Friedman.mp3", - "title" : "Gloriouse", - "duration" : 2200, - "artist" : "Rock Dog", - "secret": false, - "lobby": false, - "jukebox": true, - "genre": "Rock" - }, - { - "url" : "https://cdn.discordapp.com/attachments/377217220041900034/460490245725487104/Gigi_DAgostino_-_You_Spin_Me_Round__Tecno_Fes_2_.mp3", - "title" : "You spin me around", - "duration" : 2580, - "artist" : "Gigi DAgostino", - "secret": false, - "lobby": false, - "jukebox": true, - "genre": "Pop" - }, - { - "url" : "https://cdn.discordapp.com/attachments/377217220041900034/460490246610747402/-__Kyary_Pamyu_Pamyu_-.mp3", - "title" : "Pamyu Pamyu", - "duration" : 2640, - "artist" : "Kyary", - "secret": false, - "lobby": false, - "jukebox": true, - "genre": "Pop" - }, - { - "url" : "https://cdn.discordapp.com/attachments/377217220041900034/457628201200648202/Berserk_-_S3RL_ft_Iceman.mp3", - "title" : "Beserk", - "duration" :1620, - "artist" : "S3RL ft Iceman", - "secret": true, - "lobby": false, - "jukebox": true, - "genre": "Metal" - }, - { - "url" : "https://cdn.discordapp.com/attachments/458630047167807488/520025625852117002/Nick_Hakim_-_Pour_Another.mp3", - "title" : "Pour Another", - "duration" :3510, - "artist" : "Nick Hakim", - "secret": false, - "lobby": false, - "jukebox": true, - "genre": "Jazz" - }, - { - "url" : "https://cdn.discordapp.com/attachments/526693916859170816/559236326264668190/Ocean_Man.mp3", - "title" : "Ocean Man", - "duration" : 1270, - "artist" : "Ween", - "secret": false, - "lobby": false, - "jukebox": true, - "genre": "Classical and Orchestral" - }, - { - "url" : "https://cdn.discordapp.com/attachments/458630047167807488/520025672702492682/Nick_Hakim_-_I_Dont_Know.mp3", - "title" : "I dont know", - "duration" :2990, - "artist" : "Nick Hakim", - "secret": false, - "lobby": false, - "jukebox": true, - "genre": "Jazz" - }, - { - "url" : "https://cdn.discordapp.com/attachments/404660884531707906/614356720503881728/Underfell_Megalovania.mp3", - "title" : "Underfell", - "duration" :1830, - "artist" : "keno9988iii", - "secret": true, - "lobby": false, - "jukebox": true, - "genre": "Metal" - }, - { - "url" : "https://cdn.discordapp.com/attachments/661630061983825938/663112074880352276/Headhunterz_-_Scrap_Attack_HQ.mp3", - "title" : "Scrap Attack", - "duration" :3730, - "artist" : "Headhunterz", - "secret": true, - "lobby": false, - "jukebox": true, - "genre": "Electronic" - }, - { "url" : "https://files.catbox.moe/h967s5.mp3", "title" : "MEGALOVANIA", "duration" : 1416, @@ -4355,7 +3404,6 @@ "lobby": false, "jukebox": true }, - { "url": "https://files.catbox.moe/qa6ahi.mp3", "title": "Deadlines", diff --git a/monkestation/code/modules/ghost_players/arena/maps/snow.dmm b/monkestation/code/modules/ghost_players/arena/maps/snow.dmm index 1bf45782f404..d59b33d9d9f3 100644 --- a/monkestation/code/modules/ghost_players/arena/maps/snow.dmm +++ b/monkestation/code/modules/ghost_players/arena/maps/snow.dmm @@ -19,7 +19,7 @@ dir = 1 }, /obj/effect/turf_decal/weather/snow/corner, -/obj/machinery/hydroponics/soil{ +/obj/machinery/growing/soil{ pixel_y = 7; color = " #DCDCDC" }, @@ -147,7 +147,7 @@ dir = 9 }, /obj/effect/turf_decal/weather/snow/corner, -/obj/machinery/hydroponics/soil{ +/obj/machinery/growing/soil{ pixel_y = 7; color = " #DCDCDC" }, @@ -258,7 +258,7 @@ dir = 1 }, /obj/effect/turf_decal/weather/snow/corner, -/obj/machinery/hydroponics/soil{ +/obj/machinery/growing/soil{ pixel_y = 7; color = " #DCDCDC" }, diff --git a/monkestation/code/modules/hydroponics/grown/honeydew.dm b/monkestation/code/modules/hydroponics/grown/honeydew.dm index eb313b71cd09..f12e9d25d139 100644 --- a/monkestation/code/modules/hydroponics/grown/honeydew.dm +++ b/monkestation/code/modules/hydroponics/grown/honeydew.dm @@ -4,6 +4,8 @@ icon = 'monkestation/icons/obj/hydroponics/fruit.dmi' icon_state = "honeydew-seed" icon_dead = "honeydew-dead" + icon_grow = null + icon_harvest = null species = "honeydew" plantname = "Honeydew Melon Vines" product = /obj/item/food/grown/honeydew diff --git a/monkestation/code/modules/hydroponics/machines/composter.dm b/monkestation/code/modules/hydroponics/machines/composter.dm index e8b25ba4bf6c..927c16d3e389 100644 --- a/monkestation/code/modules/hydroponics/machines/composter.dm +++ b/monkestation/code/modules/hydroponics/machines/composter.dm @@ -126,6 +126,8 @@ . = ..() desc = "A cube made of pure biomatter, it seems to be denser than normal making it last [DisplayTimeText(total_duration)]. Does wonders on plant trays." + + /obj/item/bio_cube/attackby(obj/item/attacking_item, mob/living/user) . = ..() if(istype(attacking_item, /obj/item/bio_cube)) diff --git a/monkestation/code/modules/hydroponics/machines/splicer.dm b/monkestation/code/modules/hydroponics/machines/splicer.dm index 6c0879d60a5a..96b0a281b5fc 100644 --- a/monkestation/code/modules/hydroponics/machines/splicer.dm +++ b/monkestation/code/modules/hydroponics/machines/splicer.dm @@ -144,7 +144,7 @@ new_seed.icon_dead = first_seed.icon_dead new_seed.growthstages = first_seed.growthstages new_seed.growing_icon = first_seed.growing_icon - new_seed.seed_offset = first_seed.seed_offset + new_seed.plant_icon_offset = first_seed.plant_icon_offset new_seed.reagents_add = first_seed.reagents_add.Copy() diff --git a/monkestation/code/modules/hydroponics/seeds.dm b/monkestation/code/modules/hydroponics/seeds.dm index b271390e939c..e21075db3543 100644 --- a/monkestation/code/modules/hydroponics/seeds.dm +++ b/monkestation/code/modules/hydroponics/seeds.dm @@ -31,7 +31,7 @@ special_mutations = return_viable_mutations() /obj/item/seeds/spliced/harvest(mob/user) - var/obj/machinery/hydroponics/parent = loc //for ease of access + var/atom/movable/parent = loc //for ease of access var/t_amount = 0 var/list/result = list() var/output_loc = parent.Adjacent(user) ? user.loc : parent.loc //needed for TK @@ -66,7 +66,6 @@ product_name = t_prod.seed.plantname if(getYield() >= 1) SSblackbox.record_feedback("tally", "food_harvested", getYield(), product_name) - parent.update_tray(user, t_amount) return result @@ -100,7 +99,7 @@ S.icon_dead = icon_dead S.growthstages = growthstages S.growing_icon = growing_icon - S.seed_offset = seed_offset + S.plant_icon_offset = plant_icon_offset S.traits_in_progress = traits_in_progress if(istype(src, /obj/item/seeds/spliced)) diff --git a/monkestation/code/modules/hydroponics/seeds/coconut.dm b/monkestation/code/modules/hydroponics/seeds/coconut.dm index aa04ce9e64d4..3f51a8ef87f3 100644 --- a/monkestation/code/modules/hydroponics/seeds/coconut.dm +++ b/monkestation/code/modules/hydroponics/seeds/coconut.dm @@ -1,7 +1,7 @@ /obj/item/seeds/coconut name = "pack of Coconut seeds" desc = "These seeds grow into coconut trees." - seed_offset = -12 + plant_icon_offset = 0 icon = 'monkestation/icons/obj/hydroponics/fruit.dmi' icon_state = "coconut_seed" diff --git a/monkestation/code/modules/mech_comp/objects/collector.dm b/monkestation/code/modules/mech_comp/objects/collector.dm index ff26cb7266a7..47180d755b1b 100644 --- a/monkestation/code/modules/mech_comp/objects/collector.dm +++ b/monkestation/code/modules/mech_comp/objects/collector.dm @@ -29,6 +29,11 @@ for(var/obj/item/contained_item in src.loc) if(contained_item == src) continue + if(contained_item.anchored) + continue + if(contained_item.type in typesof(/obj/item/mcobject)) + continue + if(count >= max_transfer) break if(linked_storage.attempt_insert(contained_item, src)) diff --git a/monkestation/code/modules/mech_comp/objects/interactor.dm b/monkestation/code/modules/mech_comp/objects/interactor.dm index 7bfd38cd1556..06813ee541e3 100644 --- a/monkestation/code/modules/mech_comp/objects/interactor.dm +++ b/monkestation/code/modules/mech_comp/objects/interactor.dm @@ -120,7 +120,8 @@ for(var/atom/movable/listed_atom in selected_turf) if(dummy_human == listed_atom || src == listed_atom) continue - if(listed_atom in typesof(/obj/item/mcobject)) + + if(listed_atom.type in typesof(/obj/item/mcobject)) continue if(!held_item) @@ -140,10 +141,6 @@ held_item.melee_attack_chain(dummy_human, listed_atom) dummy_human.istate &= ~ISTATE_SECONDARY - for(var/atom/movable/listed_atom in src) - if(listed_atom == dummy_human) - continue - listed_atom.forceMove(src.loc) flash() /obj/item/mcobject/interactor/update_overlays() diff --git a/monkestation/code/modules/metrics/subsystem_analytics/generics.dm b/monkestation/code/modules/metrics/subsystem_analytics/generics.dm index 0a806c365c6e..f8154ed148b6 100644 --- a/monkestation/code/modules/metrics/subsystem_analytics/generics.dm +++ b/monkestation/code/modules/metrics/subsystem_analytics/generics.dm @@ -33,6 +33,14 @@ . = ..() var/list/cust = list() cust["processing_machines"] = length(processing) + cust["total_power_used"] = 0 + cust["total_excess_power"] = 0 + cust["total_power"] = 0 + for(var/datum/powernet/powernet in powernets) + cust["total_excess_power"] += powernet.netexcess + cust["total_power_used"] += powernet.load + cust["total_power"] += powernet.avail + .["custom"] = cust /datum/controller/subsystem/mobs/get_metrics() diff --git a/monkestation/code/modules/pollution/generic_pollutants.dm b/monkestation/code/modules/pollution/generic_pollutants.dm index da61911adc46..7c3abe36aedd 100644 --- a/monkestation/code/modules/pollution/generic_pollutants.dm +++ b/monkestation/code/modules/pollution/generic_pollutants.dm @@ -12,6 +12,9 @@ if(prob(20)) victim.emote("cough") + if(is_species(victim, /datum/species/apid)) + victim.adjust_drowsiness(2 SECONDS) + ///From smoking weed /datum/pollutant/smoke/cannabis name = "Cannabis" diff --git a/monkestation/code/modules/pollution/pollution.dm b/monkestation/code/modules/pollution/pollution.dm index 47c35eb04491..eb89ee58a933 100644 --- a/monkestation/code/modules/pollution/pollution.dm +++ b/monkestation/code/modules/pollution/pollution.dm @@ -80,7 +80,7 @@ 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) + if(amount_to_scrub >= total_amount || !isopenturf(my_turf)) qdel(src) return if(planetary_multiplier && my_turf.planetary_atmos) //Dissipate faster on planetary atmos diff --git a/monkestation/code/modules/slimecore/components/vac_tagged.dm b/monkestation/code/modules/slimecore/components/vac_tagged.dm index 317e3889cfa8..44db508e3ea0 100644 --- a/monkestation/code/modules/slimecore/components/vac_tagged.dm +++ b/monkestation/code/modules/slimecore/components/vac_tagged.dm @@ -8,9 +8,17 @@ creator = WEAKREF(creator_mob) +/datum/component/vac_tagged/Destroy(force, silent) + UnregisterSignal(parent, list(COMSIG_MOB_FED_ON, COMSIG_QDELETING)) + . = ..() + /datum/component/vac_tagged/RegisterWithParent() . = ..() RegisterSignal(parent, COMSIG_MOB_FED_ON, PROC_REF(on_fed_on)) + RegisterSignal(parent, COMSIG_QDELETING, PROC_REF(on_deleting)) + +/datum/component/vac_tagged/proc/on_deleting() + qdel(src) /datum/component/vac_tagged/proc/on_fed_on(mob/living/source, mob/living/feeder, hunger_restored) SEND_SIGNAL(feeder, COMSIG_FRIENDSHIP_CHANGE, creator.resolve(), (hunger_restored * 0.1)) diff --git a/monkestation/code/modules/slimecore/corral/corral_data.dm b/monkestation/code/modules/slimecore/corral/corral_data.dm index c75b53e065da..97bc52ef5a89 100644 --- a/monkestation/code/modules/slimecore/corral/corral_data.dm +++ b/monkestation/code/modules/slimecore/corral/corral_data.dm @@ -21,6 +21,9 @@ if(!istype(slime)) continue managed_slimes |= slime + RegisterSignal(slime, COMSIG_ATOM_SUCKED, PROC_REF(remove_cause_sucked)) + RegisterSignal(slime, COMSIG_LIVING_DEATH, PROC_REF(remove_cause_sucked)) + RegisterSignals(slime, list(COMSIG_PREQDELETED, COMSIG_QDELETING), PROC_REF(try_remove)) /datum/corral_data/Destroy(force, ...) QDEL_LIST(corral_connectors) diff --git a/monkestation/code/modules/virology/disease/symtoms/stage2.dm b/monkestation/code/modules/virology/disease/symtoms/stage2.dm index d6ded963ea9d..4db547f91a88 100644 --- a/monkestation/code/modules/virology/disease/symtoms/stage2.dm +++ b/monkestation/code/modules/virology/disease/symtoms/stage2.dm @@ -374,20 +374,6 @@ if(ispodperson(victim)) //Plantmen take a LOT of damage victim.adjustCloneLoss(5 * multiplier) - for(var/obj/machinery/hydroponics/plantbox in range(3*multiplier,mob)) - switch(rand(1,3)) - if(1) - plantbox.adjust_waterlevel(-rand(1,10)) - plantbox.adjust_plant_nutriments(-rand(1,5)) - if(2) - plantbox.adjust_toxic(rand(1,50)) - if(3) - plantbox.adjust_weedlevel(10) - plantbox.adjust_pestlevel(10) - if(prob(5)) - plantbox.plantdies() - - for(var/obj/item/food/grown/crop in range(2*multiplier,mob)) crop.visible_message("\The [crop] rots at an alarming rate!") new /obj/item/food/badrecipe(get_turf(crop)) diff --git a/tgstation.dme b/tgstation.dme index c69d05a19b90..2b902ad7078d 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -389,6 +389,7 @@ #include "code\__DEFINES\~monkestation\antagonists.dm" #include "code\__DEFINES\~monkestation\artifact.dm" #include "code\__DEFINES\~monkestation\asteroids.dm" +#include "code\__DEFINES\~monkestation\botany.dm" #include "code\__DEFINES\~monkestation\chat.dm" #include "code\__DEFINES\~monkestation\clock_cult.dm" #include "code\__DEFINES\~monkestation\colors.dm" @@ -2505,6 +2506,7 @@ #include "code\modules\admin\force_event.dm" #include "code\modules\admin\fun_balloon.dm" #include "code\modules\admin\greyscale_modify_menu.dm" +#include "code\modules\admin\hardelete_toggle.dm" #include "code\modules\admin\holder2.dm" #include "code\modules\admin\ipintel.dm" #include "code\modules\admin\IsBanned.dm" @@ -6138,6 +6140,48 @@ #include "monkestation\code\modules\bloodsuckers\vassals\vassal_pinpointer.dm" #include "monkestation\code\modules\bloodsuckers\vassals\types\favorite.dm" #include "monkestation\code\modules\bloodsuckers\vassals\types\revenge.dm" +#include "monkestation\code\modules\botany\hydrotray.dm" +#include "monkestation\code\modules\botany\plant_processing.dm" +#include "monkestation\code\modules\botany\potty.dm" +#include "monkestation\code\modules\botany\tools.dm" +#include "monkestation\code\modules\botany\components\plant_growing.dm" +#include "monkestation\code\modules\botany\components\plant_growth_holder.dm" +#include "monkestation\code\modules\botany\components\plant_tray_overlays.dm" +#include "monkestation\code\modules\botany\new_seeds\mutations.dm" +#include "monkestation\code\modules\botany\new_seeds\seeds.dm" +#include "monkestation\code\modules\botany\plant_icon_overrides\crops.dm" +#include "monkestation\code\modules\botany\plant_icon_overrides\flowers.dm" +#include "monkestation\code\modules\botany\plant_icon_overrides\fruits.dm" +#include "monkestation\code\modules\botany\plant_icon_overrides\herbs.dm" +#include "monkestation\code\modules\botany\plant_icon_overrides\veggies.dm" +#include "monkestation\code\modules\botany\plant_icon_overrides\weeds.dm" +#include "monkestation\code\modules\botany\reagents\_base.dm" +#include "monkestation\code\modules\botany\reagents\growing_component_apply\cat2_medicine_reagents.dm" +#include "monkestation\code\modules\botany\reagents\growing_component_apply\drug_reagents.dm" +#include "monkestation\code\modules\botany\reagents\growing_component_apply\food_reagents.dm" +#include "monkestation\code\modules\botany\reagents\growing_component_apply\medicine.dm" +#include "monkestation\code\modules\botany\reagents\growing_component_apply\other_reagents.dm" +#include "monkestation\code\modules\botany\reagents\growing_component_apply\pyrotechnics.dm" +#include "monkestation\code\modules\botany\reagents\growing_component_apply\toxins.dm" +#include "monkestation\code\modules\botany\reagents\plant_apply\drink_reagents.dm" +#include "monkestation\code\modules\botany\reagents\plant_apply\ethanol.dm" +#include "monkestation\code\modules\botany\reagents\plant_apply\food_reagents.dm" +#include "monkestation\code\modules\botany\reagents\plant_apply\medicine.dm" +#include "monkestation\code\modules\botany\reagents\plant_apply\other_reagents.dm" +#include "monkestation\code\modules\botany\reagents\plant_apply\pyrotechnics.dm" +#include "monkestation\code\modules\botany\reagents\plant_apply\toxins.dm" +#include "monkestation\code\modules\botany\species\apid\abilities.dm" +#include "monkestation\code\modules\botany\species\apid\bee.dm" +#include "monkestation\code\modules\botany\species\apid\bodyparts.dm" +#include "monkestation\code\modules\botany\species\apid\organs.dm" +#include "monkestation\code\modules\botany\species\apid\species.dm" +#include "monkestation\code\modules\botany\species\apid\external_organs\apid_antennae.dm" +#include "monkestation\code\modules\botany\species\apid\external_organs\preferences.dm" +#include "monkestation\code\modules\botany\species\apid\external_organs\wings.dm" +#include "monkestation\code\modules\botany\species\apid\hive\ability.dm" +#include "monkestation\code\modules\botany\species\apid\hive\area.dm" +#include "monkestation\code\modules\botany\species\apid\hive\hive_object.dm" +#include "monkestation\code\modules\botany\species\apid\hive\hive_turfs.dm" #include "monkestation\code\modules\bunny_wizard\outfits.dm" #include "monkestation\code\modules\bunny_wizard\wizard_items.dm" #include "monkestation\code\modules\cargo\bounties\pathology.dm"