From 5a14bc9e40a6f181d283e16f7151c5c98c384b60 Mon Sep 17 00:00:00 2001 From: dwasint <82520990+dwasint@users.noreply.github.com> Date: Mon, 9 Sep 2024 13:12:06 -0700 Subject: [PATCH] Ore Processing Framework (#2766) * temp * Update event.dm * test * updates some rulesets * Update client_procs.dm * Update base.dm * properly nulls phantoms * smg tuning * fixes * Update pirate_event.dm * fixes maybe * Update sound.dm * Update sound.dm * basics * Update brine_chamber.dm * splitter * fixes * stuff * lots of stuff * Update grabber.dm * Update grabber.dm * more stuff * more stuff * cleanup * Update antibodyscanner.dm * :( * reverts * Update __spawning_component.dm * debug * Update datum.dm * Update debug.dm * Update debug.dm * da * Update master.dm * Update debug.dm * yea * Update button.dm * start of filters * adds filter stuff * assembler base * Update assembler.dm * Update assembler.dm * assembler fix * adds examine for assembler * qol stuff * molotovs are kinda wonky but everything else is fine * boulder thumpers * the ore vents are real * some more stuff performance improvement by moving debug procs * fixes ore vents * what * oops * Update plague_rat.dm * fixes * Update chemical_injector.dm * Update ducts.dm * fixes * changes to reduce memory footpint * saves datums * Update debug.dm * fixes * fixes * Delete hypnagogicv3-1-0.exe * fixes * properlly adds the blueshield * whoops * whoops 2 * Update gun.dm * fixes * Update Blueshift.dmm * changes * Update sleeping_carp.dm * fixes * Update _material.dm * revamps the drunkards liver to convert water to beer, as a byproduct makes the code nicer * brewin of the brewin and chewing update * Update world.dm * fix * Update patreon_data.dm * more stuff * Update StackCraft.js * fixes * Update wardrobes.dm * I hate tgui I hate tgui * some fixes to custom descs * fixes * more stuff * Update other_reagents.dm * test * Update BoxStation.dmm * whoopsie * pain * Update modified_reagents.dm * whoops * adds readme and traits * Update opiods.dm * Update _base.dm * Update disease_outbreak.dm * Update deforest.dm * Update traits.dm * halves robotic limb attachment pain * adds desc * tweaks * Update scream_for_me.dm * Update _base.dm * Update fortitude.dm * fixes * fixes * fixes * Update custom.dm * fixes * Update plague_rat.dm * more stuff * Update pain_items.dmi * fixes * more tweaks * Update _actionspeed_modifier.dm * wah * fixes for fryers * stuff * more tweaks * compresses steps * Update PersonalCrafting.tsx * hellish * linters * Update holding_types.dm * adds powerful painkillers to survival pens * Update event.dm * Update painkillers.dm * Update disease_outbreak.dm * changes * Update debug.dm * more recipes * adds weapon pain damage * whoops * fixes * fixed * Update mouse.dm * ffs * base * we ball * Update particle.dm * fixed * Update _base.dm * some pain feedback * some more visual stuff * Update bullets.dm * better recoil * start of slasher changes * Update assembler.dm * Update assembler.dm * Update code_generator.dm * moves slasher stuff to new lifes * more stuff * whoops * whoops * Revert "whoops" This reverts commit ced0a61145c507ba69a5f1645e2788e2016dc86e. * Update gary_component.dm * Update stage4.dm * Update declarations.dm * fixes * Update _traits.dm * Update slasher_datum.dm * Update scrap.dm * linters * Update species.dm * Update dismemberment.dm * Update dismemberment.dm * Update deep_fryer.dm * Update deep_fryer.dm * adds a new recipe step type reagent_choice * Update add_reagent_choice.dm * fix mem stats flags * Update console.dm * fixes title screens * more recipes * Update mapload_space_verification.dm --------- Co-authored-by: wraith-54321 <69217972+wraith-54321@users.noreply.github.com> Co-authored-by: Lucy --- .../IceRuins/icemoon_surface_ore_vent.dmm | 27 + .../IceRuins/icemoon_underground_ore_vent.dmm | 27 + .../LavaRuins/lavaland_surface_ore_vent.dmm | 27 + _maps/blueshift.json | 1 + _maps/map_files/Blueshift/Blueshift.dmm | 2193 +++++++++-------- _maps/map_files/BoxStation/BoxStation.dmm | 577 ++--- .../map_files/Deltastation/DeltaStation2.dmm | 638 ++--- .../map_files/IceBoxStation/IceBoxStation.dmm | 497 ++-- _maps/map_files/KiloStation/KiloStation.dmm | 484 ++-- _maps/map_files/MetaStation/MetaStation.dmm | 416 ++-- _maps/map_files/Ouroboros/Ouroboros.dmm | 2105 ++++++++-------- _maps/map_files/Voidraptor/VoidRaptor.dmm | 1770 ++++++------- _maps/map_files/debug/runtimestation.dmm | 768 +++--- _maps/map_files/tramstation/tramstation.dmm | 590 ++--- _maps/ouroboros.json | 1 + _maps/tramstation.json | 1 + code/__DEFINES/explosions.dm | 1 + code/__DEFINES/jobs.dm | 3 + code/__DEFINES/materials.dm | 12 + code/__DEFINES/mining.dm | 49 + code/__DEFINES/preferences.dm | 1 + code/__DEFINES/screentips.dm | 2 + code/__DEFINES/skills.dm | 5 +- code/__DEFINES/traits/declarations.dm | 14 +- code/__DEFINES/traits/monkestation/sources.dm | 2 + code/__DEFINES/~monkestation/_patreon.dm | 1 + code/__DEFINES/~monkestation/blueshift.dm | 2 +- code/__DEFINES/~monkestation/cargo.dm | 1 + code/__DEFINES/~monkestation/chewin.dm | 120 + .../~monkestation/dcs/signals/signals_item.dm | 2 + .../signals/signals_mob/signals_mob_main.dm | 5 + code/__DEFINES/~monkestation/pain.dm | 51 + code/__DEFINES/~monkestation/virology.dm | 1 + code/__HELPERS/roundend.dm | 1 + code/_globalvars/lists/ores_spawned.dm | 35 + code/_globalvars/traits/_traits.dm | 4 +- code/_onclick/click.dm | 4 +- code/_onclick/hud/new_player.dm | 5 + code/_onclick/other_mobs.dm | 6 +- code/controllers/master.dm | 10 + code/controllers/subsystem/explosions.dm | 8 +- code/controllers/subsystem/mapping.dm | 6 +- code/datums/brain_damage/magic.dm | 6 + code/datums/components/fullauto.dm | 5 +- code/datums/components/riding/riding_mob.dm | 6 +- code/datums/components/twohanded.dm | 1 + code/datums/datum.dm | 1 + code/datums/elements/deliver_first.dm | 6 + .../config_types/greyscale_configs.dm | 10 + .../json_configs/big_manipulator.json | 15 + .../json_configs/manipulator_hand.json | 15 + code/datums/id_trim/jobs.dm | 26 - code/datums/mapgen/CaveGenerator.dm | 2 + code/datums/martial/sleeping_carp.dm | 6 + code/datums/materials/_material.dm | 6 + code/datums/materials/basemats.dm | 38 + code/datums/quirks/negative_quirks.dm | 12 +- code/datums/ruins.dm | 26 +- code/datums/wounds/bones.dm | 2 + code/datums/wounds/loss.dm | 1 + code/datums/wounds/pierce.dm | 1 + code/datums/wounds/slash.dm | 1 + code/game/atoms.dm | 12 +- .../dynamic/dynamic_rulesets_midround.dm | 2 +- code/game/machinery/_machinery.dm | 13 +- code/game/machinery/computer/crew.dm | 1 + code/game/machinery/prisongate.dm | 8 + code/game/machinery/sleepers.dm | 2 +- .../effects/decals/cleanable/humans.dm | 14 + code/game/objects/items/food/meatslab.dm | 2 +- code/game/objects/items/food/spaghetti.dm | 2 +- code/game/objects/items/melee/misc.dm | 3 +- code/game/objects/items/robot/items/hypo.dm | 2 +- .../items/stacks/sheets/sheet_types.dm | 1 + code/game/objects/items/stacks/stack.dm | 61 +- .../game/objects/items/stacks/stack_recipe.dm | 12 + .../crates_lockers/closets/secure/security.dm | 2 +- code/game/objects/structures/girders.dm | 3 + code/game/sound.dm | 9 +- code/game/turfs/closed/walls.dm | 13 +- .../actionspeed/_actionspeed_modifier.dm | 2 - .../view_variables/reference_tracking.dm | 211 +- code/modules/client/client_procs.dm | 4 + code/modules/client/preferences.dm | 5 + code/modules/error_handler/error_handler.dm | 3 + code/modules/events/disease_outbreak.dm | 8 +- .../events/ghost_role/alien_infestation.dm | 6 +- .../food_and_drinks/machinery/deep_fryer.dm | 79 +- .../modules/food_and_drinks/machinery/oven.dm | 13 + .../machinery/stove_component.dm | 17 + code/modules/food_and_drinks/plate.dm | 2 +- .../recipes/drinks/drinks_alcoholic.dm | 4 +- .../recipes/tablecraft/recipes_guide.dm | 1 - code/modules/hydroponics/grown/mushrooms.dm | 2 +- code/modules/hydroponics/grown/tea_coffee.dm | 2 +- code/modules/mapping/ruins.dm | 18 +- .../mining/equipment/mineral_scanner.dm | 4 +- .../modules/mob/dead/new_player/new_player.dm | 4 + code/modules/mob/inventory.dm | 7 +- .../regal_rat/regal_rat_actions.dm | 2 +- code/modules/mob/living/blood.dm | 83 +- code/modules/mob/living/carbon/carbon.dm | 18 - .../mob/living/carbon/carbon_defense.dm | 3 +- code/modules/mob/living/carbon/death.dm | 28 +- code/modules/mob/living/carbon/human/dummy.dm | 4 + .../mob/living/carbon/human/human_defense.dm | 2 + code/modules/mob/living/damage_procs.dm | 7 +- code/modules/mob/living/death.dm | 12 +- code/modules/plumbing/ducts.dm | 2 +- code/modules/plumbing/plumbers/synthesizer.dm | 1 + code/modules/projectiles/gun.dm | 10 +- code/modules/projectiles/guns/ballistic.dm | 9 + code/modules/projectiles/projectile.dm | 6 +- .../modules/projectiles/projectile/bullets.dm | 6 + code/modules/reagents/chemistry/holder.dm | 3 + .../chemistry/machinery/chem_dispenser.dm | 4 +- code/modules/reagents/chemistry/reagents.dm | 2 + .../chemistry/reagents/medicine_reagents.dm | 18 +- .../reagents/chemistry/recipes/drugs.dm | 4 +- .../reagents/chemistry/recipes/medicine.dm | 2 +- .../reagents/chemistry/recipes/toxins.dm | 2 +- code/modules/reagents/reagent_containers.dm | 6 + .../reagents/reagent_containers/cups/_cup.dm | 2 + .../reagent_containers/cups/bottle.dm | 2 +- .../reagents/reagent_containers/hypospray.dm | 14 +- .../reagents/reagent_containers/pill.dm | 2 +- .../reagents/reagent_containers/syringes.dm | 2 +- code/modules/religion/burdened/psyker.dm | 2 +- code/modules/research/techweb/all_nodes.dm | 10 + .../vatgrowing/samples/cell_lines/common.dm | 4 +- .../spells/spell_types/touch/scream_for_me.dm | 1 + code/modules/surgery/bodyparts/_bodyparts.dm | 23 +- .../surgery/bodyparts/dismemberment.dm | 53 +- .../unit_tests/mapload_space_verification.dm | 1 + code/modules/vending/drinnerware.dm | 6 + icons/effects/blood.dmi | Bin 166083 -> 191871 bytes icons/obj/weapons/guns/projectiles.dmi | Bin 137182 -> 137953 bytes interface/skin.dmf | 34 +- memorystats.dll | Bin 0 -> 488448 bytes .../code/datums/brain_damage/magic.dm | 8 +- monkestation/code/datums/patreon_data.dm | 8 +- .../code/datums/status_effects/food_buffs.dm | 1 + monkestation/code/game/sound.dm | 2 +- .../a_ship_in_need_of_breaking/area.dm | 4 + .../icons/shipbreaking.dmi | Bin 0 -> 1921 bytes .../machines/console.dm | 125 + .../machines/recycler.dm | 0 .../a_ship_in_need_of_breaking/scrap.dm | 78 + .../ship_maps/robotics.dmm | 667 +++++ .../ships/_base_ship.dm | 10 + .../ships/robotics.dm | 5 + .../components/abberant_organ.dm | 6 +- .../abberant_organs/processes/_base.dm | 2 +- .../processes/liver/reagent_conversion.dm | 12 +- .../abberant_organs/triggers/_base_trigger.dm | 4 +- .../triggers/liver/chemical_consumption.dm | 9 +- .../borers/code/mobs/cortical_borer.dm | 2 +- .../slasher/abilities/incorporealize.dm | 148 -- .../antagonists/slasher/slasher_datum.dm | 168 -- .../slasher_outfit/slasher_footwear.dm | 10 - .../slasher_outfit/slasher_headgear.dm | 17 - .../slasher_outfit/slasher_middlewear.dm | 17 - .../antagonists/slasher/slasher_punishment.dm | 8 - .../assault_ops/code/assault_op_vendor.dm | 2 + .../blood_for_the_blood_gods/fly_away.dm | 50 + .../icons/slasher_ui.dmi | Bin 0 -> 462 bytes .../blood_for_the_blood_gods/particle.dm | 158 ++ .../slasher/__base_slasher_additions.dm | 0 .../slasher/abilities/_slasher_base.dm | 0 .../slasher/abilities/blood_walk.dm | 0 .../slasher/abilities/envelope_darkness.dm | 40 + .../slasher/abilities/recall_machette.dm | 2 + .../slasher/abilities/slasher_regenerate.dm | 0 .../slasher/abilities/soul_steal.dm | 9 - .../slasher/abilities/stalk_target.dm | 4 +- .../slasher/abilities/terror_screech.dm | 19 +- .../slasher/components/see_as_something.dm | 48 + .../slasher/components/team_monitor.dm | 7 +- .../slasher/ghost_role.dm | 0 .../slasher/slasher_datum.dm | 316 +++ .../slasher_outfit/slasher_clothing.dm | 46 + .../modules/bloodsuckers/powers/fortitude.dm | 4 +- .../structures/bloodsucker_recipes.dm | 9 + monkestation/code/modules/blueshield/areas.dm | 5 + .../code/modules/blueshield/closet.dm | 34 + .../blueshield.dm => blueshield/clothing.dm} | 76 + .../blueshield/devices/crew_monitor.dm | 133 + .../code/modules/blueshield/devices/sensor.dm | 8 + monkestation/code/modules/blueshield/gun.dm | 59 + .../code/modules/blueshield/icons/device.dmi | Bin 0 -> 884 bytes .../code/modules/blueshield/icons/gun.dmi | Bin 0 -> 432 bytes .../modules/blueshield/icons/praetorian.dmi | Bin 0 -> 1333 bytes .../code/modules/blueshield/icons/radio.dmi | Bin 0 -> 480 bytes .../blueshield/icons/worn_praetorian.dmi | Bin 0 -> 2081 bytes .../blueshield.dm => blueshield/job.dm} | 79 +- .../code/modules/blueshield/landmarks.dm | 2 + .../code/modules/blueshield/modsuit/suit.dm | 14 + .../code/modules/blueshield/modsuit/theme.dm | 59 + monkestation/code/modules/blueshield/radio.dm | 6 + .../code/modules/blueshield/readme.md | 24 + monkestation/code/modules/blueshield/trim.dm | 33 + .../modules/blueshift/appliances/colony.dm | 6 + .../code/modules/blueshift/areas/station.dm | 6 - .../modules/blueshift/benos/human_changes.dm | 1 + .../blueshift/clothing/nova_command.dm | 52 - .../modules/blueshift/clothing/nova_neck.dm | 7 - .../modules/blueshift/components/armament.dm | 25 +- .../blueshift/icons/mob/clothing/ears.dmi | Bin 0 -> 1373 bytes .../code/modules/blueshift/items/ammo.dm | 4 +- .../modules/blueshift/items/company_guns.dm | 31 +- .../code/modules/blueshift/items/deforest.dm | 2 +- .../code/modules/blueshift/items/magazines.dm | 8 +- .../blueshift/machines/station_armament.dm | 5 + .../modules/blueshift/machines/thumper.dm | 32 +- .../modules/blueshift/reagents/deforest.dm | 3 + .../modules/blueshift/structures/locker.dm | 33 - .../brewin_and_chewin/brewing/bottler.dm | 53 + .../brewin_and_chewin/brewing/bottles.dm | 19 + .../brewin_and_chewin/brewing/designs.dm | 23 + .../brewing/fermintation_keg.dm | 302 +++ .../brewin_and_chewin/brewing/reagents.dm | 27 + .../brewin_and_chewin/brewing/recipe_card.dm | 80 + .../brewing/recipes/_base.dm | 29 + .../brewing/recipes/beers.dm | 21 + .../brewing/recipes/custom.dm | 24 + .../brewing/recipes/liquors.dm | 21 + .../brewing/recipes/meads.dm | 9 + .../brewin_and_chewin/brewing/recipes/misc.dm | 84 + .../brewin_and_chewin/brewing/recipes/rums.dm | 22 + .../brewing/recipes/vinegars.dm | 39 + .../brewing/recipes/wines.dm | 46 + .../brewin_and_chewin/cargo_exports.dm | 13 + .../chewing/cooking_containers.dm | 385 +++ .../chewing/food_additons.dm | 30 + .../chewing/food_effects/food_posioning.dm | 19 + .../chewing/fryer_overhaul.dm | 82 + .../chewing/global_creation.dm | 11 + .../brewin_and_chewin/chewing/items.dm | 14 + .../chewing/oven_overrides.dm | 42 + .../brewin_and_chewin/chewing/recipe.dm | 868 +++++++ .../chewing/recipe_steps/_base.dm | 108 + .../chewing/recipe_steps/add_item.dm | 74 + .../chewing/recipe_steps/add_produce.dm | 59 + .../recipe_steps/add_produce_choice.dm | 63 + .../chewing/recipe_steps/add_reagent.dm | 82 + .../recipe_steps/add_reagent_choice.dm | 95 + .../chewing/recipe_steps/recipe_start.dm | 11 + .../chewing/recipe_steps/use_fryer.dm | 62 + .../chewing/recipe_steps/use_grill.dm | 63 + .../chewing/recipe_steps/use_item.dm | 42 + .../chewing/recipe_steps/use_oven.dm | 62 + .../chewing/recipe_steps/use_stove.dm | 62 + .../chewing/recipe_steps/use_tool.dm | 40 + .../chewing/recipes/black_eggs.dm | 59 + .../chewing/recipes/converted_recipes.md | 8 + .../chewing/recipes/documentation.md | 117 + .../chewing/recipes/example_recipe.dm | 170 ++ .../chewing/recipes/french_fries.dm | 8 + .../chewing/recipes/fried_blood_sausage.dm | 56 + .../chewing/recipes/fried_rice.dm | 17 + .../chewing/recipes/katsu_curry.dm | 61 + .../chewing/recipes/kimchi.dm | 90 + .../chewing/recipes/lizard_dumplings.dm | 48 + .../chewing/recipes/oven_bread.dm | 9 + .../recipe_crafting_helper_generator.dm | 148 ++ .../chewing/recipes/sandwhich_test.dm | 8 + .../brewin_and_chewin/chewing/tracker.dm | 458 ++++ .../brewin_and_chewin/icons/bottle.dmi | Bin 0 -> 145613 bytes .../brewin_and_chewin/icons/eris_kitchen.dmi | Bin 0 -> 1642 bytes .../modules/brewin_and_chewin/icons/grill.dmi | Bin 0 -> 2055 bytes .../brewin_and_chewin/icons/kitchen.dmi | Bin 0 -> 4329 bytes .../brewin_and_chewin/icons/objects.dmi | Bin 0 -> 1018 bytes .../modules/brewin_and_chewin/icons/oven.dmi | Bin 0 -> 1886 bytes .../modules/brewin_and_chewin/icons/paper.dmi | Bin 0 -> 364 bytes .../modules/brewin_and_chewin/icons/scan.dmi | Bin 0 -> 4496 bytes .../modules/brewin_and_chewin/icons/stove.dmi | Bin 0 -> 9120 bytes .../code/modules/brewin_and_chewin/readme.md | 19 + .../modules/brewin_and_chewin/uniqueness.dm | 70 + .../components/make_item_slow.dm | 61 + .../elements/temperature_pack.dm | 107 + .../icons/hud/screen_full.dmi | Bin 0 -> 357905 bytes .../icons/mob/inhands/pain_items_lhand.dmi | Bin 0 -> 832 bytes .../icons/mob/inhands/pain_items_rhand.dmi | Bin 0 -> 691 bytes .../icons/mob/pain_items.dmi | Bin 0 -> 575 bytes .../icons/obj/chemical.dmi | Bin 0 -> 414 bytes .../icons/obj/pain_items.dmi | Bin 0 -> 2159 bytes .../icons/obj/syringe.dmi | Bin 0 -> 714 bytes .../can_spessmen_feel_pain/pain/_base.dm | 942 +++++++ .../can_spessmen_feel_pain/pain/bodyparts.dm | 286 +++ .../pain/causes/generic.dm | 55 + .../pain/causes/opiods.dm | 27 + .../pain/causes/surgery.dm | 236 ++ .../can_spessmen_feel_pain/pain/effects.dm | 109 + .../can_spessmen_feel_pain/pain/helpers.dm | 154 ++ .../pain/item_helpers.dm | 3 + .../can_spessmen_feel_pain/pain/modifiers.dm | 125 + .../pain/pain_assistance_tools.dm | 559 +++++ .../pain/pain_goodies.dm | 3 + .../pain/preferences.dm | 13 + .../pain/reagents/modified_reagents.dm | 175 ++ .../pain/reagents/painkiller_related.dm | 50 + .../pain/reagents/painkillers.dm | 481 ++++ .../can_spessmen_feel_pain/pain/shock.dm | 207 ++ .../can_spessmen_feel_pain/pain/species.dm | 4 + .../pain/status_effects/anesthetics.dm | 42 + .../pain/status_effects/fire_pain.dm | 42 + .../pain/status_effects/low_blood_pressure.dm | 21 + .../pain/status_effects/min_pain.dm | 50 + .../pain/status_effects/pain_limp.dm | 68 + .../pain/status_effects/sharp_pain.dm | 61 + .../pain/status_effects/temp_pack.dm | 171 ++ .../can_spessmen_feel_pain/pain/traits.dm | 101 + .../modules/can_spessmen_feel_pain/readme.md | 21 + .../can_spessmen_feel_pain/subsystem.dm | 5 + .../cassettes/machines/media/HTML5_player.dm | 5 + .../cassettes/machines/media/media_manager.dm | 8 +- .../cybernetics/augments/_base_changes.dm | 2 +- .../minigame/airlock_hacking_datum.dm | 2 +- .../cybernetics/minigame/general_hacking.dm | 5 +- .../ai_behaviours/latch_onto.dm | 16 + .../code/modules/factory_type_beat/boulder.dm | 284 +++ .../modules/factory_type_beat/circuits.dm | 46 + .../code/modules/factory_type_beat/debug.dm | 49 + .../code/modules/factory_type_beat/designs.dm | 236 ++ .../code/modules/factory_type_beat/effects.dm | 21 + .../modules/factory_type_beat/flatpacks.dm | 35 + .../icons/big_manipulator.dmi | Bin 0 -> 504 bytes .../icons/big_manipulator_core.dmi | Bin 0 -> 589 bytes .../icons/big_manipulator_hand.dmi | Bin 0 -> 1219 bytes .../factory_type_beat/icons/debris.dmi | Bin 0 -> 19814 bytes .../modules/factory_type_beat/icons/items.dmi | Bin 0 -> 264 bytes .../factory_type_beat/icons/mining.dmi | Bin 0 -> 63105 bytes .../icons/mining_machines.dmi | Bin 0 -> 25994 bytes .../modules/factory_type_beat/icons/ore.dmi | Bin 0 -> 9564 bytes .../factory_type_beat/icons/processing.dmi | Bin 0 -> 626 bytes .../factory_type_beat/icons/terrain.dmi | Bin 0 -> 6098 bytes .../factory_type_beat/icons/vent_overlays.dmi | Bin 0 -> 1404 bytes .../factory_type_beat/machinery/assembler.dm | 333 +++ .../machinery/atmos_chem/chemical_infuser.dm | 129 + .../chemical_infuser_recipes/_base.dm | 5 + .../chemical_infuser_recipes/sulfur.dm | 26 + .../atmos_chem/pressurised_reactions/_base.dm | 5 + .../pressurised_reactions/sulfur.dm | 5 + .../pressurized_reaction_chamber.dm | 112 + .../machinery/brine_chamber.dm | 144 ++ .../factory_type_beat/machinery/grabber.dm | 506 ++++ .../factory_type_beat/machinery/splitter.dm | 55 + .../machinery/test_boulder_spawner.dm | 21 + .../factory_type_beat/map_templates.dm | 30 + .../factory_type_beat/mobs/node_drone.dm | 154 ++ .../modules/factory_type_beat/ore_vent.dm | 525 ++++ .../processing/bouldertech.dm | 380 +++ .../factory_type_beat/processing/brm.dm | 201 ++ .../processing/checmial_washer.dm | 137 + .../processing/chemical_injector.dm | 165 ++ .../factory_type_beat/processing/crusher.dm | 72 + .../processing/crystalizer.dm | 140 ++ .../processing/dissolution_chamber.dm | 96 + .../factory_type_beat/processing/enricher.dm | 105 + .../processing/holding_types.dm | 59 + .../processing/purification_chamber.dm | 167 ++ .../factory_type_beat/processing/refinery.dm | 175 ++ .../code/modules/factory_type_beat/readme.md | 1 + .../modules/factory_type_beat/ss_ore_gen.dm | 94 + .../modules/factory_type_beat/technodes.dm | 18 + .../code/modules/factory_type_beat/yummy.dm | 17 + .../ghost_critter_mobs/donator_mobs.dm | 2 +- .../code/modules/loadouts/items/neck.dm | 4 +- .../code/modules/mech_comp/objects/flush.dm | 5 + .../mech_comp/objects/messages/button.dm | 2 + .../modules/mob/dead/new_player/new_player.dm | 5 + .../_base_patch_changes.dm | 10 +- .../code/modules/physics/physics_component.dm | 39 +- .../pollution/pollution_emitter_element.dm | 2 +- .../chemistry/reagents/other_reagents.dm | 6 +- .../code/modules/smithing/ipcs/species.dm | 2 +- .../modules/smithing/oozelings/species.dm | 1 + .../converted_events/solo/bloodcult.dm | 1 + .../converted_events/solo/bloodsuckers.dm | 1 + .../converted_events/solo/brother.dm | 1 + .../converted_events/solo/changeling.dm | 1 + .../converted_events/solo/clockwork_cult.dm | 1 + .../converted_events/solo/clown_operative.dm | 1 + .../solo/ghosts/nuclear_operative_ghost.dm | 2 +- .../converted_events/solo/heretic.dm | 1 + .../converted_events/solo/monsterhunter.dm | 1 + .../solo/nuclear_operative.dm | 1 + .../converted_events/solo/obsessed.dm | 1 + .../converted_events/solo/revolutionary.dm | 1 + .../converted_events/solo/traitor.dm | 1 + .../converted_events/solo/wizard.dm | 1 + .../animation_housing/__spawning_component.dm | 5 +- .../animation_housing/money.dm | 38 + .../virology/disease/plague_rat/event.dm | 4 +- .../virology/disease/plague_rat/plague_rat.dm | 11 + .../disease/symptom_cracker/cracker_puzzle.dm | 42 +- .../virology/disease/symptom_varients/base.dm | 2 +- .../disease/symtoms/restricted/stage3.dm | 6 +- .../virology/disease/symtoms/stage2.dm | 4 +- .../virology/disease/symtoms/stage3.dm | 6 +- .../virology/disease/symtoms/stage4.dm | 37 +- .../virology/items/_base_item_additions.dm | 2 +- .../modules/virology/items/antibodyscanner.dm | 7 +- .../modules/virology/items/extrapolator.dm | 15 +- .../code/modules/virology/living/mouse.dm | 9 +- .../virology/reagents/_stage_mutations.dm | 4 +- .../modules/virology/reagents/incubation.dm | 2 +- monkestation/gunning_ing/recoil.dm | 22 + sound/attributions.txt | 16 + sound/effects/rock_break.ogg | Bin 0 -> 51959 bytes sound/machines/mining/auto_teleport.ogg | Bin 0 -> 28340 bytes sound/machines/mining/manual_teleport.ogg | Bin 0 -> 35578 bytes sound/machines/mining/refinery.ogg | Bin 0 -> 56108 bytes sound/machines/mining/smelter.ogg | Bin 0 -> 62364 bytes sound/machines/mining/wooping_teleport.ogg | Bin 0 -> 37613 bytes sound/machines/radar-ping.ogg | Bin 0 -> 32548 bytes sound/machines/sonar-ping.ogg | Bin 0 -> 32532 bytes tgstation.dme | 172 +- tgui/packages/tgui/components/Collapsible.jsx | 15 +- tgui/packages/tgui/components/ImageButton.js | 234 ++ tgui/packages/tgui/components/index.jsx | 1 + .../tgui/interfaces/BigManipulator.tsx | 30 + .../interfaces/CrewConsoleNovaBlueshield.jsx | 201 ++ .../tgui/interfaces/PersonalCrafting.tsx | 157 +- .../interfaces/PreferencesMenu/JobsPage.tsx | 6 +- .../game_preferences/monkestation/pain.tsx | 13 + .../tgui/interfaces/ShipbreakerConsole.tsx | 41 + tgui/packages/tgui/interfaces/StackCraft.js | 242 ++ .../tgui/stories/ImageButton.stories.js | 252 ++ .../tgui/styles/components/ImageButton.scss | 223 ++ tgui/packages/tgui/styles/main.scss | 1 + .../packages/tgui/styles/themes/abductor.scss | 8 + .../tgui/styles/themes/cardtable.scss | 8 + .../tgui/styles/themes/generic-yellow.scss | 9 +- .../tgui/styles/themes/hackerman.scss | 8 + .../tgui/styles/themes/malfunction.scss | 8 + tgui/packages/tgui/styles/themes/ntos.scss | 4 + tgui/packages/tgui/styles/themes/paper.scss | 8 + tgui/packages/tgui/styles/themes/retro.scss | 8 + .../tgui/styles/themes/syndicate.scss | 9 +- 440 files changed, 23362 insertions(+), 6193 deletions(-) create mode 100644 _maps/RandomRuins/IceRuins/icemoon_surface_ore_vent.dmm create mode 100644 _maps/RandomRuins/IceRuins/icemoon_underground_ore_vent.dmm create mode 100644 _maps/RandomRuins/LavaRuins/lavaland_surface_ore_vent.dmm create mode 100644 code/__DEFINES/mining.dm create mode 100644 code/__DEFINES/~monkestation/cargo.dm create mode 100644 code/__DEFINES/~monkestation/chewin.dm create mode 100644 code/__DEFINES/~monkestation/pain.dm create mode 100644 code/_globalvars/lists/ores_spawned.dm create mode 100644 code/datums/greyscale/json_configs/big_manipulator.json create mode 100644 code/datums/greyscale/json_configs/manipulator_hand.json create mode 100644 memorystats.dll create mode 100644 monkestation/code/modules/a_ship_in_need_of_breaking/area.dm create mode 100644 monkestation/code/modules/a_ship_in_need_of_breaking/icons/shipbreaking.dmi create mode 100644 monkestation/code/modules/a_ship_in_need_of_breaking/machines/console.dm create mode 100644 monkestation/code/modules/a_ship_in_need_of_breaking/machines/recycler.dm create mode 100644 monkestation/code/modules/a_ship_in_need_of_breaking/scrap.dm create mode 100644 monkestation/code/modules/a_ship_in_need_of_breaking/ship_maps/robotics.dmm create mode 100644 monkestation/code/modules/a_ship_in_need_of_breaking/ships/_base_ship.dm create mode 100644 monkestation/code/modules/a_ship_in_need_of_breaking/ships/robotics.dm delete mode 100644 monkestation/code/modules/antagonists/slasher/abilities/incorporealize.dm delete mode 100644 monkestation/code/modules/antagonists/slasher/slasher_datum.dm delete mode 100644 monkestation/code/modules/antagonists/slasher/slasher_outfit/slasher_footwear.dm delete mode 100644 monkestation/code/modules/antagonists/slasher/slasher_outfit/slasher_headgear.dm delete mode 100644 monkestation/code/modules/antagonists/slasher/slasher_outfit/slasher_middlewear.dm delete mode 100644 monkestation/code/modules/antagonists/slasher/slasher_punishment.dm create mode 100644 monkestation/code/modules/blood_for_the_blood_gods/fly_away.dm create mode 100644 monkestation/code/modules/blood_for_the_blood_gods/icons/slasher_ui.dmi create mode 100644 monkestation/code/modules/blood_for_the_blood_gods/particle.dm rename monkestation/code/modules/{antagonists => blood_for_the_blood_gods}/slasher/__base_slasher_additions.dm (100%) rename monkestation/code/modules/{antagonists => blood_for_the_blood_gods}/slasher/abilities/_slasher_base.dm (100%) rename monkestation/code/modules/{antagonists => blood_for_the_blood_gods}/slasher/abilities/blood_walk.dm (100%) create mode 100644 monkestation/code/modules/blood_for_the_blood_gods/slasher/abilities/envelope_darkness.dm rename monkestation/code/modules/{antagonists => blood_for_the_blood_gods}/slasher/abilities/recall_machette.dm (97%) rename monkestation/code/modules/{antagonists => blood_for_the_blood_gods}/slasher/abilities/slasher_regenerate.dm (100%) rename monkestation/code/modules/{antagonists => blood_for_the_blood_gods}/slasher/abilities/soul_steal.dm (91%) rename monkestation/code/modules/{antagonists => blood_for_the_blood_gods}/slasher/abilities/stalk_target.dm (96%) rename monkestation/code/modules/{antagonists => blood_for_the_blood_gods}/slasher/abilities/terror_screech.dm (55%) create mode 100644 monkestation/code/modules/blood_for_the_blood_gods/slasher/components/see_as_something.dm rename monkestation/code/modules/{antagonists => blood_for_the_blood_gods}/slasher/components/team_monitor.dm (99%) rename monkestation/code/modules/{antagonists => blood_for_the_blood_gods}/slasher/ghost_role.dm (100%) create mode 100644 monkestation/code/modules/blood_for_the_blood_gods/slasher/slasher_datum.dm create mode 100644 monkestation/code/modules/blood_for_the_blood_gods/slasher/slasher_outfit/slasher_clothing.dm create mode 100644 monkestation/code/modules/blueshield/areas.dm create mode 100644 monkestation/code/modules/blueshield/closet.dm rename monkestation/code/modules/{blueshift/clothing/blueshield.dm => blueshield/clothing.dm} (68%) create mode 100644 monkestation/code/modules/blueshield/devices/crew_monitor.dm create mode 100644 monkestation/code/modules/blueshield/devices/sensor.dm create mode 100644 monkestation/code/modules/blueshield/gun.dm create mode 100644 monkestation/code/modules/blueshield/icons/device.dmi create mode 100644 monkestation/code/modules/blueshield/icons/gun.dmi create mode 100644 monkestation/code/modules/blueshield/icons/praetorian.dmi create mode 100644 monkestation/code/modules/blueshield/icons/radio.dmi create mode 100644 monkestation/code/modules/blueshield/icons/worn_praetorian.dmi rename monkestation/code/modules/{jobs/job_types/blueshield.dm => blueshield/job.dm} (50%) create mode 100644 monkestation/code/modules/blueshield/landmarks.dm create mode 100644 monkestation/code/modules/blueshield/modsuit/suit.dm create mode 100644 monkestation/code/modules/blueshield/modsuit/theme.dm create mode 100644 monkestation/code/modules/blueshield/radio.dm create mode 100644 monkestation/code/modules/blueshield/readme.md create mode 100644 monkestation/code/modules/blueshield/trim.dm create mode 100644 monkestation/code/modules/blueshift/icons/mob/clothing/ears.dmi create mode 100644 monkestation/code/modules/brewin_and_chewin/brewing/bottler.dm create mode 100644 monkestation/code/modules/brewin_and_chewin/brewing/bottles.dm create mode 100644 monkestation/code/modules/brewin_and_chewin/brewing/designs.dm create mode 100644 monkestation/code/modules/brewin_and_chewin/brewing/fermintation_keg.dm create mode 100644 monkestation/code/modules/brewin_and_chewin/brewing/reagents.dm create mode 100644 monkestation/code/modules/brewin_and_chewin/brewing/recipe_card.dm create mode 100644 monkestation/code/modules/brewin_and_chewin/brewing/recipes/_base.dm create mode 100644 monkestation/code/modules/brewin_and_chewin/brewing/recipes/beers.dm create mode 100644 monkestation/code/modules/brewin_and_chewin/brewing/recipes/custom.dm create mode 100644 monkestation/code/modules/brewin_and_chewin/brewing/recipes/liquors.dm create mode 100644 monkestation/code/modules/brewin_and_chewin/brewing/recipes/meads.dm create mode 100644 monkestation/code/modules/brewin_and_chewin/brewing/recipes/misc.dm create mode 100644 monkestation/code/modules/brewin_and_chewin/brewing/recipes/rums.dm create mode 100644 monkestation/code/modules/brewin_and_chewin/brewing/recipes/vinegars.dm create mode 100644 monkestation/code/modules/brewin_and_chewin/brewing/recipes/wines.dm create mode 100644 monkestation/code/modules/brewin_and_chewin/cargo_exports.dm create mode 100644 monkestation/code/modules/brewin_and_chewin/chewing/cooking_containers.dm create mode 100644 monkestation/code/modules/brewin_and_chewin/chewing/food_additons.dm create mode 100644 monkestation/code/modules/brewin_and_chewin/chewing/food_effects/food_posioning.dm create mode 100644 monkestation/code/modules/brewin_and_chewin/chewing/fryer_overhaul.dm create mode 100644 monkestation/code/modules/brewin_and_chewin/chewing/global_creation.dm create mode 100644 monkestation/code/modules/brewin_and_chewin/chewing/items.dm create mode 100644 monkestation/code/modules/brewin_and_chewin/chewing/oven_overrides.dm create mode 100644 monkestation/code/modules/brewin_and_chewin/chewing/recipe.dm create mode 100644 monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/_base.dm create mode 100644 monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/add_item.dm create mode 100644 monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/add_produce.dm create mode 100644 monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/add_produce_choice.dm create mode 100644 monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/add_reagent.dm create mode 100644 monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/add_reagent_choice.dm create mode 100644 monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/recipe_start.dm create mode 100644 monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/use_fryer.dm create mode 100644 monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/use_grill.dm create mode 100644 monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/use_item.dm create mode 100644 monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/use_oven.dm create mode 100644 monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/use_stove.dm create mode 100644 monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/use_tool.dm create mode 100644 monkestation/code/modules/brewin_and_chewin/chewing/recipes/black_eggs.dm create mode 100644 monkestation/code/modules/brewin_and_chewin/chewing/recipes/converted_recipes.md create mode 100644 monkestation/code/modules/brewin_and_chewin/chewing/recipes/documentation.md create mode 100644 monkestation/code/modules/brewin_and_chewin/chewing/recipes/example_recipe.dm create mode 100644 monkestation/code/modules/brewin_and_chewin/chewing/recipes/french_fries.dm create mode 100644 monkestation/code/modules/brewin_and_chewin/chewing/recipes/fried_blood_sausage.dm create mode 100644 monkestation/code/modules/brewin_and_chewin/chewing/recipes/fried_rice.dm create mode 100644 monkestation/code/modules/brewin_and_chewin/chewing/recipes/katsu_curry.dm create mode 100644 monkestation/code/modules/brewin_and_chewin/chewing/recipes/kimchi.dm create mode 100644 monkestation/code/modules/brewin_and_chewin/chewing/recipes/lizard_dumplings.dm create mode 100644 monkestation/code/modules/brewin_and_chewin/chewing/recipes/oven_bread.dm create mode 100644 monkestation/code/modules/brewin_and_chewin/chewing/recipes/recipe_crafting_helper_generator.dm create mode 100644 monkestation/code/modules/brewin_and_chewin/chewing/recipes/sandwhich_test.dm create mode 100644 monkestation/code/modules/brewin_and_chewin/chewing/tracker.dm create mode 100644 monkestation/code/modules/brewin_and_chewin/icons/bottle.dmi create mode 100644 monkestation/code/modules/brewin_and_chewin/icons/eris_kitchen.dmi create mode 100644 monkestation/code/modules/brewin_and_chewin/icons/grill.dmi create mode 100644 monkestation/code/modules/brewin_and_chewin/icons/kitchen.dmi create mode 100644 monkestation/code/modules/brewin_and_chewin/icons/objects.dmi create mode 100644 monkestation/code/modules/brewin_and_chewin/icons/oven.dmi create mode 100644 monkestation/code/modules/brewin_and_chewin/icons/paper.dmi create mode 100644 monkestation/code/modules/brewin_and_chewin/icons/scan.dmi create mode 100644 monkestation/code/modules/brewin_and_chewin/icons/stove.dmi create mode 100644 monkestation/code/modules/brewin_and_chewin/readme.md create mode 100644 monkestation/code/modules/brewin_and_chewin/uniqueness.dm create mode 100644 monkestation/code/modules/can_spessmen_feel_pain/components/make_item_slow.dm create mode 100644 monkestation/code/modules/can_spessmen_feel_pain/elements/temperature_pack.dm create mode 100644 monkestation/code/modules/can_spessmen_feel_pain/icons/hud/screen_full.dmi create mode 100644 monkestation/code/modules/can_spessmen_feel_pain/icons/mob/inhands/pain_items_lhand.dmi create mode 100644 monkestation/code/modules/can_spessmen_feel_pain/icons/mob/inhands/pain_items_rhand.dmi create mode 100644 monkestation/code/modules/can_spessmen_feel_pain/icons/mob/pain_items.dmi create mode 100644 monkestation/code/modules/can_spessmen_feel_pain/icons/obj/chemical.dmi create mode 100644 monkestation/code/modules/can_spessmen_feel_pain/icons/obj/pain_items.dmi create mode 100644 monkestation/code/modules/can_spessmen_feel_pain/icons/obj/syringe.dmi create mode 100644 monkestation/code/modules/can_spessmen_feel_pain/pain/_base.dm create mode 100644 monkestation/code/modules/can_spessmen_feel_pain/pain/bodyparts.dm create mode 100644 monkestation/code/modules/can_spessmen_feel_pain/pain/causes/generic.dm create mode 100644 monkestation/code/modules/can_spessmen_feel_pain/pain/causes/opiods.dm create mode 100644 monkestation/code/modules/can_spessmen_feel_pain/pain/causes/surgery.dm create mode 100644 monkestation/code/modules/can_spessmen_feel_pain/pain/effects.dm create mode 100644 monkestation/code/modules/can_spessmen_feel_pain/pain/helpers.dm create mode 100644 monkestation/code/modules/can_spessmen_feel_pain/pain/item_helpers.dm create mode 100644 monkestation/code/modules/can_spessmen_feel_pain/pain/modifiers.dm create mode 100644 monkestation/code/modules/can_spessmen_feel_pain/pain/pain_assistance_tools.dm create mode 100644 monkestation/code/modules/can_spessmen_feel_pain/pain/pain_goodies.dm create mode 100644 monkestation/code/modules/can_spessmen_feel_pain/pain/preferences.dm create mode 100644 monkestation/code/modules/can_spessmen_feel_pain/pain/reagents/modified_reagents.dm create mode 100644 monkestation/code/modules/can_spessmen_feel_pain/pain/reagents/painkiller_related.dm create mode 100644 monkestation/code/modules/can_spessmen_feel_pain/pain/reagents/painkillers.dm create mode 100644 monkestation/code/modules/can_spessmen_feel_pain/pain/shock.dm create mode 100644 monkestation/code/modules/can_spessmen_feel_pain/pain/species.dm create mode 100644 monkestation/code/modules/can_spessmen_feel_pain/pain/status_effects/anesthetics.dm create mode 100644 monkestation/code/modules/can_spessmen_feel_pain/pain/status_effects/fire_pain.dm create mode 100644 monkestation/code/modules/can_spessmen_feel_pain/pain/status_effects/low_blood_pressure.dm create mode 100644 monkestation/code/modules/can_spessmen_feel_pain/pain/status_effects/min_pain.dm create mode 100644 monkestation/code/modules/can_spessmen_feel_pain/pain/status_effects/pain_limp.dm create mode 100644 monkestation/code/modules/can_spessmen_feel_pain/pain/status_effects/sharp_pain.dm create mode 100644 monkestation/code/modules/can_spessmen_feel_pain/pain/status_effects/temp_pack.dm create mode 100644 monkestation/code/modules/can_spessmen_feel_pain/pain/traits.dm create mode 100644 monkestation/code/modules/can_spessmen_feel_pain/readme.md create mode 100644 monkestation/code/modules/can_spessmen_feel_pain/subsystem.dm create mode 100644 monkestation/code/modules/factory_type_beat/ai_behaviours/latch_onto.dm create mode 100644 monkestation/code/modules/factory_type_beat/boulder.dm create mode 100644 monkestation/code/modules/factory_type_beat/circuits.dm create mode 100644 monkestation/code/modules/factory_type_beat/debug.dm create mode 100644 monkestation/code/modules/factory_type_beat/designs.dm create mode 100644 monkestation/code/modules/factory_type_beat/effects.dm create mode 100644 monkestation/code/modules/factory_type_beat/flatpacks.dm create mode 100644 monkestation/code/modules/factory_type_beat/icons/big_manipulator.dmi create mode 100644 monkestation/code/modules/factory_type_beat/icons/big_manipulator_core.dmi create mode 100644 monkestation/code/modules/factory_type_beat/icons/big_manipulator_hand.dmi create mode 100644 monkestation/code/modules/factory_type_beat/icons/debris.dmi create mode 100644 monkestation/code/modules/factory_type_beat/icons/items.dmi create mode 100644 monkestation/code/modules/factory_type_beat/icons/mining.dmi create mode 100644 monkestation/code/modules/factory_type_beat/icons/mining_machines.dmi create mode 100644 monkestation/code/modules/factory_type_beat/icons/ore.dmi create mode 100644 monkestation/code/modules/factory_type_beat/icons/processing.dmi create mode 100644 monkestation/code/modules/factory_type_beat/icons/terrain.dmi create mode 100644 monkestation/code/modules/factory_type_beat/icons/vent_overlays.dmi create mode 100644 monkestation/code/modules/factory_type_beat/machinery/assembler.dm create mode 100644 monkestation/code/modules/factory_type_beat/machinery/atmos_chem/chemical_infuser.dm create mode 100644 monkestation/code/modules/factory_type_beat/machinery/atmos_chem/chemical_infuser_recipes/_base.dm create mode 100644 monkestation/code/modules/factory_type_beat/machinery/atmos_chem/chemical_infuser_recipes/sulfur.dm create mode 100644 monkestation/code/modules/factory_type_beat/machinery/atmos_chem/pressurised_reactions/_base.dm create mode 100644 monkestation/code/modules/factory_type_beat/machinery/atmos_chem/pressurised_reactions/sulfur.dm create mode 100644 monkestation/code/modules/factory_type_beat/machinery/atmos_chem/pressurized_reaction_chamber.dm create mode 100644 monkestation/code/modules/factory_type_beat/machinery/brine_chamber.dm create mode 100644 monkestation/code/modules/factory_type_beat/machinery/grabber.dm create mode 100644 monkestation/code/modules/factory_type_beat/machinery/splitter.dm create mode 100644 monkestation/code/modules/factory_type_beat/machinery/test_boulder_spawner.dm create mode 100644 monkestation/code/modules/factory_type_beat/map_templates.dm create mode 100644 monkestation/code/modules/factory_type_beat/mobs/node_drone.dm create mode 100644 monkestation/code/modules/factory_type_beat/ore_vent.dm create mode 100644 monkestation/code/modules/factory_type_beat/processing/bouldertech.dm create mode 100644 monkestation/code/modules/factory_type_beat/processing/brm.dm create mode 100644 monkestation/code/modules/factory_type_beat/processing/checmial_washer.dm create mode 100644 monkestation/code/modules/factory_type_beat/processing/chemical_injector.dm create mode 100644 monkestation/code/modules/factory_type_beat/processing/crusher.dm create mode 100644 monkestation/code/modules/factory_type_beat/processing/crystalizer.dm create mode 100644 monkestation/code/modules/factory_type_beat/processing/dissolution_chamber.dm create mode 100644 monkestation/code/modules/factory_type_beat/processing/enricher.dm create mode 100644 monkestation/code/modules/factory_type_beat/processing/holding_types.dm create mode 100644 monkestation/code/modules/factory_type_beat/processing/purification_chamber.dm create mode 100644 monkestation/code/modules/factory_type_beat/processing/refinery.dm create mode 100644 monkestation/code/modules/factory_type_beat/readme.md create mode 100644 monkestation/code/modules/factory_type_beat/ss_ore_gen.dm create mode 100644 monkestation/code/modules/factory_type_beat/technodes.dm create mode 100644 monkestation/code/modules/factory_type_beat/yummy.dm create mode 100644 monkestation/code/modules/trading/unusual_effects/animation_housing/money.dm create mode 100644 monkestation/gunning_ing/recoil.dm create mode 100644 sound/effects/rock_break.ogg create mode 100644 sound/machines/mining/auto_teleport.ogg create mode 100644 sound/machines/mining/manual_teleport.ogg create mode 100644 sound/machines/mining/refinery.ogg create mode 100644 sound/machines/mining/smelter.ogg create mode 100644 sound/machines/mining/wooping_teleport.ogg create mode 100644 sound/machines/radar-ping.ogg create mode 100644 sound/machines/sonar-ping.ogg create mode 100644 tgui/packages/tgui/components/ImageButton.js create mode 100644 tgui/packages/tgui/interfaces/BigManipulator.tsx create mode 100644 tgui/packages/tgui/interfaces/CrewConsoleNovaBlueshield.jsx create mode 100644 tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/game_preferences/monkestation/pain.tsx create mode 100644 tgui/packages/tgui/interfaces/ShipbreakerConsole.tsx create mode 100644 tgui/packages/tgui/interfaces/StackCraft.js create mode 100644 tgui/packages/tgui/stories/ImageButton.stories.js create mode 100644 tgui/packages/tgui/styles/components/ImageButton.scss diff --git a/_maps/RandomRuins/IceRuins/icemoon_surface_ore_vent.dmm b/_maps/RandomRuins/IceRuins/icemoon_surface_ore_vent.dmm new file mode 100644 index 000000000000..51584f90f86a --- /dev/null +++ b/_maps/RandomRuins/IceRuins/icemoon_surface_ore_vent.dmm @@ -0,0 +1,27 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/template_noop, +/area/template_noop) +"l" = ( +/turf/open/misc/asteroid/snow/icemoon, +/area/icemoon/surface/outdoors/unexplored/rivers/no_monsters) +"L" = ( +/obj/structure/ore_vent/random/icebox, +/turf/open/misc/asteroid/snow/icemoon, +/area/icemoon/surface/outdoors/unexplored/rivers/no_monsters) + +(1,1,1) = {" +a +l +a +"} +(2,1,1) = {" +l +L +l +"} +(3,1,1) = {" +a +l +a +"} diff --git a/_maps/RandomRuins/IceRuins/icemoon_underground_ore_vent.dmm b/_maps/RandomRuins/IceRuins/icemoon_underground_ore_vent.dmm new file mode 100644 index 000000000000..db409d08c8cf --- /dev/null +++ b/_maps/RandomRuins/IceRuins/icemoon_underground_ore_vent.dmm @@ -0,0 +1,27 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/template_noop, +/area/template_noop) +"l" = ( +/turf/open/misc/asteroid/snow/icemoon, +/area/icemoon/underground/unexplored) +"L" = ( +/obj/structure/ore_vent/random/icebox/lower, +/turf/open/misc/asteroid/snow/icemoon, +/area/icemoon/underground/unexplored) + +(1,1,1) = {" +a +l +a +"} +(2,1,1) = {" +l +L +l +"} +(3,1,1) = {" +a +l +a +"} diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_ore_vent.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_ore_vent.dmm new file mode 100644 index 000000000000..6379b7f084ba --- /dev/null +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_ore_vent.dmm @@ -0,0 +1,27 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/template_noop, +/area/template_noop) +"l" = ( +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"L" = ( +/obj/structure/ore_vent/random, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) + +(1,1,1) = {" +a +l +a +"} +(2,1,1) = {" +l +L +l +"} +(3,1,1) = {" +a +l +a +"} diff --git a/_maps/blueshift.json b/_maps/blueshift.json index 2a685910e3c0..89fc5993f3f1 100644 --- a/_maps/blueshift.json +++ b/_maps/blueshift.json @@ -3,6 +3,7 @@ "map_name": "Blueshift", "map_path": "map_files/Blueshift", "map_file": "Blueshift.dmm", + "space_ruin_levels": 2, "shuttles": { "cargo": "cargo_nova", "whiteship": "whiteship_blueshift", diff --git a/_maps/map_files/Blueshift/Blueshift.dmm b/_maps/map_files/Blueshift/Blueshift.dmm index df77cc074b12..9c931e4eae42 100644 --- a/_maps/map_files/Blueshift/Blueshift.dmm +++ b/_maps/map_files/Blueshift/Blueshift.dmm @@ -148,10 +148,6 @@ }, /turf/open/floor/iron, /area/station/commons/fitness/recreation) -"act" = ( -/obj/structure/disposalpipe/segment, -/turf/closed/wall/r_wall, -/area/station/cargo/quartermaster) "acx" = ( /obj/machinery/conveyor{ dir = 1; @@ -989,6 +985,16 @@ /obj/structure/cable, /turf/closed/wall/r_wall, /area/station/ai_monitored/turret_protected/ai) +"akd" = ( +/obj/structure/aquarium, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/open/floor/wood/parquet, +/area/station/cargo/quartermaster) "akf" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable, @@ -1127,12 +1133,6 @@ /obj/effect/turf_decal/tile/bar/opposingcorners, /turf/open/floor/iron, /area/station/command/captain_dining) -"alN" = ( -/obj/machinery/light/small/directional/north, -/obj/structure/disposalpipe/segment, -/obj/effect/landmark/start/quartermaster, -/turf/open/floor/carpet, -/area/station/cargo/quartermaster) "alQ" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, @@ -1389,14 +1389,6 @@ /obj/machinery/atmospherics/pipe/bridge_pipe/yellow/visible, /turf/open/space/basic, /area/space/nearstation) -"aoq" = ( -/obj/structure/chair/office{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/start/gary, -/turf/open/floor/iron, -/area/station/maintenance/thruster_room/central) "aor" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -1974,13 +1966,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/security/prison/upper) -"auf" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/wood/parquet, -/area/station/cargo/quartermaster) "auv" = ( /obj/effect/turf_decal/bot_white/left, /obj/effect/spawner/random/structure/crate, @@ -2676,15 +2661,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) -"aBw" = ( -/obj/structure/chair/office{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/landmark/start/assistant, -/obj/effect/landmark/start/gary/uncommon, -/turf/open/floor/wood/parquet, -/area/station/common/arcade) "aBz" = ( /obj/item/storage/secure/safe/directional/east, /turf/open/floor/carpet/green, @@ -2771,6 +2747,15 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/service/chapel/office) +"aCe" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable, +/obj/effect/landmark/start/gary/uncommon, +/turf/open/floor/stone, +/area/station/service/forge) "aCf" = ( /obj/machinery/status_display/evac/directional/east, /obj/structure/chair/stool/directional/north, @@ -4434,12 +4419,6 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos/pumproom) -"aTf" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/drone_dispenser/preloaded, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron, -/area/station/science/research/abandoned) "aTg" = ( /obj/structure/bodycontainer/morgue, /obj/effect/turf_decal/bot_white, @@ -4853,6 +4832,11 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/white, /area/station/medical/surgery) +"aXz" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/gary, +/turf/open/floor/grass, +/area/station/service/hydroponics/garden/abandoned) "aXB" = ( /obj/structure/lattice, /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ @@ -5931,23 +5915,6 @@ }, /turf/open/floor/iron/white, /area/station/science/xenobiology/control) -"biD" = ( -/obj/structure/table/wood, -/obj/item/coin/gold{ - desc = "A limited edition coin printed with a FTU cargo hauler on the tail's side and the FTU logo on the head's side.. only 500 of these were ever made as a celebration to the passing of lessened trade regulations in the frontier sector."; - name = "FTU special edition collector's coin" - }, -/obj/item/toy/figure/clown{ - desc = "Aside from the engraving on the back of this figurine it's identical to any old NT departmental action figure, yet these sell for eye watering prices on the open market."; - name = "Comedycon edition clown action figure" - }, -/obj/item/reagent_containers/cup/glass/bottle/wine{ - desc = "A vintage wine bottle that appears to be produced on terra around the early 20th century.. the label is written in an ancient human language that sounds indecipherable.. le.. chateau.. what now?"; - name = "Vintage Terran red wine bottle" - }, -/obj/item/clothing/head/collectable/petehat, -/turf/open/floor/wood/parquet, -/area/station/cargo/quartermaster) "biE" = ( /obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/north, @@ -6384,6 +6351,13 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/maintenance/disposal/incinerator) +"bmS" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/effect/landmark/start/gary, +/turf/open/floor/carpet, +/area/station/service/theater/abandoned) "bmT" = ( /obj/machinery/photocopier, /obj/effect/turf_decal/bot, @@ -7483,6 +7457,12 @@ }, /turf/open/floor/iron/dark, /area/station/security/prison/upper) +"bwW" = ( +/obj/structure/flora/bush/jungle/b/style_2, +/obj/structure/flora/bush/flowers_pp, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/grass, +/area/station/hallway/primary/upper) "bwY" = ( /obj/machinery/bluespace_vendor/directional/east, /turf/open/floor/iron/dark/side{ @@ -7798,22 +7778,6 @@ /obj/effect/spawner/structure/window, /turf/open/floor/plating, /area/station/hallway/primary/port) -"bzO" = ( -/obj/machinery/door/airlock/corporate{ - id_tag = "BSdoor"; - name = "Blueshield's Office" - }, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/access/all/command/captain, -/obj/effect/landmark/navigate_destination, -/turf/open/floor/wood, -/area/station/command/heads_quarters/blueshield) "bzQ" = ( /obj/machinery/disposal/bin, /obj/effect/turf_decal/delivery, @@ -8133,10 +8097,6 @@ }, /turf/open/floor/grass, /area/station/security/prison/garden) -"bCR" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/carpet, -/area/station/cargo/quartermaster) "bCW" = ( /obj/structure/chair/office, /obj/effect/turf_decal/vg_decals/numbers/four, @@ -8715,16 +8675,6 @@ /obj/machinery/light/directional/east, /turf/open/floor/wood, /area/station/command/captain_dining) -"bJM" = ( -/obj/structure/aquarium, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/wood/parquet, -/area/station/cargo/quartermaster) "bJS" = ( /obj/structure/table/reinforced, /obj/effect/turf_decal/bot, @@ -9194,25 +9144,6 @@ /obj/machinery/atmospherics/pipe/smart/simple/yellow/visible, /turf/open/floor/plating, /area/station/science/ordnance/freezerchamber) -"bNE" = ( -/obj/item/trash/syndi_cakes, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/broken_floor, -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor/shutters{ - id = "Starboardbowmaints"; - name = "Starboard Bow Maintenance" - }, -/obj/machinery/button/door/directional/north{ - id = "Starboardbowmaints"; - name = "Shutter control"; - pixel_x = 24; - pixel_y = 0 - }, -/turf/open/floor/plating, -/area/station/maintenance/fore/upper) "bNL" = ( /obj/structure/table/reinforced, /obj/item/aicard, @@ -9273,13 +9204,6 @@ dir = 4 }, /area/station/common/locker_room_shower) -"bOo" = ( -/obj/structure/chair{ - dir = 4 - }, -/obj/effect/landmark/start/gary, -/turf/open/floor/carpet, -/area/station/service/theater/abandoned) "bOu" = ( /obj/structure/railing{ dir = 4 @@ -9488,15 +9412,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central) -"bPR" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/obj/effect/landmark/start/gary, -/turf/open/floor/iron, -/area/station/maintenance/starboard/fore) "bPS" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -10429,11 +10344,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) -"bZx" = ( -/obj/structure/bed, -/obj/item/bedsheet/qm, -/turf/open/floor/carpet, -/area/station/cargo/quartermaster) "bZC" = ( /obj/structure/table, /obj/machinery/reagentgrinder{ @@ -10937,28 +10847,6 @@ dir = 4 }, /area/station/engineering/gravity_generator) -"cen" = ( -/obj/structure/table/wood, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/item/folder/yellow, -/obj/item/stamp/head/qm, -/obj/item/reagent_containers/cup/glass/drinkingglass/shotglass{ - pixel_x = 6; - pixel_y = 16 - }, -/obj/item/reagent_containers/cup/glass/drinkingglass/shotglass{ - pixel_x = -4; - pixel_y = 16 - }, -/obj/item/hand_labeler_refill{ - pixel_x = -8; - pixel_y = -8 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/wood/parquet, -/area/station/cargo/quartermaster) "cev" = ( /obj/structure/chair/sofa/bench/left{ dir = 4; @@ -11043,6 +10931,18 @@ "ceX" = ( /turf/open/floor/iron/dark, /area/station/hallway/primary/central) +"cfa" = ( +/obj/item/storage/backpack/blueshield, +/obj/item/storage/backpack/duffelbag/blueshield, +/obj/item/storage/backpack/satchel/blueshield, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/obj/item/clothing/neck/mantle/bsmantle, +/obj/machinery/duct, +/obj/structure/closet/secure_closet/blueshield, +/turf/open/floor/carpet/executive, +/area/station/command/heads_quarters/blueshield) "cfb" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 @@ -11128,14 +11028,6 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/wood, /area/station/service/hydroponics/garden/abandoned) -"cfZ" = ( -/obj/item/kirbyplants/random, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/airalarm/directional/south, -/turf/open/floor/wood/parquet, -/area/station/cargo/quartermaster) "cgc" = ( /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/hidden{ dir = 6 @@ -11763,16 +11655,6 @@ }, /turf/open/floor/engine, /area/station/engineering/supermatter/room) -"cmE" = ( -/obj/machinery/light/directional/south, -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/machinery/duct, -/obj/effect/landmark/start/gary/rare, -/turf/open/floor/iron/cafeteria, -/area/station/commons/toilet/auxiliary) "cmG" = ( /obj/effect/turf_decal/bot_white, /turf/open/floor/iron/dark/smooth_large/airless, @@ -11845,13 +11727,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/aft/upper) -"cns" = ( -/obj/structure/cable, -/obj/structure/chair/stool/bar, -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/start/gary, -/turf/open/floor/carpet/green, -/area/station/service/abandoned_gambling_den) "cnv" = ( /obj/effect/turf_decal/trimline/red/filled/warning{ dir = 1 @@ -13026,6 +12901,16 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/security/prison/workout) +"cxO" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/landmark/start/gary/rare, +/turf/open/floor/carpet, +/area/station/service/library/printer) "cxW" = ( /obj/structure/window/reinforced/spawner/directional/south, /obj/structure/rack, @@ -13515,6 +13400,10 @@ dir = 1 }, /area/station/ai_monitored/security/armory) +"cBG" = ( +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/aft/upper) "cBJ" = ( /obj/structure/railing{ dir = 1 @@ -13730,6 +13619,15 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/grimy, /area/station/security/detectives_office/private_investigators_office) +"cDG" = ( +/obj/effect/turf_decal/siding/brown{ + dir = 1 + }, +/obj/machinery/computer/cargo{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/cargo/quartermaster) "cDI" = ( /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ dir = 5 @@ -14157,12 +14055,6 @@ /obj/structure/cable, /turf/open/floor/wood, /area/station/command/heads_quarters/hop) -"cGG" = ( -/obj/structure/flora/bush/jungle/a/style_2, -/obj/structure/flora/bush/flowers_yw/style_2, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/grass, -/area/station/hallway/primary/upper) "cGH" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -14576,15 +14468,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark/textured_large, /area/station/security/office) -"cJQ" = ( -/obj/effect/turf_decal/siding/brown{ - dir = 1 - }, -/obj/machinery/computer/piratepad_control{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/cargo/quartermaster) "cJU" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -15430,10 +15313,6 @@ /obj/effect/mapping_helpers/airlock/locked, /turf/open/floor/engine, /area/station/science/ordnance/burnchamber) -"cSH" = ( -/obj/structure/chair/office, -/turf/open/floor/carpet/executive, -/area/station/command/heads_quarters/blueshield) "cSI" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -16110,6 +15989,15 @@ /obj/effect/spawner/random/trash/garbage, /turf/open/floor/plating, /area/station/maintenance/port/fore) +"cZI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment, +/obj/effect/landmark/start/gary, +/turf/open/floor/iron, +/area/station/maintenance/starboard/fore) "cZL" = ( /obj/effect/turf_decal/delivery, /obj/machinery/door/window/brigdoor/left/directional/east{ @@ -16595,11 +16483,6 @@ /obj/effect/spawner/random/trash/mess, /turf/open/floor/plating, /area/station/maintenance/law) -"dfo" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/start/gary, -/turf/open/floor/grass, -/area/station/service/hydroponics/garden/abandoned) "dfr" = ( /obj/structure/sink/directional/east, /obj/machinery/camera/directional/west{ @@ -17666,12 +17549,6 @@ /obj/machinery/door/airlock/maintenance, /turf/open/floor/plating, /area/station/maintenance/aft/upper) -"dqh" = ( -/obj/structure/flora/bush/jungle/b/style_2, -/obj/structure/flora/bush/flowers_pp/style_3, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/grass, -/area/station/hallway/primary/upper) "dqk" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 @@ -18192,6 +18069,21 @@ "dvB" = ( /turf/closed/wall/r_wall, /area/station/engineering/storage/tech) +"dvI" = ( +/obj/effect/turf_decal/siding/brown{ + dir = 1 + }, +/obj/machinery/computer/security/qm{ + dir = 1 + }, +/obj/machinery/requests_console/directional/south{ + department = "Quartermaster's Office"; + name = "Quartermaster's Requests Console" + }, +/obj/effect/mapping_helpers/requests_console/announcement, +/obj/effect/mapping_helpers/requests_console/supplies, +/turf/open/floor/iron/dark, +/area/station/cargo/quartermaster) "dvL" = ( /obj/structure/table/wood, /obj/structure/showcase/machinery/microwave{ @@ -18486,6 +18378,16 @@ /obj/structure/liquid_barrier, /turf/open/floor/iron/white, /area/station/science/xenobiology/control) +"dzr" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/duct, +/obj/structure/cable, +/obj/effect/landmark/start/gary, +/turf/open/floor/wood, +/area/station/commons/dorms/vacantroom) "dzs" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -18582,24 +18484,6 @@ /obj/machinery/suit_storage_unit/standard_unit, /turf/open/floor/iron/dark, /area/station/ai_monitored/command/storage/eva/upper) -"dAw" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/firedoor, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/door/poddoor/shutters{ - id = "Portbowmaints"; - name = "Port Bow Maintenance" - }, -/obj/machinery/button/door/directional/north{ - id = "Portbowmaints"; - name = "Shutter control"; - pixel_x = 24; - pixel_y = 0 - }, -/turf/open/floor/iron/stairs/right, -/area/station/maintenance/port/upper) "dAB" = ( /obj/structure/closet/crate/bin, /turf/open/floor/iron, @@ -19728,6 +19612,12 @@ /obj/effect/decal/cleanable/dirt, /turf/closed/wall, /area/station/medical/power_station) +"dKI" = ( +/obj/structure/flora/bush/jungle/b/style_2, +/obj/structure/flora/bush/flowers_pp/style_3, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/grass, +/area/station/hallway/primary/upper) "dKK" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/public/glass{ @@ -20017,20 +19907,11 @@ }, /turf/open/floor/plating, /area/station/maintenance/department/engineering/engine_aft_port) -"dNr" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable, -/turf/open/floor/wood/parquet, -/area/station/cargo/quartermaster) -"dNx" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/landmark/start/gary/rare, -/turf/open/floor/iron/white, -/area/station/medical/aslyum) +"dNs" = ( +/obj/machinery/duct, +/obj/effect/landmark/start/blueshield, +/turf/open/floor/carpet/executive, +/area/station/command/heads_quarters/blueshield) "dNC" = ( /obj/effect/spawner/random/vending/colavend, /obj/effect/turf_decal/siding/thinplating_new{ @@ -21079,6 +20960,10 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/port/aft) +"dYV" = ( +/obj/structure/disposalpipe/segment, +/turf/closed/wall/r_wall, +/area/station/cargo/quartermaster) "dZa" = ( /obj/effect/turf_decal/delivery, /obj/effect/turf_decal/stripes{ @@ -21821,12 +21706,6 @@ /obj/machinery/duct, /turf/open/floor/iron/dark, /area/station/common/night_club) -"ehv" = ( -/obj/structure/chair/office{ - dir = 8 - }, -/turf/open/floor/wood/parquet, -/area/station/cargo/quartermaster) "ehw" = ( /obj/machinery/power/apc/auto_name/directional/west, /obj/structure/cable, @@ -22986,6 +22865,24 @@ dir = 8 }, /area/station/security/brig) +"eul" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/door/firedoor, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/poddoor/shutters{ + id = "Portbowmaints"; + name = "Port Bow Maintenance" + }, +/obj/machinery/button/door/directional/north{ + id = "Portbowmaints"; + name = "Shutter control"; + pixel_x = 24; + pixel_y = 0 + }, +/turf/open/floor/iron/stairs/right, +/area/station/maintenance/port/upper) "eum" = ( /obj/structure/cable, /obj/effect/landmark/event_spawn, @@ -24155,6 +24052,22 @@ dir = 4 }, /area/station/command/secure_bunker) +"eDY" = ( +/obj/machinery/door/airlock/corporate{ + id_tag = "BSdoor"; + name = "Blueshield's Office" + }, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/landmark/navigate_destination, +/obj/effect/mapping_helpers/airlock/access/all/admin/general, +/turf/open/floor/wood, +/area/station/command/heads_quarters/blueshield) "eDZ" = ( /obj/effect/turf_decal/stripes/end{ dir = 1 @@ -25417,12 +25330,6 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/plating, /area/station/maintenance/port/upper) -"ePR" = ( -/obj/structure/flora/bush/jungle/a/style_2, -/obj/structure/flora/bush/flowers_yw/style_3, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/grass, -/area/station/hallway/primary/upper) "ePU" = ( /obj/structure/table/reinforced, /obj/machinery/recharger{ @@ -25708,6 +25615,10 @@ /obj/machinery/newscaster/directional/east, /turf/open/floor/iron/dark/corner, /area/station/hallway/primary/central) +"eSI" = ( +/obj/machinery/suit_storage_unit/industrial/loader, +/turf/open/floor/plating, +/area/station/cargo/storage) "eSN" = ( /turf/closed/wall, /area/station/service/bar/backroom) @@ -26013,10 +25924,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/aisat_interior) -"eVJ" = ( -/obj/effect/landmark/start/gary, -/turf/open/floor/plating, -/area/station/maintenance/aft/upper) "eVK" = ( /obj/structure/table, /obj/item/folder/blue{ @@ -26838,6 +26745,11 @@ /obj/effect/mapping_helpers/airlock/access/all/medical/surgery, /turf/open/floor/iron/white, /area/station/medical/coldroom) +"fdB" = ( +/obj/structure/bed, +/obj/item/bedsheet/qm, +/turf/open/floor/carpet, +/area/station/cargo/quartermaster) "fdD" = ( /obj/structure/window/reinforced/spawner/directional/east, /obj/effect/turf_decal/trimline/blue/line{ @@ -27398,6 +27310,12 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/white, /area/station/medical/medbay/central) +"fiG" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/cargo/quartermaster) "fiI" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron, @@ -27938,9 +27856,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/engineering/transit_tube) -"fpe" = ( -/turf/open/floor/wood/parquet, -/area/station/cargo/quartermaster) "fpl" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, @@ -28331,12 +28246,6 @@ }, /turf/open/floor/iron/dark, /area/station/security/prison/upper) -"fsX" = ( -/obj/structure/flora/bush/jungle/c/style_3, -/obj/structure/flora/bush/flowers_yw/style_3, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/grass, -/area/station/hallway/primary/upper) "fsY" = ( /obj/effect/spawner/random/trash/cigbutt, /obj/effect/decal/cleanable/dirt, @@ -28540,15 +28449,6 @@ /obj/structure/sign/warning/radiation/directional/east, /turf/open/floor/iron/dark, /area/station/engineering/gravity_generator) -"fvd" = ( -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/wood/parquet, -/area/station/cargo/quartermaster) "fvp" = ( /obj/structure/chair/office{ dir = 1 @@ -28831,10 +28731,6 @@ /obj/structure/closet/firecloset, /turf/open/floor/iron, /area/station/science/explab) -"fxQ" = ( -/obj/structure/decorative/shelf/alcohol_assortment, -/turf/open/floor/wood/parquet, -/area/station/cargo/quartermaster) "fxR" = ( /obj/effect/decal/cleanable/blood/old, /turf/open/floor/plating, @@ -29491,12 +29387,6 @@ /obj/effect/landmark/start/assistant, /turf/open/floor/iron, /area/station/common/wrestling/lobby) -"fGg" = ( -/obj/machinery/duct, -/obj/effect/spawner/random/trash/mess, -/obj/effect/landmark/start/gary, -/turf/open/floor/carpet, -/area/station/commons/dorms/vacantroom) "fGm" = ( /obj/effect/turf_decal/tile/neutral{ dir = 4 @@ -32132,6 +32022,19 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/security/execution/education) +"gia" = ( +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/siding/wood, +/obj/machinery/door/airlock/mining{ + name = "Deliveries" + }, +/obj/effect/mapping_helpers/airlock/access/all/supply/qm, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/wood/parquet, +/area/station/cargo/quartermaster) "gib" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -32189,6 +32092,13 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/white/side, /area/station/science) +"giW" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/iron/stairs/old, +/area/station/cargo/office) "gjd" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable, @@ -32871,6 +32781,11 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/aft/upper) +"gpf" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/wood/parquet, +/area/station/cargo/quartermaster) "gpn" = ( /obj/machinery/disposal/delivery_chute{ dir = 8 @@ -33344,6 +33259,10 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating/airless, /area/station/maintenance/fore/upper) +"gtW" = ( +/obj/effect/landmark/start/gary/uncommon, +/turf/open/floor/iron, +/area/station/commons/vacant_room/commissary) "gtZ" = ( /obj/effect/turf_decal/caution/stand_clear, /obj/structure/cable, @@ -33570,6 +33489,15 @@ "gwf" = ( /turf/open/floor/plating, /area/station/hallway/secondary/construction) +"gwg" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/wood/parquet, +/area/station/cargo/quartermaster) "gwh" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/trash/moisture_trap, @@ -34210,6 +34138,12 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/primary/starboard) +"gBx" = ( +/obj/structure/flora/bush/jungle, +/obj/structure/flora/bush/flowers_yw/style_3, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/grass, +/area/station/hallway/primary/upper) "gBz" = ( /obj/effect/spawner/random/trash/bacteria, /obj/effect/decal/cleanable/dirt, @@ -34557,6 +34491,16 @@ /obj/item/toy/figure/cmo, /turf/open/floor/carpet/blue, /area/station/command/heads_quarters/cmo) +"gFQ" = ( +/obj/machinery/light/directional/south, +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/obj/machinery/duct, +/obj/effect/landmark/start/gary/rare, +/turf/open/floor/iron/cafeteria, +/area/station/commons/toilet/auxiliary) "gFS" = ( /obj/machinery/door/poddoor/shutters{ id = "evashutters4"; @@ -34600,6 +34544,15 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) +"gGm" = ( +/obj/effect/turf_decal/siding/wood, +/obj/machinery/door/airlock/mining{ + name = "Deliveries" + }, +/obj/effect/mapping_helpers/airlock/access/all/supply/qm, +/obj/structure/disposalpipe/segment, +/turf/open/floor/carpet, +/area/station/cargo/quartermaster) "gGo" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark/side{ @@ -35226,6 +35179,11 @@ /obj/machinery/duct, /turf/open/floor/iron, /area/station/commons/locker) +"gNs" = ( +/obj/structure/chair/office, +/obj/effect/landmark/start/blueshield, +/turf/open/floor/carpet/executive, +/area/station/command/heads_quarters/blueshield) "gNv" = ( /obj/machinery/smartfridge, /turf/open/floor/iron/dark, @@ -36840,27 +36798,6 @@ /obj/structure/sign/warning/vacuum/external/directional/east, /turf/open/floor/plating, /area/station/maintenance/fore/upper) -"heD" = ( -/obj/structure/table/wood, -/obj/effect/turf_decal/siding/wood{ - dir = 5 - }, -/obj/item/reagent_containers/cup/glass/bottle/rum{ - pixel_x = -7; - pixel_y = 10 - }, -/obj/item/storage/fancy/cigarettes/cigars/cohiba, -/obj/item/storage/fancy/cigarettes/cigars/havana{ - pixel_y = 4 - }, -/obj/item/clothing/mask/cigarette/rollie/cannabis{ - pixel_x = 8; - pixel_y = 15 - }, -/obj/item/lighter, -/obj/structure/disposalpipe/segment, -/turf/open/floor/wood/parquet, -/area/station/cargo/quartermaster) "heN" = ( /obj/effect/turf_decal/siding/thinplating/dark{ dir = 1 @@ -37080,6 +37017,13 @@ }, /turf/open/floor/iron/dark, /area/station/security/prison/mess) +"hgI" = ( +/obj/structure/bed/dogbed, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/wood/parquet, +/area/station/cargo/quartermaster) "hgL" = ( /obj/structure/toilet{ dir = 1 @@ -38007,6 +37951,15 @@ /obj/effect/turf_decal/tile/green/opposingcorners, /turf/open/floor/iron/white, /area/station/medical/virology) +"hpv" = ( +/obj/effect/turf_decal/siding/brown{ + dir = 1 + }, +/obj/machinery/computer/piratepad_control{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/cargo/quartermaster) "hpF" = ( /obj/effect/turf_decal/tile/dark_blue/half/contrasted, /obj/machinery/power/apc/auto_name/directional/south, @@ -38294,6 +38247,14 @@ dir = 5 }, /area/station/security/prison) +"htj" = ( +/obj/item/kirbyplants/random, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/airalarm/directional/south, +/turf/open/floor/wood/parquet, +/area/station/cargo/quartermaster) "htq" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -38573,6 +38534,12 @@ /obj/structure/window/spawner/directional/south, /turf/open/floor/plating, /area/station/maintenance/department/security/greater) +"hwe" = ( +/obj/structure/flora/bush/jungle/a/style_2, +/obj/structure/flora/bush/flowers_yw/style_2, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/grass, +/area/station/hallway/primary/upper) "hwi" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -38899,12 +38866,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/hallway/secondary/service) -"hAk" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/turf/open/floor/wood/parquet, -/area/station/cargo/quartermaster) "hAn" = ( /obj/structure/closet/crate{ name = "Stations and Syndicate Starter Bundle" @@ -39581,10 +39542,6 @@ "hGf" = ( /turf/closed/wall/r_wall, /area/station/security/brig) -"hGg" = ( -/obj/machinery/suit_storage_unit/industrial/loader, -/turf/open/floor/plating, -/area/station/cargo/storage) "hGi" = ( /obj/machinery/computer/mecha, /obj/effect/turf_decal/tile/purple, @@ -39677,11 +39634,6 @@ /obj/effect/landmark/start/hangover, /turf/open/floor/iron, /area/station/hallway/primary/upper) -"hHm" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood/parquet, -/area/station/cargo/quartermaster) "hHn" = ( /obj/structure/window/reinforced/spawner/directional/south, /obj/structure/chair{ @@ -40967,6 +40919,10 @@ "hTp" = ( /turf/closed/wall, /area/station/command/heads_quarters/captain) +"hTx" = ( +/obj/structure/dresser, +/turf/open/floor/carpet, +/area/station/cargo/quartermaster) "hTD" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -41056,6 +41012,19 @@ }, /turf/open/floor/iron/dark, /area/station/security/courtroom) +"hUu" = ( +/obj/structure/table/wood, +/obj/structure/closet/crate/cardboard{ + pixel_y = 5 + }, +/obj/item/clothing/shoes/jackboots/timbs, +/obj/item/clothing/suit/brownfurrich/public, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/wood/parquet, +/area/station/cargo/quartermaster) "hUw" = ( /obj/structure/cable, /obj/effect/turf_decal/stripes/line{ @@ -41206,12 +41175,6 @@ }, /turf/open/floor/glass/reinforced/airless, /area/space/nearstation) -"hWd" = ( -/obj/structure/flora/bush/jungle/b/style_2, -/obj/structure/flora/bush/flowers_pp, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/grass, -/area/station/hallway/primary/upper) "hWj" = ( /turf/open/floor/plating, /area/station/security/prison/mess) @@ -42028,6 +41991,25 @@ }, /turf/open/floor/iron/dark, /area/station/security/brig) +"ier" = ( +/obj/machinery/button/door/directional/west{ + id = "QMdoor"; + name = "Door lock"; + normaldoorcontrol = 1; + pixel_x = -32; + pixel_y = -6; + req_access = list("qm"); + specialfunctions = 4 + }, +/obj/machinery/button/door{ + id = "qmprivacy"; + name = "Privacy Control"; + pixel_x = -32; + pixel_y = 7; + req_access = list("qm") + }, +/turf/open/floor/wood/parquet, +/area/station/cargo/quartermaster) "ies" = ( /obj/effect/turf_decal/siding/wood{ dir = 9 @@ -42438,25 +42420,6 @@ dir = 4 }, /area/station/command/secure_bunker) -"iiy" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/mess, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/firedoor, -/obj/machinery/button/door/directional/north{ - id = "Starboardbowmaints"; - name = "Shutter control"; - pixel_x = 24; - pixel_y = 0 - }, -/obj/machinery/door/poddoor/shutters{ - id = "Starboardbowmaints"; - name = "Starboard Bow Maintenance" - }, -/turf/open/floor/plating, -/area/station/maintenance/fore/upper) "iiC" = ( /obj/structure/cable, /obj/machinery/door/airlock/maintenance{ @@ -42696,20 +42659,6 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/service) -"ikF" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 10 - }, -/obj/structure/chair/office{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/effect/landmark/generic_maintenance_landmark, -/obj/structure/cable, -/obj/effect/landmark/start/gary, -/turf/open/floor/carpet, -/area/station/maintenance/abandon_psych) "ikG" = ( /obj/effect/decal/cleanable/oil, /turf/open/floor/iron/dark, @@ -44101,25 +44050,20 @@ /obj/structure/railing, /turf/open/floor/iron/dark/side, /area/station/ai_monitored/command/storage/eva) +"izG" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/start/gary, +/turf/open/floor/wood, +/area/station/service/electronic_marketing_den) "izM" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 }, /turf/open/floor/wood/parquet, /area/station/command/heads_quarters/cmo) -"izO" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/effect/turf_decal/siding/wood/corner, -/obj/machinery/door/airlock/corporate{ - name = "Blueshield's Quarters" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/access/all/command/captain, -/turf/open/floor/wood, -/area/station/command/heads_quarters/blueshield) "izS" = ( /obj/machinery/light/small/directional/west, /obj/structure/table/reinforced, @@ -45271,6 +45215,12 @@ "iMc" = ( /turf/closed/wall/r_wall, /area/station/common/pool) +"iMf" = ( +/obj/structure/flora/bush/jungle/c/style_3, +/obj/structure/flora/bush/flowers_br, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/grass, +/area/station/hallway/primary/upper) "iMj" = ( /obj/structure/closet, /obj/effect/turf_decal/delivery, @@ -45608,6 +45558,23 @@ }, /turf/open/floor/plating, /area/station/security/interrogation) +"iQW" = ( +/obj/structure/table/wood, +/obj/item/coin/gold{ + desc = "A limited edition coin printed with a FTU cargo hauler on the tail's side and the FTU logo on the head's side.. only 500 of these were ever made as a celebration to the passing of lessened trade regulations in the frontier sector."; + name = "FTU special edition collector's coin" + }, +/obj/item/toy/figure/clown{ + desc = "Aside from the engraving on the back of this figurine it's identical to any old NT departmental action figure, yet these sell for eye watering prices on the open market."; + name = "Comedycon edition clown action figure" + }, +/obj/item/reagent_containers/cup/glass/bottle/wine{ + desc = "A vintage wine bottle that appears to be produced on terra around the early 20th century.. the label is written in an ancient human language that sounds indecipherable.. le.. chateau.. what now?"; + name = "Vintage Terran red wine bottle" + }, +/obj/item/clothing/head/collectable/petehat, +/turf/open/floor/wood/parquet, +/area/station/cargo/quartermaster) "iQX" = ( /obj/structure/table/reinforced, /obj/effect/turf_decal/bot, @@ -45793,6 +45760,9 @@ "iTN" = ( /turf/open/floor/carpet/green, /area/station/service/abandoned_gambling_den) +"iTO" = ( +/turf/closed/wall, +/area/station/cargo/quartermaster) "iTP" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/curtain/cloth/fancy/mechanical{ @@ -46124,6 +46094,12 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/carpet/blue, /area/station/command/captain_dining) +"iWF" = ( +/obj/structure/flora/bush/jungle/c/style_3, +/obj/structure/flora/bush/flowers_yw/style_3, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/grass, +/area/station/hallway/primary/upper) "iWJ" = ( /obj/structure/bed, /obj/item/bedsheet/medical, @@ -46502,6 +46478,15 @@ /obj/structure/lattice/catwalk, /turf/open/openspace, /area/station/maintenance/department/medical/central) +"iZA" = ( +/obj/structure/chair/office{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/start/assistant, +/obj/effect/landmark/start/gary/uncommon, +/turf/open/floor/wood/parquet, +/area/station/common/arcade) "iZC" = ( /obj/structure/table/wood, /obj/structure/window/reinforced/spawner/directional/west, @@ -47155,14 +47140,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/department/engineering/engine_aft_port) -"jhc" = ( -/obj/structure/chair/wood/wings{ - dir = 8 - }, -/obj/effect/landmark/start/librarian, -/obj/effect/landmark/start/gary/rare, -/turf/open/floor/carpet, -/area/station/service/library/lounge) "jhe" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 1 @@ -47458,6 +47435,10 @@ dir = 8 }, /area/station/commons/fitness) +"jjN" = ( +/obj/effect/landmark/start/gary, +/turf/open/floor/iron, +/area/station/hallway/secondary/construction) "jjP" = ( /obj/effect/spawner/random/structure/crate, /turf/open/floor/plating, @@ -48624,12 +48605,6 @@ /obj/effect/turf_decal/siding/thinplating/dark, /turf/open/floor/circuit, /area/station/ai_monitored/turret_protected/ai) -"jvl" = ( -/obj/structure/flora/bush/jungle/c/style_3, -/obj/structure/flora/bush/flowers_br, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/grass, -/area/station/hallway/primary/upper) "jvm" = ( /obj/effect/turf_decal/siding/wood{ dir = 5 @@ -48890,6 +48865,12 @@ }, /turf/open/floor/carpet/blue, /area/station/command/heads_quarters/captain/private) +"jxK" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk, +/obj/structure/sign/calendar/directional/north, +/turf/open/floor/wood/parquet, +/area/station/cargo/quartermaster) "jxM" = ( /obj/machinery/disposal/bin, /obj/effect/turf_decal/delivery, @@ -49071,6 +49052,23 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, /area/station/service/library/private) +"jzZ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/firedoor, +/obj/machinery/button/door/directional/north{ + id = "Portbowmaints"; + name = "Shutter control"; + pixel_x = -24; + pixel_y = 0 + }, +/obj/machinery/door/poddoor/shutters{ + id = "Portbowmaints"; + name = "Port Bow Maintenance" + }, +/turf/open/floor/iron/stairs/left{ + dir = 1 + }, +/area/station/maintenance/port/upper) "jAa" = ( /obj/machinery/vending/coffee, /obj/effect/turf_decal/bot, @@ -49418,12 +49416,6 @@ /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible, /turf/open/floor/iron, /area/station/engineering/atmos) -"jDl" = ( -/obj/structure/flora/bush/jungle/b, -/obj/structure/flora/bush/flowers_yw, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/grass, -/area/station/hallway/primary/upper) "jDp" = ( /obj/machinery/atmospherics/pipe/layer_manifold/brown/visible, /obj/effect/spawner/structure/window/reinforced/plasma, @@ -50052,6 +50044,12 @@ /obj/effect/landmark/start/assistant, /turf/open/floor/iron/dark, /area/station/common/gaskiosk) +"jJh" = ( +/obj/structure/flora/bush/jungle/c/style_3, +/obj/structure/flora/bush/flowers_pp/style_3, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/grass, +/area/station/hallway/primary/upper) "jJi" = ( /obj/structure/railing, /obj/effect/turf_decal/stripes, @@ -51249,10 +51247,6 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/disposal) -"jUq" = ( -/obj/effect/landmark/start/quartermaster, -/turf/open/floor/wood/parquet, -/area/station/cargo/quartermaster) "jUt" = ( /obj/structure/table/wood/poker, /obj/effect/spawner/random/entertainment/gambling, @@ -51470,14 +51464,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/port) -"jVS" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/landmark/start/gary, -/turf/open/floor/wood, -/area/station/service/electronic_marketing_den) "jVT" = ( /obj/effect/mapping_helpers/broken_floor, /obj/machinery/power/smes/engineering, @@ -51920,6 +51906,27 @@ dir = 4 }, /area/station/hallway/primary/port) +"jZU" = ( +/obj/structure/table/wood, +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/obj/item/reagent_containers/cup/glass/bottle/rum{ + pixel_x = -7; + pixel_y = 10 + }, +/obj/item/storage/fancy/cigarettes/cigars/cohiba, +/obj/item/storage/fancy/cigarettes/cigars/havana{ + pixel_y = 4 + }, +/obj/item/clothing/mask/cigarette/rollie/cannabis{ + pixel_x = 8; + pixel_y = 15 + }, +/obj/item/lighter, +/obj/structure/disposalpipe/segment, +/turf/open/floor/wood/parquet, +/area/station/cargo/quartermaster) "jZZ" = ( /obj/structure/window/spawner/directional/north, /obj/effect/decal/cleanable/dirt, @@ -52105,6 +52112,13 @@ /obj/structure/cable, /turf/open/floor/wood, /area/station/common/pool/sauna) +"kcU" = ( +/obj/structure/cable, +/obj/structure/chair/stool/bar, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/gary, +/turf/open/floor/carpet/green, +/area/station/service/abandoned_gambling_den) "kcZ" = ( /obj/effect/turf_decal/bot, /obj/structure/liquid_pump, @@ -53297,6 +53311,12 @@ }, /turf/open/floor/iron/dark, /area/station/security/prison/workout) +"knr" = ( +/obj/structure/flora/bush/jungle/a, +/obj/structure/flora/bush/flowers_br/style_3, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/grass, +/area/station/hallway/primary/upper) "knt" = ( /obj/structure/chair/pew/right{ dir = 8 @@ -53362,6 +53382,44 @@ }, /turf/open/floor/iron/dark/side, /area/station/security/prison/upper) +"knG" = ( +/obj/structure/table/wood, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/item/paper_bin{ + pixel_x = -12; + pixel_y = 3 + }, +/obj/item/pen/fourcolor{ + pixel_x = -12; + pixel_y = 5 + }, +/obj/item/hand_labeler{ + pixel_y = 17 + }, +/obj/item/computer_disk/quartermaster{ + pixel_x = 6; + pixel_y = 5 + }, +/obj/item/computer_disk/quartermaster{ + pixel_x = 6; + pixel_y = 5 + }, +/obj/item/computer_disk/quartermaster{ + pixel_x = 6; + pixel_y = 5 + }, +/obj/item/flashlight/lamp/green{ + pixel_y = 1 + }, +/obj/structure/disposalpipe/segment, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/wood/parquet, +/area/station/cargo/quartermaster) "knM" = ( /obj/effect/turf_decal/tile/neutral, /obj/structure/extinguisher_cabinet/directional/east, @@ -53494,19 +53552,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, /area/station/science/xenobiology) -"kpQ" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/machinery/door/airlock/highsecurity{ - name = "Blueshield's Equipment Room" - }, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/access/all/command/captain, -/turf/open/floor/wood, -/area/station/command/heads_quarters/blueshield) "kpS" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/curtain/cloth/fancy/mechanical{ @@ -55133,6 +55178,12 @@ dir = 8 }, /area/station/science) +"kER" = ( +/obj/structure/flora/bush/jungle/a/style_3, +/obj/structure/flora/bush/flowers_br/style_2, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/grass, +/area/station/hallway/primary/upper) "kFd" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/mining{ @@ -56518,6 +56569,13 @@ /obj/structure/closet/crate/freezer/blood, /turf/open/floor/iron/white, /area/station/medical/coldroom) +"kVe" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/wood/parquet, +/area/station/cargo/quartermaster) "kVx" = ( /obj/structure/sink/directional/east, /turf/open/floor/iron/kitchen{ @@ -56993,12 +57051,6 @@ }, /turf/open/floor/iron/dark/side, /area/station/security/prison) -"laH" = ( -/obj/structure/flora/bush/jungle/a/style_3, -/obj/structure/flora/bush/flowers_br/style_2, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/grass, -/area/station/hallway/primary/upper) "laI" = ( /obj/structure/cable, /turf/open/floor/iron/dark, @@ -57422,9 +57474,6 @@ dir = 4 }, /area/station/hallway/primary/port) -"lei" = ( -/turf/closed/wall/r_wall, -/area/station/hallway/primary/upper) "lej" = ( /obj/effect/turf_decal/trimline/purple/filled/line, /obj/machinery/status_display/ai/directional/south, @@ -57729,15 +57778,6 @@ dir = 8 }, /area/station/maintenance/solars/port/fore) -"lhn" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 4; - id = "qmprivacy"; - name = "Quartermaster's Privacy Shutters" - }, -/turf/open/floor/plating, -/area/station/cargo/quartermaster) "lhr" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 @@ -59695,6 +59735,10 @@ /obj/structure/curtain/bounty, /turf/open/floor/plating, /area/station/medical/virology/isolation) +"lBX" = ( +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/port/central) "lCe" = ( /obj/structure/window/reinforced/spawner/directional/west, /obj/structure/window/reinforced/spawner/directional/east, @@ -60101,12 +60145,6 @@ /obj/structure/extinguisher_cabinet/directional/south, /turf/open/floor/iron/kitchen, /area/station/service/kitchen/diner) -"lGg" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/start/gary, -/turf/open/floor/iron/cafeteria, -/area/station/maintenance/abandon_diner) "lGl" = ( /obj/effect/turf_decal/tile/neutral{ dir = 8 @@ -60656,10 +60694,6 @@ /obj/machinery/light/small/directional/north, /turf/open/floor/iron/dark, /area/station/engineering/atmos/pumproom) -"lLF" = ( -/obj/structure/cable, -/turf/open/floor/iron/solarpanel/airless, -/area/station/solars/starboard/aft) "lLJ" = ( /obj/effect/turf_decal/tile/neutral{ dir = 4 @@ -60989,13 +61023,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/cargo/office) -"lPh" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/wood/parquet, -/area/station/cargo/quartermaster) "lPl" = ( /obj/effect/spawner/random/trash/moisture_trap, /turf/open/floor/plating, @@ -61159,6 +61186,14 @@ /obj/effect/spawner/random/exotic/languagebook, /turf/open/floor/plating, /area/station/maintenance/department/science/lower) +"lRb" = ( +/obj/structure/chair/office{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/gary, +/turf/open/floor/iron, +/area/station/maintenance/thruster_room/central) "lRf" = ( /obj/structure/table, /obj/item/storage/photo_album, @@ -61567,13 +61602,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/upper) -"lVl" = ( -/obj/structure/closet/secure_closet/quartermaster, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/cargo/quartermaster) "lVm" = ( /obj/structure/window/reinforced/spawner/directional/east, /obj/structure/closet/crate/coffin, @@ -61768,6 +61796,18 @@ "lXw" = ( /turf/closed/wall, /area/station/command/heads_quarters/captain/private) +"lXx" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 4; + id = "qmprivacy"; + name = "Quartermaster's Privacy Shutters" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating, +/area/station/cargo/quartermaster) "lXy" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable, @@ -61885,10 +61925,6 @@ /obj/structure/sign/warning/radiation/directional/east, /turf/open/floor/iron/dark, /area/station/engineering/supermatter/room) -"lYB" = ( -/obj/effect/landmark/start/gary, -/turf/open/floor/plating, -/area/station/maintenance/port/central) "lYD" = ( /obj/effect/turf_decal/siding/wood{ dir = 8 @@ -62008,11 +62044,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/command/heads_quarters/hos) -"lZi" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/start/gary, -/turf/open/floor/plating, -/area/station/maintenance/aft/upper) "lZl" = ( /obj/item/kirbyplants/random, /turf/open/floor/iron, @@ -62180,6 +62211,10 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron/freezer, /area/station/maintenance/abandon_kitchen_upper) +"mba" = ( +/obj/structure/cable, +/turf/open/floor/iron/solarpanel/airless, +/area/station/solars/starboard/aft) "mbb" = ( /obj/machinery/light/floor/has_bulb, /obj/effect/turf_decal/bot_white, @@ -62465,6 +62500,13 @@ dir = 4 }, /area/station/hallway/secondary/entry) +"mdB" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/wood/parquet, +/area/station/cargo/quartermaster) "mdF" = ( /obj/machinery/power/supermatter_crystal/engine, /obj/effect/turf_decal/stripes/box, @@ -62586,14 +62628,6 @@ /obj/effect/turf_decal/bot_white/right, /turf/open/floor/iron/dark, /area/station/command/gateway) -"meH" = ( -/obj/structure/altar_of_gods, -/obj/structure/railing{ - dir = 4 - }, -/obj/item/book/bible, -/turf/open/floor/carpet, -/area/station/service/chapel) "meJ" = ( /obj/effect/turf_decal/stripes{ dir = 5 @@ -62701,13 +62735,6 @@ /obj/effect/mapping_helpers/airlock/unres, /turf/open/floor/plating, /area/station/maintenance/department/engineering/engine_aft_port) -"mgb" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/stairs/old, -/area/station/cargo/office) "mgi" = ( /obj/structure/chair/sofa/corp/corner{ dir = 8 @@ -63973,12 +64000,6 @@ dir = 1 }, /area/station/command/secure_bunker) -"muJ" = ( -/obj/structure/flora/bush/jungle/b/style_2, -/obj/structure/flora/bush/flowers_br/style_3, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/grass, -/area/station/hallway/primary/upper) "muK" = ( /obj/structure/cable, /obj/machinery/door/airlock/hatch{ @@ -64257,20 +64278,6 @@ /obj/effect/turf_decal/bot, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) -"mxr" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/landmark/start/gary/rare, -/turf/open/floor/carpet, -/area/station/service/library/printer) -"mxu" = ( -/obj/effect/landmark/start/gary/uncommon, -/turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) "mxE" = ( /obj/structure/table/reinforced, /obj/item/paper_bin{ @@ -64293,6 +64300,20 @@ /obj/item/radio/intercom/directional/south, /turf/open/floor/iron/white, /area/station/science/xenobiology) +"mxX" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, +/obj/structure/chair/office{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/effect/landmark/generic_maintenance_landmark, +/obj/structure/cable, +/obj/effect/landmark/start/gary, +/turf/open/floor/carpet, +/area/station/maintenance/abandon_psych) "mya" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -64451,6 +64472,9 @@ /obj/machinery/light/directional/south, /turf/open/floor/wood, /area/station/command/heads_quarters/captain/private) +"mzu" = ( +/turf/closed/wall/r_wall, +/area/station/hallway/primary/upper) "mzv" = ( /obj/machinery/duct, /turf/open/floor/iron/freezer, @@ -64959,21 +64983,6 @@ /obj/machinery/plumbing/input, /turf/open/floor/iron/dark, /area/station/science/cytology) -"mEK" = ( -/obj/effect/turf_decal/siding/brown{ - dir = 1 - }, -/obj/machinery/computer/security/qm{ - dir = 1 - }, -/obj/machinery/requests_console/directional/south{ - department = "Quartermaster's Office"; - name = "Quartermaster's Requests Console" - }, -/obj/effect/mapping_helpers/requests_console/announcement, -/obj/effect/mapping_helpers/requests_console/supplies, -/turf/open/floor/iron/dark, -/area/station/cargo/quartermaster) "mER" = ( /obj/machinery/light/directional/east, /obj/machinery/computer/department_orders/engineering{ @@ -65710,13 +65719,6 @@ /obj/effect/landmark/generic_maintenance_landmark, /turf/open/floor/plating, /area/station/maintenance/aft/upper) -"mLV" = ( -/obj/structure/chair/office, -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/event_spawn, -/obj/effect/landmark/start/gary, -/turf/open/floor/wood, -/area/station/security/detectives_office/private_investigators_office) "mLX" = ( /obj/item/food/cheese/wheel, /turf/open/misc/sandy_dirt, @@ -66654,6 +66656,12 @@ }, /turf/open/floor/engine/hull/reinforced, /area/space/nearstation) +"mVh" = ( +/obj/structure/flora/bush/jungle/b, +/obj/structure/flora/bush/flowers_yw, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/grass, +/area/station/hallway/primary/upper) "mVi" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 @@ -66948,6 +66956,12 @@ /obj/effect/mapping_helpers/airlock/access/all/engineering/external, /turf/open/floor/plating, /area/station/maintenance/aft/upper) +"mYp" = ( +/obj/machinery/holopad, +/obj/effect/turf_decal/bot, +/obj/effect/landmark/start/quartermaster, +/turf/open/floor/wood/parquet, +/area/station/cargo/quartermaster) "mYx" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, @@ -67720,12 +67734,6 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/engineering/atmos) -"ngF" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk, -/obj/structure/sign/calendar/directional/north, -/turf/open/floor/wood/parquet, -/area/station/cargo/quartermaster) "ngG" = ( /obj/machinery/door/airlock/grunge{ name = "Chapel Hall" @@ -68211,6 +68219,12 @@ dir = 4 }, /area/station/security/checkpoint/escape) +"nlV" = ( +/obj/effect/landmark/event_spawn, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/start/gary, +/turf/open/floor/carpet/red, +/area/station/service/library/abandoned) "nlW" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -68750,6 +68764,10 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/stairs/left, /area/station/cargo/storage) +"nsx" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/wood/parquet, +/area/station/cargo/quartermaster) "nsy" = ( /obj/structure/ladder, /obj/effect/turf_decal/stripes/white/box, @@ -69523,6 +69541,13 @@ }, /turf/open/floor/plating, /area/station/security/checkpoint/customs) +"nAy" = ( +/obj/structure/chair/comfy/black{ + dir = 4 + }, +/obj/effect/landmark/start/quartermaster, +/turf/open/floor/wood/parquet, +/area/station/cargo/quartermaster) "nAD" = ( /obj/machinery/light/directional/north, /obj/structure/disposalpipe/segment{ @@ -69597,6 +69622,12 @@ /obj/structure/closet/radiation, /turf/open/floor/plating, /area/station/engineering/atmos) +"nBp" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/drone_dispenser/preloaded, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron, +/area/station/science/research/abandoned) "nBu" = ( /obj/structure/cable, /obj/machinery/duct, @@ -69669,18 +69700,6 @@ /obj/item/radio/intercom/directional/east, /turf/open/floor/carpet, /area/station/medical/patients_rooms) -"nBW" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 4; - id = "qmprivacy"; - name = "Quartermaster's Privacy Shutters" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/cargo/quartermaster) "nBY" = ( /obj/structure/flora/bush/reed{ pixel_y = 8 @@ -70054,6 +70073,14 @@ /obj/effect/landmark/start/hangover, /turf/open/floor/iron, /area/station/hallway/primary/starboard) +"nFV" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/clown_chamber) "nFX" = ( /obj/machinery/power/apc/auto_name/directional/north, /obj/structure/cable, @@ -70607,25 +70634,6 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/iron/dark, /area/station/security/brig) -"nLg" = ( -/obj/machinery/button/door/directional/west{ - id = "QMdoor"; - name = "Door lock"; - normaldoorcontrol = 1; - pixel_x = -32; - pixel_y = -6; - req_access = list("qm"); - specialfunctions = 4 - }, -/obj/machinery/button/door{ - id = "qmprivacy"; - name = "Privacy Control"; - pixel_x = -32; - pixel_y = 7; - req_access = list("qm") - }, -/turf/open/floor/wood/parquet, -/area/station/cargo/quartermaster) "nLh" = ( /obj/machinery/atmospherics/components/binary/pump/on{ dir = 1; @@ -72248,12 +72256,6 @@ /obj/machinery/newscaster/directional/north, /turf/open/floor/carpet, /area/station/security/detectives_office) -"obY" = ( -/obj/structure/flora/bush/jungle/c, -/obj/structure/flora/bush/flowers_pp/style_2, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/grass, -/area/station/hallway/primary/upper) "oci" = ( /obj/effect/turf_decal/trimline/red/filled/corner{ color = "#DE3A3A"; @@ -72587,14 +72589,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) -"ofh" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/event_spawn, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/landmark/start/gary, -/turf/open/floor/eighties, -/area/station/maintenance/abandon_arcade) "ofm" = ( /obj/effect/turf_decal/tile/neutral{ dir = 8 @@ -72945,16 +72939,6 @@ }, /turf/open/floor/stone, /area/station/hallway/primary/central) -"ohE" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/machinery/door/airlock/highsecurity{ - name = "Blueshield's Equipment Room" - }, -/obj/effect/mapping_helpers/airlock/access/all/command/captain, -/turf/open/floor/wood, -/area/station/command/heads_quarters/blueshield) "ohH" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 @@ -73198,6 +73182,10 @@ /obj/item/kirbyplants/organic/plant21, /turf/open/floor/iron, /area/station/service/chapel) +"okm" = ( +/obj/structure/decorative/shelf/alcohol_assortment, +/turf/open/floor/wood/parquet, +/area/station/cargo/quartermaster) "okq" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -74342,9 +74330,6 @@ /obj/effect/spawner/random/maintenance, /turf/open/floor/plating, /area/station/maintenance/department/security/greater) -"ovy" = ( -/turf/closed/wall, -/area/station/cargo/quartermaster) "ovC" = ( /obj/machinery/growing/soil, /turf/open/floor/grass, @@ -77314,6 +77299,28 @@ }, /turf/open/floor/iron/dark, /area/station/maintenance/disposal/incinerator) +"oYQ" = ( +/obj/structure/table/wood, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/item/folder/yellow, +/obj/item/stamp/head/qm, +/obj/item/reagent_containers/cup/glass/drinkingglass/shotglass{ + pixel_x = 6; + pixel_y = 16 + }, +/obj/item/reagent_containers/cup/glass/drinkingglass/shotglass{ + pixel_x = -4; + pixel_y = 16 + }, +/obj/item/hand_labeler_refill{ + pixel_x = -8; + pixel_y = -8 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/wood/parquet, +/area/station/cargo/quartermaster) "oYT" = ( /obj/structure/lattice/catwalk, /obj/structure/railing{ @@ -77844,12 +77851,6 @@ /obj/item/storage/crayons, /turf/open/floor/iron, /area/station/commons/fitness/recreation) -"pew" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/chair/stool/bar/directional/north, -/obj/effect/landmark/start/gary, -/turf/open/floor/carpet, -/area/station/maintenance/rus_gambling) "peD" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/tile/bar/opposingcorners, @@ -78215,6 +78216,12 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/common/wrestling/arena) +"pit" = ( +/obj/structure/flora/bush/jungle/c, +/obj/structure/flora/bush/flowers_pp/style_2, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/grass, +/area/station/hallway/primary/upper) "piw" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 6 @@ -78579,6 +78586,19 @@ /obj/item/chicken_book, /turf/open/floor/iron/dark/herringbone, /area/station/common/night_club/back_stage) +"pmq" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wood/corner, +/obj/machinery/door/airlock/corporate{ + name = "Blueshield's Quarters" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/airlock/access/all/admin/general, +/turf/open/floor/wood, +/area/station/command/heads_quarters/blueshield) "pmr" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -78876,6 +78896,18 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/engineering/transit_tube) +"ppK" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/obj/machinery/camera/directional/south{ + c_tag = "Cargo - Quartermaster's office"; + dir = 1 + }, +/obj/structure/table/wood, +/obj/item/modular_computer/laptop, +/turf/open/floor/wood/parquet, +/area/station/cargo/quartermaster) "ppP" = ( /obj/effect/turf_decal/stripes{ dir = 4 @@ -79857,6 +79889,16 @@ "pyO" = ( /turf/closed/wall, /area/station/science/research/abandoned) +"pyS" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/machinery/door/airlock/highsecurity{ + name = "Blueshield's Equipment Room" + }, +/obj/effect/mapping_helpers/airlock/access/all/admin/general, +/turf/open/floor/wood, +/area/station/command/heads_quarters/blueshield) "pzi" = ( /obj/item/clothing/head/utility/welding, /obj/effect/decal/cleanable/dirt, @@ -80038,6 +80080,14 @@ /obj/machinery/atm/directional/south, /turf/open/floor/iron/white, /area/station/science) +"pAL" = ( +/obj/machinery/photocopier, +/obj/effect/turf_decal/bot, +/obj/structure/noticeboard/qm{ + pixel_y = 32 + }, +/turf/open/floor/wood/parquet, +/area/station/cargo/quartermaster) "pAO" = ( /obj/structure/chair/office{ dir = 8 @@ -81702,44 +81752,6 @@ /obj/machinery/duct, /turf/open/floor/plating, /area/station/maintenance/port/fore) -"pSL" = ( -/obj/structure/table/wood, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/item/paper_bin{ - pixel_x = -12; - pixel_y = 3 - }, -/obj/item/pen/fourcolor{ - pixel_x = -12; - pixel_y = 5 - }, -/obj/item/hand_labeler{ - pixel_y = 17 - }, -/obj/item/computer_disk/quartermaster{ - pixel_x = 6; - pixel_y = 5 - }, -/obj/item/computer_disk/quartermaster{ - pixel_x = 6; - pixel_y = 5 - }, -/obj/item/computer_disk/quartermaster{ - pixel_x = 6; - pixel_y = 5 - }, -/obj/item/flashlight/lamp/green{ - pixel_y = 1 - }, -/obj/structure/disposalpipe/segment, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/wood/parquet, -/area/station/cargo/quartermaster) "pSM" = ( /obj/machinery/power/shuttle_engine/heater{ dir = 1 @@ -83466,6 +83478,12 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/plating, /area/station/maintenance/pool_maintenance) +"qkT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/trash/popcorn, +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/abandon_art_studio) "qkW" = ( /obj/effect/turf_decal/stripes/end{ dir = 4 @@ -84077,19 +84095,6 @@ /obj/structure/grille, /turf/open/floor/plating, /area/station/maintenance/fore/upper) -"qrq" = ( -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/siding/wood, -/obj/machinery/door/airlock/mining{ - name = "Deliveries" - }, -/obj/effect/mapping_helpers/airlock/access/all/supply/qm, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/wood/parquet, -/area/station/cargo/quartermaster) "qru" = ( /obj/structure/rack, /obj/item/stack/cable_coil{ @@ -85412,6 +85417,12 @@ }, /turf/open/floor/iron/white, /area/station/medical/medbay/central) +"qDe" = ( +/obj/structure/flora/bush/jungle/a/style_2, +/obj/structure/flora/bush/flowers_yw/style_3, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/grass, +/area/station/hallway/primary/upper) "qDf" = ( /obj/effect/turf_decal/siding/thinplating/dark{ dir = 1 @@ -85741,6 +85752,14 @@ /obj/structure/flora/bush/lavendergrass, /turf/open/floor/grass, /area/station/service/hydroponics) +"qGh" = ( +/obj/structure/flora/bush/sparsegrass{ + pixel_x = 7; + pixel_y = 3 + }, +/obj/structure/reagent_dispensers/watertank/high, +/turf/open/floor/grass, +/area/station/security/prison/garden) "qGm" = ( /obj/effect/turf_decal/bot_white, /obj/structure/cable, @@ -85945,14 +85964,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/upper) -"qIq" = ( -/obj/structure/flora/bush/sparsegrass{ - pixel_x = 7; - pixel_y = 3 - }, -/obj/structure/reagent_dispensers/watertank/high, -/turf/open/floor/grass, -/area/station/security/prison/garden) "qIs" = ( /turf/closed/wall/r_wall, /area/station/common/arcade) @@ -86158,22 +86169,6 @@ /obj/structure/drain, /turf/open/floor/iron/checker, /area/station/science/ordnance) -"qKb" = ( -/obj/structure/table/wood, -/obj/item/clipboard{ - pixel_y = 19 - }, -/obj/item/toy/figure/qm{ - pixel_y = 18 - }, -/obj/machinery/light/directional/west, -/obj/machinery/fax{ - fax_name = "Quartermaster's Office"; - name = "Quartermaster's Fax Machine"; - pixel_y = 3 - }, -/turf/open/floor/wood/parquet, -/area/station/cargo/quartermaster) "qKp" = ( /obj/structure/railing{ dir = 8 @@ -86270,12 +86265,6 @@ /obj/machinery/vending/medical, /turf/open/floor/iron, /area/station/medical/storage) -"qLP" = ( -/obj/structure/flora/bush/jungle/b, -/obj/structure/flora/bush/flowers_br, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/grass, -/area/station/hallway/primary/upper) "qLQ" = ( /obj/effect/turf_decal/bot_white/left, /obj/structure/closet/crate/hydroponics, @@ -87812,9 +87801,6 @@ initial_gas_mix = "TEMP=2.7" }, /area/station/science/ordnance/bomb) -"raX" = ( -/turf/closed/wall/r_wall, -/area/station/cargo/quartermaster) "rba" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/siding/thinplating_new/dark{ @@ -88601,10 +88587,6 @@ /obj/effect/landmark/start/assistant, /turf/open/floor/stone, /area/station/hallway/primary/central) -"rim" = ( -/obj/structure/dresser, -/turf/open/floor/carpet, -/area/station/cargo/quartermaster) "rix" = ( /obj/structure/table, /obj/item/storage/medkit/regular, @@ -90057,12 +90039,6 @@ }, /turf/open/floor/wood/large, /area/station/science/auxlab/firing_range) -"rwR" = ( -/obj/structure/flora/bush/jungle/c/style_3, -/obj/structure/flora/bush/flowers_pp/style_3, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/grass, -/area/station/hallway/primary/upper) "rwS" = ( /obj/structure/chair/sofa/bench/left{ dir = 4; @@ -90878,6 +90854,12 @@ /obj/machinery/camera/autoname/directional/north, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/aisat_interior) +"rEB" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/landmark/start/gary/rare, +/turf/open/floor/iron/white, +/area/station/medical/aslyum) "rED" = ( /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 8 @@ -91207,6 +91189,10 @@ /obj/effect/decal/cleanable/blood/old, /turf/open/floor/mineral/plastitanium, /area/station/maintenance/cult_chapel_maint) +"rHz" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/carpet, +/area/station/cargo/quartermaster) "rHB" = ( /obj/item/trash/chips, /turf/open/floor/plating, @@ -91409,12 +91395,6 @@ /obj/machinery/light_switch/directional/south, /turf/open/floor/carpet/blue, /area/station/service/lawoffice) -"rJl" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/trash/popcorn, -/obj/effect/landmark/start/gary, -/turf/open/floor/plating, -/area/station/maintenance/abandon_art_studio) "rJm" = ( /obj/effect/turf_decal/tile/yellow/half/contrasted, /obj/machinery/newscaster/directional/south, @@ -91456,6 +91436,9 @@ }, /turf/open/floor/iron/dark/side, /area/station/hallway/primary/central) +"rJF" = ( +/turf/closed/wall/r_wall, +/area/station/cargo/quartermaster) "rJL" = ( /obj/structure/table/wood, /obj/item/food/grown/harebell, @@ -91807,15 +91790,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/port/upper) -"rNW" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/wood/parquet, -/area/station/cargo/quartermaster) "rNY" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -91912,10 +91886,6 @@ /obj/item/coffee_cartridge, /turf/open/floor/iron, /area/station/hallway/secondary/service) -"rPj" = ( -/obj/effect/landmark/start/gary, -/turf/open/floor/iron, -/area/station/hallway/secondary/construction) "rPm" = ( /obj/machinery/shower/directional/west, /obj/structure/drain, @@ -92344,16 +92314,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/department/engineering/engine_aft_port) -"rUn" = ( -/obj/structure/chair/office{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/wood/parquet, -/area/station/cargo/quartermaster) "rUt" = ( /obj/structure/disposalpipe/segment, /obj/machinery/duct, @@ -93467,13 +93427,6 @@ /obj/structure/chair/wood, /turf/open/floor/wood, /area/station/service/cafeteria) -"sfP" = ( -/obj/structure/chair/comfy/black{ - dir = 4 - }, -/obj/effect/landmark/start/quartermaster, -/turf/open/floor/wood/parquet, -/area/station/cargo/quartermaster) "sfS" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/spawner/random/structure/steam_vent, @@ -93526,6 +93479,12 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/security/checkpoint/customs/auxiliary) +"sgt" = ( +/obj/structure/flora/bush/jungle/b, +/obj/structure/flora/bush/flowers_br, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/grass, +/area/station/hallway/primary/upper) "sgv" = ( /obj/structure/window/reinforced/spawner/directional/east, /obj/effect/turf_decal/stripes/white/line{ @@ -94414,14 +94373,6 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/department/science/lower) -"sqK" = ( -/obj/machinery/duct, -/obj/effect/turf_decal/tile/blue/opposingcorners{ - dir = 8 - }, -/obj/effect/landmark/start/gary/rare, -/turf/open/floor/iron/cafeteria, -/area/station/commons/locker) "sqL" = ( /obj/machinery/airalarm/directional/west, /obj/machinery/light_switch/directional/south, @@ -95179,6 +95130,14 @@ /obj/effect/spawner/random/decoration/glowstick, /turf/open/floor/iron, /area/station/maintenance/department/medical/central) +"sxg" = ( +/obj/structure/altar_of_gods, +/obj/structure/railing{ + dir = 4 + }, +/obj/item/book/bible, +/turf/open/floor/carpet, +/area/station/service/chapel) "sxl" = ( /obj/structure/closet/emcloset, /obj/effect/decal/cleanable/dirt, @@ -95439,23 +95398,6 @@ dir = 8 }, /area/station/command/gateway) -"sAn" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/door/firedoor, -/obj/machinery/button/door/directional/north{ - id = "Portbowmaints"; - name = "Shutter control"; - pixel_x = -24; - pixel_y = 0 - }, -/obj/machinery/door/poddoor/shutters{ - id = "Portbowmaints"; - name = "Port Bow Maintenance" - }, -/turf/open/floor/iron/stairs/left{ - dir = 1 - }, -/area/station/maintenance/port/upper) "sAs" = ( /obj/effect/turf_decal/delivery/white, /obj/machinery/status_display/supply{ @@ -95499,12 +95441,6 @@ }, /turf/open/floor/iron, /area/station/commons/fitness) -"sAJ" = ( -/obj/effect/landmark/event_spawn, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/landmark/start/gary, -/turf/open/floor/carpet/red, -/area/station/service/library/abandoned) "sAW" = ( /obj/structure/railing{ dir = 8 @@ -97096,22 +97032,6 @@ "sPI" = ( /turf/open/floor/grass, /area/station/service/hydroponics/garden/abandoned) -"sPM" = ( -/obj/structure/table/wood, -/obj/item/reagent_containers/cup/glass/bottle/fernet{ - pixel_x = -8; - pixel_y = 14 - }, -/obj/item/reagent_containers/cup/glass/bottle/lizardwine{ - pixel_x = 7; - pixel_y = 6 - }, -/obj/item/reagent_containers/cup/glass/bottle/champagne{ - pixel_y = 11 - }, -/obj/machinery/digital_clock/directional/north, -/turf/open/floor/wood/parquet, -/area/station/cargo/quartermaster) "sPS" = ( /obj/effect/turf_decal/siding/wood, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -97524,18 +97444,6 @@ /obj/machinery/duct, /turf/open/floor/iron, /area/station/commons/dorms) -"sUv" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 4; - id = "qmprivacy"; - name = "Quartermaster's Privacy Shutters" - }, -/obj/structure/disposalpipe/trunk/multiz{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/cargo/quartermaster) "sUJ" = ( /obj/structure/window/spawner/directional/east, /obj/effect/turf_decal/delivery, @@ -98408,6 +98316,14 @@ }, /turf/open/floor/plating, /area/station/hallway/secondary/entry) +"tbD" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/power/apc/auto_name/directional/west, +/obj/structure/cable, +/turf/open/floor/wood/parquet, +/area/station/cargo/quartermaster) "tbH" = ( /obj/structure/chair/pew/left{ dir = 4 @@ -99009,6 +98925,14 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/engineering/transit_tube) +"thb" = ( +/obj/structure/chair/wood/wings{ + dir = 8 + }, +/obj/effect/landmark/start/librarian, +/obj/effect/landmark/start/gary/rare, +/turf/open/floor/carpet, +/area/station/service/library/lounge) "thj" = ( /obj/effect/spawner/random/structure/table_or_rack, /obj/effect/spawner/random/maintenance, @@ -99663,6 +99587,14 @@ /obj/effect/spawner/random/trash/moisture, /turf/open/floor/plating, /area/station/maintenance/port/upper) +"tov" = ( +/obj/machinery/duct, +/obj/effect/turf_decal/tile/blue/opposingcorners{ + dir = 8 + }, +/obj/effect/landmark/start/gary/rare, +/turf/open/floor/iron/cafeteria, +/area/station/commons/locker) "toB" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -101040,10 +100972,6 @@ }, /turf/open/floor/iron, /area/station/maintenance/starboard/fore) -"tCj" = ( -/obj/machinery/duct, -/turf/open/floor/carpet/executive, -/area/station/command/heads_quarters/blueshield) "tCm" = ( /obj/docking_port/stationary{ dheight = 4; @@ -101899,6 +101827,22 @@ /obj/machinery/atmospherics/components/unary/portables_connector/visible, /turf/open/floor/iron, /area/station/engineering/atmos/test_chambers) +"tKU" = ( +/obj/structure/table/wood, +/obj/item/clipboard{ + pixel_y = 19 + }, +/obj/item/toy/figure/qm{ + pixel_y = 18 + }, +/obj/machinery/light/directional/west, +/obj/machinery/fax{ + fax_name = "Quartermaster's Office"; + name = "Quartermaster's Fax Machine"; + pixel_y = 3 + }, +/turf/open/floor/wood/parquet, +/area/station/cargo/quartermaster) "tKX" = ( /obj/item/clothing/head/utility/welding, /turf/open/floor/plating, @@ -102498,6 +102442,16 @@ /obj/effect/spawner/random/contraband/permabrig_gear, /turf/open/floor/plating, /area/station/security/prison/mess) +"tQe" = ( +/obj/structure/chair/office{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/wood/parquet, +/area/station/cargo/quartermaster) "tQg" = ( /obj/effect/turf_decal/vg_decals/numbers/four, /obj/effect/landmark/start/prisoner, @@ -102654,19 +102608,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/engineering/atmos/hfr_room) -"tRo" = ( -/obj/structure/table/wood, -/obj/structure/closet/crate/cardboard{ - pixel_y = 5 - }, -/obj/item/clothing/shoes/jackboots/timbs, -/obj/item/clothing/suit/brownfurrich/public, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/wood/parquet, -/area/station/cargo/quartermaster) "tRu" = ( /obj/structure/table, /obj/item/paper_bin{ @@ -102818,15 +102759,15 @@ dir = 8 }, /area/station/hallway/secondary/service) +"tTf" = ( +/obj/structure/chair/office{ + dir = 8 + }, +/turf/open/floor/wood/parquet, +/area/station/cargo/quartermaster) "tTg" = ( /turf/closed/wall/mineral/wood, /area/station/common/pool/sauna) -"tTk" = ( -/obj/structure/flora/bush/jungle, -/obj/structure/flora/bush/flowers_yw/style_3, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/grass, -/area/station/hallway/primary/upper) "tTm" = ( /obj/effect/turf_decal/stripes{ dir = 8 @@ -103472,14 +103413,6 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/secondary/command) -"uaq" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/landmark/start/gary, -/turf/open/floor/plating, -/area/station/maintenance/clown_chamber) "uaL" = ( /obj/machinery/light/directional/west, /turf/open/floor/iron, @@ -104536,6 +104469,16 @@ /obj/effect/landmark/start/librarian, /turf/open/floor/carpet, /area/station/service/library/lounge) +"ukH" = ( +/obj/structure/sign/directions/command{ + dir = 1; + pixel_y = 3 + }, +/obj/structure/sign/directions/science{ + pixel_y = -3 + }, +/turf/closed/wall/r_wall, +/area/station/hallway/primary/upper) "ukI" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 @@ -105963,6 +105906,15 @@ }, /turf/open/floor/plating, /area/station/medical/pharmacy) +"uyB" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/wood/parquet, +/area/station/cargo/quartermaster) "uyC" = ( /turf/open/floor/engine{ name = "Holodeck Projector Floor" @@ -106631,10 +106583,6 @@ dir = 8 }, /area/station/security/prison) -"uED" = ( -/obj/effect/landmark/start/gary/rare, -/turf/open/floor/cult, -/area/station/maintenance/cult_chapel_maint) "uEE" = ( /obj/machinery/door/firedoor, /obj/effect/turf_decal/tile/yellow/half/contrasted{ @@ -107035,6 +106983,19 @@ /obj/machinery/duct, /turf/open/floor/plating, /area/station/maintenance/night_club) +"uIJ" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/machinery/door/airlock/highsecurity{ + name = "Blueshield's Equipment Room" + }, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/airlock/access/all/admin/general, +/turf/open/floor/wood, +/area/station/command/heads_quarters/blueshield) "uIM" = ( /obj/machinery/power/smes, /obj/structure/cable, @@ -107227,6 +107188,12 @@ /obj/machinery/newscaster/directional/east, /turf/open/floor/wood, /area/station/hallway/secondary/service) +"uKB" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/chair/stool/bar/directional/north, +/obj/effect/landmark/start/gary, +/turf/open/floor/carpet, +/area/station/maintenance/rus_gambling) "uKG" = ( /obj/effect/landmark/event_spawn, /turf/open/floor/iron, @@ -107270,6 +107237,12 @@ /obj/structure/flora/bush/leafy, /turf/open/floor/grass, /area/station/hallway/primary/central) +"uLt" = ( +/obj/machinery/duct, +/obj/effect/spawner/random/trash/mess, +/obj/effect/landmark/start/gary, +/turf/open/floor/carpet, +/area/station/commons/dorms/vacantroom) "uLA" = ( /obj/effect/spawner/structure/window, /turf/open/floor/plating, @@ -108082,6 +108055,14 @@ /obj/effect/spawner/random/medical/memeorgans, /turf/open/floor/plating, /area/station/maintenance/abandon_surgery) +"uTO" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/event_spawn, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/start/gary, +/turf/open/floor/eighties, +/area/station/maintenance/abandon_arcade) "uTQ" = ( /obj/effect/turf_decal/trimline/blue/line{ dir = 10 @@ -108871,12 +108852,6 @@ dir = 4 }, /area/station/science/xenobiology) -"vcx" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/closed/wall/r_wall, -/area/station/cargo/quartermaster) "vcz" = ( /obj/structure/extinguisher_cabinet/directional/south, /obj/structure/chair/comfy/brown{ @@ -109359,12 +109334,6 @@ /obj/machinery/holopad, /turf/open/floor/iron/white, /area/station/medical/medbay/lobby) -"vhw" = ( -/obj/structure/flora/bush/jungle/a, -/obj/structure/flora/bush/flowers_br/style_3, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/grass, -/area/station/hallway/primary/upper) "vhy" = ( /obj/structure/table, /obj/effect/decal/cleanable/dirt, @@ -109813,6 +109782,15 @@ /obj/structure/table, /turf/open/floor/iron/dark, /area/station/commons/dorms) +"vlp" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 4; + id = "qmprivacy"; + name = "Quartermaster's Privacy Shutters" + }, +/turf/open/floor/plating, +/area/station/cargo/quartermaster) "vlu" = ( /obj/structure/table/reinforced, /obj/effect/turf_decal/siding/wood, @@ -113680,6 +113658,25 @@ /obj/machinery/light/directional/east, /turf/open/floor/engine, /area/station/engineering/supermatter/room) +"vWp" = ( +/obj/item/trash/syndi_cakes, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/shutters{ + id = "Starboardbowmaints"; + name = "Starboard Bow Maintenance" + }, +/obj/machinery/button/door/directional/north{ + id = "Starboardbowmaints"; + name = "Shutter control"; + pixel_x = 24; + pixel_y = 0 + }, +/turf/open/floor/plating, +/area/station/maintenance/fore/upper) "vWN" = ( /obj/structure/sign/warning/vacuum/external/directional/south, /turf/open/floor/iron, @@ -114095,12 +114092,6 @@ dir = 1 }, /area/station/hallway/primary/central/fore) -"wbm" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/wood/parquet, -/area/station/cargo/quartermaster) "wbq" = ( /obj/machinery/atmospherics/pipe/smart/simple/green/visible{ dir = 4 @@ -114409,6 +114400,12 @@ }, /turf/open/floor/iron, /area/station/maintenance/starboard/fore) +"wdN" = ( +/obj/structure/flora/bush/jungle/b/style_2, +/obj/structure/flora/bush/flowers_br/style_3, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/grass, +/area/station/hallway/primary/upper) "wdS" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 4 @@ -114540,6 +114537,18 @@ /obj/structure/reagent_dispensers/fueltank, /turf/open/floor/plating, /area/station/science/research/abandoned) +"weQ" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 4; + id = "qmprivacy"; + name = "Quartermaster's Privacy Shutters" + }, +/obj/structure/disposalpipe/trunk/multiz{ + dir = 4 + }, +/turf/open/floor/plating, +/area/station/cargo/quartermaster) "weT" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -114600,6 +114609,25 @@ /obj/effect/mapping_helpers/airlock/access/all/engineering/external, /turf/open/floor/plating, /area/station/maintenance/port/fore) +"wfp" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/trash/mess, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/door/firedoor, +/obj/machinery/button/door/directional/north{ + id = "Starboardbowmaints"; + name = "Shutter control"; + pixel_x = 24; + pixel_y = 0 + }, +/obj/machinery/door/poddoor/shutters{ + id = "Starboardbowmaints"; + name = "Starboard Bow Maintenance" + }, +/turf/open/floor/plating, +/area/station/maintenance/fore/upper) "wfr" = ( /obj/effect/spawner/liquids_spawner{ reagent_list = list(/datum/reagent/water=600) @@ -114695,6 +114723,12 @@ dir = 4 }, /area/station/hallway/primary/central/aft) +"wfY" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/station/cargo/quartermaster) "wge" = ( /obj/effect/turf_decal/siding/wood{ dir = 8 @@ -114971,16 +115005,6 @@ }, /turf/open/floor/wood/parquet, /area/station/common/tailoring) -"wiC" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/broken_floor, -/obj/machinery/duct, -/obj/structure/cable, -/obj/effect/landmark/start/gary, -/turf/open/floor/wood, -/area/station/commons/dorms/vacantroom) "wiF" = ( /obj/effect/turf_decal/bot, /obj/effect/turf_decal/stripes/corner{ @@ -115092,6 +115116,9 @@ }, /turf/open/floor/wood, /area/station/command/captain_dining) +"wjW" = ( +/turf/open/floor/wood/parquet, +/area/station/cargo/quartermaster) "wjY" = ( /obj/structure/rack, /obj/effect/turf_decal/bot, @@ -115818,15 +115845,6 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron/dark, /area/station/hallway/secondary/command) -"wro" = ( -/obj/effect/turf_decal/siding/brown{ - dir = 1 - }, -/obj/machinery/computer/cargo{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/cargo/quartermaster) "wrq" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /obj/machinery/button/door/directional/north{ @@ -116077,6 +116095,12 @@ /obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, /area/station/maintenance/fore/upper) +"wsT" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/open/floor/wood/parquet, +/area/station/cargo/quartermaster) "wsU" = ( /obj/effect/spawner/random/engineering/tracking_beacon, /turf/open/floor/plating/reinforced{ @@ -116359,13 +116383,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/security/brig) -"wvs" = ( -/obj/structure/bed/dogbed, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/wood/parquet, -/area/station/cargo/quartermaster) "wvt" = ( /obj/structure/reagent_dispensers/watertank, /obj/item/reagent_containers/cup/bucket, @@ -116904,10 +116921,6 @@ }, /turf/open/floor/iron, /area/station/commons/dorms) -"wBb" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/wood/parquet, -/area/station/cargo/quartermaster) "wBn" = ( /obj/machinery/atmospherics/components/binary/pump{ name = "Port to Filter" @@ -117803,15 +117816,6 @@ /obj/machinery/light/directional/west, /turf/open/floor/carpet, /area/station/science/ordnance/office) -"wJJ" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable, -/obj/effect/landmark/start/gary/uncommon, -/turf/open/floor/stone, -/area/station/service/forge) "wJQ" = ( /obj/structure/chair/office{ dir = 8 @@ -117918,6 +117922,13 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/station/service/hydroponics) +"wLK" = ( +/obj/structure/chair/office, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/event_spawn, +/obj/effect/landmark/start/gary, +/turf/open/floor/wood, +/area/station/security/detectives_office/private_investigators_office) "wLM" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -118331,6 +118342,10 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central) +"wPC" = ( +/obj/effect/landmark/start/quartermaster, +/turf/open/floor/wood/parquet, +/area/station/cargo/quartermaster) "wPG" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/trash/garbage, @@ -118877,6 +118892,13 @@ /obj/structure/flora/rock/pile, /turf/open/floor/grass, /area/station/hallway/primary/central) +"wVh" = ( +/obj/structure/closet/secure_closet/quartermaster, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/cargo/quartermaster) "wVn" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -118949,6 +118971,12 @@ /obj/effect/spawner/structure/window, /turf/open/floor/plating, /area/station/service/theater) +"wWf" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/gary, +/turf/open/floor/iron/cafeteria, +/area/station/maintenance/abandon_diner) "wWi" = ( /obj/machinery/power/shuttle_engine/heater{ dir = 4 @@ -119736,14 +119764,6 @@ /obj/item/radio/intercom/directional/south, /turf/open/floor/circuit, /area/station/command/gateway) -"xeB" = ( -/obj/machinery/photocopier, -/obj/effect/turf_decal/bot, -/obj/structure/noticeboard/qm{ - pixel_y = 32 - }, -/turf/open/floor/wood/parquet, -/area/station/cargo/quartermaster) "xeE" = ( /obj/item/trash/syndi_cakes, /obj/structure/cable, @@ -119905,6 +119925,11 @@ /obj/effect/spawner/structure/window, /turf/open/floor/plating, /area/station/service/cafeteria) +"xgk" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/aft/upper) "xgr" = ( /obj/structure/chair/stool, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -120061,12 +120086,6 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, /area/station/maintenance/department/medical/central) -"xhM" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/cargo/quartermaster) "xhZ" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -120575,6 +120594,10 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) +"xnA" = ( +/obj/effect/landmark/start/gary/rare, +/turf/open/floor/cult, +/area/station/maintenance/cult_chapel_maint) "xnC" = ( /obj/structure/railing{ dir = 8 @@ -121197,6 +121220,22 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/service/chapel/funeral) +"xtv" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/cup/glass/bottle/fernet{ + pixel_x = -8; + pixel_y = 14 + }, +/obj/item/reagent_containers/cup/glass/bottle/lizardwine{ + pixel_x = 7; + pixel_y = 6 + }, +/obj/item/reagent_containers/cup/glass/bottle/champagne{ + pixel_y = 11 + }, +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/wood/parquet, +/area/station/cargo/quartermaster) "xtB" = ( /obj/structure/chair/pew/left{ dir = 1; @@ -121823,15 +121862,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/white, /area/station/science/research) -"xAn" = ( -/obj/effect/turf_decal/siding/wood, -/obj/machinery/door/airlock/mining{ - name = "Deliveries" - }, -/obj/effect/mapping_helpers/airlock/access/all/supply/qm, -/obj/structure/disposalpipe/segment, -/turf/open/floor/carpet, -/area/station/cargo/quartermaster) "xAz" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -122453,6 +122483,12 @@ }, /turf/open/floor/iron, /area/station/commons/dorms) +"xGr" = ( +/obj/machinery/light/small/directional/north, +/obj/structure/disposalpipe/segment, +/obj/effect/landmark/start/quartermaster, +/turf/open/floor/carpet, +/area/station/cargo/quartermaster) "xGu" = ( /obj/structure/chair/office, /obj/structure/window/spawner/directional/west, @@ -122638,18 +122674,6 @@ /obj/effect/spawner/random/maintenance, /turf/open/floor/plating, /area/station/maintenance/disposal) -"xIz" = ( -/obj/effect/turf_decal/siding/wood/corner{ - dir = 4 - }, -/obj/machinery/camera/directional/south{ - c_tag = "Cargo - Quartermaster's office"; - dir = 1 - }, -/obj/structure/table/wood, -/obj/item/modular_computer/laptop, -/turf/open/floor/wood/parquet, -/area/station/cargo/quartermaster) "xIB" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/trash/mopbucket, @@ -122811,16 +122835,6 @@ }, /turf/open/floor/wood/parquet, /area/station/command/gateway) -"xKm" = ( -/obj/structure/sign/directions/command{ - dir = 1; - pixel_y = 3 - }, -/obj/structure/sign/directions/science{ - pixel_y = -3 - }, -/turf/closed/wall/r_wall, -/area/station/hallway/primary/upper) "xKr" = ( /obj/structure/table, /obj/item/paper_bin{ @@ -123135,12 +123149,6 @@ /obj/machinery/light/directional/north, /turf/open/floor/iron, /area/station/engineering/storage/tech) -"xNp" = ( -/obj/machinery/holopad, -/obj/effect/turf_decal/bot, -/obj/effect/landmark/start/quartermaster, -/turf/open/floor/wood/parquet, -/area/station/cargo/quartermaster) "xNy" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/liquids_spawner, @@ -123877,6 +123885,12 @@ }, /turf/open/floor/iron, /area/station/command/bridge) +"xVU" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/open/floor/wood/parquet, +/area/station/cargo/quartermaster) "xVV" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -124893,17 +124907,6 @@ /obj/structure/cable, /turf/open/floor/iron/smooth, /area/station/cargo/power_station/upper) -"yeG" = ( -/obj/item/storage/backpack/blueshield, -/obj/item/storage/backpack/duffelbag/blueshield, -/obj/item/storage/backpack/satchel/blueshield, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/obj/item/clothing/neck/mantle/bsmantle, -/obj/machinery/duct, -/turf/open/floor/carpet/executive, -/area/station/command/heads_quarters/blueshield) "yeH" = ( /obj/structure/railing{ dir = 4 @@ -144370,7 +144373,7 @@ vdX szo khB wsY -pew +uKB sCE oHL mqQ @@ -145340,7 +145343,7 @@ dEa dEa uEt bQL -aBw +iZA ihY pCR aUf @@ -146920,7 +146923,7 @@ gJC kvS tyO qCy -wJJ +aCe oDK xKQ rii @@ -147726,7 +147729,7 @@ jFf qMb uns gib -mLV +wLK nLn qjL nEA @@ -148735,7 +148738,7 @@ tKM uDf tFG tyB -rPj +jjN hLJ tyB fWT @@ -149757,7 +149760,7 @@ tej gcU lmf mFM -cmE +gFQ jQA jQA uDf @@ -150755,7 +150758,7 @@ pWa lOb eiM ukF -jhc +thb ocy efJ kQJ @@ -151531,7 +151534,7 @@ qlY qlY sPz tWx -mxr +cxO xFB wjx snu @@ -151802,7 +151805,7 @@ tvB oPW hoT qon -meH +sxg hhb csC uZH @@ -154331,7 +154334,7 @@ aGF grq uDg xvc -lYB +lBX kOW pjw pjw @@ -160550,7 +160553,7 @@ pEc cwD iWN uAV -mxu +gtW uAV lmE iWN @@ -161044,12 +161047,12 @@ mVk mVk mVk ueR -raX -raX -raX -vcx -raX -raX +rJF +rJF +rJF +wfY +rJF +rJF hmV vqa vqa @@ -161301,12 +161304,12 @@ mVk kVb gIS gIS -raX -sPM -qKb -dNr -biD -wro +rJF +xtv +tKU +tbD +iQW +cDG hmV hHn jrw @@ -161558,12 +161561,12 @@ eBe yde azk azk -raX -xIz -fpe -lPh -jUq -mEK +rJF +ppK +wjW +kVe +wPC +dvI hmV roO sNu @@ -161810,17 +161813,17 @@ mkM wsl tAt gIS -raX -raX -raX -raX -xeB -nLg -hAk -sfP -tRo -fpe -cJQ +rJF +rJF +rJF +rJF +pAL +ier +xVU +nAy +hUu +wjW +hpv hmV knm oQD @@ -162067,17 +162070,17 @@ eTy aTu npf hfr -raX -lVl -xhM -ovy -ngF -wBb -heD -cen -pSL -bJM -raX +rJF +wVh +fiG +iTO +jxK +nsx +jZU +oYQ +knG +akd +rJF hmV vqa vqa @@ -162324,17 +162327,17 @@ fsS oQw tAt oUr -act -alN -bCR -xAn -wBb -wbm -ehv -xNp -rUn -cfZ -raX +dYV +xGr +rHz +gGm +nsx +wsT +tTf +mYp +tQe +htj +rJF bHe gSu gSA @@ -162581,18 +162584,18 @@ iru cRO tAt eye -raX -bZx -rim -ovy -fxQ -wvs -auf -hHm -rNW -fvd -qrq -mgb +rJF +fdB +hTx +iTO +okm +hgI +mdB +gpf +gwg +uyB +gia +giW mvF foY uVh @@ -162838,17 +162841,17 @@ hZB gvR eGI kVb -raX -raX -raX -raX -lhn -nBW -nBW -sUv -lhn -raX -raX +rJF +rJF +rJF +rJF +vlp +lXx +lXx +weQ +vlp +rJF +rJF fOp pYr cZV @@ -164603,7 +164606,7 @@ xhv tCi tgb gjd -bPR +cZI hdS fRA xPk @@ -164828,7 +164831,7 @@ jEz eCw kkM fzZ -qIq +qGh aFR wpP vTa @@ -165922,7 +165925,7 @@ pMQ eGW nKK eFn -hGg +eSI oTl mXK ipg @@ -167181,7 +167184,7 @@ dVy rtr iTN nli -cns +kcU kfl iTN sfw @@ -209393,7 +209396,7 @@ soz uAj mAK ibw -sAJ +nlV mtu iCe wpF @@ -211378,7 +211381,7 @@ lEO lxt hZy oIe -sqK +tov gyh jyY mqj @@ -211412,7 +211415,7 @@ drQ xPd fHi reO -fGg +uLt soC eVg hnW @@ -212440,7 +212443,7 @@ fXT lGF fHi xbC -wiC +dzr czZ eVg kmc @@ -212900,7 +212903,7 @@ qhz ybT ybT oIL -sAn +jzZ gPC bZe gPC @@ -213166,7 +213169,7 @@ jQY fnc dEf hrJ -dAw +eul cXM kTV kTV @@ -213768,7 +213771,7 @@ lec sJw vzq bZD -dfo +aXz bqc ovC aDV @@ -215746,8 +215749,8 @@ gSB iVh hEi ami -yeG -tCj +cfa +dNs lPx sZp ktv @@ -216260,7 +216263,7 @@ aXo ide ide sZp -izO +pmq pRa pRa sZp @@ -216600,7 +216603,7 @@ vIq smt pTE gDk -lGg +wWf dHC cDP fne @@ -216876,7 +216879,7 @@ tcq sba sXD tpk -eVJ +cBG cct akA soz @@ -217287,10 +217290,10 @@ hCT aXo ide sZp -ohE +pyS sZp sZp -kpQ +uIJ sZp sZp sOm @@ -217894,7 +217897,7 @@ tfJ pjf tUm bgI -ofh +uTO wbv mrX kCj @@ -218012,7 +218015,7 @@ ulI kNf pcs mYx -aTf +nBp rof bta bCe @@ -218058,7 +218061,7 @@ kAP wKd ide qzx -cSH +gNs qOZ wbO utQ @@ -218415,7 +218418,7 @@ kCj jKs gVx lWr -lZi +xgk tpk urs iVF @@ -218832,7 +218835,7 @@ gXP gWh sZp uLF -bzO +eDY uLF sZp cRb @@ -221943,11 +221946,11 @@ pQF tYT tYT tYT -lei -jDl -jvl -tTk -xKm +mzu +mVh +iMf +gBx +ukH qJk qJk lcX @@ -222200,11 +222203,11 @@ eRh cfl cfl cfl -hWd +bwW wfr cMo tiA -lei +mzu coT gST lcX @@ -222457,11 +222460,11 @@ eRh cfl eLB cfl -laH +kER rko wfr xtV -rwR +jJh cfl cfl gyk @@ -222714,11 +222717,11 @@ eRh mkE wMo wMo -cGG +hwe pgY xVz xLg -qLP +sgt cfl cfl lcX @@ -222971,11 +222974,11 @@ eRh cfl uGh cfl -muJ +wdN oqO mPK xtV -ePR +qDe cfl cfl gyk @@ -223228,11 +223231,11 @@ eRh cfl cfl cfl -obY +pit mMJ xtV eUH -lei +mzu ugc uol lcX @@ -223485,11 +223488,11 @@ pQF akt akt akt -lei -fsX -vhw -dqh -xKm +mzu +iWF +knr +dKI +ukH wiK wiK lcX @@ -228392,7 +228395,7 @@ aQY dsQ dRf bwO -dNx +rEB leE vYX vYX @@ -231167,7 +231170,7 @@ gTZ goM ojU qOK -rJl +qkT gta dNp xiB @@ -231493,7 +231496,7 @@ buD psl nNt ukK -bOo +bmS iki sus ulx @@ -231924,7 +231927,7 @@ hrN vzh omu hLk -aoq +lRb arj lKb vQQ @@ -232517,7 +232520,7 @@ kPf kPf qzz gyV -uaq +nFV rjO jHG xrT @@ -233048,7 +233051,7 @@ jVg sKy myL wrz -uED +xnA cSf kLR sdx @@ -233217,7 +233220,7 @@ mjZ vyd wql mdY -jVS +izG cmf ufd cHh @@ -233549,13 +233552,13 @@ usu gLc kWO gLc -lLF +mba gLc -lLF +mba gLc -lLF +mba gLc -lLF +mba kta xxS hXr @@ -233802,17 +233805,17 @@ usu nPy usu gLc -lLF +mba gLc kWO gLc -lLF +mba gLc kWO gLc kWO gLc -lLF +mba cwF xxS ydM @@ -233966,13 +233969,13 @@ nao rHT cKJ rHT -iiy +wfp rUd xiE rHT rHT afm -bNE +vWp qPC xbB exN @@ -234061,13 +234064,13 @@ klU gLc klU gLc -lLF +mba gLc -lLF +mba gLc kWO gLc -lLF +mba gLc kWO cwF @@ -234318,13 +234321,13 @@ klU mQV klU gLc -lLF +mba gLc -lLF +mba gLc kWO gLc -lLF +mba gLc kWO kta @@ -234768,7 +234771,7 @@ eDF pMa fdF yda -ikF +mxX sBF syc ssb @@ -234832,15 +234835,15 @@ klU mQV gTL gLc -lLF +mba loJ -lLF +mba gLc -lLF +mba gLc kWO gLc -lLF +mba kta kta kta @@ -235089,15 +235092,15 @@ klU gLc klU gLc -lLF +mba fKh kWO gLc -lLF +mba gLc kWO gLc -lLF +mba gLc gLc cwF @@ -235346,13 +235349,13 @@ klU gLc klU gLc -lLF +mba gLc kWO gLc -lLF +mba gLc -lLF +mba gLc kWO gLc diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm index 253b34157f4a..1f1bce7a8fde 100644 --- a/_maps/map_files/BoxStation/BoxStation.dmm +++ b/_maps/map_files/BoxStation/BoxStation.dmm @@ -516,6 +516,20 @@ /obj/structure/sign/departments/maint/directional/south, /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) +"ajR" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/obj/effect/landmark/start/gary/uncommon, +/turf/open/floor/stone, +/area/station/smithing) "ajT" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, @@ -1645,6 +1659,11 @@ /obj/machinery/duct, /turf/open/floor/iron/dark, /area/station/medical/morgue) +"aDR" = ( +/obj/effect/landmark/blobstart, +/obj/effect/landmark/start/gary, +/turf/open/floor/wood, +/area/station/maintenance/port/fore) "aDS" = ( /obj/machinery/washing_machine, /obj/machinery/light/small/directional/east, @@ -2217,6 +2236,12 @@ }, /turf/open/floor/carpet/executive, /area/station/command/heads_quarters/blueshield) +"aNZ" = ( +/obj/structure/chair/comfy/black, +/obj/structure/cable, +/obj/effect/landmark/start/blueshield, +/turf/open/floor/wood, +/area/station/command/heads_quarters/blueshield) "aOj" = ( /obj/effect/turf_decal/trimline/green/line{ dir = 4 @@ -2590,10 +2615,6 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron/dark, /area/station/maintenance/disposal/incinerator) -"aTt" = ( -/obj/effect/landmark/start/gary, -/turf/open/floor/plating, -/area/station/maintenance/port) "aTv" = ( /obj/structure/chair/stool/directional/south, /obj/machinery/flasher/directional/west{ @@ -3394,6 +3415,18 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) +"bgW" = ( +/obj/effect/turf_decal/siding/dark_blue{ + dir = 5 + }, +/obj/effect/turf_decal/siding/dark_blue/corner{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/light/floor/has_bulb, +/obj/effect/landmark/start/blueshield, +/turf/open/floor/carpet/neon/simple/blue/nodots, +/area/station/command/heads_quarters/blueshield) "bhd" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -4253,11 +4286,6 @@ /obj/effect/landmark/start/paramedic, /turf/open/floor/iron, /area/station/medical/paramedic) -"buH" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, -/obj/effect/landmark/start/gary, -/turf/open/floor/plating, -/area/station/maintenance/port/fore) "buR" = ( /obj/effect/turf_decal/trimline/brown/filled/line, /obj/structure/cable, @@ -4836,16 +4864,6 @@ }, /turf/open/floor/iron/dark, /area/station/commons/vacant_room/commissary) -"bFn" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/chair/wood{ - dir = 4 - }, -/obj/effect/landmark/start/gary/rare, -/turf/open/floor/wood, -/area/station/service/library/lounge) "bFv" = ( /obj/machinery/firealarm/directional/north, /obj/machinery/camera/autoname/directional/north, @@ -5820,6 +5838,17 @@ /obj/structure/cable, /turf/open/floor/iron/dark/side, /area/station/service/hydroponics/garden) +"bVm" = ( +/obj/machinery/door/airlock/corporate{ + name = "Blueshield's Quarters" + }, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/access/all/admin/general, +/turf/open/floor/wood, +/area/station/command/heads_quarters/blueshield) "bVs" = ( /obj/machinery/light/small/directional/south, /obj/machinery/camera/autoname/directional/south, @@ -5909,10 +5938,6 @@ }, /turf/open/floor/grass, /area/station/medical/medbay/central) -"bXe" = ( -/obj/effect/landmark/start/gary, -/turf/open/floor/carpet, -/area/station/maintenance/starboard/fore) "bXo" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -6554,15 +6579,6 @@ dir = 4 }, /area/station/commons/fitness/recreation) -"cgL" = ( -/obj/effect/turf_decal/tile/yellow/half/contrasted{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood/gibs/old, -/obj/effect/landmark/start/gary, -/turf/open/floor/iron, -/area/station/maintenance/starboard/aft) "cgP" = ( /obj/effect/turf_decal/trimline/green/filled/line, /obj/effect/turf_decal/trimline/green/line{ @@ -8698,6 +8714,11 @@ /obj/machinery/light/small/directional/north, /turf/open/floor/iron/dark, /area/station/cargo/sorting) +"cSu" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/gary, +/turf/open/floor/iron, +/area/station/maintenance/starboard/aft) "cSv" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ @@ -9023,15 +9044,6 @@ dir = 8 }, /area/station/service/hydroponics/garden) -"cWr" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/glass, -/obj/effect/spawner/random/trash/cigbutt, -/obj/item/broken_bottle, -/obj/machinery/duct, -/obj/effect/landmark/start/gary, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) "cWy" = ( /obj/effect/turf_decal/trimline/dark_blue/filled/line{ dir = 1 @@ -9481,6 +9493,13 @@ }, /turf/open/floor/iron, /area/station/science/robotics/lab) +"det" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/landmark/start/gary/rare, +/turf/open/floor/iron/sepia, +/area/station/service/library/artgallery) "deB" = ( /obj/effect/spawner/random/vending/snackvend, /turf/open/floor/iron/dark, @@ -9925,12 +9944,6 @@ /obj/effect/turf_decal/trimline/yellow/line, /turf/open/floor/iron, /area/station/hallway/primary/aft) -"dlz" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/duct, -/obj/effect/landmark/start/gary, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) "dlC" = ( /obj/docking_port/stationary{ dir = 8; @@ -11185,6 +11198,12 @@ }, /turf/open/floor/engine, /area/station/ai_monitored/turret_protected/aisat_interior) +"dIu" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/restraints/handcuffs/cable/zipties/used, +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/port/aft) "dIE" = ( /obj/effect/turf_decal/tile/dark_blue/fourcorners, /obj/structure/disposalpipe/junction/flip{ @@ -11994,11 +12013,6 @@ /obj/machinery/firealarm/directional/north, /turf/open/floor/iron/dark, /area/station/command/heads_quarters/blueshield) -"dXK" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/start/gary, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) "dXL" = ( /obj/structure/table, /obj/item/electronics/airlock{ @@ -12157,6 +12171,14 @@ /obj/machinery/duct, /turf/open/floor/iron, /area/station/service/hydroponics) +"dZz" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/landmark/start/gary, +/turf/open/floor/iron/dark, +/area/station/maintenance/department/cargo) "dZE" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -12769,17 +12791,6 @@ /obj/machinery/holopad, /turf/open/floor/iron/dark/smooth_large, /area/station/ai_monitored/command/nuke_storage) -"ekL" = ( -/obj/structure/cable, -/obj/machinery/door/airlock/corporate{ - id_tag = "BSdoor"; - name = "Blueshield's Office" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/command/captain, -/turf/open/floor/carpet/executive, -/area/station/command/heads_quarters/blueshield) "ekU" = ( /obj/effect/spawner/random/structure/table, /obj/item/assembly/timer, @@ -13923,17 +13934,6 @@ dir = 1 }, /area/station/commons/dorms) -"eDW" = ( -/obj/effect/turf_decal/siding/dark_blue{ - dir = 5 - }, -/obj/effect/turf_decal/siding/dark_blue/corner{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/light/floor/has_bulb, -/turf/open/floor/carpet/neon/simple/blue/nodots, -/area/station/command/heads_quarters/blueshield) "eED" = ( /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 8 @@ -16647,22 +16647,16 @@ /obj/item/storage/box/bodybags, /turf/open/floor/iron/white, /area/station/security/medical) +"fCi" = ( +/obj/effect/mapping_helpers/burnt_floor, +/obj/effect/landmark/start/gary/uncommon, +/turf/open/floor/plating, +/area/station/maintenance/department/engine/atmos) "fCw" = ( /obj/effect/spawner/random/structure/table, /obj/effect/spawner/random/entertainment/cigarette_pack, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) -"fCE" = ( -/obj/machinery/door/airlock/corporate{ - name = "Blueshield's Quarters" - }, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/command/captain, -/turf/open/floor/wood, -/area/station/command/heads_quarters/blueshield) "fCT" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -16785,15 +16779,6 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/security/checkpoint/supply) -"fEX" = ( -/obj/effect/turf_decal/tile/dark_blue/fourcorners, -/obj/machinery/door/airlock/corporate{ - name = "Blueshield's Quarters" - }, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/command/captain, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/blueshield) "fFd" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -16835,6 +16820,11 @@ "fFV" = ( /turf/closed/wall, /area/station/solars/port/aft) +"fGf" = ( +/obj/structure/chair/stool/bar/directional/south, +/obj/effect/landmark/start/gary, +/turf/open/floor/carpet/green, +/area/station/maintenance/starboard/aft) "fGh" = ( /obj/structure/sign/warning/test_chamber/directional/north, /obj/effect/decal/cleanable/dirt, @@ -18705,6 +18695,15 @@ dir = 8 }, /area/station/commons/fitness/recreation) +"gmT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/glass, +/obj/effect/spawner/random/trash/cigbutt, +/obj/item/broken_bottle, +/obj/machinery/duct, +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "gmU" = ( /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 8 @@ -19263,6 +19262,14 @@ }, /turf/open/floor/iron/dark, /area/station/security/checkpoint/engineering) +"gvx" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/structure/altar_of_gods, +/obj/item/book/bible, +/turf/open/floor/carpet, +/area/station/service/chapel) "gvD" = ( /obj/effect/turf_decal/stripes/corner, /obj/effect/turf_decal/stripes/corner{ @@ -19334,6 +19341,11 @@ dir = 1 }, /area/station/service/hydroponics) +"gwI" = ( +/obj/machinery/duct, +/obj/effect/landmark/start/gary/rare, +/turf/open/floor/iron/showroomfloor, +/area/station/commons/toilet/restrooms) "gwS" = ( /turf/open/floor/iron/dark, /area/station/commons/vacant_room/commissary) @@ -19762,11 +19774,6 @@ }, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/aisat/foyer) -"gCN" = ( -/obj/structure/chair/stool/bar/directional/south, -/obj/effect/landmark/start/gary, -/turf/open/floor/carpet/green, -/area/station/maintenance/starboard/aft) "gCP" = ( /obj/machinery/space_heater, /turf/open/floor/plating, @@ -21265,6 +21272,15 @@ "gZH" = ( /turf/open/floor/engine/co2, /area/station/engineering/atmos) +"gZM" = ( +/obj/effect/turf_decal/tile/dark_blue/fourcorners, +/obj/machinery/door/airlock/corporate{ + name = "Blueshield's Quarters" + }, +/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/access/all/admin/general, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/blueshield) "gZP" = ( /obj/effect/turf_decal/trimline/green/filled/line{ dir = 10 @@ -21333,11 +21349,6 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) -"haV" = ( -/obj/effect/mapping_helpers/burnt_floor, -/obj/effect/landmark/start/gary/uncommon, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) "hbb" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -22238,14 +22249,6 @@ }, /turf/open/floor/iron/dark, /area/station/security/brig) -"hqX" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/landmark/start/gary, -/turf/open/floor/plating, -/area/station/maintenance/starboard/fore) "hrk" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/turf_decal/trimline/red/filled/line{ @@ -22859,6 +22862,13 @@ /obj/effect/turf_decal/tile/blue/fourcorners, /turf/open/floor/iron/white, /area/station/medical/office) +"hBG" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/blobstart, +/obj/machinery/duct, +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/port/aft) "hBK" = ( /obj/effect/turf_decal/stripes/box, /obj/machinery/camera/autoname/directional/west, @@ -25341,6 +25351,14 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/security/office) +"isD" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/starboard/fore) "isM" = ( /obj/machinery/status_display/evac/directional/south, /obj/structure/easel, @@ -25603,13 +25621,6 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) -"ivh" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/landmark/start/gary/rare, -/turf/open/floor/iron/sepia, -/area/station/service/library/artgallery) "ivi" = ( /obj/structure/displaycase/captain, /turf/open/floor/wood, @@ -27161,6 +27172,10 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, /area/station/service/chapel) +"iWE" = ( +/obj/effect/landmark/start/gary, +/turf/open/floor/carpet, +/area/station/maintenance/starboard/fore) "iWI" = ( /obj/effect/decal/cleanable/cobweb, /obj/effect/spawner/random/entertainment/coin, @@ -27520,6 +27535,12 @@ /obj/effect/turf_decal/trimline/red/line, /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) +"jcn" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/duct, +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "jct" = ( /obj/effect/turf_decal/trimline/dark_blue/filled/warning{ dir = 4 @@ -27604,6 +27625,16 @@ }, /turf/open/floor/plating, /area/station/maintenance/department/medical) +"jdT" = ( +/obj/machinery/light/floor/has_bulb, +/obj/machinery/door/airlock/highsecurity{ + name = "Blueshield's Equipment Room" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/access/all/admin/general, +/turf/open/floor/wood, +/area/station/command/heads_quarters/blueshield) "jdV" = ( /obj/structure/disposalpipe/segment{ dir = 9 @@ -28205,14 +28236,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/engineering/main) -"jqu" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/landmark/start/gary, -/turf/open/floor/iron/dark, -/area/station/maintenance/department/cargo) "jqH" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ @@ -28366,14 +28389,6 @@ "juc" = ( /turf/open/floor/iron, /area/station/service/hydroponics) -"jud" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/altar_of_gods, -/obj/item/book/bible, -/turf/open/floor/carpet, -/area/station/service/chapel) "jug" = ( /obj/effect/turf_decal/tile/dark_blue/fourcorners, /obj/structure/cable, @@ -29639,6 +29654,13 @@ "jNZ" = ( /turf/open/floor/iron/showroomfloor, /area/station/security/warden) +"jOc" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/obj/effect/landmark/start/gary, +/turf/open/floor/wood, +/area/station/commons/vacant_room/office) "jOi" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/structure/chair_maintenance{ @@ -31916,6 +31938,12 @@ /obj/machinery/station_map/engineering/directional/south, /turf/open/floor/iron/dark, /area/station/security/brig) +"kDm" = ( +/obj/effect/landmark/blobstart, +/obj/machinery/duct, +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "kDx" = ( /obj/machinery/firealarm/directional/east, /turf/open/floor/iron/dark/side{ @@ -32379,11 +32407,6 @@ }, /turf/open/floor/carpet/blue, /area/station/medical/psychology) -"kMq" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/start/gary, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) "kMC" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/components/binary/pump/on/supply/hidden/layer4, @@ -34030,14 +34053,6 @@ /obj/machinery/light/small/directional/south, /turf/open/floor/iron/white, /area/station/science/xenobiology) -"lnt" = ( -/obj/machinery/light/broken/directional/east, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/effect/landmark/start/gary, -/turf/open/floor/iron/cafeteria, -/area/station/maintenance/starboard/aft) "lnu" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -34375,11 +34390,6 @@ }, /turf/open/floor/engine, /area/station/science/xenobiology) -"ltv" = ( -/obj/effect/landmark/blobstart, -/obj/effect/landmark/start/gary, -/turf/open/floor/wood, -/area/station/maintenance/port/fore) "ltB" = ( /obj/structure/cable, /obj/effect/turf_decal/delivery/red, @@ -34578,12 +34588,6 @@ /obj/effect/spawner/random/structure/tank_holder, /turf/open/floor/plating, /area/station/maintenance/department/medical) -"lwi" = ( -/obj/effect/landmark/blobstart, -/obj/machinery/duct, -/obj/effect/landmark/start/gary, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) "lwj" = ( /obj/structure/cable/layer1, /turf/open/floor/plating/airless, @@ -35205,13 +35209,6 @@ /obj/item/camera_film, /turf/open/floor/iron/dark/textured, /area/station/service/library/printer) -"lGA" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/blobstart, -/obj/machinery/duct, -/obj/effect/landmark/start/gary, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) "lGD" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -35773,6 +35770,10 @@ /obj/structure/plasticflaps/opaque, /turf/open/floor/iron/white, /area/station/maintenance/department/medical) +"lOH" = ( +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/port) "lOJ" = ( /obj/structure/window/reinforced/spawner/directional/south, /turf/open/floor/grass, @@ -36404,11 +36405,6 @@ "mbx" = ( /turf/open/floor/iron/dark, /area/station/hallway/secondary/exit/departure_lounge) -"mby" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/start/gary, -/turf/open/floor/iron, -/area/station/maintenance/starboard/aft) "mbE" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 6 @@ -36790,16 +36786,6 @@ /obj/machinery/camera/autoname/directional/west, /turf/open/floor/iron/dark/smooth_large, /area/station/engineering/main) -"miU" = ( -/obj/machinery/light/floor/has_bulb, -/obj/machinery/door/airlock/highsecurity{ - name = "Blueshield's Equipment Room" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/command/captain, -/turf/open/floor/wood, -/area/station/command/heads_quarters/blueshield) "miX" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/trash/bin, @@ -38787,6 +38773,14 @@ dir = 6 }, /area/station/service/janitor) +"mTo" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/chair_maintenance{ + dir = 8 + }, +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/starboard/fore) "mTp" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -39945,16 +39939,6 @@ }, /turf/open/floor/iron/dark/textured, /area/station/command/teleporter) -"nmw" = ( -/obj/structure/bed/double{ - dir = 4 - }, -/obj/item/bedsheet/nanotrasen/double{ - dir = 4 - }, -/obj/machinery/newscaster/directional/north, -/turf/open/floor/carpet/executive, -/area/station/command/heads_quarters/blueshield) "nmY" = ( /obj/machinery/airalarm/directional/south, /obj/structure/destructible/cult/item_dispenser/archives/library, @@ -40229,11 +40213,6 @@ /obj/machinery/duct, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) -"nrM" = ( -/obj/machinery/duct, -/obj/effect/landmark/start/gary/rare, -/turf/open/floor/iron/showroomfloor, -/area/station/commons/toilet/restrooms) "nrN" = ( /obj/structure/flora/bush/fullgrass/style_random, /obj/structure/flora/bush/grassy/style_random, @@ -40642,6 +40621,11 @@ /obj/structure/closet/emcloset/anchored, /turf/open/floor/iron/dark, /area/station/hallway/secondary/exit/departure_lounge) +"nyj" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "nyn" = ( /obj/effect/turf_decal/trimline/dark_blue/filled/line{ dir = 5 @@ -44591,6 +44575,11 @@ dir = 4 }, /area/station/service/hydroponics) +"oLr" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/port/fore) "oLy" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/structure/chair_flipped{ @@ -46615,6 +46604,11 @@ /obj/machinery/icecream_vat, /turf/open/floor/iron/kitchen, /area/station/service/kitchen) +"puW" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/port/aft) "puX" = ( /obj/structure/sign/warning/secure_area/directional/south, /obj/machinery/space_heater, @@ -48514,11 +48508,6 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) -"qdV" = ( -/obj/structure/chair/comfy/black, -/obj/structure/cable, -/turf/open/floor/wood, -/area/station/command/heads_quarters/blueshield) "qdZ" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 1 @@ -50232,6 +50221,17 @@ /obj/machinery/light/directional/north, /turf/open/floor/iron/dark, /area/station/engineering/atmos) +"qKB" = ( +/obj/structure/cable, +/obj/machinery/door/airlock/corporate{ + id_tag = "BSdoor"; + name = "Blueshield's Office" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/access/all/admin/general, +/turf/open/floor/carpet/executive, +/area/station/command/heads_quarters/blueshield) "qKG" = ( /obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 4 @@ -51315,14 +51315,6 @@ /obj/machinery/duct, /turf/open/floor/plating, /area/station/maintenance/department/cargo) -"rdA" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/structure/cable, -/obj/effect/landmark/start/gary, -/turf/open/floor/iron/dark, -/area/station/commons/vacant_room/commissary) "rdG" = ( /obj/effect/turf_decal/trimline/purple/filled/line, /obj/machinery/camera/autoname/directional/south, @@ -53193,13 +53185,6 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron/dark, /area/station/security/checkpoint/customs/auxiliary) -"rGP" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/effect/landmark/start/gary, -/turf/open/floor/wood, -/area/station/commons/vacant_room/office) "rGT" = ( /obj/effect/turf_decal/bot, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -57074,6 +57059,17 @@ /obj/machinery/duct, /turf/open/floor/iron/white, /area/station/medical/virology) +"sZg" = ( +/obj/structure/bed/double{ + dir = 4 + }, +/obj/item/bedsheet/nanotrasen/double{ + dir = 4 + }, +/obj/machinery/newscaster/directional/north, +/obj/effect/landmark/start/blueshield, +/turf/open/floor/carpet/executive, +/area/station/command/heads_quarters/blueshield) "sZi" = ( /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, @@ -61456,20 +61452,6 @@ /obj/item/kirbyplants/random, /turf/open/floor/wood, /area/station/service/library/private) -"uvo" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/effect/turf_decal/siding/wood/corner{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/obj/effect/landmark/start/gary/uncommon, -/turf/open/floor/stone, -/area/station/smithing) "uvN" = ( /obj/effect/turf_decal/tile/blue/opposingcorners{ dir = 1 @@ -61888,6 +61870,11 @@ /obj/structure/cable, /turf/open/floor/iron/white, /area/station/medical/office) +"uFo" = ( +/obj/effect/spawner/random/entertainment/coin, +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/starboard/fore) "uFv" = ( /obj/effect/turf_decal/tile/green/anticorner/contrasted, /obj/structure/table, @@ -63608,6 +63595,14 @@ /obj/structure/table, /turf/open/floor/iron/white, /area/station/medical/patients_rooms/room_b) +"vhb" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/obj/structure/cable, +/obj/effect/landmark/start/gary, +/turf/open/floor/iron/dark, +/area/station/commons/vacant_room/commissary) "vhd" = ( /obj/effect/turf_decal/trimline/red/filled/warning{ dir = 1 @@ -66376,12 +66371,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/white, /area/station/science/research) -"weV" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/restraints/handcuffs/cable/zipties/used, -/obj/effect/landmark/start/gary, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) "wfb" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/trash/moisture_trap, @@ -67510,6 +67499,16 @@ /obj/structure/cable, /turf/open/floor/iron/white, /area/station/medical/medbay/central) +"wzb" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/structure/chair/wood{ + dir = 4 + }, +/obj/effect/landmark/start/gary/rare, +/turf/open/floor/wood, +/area/station/service/library/lounge) "wzj" = ( /obj/structure/closet/secure_closet/blueshield, /obj/item/storage/bag/garment/blueshield, @@ -69550,6 +69549,15 @@ }, /turf/open/floor/iron/dark, /area/station/security/office) +"xhY" = ( +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/gibs/old, +/obj/effect/landmark/start/gary, +/turf/open/floor/iron, +/area/station/maintenance/starboard/aft) "xih" = ( /obj/effect/landmark/navigate_destination/common/holodeck, /turf/open/floor/engine{ @@ -71067,11 +71075,6 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) -"xIC" = ( -/obj/effect/spawner/random/entertainment/coin, -/obj/effect/landmark/start/gary, -/turf/open/floor/plating, -/area/station/maintenance/starboard/fore) "xIH" = ( /obj/machinery/firealarm/directional/east, /turf/open/floor/iron/dark, @@ -71453,14 +71456,6 @@ dir = 8 }, /area/station/command/heads_quarters/cmo) -"xRe" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/chair_maintenance{ - dir = 8 - }, -/obj/effect/landmark/start/gary, -/turf/open/floor/plating, -/area/station/maintenance/starboard/fore) "xRh" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -72103,6 +72098,14 @@ dir = 4 }, /area/station/service/hydroponics) +"yaQ" = ( +/obj/machinery/light/broken/directional/east, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/obj/effect/landmark/start/gary, +/turf/open/floor/iron/cafeteria, +/area/station/maintenance/starboard/aft) "yaT" = ( /obj/effect/turf_decal/tile/blue/fourcorners, /obj/machinery/camera/directional/east{ @@ -80775,7 +80778,7 @@ wZF cRp fby hxM -jqu +dZz sKs qQe xhj @@ -81973,7 +81976,7 @@ ksa ksa fPN whJ -buH +oLr hjc fPN fBd @@ -82750,7 +82753,7 @@ fPN tLs mEg lYe -rGP +jOc mEg nyL ydv @@ -84568,7 +84571,7 @@ fPN giy vXA mNt -nrM +gwI bKL nai uXH @@ -85567,7 +85570,7 @@ fEP uoo nGn pGM -ltv +aDR yhT byj odN @@ -92328,7 +92331,7 @@ cLZ cLZ luw yce -aTt +lOH yce luw nwz @@ -92353,7 +92356,7 @@ eub wEB cuU nwz -kMq +puW cuU vuH jgH @@ -94406,11 +94409,11 @@ tcw eub wEB nwz -weV +dIu nwz jwW ghA -kMq +puW nwz jwW nwz @@ -94418,7 +94421,7 @@ tuu jwW nwz vIQ -lGA +hBG vIQ xba xba @@ -94650,7 +94653,7 @@ mxZ wEB nwz feW -kMq +puW nwz nwz jwW @@ -98215,7 +98218,7 @@ hjB cjW tgq tgq -fEX +gZM tgq tgq tgq @@ -98471,9 +98474,9 @@ gbD hjB xLi tgq -nmw +sZg qkl -fCE +bVm hRl oxS qZF @@ -98732,7 +98735,7 @@ anb eTd qZF tjH -qdV +aNZ oHZ skJ qGt @@ -99243,7 +99246,7 @@ hjB cjW tgq qZF -miU +jdT qZF bFw dzH @@ -99757,11 +99760,11 @@ hjB cjW tgq dXw -eDW +bgW vsc cUF cUF -ekL +qKB fVn hEZ otg @@ -104668,7 +104671,7 @@ mwc ygO blC vwz -rdA +vhb wlw rRZ iyt @@ -105145,7 +105148,7 @@ wEA mZc voi sIW -uvo +ajR vNF tZr aeJ @@ -112151,7 +112154,7 @@ ilj oqK wGN nCa -haV +fCi gRf nLS sZo @@ -115995,7 +115998,7 @@ nBE nBE vJw dgS -lwi +kDm lNF dgS vsB @@ -117257,7 +117260,7 @@ bQY gkM vpL chg -ivh +det sAH fep lvR @@ -117271,11 +117274,11 @@ jOx raC nBE imG -dXK +nyj mhc sxS mhc -dXK +nyj sxi nBE mhc @@ -117285,7 +117288,7 @@ mhc jDj nBE rtJ -cWr +gmT iSr nBE cnU @@ -117537,7 +117540,7 @@ fbT nBE uKp czU -dlz +jcn vkc czU tNd @@ -117722,7 +117725,7 @@ iLB jet enc ulm -bXe +iWE vMt gXK iLB @@ -118001,7 +118004,7 @@ ovM gZc qDZ qDZ -jud +gvx qDZ qDZ qra @@ -118285,7 +118288,7 @@ lAc omZ lAZ owN -bFn +wzb vqc lAZ rOR @@ -119329,7 +119332,7 @@ nBE mhc cNN bcw -lnt +yaQ mhc pCb nep @@ -120621,7 +120624,7 @@ hpY nBE jOi wMo -gCN +fGf tPw plH nBE @@ -121061,7 +121064,7 @@ jxy jxy fXj tvo -hqX +isD aOz gxY jxy @@ -121070,7 +121073,7 @@ iLB lKO jxy iLB -xIC +uFo iLB jxy iLB @@ -121127,7 +121130,7 @@ mhc tZd tZd dsV -mby +cSu tZd mhc hpY @@ -121912,7 +121915,7 @@ khD wtN wzz sZi -dXK +nyj mhc mhc aDe @@ -124155,7 +124158,7 @@ iLB jxy iLB vox -xRe +mTo vox iLB jxy @@ -124479,7 +124482,7 @@ bOr bOr nBE hKC -cgL +xhY xaD nBE byX diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index 91450636521f..b70950e0f9ad 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -4001,11 +4001,6 @@ }, /turf/open/floor/iron, /area/station/maintenance/port/aft) -"aTZ" = ( -/obj/effect/turf_decal/siding/wood, -/obj/effect/landmark/start/gary/rare, -/turf/open/floor/iron/sepia, -/area/station/service/library/artgallery) "aUo" = ( /obj/effect/turf_decal/tile/neutral/full, /obj/structure/cable, @@ -4345,17 +4340,6 @@ /obj/effect/mapping_helpers/airlock/access/all/command/hop, /turf/open/floor/iron, /area/station/security/checkpoint/customs/aft) -"aYG" = ( -/obj/structure/cable, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/landmark/generic_maintenance_landmark, -/obj/effect/landmark/event_spawn, -/obj/effect/landmark/blobstart, -/obj/effect/landmark/start/gary, -/turf/open/floor/plating, -/area/station/maintenance/department/electrical) "aYK" = ( /obj/structure/cable, /obj/effect/turf_decal/stripes/line{ @@ -4651,6 +4635,16 @@ /obj/machinery/status_display/ai/directional/west, /turf/open/floor/carpet, /area/station/command/heads_quarters/captain) +"bcJ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/generic_maintenance_landmark, +/obj/effect/turf_decal/tile/yellow/fourcorners, +/obj/effect/landmark/blobstart, +/obj/effect/landmark/event_spawn, +/obj/effect/landmark/start/gary, +/turf/open/floor/iron, +/area/station/maintenance/port) "bcR" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/structure/chair/office{ @@ -5550,6 +5544,16 @@ }, /turf/open/floor/plating, /area/station/maintenance/department/chapel) +"bnN" = ( +/obj/effect/landmark/generic_maintenance_landmark, +/obj/structure/chair/wood{ + dir = 4 + }, +/obj/effect/landmark/blobstart, +/obj/effect/landmark/event_spawn, +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/service/theater/abandoned) "bnR" = ( /obj/effect/turf_decal/trimline/blue/filled/corner{ dir = 4 @@ -7321,6 +7325,15 @@ /obj/machinery/light/directional/south, /turf/open/floor/iron, /area/station/hallway/secondary/command) +"bIh" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/structure/cable, +/obj/effect/turf_decal/siding/wood, +/obj/effect/landmark/start/gary/uncommon, +/turf/open/floor/stone, +/area/station/smithing) "bIk" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, @@ -8323,12 +8336,6 @@ /obj/machinery/airalarm/directional/north, /turf/open/floor/iron/grimy, /area/station/service/chapel) -"bTc" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/landmark/start/hangover, -/obj/effect/landmark/start/gary/rare, -/turf/open/floor/iron/grimy, -/area/station/service/library/lounge) "bTe" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -11933,20 +11940,6 @@ }, /turf/open/floor/iron/grimy, /area/station/command/heads_quarters/hos) -"cLY" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/generic_maintenance_landmark, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/obj/effect/landmark/event_spawn, -/obj/effect/landmark/blobstart, -/obj/effect/landmark/start/gary, -/turf/open/floor/iron, -/area/station/maintenance/port) "cMf" = ( /obj/structure/cable, /obj/effect/turf_decal/trimline/red/filled/line{ @@ -13825,12 +13818,6 @@ /obj/machinery/duct, /turf/open/floor/iron/large, /area/station/hallway/secondary/exit/departure_lounge) -"dkM" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/carpet/executive, -/area/station/command/heads_quarters/blueshield) "dla" = ( /obj/effect/decal/cleanable/dirt, /obj/item/shard, @@ -14884,6 +14871,13 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/maintenance/port/aft) +"dzJ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/radio/intercom/directional/east, +/obj/effect/mapping_helpers/burnt_floor, +/obj/effect/landmark/start/gary/uncommon, +/turf/open/floor/plating, +/area/station/commons/toilet/restrooms) "dAc" = ( /obj/effect/landmark/start/prisoner, /turf/open/floor/iron/dark/side, @@ -16311,6 +16305,13 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/cargo/lobby) +"dSj" = ( +/obj/effect/spawner/random/engineering/tracking_beacon, +/obj/effect/landmark/event_spawn, +/obj/effect/landmark/blobstart, +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/science/research/abandoned) "dSm" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -17608,6 +17609,13 @@ }, /turf/open/floor/iron, /area/station/medical/medbay/lobby) +"eix" = ( +/obj/effect/landmark/event_spawn, +/obj/effect/landmark/generic_maintenance_landmark, +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/landmark/start/gary/uncommon, +/turf/open/floor/wood, +/area/station/security/detectives_office/private_investigators_office) "eiB" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -18012,6 +18020,14 @@ /obj/effect/turf_decal/trimline/purple/filled/warning, /turf/open/floor/iron/white, /area/station/science/research) +"eox" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/hangover, +/obj/effect/landmark/start/gary/uncommon, +/turf/open/floor/wood, +/area/station/commons/dorms) "eoy" = ( /obj/structure/cable, /obj/effect/spawner/structure/window/reinforced, @@ -18272,6 +18288,22 @@ "eqU" = ( /turf/open/space, /area/space) +"erf" = ( +/obj/effect/turf_decal/siding/dark_blue, +/obj/effect/turf_decal/siding/dark_blue{ + dir = 1 + }, +/obj/machinery/door/window/brigdoor/left/directional/east, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/obj/effect/landmark/start/blueshield, +/turf/open/floor/carpet/neon/simple/blue/nodots, +/area/station/command/heads_quarters/blueshield) "erm" = ( /obj/structure/reagent_dispensers/plumbed{ dir = 4; @@ -18779,11 +18811,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central/aft) -"ewy" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/landmark/start/gary, -/turf/open/floor/iron/grimy, -/area/station/service/abandoned_gambling_den) "ewQ" = ( /obj/machinery/atmospherics/pipe/smart/simple/cyan/hidden{ dir = 4 @@ -19349,6 +19376,20 @@ /obj/effect/turf_decal/tile/neutral/full, /turf/open/floor/iron/large, /area/station/hallway/secondary/exit/departure_lounge) +"eEA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/generic_maintenance_landmark, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/obj/effect/landmark/event_spawn, +/obj/effect/landmark/blobstart, +/obj/effect/landmark/start/gary, +/turf/open/floor/iron, +/area/station/maintenance/port) "eEH" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -21965,6 +22006,13 @@ /obj/effect/turf_decal/tile/blue/fourcorners, /turf/open/floor/iron, /area/station/medical/treatment_center) +"fiZ" = ( +/obj/effect/spawner/random/trash/garbage, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/event_spawn, +/obj/effect/landmark/start/gary/uncommon, +/turf/open/floor/iron, +/area/station/maintenance/department/crew_quarters/bar) "fjf" = ( /obj/structure/lattice/catwalk, /turf/open/space, @@ -22044,6 +22092,12 @@ }, /turf/open/floor/iron/dark, /area/station/engineering/transit_tube) +"fkl" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/glass, +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/fore) "fkm" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, /obj/machinery/rnd/server/master, @@ -23681,13 +23735,6 @@ /obj/machinery/status_display/evac/directional/south, /turf/open/floor/iron/white, /area/station/medical/chemistry) -"fEC" = ( -/obj/effect/spawner/random/trash/garbage, -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/event_spawn, -/obj/effect/landmark/start/gary/uncommon, -/turf/open/floor/iron, -/area/station/maintenance/department/crew_quarters/bar) "fEI" = ( /obj/effect/spawner/structure/window/hollow/reinforced/directional{ dir = 9 @@ -24308,19 +24355,6 @@ /obj/effect/spawner/random/engineering/atmospherics_portable, /turf/open/floor/iron, /area/station/maintenance/department/medical/morgue) -"fMY" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/generic_maintenance_landmark, -/obj/effect/landmark/blobstart, -/obj/effect/landmark/event_spawn, -/obj/structure/chair/stool/directional/west, -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/landmark/start/gary, -/turf/open/floor/plating, -/area/station/maintenance/port/fore) "fMZ" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -24959,6 +24993,14 @@ /obj/machinery/airalarm/directional/west, /turf/open/floor/carpet/black, /area/station/security/prison/safe) +"fUQ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/chair_maintenance, +/obj/effect/landmark/start/gary, +/turf/open/floor/wood, +/area/station/maintenance/port/fore) "fUU" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/effect/turf_decal/siding/yellow, @@ -26648,11 +26690,6 @@ }, /turf/open/floor/iron, /area/station/science/auxlab/firing_range) -"gpU" = ( -/obj/item/book/bible, -/obj/structure/altar_of_gods, -/turf/open/floor/iron/grimy, -/area/station/service/chapel) "gpY" = ( /obj/effect/turf_decal/trimline/neutral/warning{ dir = 4 @@ -27949,21 +27986,6 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos) -"gED" = ( -/obj/effect/turf_decal/siding/dark_blue, -/obj/effect/turf_decal/siding/dark_blue{ - dir = 1 - }, -/obj/machinery/door/window/brigdoor/left/directional/east, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/carpet/neon/simple/blue/nodots, -/area/station/command/heads_quarters/blueshield) "gEF" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -28403,16 +28425,6 @@ }, /turf/open/floor/iron, /area/station/engineering/storage/tech) -"gJX" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/generic_maintenance_landmark, -/obj/effect/turf_decal/tile/yellow/fourcorners, -/obj/effect/landmark/blobstart, -/obj/effect/landmark/event_spawn, -/obj/effect/landmark/start/gary, -/turf/open/floor/iron, -/area/station/maintenance/port) "gJZ" = ( /obj/structure/cable, /obj/machinery/computer/records/security{ @@ -28848,6 +28860,11 @@ /obj/structure/cable, /turf/open/floor/iron/smooth, /area/station/maintenance/department/science/xenobiology) +"gPt" = ( +/obj/effect/landmark/event_spawn, +/obj/effect/landmark/start/gary/uncommon, +/turf/open/floor/plating, +/area/station/commons/toilet/locker) "gPv" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -31285,6 +31302,14 @@ /obj/effect/turf_decal/trimline/blue/filled/line, /turf/open/floor/iron/white, /area/station/medical/medbay/lobby) +"huS" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/visible, +/obj/effect/spawner/random/engineering/tracking_beacon, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/mapping_helpers/burnt_floor, +/obj/effect/landmark/start/gary, +/turf/open/floor/iron, +/area/station/maintenance/department/electrical) "huX" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/disposalpipe/segment{ @@ -33603,6 +33628,20 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, /area/station/service/abandoned_gambling_den) +"hZi" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/landmark/blobstart, +/obj/effect/landmark/generic_maintenance_landmark, +/obj/effect/landmark/event_spawn, +/obj/effect/landmark/start/gary, +/turf/open/floor/iron/dark, +/area/station/service/abandoned_gambling_den/gaming) "hZl" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/door/morgue{ @@ -34277,19 +34316,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/dark, /area/station/hallway/secondary/service) -"ifg" = ( -/obj/machinery/door/airlock/corporate{ - name = "Blueshield's Quarters" - }, -/obj/effect/mapping_helpers/airlock/access/all/command/captain, -/obj/effect/turf_decal/siding/dark_blue/end{ - dir = 8 - }, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/carpet/neon/simple/blue/nodots, -/area/station/command/heads_quarters/blueshield) "ifi" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/virology/glass{ @@ -34518,6 +34544,12 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/cargo/miningoffice) +"iiK" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/landmark/start/hangover, +/obj/effect/landmark/start/gary/rare, +/turf/open/floor/iron/grimy, +/area/station/service/library/lounge) "iiP" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -43940,6 +43972,15 @@ /obj/structure/lattice/catwalk, /turf/open/space/basic, /area/space/nearstation) +"kss" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/event_spawn, +/obj/effect/landmark/generic_maintenance_landmark, +/obj/effect/landmark/blobstart, +/obj/machinery/duct, +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/medical/abandoned) "ksy" = ( /obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 8 @@ -44003,6 +44044,13 @@ dir = 8 }, /area/station/hallway/primary/fore) +"ktR" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/event_spawn, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/gary, +/turf/open/floor/iron/grimy, +/area/station/commons/vacant_room/office) "ktV" = ( /obj/structure/disposalpipe/sorting/mail{ dir = 4; @@ -44854,12 +44902,6 @@ }, /turf/open/floor/iron/white/textured, /area/station/medical/pathology) -"kEA" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/table/wood/fancy, -/obj/item/book/bible, -/turf/open/floor/iron/dark, -/area/station/service/chapel/funeral) "kEJ" = ( /obj/structure/cable, /obj/effect/decal/cleanable/dirt, @@ -46235,11 +46277,6 @@ /obj/structure/ghost_critter_spawn, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) -"kWK" = ( -/obj/effect/landmark/event_spawn, -/obj/effect/landmark/start/gary/uncommon, -/turf/open/floor/plating, -/area/station/commons/toilet/locker) "kWM" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -49234,6 +49271,13 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central/aft) +"lGL" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/obj/effect/landmark/start/blueshield, +/turf/open/floor/carpet/executive, +/area/station/command/heads_quarters/blueshield) "lGQ" = ( /obj/effect/spawner/random/structure/crate_loot, /obj/effect/turf_decal/bot, @@ -49375,6 +49419,17 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/cargo/warehouse) +"lIE" = ( +/obj/structure/cable, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/landmark/generic_maintenance_landmark, +/obj/effect/landmark/event_spawn, +/obj/effect/landmark/blobstart, +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/department/electrical) "lII" = ( /obj/structure/chair/sofa/bench{ dir = 1 @@ -50017,19 +50072,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, /area/station/medical/treatment_center) -"lPG" = ( -/obj/effect/mapping_helpers/airlock/access/all/command/captain, -/obj/machinery/door/airlock/corporate{ - id_tag = "BSdoor"; - name = "Blueshield's Office" - }, -/obj/effect/turf_decal/siding/dark_blue/end, -/obj/machinery/door/firedoor, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/carpet/neon/simple/blue/nodots, -/area/station/command/heads_quarters/blueshield) "lPH" = ( /obj/structure/cable, /obj/effect/turf_decal/trimline/red/filled/line{ @@ -52212,6 +52254,19 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/fore) +"msI" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/generic_maintenance_landmark, +/obj/effect/landmark/blobstart, +/obj/effect/landmark/event_spawn, +/obj/structure/chair/stool/directional/west, +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/port/fore) "msJ" = ( /obj/machinery/status_display/evac/directional/east, /obj/effect/turf_decal/stripes/line{ @@ -54628,6 +54683,11 @@ /obj/machinery/plumbing/ooze_compressor, /turf/open/floor/iron/dark, /area/station/science/xenobiology) +"mVi" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/landmark/start/gary, +/turf/open/floor/iron/grimy, +/area/station/service/abandoned_gambling_den) "mVo" = ( /obj/structure/disposalpipe/segment{ dir = 6 @@ -55055,14 +55115,6 @@ }, /turf/open/floor/iron, /area/station/tcommsat/server) -"nay" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/visible, -/obj/effect/spawner/random/engineering/tracking_beacon, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/mapping_helpers/burnt_floor, -/obj/effect/landmark/start/gary, -/turf/open/floor/iron, -/area/station/maintenance/department/electrical) "naB" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/siding/purple{ @@ -57997,15 +58049,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, /area/station/engineering/atmos) -"nNl" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/structure/cable, -/obj/effect/turf_decal/siding/wood, -/obj/effect/landmark/start/gary/uncommon, -/turf/open/floor/stone, -/area/station/smithing) "nNq" = ( /obj/machinery/button/door/directional/east{ id = "Dorm5"; @@ -60721,6 +60764,11 @@ "oxo" = ( /turf/closed/wall/r_wall, /area/station/science/ordnance/freezerchamber) +"oxB" = ( +/obj/effect/turf_decal/siding/wood, +/obj/effect/landmark/start/gary/rare, +/turf/open/floor/iron/sepia, +/area/station/service/library/artgallery) "oxD" = ( /obj/structure/cable, /obj/effect/turf_decal/tile/blue, @@ -61775,12 +61823,6 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos/hfr_room) -"oLa" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/glass, -/obj/effect/landmark/start/gary, -/turf/open/floor/plating, -/area/station/maintenance/fore) "oLd" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible, /obj/effect/decal/cleanable/dirt, @@ -62403,6 +62445,19 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/maintenance/department/chapel) +"oTo" = ( +/obj/machinery/door/airlock/corporate{ + id_tag = "BSdoor"; + name = "Blueshield's Office" + }, +/obj/effect/turf_decal/siding/dark_blue/end, +/obj/machinery/door/firedoor, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/airlock/access/all/admin/general, +/turf/open/floor/carpet/neon/simple/blue/nodots, +/area/station/command/heads_quarters/blueshield) "oTs" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -64364,13 +64419,6 @@ /obj/structure/window/spawner/directional/east, /turf/open/floor/iron/dark/textured, /area/station/security/prison/workout) -"prG" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/radio/intercom/directional/east, -/obj/effect/mapping_helpers/burnt_floor, -/obj/effect/landmark/start/gary/uncommon, -/turf/open/floor/plating, -/area/station/commons/toilet/restrooms) "prJ" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -67614,16 +67662,6 @@ /obj/item/kirbyplants/random, /turf/open/floor/iron, /area/station/service/hydroponics) -"qdv" = ( -/obj/effect/landmark/generic_maintenance_landmark, -/obj/structure/chair/wood{ - dir = 4 - }, -/obj/effect/landmark/blobstart, -/obj/effect/landmark/event_spawn, -/obj/effect/landmark/start/gary, -/turf/open/floor/plating, -/area/station/service/theater/abandoned) "qdA" = ( /obj/structure/cable, /obj/effect/turf_decal/tile/neutral{ @@ -67746,6 +67784,17 @@ }, /turf/open/floor/iron, /area/station/security/processing) +"qfe" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/machinery/holopad, +/obj/machinery/firealarm/directional/south, +/obj/effect/landmark/start/gary/rare, +/turf/open/floor/iron, +/area/station/commons/vacant_room/commissary) "qfi" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, @@ -71708,14 +71757,6 @@ }, /turf/open/floor/plating, /area/station/science/ordnance/office) -"reX" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/effect/landmark/start/gary, -/turf/open/floor/plating, -/area/station/hallway/secondary/construction) "rfd" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -73577,23 +73618,6 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/command) -"rBC" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/landmark/blobstart, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/yellow{ - dir = 4 - }, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/obj/effect/landmark/event_spawn, -/obj/effect/landmark/start/gary, -/turf/open/floor/iron, -/area/station/service/kitchen/abandoned) "rBI" = ( /obj/structure/window/reinforced/tinted/spawner/directional/east, /obj/machinery/computer/records/security, @@ -74902,6 +74926,15 @@ /obj/effect/turf_decal/siding/white/corner, /turf/open/floor/iron/freezer, /area/station/service/kitchen/coldroom) +"rQV" = ( +/obj/effect/landmark/blobstart, +/obj/effect/landmark/generic_maintenance_landmark, +/obj/effect/landmark/event_spawn, +/obj/machinery/growing/soil, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/service/hydroponics/garden/abandoned) "rRa" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -75071,6 +75104,12 @@ }, /turf/open/floor/iron/telecomms, /area/station/tcommsat/server) +"rSO" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/structure/table/wood/fancy, +/obj/item/book/bible, +/turf/open/floor/iron/dark, +/area/station/service/chapel/funeral) "rSR" = ( /obj/machinery/portable_atmospherics/canister/plasma, /obj/effect/turf_decal/bot, @@ -79170,20 +79209,6 @@ }, /turf/open/floor/iron, /area/station/service/hydroponics/garden) -"sSO" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/landmark/blobstart, -/obj/effect/landmark/generic_maintenance_landmark, -/obj/effect/landmark/event_spawn, -/obj/effect/landmark/start/gary, -/turf/open/floor/iron/dark, -/area/station/service/abandoned_gambling_den/gaming) "sTn" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -80834,14 +80859,6 @@ }, /turf/open/floor/iron, /area/station/cargo/quartermaster) -"tpF" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/chair_maintenance, -/obj/effect/landmark/start/gary, -/turf/open/floor/wood, -/area/station/maintenance/port/fore) "tpI" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/tile/neutral/fourcorners, @@ -81765,6 +81782,19 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/commons/locker) +"tBd" = ( +/obj/machinery/door/airlock/corporate{ + name = "Blueshield's Quarters" + }, +/obj/effect/turf_decal/siding/dark_blue/end{ + dir = 8 + }, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/airlock/access/all/admin/general, +/turf/open/floor/carpet/neon/simple/blue/nodots, +/area/station/command/heads_quarters/blueshield) "tBf" = ( /obj/effect/turf_decal/siding/wood{ dir = 6 @@ -85629,6 +85659,13 @@ }, /turf/open/floor/iron/white, /area/station/science/lobby) +"uwj" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/landmark/event_spawn, +/obj/effect/landmark/generic_maintenance_landmark, +/obj/effect/landmark/start/gary, +/turf/open/floor/iron/dark, +/area/station/service/electronic_marketing_den) "uwn" = ( /obj/structure/table/wood, /obj/item/storage/crayons, @@ -86966,13 +87003,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/aisat_interior) -"uNj" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/landmark/event_spawn, -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/start/gary, -/turf/open/floor/iron/grimy, -/area/station/commons/vacant_room/office) "uNx" = ( /obj/structure/table/wood, /obj/item/folder/blue{ @@ -87170,6 +87200,14 @@ }, /turf/open/floor/plating, /area/station/cargo/storage) +"uPq" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/hallway/secondary/construction) "uPx" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -87533,6 +87571,23 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/station/cargo/storage) +"uTz" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/blobstart, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/effect/landmark/event_spawn, +/obj/effect/landmark/start/gary, +/turf/open/floor/iron, +/area/station/service/kitchen/abandoned) "uTB" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -93030,6 +93085,11 @@ /obj/machinery/door/window/right/directional/south, /turf/open/floor/plating, /area/station/maintenance/port/aft) +"wlj" = ( +/obj/item/book/bible, +/obj/structure/altar_of_gods, +/turf/open/floor/iron/grimy, +/area/station/service/chapel) "wlr" = ( /obj/machinery/holopad, /obj/effect/turf_decal/bot, @@ -93094,15 +93154,6 @@ dir = 1 }, /area/station/maintenance/disposal/incinerator) -"wlO" = ( -/obj/effect/landmark/blobstart, -/obj/effect/landmark/generic_maintenance_landmark, -/obj/effect/landmark/event_spawn, -/obj/machinery/growing/soil, -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/start/gary, -/turf/open/floor/plating, -/area/station/service/hydroponics/garden/abandoned) "wlS" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/simple/purple/visible{ @@ -94411,17 +94462,6 @@ }, /turf/open/space/basic, /area/space/nearstation) -"wyX" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/brown{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/machinery/holopad, -/obj/machinery/firealarm/directional/south, -/obj/effect/landmark/start/gary/rare, -/turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) "wza" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -96621,13 +96661,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/grimy, /area/station/command/heads_quarters/hop) -"xbI" = ( -/obj/effect/spawner/random/engineering/tracking_beacon, -/obj/effect/landmark/event_spawn, -/obj/effect/landmark/blobstart, -/obj/effect/landmark/start/gary, -/turf/open/floor/plating, -/area/station/science/research/abandoned) "xbJ" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/command{ @@ -98743,13 +98776,6 @@ /obj/machinery/door/poddoor/massdriver_trash, /turf/open/floor/iron, /area/station/maintenance/disposal) -"xCZ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/landmark/event_spawn, -/obj/effect/landmark/generic_maintenance_landmark, -/obj/effect/landmark/start/gary, -/turf/open/floor/iron/dark, -/area/station/service/electronic_marketing_den) "xDc" = ( /obj/effect/landmark/start/hangover, /obj/effect/decal/cleanable/dirt, @@ -99101,15 +99127,6 @@ /obj/structure/cable, /turf/open/floor/iron/white, /area/station/science/research) -"xGm" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/event_spawn, -/obj/effect/landmark/generic_maintenance_landmark, -/obj/effect/landmark/blobstart, -/obj/machinery/duct, -/obj/effect/landmark/start/gary, -/turf/open/floor/plating, -/area/station/medical/abandoned) "xGu" = ( /obj/structure/frame/machine{ anchored = 1 @@ -99911,13 +99928,6 @@ /obj/effect/landmark/generic_maintenance_landmark, /turf/open/floor/plating, /area/station/maintenance/department/science) -"xQH" = ( -/obj/effect/landmark/event_spawn, -/obj/effect/landmark/generic_maintenance_landmark, -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/landmark/start/gary/uncommon, -/turf/open/floor/wood, -/area/station/security/detectives_office/private_investigators_office) "xQM" = ( /obj/machinery/holopad, /obj/effect/turf_decal/bot, @@ -101563,14 +101573,6 @@ /obj/machinery/status_display/evac/directional/south, /turf/open/floor/iron, /area/station/commons/toilet/restrooms) -"ymf" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/start/hangover, -/obj/effect/landmark/start/gary/uncommon, -/turf/open/floor/wood, -/area/station/commons/dorms) "ymi" = ( /obj/machinery/light/directional/south, /obj/item/kirbyplants/random, @@ -122310,7 +122312,7 @@ cRJ mAt mAt pBY -ewy +mVi fUf hSE nsW @@ -127197,7 +127199,7 @@ nEc hrQ kGQ tWl -xbI +dSj bSN iFR lxM @@ -129986,7 +129988,7 @@ rgn pTC pFP pFP -cLY +eEA xbv owY pTC @@ -130251,7 +130253,7 @@ rrU vcB aEJ qcM -gJX +bcJ dMV qhC vcB @@ -130431,7 +130433,7 @@ aaa fIE qHI fLc -xCZ +uwj kzI iFV oYs @@ -130459,12 +130461,12 @@ uTq oYs kXS rTM -wlO +rQV kJr eAI oYs dqC -tpF +fUQ fKk oYs oYs @@ -130696,7 +130698,7 @@ bxg hcL mFH sLx -fMY +msI qDr oYs jjk @@ -131520,7 +131522,7 @@ ilo fdB aqF aqF -nNl +bIh kCi fdB jPf @@ -134028,7 +134030,7 @@ lWu tbC aHC jcT -prG +dzJ hcK vCw pst @@ -134069,7 +134071,7 @@ oyb xbi hRX hUO -uNj +ktR xIR vBc oYs @@ -137155,7 +137157,7 @@ wjO dOZ pwG nEd -dkM +lGL cdA diL uhH @@ -137411,7 +137413,7 @@ uMA wjO dOZ pwG -ifg +tBd siG siG diL @@ -137671,7 +137673,7 @@ kOj hPv jyy fDC -lPG +oTo vsW tFF wou @@ -138183,7 +138185,7 @@ otm dOZ pwG rBI -gED +erf hEC diL ipQ @@ -140227,7 +140229,7 @@ qAV fqn wwV fOP -fEC +fiZ dag tNa qAV @@ -143273,7 +143275,7 @@ jdL kvW uGx gPO -oLa +fkl uaz vkG iql @@ -145081,7 +145083,7 @@ vno jYU llB rxw -sSO +hZi tyU kvK sKC @@ -145842,7 +145844,7 @@ aeF vno nNs ffk -rBC +uTz egs vno rJN @@ -146442,7 +146444,7 @@ gbt hgJ mRh gMM -wyX +qfe tXA nhI nGZ @@ -146471,7 +146473,7 @@ qkj qMf vaE rKL -xQH +eix cjs hJo kfb @@ -147780,7 +147782,7 @@ rMa sDJ rMa iVt -gpU +wlj slr oQM mmM @@ -147983,7 +147985,7 @@ crR szQ iYi bjs -kWK +gPt bEK iYi iYi @@ -148260,7 +148262,7 @@ jEN teU kcv gZU -aTZ +oxB uNf qMf wBF @@ -148782,7 +148784,7 @@ xPK wZE eSU haQ -nay +huS pdb hnH nvM @@ -150082,7 +150084,7 @@ kZc kZc igI qKs -kEA +rSO kRC niE tVD @@ -150324,7 +150326,7 @@ bqS rlw wMj hth -aYG +lIE fZh gmD krx @@ -150572,7 +150574,7 @@ hvm cao gDV aXW -bTc +iiK ajP eLz qMh @@ -152886,7 +152888,7 @@ fPt opZ wEM uen -xGm +kss klE ayA tHd @@ -152894,7 +152896,7 @@ ujU ehy cfR rvu -reX +uPq mIc iFL waI @@ -152905,7 +152907,7 @@ iNE lXm pcc prr -qdv +bnN xnT usy oLT @@ -153890,7 +153892,7 @@ vHY hie qbZ riK -ymf +eox kvM yaI wgE diff --git a/_maps/map_files/IceBoxStation/IceBoxStation.dmm b/_maps/map_files/IceBoxStation/IceBoxStation.dmm index e59a7523e8be..87f88a4b72be 100644 --- a/_maps/map_files/IceBoxStation/IceBoxStation.dmm +++ b/_maps/map_files/IceBoxStation/IceBoxStation.dmm @@ -2053,18 +2053,6 @@ /obj/effect/turf_decal/tile/blue/opposingcorners, /turf/open/floor/iron/dark, /area/station/command/gateway) -"aJo" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/airlock/corporate{ - id_tag = "BSdoor"; - name = "Blueshield's Office" - }, -/obj/effect/mapping_helpers/airlock/access/all/command/captain, -/obj/effect/landmark/navigate_destination, -/turf/open/floor/carpet, -/area/station/command/heads_quarters/blueshield) "aJr" = ( /obj/effect/turf_decal/trimline/yellow/filled/corner{ dir = 4 @@ -2155,15 +2143,6 @@ /obj/machinery/holopad, /turf/open/floor/iron/large, /area/station/commons/storage/tools) -"aKA" = ( -/obj/structure/grille/broken, -/obj/effect/spawner/random/maintenance, -/obj/effect/decal/cleanable/generic, -/obj/effect/landmark/generic_maintenance_landmark, -/obj/effect/landmark/blobstart, -/obj/effect/landmark/start/gary, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/morgue) "aKG" = ( /obj/structure/table, /turf/open/floor/iron/smooth, @@ -3027,14 +3006,6 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/department/medical/pathology) -"aZg" = ( -/obj/effect/decal/cleanable/glass, -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/start/gary, -/turf/open/floor/iron/cafeteria{ - dir = 5 - }, -/area/station/maintenance/port/aft) "aZk" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 @@ -6306,13 +6277,6 @@ /obj/effect/spawner/structure/window/reinforced/tinted, /turf/open/floor/iron/dark, /area/station/service/chapel) -"bWv" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/blobstart, -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/landmark/start/gary, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/morgue) "bWB" = ( /obj/structure/table, /obj/effect/decal/cleanable/cobweb/cobweb2, @@ -6600,6 +6564,13 @@ /obj/machinery/camera/emp_proof/directional/north, /turf/open/floor/iron/cafeteria, /area/station/commons/dorms/laundry) +"caf" = ( +/obj/machinery/light/directional/west, +/obj/item/radio/intercom/directional/west, +/obj/effect/landmark/event_spawn, +/obj/effect/landmark/start/gary/rare, +/turf/open/floor/iron/freezer, +/area/station/commons/toilet/locker) "caC" = ( /obj/machinery/door/window/right/directional/south{ dir = 8; @@ -6908,13 +6879,6 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron/dark, /area/station/service/chapel/office) -"cfb" = ( -/obj/machinery/light/directional/west, -/obj/item/radio/intercom/directional/west, -/obj/effect/landmark/event_spawn, -/obj/effect/landmark/start/gary/rare, -/turf/open/floor/iron/freezer, -/area/station/commons/toilet/locker) "cfe" = ( /obj/structure/cable, /obj/machinery/holopad/secure, @@ -7283,10 +7247,6 @@ /obj/effect/turf_decal/tile/yellow/opposingcorners, /turf/open/floor/iron/white, /area/station/maintenance/port/fore) -"ckY" = ( -/obj/effect/landmark/start/gary, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) "cll" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -8483,6 +8443,12 @@ /obj/structure/flora/tree/pine/style_random, /turf/open/misc/asteroid/snow/icemoon, /area/icemoon/underground/explored) +"cCc" = ( +/obj/effect/decal/cleanable/plasma, +/obj/effect/landmark/blobstart, +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/department/medical/morgue) "cCt" = ( /obj/structure/rack, /obj/effect/spawner/random/techstorage/rnd_all, @@ -8661,11 +8627,6 @@ /obj/item/radio/intercom/directional/north, /turf/open/floor/iron/smooth_edge, /area/station/security/lockers) -"cFm" = ( -/obj/structure/table/glass, -/obj/item/book/bible, -/turf/open/floor/iron/chapel, -/area/station/service/chapel) "cFJ" = ( /obj/effect/spawner/random/structure/steam_vent, /turf/open/floor/plating, @@ -9322,6 +9283,11 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/medical/morgue) +"cOv" = ( +/obj/structure/table/wood, +/obj/item/book/bible, +/turf/open/floor/iron/dark, +/area/station/service/chapel/office) "cOz" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/airalarm/directional/north, @@ -9802,11 +9768,6 @@ /obj/effect/turf_decal/arrows, /turf/open/floor/iron, /area/station/cargo/lobby) -"cXj" = ( -/obj/structure/table/wood, -/obj/item/book/bible, -/turf/open/floor/iron/dark, -/area/station/service/chapel/office) "cXl" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -9977,11 +9938,6 @@ "cZD" = ( /turf/open/floor/iron/checker, /area/station/maintenance/port/fore) -"cZE" = ( -/obj/effect/spawner/random/trash/mess, -/obj/effect/landmark/start/gary, -/turf/open/floor/plating, -/area/station/maintenance/starboard/fore) "cZN" = ( /obj/structure/table/wood, /obj/item/soap/nanotrasen, @@ -10715,13 +10671,6 @@ /obj/effect/landmark/navigate_destination/atmos, /turf/open/floor/iron, /area/station/engineering/lobby) -"djT" = ( -/obj/structure/table/wood, -/obj/machinery/airalarm/directional/north, -/obj/item/book/bible, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, -/area/station/service/chapel) "djU" = ( /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible, /turf/open/floor/iron, @@ -10992,14 +10941,6 @@ /obj/structure/tank_holder/extinguisher, /turf/open/floor/plating, /area/station/maintenance/department/medical/morgue) -"dpt" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/start/gary/uncommon, -/turf/open/floor/iron, -/area/station/maintenance/starboard/upper) "dpB" = ( /obj/machinery/firealarm/directional/south, /obj/effect/turf_decal/trimline/yellow/filled/line, @@ -12057,6 +11998,14 @@ /obj/effect/decal/cleanable/food/egg_smudge, /turf/open/floor/plating, /area/station/maintenance/port/fore) +"dGH" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/gary/uncommon, +/turf/open/floor/iron, +/area/station/maintenance/starboard/upper) "dGK" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -12523,6 +12472,19 @@ }, /turf/open/floor/iron, /area/station/cargo/miningdock) +"dPC" = ( +/obj/item/flashlight/flare/candle{ + pixel_x = -7; + pixel_y = 3 + }, +/obj/item/book{ + name = "Tales from the First"; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/table/wood, +/turf/open/floor/plating, +/area/station/maintenance/starboard/lesser) "dPP" = ( /obj/structure/closet/toolcloset, /turf/open/floor/plating, @@ -12545,6 +12507,13 @@ dir = 1 }, /area/station/maintenance/department/cargo) +"dQA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/blobstart, +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/department/medical/morgue) "dQI" = ( /obj/effect/landmark/start/assistant, /obj/effect/turf_decal/tile/neutral/half/contrasted{ @@ -12567,11 +12536,6 @@ /obj/structure/sign/departments/rndserver/directional/south, /turf/open/floor/iron/white, /area/station/science/research) -"dQV" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/landmark/start/gary, -/turf/open/floor/iron, -/area/station/maintenance/starboard/fore) "dRc" = ( /obj/structure/table, /obj/machinery/firealarm/directional/west, @@ -16853,6 +16817,11 @@ }, /turf/open/floor/iron/white, /area/station/medical/treatment_center) +"fli" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/landmark/start/gary, +/turf/open/floor/iron, +/area/station/maintenance/starboard/fore) "flx" = ( /obj/machinery/navbeacon{ codes_txt = "patrol;next_patrol=HOP"; @@ -18420,6 +18389,13 @@ /obj/effect/turf_decal/stripes/line, /turf/open/floor/plating, /area/station/maintenance/starboard/upper) +"fMr" = ( +/obj/structure/table/wood, +/obj/machinery/airalarm/directional/north, +/obj/item/book/bible, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/service/chapel) "fMJ" = ( /obj/structure/chair{ dir = 1 @@ -18806,6 +18782,14 @@ "fUR" = ( /turf/closed/wall, /area/station/hallway/secondary/entry) +"fVd" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 + }, +/obj/effect/landmark/start/gary/uncommon, +/turf/open/floor/stone, +/area/station/smithing) "fVm" = ( /obj/machinery/door/airlock/maintenance{ name = "Chemical Storage" @@ -19079,6 +19063,13 @@ }, /turf/open/floor/iron, /area/station/command/gateway) +"gal" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/duct, +/obj/structure/cable, +/turf/open/floor/iron/white/textured, +/area/station/security/medical) "gam" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/mining/glass{ @@ -20341,6 +20332,15 @@ dir = 1 }, /area/mine/eva/lower) +"gtD" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/start/gary/rare, +/turf/open/floor/catwalk_floor/iron_smooth, +/area/station/maintenance/department/chapel) "gtF" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 @@ -22328,14 +22328,6 @@ /obj/effect/mapping_helpers/airlock/access/all/engineering/general, /turf/open/floor/engine, /area/station/engineering/supermatter/room) -"hch" = ( -/obj/item/book/bible, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/table/wood, -/turf/open/floor/iron/dark, -/area/station/security/prison/rec) "hcv" = ( /obj/machinery/newscaster/directional/north, /obj/effect/turf_decal/tile/neutral{ @@ -22719,6 +22711,13 @@ /obj/effect/mapping_helpers/airalarm/mixingchamber_access, /turf/open/floor/iron/dark, /area/station/science/ordnance/freezerchamber) +"hjA" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/yellow/opposingcorners, +/obj/effect/landmark/start/gary, +/turf/open/floor/iron/white, +/area/station/maintenance/port/fore) "hjE" = ( /turf/closed/wall/r_wall, /area/station/science/explab) @@ -24610,6 +24609,10 @@ /obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron/dark/smooth_corner, /area/station/ai_monitored/command/storage/eva) +"hSn" = ( +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "hSp" = ( /obj/effect/turf_decal/stripes/line, /obj/structure/table/reinforced, @@ -24649,6 +24652,14 @@ /obj/machinery/newscaster/directional/south, /turf/open/floor/iron, /area/station/security/processing) +"hSY" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/obj/effect/landmark/start/gary, +/turf/open/floor/iron, +/area/station/maintenance/port/aft) "hSZ" = ( /obj/structure/cable, /obj/effect/turf_decal/trimline/dark_blue/line{ @@ -26315,15 +26326,6 @@ }, /turf/open/floor/iron, /area/station/service/hydroponics) -"iuI" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/landmark/start/gary/rare, -/turf/open/floor/wood, -/area/station/service/library) "iuQ" = ( /obj/structure/cable, /obj/machinery/door/airlock/glass{ @@ -26421,14 +26423,6 @@ /obj/structure/railing, /turf/open/misc/asteroid/snow/icemoon, /area/icemoon/underground/explored) -"ixg" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/effect/landmark/start/gary/uncommon, -/turf/open/floor/catwalk_floor/iron_smooth, -/area/station/maintenance/fore/lesser) "ixu" = ( /obj/machinery/camera/directional/north{ c_tag = "Teleporter" @@ -27453,12 +27447,6 @@ }, /turf/open/floor/iron/dark, /area/station/medical/morgue) -"iOr" = ( -/obj/structure/chair/comfy/teal{ - dir = 4 - }, -/turf/open/floor/carpet/cyan, -/area/station/command/heads_quarters/blueshield) "iOs" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/airalarm/directional/south, @@ -27624,12 +27612,6 @@ }, /turf/open/floor/iron/white/side, /area/mine/living_quarters) -"iQy" = ( -/obj/effect/decal/cleanable/plasma, -/obj/effect/landmark/blobstart, -/obj/effect/landmark/start/gary, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/morgue) "iQF" = ( /obj/effect/turf_decal/trimline/yellow/filled/line, /obj/machinery/airalarm/directional/south, @@ -27700,13 +27682,6 @@ }, /turf/open/floor/iron/dark/smooth_large, /area/station/security/checkpoint/engineering) -"iRu" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/yellow/opposingcorners, -/obj/effect/landmark/start/gary, -/turf/open/floor/iron/white, -/area/station/maintenance/port/fore) "iRx" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -28405,6 +28380,14 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, /area/station/security/courtroom) +"jbM" = ( +/obj/effect/landmark/event_spawn, +/obj/effect/turf_decal/tile/blue/opposingcorners{ + dir = 1 + }, +/obj/effect/landmark/start/gary/rare, +/turf/open/floor/iron/cafeteria, +/area/station/commons/dorms/laundry) "jbT" = ( /obj/structure/cable, /obj/effect/spawner/structure/window/reinforced, @@ -28566,11 +28549,6 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/wood, /area/station/service/lawoffice) -"jfb" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/landmark/start/gary, -/turf/open/floor/wood, -/area/station/maintenance/fore) "jfc" = ( /turf/closed/wall, /area/station/command/heads_quarters/hop) @@ -30753,15 +30731,6 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/security/brig/entrance) -"jRa" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/landmark/start/gary/rare, -/turf/open/floor/catwalk_floor/iron_smooth, -/area/station/maintenance/department/chapel) "jRu" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -31829,14 +31798,6 @@ /obj/item/kirbyplants/random, /turf/open/floor/iron, /area/station/hallway/primary/starboard) -"khD" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/obj/effect/landmark/start/gary, -/turf/open/floor/iron, -/area/station/maintenance/port/aft) "khE" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -33076,13 +33037,6 @@ /obj/machinery/duct, /turf/open/floor/iron/white/textured, /area/station/security/medical) -"kBE" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/item/book/bible, -/obj/structure/altar_of_gods, -/turf/open/floor/iron/dark, -/area/station/service/chapel) "kBL" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 1 @@ -35619,6 +35573,14 @@ /obj/effect/landmark/start/hangover, /turf/open/floor/iron/dark, /area/station/service/chapel) +"lqp" = ( +/obj/structure/chair/plastic{ + dir = 0 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/gary/uncommon, +/turf/open/floor/iron, +/area/station/maintenance/starboard/fore) "lqs" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -37113,6 +37075,15 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/textured, /area/mine/mechbay) +"lQi" = ( +/obj/structure/grille/broken, +/obj/effect/spawner/random/maintenance, +/obj/effect/decal/cleanable/generic, +/obj/effect/landmark/generic_maintenance_landmark, +/obj/effect/landmark/blobstart, +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/department/medical/morgue) "lQm" = ( /obj/structure/cable, /turf/open/floor/iron, @@ -39157,6 +39128,13 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/commons/fitness) +"mAI" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/item/book/bible, +/obj/structure/altar_of_gods, +/turf/open/floor/iron/dark, +/area/station/service/chapel) "mAO" = ( /obj/structure/cable, /turf/open/floor/carpet, @@ -40277,14 +40255,6 @@ /obj/effect/mapping_helpers/airlock/access/any/science/maintenance, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) -"mUx" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/landmark/start/gary/rare, -/turf/open/floor/wood, -/area/station/maintenance/aft/greater) "mUM" = ( /obj/item/radio/intercom/directional/north, /obj/effect/turf_decal/tile/red/anticorner{ @@ -41064,6 +41034,11 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/fore) +"ngd" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/landmark/start/gary, +/turf/open/floor/wood, +/area/station/maintenance/fore) "ngj" = ( /obj/effect/turf_decal/stripes/asteroid/line{ dir = 9 @@ -43046,12 +43021,6 @@ /obj/structure/barricade/wooden, /turf/open/floor/eighties/red, /area/station/security/prison/safe) -"nIh" = ( -/obj/effect/landmark/generic_maintenance_landmark, -/obj/structure/cable, -/obj/effect/landmark/start/gary, -/turf/open/floor/plating, -/area/station/maintenance/department/crew_quarters/bar) "nIl" = ( /obj/structure/chair/stool/directional/north, /obj/effect/turf_decal/tile/red/half/contrasted{ @@ -45601,6 +45570,13 @@ /obj/machinery/newscaster/directional/east, /turf/open/floor/iron, /area/station/security/prison/workout) +"owm" = ( +/obj/structure/chair/comfy/teal{ + dir = 4 + }, +/obj/effect/landmark/start/blueshield, +/turf/open/floor/carpet/cyan, +/area/station/command/heads_quarters/blueshield) "owC" = ( /turf/closed/wall/r_wall, /area/station/science/server) @@ -49073,6 +49049,14 @@ /obj/machinery/requests_console/auto_name/directional/north, /turf/open/floor/iron, /area/station/service/hydroponics) +"pBv" = ( +/obj/item/book/bible, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/table/wood, +/turf/open/floor/iron/dark, +/area/station/security/prison/rec) "pBA" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -49331,6 +49315,14 @@ /obj/effect/spawner/random/engineering/tracking_beacon, /turf/open/floor/stone, /area/station/smithing) +"pFX" = ( +/obj/effect/decal/cleanable/glass, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/gary, +/turf/open/floor/iron/cafeteria{ + dir = 5 + }, +/area/station/maintenance/port/aft) "pFZ" = ( /obj/item/target/syndicate, /obj/effect/decal/cleanable/dirt, @@ -49762,6 +49754,12 @@ }, /turf/open/floor/iron/freezer, /area/station/commons/toilet/locker) +"pLC" = ( +/obj/effect/landmark/generic_maintenance_landmark, +/obj/structure/cable, +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/department/crew_quarters/bar) "pLO" = ( /obj/machinery/status_display/evac/directional/east, /obj/structure/cable, @@ -50471,6 +50469,18 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/engineering/atmos) +"pYs" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/door/airlock/corporate{ + id_tag = "BSdoor"; + name = "Blueshield's Office" + }, +/obj/effect/landmark/navigate_destination, +/obj/effect/mapping_helpers/airlock/access/all/admin/general, +/turf/open/floor/carpet, +/area/station/command/heads_quarters/blueshield) "pYz" = ( /obj/machinery/door/firedoor/border_only, /turf/open/floor/iron/dark/corner{ @@ -53324,6 +53334,14 @@ }, /turf/open/floor/iron/dark/textured, /area/station/engineering/main) +"qWB" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/landmark/start/gary/rare, +/turf/open/floor/wood, +/area/station/maintenance/aft/greater) "qWD" = ( /obj/machinery/duct, /turf/open/floor/iron/white, @@ -54399,19 +54417,6 @@ /obj/effect/turf_decal/tile/brown/half/contrasted, /turf/open/floor/iron/dark/side, /area/mine/eva/lower) -"rnD" = ( -/obj/item/flashlight/flare/candle{ - pixel_x = -7; - pixel_y = 3 - }, -/obj/item/book{ - name = "Tales from the First"; - pixel_x = 5; - pixel_y = 5 - }, -/obj/structure/table/wood, -/turf/open/floor/plating, -/area/station/maintenance/starboard/lesser) "rnQ" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, @@ -58068,14 +58073,6 @@ /obj/effect/turf_decal/trimline/blue/corner, /turf/open/floor/iron/dark, /area/station/service/hydroponics) -"syN" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/effect/turf_decal/siding/wood/corner{ - dir = 8 - }, -/obj/effect/landmark/start/gary/uncommon, -/turf/open/floor/stone, -/area/station/smithing) "syW" = ( /obj/effect/spawner/structure/window/hollow/reinforced/end, /turf/open/floor/plating, @@ -59316,6 +59313,14 @@ /obj/machinery/light_switch/directional/north, /turf/open/floor/iron/freezer, /area/station/commons/toilet/locker) +"sVF" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/effect/landmark/start/gary/uncommon, +/turf/open/floor/catwalk_floor/iron_smooth, +/area/station/maintenance/fore/lesser) "sVL" = ( /obj/machinery/holopad, /obj/effect/turf_decal/bot, @@ -60838,14 +60843,6 @@ }, /turf/open/floor/iron/smooth_half, /area/station/security/brig/upper) -"txX" = ( -/obj/structure/chair/plastic{ - dir = 0 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/start/gary/uncommon, -/turf/open/floor/iron, -/area/station/maintenance/starboard/fore) "tyb" = ( /obj/effect/turf_decal/bot, /obj/machinery/holopad, @@ -61900,6 +61897,11 @@ }, /turf/open/floor/iron, /area/station/command/gateway) +"tOp" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/start/gary/uncommon, +/turf/open/floor/iron, +/area/station/construction) "tOq" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, @@ -66954,11 +66956,6 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/service) -"vxC" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/landmark/start/gary/uncommon, -/turf/open/floor/iron, -/area/station/construction) "vxV" = ( /obj/structure/cable, /obj/machinery/duct, @@ -67654,6 +67651,15 @@ }, /turf/open/floor/iron/white/smooth_large, /area/station/medical/chemistry) +"vHS" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/landmark/start/gary/rare, +/turf/open/floor/wood, +/area/station/service/library) "vHT" = ( /obj/effect/spawner/random/trash/mess, /obj/item/storage/box, @@ -70305,14 +70311,6 @@ }, /turf/closed/wall, /area/station/cargo/sorting) -"wBH" = ( -/obj/effect/landmark/event_spawn, -/obj/effect/turf_decal/tile/blue/opposingcorners{ - dir = 1 - }, -/obj/effect/landmark/start/gary/rare, -/turf/open/floor/iron/cafeteria, -/area/station/commons/dorms/laundry) "wBS" = ( /obj/structure/table/wood, /obj/machinery/light/directional/west, @@ -70660,13 +70658,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, /area/station/maintenance/port/fore) -"wGM" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/obj/structure/cable, -/turf/open/floor/iron/white/textured, -/area/station/security/medical) "wGN" = ( /obj/machinery/corral_corner{ mapping_id = "2" @@ -70931,6 +70922,11 @@ }, /turf/open/floor/iron, /area/station/command/bridge) +"wKO" = ( +/obj/effect/spawner/random/trash/mess, +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/starboard/fore) "wLk" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers, /obj/machinery/portable_atmospherics/canister/carbon_dioxide, @@ -73649,6 +73645,11 @@ /obj/machinery/nuclearbomb/beer, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) +"xCG" = ( +/obj/structure/table/glass, +/obj/item/book/bible, +/turf/open/floor/iron/chapel, +/area/station/service/chapel) "xCQ" = ( /obj/structure/table/glass, /obj/item/reagent_containers/cup/beaker/cryoxadone{ @@ -100663,7 +100664,7 @@ hPk bwi vyO dEz -hch +pBv hOA mJX cmh @@ -159564,7 +159565,7 @@ iwS iJM iEh tDG -wBH +jbM xwG qMo iDt @@ -163651,7 +163652,7 @@ qQf qQf qQf fro -ixg +sVF tym jur vqi @@ -173210,7 +173211,7 @@ thA nxM imi nJd -aKA +lQi qck eJI nxM @@ -176556,7 +176557,7 @@ pHD qMz hjM xDU -iQy +cCc sBJ vLY qck @@ -177551,7 +177552,7 @@ fWU aak dMS vJL -nIh +pLC qqC oYx nCJ @@ -179133,7 +179134,7 @@ rmh ieF qHl rwG -bWv +dQA skJ owG hjM @@ -182430,7 +182431,7 @@ jre jre jre jre -rnD +dPC aCo hMw jre @@ -185243,7 +185244,7 @@ thA xMq tBs pwv -jRa +gtD yaP tBs nHQ @@ -187301,7 +187302,7 @@ pxg eRc tBs deP -cXj +cOv pQw cBP wAv @@ -188081,7 +188082,7 @@ aIe wBA uJq smC -kBE +mAI hMr aUO aUO @@ -188850,7 +188851,7 @@ lry oTA hlS wrX -djT +fMr wBA oTA bAF @@ -220985,7 +220986,7 @@ egK nwT ccD aCJ -syN +fVd nsr xSl tKI @@ -223816,7 +223817,7 @@ tOw sVn wlt kEM -cfb +caf kEM vkW kEM @@ -225072,7 +225073,7 @@ qDI xQB whv rSe -iRu +hjA ckQ xJD lJO @@ -226943,7 +226944,7 @@ hjH pRj wwC rlj -aZg +pFX aPV gFH apj @@ -227451,7 +227452,7 @@ ujj pRj xoB hjH -khD +hSY dNC xBX pRj @@ -232813,7 +232814,7 @@ gfr fnv pPM fjt -aJo +pYs umE ujA eYd @@ -233072,7 +233073,7 @@ fsG ktU wxu dVc -iOr +owm yhH usN jfc @@ -234126,7 +234127,7 @@ mZV paM bbo oKY -vxC +tOp iXk hHD pRj @@ -236621,7 +236622,7 @@ bxQ bUx vSh kBx -wGM +gal bui hfg lUw @@ -239203,7 +239204,7 @@ skl skl skl nTK -jfb +ngd cIK jOQ skl @@ -246412,7 +246413,7 @@ kKL kKL kKL kKL -txX +lqp dqy kKL lli @@ -246737,7 +246738,7 @@ cpl npD fWL qUM -mUx +qWB asN xhZ sZF @@ -250513,7 +250514,7 @@ bln bln kKL xpE -cZE +wKO wMT kKL lli @@ -250528,7 +250529,7 @@ kKL gkP kKL sqs -iuI +vHS ogd hff blV @@ -252826,7 +252827,7 @@ bln iyY jLc sEY -dQV +fli rEX rCf rCf @@ -254899,7 +254900,7 @@ oHH tAA efH mJu -cFm +xCG qPL qPL qPL @@ -255985,7 +255986,7 @@ rDZ pcX bgx jCl -ckY +hSn jCl vzD geJ @@ -258527,7 +258528,7 @@ mLJ opn vJk vJk -dpt +dGH vJk vJk qbW diff --git a/_maps/map_files/KiloStation/KiloStation.dmm b/_maps/map_files/KiloStation/KiloStation.dmm index 82d5b0b16afd..248775bfc7eb 100644 --- a/_maps/map_files/KiloStation/KiloStation.dmm +++ b/_maps/map_files/KiloStation/KiloStation.dmm @@ -494,6 +494,11 @@ /obj/machinery/atmospherics/pipe/smart/simple/yellow/visible, /turf/closed/wall/rust, /area/station/engineering/atmos) +"aeN" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/gary, +/turf/open/floor/iron/dark/textured, +/area/station/maintenance/starboard/fore) "aeS" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -2314,22 +2319,6 @@ /obj/structure/cable, /turf/open/floor/engine, /area/station/ai_monitored/turret_protected/aisat_interior) -"aKQ" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/structure/table/wood/fancy/black, -/obj/item/book/bible{ - pixel_x = 6; - pixel_y = 6 - }, -/obj/item/book/bible{ - pixel_x = -6; - pixel_y = 6 - }, -/obj/item/book/bible, -/turf/open/floor/iron/dark, -/area/station/service/chapel) "aKY" = ( /obj/structure/sign/warning/electric_shock, /turf/closed/wall/r_wall, @@ -2701,20 +2690,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, /area/station/engineering/atmos) -"aSP" = ( -/obj/structure/table/wood, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/effect/turf_decal/siding/wood/corner{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/item/book/bible, -/turf/open/floor/carpet/red, -/area/station/service/chapel) "aSX" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment, @@ -5286,6 +5261,12 @@ }, /turf/open/space/basic, /area/space) +"bNu" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/effect/landmark/start/gary/rare, +/turf/open/floor/iron/showroomfloor, +/area/station/commons/toilet/restrooms) "bNv" = ( /obj/machinery/telecomms/server/presets/common, /obj/machinery/light/directional/west, @@ -6312,6 +6293,20 @@ dir = 4 }, /area/station/service/chapel) +"cbO" = ( +/obj/structure/table/wood, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/item/book/bible, +/turf/open/floor/carpet/red, +/area/station/service/chapel) "ccd" = ( /obj/structure/railing{ dir = 4 @@ -6742,6 +6737,21 @@ }, /turf/open/floor/iron/recharge_floor, /area/station/maintenance/port/aft) +"cgW" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/door/airlock/corporate{ + id_tag = "BSdoor"; + name = "Blueshield's Office" + }, +/obj/effect/mapping_helpers/airlock/access/all/admin/general, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/blueshield) "cgX" = ( /obj/structure/rack, /obj/item/wirecutters{ @@ -12167,6 +12177,18 @@ }, /turf/open/floor/iron/showroomfloor, /area/station/security/execution/transfer) +"dTO" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/siding/wood, +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/structure/chair/comfy/teal{ + dir = 4 + }, +/obj/effect/landmark/start/blueshield, +/turf/open/floor/wood/large, +/area/station/command/heads_quarters/blueshield) "dTQ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/tile/yellow/half/contrasted, @@ -12529,6 +12551,14 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos/pumproom) +"eaB" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "eaQ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/stripes/line{ @@ -12687,11 +12717,6 @@ }, /turf/open/floor/iron/showroomfloor, /area/station/science/genetics) -"edF" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/generic, -/turf/open/floor/plating, -/area/station/maintenance/department/bridge) "eeb" = ( /obj/effect/turf_decal/tile/blue{ dir = 8 @@ -13173,6 +13198,12 @@ /obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/iron/dark, /area/station/maintenance/department/crew_quarters/bar) +"elc" = ( +/obj/effect/landmark/event_spawn, +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/landmark/start/gary, +/turf/open/floor/wood, +/area/station/maintenance/starboard/fore) "ele" = ( /obj/structure/table/wood, /obj/machinery/door/firedoor, @@ -13292,17 +13323,6 @@ /obj/machinery/door/poddoor/incinerator_atmos_aux, /turf/open/floor/engine, /area/station/maintenance/disposal/incinerator) -"emV" = ( -/obj/machinery/door/poddoor/preopen{ - id = "Biohazard"; - name = "Emergency Research Blast Door" - }, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/caution/stand_clear, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/science/research) "eng" = ( /obj/effect/turf_decal/tile/green, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -13954,6 +13974,10 @@ /obj/structure/closet/emcloset, /turf/open/floor/plating, /area/station/maintenance/port/fore) +"eyl" = ( +/obj/effect/landmark/start/gary, +/turf/open/floor/wood, +/area/station/maintenance/port/fore) "eyv" = ( /obj/effect/turf_decal/tile/neutral{ dir = 8 @@ -14203,6 +14227,17 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/cargo/warehouse) +"eCI" = ( +/obj/machinery/asteroid_magnet{ + center_x = 176; + center_y = 174; + area_size = 3 + }, +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/science/explab) "eCU" = ( /obj/effect/turf_decal/siding/wood{ dir = 8 @@ -18145,6 +18180,12 @@ }, /turf/open/floor/grass, /area/station/science/genetics) +"fJr" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/landmark/event_spawn, +/obj/effect/landmark/start/gary, +/turf/open/floor/carpet/green, +/area/station/maintenance/port/greater) "fJs" = ( /obj/machinery/door/airlock/external{ name = "Labor Camp Shuttle Airlock"; @@ -20088,6 +20129,11 @@ /obj/machinery/digital_clock/directional/south, /turf/open/floor/iron/dark, /area/station/hallway/secondary/exit/departure_lounge) +"gpk" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/gary, +/turf/open/floor/plastic, +/area/station/maintenance/starboard/fore) "gpz" = ( /obj/structure/cable, /obj/effect/decal/cleanable/dirt, @@ -20466,18 +20512,6 @@ /obj/effect/turf_decal/tile/red, /turf/open/floor/iron, /area/station/engineering/lobby) -"guY" = ( -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=Upload"; - location = "Science"; - name = "science navigation beacon" - }, -/obj/structure/cable, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) "gva" = ( /obj/structure/grille, /turf/closed/wall/r_wall/rust, @@ -21338,6 +21372,22 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/engine, /area/station/engineering/gravity_generator) +"gJw" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/table/wood/fancy/black, +/obj/item/book/bible{ + pixel_x = 6; + pixel_y = 6 + }, +/obj/item/book/bible{ + pixel_x = -6; + pixel_y = 6 + }, +/obj/item/book/bible, +/turf/open/floor/iron/dark, +/area/station/service/chapel) "gJE" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/stripes/line, @@ -26187,6 +26237,11 @@ }, /turf/open/floor/iron/dark, /area/station/service/janitor) +"igx" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/generic, +/turf/open/floor/plating, +/area/station/maintenance/department/bridge) "igz" = ( /obj/structure/sink/directional/west, /obj/effect/turf_decal/stripes/corner, @@ -26293,17 +26348,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/security/office) -"iiM" = ( -/obj/machinery/asteroid_magnet{ - center_x = 176; - center_y = 174; - area_size = 3 - }, -/obj/effect/turf_decal/tile/purple/half/contrasted{ - dir = 1 - }, -/turf/open/floor/iron/showroomfloor, -/area/station/science/explab) "ijc" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -26545,6 +26589,18 @@ }, /turf/open/floor/iron/showroomfloor, /area/station/medical/chemistry) +"imc" = ( +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=Upload"; + location = "Science"; + name = "science navigation beacon" + }, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "imh" = ( /turf/closed/wall/r_wall, /area/station/security/checkpoint/medical) @@ -31524,6 +31580,20 @@ /obj/structure/flora/bush/ferny/style_random, /turf/open/misc/asteroid, /area/space/nearstation) +"jJr" = ( +/obj/structure/table/wood, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/item/book/bible, +/turf/open/floor/carpet/red, +/area/station/service/chapel) "jJB" = ( /obj/structure/cable, /obj/effect/landmark/start/hangover, @@ -32886,16 +32956,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/stone, /area/station/science/xenobiology) -"kio" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/start/hangover, -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/obj/effect/landmark/start/gary/rare, -/turf/open/floor/iron/dark, -/area/station/service/library) "kir" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, @@ -34545,6 +34605,12 @@ }, /turf/closed/wall, /area/station/hallway/primary/central) +"kKX" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/holopad, +/obj/effect/landmark/start/blueshield, +/turf/open/floor/wood/large, +/area/station/command/heads_quarters/blueshield) "kLa" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable, @@ -38034,6 +38100,16 @@ /obj/effect/turf_decal/stripes/line, /turf/open/floor/iron/dark, /area/station/security/processing) +"lSa" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/obj/effect/landmark/start/gary/rare, +/turf/open/floor/iron/dark, +/area/station/service/library) "lSs" = ( /obj/structure/disposalpipe/segment{ dir = 10 @@ -38852,11 +38928,6 @@ /obj/structure/flora/bush/flowers_yw/style_random, /turf/open/floor/grass, /area/station/medical/pathology) -"mgq" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/start/gary, -/turf/open/floor/plastic, -/area/station/maintenance/starboard/fore) "mgx" = ( /obj/structure/bookcase/random/nonfiction, /obj/machinery/computer/security/telescreen/entertainment/directional/north, @@ -41403,12 +41474,6 @@ /obj/machinery/disease2/centrifuge, /turf/open/floor/iron/dark, /area/station/medical/pathology) -"mVK" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/effect/landmark/start/gary/rare, -/turf/open/floor/iron/showroomfloor, -/area/station/commons/toilet/restrooms) "mVL" = ( /obj/structure/rack, /obj/effect/turf_decal/bot, @@ -42865,27 +42930,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/aft) -"nuv" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/landmark/event_spawn, -/obj/effect/landmark/start/gary, -/turf/open/floor/carpet/green, -/area/station/maintenance/port/greater) -"nuz" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/firedoor, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/door/airlock/corporate{ - id_tag = "BSdoor"; - name = "Blueshield's Office" - }, -/obj/effect/mapping_helpers/airlock/access/all/command/captain, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/blueshield) "nuF" = ( /obj/item/radio/intercom/directional/north, /obj/machinery/vending/cigarette, @@ -43284,6 +43328,14 @@ /obj/effect/turf_decal/stripes/corner, /turf/open/floor/engine, /area/station/ai_monitored/turret_protected/aisat/atmos) +"nAE" = ( +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/event_spawn, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/department/bridge) "nAH" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -43579,11 +43631,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/commons/storage/primary) -"nFt" = ( -/obj/effect/turf_decal/bot, -/obj/machinery/holopad, -/turf/open/floor/wood/large, -/area/station/command/heads_quarters/blueshield) "nFu" = ( /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -44115,6 +44162,20 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark/textured, /area/station/maintenance/starboard/fore) +"nMY" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/decal/cleanable/blood/gibs/limb, +/obj/effect/landmark/event_spawn, +/obj/structure/cable, +/obj/effect/decal/cleanable/blood/tracks{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/starboard) "nNb" = ( /obj/structure/lattice/catwalk, /turf/open/space/basic, @@ -44545,15 +44606,6 @@ }, /turf/open/floor/iron/dark/herringbone, /area/station/security/prison) -"nVX" = ( -/obj/effect/landmark/generic_maintenance_landmark, -/obj/effect/landmark/blobstart, -/obj/effect/landmark/event_spawn, -/obj/effect/spawner/random/trash/mess, -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/landmark/start/gary, -/turf/open/floor/plating, -/area/station/maintenance/department/crew_quarters/bar) "nWg" = ( /obj/item/radio/intercom/directional/east, /obj/effect/turf_decal/siding/purple/corner{ @@ -46289,12 +46341,6 @@ }, /turf/open/floor/iron/dark, /area/station/engineering/main) -"oCp" = ( -/obj/effect/landmark/event_spawn, -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/landmark/start/gary, -/turf/open/floor/wood, -/area/station/maintenance/starboard/fore) "oCt" = ( /obj/machinery/airalarm/directional/east, /obj/structure/cable, @@ -46767,14 +46813,6 @@ /obj/structure/lattice, /turf/open/space/basic, /area/space/nearstation) -"oLF" = ( -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/event_spawn, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/landmark/start/gary, -/turf/open/floor/plating, -/area/station/maintenance/department/bridge) "oLG" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/stripes/line, @@ -55786,6 +55824,15 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/security/processing) +"ryL" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/generic_maintenance_landmark, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/obj/effect/landmark/start/gary, +/turf/open/floor/iron/dark, +/area/station/maintenance/starboard) "ryW" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment, @@ -56811,20 +56858,6 @@ }, /turf/open/floor/iron/dark, /area/station/science/research) -"rPW" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/generic_maintenance_landmark, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/obj/effect/landmark/start/gary, -/turf/open/floor/iron/dark, -/area/station/maintenance/starboard) -"rQo" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/start/gary, -/turf/open/floor/iron/dark/textured, -/area/station/maintenance/starboard/fore) "rQC" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/effect/decal/cleanable/dirt, @@ -58236,14 +58269,6 @@ /obj/machinery/light/directional/north, /turf/open/floor/iron, /area/station/cargo/storage) -"smh" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) "smi" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -65804,17 +65829,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/maintenance/starboard) -"uGT" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/siding/wood, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/south, -/obj/structure/chair/comfy/teal{ - dir = 4 - }, -/turf/open/floor/wood/large, -/area/station/command/heads_quarters/blueshield) "uGU" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, @@ -68935,20 +68949,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/showroomfloor, /area/station/science/explab) -"vDT" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood/old, -/obj/effect/decal/cleanable/blood/gibs/limb, -/obj/effect/landmark/event_spawn, -/obj/structure/cable, -/obj/effect/decal/cleanable/blood/tracks{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/landmark/start/gary, -/turf/open/floor/plating, -/area/station/maintenance/starboard) "vDU" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -69152,20 +69152,6 @@ /obj/machinery/light/small/directional/west, /turf/open/floor/wood, /area/station/commons/fitness/recreation) -"vGS" = ( -/obj/structure/table/wood, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/effect/turf_decal/siding/wood/corner{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/item/book/bible, -/turf/open/floor/carpet/red, -/area/station/service/chapel) "vGY" = ( /obj/machinery/light/directional/east, /obj/machinery/newscaster/directional/north, @@ -73547,6 +73533,17 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/glass, /area/station/maintenance/starboard) +"wSW" = ( +/obj/machinery/door/poddoor/preopen{ + id = "Biohazard"; + name = "Emergency Research Blast Door" + }, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/caution/stand_clear, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark, +/area/station/science/research) "wSY" = ( /obj/machinery/camera/directional/south{ c_tag = "Satellite Antechamber"; @@ -76404,20 +76401,6 @@ /obj/effect/mapping_helpers/airlock/access/all/engineering/ce, /turf/open/floor/iron/dark, /area/station/command/heads_quarters/ce) -"xRs" = ( -/obj/machinery/door/airlock/research{ - id_tag = "ResearchInt"; - name = "Research Division" - }, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 4 - }, -/obj/effect/landmark/navigate_destination, -/obj/effect/mapping_helpers/airlock/access/all/science/general, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/science/research) "xRv" = ( /obj/machinery/recharge_station, /obj/structure/cable, @@ -76684,6 +76667,20 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, /area/station/maintenance/fore) +"xVy" = ( +/obj/machinery/door/airlock/research{ + id_tag = "ResearchInt"; + name = "Research Division" + }, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 4 + }, +/obj/effect/landmark/navigate_destination, +/obj/effect/mapping_helpers/airlock/access/all/science/general, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark, +/area/station/science/research) "xVz" = ( /obj/structure/chair/comfy/brown, /obj/effect/spawner/random/maintenance, @@ -77050,6 +77047,15 @@ }, /turf/open/floor/iron/showroomfloor, /area/station/medical/pathology) +"yaC" = ( +/obj/effect/landmark/generic_maintenance_landmark, +/obj/effect/landmark/blobstart, +/obj/effect/landmark/event_spawn, +/obj/effect/spawner/random/trash/mess, +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/department/crew_quarters/bar) "yaE" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -77239,10 +77245,6 @@ }, /turf/open/floor/iron/showroomfloor, /area/station/medical/cryo) -"ydf" = ( -/obj/effect/landmark/start/gary, -/turf/open/floor/wood, -/area/station/maintenance/port/fore) "ydw" = ( /obj/effect/turf_decal/tile/yellow{ dir = 8 @@ -89215,7 +89217,7 @@ iMx gnh slr rqG -aKQ +gJw tiv rfg vtv @@ -89261,7 +89263,7 @@ whj jKJ vjh jeZ -nuv +fJr kJx paM fvr @@ -89464,11 +89466,11 @@ vmZ vmZ vEv pUb -vGS +cbO jAu qbE jAu -aSP +jJr gnp rxp vrs @@ -95668,7 +95670,7 @@ aeu pVz mkI uHc -ydf +eyl jQR hCV xAK @@ -102090,7 +102092,7 @@ uNO uNO uNO aIh -mVK +bNu qrv sGj xqJ @@ -102377,7 +102379,7 @@ eOl oJV rzr rYK -kio +lSa xcJ krw fgo @@ -103410,7 +103412,7 @@ wpN jCm xVz jVG -nVX +yaC dAU mkB bEe @@ -104958,7 +104960,7 @@ hLu eNz uJh nYG -uGT +dTO hLu vMX mah @@ -105470,7 +105472,7 @@ nvP jyI hLu mlO -nFt +kKX izz nsm hLu @@ -106245,7 +106247,7 @@ hLu hLu hLu hLu -nuz +cgW hLu hLu cEr @@ -109836,7 +109838,7 @@ xPk wtb gfJ bXX -edF +igx wcV tmD fbF @@ -110092,7 +110094,7 @@ guc pyJ gka jeL -oLF +nAE fiy hMZ ygj @@ -110301,7 +110303,7 @@ mOH lyC mzc kCx -rQo +aeN agx izu kXh @@ -110577,7 +110579,7 @@ cIX fvU nUi iVF -oCp +elc hIs jre rsZ @@ -112362,7 +112364,7 @@ wsa lRk oTm dIi -mgq +gpk dIi fvU vBv @@ -114190,7 +114192,7 @@ nJK moD oQH cMj -guY +imc xwn txl vPd @@ -114447,7 +114449,7 @@ vqN bBF vMG maj -smh +eaB ayh byK mCt @@ -114704,7 +114706,7 @@ jBh bBF sxB kBP -emV +wSW kBP vFY ofs @@ -114961,7 +114963,7 @@ wWD wdf sxB sQT -xRs +xVy sxB aND xDM @@ -119055,7 +119057,7 @@ rZV rZV ceu gnE -vDT +nMY mCL vOX rZV @@ -120340,7 +120342,7 @@ ryj seS uUc gqZ -rPW +ryL xoJ tgo uVQ @@ -122895,7 +122897,7 @@ cBp cBp oRy bsf -iiM +eCI nCZ tiL izr diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index 68aff567a7b1..775eb74f145f 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -318,11 +318,6 @@ /obj/machinery/atmospherics/pipe/smart/simple/purple/visible, /turf/open/floor/iron, /area/station/engineering/atmos/pumproom) -"ags" = ( -/obj/item/book/bible, -/obj/structure/altar_of_gods, -/turf/open/floor/iron/dark, -/area/station/service/chapel) "agN" = ( /obj/structure/table/glass, /obj/item/radio/intercom/directional/west, @@ -4817,6 +4812,12 @@ }, /turf/open/floor/sandy_dirt, /area/station/service/hydroponics) +"bJC" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/starboard/fore) "bJQ" = ( /obj/machinery/vending/coffee, /obj/effect/turf_decal/bot, @@ -5764,14 +5765,6 @@ dir = 1 }, /area/station/security/prison) -"cgj" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/landmark/start/gary/uncommon, -/turf/open/floor/plating, -/area/station/medical/abandoned) "cgF" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -7407,6 +7400,13 @@ /obj/machinery/firealarm/directional/west, /turf/open/floor/plating, /area/station/cargo/drone_bay) +"cLS" = ( +/obj/structure/chair/office, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/start/hangover, +/obj/effect/landmark/start/gary/rare, +/turf/open/floor/wood, +/area/station/service/library) "cMb" = ( /obj/effect/turf_decal/stripes/line, /obj/structure/cable, @@ -7417,6 +7417,14 @@ /obj/machinery/atmospherics/pipe/smart/simple/cyan/visible, /turf/open/floor/iron, /area/station/engineering/atmos/pumproom) +"cMN" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/landmark/start/gary/uncommon, +/turf/open/floor/plating, +/area/station/medical/abandoned) "cMQ" = ( /obj/machinery/door/poddoor/shutters/preopen{ id = "hopqueue"; @@ -7641,6 +7649,10 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/hallway/secondary/entry) +"cRs" = ( +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/starboard/greater) "cRC" = ( /obj/machinery/light/small/directional/south, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -8689,6 +8701,11 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron/dark, /area/station/security/interrogation) +"dkT" = ( +/obj/item/book/bible, +/obj/structure/altar_of_gods, +/turf/open/floor/iron/dark, +/area/station/service/chapel) "dkW" = ( /obj/structure/disposalpipe/trunk{ dir = 1 @@ -9808,6 +9825,20 @@ }, /turf/open/floor/iron/white/smooth_large, /area/station/medical/pharmacy) +"dHV" = ( +/obj/effect/turf_decal/delivery, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/airlock/corporate{ + id_tag = "BSdoor"; + name = "Blueshield's Office" + }, +/obj/effect/landmark/navigate_destination, +/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/access/all/admin/general, +/turf/open/floor/iron, +/area/station/command/heads_quarters/blueshield) "dIy" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -10860,24 +10891,6 @@ /obj/effect/turf_decal/tile/blue/fourcorners, /turf/open/floor/iron, /area/station/hallway/primary/central) -"eaq" = ( -/obj/structure/table, -/obj/item/stack/ducts/fifty, -/obj/item/stack/ducts/fifty, -/obj/item/stack/ducts/fifty, -/obj/item/stack/ducts/fifty, -/obj/item/stack/ducts/fifty, -/obj/item/stack/ducts/fifty, -/obj/item/stack/ducts/fifty, -/obj/item/stack/ducts/fifty, -/obj/item/plunger, -/obj/item/plunger, -/obj/effect/turf_decal/tile/yellow/half/contrasted{ - dir = 4 - }, -/obj/item/construction/plumbing, -/turf/open/floor/iron/white, -/area/station/medical/chemistry) "eau" = ( /obj/effect/turf_decal/trimline/neutral/filled/corner{ dir = 8 @@ -12898,13 +12911,6 @@ }, /turf/closed/wall/r_wall, /area/station/hallway/secondary/command) -"eMe" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/effect/landmark/start/gary, -/turf/open/floor/plating, -/area/station/maintenance/fore) "eMG" = ( /obj/structure/closet/lasertag/blue, /obj/effect/turf_decal/tile/neutral/fourcorners, @@ -12982,6 +12988,14 @@ /obj/machinery/power/apc/auto_name/directional/east, /turf/open/floor/iron/dark/telecomms, /area/station/tcommsat/server) +"eNH" = ( +/obj/effect/landmark/generic_maintenance_landmark, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/fore) "eNR" = ( /turf/closed/wall, /area/station/ai_monitored/aisat/exterior) @@ -13075,6 +13089,24 @@ }, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/ai_upload) +"eQm" = ( +/obj/structure/table, +/obj/item/stack/ducts/fifty, +/obj/item/stack/ducts/fifty, +/obj/item/stack/ducts/fifty, +/obj/item/stack/ducts/fifty, +/obj/item/stack/ducts/fifty, +/obj/item/stack/ducts/fifty, +/obj/item/stack/ducts/fifty, +/obj/item/stack/ducts/fifty, +/obj/item/plunger, +/obj/item/plunger, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 4 + }, +/obj/item/construction/plumbing, +/turf/open/floor/iron/white, +/area/station/medical/chemistry) "eQs" = ( /obj/machinery/air_sensor/air_tank, /turf/open/floor/engine/air, @@ -13334,12 +13366,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/commons/locker) -"eVJ" = ( -/obj/item/storage/toolbox/emergency, -/obj/effect/mapping_helpers/burnt_floor, -/obj/effect/landmark/start/gary, -/turf/open/floor/plating, -/area/station/maintenance/port) "eVX" = ( /obj/machinery/firealarm/directional/west, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -13603,6 +13629,14 @@ /obj/structure/displaycase/labcage, /turf/open/floor/engine, /area/station/command/heads_quarters/rd) +"eZZ" = ( +/obj/machinery/light/directional/south, +/obj/structure/chair/comfy/teal{ + dir = 8 + }, +/obj/effect/landmark/start/blueshield, +/turf/open/floor/carpet/cyan, +/area/station/command/heads_quarters/blueshield) "fad" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/carpet, @@ -14694,6 +14728,14 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/engineering/atmospherics_engine) +"fuy" = ( +/obj/machinery/light/small/directional/south, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/effect/landmark/start/gary/rare, +/turf/open/floor/iron/freezer, +/area/station/commons/toilet/restrooms) "fuA" = ( /obj/effect/turf_decal/trimline/blue/filled/line, /obj/structure/cable, @@ -14703,6 +14745,11 @@ }, /turf/open/floor/iron/white, /area/station/medical/medbay/central) +"fvb" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/starboard/fore) "fvB" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -16116,11 +16163,6 @@ }, /turf/open/floor/iron/dark/textured, /area/station/engineering/atmos) -"fXz" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/landmark/start/gary, -/turf/open/floor/plating, -/area/station/maintenance/starboard/fore) "fXK" = ( /obj/effect/turf_decal/trimline/red/filled/corner{ dir = 8 @@ -16205,15 +16247,6 @@ }, /turf/open/floor/iron, /area/station/science/lab) -"fYU" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/turf/open/floor/wood, -/area/station/command/heads_quarters/blueshield) "fYX" = ( /obj/structure/cable, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -24643,14 +24676,6 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/service) -"iNS" = ( -/obj/machinery/light/small/directional/south, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/power/apc/auto_name/directional/south, -/obj/effect/landmark/start/gary/rare, -/turf/open/floor/iron/freezer, -/area/station/commons/toilet/restrooms) "iOc" = ( /obj/effect/turf_decal/tile/neutral{ dir = 8 @@ -26607,6 +26632,13 @@ }, /turf/open/floor/iron/white, /area/station/medical/surgery/aft) +"jue" = ( +/obj/effect/spawner/random/trash/garbage{ + spawn_scatter_radius = 1 + }, +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/port/fore) "juf" = ( /obj/machinery/telecomms/bus/preset_two, /turf/open/floor/circuit/telecomms/mainframe, @@ -26985,20 +27017,6 @@ }, /turf/open/floor/iron, /area/station/security/office) -"jyO" = ( -/obj/effect/turf_decal/delivery, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/airlock/corporate{ - id_tag = "BSdoor"; - name = "Blueshield's Office" - }, -/obj/effect/mapping_helpers/airlock/access/all/command/captain, -/obj/effect/landmark/navigate_destination, -/obj/machinery/door/firedoor, -/turf/open/floor/iron, -/area/station/command/heads_quarters/blueshield) "jyQ" = ( /obj/machinery/computer/records/medical{ dir = 8 @@ -29407,6 +29425,14 @@ /obj/effect/landmark/generic_maintenance_landmark, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) +"ksK" = ( +/obj/effect/landmark/generic_maintenance_landmark, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/port) "ksT" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -29890,13 +29916,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/command/teleporter) -"kAE" = ( -/obj/machinery/light/directional/south, -/obj/structure/chair/comfy/teal{ - dir = 8 - }, -/turf/open/floor/carpet/cyan, -/area/station/command/heads_quarters/blueshield) "kAF" = ( /obj/machinery/duct, /turf/open/floor/iron/freezer, @@ -30950,10 +30969,6 @@ }, /turf/open/floor/iron, /area/station/engineering/break_room) -"kVM" = ( -/obj/effect/landmark/start/gary, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) "kVN" = ( /turf/open/floor/carpet, /area/station/service/chapel) @@ -33211,6 +33226,16 @@ /obj/structure/lattice, /turf/open/space/basic, /area/space/nearstation) +"lMN" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/effect/landmark/start/blueshield, +/turf/open/floor/wood, +/area/station/command/heads_quarters/blueshield) "lMW" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -35009,6 +35034,10 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, /area/station/maintenance/fore) +"mst" = ( +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "msI" = ( /turf/closed/wall, /area/station/security/bitden) @@ -35641,15 +35670,6 @@ /obj/item/kirbyplants/random/dead, /turf/open/floor/iron/dark, /area/station/command/heads_quarters/rd) -"mCz" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/obj/effect/landmark/start/gary/uncommon, -/turf/open/floor/iron, -/area/station/cargo/drone_bay) "mCL" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, @@ -36632,22 +36652,12 @@ /obj/effect/turf_decal/trimline/brown/filled/line, /turf/open/floor/iron, /area/station/cargo/miningoffice) -"mUE" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/landmark/start/gary, -/turf/open/floor/plating, -/area/station/maintenance/starboard/fore) "mUF" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 }, /turf/open/floor/iron, /area/station/cargo/drone_bay) -"mUI" = ( -/obj/effect/landmark/start/gary, -/turf/open/floor/wood, -/area/station/maintenance/port/aft) "mUL" = ( /obj/machinery/door/airlock/atmos{ name = "Hypertorus Fusion Reactor" @@ -36802,6 +36812,15 @@ /obj/effect/spawner/random/maintenance, /turf/open/floor/plating, /area/station/maintenance/port/aft) +"mWY" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/obj/effect/landmark/start/gary/uncommon, +/turf/open/floor/iron, +/area/station/cargo/drone_bay) "mWZ" = ( /obj/item/folder/red, /obj/item/pen, @@ -37132,13 +37151,6 @@ }, /turf/open/floor/iron/dark/textured, /area/station/medical/pathology) -"nbq" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 5 - }, -/obj/effect/landmark/start/gary/uncommon, -/turf/open/floor/wood, -/area/station/smithing) "nbs" = ( /obj/effect/turf_decal/delivery, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -41232,13 +41244,6 @@ }, /turf/open/floor/plating, /area/station/commons/toilet/auxiliary) -"oyB" = ( -/obj/structure/chair/office, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/landmark/start/hangover, -/obj/effect/landmark/start/gary/rare, -/turf/open/floor/wood, -/area/station/service/library) "oyO" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -46688,14 +46693,6 @@ /obj/machinery/suit_storage_unit/standard_unit, /turf/open/floor/iron/dark, /area/station/maintenance/aft/lesser) -"qvo" = ( -/obj/effect/landmark/generic_maintenance_landmark, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/obj/effect/landmark/start/gary, -/turf/open/floor/plating, -/area/station/maintenance/port) "qvJ" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -47130,6 +47127,12 @@ /obj/machinery/computer/records/medical/laptop, /turf/open/floor/iron/white, /area/station/security/medical) +"qDD" = ( +/obj/item/storage/toolbox/emergency, +/obj/effect/mapping_helpers/burnt_floor, +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/port) "qDI" = ( /obj/effect/turf_decal/trimline/green/filled/line, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -47462,6 +47465,17 @@ /obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, /area/station/maintenance/port/aft) +"qKD" = ( +/obj/item/book/bible, +/obj/machinery/light/small/directional/north, +/obj/machinery/newscaster/directional/north, +/obj/machinery/camera/directional/north{ + c_tag = "Chapel - Fore" + }, +/obj/structure/table/wood, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/service/chapel) "qKR" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/atmospherics/pipe/smart/simple/yellow/visible, @@ -49170,13 +49184,6 @@ /obj/effect/landmark/start/hangover, /turf/open/floor/carpet, /area/station/service/theater) -"rqf" = ( -/obj/effect/spawner/random/trash/garbage{ - spawn_scatter_radius = 1 - }, -/obj/effect/landmark/start/gary, -/turf/open/floor/plating, -/area/station/maintenance/port/fore) "rqT" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -49520,6 +49527,14 @@ /obj/machinery/light_switch/directional/south, /turf/open/floor/iron/dark, /area/station/engineering/storage/tech) +"rwB" = ( +/obj/effect/landmark/generic_maintenance_landmark, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/port) "rwE" = ( /obj/structure/table, /obj/item/paper_bin{ @@ -49835,6 +49850,15 @@ }, /turf/open/floor/iron, /area/station/engineering/main) +"rBh" = ( +/obj/structure/noticeboard/directional/north{ + desc = "A memorial wall for pinning mementos upon."; + name = "memorial board" + }, +/obj/item/book/bible, +/obj/structure/table/wood, +/turf/open/floor/carpet, +/area/station/service/chapel/funeral) "rBi" = ( /obj/machinery/airalarm/directional/west, /obj/effect/turf_decal/stripes/line{ @@ -51649,10 +51673,6 @@ /obj/structure/sign/directions/evac, /turf/closed/wall/r_wall, /area/station/hallway/primary/aft) -"seP" = ( -/obj/effect/landmark/start/gary, -/turf/open/floor/plating, -/area/station/maintenance/starboard/greater) "sfg" = ( /obj/structure/cable, /obj/effect/turf_decal/trimline/red/filled/line{ @@ -53305,6 +53325,13 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/fore) +"sKo" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/fore) "sKr" = ( /obj/structure/window/spawner/directional/south, /obj/structure/window/spawner/directional/east, @@ -54392,14 +54419,6 @@ }, /turf/open/floor/iron/dark, /area/station/medical/morgue) -"tcK" = ( -/obj/effect/landmark/generic_maintenance_landmark, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/obj/effect/landmark/start/gary, -/turf/open/floor/plating, -/area/station/maintenance/fore) "tcN" = ( /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/tile/neutral/fourcorners, @@ -56925,6 +56944,10 @@ }, /turf/open/floor/iron/checker, /area/station/engineering/atmos/storage/gas) +"tYI" = ( +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/port/aft) "tYO" = ( /obj/structure/cable, /obj/effect/mapping_helpers/airlock/access/all/science/rd, @@ -57647,14 +57670,6 @@ /obj/structure/fans/tiny, /turf/open/floor/plating, /area/station/service/chapel/funeral) -"ulG" = ( -/obj/effect/landmark/generic_maintenance_landmark, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/effect/landmark/start/gary, -/turf/open/floor/plating, -/area/station/maintenance/port) "ulQ" = ( /obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 1 @@ -62789,15 +62804,6 @@ }, /turf/open/floor/sandy_dirt, /area/station/service/hydroponics) -"wdV" = ( -/obj/structure/noticeboard/directional/north{ - desc = "A memorial wall for pinning mementos upon."; - name = "memorial board" - }, -/obj/item/book/bible, -/obj/structure/table/wood, -/turf/open/floor/carpet, -/area/station/service/chapel/funeral) "wen" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment, @@ -65624,17 +65630,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/ai_monitored/aisat/exterior) -"xez" = ( -/obj/item/book/bible, -/obj/machinery/light/small/directional/north, -/obj/machinery/newscaster/directional/north, -/obj/machinery/camera/directional/north{ - c_tag = "Chapel - Fore" - }, -/obj/structure/table/wood, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, -/area/station/service/chapel) "xeN" = ( /obj/structure/cable, /obj/effect/turf_decal/stripes/line{ @@ -65861,10 +65856,13 @@ "xhh" = ( /turf/open/floor/plating/airless, /area/station/science/ordnance/bomb) -"xin" = ( -/obj/effect/landmark/start/gary, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) +"xij" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/obj/effect/landmark/start/gary/uncommon, +/turf/open/floor/wood, +/area/station/smithing) "xip" = ( /obj/machinery/portable_atmospherics/canister/nitrous_oxide, /obj/effect/turf_decal/bot, @@ -65943,6 +65941,10 @@ }, /turf/open/floor/circuit/green, /area/station/ai_monitored/turret_protected/ai) +"xjd" = ( +/obj/effect/landmark/start/gary, +/turf/open/floor/wood, +/area/station/maintenance/port/aft) "xjh" = ( /turf/closed/wall, /area/station/security/checkpoint/customs) @@ -82948,7 +82950,7 @@ igV nLG pOa clp -eVJ +qDD jmJ pOa uEO @@ -83219,7 +83221,7 @@ pOa pOa jUb xqn -mUI +xjd fQZ ehv sBL @@ -83729,7 +83731,7 @@ sTq cMb fFu wvr -ulG +ksK tYi jUb eov @@ -84235,7 +84237,7 @@ tON kEm xnr stL -nbq +xij lsu qLP pOa @@ -85541,7 +85543,7 @@ jUb xRB dqN dqN -xin +tYI cNS eNV dqN @@ -86035,7 +86037,7 @@ tmI fjD pOa cIW -qvo +rwB tYi vXH pOa @@ -88608,7 +88610,7 @@ kFM kFM ilC prD -oyB +cLS lIa xjC pOa @@ -88647,7 +88649,7 @@ xGk tBJ xOP ijF -cgj +cMN mMO hdo hzG @@ -88810,7 +88812,7 @@ tdg hkj hkj kuW -mCz +mWY vKg mUF obF @@ -90097,7 +90099,7 @@ aaa jXu uUu oCd -rqf +jue bPM jXu loQ @@ -90203,7 +90205,7 @@ aMf xUX yjW vQg -wdV +rBh hto bnH dLy @@ -91997,7 +91999,7 @@ jJY iDN xtz tSw -xez +qKD iJj uZD hKv @@ -92518,7 +92520,7 @@ phR phR wjV phR -ags +dkT fkT cXw rRZ @@ -95573,7 +95575,7 @@ fvE kKT fBG wPH -eaq +eQm drW jxm bcr @@ -98367,10 +98369,10 @@ syo eDL lSz tst -jyO +dHV xOl iag -kAE +eZZ hJK ocv lVl @@ -98626,7 +98628,7 @@ lSz vQe hJK ecI -fYU +lMN uqK hJK bYn @@ -102686,7 +102688,7 @@ aaa ilh cur cur -tcK +eNH cur ilh rlp @@ -102702,7 +102704,7 @@ ilh ilh ilh dKO -iNS +fuy dIO dIO dIO @@ -103207,7 +103209,7 @@ fEW ilh ssJ msd -eMe +sKo cur sab ilh @@ -105868,7 +105870,7 @@ arg hIZ qlG fPD -kVM +mst eQY fPD nTd @@ -108090,7 +108092,7 @@ qhy qXB dOx jCw -fXz +fvb tjL aGe mFm @@ -109167,7 +109169,7 @@ eol fWA dxk cNm -seP +cRs ret qHO bNn @@ -109886,7 +109888,7 @@ cyS izd jlM jlM -mUE +bJC kXx aIC kVs diff --git a/_maps/map_files/Ouroboros/Ouroboros.dmm b/_maps/map_files/Ouroboros/Ouroboros.dmm index ac58a322d50a..0b7b079e0b61 100644 --- a/_maps/map_files/Ouroboros/Ouroboros.dmm +++ b/_maps/map_files/Ouroboros/Ouroboros.dmm @@ -340,6 +340,14 @@ dir = 4 }, /area/station/hallway/primary/central/fore) +"afa" = ( +/obj/machinery/newscaster/directional/north, +/obj/machinery/camera/directional/north{ + c_tag = "Library - Public Lounge" + }, +/obj/effect/landmark/start/gary/rare, +/turf/open/floor/carpet/green, +/area/station/service/library) "afh" = ( /obj/structure/lattice/catwalk, /obj/structure/marker_beacon/bronze, @@ -856,11 +864,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, /area/station/maintenance/aft/greater) -"anH" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/smooth_large, -/area/station/cargo/quartermaster) "anI" = ( /obj/structure/trash_pile, /obj/structure/cable, @@ -974,9 +977,6 @@ /obj/effect/landmark/start/shaft_miner, /turf/open/floor/iron/dark, /area/station/cargo/storage) -"apB" = ( -/turf/closed/wall, -/area/station/security/bitden) "apL" = ( /obj/machinery/door/poddoor/shutters/preopen{ id = "vac-office"; @@ -1064,16 +1064,6 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/service/forge) -"aro" = ( -/obj/structure/chair/wood{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/item/ammo_casing/c45, -/obj/effect/landmark/start/gary, -/turf/open/floor/wood, -/area/station/maintenance/port/fore) "arz" = ( /obj/effect/mapping_helpers/broken_floor, /obj/structure/disposalpipe/segment{ @@ -2152,16 +2142,6 @@ dir = 4 }, /area/station/common/wrestling/arena) -"aHK" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/effect/landmark/start/gary, -/turf/open/floor/plating, -/area/station/maintenance/port/fore) "aIg" = ( /obj/effect/turf_decal/siding/wood, /obj/effect/turf_decal/siding/wood/corner{ @@ -3362,6 +3342,12 @@ "bbg" = ( /turf/open/floor/engine/hull/reinforced, /area/space/nearstation) +"bbh" = ( +/obj/structure/bed/maint, +/obj/machinery/light/small/broken/directional/north, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/iron/dark/small, +/area/station/security/prison/safe) "bbk" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -3652,11 +3638,6 @@ }, /turf/open/floor/iron/small, /area/station/security/checkpoint/escape) -"bft" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/cargo/quartermaster) "bfC" = ( /turf/closed/wall, /area/station/commons/dorms/room2) @@ -3959,6 +3940,14 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/carpet/purple, /area/station/command/heads_quarters/rd) +"bjh" = ( +/obj/machinery/firealarm/directional/west, +/obj/machinery/light_switch/directional/west{ + pixel_y = -9 + }, +/obj/machinery/light/red/directional/west, +/turf/open/floor/iron/dark/small, +/area/station/security/bitden) "bjs" = ( /obj/effect/turf_decal/tile/dark_red{ dir = 8 @@ -4036,6 +4025,25 @@ }, /turf/open/floor/wood/parquet, /area/station/medical/patients_rooms) +"bkh" = ( +/obj/structure/table/wood, +/obj/item/folder/yellow{ + pixel_y = 12; + pixel_x = 5 + }, +/obj/item/stamp/head/qm{ + pixel_y = 5 + }, +/obj/item/stamp{ + pixel_x = 5 + }, +/obj/item/stamp/denied{ + pixel_x = -5 + }, +/turf/open/floor/iron/dark/smooth_edge{ + dir = 8 + }, +/area/station/cargo/quartermaster) "bko" = ( /obj/effect/turf_decal/tile/blue/fourcorners, /obj/structure/cable, @@ -4456,6 +4464,15 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/small, /area/station/hallway/secondary/entry) +"bps" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/smooth_large, +/area/station/cargo/quartermaster) "bpv" = ( /obj/effect/turf_decal/stripes/line, /obj/structure/sign/warning/vacuum/external/directional/north, @@ -4512,6 +4529,20 @@ /obj/effect/turf_decal/stripes/corner, /turf/open/floor/iron, /area/station/engineering/atmos) +"bqN" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/tile/purple/half{ + dir = 4 + }, +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 4 + }, +/turf/open/floor/iron/dark/smooth_half{ + dir = 1 + }, +/area/station/security/bitden) "brb" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable, @@ -5911,15 +5942,6 @@ /obj/effect/turf_decal/tile/blue, /turf/open/floor/iron, /area/station/engineering/atmos/upper) -"bMY" = ( -/obj/structure/chair/comfy/brown{ - dir = 8 - }, -/obj/machinery/firealarm/directional/east, -/obj/structure/disposalpipe/segment, -/obj/effect/landmark/start/quartermaster, -/turf/open/floor/iron/dark/small, -/area/station/cargo/quartermaster) "bNc" = ( /obj/structure/railing, /turf/open/openspace, @@ -5934,6 +5956,20 @@ /obj/item/pen, /turf/open/floor/wood, /area/station/maintenance/starboard/fore) +"bNg" = ( +/obj/structure/table, +/obj/effect/turf_decal/bot_white, +/obj/effect/turf_decal/siding/dark{ + dir = 8 + }, +/obj/item/mining_voucher, +/obj/item/gps/mining{ + gpstag = "QM0"; + pixel_y = 4 + }, +/obj/machinery/light_switch/directional/east, +/turf/open/floor/iron/large, +/area/station/cargo/quartermaster) "bNi" = ( /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -6435,6 +6471,26 @@ }, /turf/open/floor/wood/tile, /area/station/service/bar) +"bXd" = ( +/obj/item/paper_bin/carbon{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/pen{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/computer_disk/quartermaster, +/obj/item/computer_disk/quartermaster, +/obj/structure/table/wood, +/obj/machinery/status_display/supply{ + pixel_y = 32 + }, +/obj/machinery/light/warm/directional/north, +/turf/open/floor/iron/dark/smooth_edge{ + dir = 8 + }, +/area/station/cargo/quartermaster) "bXk" = ( /turf/closed/wall, /area/station/service/janitor) @@ -6442,6 +6498,15 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/iron/large, /area/station/cargo/storage) +"bXy" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/door/airlock/grunge{ + id_tag = "Cell3Privacy"; + name = "Cell 3" + }, +/turf/open/floor/iron/dark/smooth_large, +/area/station/security/prison/safe) "bXJ" = ( /obj/effect/turf_decal/tile/dark_blue/half{ dir = 1 @@ -7710,13 +7775,6 @@ dir = 1 }, /area/station/common/wrestling/arena) -"cpa" = ( -/obj/machinery/disposal/bin, -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/box, -/obj/structure/disposalpipe/trunk, -/turf/open/floor/iron/dark/smooth_large, -/area/station/cargo/quartermaster) "cpm" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -7978,6 +8036,11 @@ }, /turf/open/floor/plating, /area/station/construction/mining/aux_base) +"cuA" = ( +/obj/structure/window/reinforced/tinted/fulltile, +/obj/structure/hedge/opaque, +/turf/open/floor/iron/dark/smooth_large, +/area/station/cargo/quartermaster) "cuJ" = ( /obj/item/toy/figure/assistant{ pixel_y = 17; @@ -8810,16 +8873,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) -"cHy" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 10 - }, -/obj/machinery/computer/shuttle/mining{ - dir = 4 - }, -/obj/effect/turf_decal/box, -/turf/open/floor/wood, -/area/station/cargo/quartermaster) "cHA" = ( /obj/item/poster/random_official, /obj/effect/spawner/random/maintenance, @@ -8900,20 +8953,6 @@ /obj/structure/chair/office/light, /turf/open/floor/glass/reinforced, /area/station/science/research) -"cJe" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/tile/brown/half{ - dir = 4 - }, -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 4 - }, -/turf/open/floor/iron/dark/smooth_half{ - dir = 1 - }, -/area/station/security/bitden) "cJh" = ( /obj/structure/hedge, /obj/structure/window/reinforced/tinted/fulltile, @@ -9050,6 +9089,9 @@ /obj/item/mod/module/thermal_regulator, /turf/open/floor/iron, /area/station/engineering/supermatter/room) +"cKK" = ( +/turf/closed/wall/r_wall, +/area/station/cargo/quartermaster) "cKN" = ( /obj/structure/lattice/catwalk, /obj/structure/marker_beacon/bronze, @@ -9241,11 +9283,6 @@ }, /turf/open/floor/iron/small, /area/station/hallway/primary/central/aft) -"cMR" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/landmark/event_spawn, -/turf/open/floor/iron/dark/small, -/area/station/security/bitden) "cNa" = ( /obj/structure/disposalpipe/sorting/mail/flip, /obj/effect/mapping_helpers/mail_sorting/service/library, @@ -9318,6 +9355,20 @@ /obj/effect/landmark/start/assistant, /turf/open/floor/iron/dark, /area/station/commons/storage/primary) +"cNH" = ( +/obj/effect/turf_decal/bot_white, +/obj/effect/turf_decal/siding/dark{ + dir = 8 + }, +/obj/structure/table, +/obj/machinery/fax{ + fax_name = "Quartermaster's Office"; + name = "Quartermaster's Fax Machine"; + pixel_y = 3 + }, +/obj/machinery/light/warm/directional/east, +/turf/open/floor/iron/large, +/area/station/cargo/quartermaster) "cNL" = ( /obj/effect/turf_decal/stripes/corner{ dir = 1 @@ -9566,6 +9617,10 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/maintenance/aft/greater) +"cSt" = ( +/obj/machinery/airalarm/directional/north, +/turf/open/floor/iron/dark/small, +/area/station/security/bitden) "cSw" = ( /obj/machinery/door/airlock/maintenance_hatch{ name = "Maintenance Hatch" @@ -9865,14 +9920,6 @@ /obj/effect/spawner/random/engineering/tracking_beacon, /turf/open/floor/iron/white, /area/station/medical/pharmacy) -"cZE" = ( -/obj/machinery/airalarm/directional/south, -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood/large, -/area/station/command/heads_quarters/blueshield) "cZO" = ( /obj/machinery/light/directional/east, /obj/item/kirbyplants/organic/plant22, @@ -9894,6 +9941,17 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/security/range) +"dad" = ( +/obj/structure/bed, +/obj/effect/landmark/start/prisoner, +/obj/item/bedsheet/brown, +/obj/machinery/button/curtain{ + id = "Cell3Privacy"; + pixel_x = 24; + pixel_y = 24 + }, +/turf/open/floor/iron/dark, +/area/station/security/prison/safe) "dap" = ( /obj/structure/fluff/paper/stack{ dir = 8 @@ -10194,14 +10252,6 @@ dir = 8 }, /area/station/security/holding_cell) -"ddq" = ( -/obj/machinery/firealarm/directional/west, -/obj/machinery/light_switch/directional/west{ - pixel_y = -9 - }, -/obj/machinery/light/red/directional/west, -/turf/open/floor/iron/dark/small, -/area/station/security/bitden) "ddu" = ( /mob/living/carbon/human/species/monkey, /obj/machinery/camera/directional/north{ @@ -10907,6 +10957,12 @@ }, /turf/open/floor/plating, /area/station/command/heads_quarters/hos) +"dns" = ( +/obj/machinery/airalarm/directional/east, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/iron/dark/small, +/area/station/cargo/quartermaster) "dnu" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable, @@ -15392,6 +15448,14 @@ /obj/item/kirbyplants/organic/plant21, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/aisat/teleporter) +"eCD" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/small, +/area/station/cargo/quartermaster) "eCE" = ( /obj/effect/turf_decal/tile/blue/full, /turf/open/floor/iron/dark/smooth_large, @@ -15865,13 +15929,6 @@ }, /turf/open/floor/wood/large, /area/station/service/chapel/funeral) -"eKa" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/security/prison/safe) "eKb" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -16139,9 +16196,6 @@ /obj/effect/turf_decal/bot, /turf/open/floor/engine, /area/station/engineering/atmos/upper) -"ePu" = ( -/turf/open/floor/iron/dark/smooth_large, -/area/station/cargo/quartermaster) "ePv" = ( /obj/structure/cable, /obj/structure/ladder, @@ -16475,6 +16529,11 @@ "eSH" = ( /turf/open/floor/iron, /area/station/maintenance/port/fore) +"eSR" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark/smooth_large, +/area/station/cargo/quartermaster) "eTh" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden, /obj/structure/cable, @@ -18555,6 +18614,18 @@ /obj/item/radio/intercom/chapel/directional/west, /turf/open/floor/wood/tile, /area/station/service/chapel/office) +"fAL" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/corporate{ + id_tag = "BSdoor"; + name = "Blueshield's Office" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/landmark/navigate_destination, +/obj/effect/mapping_helpers/airlock/access/all/admin/general, +/turf/open/floor/iron/dark/smooth_large, +/area/station/command/heads_quarters/blueshield) "fAT" = ( /obj/effect/turf_decal/arrows{ dir = 8; @@ -19253,36 +19324,6 @@ /obj/effect/turf_decal/tile/purple/opposingcorners, /turf/open/floor/iron/dark, /area/station/service/barber) -"fMP" = ( -/obj/effect/turf_decal/tile/dark/diagonal_edge, -/obj/item/storage/box/drinkingglasses{ - pixel_y = 12; - pixel_x = 6 - }, -/obj/structure/table, -/obj/item/reagent_containers/condiment/peppermill{ - desc = "Often used to flavor food or make people sneeze. Fashionably moved to the left side of the table."; - pixel_x = -8; - pixel_y = 6 - }, -/obj/item/reagent_containers/condiment/rice{ - pixel_x = 8; - pixel_y = 5 - }, -/obj/item/reagent_containers/condiment/flour{ - pixel_x = 8 - }, -/obj/item/reagent_containers/condiment/saltshaker{ - pixel_x = -9 - }, -/obj/item/storage/fancy/egg_box{ - pixel_y = -7 - }, -/obj/structure/cable, -/obj/item/kitchen/rollingpin, -/obj/item/knife/plastic, -/turf/open/floor/iron/kitchen/diagonal, -/area/station/security/prison) "fMR" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -19315,11 +19356,6 @@ /obj/machinery/mechpad, /turf/open/floor/iron, /area/station/science/robotics/mechbay) -"fNJ" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/landmark/start/gary, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) "fNN" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, /obj/structure/cable, @@ -19587,6 +19623,18 @@ }, /turf/open/floor/wood/tile, /area/station/service/lawoffice) +"fRo" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/holopad/secure, +/obj/effect/landmark/event_spawn, +/turf/open/floor/iron/dark/smooth_edge{ + dir = 8 + }, +/area/station/cargo/quartermaster) "fRv" = ( /obj/effect/spawner/random/structure/furniture_parts, /turf/open/floor/plating, @@ -19720,6 +19768,11 @@ /obj/structure/closet/secure_closet/engineering_welding, /turf/open/floor/iron, /area/station/engineering/supermatter/room) +"fUt" = ( +/obj/structure/dresser, +/obj/machinery/light/small/directional/south, +/turf/open/floor/carpet/black, +/area/station/cargo/quartermaster) "fUu" = ( /obj/machinery/door/firedoor/border_only{ dir = 8 @@ -20293,9 +20346,6 @@ }, /turf/open/floor/engine, /area/station/engineering/atmos/upper) -"gdb" = ( -/turf/closed/wall/r_wall, -/area/station/cargo/quartermaster) "gdc" = ( /obj/machinery/holopad, /obj/structure/disposalpipe/segment, @@ -20459,6 +20509,16 @@ /obj/machinery/light/warm/directional/east, /turf/open/floor/wood/tile, /area/station/service/bar) +"gfJ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/port/fore) "gfO" = ( /obj/structure/lattice, /turf/open/openspace, @@ -20859,17 +20919,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/engineering/atmos) -"glr" = ( -/obj/effect/mapping_helpers/airlock/access/all/command/captain, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/corporate{ - id_tag = "BSdoor"; - name = "Blueshield's Quarters" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/smooth_large, -/area/station/command/heads_quarters/blueshield) "glu" = ( /obj/effect/spawner/structure/window/reinforced/plasma, /obj/machinery/door/poddoor/preopen{ @@ -21912,9 +21961,6 @@ /obj/machinery/light/directional/south, /turf/open/floor/iron/dark/corner, /area/station/hallway/secondary/recreation) -"gDf" = ( -/turf/open/floor/iron/dark/small, -/area/station/security/bitden) "gDh" = ( /obj/machinery/computer/records/medical{ dir = 1 @@ -22325,6 +22371,16 @@ }, /turf/open/floor/iron/small, /area/station/hallway/primary/central/aft) +"gJx" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/curtain/cloth/fancy/mechanical{ + icon_state = "bounty-open"; + icon_type = "bounty"; + id = "Cell2Privacy"; + name = "curtain" + }, +/turf/open/floor/plating, +/area/station/security/prison/safe) "gJH" = ( /obj/effect/turf_decal/tile/dark_blue{ dir = 8 @@ -22549,6 +22605,15 @@ }, /turf/open/floor/plating, /area/station/command/heads_quarters/hop) +"gMS" = ( +/obj/effect/mapping_helpers/airlock/access/all/security/brig, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/door/airlock/security{ + id_tag = "IsolationCell"; + name = "Isolation Cell" + }, +/turf/open/floor/iron/dark/smooth_large, +/area/station/security/prison/safe) "gNf" = ( /obj/effect/turf_decal/tile/blue/full, /obj/effect/turf_decal/tile/dark_blue/full, @@ -23433,6 +23498,11 @@ }, /turf/open/floor/iron/dark/smooth_edge, /area/station/service/hydroponics) +"hao" = ( +/obj/structure/bed, +/obj/item/bedsheet/qm, +/turf/open/floor/carpet/black, +/area/station/cargo/quartermaster) "hap" = ( /obj/effect/turf_decal/box/corners{ dir = 1 @@ -23982,10 +24052,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/security/prison) -"hjz" = ( -/obj/machinery/drone_dispenser/preloaded, -/turf/open/floor/plating, -/area/station/maintenance/port/lesser) "hjJ" = ( /turf/closed/wall/r_wall, /area/station/ai_monitored/turret_protected/aisat_interior) @@ -24033,6 +24099,36 @@ /obj/effect/landmark/start/brig_physician, /turf/open/floor/iron/white/smooth_large, /area/station/security/medical) +"hkQ" = ( +/obj/effect/turf_decal/tile/dark/diagonal_edge, +/obj/item/storage/box/drinkingglasses{ + pixel_y = 12; + pixel_x = 6 + }, +/obj/structure/table, +/obj/item/reagent_containers/condiment/peppermill{ + desc = "Often used to flavor food or make people sneeze. Fashionably moved to the left side of the table."; + pixel_x = -8; + pixel_y = 6 + }, +/obj/item/reagent_containers/condiment/rice{ + pixel_x = 8; + pixel_y = 5 + }, +/obj/item/reagent_containers/condiment/flour{ + pixel_x = 8 + }, +/obj/item/reagent_containers/condiment/saltshaker{ + pixel_x = -9 + }, +/obj/item/storage/fancy/egg_box{ + pixel_y = -7 + }, +/obj/structure/cable, +/obj/item/kitchen/rollingpin, +/obj/item/knife/plastic, +/turf/open/floor/iron/kitchen/diagonal, +/area/station/security/prison) "hkU" = ( /obj/effect/turf_decal/tile/dark_blue{ dir = 1 @@ -24282,17 +24378,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) -"hnW" = ( -/obj/effect/turf_decal/bot_white, -/obj/effect/turf_decal/siding/dark{ - dir = 4 - }, -/obj/machinery/light/small/directional/south, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/iron/large, -/area/station/cargo/quartermaster) "hoa" = ( /turf/closed/wall, /area/station/commons/dorms/room4) @@ -24851,14 +24936,6 @@ /obj/structure/chair/wood, /turf/open/floor/wood, /area/station/service/chapel) -"hvE" = ( -/obj/structure/chair/office{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron/dark/smooth_large, -/area/station/cargo/quartermaster) "hwl" = ( /obj/structure/cable, /obj/effect/turf_decal/tile/yellow/half/contrasted{ @@ -25101,16 +25178,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/white, /area/station/medical/treatment_center) -"hAP" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/curtain/cloth/fancy/mechanical{ - icon_state = "bounty-open"; - icon_type = "bounty"; - id = "Cell1Privacy"; - name = "curtain" - }, -/turf/open/floor/plating, -/area/station/security/prison/safe) "hBb" = ( /obj/effect/turf_decal/stripes/line{ dir = 6 @@ -25308,18 +25375,6 @@ /obj/effect/turf_decal/bot, /turf/open/floor/plating, /area/station/maintenance/aft/greater) -"hDF" = ( -/obj/structure/closet/secure_closet/quartermaster, -/obj/effect/turf_decal/bot_white, -/obj/effect/turf_decal/siding/dark{ - dir = 4 - }, -/obj/item/clothing/glasses/material/mining/gar, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/iron/large, -/area/station/cargo/quartermaster) "hDH" = ( /obj/effect/spawner/random/trash/food_packaging, /turf/open/floor/plating, @@ -26115,6 +26170,16 @@ /obj/machinery/status_display/evac/directional/east, /turf/open/floor/iron/dark, /area/station/command/teleporter) +"hQp" = ( +/obj/structure/chair/wood{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/item/ammo_casing/c45, +/obj/effect/landmark/start/gary, +/turf/open/floor/wood, +/area/station/maintenance/port/fore) "hQC" = ( /obj/structure/disposalpipe/segment, /obj/machinery/light/small/directional/east, @@ -26259,15 +26324,6 @@ /obj/structure/window/spawner/directional/south, /turf/open/openspace, /area/station/security/brig/upper) -"hRK" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/machinery/requests_console/auto_name/directional/west, -/obj/effect/mapping_helpers/requests_console/information, -/obj/effect/mapping_helpers/requests_console/assistance, -/turf/open/floor/wood, -/area/station/cargo/quartermaster) "hRM" = ( /obj/effect/turf_decal/tile/purple/opposingcorners{ dir = 1 @@ -26450,16 +26506,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/commons/storage/tools) -"hUM" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 8; - id = "qm"; - name = "Privacy Shutters" - }, -/turf/open/floor/plating, -/area/station/cargo/quartermaster) "hUT" = ( /turf/open/openspace, /area/station/hallway/secondary/command) @@ -26712,6 +26758,13 @@ dir = 8 }, /area/station/hallway/primary/starboard) +"hXA" = ( +/obj/machinery/disposal/bin, +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/box, +/obj/structure/disposalpipe/trunk, +/turf/open/floor/iron/dark/smooth_large, +/area/station/cargo/quartermaster) "hXE" = ( /obj/effect/turf_decal/stripes/corner{ dir = 4 @@ -27129,16 +27182,6 @@ /obj/structure/cable, /turf/open/floor/wood/tile, /area/station/security/detectives_office) -"idQ" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 9 - }, -/obj/machinery/computer/security/qm{ - dir = 4 - }, -/obj/effect/turf_decal/box, -/turf/open/floor/wood, -/area/station/cargo/quartermaster) "iec" = ( /obj/structure/cable, /turf/open/floor/plating, @@ -27197,6 +27240,22 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/hallway/primary/port) +"ieG" = ( +/obj/item/radio/intercom/directional/north, +/obj/machinery/light/red/directional/north, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/tile/brown/half{ + dir = 4 + }, +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 4 + }, +/turf/open/floor/iron/dark/smooth_half{ + dir = 1 + }, +/area/station/security/bitden) "ieH" = ( /obj/structure/closet/secure_closet/medical1{ anchored = 1 @@ -27576,14 +27635,6 @@ /obj/effect/turf_decal/tile/purple/half/contrasted, /turf/open/floor/iron/white, /area/station/science/xenobiology) -"ikk" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood, -/area/station/cargo/quartermaster) "ikm" = ( /obj/effect/turf_decal/siding/white, /obj/structure/table/reinforced, @@ -27653,6 +27704,12 @@ }, /turf/open/floor/engine, /area/station/engineering/atmos/upper) +"ill" = ( +/obj/effect/turf_decal/tile/dark/diagonal_edge, +/obj/machinery/light/warm/directional/north, +/obj/machinery/firealarm/directional/north, +/turf/open/floor/iron/kitchen/diagonal, +/area/station/security/prison) "ilq" = ( /obj/effect/turf_decal/stripes/line{ dir = 6 @@ -28450,20 +28507,6 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) -"ixQ" = ( -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/any/supply/qm, -/obj/machinery/door/airlock/mining/glass{ - name = "Drone Bay" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/smooth_large, -/area/station/cargo/quartermaster) "ixV" = ( /obj/effect/turf_decal/tile/purple/opposingcorners, /obj/machinery/power/apc/auto_name/directional/east, @@ -29074,11 +29117,6 @@ }, /turf/open/floor/iron/white, /area/station/medical/chemistry) -"iHA" = ( -/obj/machinery/light/small/directional/north, -/obj/machinery/netpod, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/security/bitden) "iHE" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, /obj/machinery/airlock_sensor/incinerator_atmos{ @@ -29427,23 +29465,6 @@ dir = 1 }, /area/station/medical/surgery/aft) -"iME" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/tile/purple/half{ - dir = 4 - }, -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 4 - }, -/turf/open/floor/iron/dark/smooth_half{ - dir = 1 - }, -/area/station/security/bitden) "iMM" = ( /obj/effect/turf_decal/bot, /obj/machinery/vending/cigarette, @@ -29731,6 +29752,15 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) +"iQD" = ( +/obj/effect/turf_decal/tile/dark_red/opposingcorners{ + dir = 1 + }, +/obj/structure/chair/stool/bar/directional/north, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/gary, +/turf/open/floor/iron/checker, +/area/station/maintenance/abandon_diner) "iQI" = ( /obj/effect/turf_decal/tile/dark_red, /obj/structure/cable, @@ -29828,11 +29858,6 @@ /obj/structure/window/reinforced/spawner/directional/north, /turf/open/openspace, /area/station/maintenance/department/security/upper) -"iSr" = ( -/obj/structure/dresser, -/obj/machinery/light/small/directional/south, -/turf/open/floor/carpet/black, -/area/station/cargo/quartermaster) "iSx" = ( /obj/structure/chair/plastic{ dir = 4 @@ -29896,13 +29921,6 @@ /obj/effect/landmark/start/hangover, /turf/open/floor/iron, /area/station/hallway/primary/central) -"iTM" = ( -/obj/effect/turf_decal/siding/white{ - dir = 1 - }, -/obj/effect/landmark/start/gary/uncommon, -/turf/open/floor/iron, -/area/station/service/forge) "iTN" = ( /obj/structure/table, /obj/item/clothing/head/costume/festive{ @@ -30001,6 +30019,14 @@ }, /turf/open/floor/grass, /area/station/medical/virology) +"iUW" = ( +/obj/machinery/photocopier, +/obj/effect/turf_decal/bot_white, +/obj/effect/turf_decal/siding/dark{ + dir = 8 + }, +/turf/open/floor/iron/large, +/area/station/cargo/quartermaster) "iUY" = ( /obj/structure/sign/directions/evac/directional/north{ dir = 4 @@ -30572,6 +30598,9 @@ /obj/machinery/griddle, /turf/open/floor/iron/kitchen/diagonal, /area/station/security/prison) +"jch" = ( +/turf/open/floor/iron/dark/small, +/area/station/security/bitden) "jcw" = ( /obj/structure/window/reinforced/spawner/directional/south, /obj/structure/railing, @@ -30653,26 +30682,6 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/wood, /area/station/command/meeting_room/council) -"jdT" = ( -/obj/item/paper_bin/carbon{ - pixel_x = -3; - pixel_y = 7 - }, -/obj/item/pen{ - pixel_x = -3; - pixel_y = 7 - }, -/obj/item/computer_disk/quartermaster, -/obj/item/computer_disk/quartermaster, -/obj/structure/table/wood, -/obj/machinery/status_display/supply{ - pixel_y = 32 - }, -/obj/machinery/light/warm/directional/north, -/turf/open/floor/iron/dark/smooth_edge{ - dir = 8 - }, -/area/station/cargo/quartermaster) "jeb" = ( /obj/effect/turf_decal/tile/brown/half/contrasted{ dir = 1 @@ -30849,6 +30858,10 @@ /obj/effect/turf_decal/lunar_sand/plating, /turf/open/floor/iron/dark, /area/station/science/cytology) +"jgb" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/station/security/bitden) "jgs" = ( /obj/effect/turf_decal/delivery, /obj/structure/closet/cardboard, @@ -30920,6 +30933,11 @@ "jhs" = ( /turf/closed/wall, /area/station/hallway/primary/central) +"jhw" = ( +/obj/machinery/light/red/directional/east, +/obj/machinery/byteforge, +/turf/open/floor/catwalk_floor, +/area/station/security/bitden) "jhz" = ( /obj/item/clothing/head/cone, /obj/effect/mapping_helpers/burnt_floor, @@ -31229,6 +31247,14 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark/smooth_large, /area/station/hallway/secondary/command) +"jmY" = ( +/obj/structure/toilet/greyscale{ + dir = 4 + }, +/obj/machinery/light/small/directional/west, +/obj/machinery/airalarm/directional/south, +/turf/open/floor/iron/dark, +/area/station/security/prison/safe) "jnh" = ( /obj/effect/turf_decal/bot, /obj/effect/turf_decal/tile/neutral/full, @@ -31329,6 +31355,14 @@ }, /turf/open/floor/iron/white/side, /area/station/science/ordnance) +"joA" = ( +/obj/structure/table, +/obj/effect/turf_decal/tile/dark/diagonal_edge, +/obj/machinery/microwave{ + pixel_y = 6 + }, +/turf/open/floor/iron/kitchen/diagonal, +/area/station/security/prison) "joR" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper, /obj/effect/mapping_helpers/airlock/access/any/engineering/general, @@ -34627,6 +34661,21 @@ /obj/structure/frame/machine/secured, /turf/open/floor/iron/dark/small, /area/station/science/research) +"kno" = ( +/obj/structure/table, +/obj/effect/turf_decal/tile/dark/full, +/obj/item/storage/bag/tray, +/obj/item/reagent_containers/condiment/saltshaker{ + pixel_x = -3; + pixel_y = 9 + }, +/obj/item/reagent_containers/condiment/peppermill{ + dir = 1; + pixel_x = 3; + pixel_y = 9 + }, +/turf/open/floor/iron/dark/smooth_large, +/area/station/security/prison) "knM" = ( /obj/effect/turf_decal/siding/white{ dir = 8 @@ -34875,14 +34924,6 @@ "kqN" = ( /turf/closed/wall/r_wall, /area/station/engineering/supermatter) -"kqS" = ( -/obj/machinery/newscaster/directional/north, -/obj/machinery/camera/directional/north{ - c_tag = "Library - Public Lounge" - }, -/obj/effect/landmark/start/gary/rare, -/turf/open/floor/carpet/green, -/area/station/service/library) "kqU" = ( /obj/structure/table, /obj/effect/spawner/random/entertainment/lighter{ @@ -35129,26 +35170,6 @@ /obj/item/gun/energy/temperature/security, /turf/open/floor/engine, /area/station/ai_monitored/security/armory) -"ksQ" = ( -/obj/machinery/airalarm/directional/south, -/obj/structure/table/wood, -/obj/item/reagent_containers/cup/glass/bottle/rum{ - pixel_y = 12 - }, -/obj/item/reagent_containers/cup/glass/bottle/whiskey{ - pixel_y = 9; - pixel_x = 6 - }, -/obj/item/reagent_containers/cup/glass/drinkingglass/shotglass{ - pixel_y = 5; - pixel_x = -9 - }, -/obj/item/reagent_containers/cup/glass/drinkingglass/shotglass{ - pixel_x = -2 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/carpet/black, -/area/station/cargo/quartermaster) "ktc" = ( /obj/item/stack/sheet/cardboard, /obj/structure/disposalpipe/segment, @@ -35290,6 +35311,18 @@ /obj/effect/turf_decal/box, /turf/open/floor/iron/dark/smooth_large, /area/station/medical/pharmacy) +"kuQ" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/corporate{ + id_tag = "BSdoor"; + name = "Blueshield's Office" + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/airlock/access/all/admin/general, +/turf/open/floor/iron/dark/smooth_large, +/area/station/command/meeting_room/council) "kuV" = ( /turf/open/openspace, /area/station/maintenance/port/fore) @@ -35394,21 +35427,6 @@ /obj/effect/turf_decal/lunar_sand/plating, /turf/open/floor/iron/dark, /area/station/science/xenobiology) -"kxn" = ( -/obj/structure/table, -/obj/effect/turf_decal/tile/dark/full, -/obj/item/storage/bag/tray, -/obj/item/reagent_containers/condiment/saltshaker{ - pixel_x = -3; - pixel_y = 9 - }, -/obj/item/reagent_containers/condiment/peppermill{ - dir = 1; - pixel_x = 3; - pixel_y = 9 - }, -/turf/open/floor/iron/dark/smooth_large, -/area/station/security/prison) "kxt" = ( /obj/machinery/door/firedoor, /obj/structure/disposalpipe/segment, @@ -36192,9 +36210,6 @@ /obj/structure/cable, /turf/open/floor/iron/dark/smooth_large, /area/station/medical/chemistry) -"kJn" = ( -/turf/closed/wall/r_wall, -/area/station/security/bitden) "kJu" = ( /obj/machinery/status_display/ai/directional/west, /turf/open/floor/iron, @@ -36611,6 +36626,16 @@ /obj/item/radio/intercom/directional/west, /turf/open/floor/carpet, /area/station/commons/vacant_room/office) +"kOW" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/curtain/cloth/fancy/mechanical{ + icon_state = "bounty-open"; + icon_type = "bounty"; + id = "Cell1Privacy"; + name = "curtain" + }, +/turf/open/floor/plating, +/area/station/security/prison/safe) "kOX" = ( /obj/structure/railing{ dir = 4 @@ -37261,14 +37286,6 @@ /obj/machinery/light/cold/directional/east, /turf/open/floor/iron/showroomfloor, /area/station/science/robotics/augments) -"kXq" = ( -/obj/machinery/photocopier, -/obj/effect/turf_decal/bot_white, -/obj/effect/turf_decal/siding/dark{ - dir = 8 - }, -/turf/open/floor/iron/large, -/area/station/cargo/quartermaster) "kXs" = ( /turf/open/floor/iron/dark/smooth_half, /area/station/cargo/storage) @@ -37764,12 +37781,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark/smooth_large, /area/station/security/corrections_officer) -"leH" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/landmark/start/quartermaster, -/turf/open/floor/carpet/black, -/area/station/cargo/quartermaster) "leT" = ( /obj/machinery/door/firedoor, /turf/open/floor/iron/dark/smooth_large, @@ -37845,6 +37856,9 @@ /mob/living/simple_animal/bot/secbot/pingsky, /turf/open/floor/wood/large, /area/station/tcommsat/computer) +"lgc" = ( +/turf/closed/wall, +/area/station/security/bitden) "lgd" = ( /obj/effect/turf_decal/tile/red/real_red{ dir = 1 @@ -38146,17 +38160,6 @@ dir = 1 }, /area/station/security/holding_cell) -"ljw" = ( -/obj/structure/bed, -/obj/effect/landmark/start/prisoner, -/obj/item/bedsheet/brown, -/obj/machinery/button/curtain{ - id = "Cell1Privacy"; - pixel_x = 24; - pixel_y = 24 - }, -/turf/open/floor/iron/dark, -/area/station/security/prison/safe) "ljB" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -38425,10 +38428,6 @@ "lot" = ( /turf/closed/wall, /area/station/medical/patients_rooms) -"lov" = ( -/obj/structure/table, -/turf/open/floor/iron/dark/smooth_large, -/area/station/cargo/quartermaster) "loE" = ( /obj/effect/turf_decal/tile/dark_blue/opposingcorners, /obj/machinery/door/firedoor/border_only{ @@ -38642,6 +38641,16 @@ }, /turf/open/floor/plating, /area/station/construction/mining/aux_base) +"lsm" = ( +/obj/structure/table, +/obj/effect/turf_decal/tile/dark/diagonal_edge, +/obj/machinery/chem_dispenser/drinks{ + pixel_y = 6; + pixel_x = -2; + dir = 1 + }, +/turf/open/floor/iron/kitchen/diagonal, +/area/station/security/prison) "lsp" = ( /obj/effect/turf_decal/tile/blue, /obj/machinery/duct, @@ -39009,6 +39018,17 @@ "lyw" = ( /turf/closed/wall/r_wall, /area/station/command/bridge) +"lyO" = ( +/obj/structure/bed, +/obj/effect/landmark/start/prisoner, +/obj/machinery/button/curtain{ + id = "Cell2Privacy"; + pixel_x = 24; + pixel_y = -24 + }, +/obj/item/bedsheet/brown, +/turf/open/floor/iron/dark, +/area/station/security/prison/safe) "lyU" = ( /obj/structure/cable, /obj/effect/spawner/random/structure/table_or_rack, @@ -39068,6 +39088,11 @@ /obj/effect/turf_decal/tile/blue, /turf/open/floor/iron, /area/station/engineering/atmos/upper) +"lzS" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/landmark/event_spawn, +/turf/open/floor/iron/dark/small, +/area/station/security/bitden) "lzZ" = ( /obj/machinery/vending/cigarette, /obj/effect/turf_decal/bot_white, @@ -39109,6 +39134,19 @@ /obj/machinery/power/emitter, /turf/open/floor/plating, /area/station/engineering/storage_shared) +"lAE" = ( +/obj/effect/turf_decal/tile/dark/opposingcorners{ + dir = 1 + }, +/obj/effect/turf_decal/siding/white/corner, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/security/prison) "lAJ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -39655,18 +39693,6 @@ }, /turf/open/floor/iron/small, /area/station/hallway/primary/central) -"lJh" = ( -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/command/captain, -/obj/machinery/door/airlock/corporate{ - id_tag = "BSdoor"; - name = "Blueshield's Office" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/landmark/navigate_destination, -/turf/open/floor/iron/dark/smooth_large, -/area/station/command/heads_quarters/blueshield) "lJk" = ( /obj/machinery/holopad/secure, /obj/structure/cable, @@ -39727,6 +39753,18 @@ /obj/machinery/light/small/red/directional/south, /turf/open/floor/iron/dark, /area/station/service/chapel/funeral) +"lKq" = ( +/obj/machinery/pdapainter/supply, +/obj/effect/turf_decal/bot_white, +/obj/effect/turf_decal/siding/dark{ + dir = 8 + }, +/obj/item/toy/figure/qm{ + pixel_y = 14 + }, +/obj/machinery/light/warm/directional/east, +/turf/open/floor/iron/large, +/area/station/cargo/quartermaster) "lKt" = ( /obj/structure/trash_pile, /turf/open/floor/plating, @@ -40174,15 +40212,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/small, /area/station/hallway/secondary/command) -"lQD" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/airlock/grunge{ - id_tag = "Cell1Privacy"; - name = "Cell 1" - }, -/turf/open/floor/iron/dark/smooth_large, -/area/station/security/prison/safe) "lQL" = ( /obj/effect/turf_decal/tile/yellow/opposingcorners, /obj/effect/turf_decal/tile/yellow, @@ -40545,14 +40574,6 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron, /area/station/engineering/storage) -"lUq" = ( -/obj/machinery/button/door/directional/south{ - id = "qm"; - name = "Privacy Shutters Control"; - req_access = list("qm") - }, -/turf/open/floor/iron/dark/smooth_large, -/area/station/cargo/quartermaster) "lUt" = ( /obj/effect/turf_decal/lunar_sand, /obj/effect/decal/cleanable/dirt, @@ -40688,6 +40709,14 @@ /obj/structure/cable, /turf/open/floor/engine, /area/station/engineering/supermatter/room) +"lWK" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/wood, +/area/station/cargo/quartermaster) "lWS" = ( /obj/machinery/atmospherics/pipe/layer_manifold/scrubbers/visible, /turf/open/floor/engine, @@ -40961,14 +40990,6 @@ }, /turf/open/floor/iron/dark/smooth_large, /area/station/engineering/atmos/upper) -"maO" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/structure/mirror/directional/west, -/obj/structure/sink/directional/east, -/turf/open/floor/iron/dark, -/area/station/security/prison/safe) "maU" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -41667,32 +41688,24 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/wood/large, /area/station/service/library) -"mlG" = ( -/obj/machinery/power/apc/auto_name/directional/south, -/obj/structure/cable, -/obj/machinery/computer/quantum_console{ - dir = 1 - }, -/obj/effect/turf_decal/box, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/tile/brown/half{ - dir = 4 - }, -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 4 - }, -/turf/open/floor/iron/dark/smooth_half{ - dir = 1 - }, -/area/station/security/bitden) "mlJ" = ( /obj/machinery/light/cold/directional/north, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /obj/machinery/atm/directional/north, /turf/open/floor/iron, /area/station/hallway/primary/central) +"mlL" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/structure/chair/office{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/start/quartermaster, +/turf/open/floor/wood, +/area/station/cargo/quartermaster) "mlU" = ( /obj/effect/turf_decal/stripes/line, /obj/structure/table/reinforced, @@ -41733,6 +41746,16 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/hallway/primary/central) +"mmk" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, +/obj/machinery/computer/shuttle/mining{ + dir = 4 + }, +/obj/effect/turf_decal/box, +/turf/open/floor/wood, +/area/station/cargo/quartermaster) "mmp" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -41870,14 +41893,6 @@ "moK" = ( /turf/open/floor/iron, /area/station/engineering/atmos/upper) -"moL" = ( -/obj/structure/table, -/obj/effect/turf_decal/tile/dark/diagonal_edge, -/obj/machinery/microwave{ - pixel_y = 6 - }, -/turf/open/floor/iron/kitchen/diagonal, -/area/station/security/prison) "moV" = ( /obj/machinery/chem_dispenser/drinks{ pixel_y = 6; @@ -41913,6 +41928,15 @@ /obj/structure/cable, /turf/open/floor/iron/dark/corner, /area/station/commons/dorms) +"mpL" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/door/airlock/grunge{ + id_tag = "Cell2Privacy"; + name = "Cell 2" + }, +/turf/open/floor/iron/dark/smooth_large, +/area/station/security/prison/safe) "mpS" = ( /obj/structure/rack, /obj/effect/spawner/random/maintenance/two, @@ -42131,6 +42155,11 @@ /obj/structure/barricade/security, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) +"mtz" = ( +/obj/machinery/light/small/directional/north, +/obj/machinery/netpod, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/security/bitden) "mtE" = ( /obj/effect/turf_decal/siding/dark_blue/corner{ dir = 1 @@ -43075,6 +43104,11 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron/dark, /area/station/service/abandoned_gambling_den) +"mGq" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark/small, +/area/station/security/bitden) "mGK" = ( /obj/effect/turf_decal/tile/yellow/half/contrasted, /obj/effect/turf_decal/tile/blue, @@ -43528,6 +43562,17 @@ /obj/machinery/light_switch/directional/north, /turf/open/floor/iron/dark/small, /area/station/science/circuits) +"mMK" = ( +/obj/structure/chair/office{ + dir = 4 + }, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/machinery/camera/directional/north{ + c_tag = "Cargo - Quartermaster Office" + }, +/obj/structure/cable, +/turf/open/floor/iron/dark/smooth_large, +/area/station/cargo/quartermaster) "mNa" = ( /obj/machinery/conveyor{ id = "QMLoad2" @@ -44001,9 +44046,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/small, /area/station/hallway/secondary/exit/departure_lounge) -"mSw" = ( -/turf/closed/wall/r_wall, -/area/station/security/prison/safe) "mSD" = ( /obj/machinery/disposal/bin, /obj/effect/turf_decal/stripes/end{ @@ -44276,20 +44318,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/hallway/secondary/command) -"mWR" = ( -/obj/structure/table, -/obj/effect/turf_decal/bot_white, -/obj/effect/turf_decal/siding/dark{ - dir = 8 - }, -/obj/item/mining_voucher, -/obj/item/gps/mining{ - gpstag = "QM0"; - pixel_y = 4 - }, -/obj/machinery/light_switch/directional/east, -/turf/open/floor/iron/large, -/area/station/cargo/quartermaster) "mWV" = ( /obj/effect/turf_decal/tile/dark_blue{ dir = 4 @@ -45116,11 +45144,6 @@ }, /turf/open/floor/plating, /area/station/service/kitchen/diner) -"nkG" = ( -/obj/effect/mapping_helpers/burnt_floor, -/obj/effect/landmark/start/gary, -/turf/open/floor/plating, -/area/station/maintenance/aft/greater) "nkH" = ( /obj/structure/chair/pew/left{ dir = 4 @@ -46182,6 +46205,15 @@ /obj/effect/spawner/random/entertainment/cigarette, /turf/open/floor/wood/tile, /area/station/commons/lounge) +"nyK" = ( +/obj/machinery/airalarm/directional/south, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/landmark/start/blueshield, +/turf/open/floor/wood/large, +/area/station/command/heads_quarters/blueshield) "nzg" = ( /obj/structure/stairs/north, /turf/open/floor/plating, @@ -46584,6 +46616,15 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/glass/reinforced, /area/station/science/xenobiology) +"nGb" = ( +/obj/structure/chair/comfy/brown{ + dir = 8 + }, +/obj/machinery/firealarm/directional/east, +/obj/structure/disposalpipe/segment, +/obj/effect/landmark/start/quartermaster, +/turf/open/floor/iron/dark/small, +/area/station/cargo/quartermaster) "nGd" = ( /obj/machinery/modular_computer/preset/engineering{ dir = 8 @@ -46878,6 +46919,16 @@ "nMl" = ( /turf/open/floor/iron, /area/station/hallway/secondary/exit) +"nMm" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/obj/machinery/computer/security/qm{ + dir = 4 + }, +/obj/effect/turf_decal/box, +/turf/open/floor/wood, +/area/station/cargo/quartermaster) "nMt" = ( /turf/closed/wall/r_wall, /area/station/maintenance/port/fore) @@ -48391,22 +48442,6 @@ "okh" = ( /turf/open/floor/iron/dark, /area/station/command/meeting_room/council) -"oks" = ( -/obj/item/radio/intercom/directional/north, -/obj/machinery/light/red/directional/north, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/tile/brown/half{ - dir = 4 - }, -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 4 - }, -/turf/open/floor/iron/dark/smooth_half{ - dir = 1 - }, -/area/station/security/bitden) "okv" = ( /turf/closed/wall/r_wall, /area/station/engineering/transit_tube) @@ -49215,6 +49250,16 @@ /obj/effect/turf_decal/vg_decals/atmos/nitrous_oxide, /turf/open/floor/engine/n2o, /area/station/engineering/atmos/upper) +"ovR" = ( +/obj/machinery/camera/directional/north{ + c_tag = "Cargo - Bitrunner Office" + }, +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/turf/open/floor/iron/dark/small, +/area/station/security/bitden) "ovW" = ( /obj/machinery/door/firedoor, /obj/effect/mapping_helpers/airlock/access/all/supply/mining, @@ -50096,20 +50141,6 @@ /obj/item/radio/intercom/directional/south, /turf/open/floor/iron/white/small, /area/station/science/genetics) -"oMj" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/tile/purple/half{ - dir = 4 - }, -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 4 - }, -/turf/open/floor/iron/dark/smooth_half{ - dir = 1 - }, -/area/station/security/bitden) "oMk" = ( /obj/structure/table/glass, /obj/effect/turf_decal/siding/wood/end{ @@ -50162,6 +50193,26 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/small, /area/station/hallway/secondary/exit/departure_lounge) +"oMK" = ( +/obj/machinery/airalarm/directional/south, +/obj/structure/table/wood, +/obj/item/reagent_containers/cup/glass/bottle/rum{ + pixel_y = 12 + }, +/obj/item/reagent_containers/cup/glass/bottle/whiskey{ + pixel_y = 9; + pixel_x = 6 + }, +/obj/item/reagent_containers/cup/glass/drinkingglass/shotglass{ + pixel_y = 5; + pixel_x = -9 + }, +/obj/item/reagent_containers/cup/glass/drinkingglass/shotglass{ + pixel_x = -2 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/carpet/black, +/area/station/cargo/quartermaster) "oML" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -50264,6 +50315,10 @@ /obj/item/stack/cable_coil/five, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) +"oOC" = ( +/obj/structure/table, +/turf/open/floor/iron/dark/smooth_large, +/area/station/cargo/quartermaster) "oOH" = ( /obj/structure/closet/secure_closet/security/science, /obj/machinery/requests_console/auto_name/directional/north, @@ -50291,12 +50346,6 @@ /obj/effect/turf_decal/box, /turf/open/floor/engine, /area/station/engineering/atmos) -"oPc" = ( -/obj/effect/turf_decal/tile/dark/opposingcorners{ - dir = 1 - }, -/turf/closed/wall/r_wall, -/area/station/security/prison/safe) "oPz" = ( /obj/structure/fluff/paper/stack, /obj/effect/mapping_helpers/broken_floor, @@ -50669,14 +50718,6 @@ /obj/structure/stairs/east, /turf/open/floor/plating, /area/station/maintenance/department/security/lower) -"oVY" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood, -/area/station/cargo/quartermaster) "oVZ" = ( /obj/effect/turf_decal/box/corners{ dir = 4 @@ -50767,25 +50808,6 @@ /obj/structure/stairs/east, /turf/open/floor/plating, /area/station/engineering/supermatter/room) -"oXZ" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/curtain/cloth/fancy/mechanical{ - icon_state = "bounty-open"; - icon_type = "bounty"; - id = "Cell3Privacy"; - name = "curtain" - }, -/turf/open/floor/plating, -/area/station/security/prison/safe) -"oYc" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/airlock/grunge{ - id_tag = "Cell3Privacy"; - name = "Cell 3" - }, -/turf/open/floor/iron/dark/smooth_large, -/area/station/security/prison/safe) "oYe" = ( /obj/effect/spawner/random/structure/crate, /turf/open/floor/plating, @@ -51053,6 +51075,18 @@ /obj/effect/spawner/random/engineering/flashlight, /turf/open/openspace, /area/station/maintenance/starboard/greater) +"pcp" = ( +/obj/structure/closet/secure_closet/quartermaster, +/obj/effect/turf_decal/bot_white, +/obj/effect/turf_decal/siding/dark{ + dir = 4 + }, +/obj/item/clothing/glasses/material/mining/gar, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/turf/open/floor/iron/large, +/area/station/cargo/quartermaster) "pcv" = ( /obj/effect/turf_decal/tile/dark_blue/half, /obj/structure/cable, @@ -51187,6 +51221,26 @@ /obj/machinery/light/cold/no_nightlight/directional/east, /turf/open/openspace, /area/station/medical/chemistry) +"peI" = ( +/obj/machinery/power/apc/auto_name/directional/south, +/obj/structure/cable, +/obj/machinery/computer/quantum_console{ + dir = 1 + }, +/obj/effect/turf_decal/box, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/tile/brown/half{ + dir = 4 + }, +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 4 + }, +/turf/open/floor/iron/dark/smooth_half{ + dir = 1 + }, +/area/station/security/bitden) "pfs" = ( /obj/machinery/door/firedoor, /obj/machinery/biogenerator, @@ -51365,14 +51419,6 @@ /obj/item/stack/rods/twentyfive, /turf/open/floor/iron/white, /area/station/medical/chemistry) -"piB" = ( -/obj/structure/toilet/greyscale{ - dir = 4 - }, -/obj/machinery/light/small/directional/west, -/obj/machinery/airalarm/directional/south, -/turf/open/floor/iron/dark, -/area/station/security/prison/safe) "piC" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -52086,10 +52132,6 @@ /obj/structure/window/reinforced/spawner/directional/west, /turf/open/floor/iron/dark/smooth_large, /area/station/engineering/atmos/storage) -"ptg" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/security/bitden) "ptp" = ( /turf/closed/wall, /area/station/commons/dorms/room6) @@ -52103,15 +52145,6 @@ /obj/effect/landmark/navigate_destination, /turf/open/floor/iron/dark/smooth_large, /area/station/commons/storage/primary) -"ptu" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 8 - }, -/turf/open/floor/iron/dark/small, -/area/station/security/bitden) "pty" = ( /obj/structure/table/reinforced, /obj/item/radio/intercom/directional/west, @@ -52221,6 +52254,10 @@ /mob/living/basic/rabbit/daisy, /turf/open/floor/wood, /area/station/service/library/lounge) +"pux" = ( +/obj/machinery/drone_dispenser/preloaded, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) "puz" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ @@ -52245,6 +52282,20 @@ /obj/structure/sign/warning/electric_shock/directional/west, /turf/open/floor/iron/dark/smooth_large, /area/station/engineering/main) +"puO" = ( +/obj/structure/table, +/obj/effect/turf_decal/tile/dark/diagonal_edge, +/obj/machinery/camera/directional/east{ + c_tag = "Security - Permabrig Kitchen"; + network = list("ss13","prison") + }, +/obj/machinery/chem_dispenser/drinks/beer{ + pixel_y = 6; + pixel_x = 2; + dir = 1 + }, +/turf/open/floor/iron/kitchen/diagonal, +/area/station/security/prison) "puQ" = ( /obj/machinery/door/airlock/security/glass{ name = "Brig Control" @@ -52791,10 +52842,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/security/prison/visit) -"pCv" = ( -/obj/machinery/smartfridge/food, -/turf/closed/wall/r_wall, -/area/station/security/corrections_officer) "pCB" = ( /obj/machinery/button/door/directional/west{ id = "surgeryleft"; @@ -53101,17 +53148,6 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron, /area/station/engineering/atmos/upper) -"pGD" = ( -/obj/structure/bed, -/obj/effect/landmark/start/prisoner, -/obj/machinery/button/curtain{ - id = "Cell2Privacy"; - pixel_x = 24; - pixel_y = -24 - }, -/obj/item/bedsheet/brown, -/turf/open/floor/iron/dark, -/area/station/security/prison/safe) "pGG" = ( /obj/effect/spawner/random/maintenance, /obj/structure/table, @@ -54137,6 +54173,17 @@ /obj/effect/turf_decal/stripes/white/box, /turf/open/floor/plating, /area/station/ai_monitored/turret_protected/aisat_interior) +"pXd" = ( +/obj/structure/bed, +/obj/effect/landmark/start/prisoner, +/obj/item/bedsheet/brown, +/obj/machinery/button/curtain{ + id = "Cell1Privacy"; + pixel_x = 24; + pixel_y = 24 + }, +/turf/open/floor/iron/dark, +/area/station/security/prison/safe) "pXh" = ( /obj/structure/lattice/catwalk, /obj/structure/disposalpipe/segment{ @@ -54229,25 +54276,6 @@ "pYE" = ( /turf/closed/wall/r_wall, /area/station/tcommsat/server) -"pYJ" = ( -/obj/structure/table/wood, -/obj/item/folder/yellow{ - pixel_y = 12; - pixel_x = 5 - }, -/obj/item/stamp/head/qm{ - pixel_y = 5 - }, -/obj/item/stamp{ - pixel_x = 5 - }, -/obj/item/stamp/denied{ - pixel_x = -5 - }, -/turf/open/floor/iron/dark/smooth_edge{ - dir = 8 - }, -/area/station/cargo/quartermaster) "pYQ" = ( /obj/structure/sign/directions/evac/directional/north{ dir = 4 @@ -54708,6 +54736,15 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron, /area/station/engineering/atmos/upper) +"qeT" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/machinery/requests_console/auto_name/directional/west, +/obj/effect/mapping_helpers/requests_console/information, +/obj/effect/mapping_helpers/requests_console/assistance, +/turf/open/floor/wood, +/area/station/cargo/quartermaster) "qeV" = ( /obj/structure/table, /obj/item/reagent_containers/cup/glass/drinkingglass{ @@ -55573,12 +55610,23 @@ /obj/structure/cable, /turf/open/floor/iron/dark/telecomms, /area/station/tcommsat/server) +"qrR" = ( +/obj/item/assembly/mousetrap/armed, +/obj/item/crowbar/large{ + pixel_y = 20 + }, +/obj/effect/landmark/start/gary, +/turf/open/floor/wood, +/area/station/maintenance/starboard/fore) "qrZ" = ( /obj/effect/turf_decal/tile/dark_blue/opposingcorners, /turf/open/floor/iron/dark/side{ dir = 10 }, /area/station/security/brig/entrance) +"qsd" = ( +/turf/closed/wall/r_wall, +/area/station/security/prison/safe) "qsh" = ( /obj/structure/lattice, /obj/item/stack/sheet/iron/fifty, @@ -55875,6 +55923,16 @@ }, /turf/open/floor/iron/white/side, /area/station/hallway/primary/starboard) +"qwQ" = ( +/obj/machinery/door/airlock/mining/glass{ + name = "Drone Bay" + }, +/obj/effect/mapping_helpers/airlock/access/any/supply/qm, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/firedoor, +/turf/open/floor/iron/dark/smooth_large, +/area/station/cargo/quartermaster) "qwT" = ( /obj/effect/turf_decal/tile/green/half/contrasted, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -56105,16 +56163,6 @@ /obj/item/surgery_tray, /turf/open/floor/iron/showroomfloor, /area/station/science/robotics/augments) -"qzh" = ( -/obj/machinery/door/airlock/mining/glass{ - name = "Drone Bay" - }, -/obj/effect/mapping_helpers/airlock/access/any/supply/qm, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/dark/smooth_large, -/area/station/cargo/quartermaster) "qzA" = ( /obj/structure/cable, /obj/machinery/airalarm/directional/south, @@ -56567,11 +56615,6 @@ /obj/structure/cable, /turf/open/floor/engine, /area/station/engineering/gravity_generator) -"qIC" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/small, -/area/station/security/bitden) "qIE" = ( /obj/effect/landmark/start/assistant, /turf/open/floor/glass/reinforced, @@ -56909,6 +56952,20 @@ /obj/effect/spawner/random/engineering/tank, /turf/open/floor/plating, /area/station/maintenance/port/aft) +"qNY" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/tile/brown/half{ + dir = 4 + }, +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 4 + }, +/turf/open/floor/iron/dark/smooth_half{ + dir = 1 + }, +/area/station/security/bitden) "qOg" = ( /obj/structure/lattice/catwalk, /obj/structure/cable, @@ -58238,15 +58295,6 @@ dir = 4 }, /area/station/service/chapel) -"rjM" = ( -/obj/effect/turf_decal/tile/dark_red/opposingcorners{ - dir = 1 - }, -/obj/structure/chair/stool/bar/directional/north, -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/start/gary, -/turf/open/floor/iron/checker, -/area/station/maintenance/abandon_diner) "rjN" = ( /obj/structure/railing{ dir = 8 @@ -58771,6 +58819,12 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) +"rud" = ( +/obj/effect/turf_decal/tile/dark/opposingcorners{ + dir = 1 + }, +/turf/closed/wall/r_wall, +/area/station/security/prison/safe) "rue" = ( /obj/effect/turf_decal/tile/dark_blue{ dir = 1 @@ -58964,6 +59018,17 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/diagonal, /area/station/security/courtroom) +"rwC" = ( +/obj/item/reagent_containers/cup/bucket, +/obj/machinery/flasher/directional/south{ + id = "Isolation" + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/iron/dark/small, +/area/station/security/prison/safe) "rwD" = ( /obj/effect/turf_decal/tile/yellow, /obj/effect/turf_decal/tile/green{ @@ -59086,14 +59151,6 @@ dir = 8 }, /area/station/hallway/secondary/entry) -"ryj" = ( -/obj/item/assembly/mousetrap/armed, -/obj/item/crowbar/large{ - pixel_y = 20 - }, -/obj/effect/landmark/start/gary, -/turf/open/floor/wood, -/area/station/maintenance/starboard/fore) "ryx" = ( /obj/structure/window/fulltile, /obj/structure/hedge, @@ -59163,6 +59220,13 @@ /obj/item/trash/syndi_cakes, /turf/open/floor/plating, /area/station/maintenance/department/bridge) +"rzw" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark, +/area/station/security/prison/safe) "rzH" = ( /obj/machinery/atmospherics/components/tank, /obj/machinery/light/cold/directional/south, @@ -59284,14 +59348,6 @@ /obj/effect/turf_decal/box, /turf/open/floor/iron/dark/smooth_large, /area/station/ai_monitored/command/nuke_storage) -"rCw" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/small, -/area/station/cargo/quartermaster) "rCS" = ( /obj/effect/turf_decal/box/blue, /obj/item/banner/blue, @@ -59552,11 +59608,6 @@ "rGK" = ( /turf/closed/wall, /area/station/hallway/primary/central/fore) -"rGR" = ( -/obj/structure/bed, -/obj/item/bedsheet/qm, -/turf/open/floor/carpet/black, -/area/station/cargo/quartermaster) "rGW" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -59750,6 +59801,10 @@ dir = 4 }, /area/station/security/brig/entrance) +"rLd" = ( +/obj/machinery/smartfridge/food, +/turf/closed/wall/r_wall, +/area/station/security/corrections_officer) "rLh" = ( /obj/structure/railing, /obj/effect/turf_decal/siding/white, @@ -59792,6 +59847,16 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark/smooth_edge, /area/station/service/hydroponics) +"rMl" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/curtain/cloth/fancy/mechanical{ + icon_state = "bounty-open"; + icon_type = "bounty"; + id = "Cell3Privacy"; + name = "curtain" + }, +/turf/open/floor/plating, +/area/station/security/prison/safe) "rMm" = ( /obj/item/clothing/head/cone, /obj/structure/disposalpipe/segment, @@ -62539,6 +62604,14 @@ }, /turf/open/floor/wood/tile, /area/station/service/theater) +"szf" = ( +/obj/machinery/button/door/directional/south{ + id = "qm"; + name = "Privacy Shutters Control"; + req_access = list("qm") + }, +/turf/open/floor/iron/dark/smooth_large, +/area/station/cargo/quartermaster) "szi" = ( /obj/machinery/firealarm/directional/south, /obj/machinery/camera/directional/south{ @@ -62663,6 +62736,14 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) +"sAK" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/cable, +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) "sAL" = ( /obj/structure/sign/poster/random/directional/north, /obj/structure/disposalpipe/broken, @@ -63551,6 +63632,17 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible, /turf/open/floor/engine, /area/station/engineering/supermatter/room) +"sNO" = ( +/obj/effect/turf_decal/bot_white, +/obj/effect/turf_decal/siding/dark{ + dir = 4 + }, +/obj/machinery/light/small/directional/south, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/turf/open/floor/iron/large, +/area/station/cargo/quartermaster) "sNQ" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/hatch{ @@ -63561,10 +63653,6 @@ /obj/structure/cable, /turf/open/floor/iron/dark/smooth_large, /area/station/tcommsat/computer) -"sNS" = ( -/obj/machinery/netpod, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/security/bitden) "sNT" = ( /obj/structure/table/wood, /obj/effect/spawner/random/bureaucracy/folder{ @@ -63626,6 +63714,11 @@ }, /turf/open/floor/carpet, /area/station/medical/psychology) +"sPb" = ( +/obj/effect/mapping_helpers/burnt_floor, +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/aft/greater) "sPj" = ( /obj/effect/turf_decal/tile/purple/opposingcorners, /obj/effect/turf_decal/tile/blue{ @@ -63786,6 +63879,15 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron, /area/station/maintenance/port/aft) +"sRZ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/door/airlock/grunge{ + id_tag = "Cell1Privacy"; + name = "Cell 1" + }, +/turf/open/floor/iron/dark/smooth_large, +/area/station/security/prison/safe) "sSc" = ( /obj/effect/turf_decal/weather/dirt, /obj/item/flashlight/lantern{ @@ -63906,20 +64008,6 @@ dir = 8 }, /area/station/hallway/primary/central) -"sUg" = ( -/obj/effect/turf_decal/bot_white, -/obj/effect/turf_decal/siding/dark{ - dir = 8 - }, -/obj/structure/table, -/obj/machinery/fax{ - fax_name = "Quartermaster's Office"; - name = "Quartermaster's Fax Machine"; - pixel_y = 3 - }, -/obj/machinery/light/warm/directional/east, -/turf/open/floor/iron/large, -/area/station/cargo/quartermaster) "sUp" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 4 @@ -64086,12 +64174,6 @@ /obj/effect/spawner/random/structure/closet_maintenance, /turf/open/floor/plating, /area/station/maintenance/port/fore) -"sWM" = ( -/obj/effect/turf_decal/tile/dark/diagonal_edge, -/obj/machinery/light/warm/directional/north, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/iron/kitchen/diagonal, -/area/station/security/prison) "sWN" = ( /obj/effect/turf_decal/tile/purple, /obj/effect/turf_decal/tile/green{ @@ -64655,16 +64737,6 @@ }, /turf/open/floor/iron, /area/station/security/checkpoint/engineering) -"tfp" = ( -/obj/structure/table, -/obj/effect/turf_decal/tile/dark/diagonal_edge, -/obj/machinery/chem_dispenser/drinks{ - pixel_y = 6; - pixel_x = -2; - dir = 1 - }, -/turf/open/floor/iron/kitchen/diagonal, -/area/station/security/prison) "tfq" = ( /obj/effect/turf_decal/tile/dark_blue/half{ dir = 8 @@ -64974,6 +65046,16 @@ /obj/structure/cable, /turf/open/floor/iron/dark/smooth_half, /area/station/service/hydroponics) +"tjZ" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 8; + id = "qm"; + name = "Privacy Shutters" + }, +/turf/open/floor/plating, +/area/station/cargo/quartermaster) "tkj" = ( /obj/machinery/airalarm/directional/east, /obj/machinery/light/warm/directional/east, @@ -65179,18 +65261,6 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron/dark/smooth_large, /area/station/security/evidence) -"tnM" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/holopad/secure, -/obj/effect/landmark/event_spawn, -/turf/open/floor/iron/dark/smooth_edge{ - dir = 8 - }, -/area/station/cargo/quartermaster) "toe" = ( /obj/effect/turf_decal/tile/brown{ dir = 4 @@ -65344,10 +65414,6 @@ /obj/machinery/light_switch/directional/north, /turf/open/floor/iron, /area/station/commons/vacant_room/commissary) -"tql" = ( -/obj/effect/landmark/start/gary, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) "tqq" = ( /obj/machinery/atmospherics/pipe/multiz/purple/visible{ dir = 1; @@ -65476,6 +65542,14 @@ }, /turf/open/floor/iron/dark/smooth_large, /area/station/science/research) +"tsn" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/wood, +/area/station/cargo/quartermaster) "tsE" = ( /obj/effect/turf_decal/tile/blue/opposingcorners{ dir = 1 @@ -65697,6 +65771,14 @@ /obj/machinery/door/airlock/mining/glass, /turf/open/floor/iron/dark/smooth_large, /area/station/cargo/storage) +"twL" = ( +/obj/structure/toilet/greyscale{ + dir = 4 + }, +/obj/machinery/light/small/directional/west, +/obj/machinery/airalarm/directional/north, +/turf/open/floor/iron/dark, +/area/station/security/prison/safe) "twM" = ( /obj/structure/lattice, /obj/machinery/atmospherics/pipe/heat_exchanging/simple, @@ -66419,15 +66501,6 @@ /obj/item/radio/intercom/directional/south, /turf/open/floor/wood, /area/station/service/library/lounge) -"tJv" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/airlock/grunge{ - id_tag = "Cell2Privacy"; - name = "Cell 2" - }, -/turf/open/floor/iron/dark/smooth_large, -/area/station/security/prison/safe) "tJE" = ( /obj/effect/turf_decal/tile/green, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -66726,19 +66799,6 @@ /obj/structure/transit_tube, /turf/open/floor/plating, /area/station/cargo/lobby) -"tPB" = ( -/obj/effect/turf_decal/tile/dark/opposingcorners{ - dir = 1 - }, -/obj/effect/turf_decal/siding/white/corner, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/security/prison) "tPF" = ( /obj/effect/turf_decal/tile/purple, /obj/effect/turf_decal/tile/purple/half/contrasted, @@ -68598,17 +68658,6 @@ /obj/structure/window/reinforced/spawner/directional/east, /turf/open/floor/iron/diagonal, /area/station/security/courtroom) -"uqC" = ( -/obj/structure/bed, -/obj/effect/landmark/start/prisoner, -/obj/item/bedsheet/brown, -/obj/machinery/button/curtain{ - id = "Cell3Privacy"; - pixel_x = 24; - pixel_y = 24 - }, -/turf/open/floor/iron/dark, -/area/station/security/prison/safe) "uqJ" = ( /obj/effect/turf_decal/tile/dark/opposingcorners{ dir = 1 @@ -69557,18 +69606,6 @@ }, /turf/open/floor/engine, /area/station/science/xenobiology) -"uEB" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/structure/chair/office{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/landmark/start/quartermaster, -/turf/open/floor/wood, -/area/station/cargo/quartermaster) "uFd" = ( /obj/effect/spawner/random/maintenance/three, /turf/open/floor/plating, @@ -70020,6 +70057,14 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/wood/tile, /area/station/commons/lounge) +"uLx" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/obj/structure/mirror/directional/west, +/obj/structure/sink/directional/east, +/turf/open/floor/iron/dark, +/area/station/security/prison/safe) "uLP" = ( /obj/effect/turf_decal/trimline/green/filled/line{ dir = 4 @@ -70391,17 +70436,6 @@ /obj/machinery/light/warm/directional/south, /turf/open/floor/iron/kitchen, /area/station/service/kitchen) -"uQN" = ( -/obj/structure/chair/office{ - dir = 4 - }, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/machinery/camera/directional/north{ - c_tag = "Cargo - Quartermaster Office" - }, -/obj/structure/cable, -/turf/open/floor/iron/dark/smooth_large, -/area/station/cargo/quartermaster) "uQZ" = ( /obj/effect/turf_decal/tile/yellow/half{ dir = 4 @@ -70819,6 +70853,13 @@ /obj/effect/landmark/start/medical_doctor, /turf/open/floor/iron/dark, /area/station/medical/treatment_center) +"uXY" = ( +/obj/effect/turf_decal/siding/white{ + dir = 1 + }, +/obj/effect/landmark/start/gary/uncommon, +/turf/open/floor/iron, +/area/station/service/forge) "uYc" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/camera/directional/west{ @@ -70873,12 +70914,6 @@ /obj/structure/cable/multilayer/multiz, /turf/open/floor/engine, /area/station/engineering/supermatter/room) -"uYG" = ( -/obj/machinery/airalarm/directional/east, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/dark/small, -/area/station/cargo/quartermaster) "uYI" = ( /obj/machinery/power/tracker, /obj/structure/cable, @@ -71229,6 +71264,10 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/hallway/primary/central) +"vcw" = ( +/obj/machinery/netpod, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/security/bitden) "vcy" = ( /obj/machinery/camera/directional/south{ c_tag = "MiniSat External North-East"; @@ -71322,13 +71361,6 @@ }, /turf/open/floor/iron/white, /area/station/medical/storage) -"veA" = ( -/obj/effect/turf_decal/weather/dirt{ - dir = 8 - }, -/obj/structure/reagent_dispensers/watertank/high, -/turf/open/floor/grass, -/area/station/security/prison) "veB" = ( /obj/structure/sign/warning/secure_area/directional/north, /obj/structure/marker_beacon/burgundy, @@ -71684,18 +71716,6 @@ /obj/item/clothing/glasses/regular, /turf/open/floor/carpet/green, /area/station/service/library/lounge) -"vjl" = ( -/obj/machinery/pdapainter/supply, -/obj/effect/turf_decal/bot_white, -/obj/effect/turf_decal/siding/dark{ - dir = 8 - }, -/obj/item/toy/figure/qm{ - pixel_y = 14 - }, -/obj/machinery/light/warm/directional/east, -/turf/open/floor/iron/large, -/area/station/cargo/quartermaster) "vjq" = ( /obj/machinery/computer/atmos_alert{ dir = 8 @@ -72016,14 +72036,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/wood, /area/station/medical/psychology) -"voG" = ( -/obj/structure/toilet/greyscale{ - dir = 4 - }, -/obj/machinery/light/small/directional/west, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/iron/dark, -/area/station/security/prison/safe) "voI" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron, @@ -72133,6 +72145,14 @@ dir = 8 }, /area/station/science/robotics/lab) +"vqq" = ( +/obj/structure/chair/office{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/turf/open/floor/iron/dark/smooth_large, +/area/station/cargo/quartermaster) "vqA" = ( /obj/machinery/door/airlock/maintenance_hatch{ name = "Atmospherics Storage Maintenance" @@ -72366,16 +72386,6 @@ }, /turf/open/floor/iron, /area/station/security/prison) -"vuW" = ( -/obj/machinery/camera/directional/north{ - c_tag = "Cargo - Bitrunner Office" - }, -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron/dark/small, -/area/station/security/bitden) "vva" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 1 @@ -72622,6 +72632,20 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, /turf/open/floor/iron/dark/smooth_large, /area/station/ai_monitored/turret_protected/ai) +"vyU" = ( +/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/access/any/supply/qm, +/obj/machinery/door/airlock/mining/glass{ + name = "Drone Bay" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/smooth_large, +/area/station/cargo/quartermaster) "vzd" = ( /obj/structure/sign/warning/radiation/rad_area/directional/north, /obj/effect/turf_decal/tile/yellow{ @@ -72714,6 +72738,12 @@ }, /turf/open/floor/plastic, /area/station/common/carpshop) +"vAq" = ( +/obj/item/restraints/legcuffs/beartrap/prearmed, +/obj/item/stack/sheet/iron/five, +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/starboard/fore) "vAr" = ( /obj/structure/table/reinforced, /turf/open/floor/iron/kitchen, @@ -74182,6 +74212,9 @@ /obj/structure/stairs/south, /turf/open/floor/plating, /area/station/maintenance/starboard/lesser) +"vTK" = ( +/turf/open/floor/iron/dark/smooth_large, +/area/station/cargo/quartermaster) "vTQ" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -74502,15 +74535,6 @@ dir = 4 }, /area/station/ai_monitored/turret_protected/aisat/teleporter) -"vYn" = ( -/obj/effect/mapping_helpers/airlock/access/all/security/brig, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/airlock/security{ - id_tag = "IsolationCell"; - name = "Isolation Cell" - }, -/turf/open/floor/iron/dark/smooth_large, -/area/station/security/prison/safe) "vYo" = ( /obj/machinery/atmospherics/pipe/smart/simple/orange/visible{ dir = 9 @@ -74603,6 +74627,13 @@ /obj/structure/railing, /turf/open/floor/iron/dark/smooth_large, /area/station/command/meeting_room/council) +"vZi" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 8 + }, +/obj/structure/reagent_dispensers/watertank/high, +/turf/open/floor/grass, +/area/station/security/prison) "vZj" = ( /obj/structure/chair/sofa/bench/left, /obj/effect/turf_decal/siding/wood{ @@ -74973,6 +75004,10 @@ dir = 5 }, /area/station/service/kitchen/diner) +"weM" = ( +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/port/aft) "weN" = ( /obj/structure/lattice/catwalk, /turf/open/openspace, @@ -75208,6 +75243,12 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, /area/station/commons/storage/mining) +"win" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/start/quartermaster, +/turf/open/floor/carpet/black, +/area/station/cargo/quartermaster) "wip" = ( /obj/machinery/door/airlock/hatch{ id_tag = "vacant_space"; @@ -75645,18 +75686,6 @@ /obj/structure/cable, /turf/open/floor/iron/dark/smooth_large, /area/station/command/heads_quarters/cmo) -"wnQ" = ( -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/command/captain, -/obj/machinery/door/airlock/corporate{ - id_tag = "BSdoor"; - name = "Blueshield's Office" - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/smooth_large, -/area/station/command/meeting_room/council) "wnX" = ( /obj/structure/chair/pew/left, /turf/open/floor/iron/chapel{ @@ -75821,11 +75850,6 @@ /obj/effect/landmark/blobstart, /turf/open/floor/iron/diagonal, /area/station/security/courtroom) -"wqI" = ( -/obj/structure/window/reinforced/tinted/fulltile, -/obj/structure/hedge/opaque, -/turf/open/floor/iron/dark/smooth_large, -/area/station/cargo/quartermaster) "wrd" = ( /obj/effect/turf_decal/siding/wood{ dir = 4 @@ -75978,17 +76002,6 @@ /obj/structure/closet/secure_closet/personal/patient, /turf/open/floor/wood/parquet, /area/station/medical/patients_rooms) -"wtv" = ( -/obj/item/reagent_containers/cup/bucket, -/obj/machinery/flasher/directional/south{ - id = "Isolation" - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/obj/effect/mapping_helpers/burnt_floor, -/turf/open/floor/iron/dark/small, -/area/station/security/prison/safe) "wtE" = ( /obj/effect/turf_decal/tile/dark/opposingcorners{ dir = 1 @@ -76476,6 +76489,10 @@ }, /turf/open/floor/iron/dark/smooth_large, /area/station/medical/surgery/aft) +"wAI" = ( +/obj/machinery/quantum_server, +/turf/open/floor/catwalk_floor, +/area/station/security/bitden) "wAJ" = ( /obj/structure/railing{ dir = 1 @@ -76523,12 +76540,6 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, /area/station/maintenance/starboard/greater) -"wBd" = ( -/obj/item/restraints/legcuffs/beartrap/prearmed, -/obj/item/stack/sheet/iron/five, -/obj/effect/landmark/start/gary, -/turf/open/floor/plating, -/area/station/maintenance/starboard/fore) "wBk" = ( /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ dir = 4 @@ -76551,20 +76562,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/openspace, /area/station/maintenance/department/security/upper) -"wBv" = ( -/obj/structure/table, -/obj/effect/turf_decal/tile/dark/diagonal_edge, -/obj/machinery/camera/directional/east{ - c_tag = "Security - Permabrig Kitchen"; - network = list("ss13","prison") - }, -/obj/machinery/chem_dispenser/drinks/beer{ - pixel_y = 6; - pixel_x = 2; - dir = 1 - }, -/turf/open/floor/iron/kitchen/diagonal, -/area/station/security/prison) "wBw" = ( /obj/structure/cable, /obj/effect/turf_decal/trimline/blue/filled/line{ @@ -77470,15 +77467,6 @@ /obj/structure/stairs/north, /turf/open/floor/plating, /area/station/maintenance/starboard/lesser) -"wOl" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/smooth_large, -/area/station/cargo/quartermaster) "wOt" = ( /obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 8 @@ -78504,6 +78492,15 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/hallway/secondary/command) +"xfV" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 8 + }, +/turf/open/floor/iron/dark/small, +/area/station/security/bitden) "xfY" = ( /obj/machinery/door/morgue{ name = "Massage Lounge" @@ -78974,6 +78971,9 @@ dir = 8 }, /area/station/service/salon) +"xnQ" = ( +/turf/closed/wall/r_wall, +/area/station/security/bitden) "xnS" = ( /obj/item/kirbyplants/organic/plant22, /obj/effect/turf_decal/siding/dark/end{ @@ -79148,6 +79148,11 @@ /obj/item/stack/sheet/iron/five, /turf/open/floor/plating, /area/station/maintenance/port/aft) +"xrc" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/port/aft) "xro" = ( /obj/effect/turf_decal/trimline/neutral/warning{ dir = 4 @@ -79181,6 +79186,17 @@ /obj/machinery/light/cold/directional/west, /turf/open/floor/iron/dark, /area/station/security/checkpoint/customs) +"xrM" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/corporate{ + id_tag = "BSdoor"; + name = "Blueshield's Quarters" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/airlock/access/all/admin/general, +/turf/open/floor/iron/dark/smooth_large, +/area/station/command/heads_quarters/blueshield) "xsq" = ( /obj/effect/spawner/random/trash/grime, /obj/structure/disposalpipe/segment{ @@ -79199,10 +79215,6 @@ /obj/structure/cable, /turf/open/floor/wood, /area/station/commons/dorms/room3) -"xsI" = ( -/obj/machinery/airalarm/directional/north, -/turf/open/floor/iron/dark/small, -/area/station/security/bitden) "xsO" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -79814,6 +79826,11 @@ dir = 8 }, /area/station/maintenance/starboard/fore) +"xCl" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/cargo/quartermaster) "xCo" = ( /obj/machinery/light/small/directional/west, /obj/effect/spawner/random/engineering/tank, @@ -80491,12 +80508,6 @@ dir = 1 }, /area/station/security/prison) -"xLH" = ( -/obj/structure/bed/maint, -/obj/machinery/light/small/broken/directional/north, -/obj/effect/mapping_helpers/burnt_floor, -/turf/open/floor/iron/dark/small, -/area/station/security/prison/safe) "xLO" = ( /obj/machinery/door/firedoor, /obj/effect/mapping_helpers/airlock/access/all/medical/morgue, @@ -80526,11 +80537,6 @@ "xMC" = ( /turf/open/floor/plating, /area/station/science/xenobiology) -"xMJ" = ( -/obj/machinery/light/red/directional/east, -/obj/machinery/byteforge, -/turf/open/floor/catwalk_floor, -/area/station/security/bitden) "xML" = ( /obj/effect/turf_decal/tile/green{ dir = 4 @@ -80569,16 +80575,6 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/science/explab) -"xNn" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/curtain/cloth/fancy/mechanical{ - icon_state = "bounty-open"; - icon_type = "bounty"; - id = "Cell2Privacy"; - name = "curtain" - }, -/turf/open/floor/plating, -/area/station/security/prison/safe) "xNW" = ( /obj/machinery/door/firedoor, /obj/effect/turf_decal/tile/green{ @@ -81010,10 +81006,6 @@ }, /turf/open/floor/iron/dark/smooth_large, /area/station/engineering/lobby) -"xVI" = ( -/obj/machinery/quantum_server, -/turf/open/floor/catwalk_floor, -/area/station/security/bitden) "xVJ" = ( /obj/effect/turf_decal/box/corners{ dir = 4 @@ -81264,14 +81256,6 @@ /obj/machinery/light/warm/directional/west, /turf/open/floor/iron/dark/smooth_large, /area/station/engineering/atmos) -"xZJ" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/structure/cable, -/obj/effect/landmark/start/gary, -/turf/open/floor/plating, -/area/station/maintenance/port/lesser) "xZL" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -81961,6 +81945,23 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron/small, /area/station/engineering/atmos/office) +"ykF" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/tile/purple/half{ + dir = 4 + }, +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 4 + }, +/turf/open/floor/iron/dark/smooth_half{ + dir = 1 + }, +/area/station/security/bitden) "ykH" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -107599,7 +107600,7 @@ gqh wUI tcl rWp -aHK +gfJ ePv owu lMk @@ -108629,7 +108630,7 @@ sMF dVE soH bWR -aro +hQp pvr nlv uDp @@ -109930,7 +109931,7 @@ xAm vZy xsW dvI -hjz +pux fPA iyO oHE @@ -115593,7 +115594,7 @@ gTt gTt gTt ykB -wnQ +kuQ qbi gWJ fKE @@ -116621,9 +116622,9 @@ xUm aTL kGu hBQ -glr +xrM ffw -cZE +nyK lNk jdG vSA @@ -117134,7 +117135,7 @@ oTb kcf aYJ vbN -lJh +fAL vbN fGw hHf @@ -121285,7 +121286,7 @@ ogC lzn yiW dxe -nkG +sPb nkv pAJ gqN @@ -124065,11 +124066,11 @@ gKl ucv buh ilt -mSw -mSw -mSw -mSw -mSw +qsd +qsd +qsd +qsd +qsd jBY mvw oVX @@ -124322,14 +124323,14 @@ wDi hkU rOy ilt -xLH -oPc -voG -maO -mSw -mSw -mSw -mSw +bbh +rud +twL +uLx +qsd +qsd +qsd +qsd jVI aDk fid @@ -124579,17 +124580,17 @@ ilt pCs mWH ilt -wtv -oPc -ljw -eKa -mSw -maO -piB -mSw -mSw -mSw -mSw +rwC +rud +pXd +rzw +qsd +uLx +jmY +qsd +qsd +qsd +qsd qww qww nzB @@ -124825,7 +124826,7 @@ dFV gUR kFx gBI -veA +vZi qld qld qld @@ -124836,17 +124837,17 @@ ilt tTc noa ilt -vYn -oPc -hAP -lQD -mSw -eKa -pGD -mSw -voG -maO -mSw +gMS +rud +kOW +sRZ +qsd +rzw +lyO +qsd +twL +uLx +qsd kIS qtt gig @@ -125098,12 +125099,12 @@ pOx pZN jOj qld -tJv -xNn -mSw -uqC -eKa -mSw +mpL +gJx +qsd +dad +rzw +qsd qmI poq woY @@ -125358,9 +125359,9 @@ swt vwB tlF qld -oXZ -oYc -mSw +rMl +bXy +qsd qld lgd nRy @@ -125598,7 +125599,7 @@ fHR eqz rwl gFR -tPB +lAE gCL gCL gCL @@ -125855,14 +125856,14 @@ uSh rtl cSd ley -pCv -moL +rLd +joA pLW xyg qvI evU siz -kxn +kno xhf uDe rdU @@ -126113,7 +126114,7 @@ oFW cSd jgJ cSd -sWM +ill rjQ vGA hWS @@ -126373,7 +126374,7 @@ cSd jca tVv ekL -tfp +lsm evU qbx vvF @@ -126629,8 +126630,8 @@ xuB qld oFW oFW -fMP -wBv +hkQ +puO azL xIL uqJ @@ -127658,13 +127659,13 @@ laO laO laO xuB -kJn -ptg -ptg -apB -vuW -ptu -kJn +xnQ +jgb +jgb +lgc +ovR +xfV +xnQ qld qld qld @@ -127915,13 +127916,13 @@ laO laO laO laO -kJn -xsI -gDf -ddq -cMR -qIC -kJn +xnQ +cSt +jch +bjh +lzS +mGq +xnQ laO xuB xuB @@ -128172,13 +128173,13 @@ laO laO laO laO -kJn -oks -oMj -cJe -iME -mlG -kJn +xnQ +ieG +bqN +qNY +ykF +peI +xnQ laO laO xuB @@ -128429,13 +128430,13 @@ laO laO laO laO -kJn -iHA -sNS -sNS -xMJ -xVI -kJn +xnQ +mtz +vcw +vcw +jhw +wAI +xnQ laO laO tzq @@ -128686,13 +128687,13 @@ laO laO laO laO -kJn -kJn -kJn -kJn -kJn -kJn -kJn +xnQ +xnQ +xnQ +xnQ +xnQ +xnQ +xnQ laO laO laO @@ -169842,12 +169843,12 @@ wkF pHs wIF juy -gdb -hUM -hUM -ixQ -bft -gdb +cKK +tjZ +tjZ +vyU +xCl +cKK tio vEH cZr @@ -170099,18 +170100,18 @@ xfC pqB qur qur -gdb -uQN -hvE -wOl -lUq -gdb -gdb -gdb -gdb -gdb -gdb -gdb +cKK +mMK +vqq +bps +szf +cKK +cKK +cKK +cKK +cKK +cKK +cKK ykH vDj izT @@ -170356,18 +170357,18 @@ jgx uXo sBY pHs -gdb -jdT -pYJ -tnM -ePu -idQ -hRK -cHy -wqI -hDF -hnW -gdb +cKK +bXd +bkh +fRo +vTK +nMm +qeT +mmk +cuA +pcp +sNO +cKK xcE esM iTN @@ -170613,18 +170614,18 @@ bdy nCH muk pHs -cpa -bMY -uYG -rCw -anH -oVY -uEB -ikk -qzh -leH -ksQ -gdb +hXA +nGb +dns +eCD +eSR +tsn +mlL +lWK +qwQ +win +oMK +cKK sDQ dAi fqi @@ -170870,18 +170871,18 @@ pHs pHs pHs pHs -gdb -gdb -gdb -sUg -lov -kXq -mWR -vjl -wqI -rGR -iSr -gdb +cKK +cKK +cKK +cNH +oOC +iUW +bNg +lKq +cuA +hao +fUt +cKK hQb lvl eBy @@ -171129,16 +171130,16 @@ gAm jDg aEP cPA -gdb -gdb -gdb -gdb -gdb -gdb -gdb -gdb -gdb -gdb +cKK +cKK +cKK +cKK +cKK +cKK +cKK +cKK +cKK +cKK scu kMZ iFo @@ -171874,7 +171875,7 @@ iNr wEl lpC mMv -xZJ +sAK jiJ xaP eGr @@ -173980,7 +173981,7 @@ oxw dZR gfP jqJ -fNJ +xrc jut rmw tzq @@ -174233,7 +174234,7 @@ wUS gfP qEB oPK -tql +weM uHH gfP gfP @@ -175742,7 +175743,7 @@ klA mRJ rUk eBo -kqS +afa ifB ued nra @@ -176296,7 +176297,7 @@ sah qyI gqd fuQ -tql +weM jNS rmw tzq @@ -184261,7 +184262,7 @@ sRc pHy qgn igS -rjM +iQD pJF wfQ enO @@ -185720,7 +185721,7 @@ wqg tRY gzl cBn -ryj +qrR qcF tRY ikp @@ -187013,7 +187014,7 @@ tRY tRY ugb edi -wBd +vAq xGj roZ fJT @@ -189362,7 +189363,7 @@ eOE pWC wAS ggA -iTM +uXY eol eol eol diff --git a/_maps/map_files/Voidraptor/VoidRaptor.dmm b/_maps/map_files/Voidraptor/VoidRaptor.dmm index d6062d4160e4..a595bbd17597 100644 --- a/_maps/map_files/Voidraptor/VoidRaptor.dmm +++ b/_maps/map_files/Voidraptor/VoidRaptor.dmm @@ -137,13 +137,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/textured_large, /area/station/engineering/atmos) -"acl" = ( -/obj/structure/chair/wood{ - dir = 1; - layer = 2.8 - }, -/turf/open/floor/carpet/black, -/area/station/cargo/quartermaster) "acx" = ( /obj/effect/turf_decal/siding/wood{ dir = 9 @@ -1125,17 +1118,6 @@ /obj/effect/landmark/start/hangover, /turf/open/floor/iron/textured_large, /area/station/hallway/secondary/entry) -"aqf" = ( -/obj/structure/chair/comfy/brown{ - dir = 8 - }, -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/effect/landmark/start/gary, -/turf/open/floor/wood, -/area/station/service/library/abandoned) "aqg" = ( /obj/structure/table/optable{ name = "Robotics Operating Table" @@ -1370,17 +1352,6 @@ }, /turf/open/floor/wood/large, /area/station/service/theater) -"atd" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/status_display/ai/directional/south, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/chair/comfy/brown{ - color = "#A46106"; - dir = 1 - }, -/obj/effect/landmark/start/quartermaster, -/turf/open/floor/carpet/black, -/area/station/cargo/quartermaster) "atf" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron/textured_large, @@ -2351,6 +2322,9 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/medical/surgery) +"aIL" = ( +/turf/closed/wall, +/area/station/maintenance/department/bridge) "aIP" = ( /obj/machinery/power/apc/auto_name/directional/north, /obj/effect/turf_decal/trimline/yellow/filled/line{ @@ -2524,6 +2498,12 @@ /obj/machinery/holopad/secure, /turf/open/floor/carpet, /area/station/security/courtroom) +"aLy" = ( +/obj/structure/table, +/obj/effect/turf_decal/tile/dark/opposingcorners, +/obj/machinery/chem_dispenser/drinks/beer, +/turf/open/floor/iron/kitchen, +/area/station/security/prison/mess) "aLz" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -2537,6 +2517,10 @@ }, /turf/open/floor/iron/kitchen, /area/station/service/kitchen) +"aLA" = ( +/obj/machinery/status_display/evac, +/turf/closed/wall/r_wall, +/area/station/cargo/quartermaster) "aLB" = ( /obj/structure/chair/sofa/corp/right, /obj/effect/turf_decal/tile/dark/opposingcorners{ @@ -2932,6 +2916,13 @@ dir = 8 }, /area/station/medical/virology) +"aQv" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Commissary Maintenance" + }, +/obj/effect/mapping_helpers/airlock/access/any/science/maintenance, +/turf/open/floor/catwalk_floor/iron_smooth, +/area/station/maintenance/department/bridge) "aQC" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/trimline/blue/filled/warning{ @@ -3096,6 +3087,13 @@ "aSS" = ( /turf/closed/wall/r_wall, /area/station/engineering/power_room) +"aSU" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/landmark/generic_maintenance_landmark, +/obj/effect/landmark/start/gary, +/turf/open/floor/iron/textured, +/area/station/maintenance/port/fore) "aTk" = ( /obj/structure/cable, /obj/machinery/airalarm/directional/east, @@ -3949,6 +3947,10 @@ /obj/structure/cable/layer3, /turf/open/floor/circuit, /area/station/ai_monitored/turret_protected/ai) +"bdS" = ( +/obj/structure/reagent_dispensers/watertank/high, +/turf/open/floor/grass, +/area/station/security/prison/garden) "bdV" = ( /obj/effect/landmark/start/hangover, /turf/open/floor/carpet, @@ -4176,30 +4178,6 @@ }, /turf/open/floor/engine, /area/station/science/xenobiology) -"bif" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/landmark/generic_maintenance_landmark, -/obj/effect/landmark/start/gary, -/turf/open/floor/catwalk_floor/iron_smooth, -/area/station/maintenance/starboard/fore) -"bii" = ( -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable, -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/effect/turf_decal/siding/wood/corner{ - dir = 4 - }, -/obj/machinery/disposal/bin, -/obj/effect/turf_decal/box, -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/turf/open/floor/iron/dark/textured_large, -/area/station/cargo/quartermaster) "bik" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible, /obj/effect/turf_decal/stripes/line, @@ -4741,14 +4719,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/textured_large, /area/station/cargo/warehouse) -"bsd" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/effect/landmark/start/gary/rare, -/turf/open/floor/iron/sepia, -/area/station/service/library) "bsm" = ( /obj/effect/spawner/structure/window/reinforced/plasma, /obj/machinery/atmospherics/pipe/heat_exchanging/junction{ @@ -5002,6 +4972,21 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark/textured_large, /area/station/security/prison/work) +"bvz" = ( +/obj/machinery/door/airlock/highsecurity{ + name = "Blueshield's Equipment Room" + }, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/mapping_helpers/airlock/access/all/admin/general, +/turf/open/floor/iron/dark/textured_large, +/area/station/command/heads_quarters/blueshield) "bvI" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 @@ -5582,6 +5567,14 @@ /obj/machinery/holopad/secure, /turf/open/floor/vault, /area/station/ai_monitored/turret_protected/ai_upload) +"bFr" = ( +/obj/structure/extinguisher_cabinet/directional/east, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/iron/dark/textured_large, +/area/station/cargo/quartermaster) "bFv" = ( /obj/effect/turf_decal/trimline/yellow/filled/warning{ dir = 4 @@ -5646,16 +5639,6 @@ dir = 1 }, /area/station/hallway/primary/fore) -"bGH" = ( -/obj/effect/mapping_helpers/airlock/unres{ - dir = 4 - }, -/obj/effect/mapping_helpers/airlock/access/any/science/maintenance, -/obj/machinery/door/airlock/maintenance{ - name = "Command Hallway Maintenance" - }, -/turf/open/floor/catwalk_floor/iron_smooth, -/area/station/maintenance/department/bridge) "bGJ" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -5835,13 +5818,6 @@ /obj/structure/lattice/catwalk, /turf/open/space/basic, /area/space/nearstation) -"bKt" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/fake_stairs/wood/directional/east, -/obj/effect/landmark/start/gary/uncommon, -/turf/open/floor/wood/large, -/area/station/service/barber) "bKE" = ( /obj/effect/turf_decal/delivery, /obj/machinery/space_heater, @@ -5942,15 +5918,6 @@ }, /turf/open/floor/iron/dark/textured, /area/station/science/xenobiology) -"bLR" = ( -/obj/machinery/status_display/evac/directional/west, -/obj/effect/turf_decal/siding/wood/end{ - dir = 1 - }, -/obj/structure/filingcabinet/chestdrawer, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron/textured_large, -/area/station/cargo/quartermaster) "bLW" = ( /obj/effect/landmark/start/hangover, /turf/open/floor/iron/small, @@ -6081,16 +6048,6 @@ }, /turf/open/floor/wood/large, /area/station/hallway/primary/central/fore) -"bNz" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/effect/landmark/generic_maintenance_landmark, -/obj/effect/landmark/start/gary, -/turf/open/floor/iron/textured, -/area/station/maintenance/aft/greater) "bNE" = ( /obj/structure/rack/shelf, /obj/item/reagent_containers/cup/bottle/acidic_buffer{ @@ -6601,16 +6558,6 @@ /obj/effect/turf_decal/siding/wood, /turf/open/floor/wood, /area/station/service/library/abandoned) -"bWx" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/holopad, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron/dark/textured_large, -/area/station/cargo/quartermaster) "bWK" = ( /obj/machinery/ai_slipper{ uses = 10 @@ -6979,14 +6926,6 @@ }, /turf/open/floor/wood/large, /area/station/hallway/primary/central/fore) -"ccH" = ( -/obj/machinery/computer/cargo{ - dir = 1 - }, -/obj/effect/turf_decal/siding/wood, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron/dark/textured_large, -/area/station/cargo/quartermaster) "ccV" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /obj/effect/turf_decal/siding/wood/corner{ @@ -7228,6 +7167,15 @@ /obj/machinery/status_display/ai, /turf/closed/wall, /area/station/engineering/atmos) +"cgC" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/station/cargo/quartermaster) "cgH" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -7350,32 +7298,6 @@ /obj/effect/spawner/random/maintenance/two, /turf/open/floor/catwalk_floor/iron_smooth, /area/station/maintenance/aft/greater) -"cix" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/mining{ - name = "Mining Lobby" - }, -/obj/effect/mapping_helpers/airlock/access/all/supply/qm, -/obj/effect/turf_decal/siding/wood/end, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/effect/turf_decal/siding/wood/corner{ - dir = 1 - }, -/obj/effect/turf_decal/siding/wood/corner{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/iron/textured_large, -/area/station/cargo/quartermaster) "ciL" = ( /obj/structure/railing{ dir = 1 @@ -7936,11 +7858,6 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron/white/textured_large, /area/station/science/auxlab) -"csn" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/start/gary, -/turf/open/floor/wood, -/area/station/maintenance/port/aft) "csp" = ( /obj/structure/disposalpipe/segment{ dir = 9 @@ -8379,13 +8296,6 @@ /obj/effect/spawner/random/trash/bucket, /turf/open/floor/grass, /area/station/service/hydroponics/garden/abandoned) -"czm" = ( -/obj/machinery/door/airlock/maintenance{ - name = "Commissary Maintenance" - }, -/obj/effect/mapping_helpers/airlock/access/any/science/maintenance, -/turf/open/floor/catwalk_floor/iron_smooth, -/area/station/maintenance/department/bridge) "czo" = ( /obj/machinery/door/airlock/external{ name = "Labor Camp Shuttle Airlock"; @@ -8565,6 +8475,19 @@ }, /turf/open/floor/engine, /area/station/bitrunning/den) +"cBo" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/layer_manifold/scrubbers/hidden, +/obj/machinery/door/airlock/maintenance_hatch{ + name = "Atmospherics Maintenance" + }, +/obj/machinery/door/poddoor/preopen{ + id = "atmoslock"; + name = "Atmospherics Lockdown Blast Door" + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, +/turf/open/floor/catwalk_floor/iron_smooth, +/area/station/maintenance/port) "cBU" = ( /obj/structure/chair/comfy/beige{ dir = 1 @@ -9516,6 +9439,26 @@ }, /turf/open/floor/circuit, /area/station/ai_monitored/turret_protected/ai) +"cPV" = ( +/obj/structure/table/wood, +/obj/item/folder/yellow{ + pixel_x = 5; + pixel_y = 4 + }, +/obj/item/stamp/head/qm{ + pixel_x = 5; + pixel_y = 4 + }, +/obj/item/stamp/denied{ + pixel_x = -7; + pixel_y = 9 + }, +/obj/item/stamp{ + pixel_x = -7; + pixel_y = 1 + }, +/turf/open/floor/carpet/black, +/area/station/cargo/quartermaster) "cQa" = ( /obj/machinery/holopad, /obj/effect/turf_decal/bot, @@ -9624,14 +9567,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/catwalk_floor/iron_smooth, /area/station/maintenance/eva_shed/starboard) -"cRE" = ( -/obj/item/radio/intercom/directional/east, -/obj/machinery/light/warm/directional/east, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/turf/open/floor/carpet/black, -/area/station/cargo/quartermaster) "cRT" = ( /obj/machinery/computer/exoscanner_control{ dir = 1 @@ -11185,6 +11120,17 @@ /obj/machinery/status_display/ai/directional/north, /turf/open/floor/pod/dark, /area/station/service/chapel/funeral) +"dom" = ( +/obj/structure/chair/comfy/brown{ + dir = 8 + }, +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/effect/landmark/start/gary, +/turf/open/floor/wood, +/area/station/service/library/abandoned) "dou" = ( /obj/machinery/airalarm/directional/south, /obj/structure/rack, @@ -11680,6 +11626,14 @@ /obj/effect/mapping_helpers/airlock/access/all/security/brig, /turf/open/floor/iron/dark/textured_large, /area/station/security/execution/transfer) +"dwb" = ( +/obj/effect/spawner/random/trash/mess, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/gary, +/turf/open/floor/iron/kitchen, +/area/station/service/kitchen/abandoned) "dwd" = ( /obj/effect/turf_decal/trimline/yellow/filled/warning{ dir = 1 @@ -12293,6 +12247,15 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/textured_large, /area/station/engineering/storage_shared) +"dER" = ( +/obj/effect/spawner/random/maintenance, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/obj/effect/landmark/generic_maintenance_landmark, +/obj/effect/landmark/start/gary, +/turf/open/floor/iron/textured, +/area/station/maintenance/port/fore) "dFa" = ( /obj/structure/mop_bucket/janitorialcart{ dir = 4 @@ -12341,15 +12304,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/catwalk_floor/iron_smooth, /area/station/maintenance/aft/lesser) -"dFH" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/textured_large, -/area/station/cargo/quartermaster) "dFN" = ( /obj/effect/spawner/random/trash/garbage, /obj/item/storage/box/lights/mixed, @@ -12765,16 +12719,6 @@ /obj/item/seeds/poppy, /turf/open/floor/grass, /area/station/service/chapel) -"dKP" = ( -/obj/structure/chair/comfy/brown{ - color = "#A46106" - }, -/obj/effect/landmark/start/quartermaster, -/obj/machinery/computer/security/telescreen/vault{ - pixel_y = 30 - }, -/turf/open/floor/carpet/black, -/area/station/cargo/quartermaster) "dKQ" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 @@ -12861,6 +12805,14 @@ /obj/effect/turf_decal/tile/red/fourcorners, /turf/open/floor/iron/dark/textured, /area/station/security/warden) +"dLA" = ( +/obj/structure/sign/calendar/directional/north, +/obj/machinery/status_display/supply{ + pixel_x = -32 + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/carpet/black, +/area/station/cargo/quartermaster) "dLE" = ( /obj/structure/table/glass, /obj/effect/turf_decal/trimline/purple/filled/line{ @@ -13456,6 +13408,22 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron/dark/textured_large, /area/station/command/bridge) +"dTZ" = ( +/obj/machinery/power/apc/auto_name/directional/west, +/obj/structure/cable, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/obj/machinery/disposal/bin, +/obj/effect/turf_decal/box, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/station/cargo/quartermaster) "dUa" = ( /obj/effect/turf_decal/loading_area{ dir = 1 @@ -13928,21 +13896,6 @@ }, /turf/open/floor/iron/white/textured_large, /area/station/medical/medbay/central) -"eag" = ( -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/obj/effect/landmark/start/gary/rare, -/turf/open/floor/iron/kitchen{ - dir = 1 - }, -/area/station/commons/dorms/laundry) "eai" = ( /obj/machinery/porta_turret/ai, /obj/effect/turf_decal/stripes/white/box, @@ -14046,15 +13999,6 @@ /obj/machinery/newscaster/directional/south, /turf/open/floor/carpet, /area/station/commons/dorms) -"ebE" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/structure/reagent_dispensers/plumbed{ - dir = 1; - name = "science water reservoir" - }, -/obj/effect/turf_decal/delivery/blue, -/turf/open/floor/iron/textured, -/area/station/maintenance/department/bridge) "ebF" = ( /obj/effect/turf_decal/siding/thinplating_new/terracotta/corner, /obj/structure/closet/secure_closet/freezer/kitchen/maintenance, @@ -16111,25 +16055,6 @@ dir = 1 }, /area/station/hallway/secondary/command) -"eFd" = ( -/obj/machinery/door/airlock/highsecurity{ - name = "Blueshield's Equipment Room" - }, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/command/captain, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/poddoor/preopen{ - id = "bridge blast"; - name = "Bridge Blast Door" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/iron/dark/textured_large, -/area/station/command/heads_quarters/blueshield) "eFg" = ( /obj/structure/chair/comfy/beige{ dir = 1 @@ -16763,6 +16688,11 @@ /obj/structure/reagent_dispensers/fueltank, /turf/open/space/basic, /area/space/nearstation) +"eOK" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/carpet/black, +/area/station/cargo/quartermaster) "eON" = ( /obj/effect/spawner/random/trash/food_packaging, /obj/effect/decal/cleanable/dirt, @@ -16990,6 +16920,13 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron/large, /area/station/commons/vacant_room) +"eSq" = ( +/obj/structure/chair/wood{ + dir = 1; + layer = 2.8 + }, +/turf/open/floor/carpet/black, +/area/station/cargo/quartermaster) "eSv" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -17056,21 +16993,6 @@ /obj/machinery/duct, /turf/open/floor/iron/white/textured_large, /area/station/science/xenobiology) -"eUl" = ( -/obj/machinery/door/airlock/highsecurity{ - name = "Blueshield's Equipment Room" - }, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/command/captain, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/iron/dark/textured_large, -/area/station/command/heads_quarters/blueshield) "eUm" = ( /obj/structure/bed, /obj/item/bedsheet/yellow, @@ -17530,18 +17452,6 @@ /obj/structure/lattice/catwalk, /turf/open/space, /area/station/solars/starboard/fore) -"fbe" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/siding/wood/corner{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/textured_large, -/area/station/cargo/quartermaster) "fbg" = ( /obj/effect/turf_decal/bot, /obj/structure/frame/machine, @@ -17752,15 +17662,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/textured_large, /area/station/cargo/miningdock) -"feb" = ( -/obj/machinery/firealarm/directional/north, -/obj/machinery/light_switch/directional/west, -/obj/structure/table/wood, -/obj/item/flashlight/lamp{ - pixel_y = 5 - }, -/turf/open/floor/carpet/black, -/area/station/cargo/quartermaster) "feh" = ( /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 1 @@ -18411,6 +18312,10 @@ "fop" = ( /turf/open/floor/grass, /area/station/service/hydroponics/upper) +"for" = ( +/obj/machinery/duct, +/turf/open/floor/catwalk_floor/iron_smooth, +/area/station/maintenance/department/bridge) "fos" = ( /obj/structure/table/glass, /obj/effect/spawner/random/trash/cigbutt, @@ -18605,6 +18510,9 @@ }, /turf/open/floor/iron/textured_large, /area/station/command/heads_quarters/hos) +"frk" = ( +/turf/open/floor/iron/textured, +/area/station/maintenance/department/bridge) "frl" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/trash/garbage, @@ -18759,6 +18667,18 @@ /obj/structure/window/reinforced/plasma/spawner/directional/east, /turf/open/floor/iron/textured, /area/station/maintenance/aft/lesser) +"ftw" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/station/cargo/quartermaster) "ftA" = ( /obj/machinery/status_display/evac/directional/south, /obj/effect/turf_decal/siding/wood/end{ @@ -19710,6 +19630,17 @@ }, /turf/open/floor/iron/textured_large, /area/station/cargo/warehouse) +"fLb" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/status_display/ai/directional/south, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/chair/comfy/brown{ + color = "#A46106"; + dir = 1 + }, +/obj/effect/landmark/start/quartermaster, +/turf/open/floor/carpet/black, +/area/station/cargo/quartermaster) "fLd" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -21811,6 +21742,25 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron/textured_large, /area/station/cargo/storage) +"gqG" = ( +/obj/machinery/door/airlock/highsecurity{ + name = "Blueshield's Equipment Room" + }, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/poddoor/preopen{ + id = "bridge blast"; + name = "Bridge Blast Door" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/mapping_helpers/airlock/access/all/admin/general, +/turf/open/floor/iron/dark/textured_large, +/area/station/command/heads_quarters/blueshield) "gqN" = ( /obj/effect/turf_decal/trimline/blue/filled/warning{ dir = 4 @@ -22034,6 +21984,10 @@ /obj/effect/turf_decal/trimline/dark_red/arrow_ccw, /turf/open/floor/iron/small, /area/station/hallway/secondary/exit/departure_lounge) +"gtJ" = ( +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/port/aft) "gtM" = ( /obj/effect/turf_decal/trimline/purple/filled/line, /obj/machinery/status_display/evac/directional/south, @@ -23212,18 +23166,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/cafeteria, /area/station/service/cafeteria) -"gKg" = ( -/obj/structure/table/wood/fancy/black, -/obj/effect/turf_decal/siding/wood, -/obj/item/stack/package_wrap{ - pixel_x = -3; - pixel_y = 8 - }, -/obj/item/hand_labeler{ - pixel_y = 3 - }, -/turf/open/floor/iron/dark/textured_large, -/area/station/cargo/quartermaster) "gKl" = ( /obj/structure/chair/wood{ dir = 8 @@ -23827,6 +23769,15 @@ /obj/structure/lattice/catwalk, /turf/open/space/basic, /area/station/solars/port/aft) +"gST" = ( +/obj/machinery/airalarm/directional/south, +/obj/structure/closet/secure_closet/quartermaster, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/iron/dark/textured_large, +/area/station/cargo/quartermaster) "gSW" = ( /obj/machinery/airalarm/directional/north, /obj/effect/turf_decal/loading_area{ @@ -24187,6 +24138,17 @@ }, /turf/open/floor/wood/large, /area/station/service/library) +"gYc" = ( +/obj/machinery/computer/security/qm{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, +/obj/structure/sign/calendar/directional/west, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron/dark/textured_large, +/area/station/cargo/quartermaster) "gYp" = ( /obj/effect/turf_decal/weather/sand, /obj/structure/flora/bush/sparsegrass{ @@ -24604,6 +24566,14 @@ /obj/item/stack/sheet/cardboard, /turf/open/floor/catwalk_floor/iron_smooth, /area/station/maintenance/starboard/upper) +"hdq" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/effect/landmark/start/gary/rare, +/turf/open/floor/iron/sepia, +/area/station/service/library) "hds" = ( /obj/machinery/status_display/evac/directional/west, /turf/open/floor/iron/grimy, @@ -24736,6 +24706,11 @@ "hfU" = ( /turf/closed/wall, /area/station/service/kitchen/coldroom) +"hgd" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/effect/landmark/start/gary/rare, +/turf/open/floor/carpet/black, +/area/station/commons/dorms) "hgk" = ( /obj/machinery/door/airlock/grunge{ name = "Chapel Garden" @@ -25055,14 +25030,6 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/engineering/supermatter/room) -"hko" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/effect/landmark/start/hangover, -/obj/effect/landmark/start/gary/uncommon, -/turf/open/floor/iron/large, -/area/station/commons/vacant_room/commissary) "hkv" = ( /obj/effect/turf_decal/trimline/yellow/filled/warning{ dir = 4 @@ -25346,6 +25313,17 @@ }, /turf/open/floor/catwalk_floor/iron_smooth, /area/station/maintenance/starboard/aft) +"hpU" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/airlock{ + id_tag = "commissarydoors"; + name = "Vacant Commissary" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/iron/large, +/area/station/commons/vacant_room/commissary) "hqd" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, @@ -25514,6 +25492,15 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/iron/textured_large, /area/station/cargo/sorting) +"htk" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/textured_large, +/area/station/cargo/quartermaster) "htq" = ( /obj/structure/table/wood, /obj/item/book/manual/wiki/security_space_law{ @@ -27608,6 +27595,10 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron/dark/textured_edge, /area/station/security/prison) +"hXd" = ( +/obj/machinery/digital_clock, +/turf/closed/wall/r_wall, +/area/station/cargo/quartermaster) "hXj" = ( /obj/machinery/rnd/production/circuit_imprinter, /obj/item/radio/intercom/directional/west, @@ -28343,6 +28334,14 @@ /obj/item/radio, /turf/open/floor/iron/textured, /area/station/security/checkpoint/supply) +"ijg" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet, +/obj/effect/spawner/random/maintenance/four, +/obj/effect/spawner/random/engineering/vending_restock, +/obj/item/storage/box/lights/mixed, +/turf/open/floor/iron/textured, +/area/station/maintenance/department/bridge) "ijj" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, @@ -28531,12 +28530,6 @@ dir = 8 }, /area/station/security/office) -"ilT" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/carpet/cyan, -/area/station/command/heads_quarters/blueshield) "ilY" = ( /obj/effect/turf_decal/trimline/yellow/filled/line, /obj/effect/turf_decal/trimline/blue/filled/line, @@ -28695,6 +28688,13 @@ dir = 8 }, /area/station/cargo/storage) +"inx" = ( +/obj/structure/dresser, +/obj/item/toy/figure/qm{ + pixel_y = 14 + }, +/turf/open/floor/carpet/black, +/area/station/cargo/quartermaster) "inB" = ( /obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 8 @@ -29017,6 +29017,15 @@ /obj/effect/spawner/random/structure/crate, /turf/open/floor/iron/textured, /area/station/maintenance/port/central) +"irl" = ( +/obj/effect/turf_decal/tile/purple/opposingcorners, +/obj/structure/reagent_dispensers/plumbed{ + dir = 1; + name = "science water reservoir" + }, +/obj/effect/turf_decal/delivery/blue, +/turf/open/floor/iron/textured, +/area/station/maintenance/department/bridge) "irm" = ( /obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/west, @@ -29244,6 +29253,14 @@ /obj/machinery/light/small/directional/east, /turf/closed/wall/r_wall, /area/station/maintenance/department/science/xenobiology) +"itx" = ( +/obj/item/radio/intercom/directional/east, +/obj/machinery/light/warm/directional/east, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/turf/open/floor/carpet/black, +/area/station/cargo/quartermaster) "ity" = ( /obj/structure/table, /obj/item/clothing/mask/gas, @@ -29410,6 +29427,25 @@ /obj/effect/spawner/random/structure/tank_holder, /turf/open/floor/catwalk_floor/iron_smooth, /area/station/medical/virology) +"ivM" = ( +/obj/structure/table/wood/fancy/black, +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/obj/item/gun_maintenance_supplies{ + pixel_y = 4 + }, +/obj/item/gps/mining{ + gpstag = "QM0"; + pixel_y = 4 + }, +/obj/machinery/light_switch/directional/south, +/obj/item/folder/yellow{ + pixel_x = -15; + pixel_y = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/station/cargo/quartermaster) "ivQ" = ( /obj/machinery/computer/order_console/cook, /obj/effect/turf_decal/trimline/brown/filled/line{ @@ -29593,6 +29629,12 @@ "ixX" = ( /turf/open/floor/catwalk_floor/iron_smooth, /area/station/maintenance/port/central) +"iyd" = ( +/obj/structure/bed, +/obj/item/bedsheet/qm, +/obj/machinery/newscaster/directional/north, +/turf/open/floor/carpet/black, +/area/station/cargo/quartermaster) "iye" = ( /obj/structure/closet, /obj/effect/spawner/random/maintenance/two, @@ -30420,13 +30462,6 @@ dir = 8 }, /area/station/engineering/atmos/hfr_room) -"iLc" = ( -/obj/structure/dresser, -/obj/item/toy/figure/qm{ - pixel_y = 14 - }, -/turf/open/floor/carpet/black, -/area/station/cargo/quartermaster) "iLm" = ( /obj/effect/turf_decal/trimline/yellow/filled/warning{ dir = 8 @@ -30491,12 +30526,6 @@ }, /turf/open/floor/catwalk_floor, /area/station/maintenance/department/security/greater) -"iMg" = ( -/obj/structure/table, -/obj/effect/turf_decal/tile/dark/opposingcorners, -/obj/machinery/chem_dispenser/drinks/beer, -/turf/open/floor/iron/kitchen, -/area/station/security/prison/mess) "iMh" = ( /obj/effect/turf_decal/trimline/brown/filled/corner{ dir = 1 @@ -31015,6 +31044,12 @@ /obj/effect/turf_decal/stripes/line, /turf/open/floor/pod, /area/station/service/chapel/office) +"iTX" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/start/gary, +/turf/open/floor/iron/textured, +/area/station/maintenance/starboard/fore) "iUc" = ( /obj/machinery/navbeacon{ codes_txt = "patrol;next_patrol=hall2"; @@ -31068,16 +31103,6 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/iron/textured, /area/station/maintenance/department/engine/atmos) -"iUP" = ( -/obj/structure/chair/office{ - color = "#A46106" - }, -/obj/effect/landmark/start/quartermaster, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/iron/dark/textured_large, -/area/station/cargo/quartermaster) "iVa" = ( /turf/open/floor/engine, /area/station/security/range) @@ -31351,6 +31376,14 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/vault, /area/station/ai_monitored/turret_protected/aisat/foyer) +"iXX" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/trash/popcorn, +/obj/effect/landmark/generic_maintenance_landmark, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/aft/lesser) "iXY" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /obj/effect/turf_decal/tile/blue/opposingcorners{ @@ -31639,6 +31672,17 @@ dir = 8 }, /area/station/science/robotics/lab) +"jbo" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/structure/railing{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/landmark/start/gary/uncommon, +/turf/open/floor/wood/parquet, +/area/station/common/night_club) "jbu" = ( /obj/machinery/vending/boozeomat, /obj/effect/turf_decal/tile/bar/opposingcorners, @@ -32151,6 +32195,9 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating/airless, /area/station/medical/chemistry) +"jjg" = ( +/turf/open/floor/catwalk_floor/iron_smooth, +/area/station/maintenance/department/bridge) "jji" = ( /obj/structure/sign/poster/contraband/crocin_pool/directional/south, /obj/effect/spawner/liquids_spawner, @@ -32204,14 +32251,6 @@ }, /turf/open/floor/iron/textured_edge, /area/station/engineering/atmos/hfr_room) -"jka" = ( -/obj/structure/sign/calendar/directional/north, -/obj/machinery/status_display/supply{ - pixel_x = -32 - }, -/obj/effect/turf_decal/bot, -/turf/open/floor/carpet/black, -/area/station/cargo/quartermaster) "jkb" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -32496,6 +32535,30 @@ /obj/effect/decal/cleanable/blood/old, /turf/open/floor/iron/textured, /area/station/maintenance/port/greater) +"jor" = ( +/obj/machinery/door/airlock/corporate{ + name = "Blueshield's Quarters" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/siding/wood/end, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/obj/effect/mapping_helpers/airlock/access/all/admin/general, +/turf/open/floor/wood/large, +/area/station/command/heads_quarters/blueshield) "jos" = ( /obj/machinery/vending/coffee{ default_price = 0; @@ -33201,6 +33264,24 @@ }, /turf/open/floor/catwalk_floor/iron_smooth, /area/station/maintenance/starboard/lesser) +"jwQ" = ( +/obj/structure/table/wood, +/obj/item/flashlight/lamp{ + pixel_x = -4; + pixel_y = 12 + }, +/obj/machinery/firealarm/directional/west, +/obj/item/paper_bin/carbon{ + pixel_x = 12; + pixel_y = 4 + }, +/obj/item/pen/fourcolor{ + pixel_x = 12; + pixel_y = 4 + }, +/obj/machinery/light/directional/west, +/turf/open/floor/carpet/black, +/area/station/cargo/quartermaster) "jwV" = ( /obj/effect/spawner/random/structure/grille, /turf/open/floor/iron/textured, @@ -33272,14 +33353,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/textured, /area/station/maintenance/aft/greater) -"jyw" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/trash/popcorn, -/obj/effect/landmark/generic_maintenance_landmark, -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/start/gary, -/turf/open/floor/plating, -/area/station/maintenance/aft/lesser) "jyD" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -33778,6 +33851,17 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/security/holding_cell) +"jEm" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/obj/effect/turf_decal/siding/dark_blue/end{ + dir = 4 + }, +/obj/effect/turf_decal/tile/dark_blue/full, +/obj/effect/landmark/start/blueshield, +/turf/open/floor/iron/dark/textured_large, +/area/station/command/heads_quarters/blueshield) "jEy" = ( /obj/structure/table/wood, /obj/machinery/status_display/ai/directional/north, @@ -34192,6 +34276,11 @@ /obj/effect/mapping_helpers/airlock/access/all/medical/general, /turf/open/floor/catwalk_floor/iron_smooth, /area/station/maintenance/port/central) +"jKa" = ( +/obj/effect/spawner/liquids_spawner, +/obj/effect/landmark/start/gary/rare, +/turf/open/floor/lowered/iron/pool, +/area/station/common/pool) "jKi" = ( /obj/structure/table/wood, /obj/item/flashlight/lamp/green, @@ -36619,6 +36708,16 @@ /obj/item/clothing/head/cone, /turf/open/floor/catwalk_floor/iron_smooth, /area/station/maintenance/starboard/fore) +"kvN" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/turf/open/floor/iron/dark/textured_large, +/area/station/cargo/quartermaster) "kvR" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/research/glass{ @@ -37553,15 +37652,6 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron/textured, /area/station/maintenance/starboard/aft) -"kGT" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/textured_large, -/area/station/cargo/quartermaster) "kGU" = ( /obj/effect/landmark/start/bartender, /obj/effect/turf_decal/tile/bar/opposingcorners, @@ -37805,9 +37895,6 @@ /obj/structure/grille/broken, /turf/open/floor/iron/textured, /area/station/maintenance/department/science/ordnance_maint) -"kJs" = ( -/turf/open/floor/catwalk_floor/iron_smooth, -/area/station/maintenance/department/bridge) "kJv" = ( /obj/effect/landmark/event_spawn, /turf/open/floor/iron/textured_edge, @@ -38138,6 +38225,12 @@ }, /turf/open/floor/plating, /area/station/security/prison/garden) +"kPk" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/landmark/start/blueshield, +/turf/open/floor/carpet/cyan, +/area/station/command/heads_quarters/blueshield) "kPn" = ( /obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 1 @@ -39963,12 +40056,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/textured_large, /area/station/hallway/secondary/entry) -"loI" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/landmark/start/gary, -/turf/open/floor/iron/textured, -/area/station/maintenance/starboard/fore) "loJ" = ( /obj/effect/turf_decal/tile/purple/diagonal_centre, /obj/structure/disposalpipe/segment{ @@ -40255,6 +40342,26 @@ /obj/effect/turf_decal/siding/thinplating/dark/end, /turf/open/floor/iron/checker, /area/station/medical/virology) +"ltz" = ( +/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/access/all/supply/qm, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/door/airlock/mining{ + name = "Mining Lobby" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/iron/textured_large, +/area/station/cargo/quartermaster) "ltB" = ( /obj/structure/lattice/catwalk, /turf/open/space, @@ -43196,10 +43303,6 @@ dir = 8 }, /area/station/engineering/power_room) -"mjo" = ( -/obj/machinery/digital_clock, -/turf/closed/wall/r_wall, -/area/station/cargo/quartermaster) "mjr" = ( /obj/effect/turf_decal/trimline/brown/filled/corner{ dir = 4 @@ -43616,16 +43719,6 @@ dir = 1 }, /area/station/hallway/secondary/entry) -"moT" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/iron/dark/textured_large, -/area/station/cargo/quartermaster) "moV" = ( /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ dir = 4 @@ -43936,11 +44029,27 @@ }, /turf/open/floor/iron/textured_large, /area/station/construction/mining/aux_base) -"mvn" = ( -/obj/item/robot_suit, -/obj/effect/landmark/start/gary, -/turf/open/floor/plating, -/area/station/science/research/abandoned) +"mvl" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/corporate{ + id_tag = "BSdoor"; + name = "Blueshield's Office" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/mapping_helpers/airlock/access/all/admin/general, +/turf/open/floor/iron/dark/textured_large, +/area/station/command/heads_quarters/blueshield) "mvz" = ( /obj/effect/turf_decal/trimline/yellow/filled/warning, /obj/structure/disposalpipe/segment{ @@ -44508,6 +44617,16 @@ }, /turf/open/floor/plating, /area/station/science/robotics/mechbay) +"mEw" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/effect/landmark/generic_maintenance_landmark, +/obj/effect/landmark/start/gary, +/turf/open/floor/iron/textured, +/area/station/maintenance/aft/greater) "mEC" = ( /obj/machinery/corral_corner{ mapping_id = "5" @@ -46063,6 +46182,32 @@ /obj/structure/table/wood/fancy/blue, /turf/open/floor/wood/large, /area/station/security/courtroom) +"mZJ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/mining{ + name = "Mining Lobby" + }, +/obj/effect/mapping_helpers/airlock/access/all/supply/qm, +/obj/effect/turf_decal/siding/wood/end, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/iron/textured_large, +/area/station/cargo/quartermaster) "mZO" = ( /obj/effect/turf_decal/arrows/white{ color = "#00AAFF"; @@ -46270,11 +46415,6 @@ /obj/machinery/atmospherics/pipe/smart/simple/orange/visible, /turf/open/floor/engine, /area/station/engineering/supermatter/room) -"ncD" = ( -/obj/effect/spawner/liquids_spawner, -/obj/effect/landmark/start/gary/rare, -/turf/open/floor/lowered/iron/pool, -/area/station/common/pool) "ncF" = ( /obj/machinery/light/small/directional/east, /obj/structure/easel, @@ -47319,24 +47459,6 @@ }, /turf/open/floor/iron/white/textured_edge, /area/station/science/research) -"nss" = ( -/obj/structure/table/wood, -/obj/item/flashlight/lamp{ - pixel_x = -4; - pixel_y = 12 - }, -/obj/machinery/firealarm/directional/west, -/obj/item/paper_bin/carbon{ - pixel_x = 12; - pixel_y = 4 - }, -/obj/item/pen/fourcolor{ - pixel_x = 12; - pixel_y = 4 - }, -/obj/machinery/light/directional/west, -/turf/open/floor/carpet/black, -/area/station/cargo/quartermaster) "nst" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -47535,25 +47657,6 @@ dir = 1 }, /area/station/medical/medbay/central) -"nui" = ( -/obj/structure/table/wood/fancy/black, -/obj/effect/turf_decal/siding/wood{ - dir = 6 - }, -/obj/item/gun_maintenance_supplies{ - pixel_y = 4 - }, -/obj/item/gps/mining{ - gpstag = "QM0"; - pixel_y = 4 - }, -/obj/machinery/light_switch/directional/south, -/obj/item/folder/yellow{ - pixel_x = -15; - pixel_y = 4 - }, -/turf/open/floor/iron/dark/textured_large, -/area/station/cargo/quartermaster) "nul" = ( /obj/effect/turf_decal/trimline/brown/filled/warning, /obj/effect/turf_decal/arrows, @@ -47597,14 +47700,6 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron/dark/textured, /area/station/security/office) -"nuW" = ( -/obj/effect/spawner/random/trash/mess, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/start/gary, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen/abandoned) "nvc" = ( /obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 1 @@ -47995,6 +48090,9 @@ /obj/effect/spawner/random/trash/garbage, /turf/open/floor/plating, /area/station/maintenance/aft/lesser) +"nAt" = ( +/turf/closed/wall/r_wall, +/area/station/cargo/quartermaster) "nAw" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, @@ -48726,6 +48824,19 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/catwalk_floor/iron_smooth, /area/station/maintenance/port/greater) +"nNa" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/obj/structure/extinguisher_cabinet/directional/north, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/station/cargo/quartermaster) "nNc" = ( /obj/effect/turf_decal/siding/wood, /obj/structure/table{ @@ -48937,16 +49048,6 @@ }, /turf/open/floor/iron/dark/textured_large, /area/station/medical/morgue) -"nPP" = ( -/obj/effect/turf_decal/siding/wood, -/obj/machinery/camera/directional/south{ - c_tag = "Cargo - Quartermaster's Office"; - name = "cargo camera" - }, -/obj/machinery/status_display/ai/directional/south, -/obj/structure/table/wood, -/turf/open/floor/iron/dark/textured_large, -/area/station/cargo/quartermaster) "nPT" = ( /obj/item/radio/intercom/directional/south, /obj/effect/turf_decal/trimline/purple/filled/line, @@ -50198,6 +50299,16 @@ dir = 8 }, /area/station/engineering/storage_shared) +"ohQ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/requests_console/directional/east{ + department = "Quartermaster's Desk"; + name = "Quartermaster's Requests Console" + }, +/obj/effect/mapping_helpers/requests_console/announcement, +/turf/open/floor/carpet/black, +/area/station/cargo/quartermaster) "oia" = ( /obj/effect/turf_decal/tile/green/diagonal_centre, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -51060,6 +51171,9 @@ }, /turf/open/floor/iron/large, /area/station/commons/dorms/laundry) +"out" = ( +/turf/closed/wall, +/area/station/cargo/quartermaster) "ouu" = ( /obj/structure/extinguisher_cabinet/directional/west, /turf/open/floor/light/colour_cycle/dancefloor_b, @@ -51369,15 +51483,6 @@ }, /turf/open/floor/wood/large, /area/station/command/heads_quarters/captain) -"oyB" = ( -/obj/effect/spawner/random/maintenance, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/obj/effect/landmark/generic_maintenance_landmark, -/obj/effect/landmark/start/gary, -/turf/open/floor/iron/textured, -/area/station/maintenance/port/fore) "oyG" = ( /obj/machinery/disposal/bin, /obj/effect/turf_decal/box, @@ -51418,6 +51523,15 @@ /obj/effect/turf_decal/vg_decals/numbers/three, /turf/open/floor/iron/dark/textured_large, /area/station/hallway/secondary/command) +"ozs" = ( +/obj/structure/reagent_dispensers/plumbed{ + dir = 1; + name = "science water reservoir" + }, +/obj/effect/turf_decal/tile/purple/opposingcorners, +/obj/effect/turf_decal/delivery/blue, +/turf/open/floor/iron/textured, +/area/station/maintenance/department/bridge) "ozH" = ( /obj/effect/mapping_helpers/airlock/access/all/science/research, /obj/structure/disposalpipe/segment{ @@ -52137,14 +52251,6 @@ }, /turf/open/floor/iron/dark/textured, /area/station/security/prison/mess) -"oKy" = ( -/obj/structure/extinguisher_cabinet/directional/east, -/obj/effect/turf_decal/bot, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/iron/dark/textured_large, -/area/station/cargo/quartermaster) "oKR" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/textured, @@ -54873,15 +54979,6 @@ }, /turf/open/floor/carpet/royalblue, /area/station/command/heads_quarters/captain) -"puB" = ( -/obj/machinery/airalarm/directional/south, -/obj/structure/closet/secure_closet/quartermaster, -/obj/effect/turf_decal/bot, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/iron/dark/textured_large, -/area/station/cargo/quartermaster) "puG" = ( /obj/machinery/power/shuttle_engine/propulsion, /obj/structure/window/reinforced/spawner/directional/west, @@ -55637,13 +55734,6 @@ /obj/machinery/light_switch/directional/east, /turf/open/floor/iron/textured, /area/station/engineering/atmos/storage/gas) -"pFP" = ( -/obj/effect/turf_decal/siding/wood, -/obj/item/radio/intercom/directional/south, -/obj/effect/turf_decal/bot, -/obj/machinery/light/directional/south, -/turf/open/floor/iron/dark/textured_large, -/area/station/cargo/quartermaster) "pGh" = ( /turf/open/floor/iron/white/textured_large, /area/station/hallway/primary/fore) @@ -56548,6 +56638,14 @@ /obj/effect/spawner/random/structure/steam_vent, /turf/open/floor/plating, /area/station/maintenance/aft/greater) +"pSO" = ( +/obj/machinery/computer/cargo{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron/dark/textured_large, +/area/station/cargo/quartermaster) "pSX" = ( /obj/machinery/door/firedoor, /obj/structure/disposalpipe/segment{ @@ -56602,17 +56700,6 @@ /obj/structure/table, /turf/open/floor/iron/textured, /area/station/science/research/abandoned) -"pUd" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/airlock{ - id_tag = "commissarydoors"; - name = "Vacant Commissary" - }, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/large, -/area/station/commons/vacant_room/commissary) "pUe" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/pod/dark, @@ -57460,20 +57547,6 @@ }, /turf/open/floor/catwalk_floor/iron_smooth, /area/station/maintenance/starboard/greater) -"qcg" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/machinery/light/small/directional/south, -/obj/structure/chair/office{ - dir = 4 - }, -/obj/effect/decal/cleanable/blood/old, -/obj/effect/landmark/generic_maintenance_landmark, -/obj/effect/turf_decal/siding/wood, -/obj/effect/landmark/start/gary, -/turf/open/floor/wood, -/area/station/maintenance/department/engine/atmos) "qcj" = ( /obj/item/stack/sheet/plasteel/twenty{ pixel_x = -4 @@ -58106,10 +58179,6 @@ dir = 4 }, /area/station/hallway/primary/aft) -"qkQ" = ( -/obj/structure/reagent_dispensers/watertank/high, -/turf/open/floor/grass, -/area/station/security/prison/garden) "qlA" = ( /obj/effect/turf_decal/stripes/red/full, /turf/open/floor/iron/textured_large, @@ -58268,6 +58337,16 @@ }, /turf/closed/wall, /area/station/maintenance/aft/upper) +"qnt" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/holopad, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron/dark/textured_large, +/area/station/cargo/quartermaster) "qnC" = ( /obj/structure/table/wood, /obj/item/paper_bin/carbon{ @@ -58501,10 +58580,6 @@ }, /turf/open/floor/iron/textured_edge, /area/station/engineering/main) -"qro" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/cargo/quartermaster) "qrF" = ( /obj/effect/landmark/start/prisoner, /turf/open/floor/iron/dark/textured_large, @@ -59343,6 +59418,12 @@ /obj/effect/turf_decal/stripes/line, /turf/open/floor/iron/dark/textured, /area/station/security/brig) +"qEh" = ( +/obj/effect/spawner/random/trash/garbage, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/department/crew_quarters/bar) "qEq" = ( /obj/structure/sign/departments/aisat/directional/north, /obj/machinery/light/cold/directional/north, @@ -59581,6 +59662,16 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron/freezer, /area/station/security/checkpoint/medical) +"qHw" = ( +/obj/structure/chair/comfy/brown{ + color = "#A46106" + }, +/obj/effect/landmark/start/quartermaster, +/obj/machinery/computer/security/telescreen/vault{ + pixel_y = 30 + }, +/turf/open/floor/carpet/black, +/area/station/cargo/quartermaster) "qHx" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, @@ -60008,6 +60099,14 @@ /obj/machinery/light_switch/directional/west, /turf/open/floor/iron, /area/station/commons/storage/art) +"qMN" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/obj/effect/landmark/start/hangover, +/obj/effect/landmark/start/gary/uncommon, +/turf/open/floor/iron/large, +/area/station/commons/vacant_room/commissary) "qMR" = ( /obj/effect/turf_decal/siding/wood{ dir = 4 @@ -60111,6 +60210,20 @@ }, /turf/open/floor/iron/dark/textured_edge, /area/station/security/brig) +"qPy" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/obj/machinery/light/small/directional/south, +/obj/structure/chair/office{ + dir = 4 + }, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/landmark/generic_maintenance_landmark, +/obj/effect/turf_decal/siding/wood, +/obj/effect/landmark/start/gary, +/turf/open/floor/wood, +/area/station/maintenance/department/engine/atmos) "qPI" = ( /obj/effect/turf_decal/delivery, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible, @@ -60462,6 +60575,18 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/wood/large, /area/station/hallway/primary/central/fore) +"qTs" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/machinery/newscaster/directional/west, +/obj/structure/bed/dogbed{ + anchored = 1; + name = "Citrus's bed" + }, +/mob/living/basic/sloth/citrus, +/turf/open/floor/iron/dark/textured_large, +/area/station/cargo/quartermaster) "qTA" = ( /obj/effect/turf_decal/siding/wood{ dir = 5 @@ -62897,27 +63022,6 @@ /obj/effect/landmark/start/chemist, /turf/open/floor/iron/dark/textured, /area/station/medical/break_room) -"rDO" = ( -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/command/captain, -/obj/machinery/door/airlock/corporate{ - id_tag = "BSdoor"; - name = "Blueshield's Office" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/iron/dark/textured_large, -/area/station/command/heads_quarters/blueshield) "rDP" = ( /obj/machinery/computer/shuttle/mining{ dir = 1; @@ -62939,13 +63043,6 @@ /obj/machinery/atmospherics/components/unary/thermomachine/heater/on, /turf/open/floor/iron/dark/textured_large, /area/station/engineering/atmos) -"rEG" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/carpet/black, -/area/station/cargo/quartermaster) "rET" = ( /turf/open/floor/iron/textured_edge{ dir = 8 @@ -63251,17 +63348,6 @@ }, /turf/open/floor/engine, /area/station/science/xenobiology) -"rJq" = ( -/obj/machinery/computer/security/qm{ - dir = 1 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 10 - }, -/obj/structure/sign/calendar/directional/west, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron/dark/textured_large, -/area/station/cargo/quartermaster) "rJK" = ( /obj/structure/flora/ocean/longseaweed, /obj/effect/spawner/liquids_spawner{ @@ -64471,12 +64557,6 @@ }, /turf/open/floor/iron/white/textured_large, /area/station/medical/medbay/lobby) -"sbI" = ( -/obj/effect/spawner/random/trash/garbage, -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/start/gary, -/turf/open/floor/plating, -/area/station/maintenance/department/crew_quarters/bar) "sbU" = ( /obj/machinery/power/smes, /turf/open/floor/catwalk_floor/iron_smooth, @@ -64928,18 +65008,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/wood/large, /area/station/hallway/primary/central/fore) -"siF" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/machinery/newscaster/directional/west, -/obj/structure/bed/dogbed{ - anchored = 1; - name = "Citrus's bed" - }, -/mob/living/basic/sloth/citrus, -/turf/open/floor/iron/dark/textured_large, -/area/station/cargo/quartermaster) "siO" = ( /turf/open/space, /area/space) @@ -65720,6 +65788,16 @@ }, /turf/open/floor/iron/large, /area/station/security/detectives_office) +"sun" = ( +/obj/structure/chair/office{ + color = "#A46106" + }, +/obj/effect/landmark/start/quartermaster, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/open/floor/iron/dark/textured_large, +/area/station/cargo/quartermaster) "sur" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -66193,16 +66271,6 @@ /obj/machinery/portable_atmospherics/canister/air, /turf/open/floor/engine/air, /area/station/engineering/atmos) -"sCm" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/effect/turf_decal/siding/dark_blue/end{ - dir = 4 - }, -/obj/effect/turf_decal/tile/dark_blue/full, -/turf/open/floor/iron/dark/textured_large, -/area/station/command/heads_quarters/blueshield) "sCw" = ( /obj/machinery/door/airlock/maintenance_hatch, /obj/effect/mapping_helpers/airlock/abandoned, @@ -66287,6 +66355,11 @@ }, /turf/open/floor/iron/textured_large, /area/station/engineering/power_room) +"sDA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/gary, +/turf/open/floor/wood, +/area/station/maintenance/port/aft) "sDB" = ( /obj/structure/dresser, /obj/item/radio/intercom/directional/east, @@ -66944,9 +67017,6 @@ }, /turf/open/floor/iron/kitchen, /area/station/security/prison/mess) -"sKz" = ( -/turf/open/floor/iron/textured, -/area/station/maintenance/department/bridge) "sKA" = ( /obj/machinery/door/airlock/maintenance, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -67079,19 +67149,6 @@ /obj/structure/cable, /turf/open/floor/catwalk_floor/iron_smooth, /area/station/maintenance/solars/port/aft) -"sLG" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/siding/wood{ - dir = 5 - }, -/obj/structure/extinguisher_cabinet/directional/north, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/textured_large, -/area/station/cargo/quartermaster) "sLH" = ( /obj/machinery/door/airlock/maintenance{ name = "Power Station" @@ -67476,15 +67533,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/catwalk_floor/iron_smooth, /area/station/maintenance/starboard/upper) -"sPy" = ( -/obj/structure/reagent_dispensers/plumbed{ - dir = 1; - name = "science water reservoir" - }, -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/effect/turf_decal/delivery/blue, -/turf/open/floor/iron/textured, -/area/station/maintenance/department/bridge) "sPF" = ( /obj/structure/table/reinforced, /obj/item/clothing/suit/utility/radiation, @@ -68006,17 +68054,6 @@ /obj/item/reagent_containers/cup/glass/shaker, /turf/open/floor/iron, /area/station/service/bar) -"sVZ" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/structure/railing{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/landmark/start/gary/uncommon, -/turf/open/floor/wood/parquet, -/area/station/common/night_club) "sWB" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/tank_holder/extinguisher, @@ -68109,10 +68146,6 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/wood/large, /area/station/service/theater) -"sXU" = ( -/obj/machinery/status_display/evac, -/turf/closed/wall/r_wall, -/area/station/cargo/quartermaster) "sXX" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -68771,6 +68804,21 @@ }, /turf/open/floor/iron/kitchen, /area/station/service/kitchen) +"tgP" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/obj/effect/landmark/start/gary/rare, +/turf/open/floor/iron/kitchen{ + dir = 1 + }, +/area/station/commons/dorms/laundry) "tgQ" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -69458,6 +69506,15 @@ /obj/effect/spawner/random/trash/garbage, /turf/open/floor/iron/textured, /area/station/maintenance/port/aft) +"tqz" = ( +/obj/machinery/status_display/evac/directional/west, +/obj/effect/turf_decal/siding/wood/end{ + dir = 1 + }, +/obj/structure/filingcabinet/chestdrawer, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron/textured_large, +/area/station/cargo/quartermaster) "tqA" = ( /obj/structure/window/spawner/directional/south, /obj/structure/flora/bush/sparsegrass, @@ -70302,14 +70359,6 @@ }, /turf/open/floor/iron/freezer, /area/station/medical/pharmacy) -"tAu" = ( -/obj/machinery/photocopier, -/obj/effect/turf_decal/siding/wood{ - dir = 5 - }, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron/dark/textured_large, -/area/station/cargo/quartermaster) "tAw" = ( /obj/machinery/disposal/bin, /obj/effect/turf_decal/trimline/dark_red/filled/line{ @@ -71072,6 +71121,13 @@ }, /turf/open/floor/iron/textured_large, /area/station/cargo/storage) +"tMp" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/fake_stairs/wood/directional/east, +/obj/effect/landmark/start/gary/uncommon, +/turf/open/floor/wood/large, +/area/station/service/barber) "tMq" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -72816,6 +72872,15 @@ }, /turf/open/floor/iron/white/textured_large, /area/station/medical/surgery) +"unj" = ( +/obj/machinery/firealarm/directional/north, +/obj/machinery/light_switch/directional/west, +/obj/structure/table/wood, +/obj/item/flashlight/lamp{ + pixel_y = 5 + }, +/turf/open/floor/carpet/black, +/area/station/cargo/quartermaster) "uno" = ( /obj/machinery/airalarm/directional/north, /obj/machinery/suit_storage_unit/rd, @@ -73879,12 +73944,6 @@ }, /turf/open/floor/carpet/neon/simple/pink, /area/station/science/xenobiology) -"uzO" = ( -/obj/effect/decal/cleanable/blood/old, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/landmark/start/gary/uncommon, -/turf/open/floor/iron/textured, -/area/station/maintenance/port/greater) "uzW" = ( /obj/effect/turf_decal/trimline/dark_red/arrow_ccw, /obj/structure/sign/poster/official/random/directional/south, @@ -74646,9 +74705,6 @@ /obj/structure/window/fulltile, /turf/open/floor/grass, /area/station/hallway/primary/fore) -"uKR" = ( -/turf/closed/wall, -/area/station/maintenance/department/bridge) "uLe" = ( /turf/open/floor/iron/textured_large, /area/station/cargo/office) @@ -74754,10 +74810,6 @@ /obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_ordmix, /turf/open/floor/engine, /area/station/science/ordnance/burnchamber) -"uMv" = ( -/obj/effect/landmark/start/gary, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) "uMy" = ( /obj/effect/landmark/start/hangover, /turf/open/floor/iron/large, @@ -74771,30 +74823,6 @@ /obj/effect/mapping_helpers/airlock/access/all/engineering/general, /turf/open/floor/catwalk_floor/iron_smooth, /area/station/maintenance/solars/port/aft) -"uNm" = ( -/obj/machinery/door/airlock/corporate{ - name = "Blueshield's Quarters" - }, -/obj/effect/mapping_helpers/airlock/access/all/command/captain, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/siding/wood/end, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/effect/turf_decal/siding/wood/corner{ - dir = 1 - }, -/obj/effect/turf_decal/siding/wood/corner{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/wood/large, -/area/station/command/heads_quarters/blueshield) "uNu" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -76238,6 +76266,14 @@ /obj/machinery/light/directional/south, /turf/open/floor/iron/small, /area/station/hallway/secondary/exit/departure_lounge) +"vjU" = ( +/obj/machinery/photocopier, +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron/dark/textured_large, +/area/station/cargo/quartermaster) "vjY" = ( /obj/structure/training_machine, /obj/item/target, @@ -76260,6 +76296,13 @@ /obj/structure/cable, /turf/open/floor/vault, /area/station/ai_monitored/turret_protected/aisat/foyer) +"vkv" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/carpet/black, +/area/station/cargo/quartermaster) "vkB" = ( /obj/structure/rack/shelf, /obj/effect/spawner/random/techstorage/service_all, @@ -76530,9 +76573,6 @@ /mob/living/simple_animal/bot/secbot/beepsky/officer, /turf/open/floor/iron/dark/textured_large, /area/station/security/office) -"vnJ" = ( -/turf/closed/wall/r_wall, -/area/station/cargo/quartermaster) "vnQ" = ( /obj/structure/chair/sofa/right/brown{ dir = 4 @@ -76756,6 +76796,10 @@ name = "Holodeck Projector Floor" }, /area/station/holodeck/rec_center) +"vrK" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/station/cargo/quartermaster) "vrU" = ( /obj/machinery/atmospherics/pipe/smart/simple/orange/visible{ dir = 4 @@ -76846,6 +76890,12 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/textured, /area/station/science/research/abandoned) +"vtA" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/landmark/start/gary/uncommon, +/turf/open/floor/iron/textured, +/area/station/maintenance/port/greater) "vtC" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -79154,26 +79204,6 @@ }, /turf/open/floor/engine, /area/station/engineering/main) -"vZG" = ( -/obj/structure/table/wood, -/obj/item/folder/yellow{ - pixel_x = 5; - pixel_y = 4 - }, -/obj/item/stamp/head/qm{ - pixel_x = 5; - pixel_y = 4 - }, -/obj/item/stamp/denied{ - pixel_x = -7; - pixel_y = 9 - }, -/obj/item/stamp{ - pixel_x = -7; - pixel_y = 1 - }, -/turf/open/floor/carpet/black, -/area/station/cargo/quartermaster) "vZI" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -79198,16 +79228,6 @@ }, /turf/open/floor/cult, /area/station/service/library) -"vZR" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/requests_console/directional/east{ - department = "Quartermaster's Desk"; - name = "Quartermaster's Requests Console" - }, -/obj/effect/mapping_helpers/requests_console/announcement, -/turf/open/floor/carpet/black, -/area/station/cargo/quartermaster) "vZV" = ( /obj/machinery/portable_atmospherics/canister/carbon_dioxide, /obj/effect/turf_decal/box, @@ -79583,12 +79603,6 @@ dir = 8 }, /area/station/cargo/office) -"wfQ" = ( -/obj/machinery/airalarm/directional/north, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/machinery/light_switch/directional/east, -/turf/open/floor/carpet/black, -/area/station/cargo/quartermaster) "wfU" = ( /obj/machinery/door/firedoor, /turf/open/floor/iron/stairs/right{ @@ -79918,6 +79932,18 @@ /obj/structure/fluff/beach_umbrella/syndi, /turf/open/floor/iron/white/small, /area/station/common/pool) +"wle" = ( +/obj/structure/table/wood/fancy/black, +/obj/effect/turf_decal/siding/wood, +/obj/item/stack/package_wrap{ + pixel_x = -3; + pixel_y = 8 + }, +/obj/item/hand_labeler{ + pixel_y = 3 + }, +/turf/open/floor/iron/dark/textured_large, +/area/station/cargo/quartermaster) "wlh" = ( /obj/machinery/incident_display/delam, /turf/closed/wall, @@ -80005,6 +80031,14 @@ /obj/structure/window/fulltile, /turf/open/floor/grass, /area/station/commons/fitness/recreation) +"wmE" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/generic_maintenance_landmark, +/obj/effect/landmark/start/gary, +/turf/open/floor/catwalk_floor/iron_smooth, +/area/station/maintenance/starboard/fore) "wmF" = ( /obj/structure/railing{ dir = 8 @@ -80263,14 +80297,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/catwalk_floor/iron_smooth, /area/station/maintenance/department/science/ordnance_maint) -"wqs" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet, -/obj/effect/spawner/random/maintenance/four, -/obj/effect/spawner/random/engineering/vending_restock, -/obj/item/storage/box/lights/mixed, -/turf/open/floor/iron/textured, -/area/station/maintenance/department/bridge) "wqw" = ( /obj/structure/table/reinforced, /obj/item/clipboard, @@ -80300,11 +80326,6 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron/textured_large, /area/station/cargo/lobby) -"wqS" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/effect/landmark/start/gary/rare, -/turf/open/floor/carpet/black, -/area/station/commons/dorms) "wqW" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 @@ -81175,6 +81196,16 @@ /obj/machinery/firealarm/directional/west, /turf/open/floor/iron/stairs/medium, /area/station/hallway/secondary/command) +"wBo" = ( +/obj/effect/turf_decal/siding/wood, +/obj/machinery/camera/directional/south{ + c_tag = "Cargo - Quartermaster's Office"; + name = "cargo camera" + }, +/obj/machinery/status_display/ai/directional/south, +/obj/structure/table/wood, +/turf/open/floor/iron/dark/textured_large, +/area/station/cargo/quartermaster) "wBy" = ( /obj/effect/spawner/random/entertainment/arcade, /obj/structure/sign/poster/contraband/random/directional/north, @@ -81552,6 +81583,11 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/dark/hidden, /turf/open/floor/plating, /area/station/maintenance/department/medical/central) +"wGn" = ( +/obj/item/robot_suit, +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/science/research/abandoned) "wGw" = ( /obj/machinery/holopad, /obj/effect/turf_decal/bot, @@ -81681,13 +81717,6 @@ dir = 1 }, /area/station/cargo/office) -"wJl" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/landmark/generic_maintenance_landmark, -/obj/effect/landmark/start/gary, -/turf/open/floor/iron/textured, -/area/station/maintenance/port/fore) "wJx" = ( /obj/structure/window/reinforced/spawner/directional/west{ layer = 2.9 @@ -82192,12 +82221,6 @@ dir = 1 }, /area/station/medical/medbay/lobby) -"wPg" = ( -/obj/structure/bed, -/obj/item/bedsheet/qm, -/obj/machinery/newscaster/directional/north, -/turf/open/floor/carpet/black, -/area/station/cargo/quartermaster) "wPp" = ( /obj/item/target, /obj/effect/decal/cleanable/dirt, @@ -82578,6 +82601,12 @@ /mob/living/simple_animal/bot/mulebot, /turf/open/floor/iron/textured_edge, /area/station/cargo/storage) +"wVY" = ( +/obj/machinery/airalarm/directional/north, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/machinery/light_switch/directional/east, +/turf/open/floor/carpet/black, +/area/station/cargo/quartermaster) "wWw" = ( /obj/structure/window/reinforced/spawner/directional/west, /obj/structure/chair/office{ @@ -82862,19 +82891,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/textured_large, /area/station/maintenance/disposal) -"xdK" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/layer_manifold/scrubbers/hidden, -/obj/machinery/door/airlock/maintenance_hatch{ - name = "Atmospherics Maintenance" - }, -/obj/machinery/door/poddoor/preopen{ - id = "atmoslock"; - name = "Atmospherics Lockdown Blast Door" - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, -/turf/open/floor/catwalk_floor/iron_smooth, -/area/station/maintenance/port) "xdT" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 1 @@ -82964,6 +82980,13 @@ /obj/machinery/light/directional/north, /turf/open/floor/iron/small, /area/station/hallway/secondary/exit/departure_lounge) +"xfD" = ( +/obj/effect/turf_decal/siding/wood, +/obj/item/radio/intercom/directional/south, +/obj/effect/turf_decal/bot, +/obj/machinery/light/directional/south, +/turf/open/floor/iron/dark/textured_large, +/area/station/cargo/quartermaster) "xfM" = ( /turf/open/floor/catwalk_floor/iron_smooth, /area/station/science/robotics/mechbay) @@ -84328,9 +84351,6 @@ /obj/structure/cable, /turf/open/floor/vault, /area/station/ai_monitored/turret_protected/aisat_interior) -"xxR" = ( -/turf/closed/wall, -/area/station/cargo/quartermaster) "xyf" = ( /obj/structure/disposalpipe/segment{ dir = 9 @@ -84856,6 +84876,15 @@ /obj/effect/spawner/random/trash/garbage, /turf/open/floor/plating, /area/station/maintenance/port/aft) +"xGt" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/station/cargo/quartermaster) "xGv" = ( /obj/effect/turf_decal/trimline/purple/filled/corner{ dir = 4 @@ -85952,6 +85981,16 @@ /obj/structure/cable, /turf/open/floor/iron/textured_large, /area/station/cargo/miningoffice) +"xXG" = ( +/obj/effect/mapping_helpers/airlock/unres{ + dir = 4 + }, +/obj/effect/mapping_helpers/airlock/access/any/science/maintenance, +/obj/machinery/door/airlock/maintenance{ + name = "Command Hallway Maintenance" + }, +/turf/open/floor/catwalk_floor/iron_smooth, +/area/station/maintenance/department/bridge) "xXU" = ( /obj/effect/turf_decal/stripes/line, /turf/open/floor/engine, @@ -86087,11 +86126,6 @@ dir = 8 }, /area/station/engineering/storage/tcomms) -"xZG" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/carpet/black, -/area/station/cargo/quartermaster) "xZS" = ( /obj/structure/tank_dispenser/oxygen, /obj/effect/turf_decal/bot, @@ -86159,10 +86193,6 @@ /obj/effect/turf_decal/tile/red/fourcorners, /turf/open/floor/iron/dark/textured, /area/station/security/warden) -"yaP" = ( -/obj/machinery/duct, -/turf/open/floor/catwalk_floor/iron_smooth, -/area/station/maintenance/department/bridge) "ybj" = ( /obj/effect/landmark/start/hangover, /turf/open/floor/iron/grimy, @@ -86570,15 +86600,6 @@ /obj/structure/cable, /turf/open/floor/engine, /area/station/engineering/supermatter/room) -"yfP" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/textured_large, -/area/station/cargo/quartermaster) "yfW" = ( /obj/structure/bed/double, /obj/item/bedsheet/hos/double, @@ -86769,26 +86790,13 @@ /obj/effect/turf_decal/bot, /turf/open/floor/wood/large, /area/station/commons/fitness/recreation) -"ykb" = ( -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/supply/qm, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/airlock/mining{ - name = "Mining Lobby" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ +"yjY" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/iron/textured_large, -/area/station/cargo/quartermaster) +/obj/effect/landmark/start/blueshield, +/turf/open/floor/carpet/cyan, +/area/station/command/heads_quarters/blueshield) "ykd" = ( /obj/structure/flora/grass/jungle, /obj/structure/flora/bush/grassy, @@ -106935,7 +106943,7 @@ lQt oxA ipJ dwi -csn +sDA rzh uUU jwC @@ -107186,7 +107194,7 @@ sbU xtV dUO lQt -uMv +gtJ oxA oxA oxA @@ -109714,7 +109722,7 @@ lgX gMx wKf ryt -uzO +vtA rLZ wKf lnU @@ -111725,7 +111733,7 @@ ndE uvK uRb fgh -eag +tgP efJ uRb qyR @@ -112039,7 +112047,7 @@ bow pkR iXs jmM -xdK +cBo mMw irQ pzD @@ -112474,7 +112482,7 @@ uvj uvj xmH lQf -sbI +qEh lQf nRd wjI @@ -112952,7 +112960,7 @@ veh veh sRK hrR -wJl +aSU cwH gQh veh @@ -113454,7 +113462,7 @@ ttw veh veh scI -oyB +dER fmR veh veh @@ -114788,7 +114796,7 @@ dje gDL jFt faf -bKt +tMp tJJ wjI vWf @@ -114799,7 +114807,7 @@ mhe mhe mhe xcl -wqS +hgd xir aKT aGK @@ -116435,7 +116443,7 @@ mkr qbr brI hbb -qcg +qPy brI iJi qAD @@ -116801,7 +116809,7 @@ bMb joM cmH iZr -rDO +mvl iuB cmH wxS @@ -116814,9 +116822,9 @@ aEF hER hZN rDu -uKR -bGH -uKR +aIL +xXG +aIL bFO bFO bFO @@ -117071,9 +117079,9 @@ aEF mav xjX sXX -uKR -kJs -wqs +aIL +jjg +ijg vBP dwE gIr @@ -117328,9 +117336,9 @@ uIR srd kuc gMY -uKR -yaP -yaP +aIL +for +for pAw nKV utT @@ -117575,7 +117583,7 @@ uvW uvW wEB kAm -ilT +yjY pGk cmH nVQ @@ -117585,9 +117593,9 @@ xLF tPD xjX kYC -uKR -yaP -sKz +aIL +for +frk vBP mVv exy @@ -117830,8 +117838,8 @@ tuF cmH vEu ohi -imV -uNm +kPk +jor imV uaz cmH @@ -117842,9 +117850,9 @@ xLF tPD rcY qBT -uKR -yaP -sPy +aIL +for +ozs vBP nyh vBI @@ -118099,9 +118107,9 @@ xLF tPD xjX jKG -uKR -yaP -ebE +aIL +for +irl vBP jYI eKU @@ -118344,7 +118352,7 @@ doJ cmH gTg cmH -eUl +bvz cmH cmH cmH @@ -118356,9 +118364,9 @@ aEF xwb xjX sxs -uKR -czm -uKR +aIL +aQv +aIL vBP vBP vBP @@ -118859,7 +118867,7 @@ azd oSL cmH iYy -sCm +jEm pCy cmH skL @@ -119116,7 +119124,7 @@ eip lAb cmH cmH -eFd +gqG cmH cmH agB @@ -123336,7 +123344,7 @@ eYK xud syE syE -pUd +hpU syE syE bTo @@ -123850,7 +123858,7 @@ jEb xud tHN uAc -hko +qMN qDp mhK hYq @@ -124326,7 +124334,7 @@ uuO sSJ mOm oBK -bsd +hdq efP jjw bPq @@ -124866,7 +124874,7 @@ eWh eWh eWh eWh -ncD +jKa aCq lRS oNR @@ -125890,12 +125898,12 @@ xud mdf gZX xVS -vnJ -vnJ -vnJ -vnJ -vnJ -vnJ +nAt +nAt +nAt +nAt +nAt +nAt nAD vwJ wKg @@ -126044,7 +126052,7 @@ ttw ttw xHb vTF -bif +wmE ioM piC ioM @@ -126145,14 +126153,14 @@ ryo vrJ xud mdf -vnJ -vnJ -vnJ -bLR -bii -siF -rJq -vnJ +nAt +nAt +nAt +tqz +dTZ +qTs +gYc +nAt nYU lWY uXx @@ -126402,14 +126410,14 @@ ryo ryo xud cYz -vnJ -jka -nss -acl -moT -iUP -ccH -mjo +nAt +dLA +jwQ +eSq +kvN +sun +pSO +hXd uRm pNh nMh @@ -126659,14 +126667,14 @@ ryo ryo xud cYz -vnJ -dKP -vZG -acl -bWx -kGT -nPP -vnJ +nAt +qHw +cPV +eSq +qnt +cgC +wBo +nAt urc lWY jKT @@ -126916,14 +126924,14 @@ ryo ryo xud cYz -vnJ -wfQ -xZG -vZR -yfP -dFH -pFP -vnJ +nAt +wVY +eOK +ohQ +htk +xGt +xfD +nAt nSV rJf jsz @@ -127173,14 +127181,14 @@ ryo ryo xud dOV -vnJ -xxR -cix -xxR -tAu -fbe -gKg -vnJ +nAt +out +mZJ +out +vjU +ftw +wle +nAt nWh vFv tqu @@ -127430,14 +127438,14 @@ xud xud xud sKs -vnJ -feb -atd -xxR -xxR -sLG -nui -vnJ +nAt +unj +fLb +out +out +nNa +ivM +nAt mCf dtq qxI @@ -127598,7 +127606,7 @@ vwi taf eju dJK -loI +iTX dZd eju taf @@ -127687,14 +127695,14 @@ pMm iGa rWS mdf -vnJ -iLc -rEG -puB -vnJ -ykb -qro -vnJ +nAt +inx +vkv +gST +nAt +ltz +vrK +nAt pqh vCX hTD @@ -127944,11 +127952,11 @@ bOJ iGa rWS mdf -vnJ -wPg -cRE -oKy -sXU +nAt +iyd +itx +bFr +aLA tPA tMq bzZ @@ -128201,11 +128209,11 @@ bOJ oSD oSD cYz -vnJ -vnJ -vnJ -vnJ -vnJ +nAt +nAt +nAt +nAt +nAt bNm oQF qNj @@ -128254,7 +128262,7 @@ ish aVb yiU dJY -bNz +mEw oGI dSV nrb @@ -129032,7 +129040,7 @@ nrb eeF sak xag -aqf +dom bWt sak kFh @@ -129192,7 +129200,7 @@ ePH vNJ vwe xjd -nuW +dwb elo aez vVF @@ -129555,7 +129563,7 @@ jrP unI vWy ehk -sVZ +jbo opW ghP dvO @@ -130053,14 +130061,14 @@ iay dBC kLl kLl -mvn +wGn mPs dNh kLl cQb iay dzC -jyw +iXX uVV xRx wIM @@ -134314,7 +134322,7 @@ kHq exx oKn iXB -iMg +aLy mBM cSZ sKy @@ -135067,7 +135075,7 @@ dKK xbD fkx wpp -qkQ +bdS jDe qhJ dFp diff --git a/_maps/map_files/debug/runtimestation.dmm b/_maps/map_files/debug/runtimestation.dmm index b84faf05a59c..0126a707f6de 100644 --- a/_maps/map_files/debug/runtimestation.dmm +++ b/_maps/map_files/debug/runtimestation.dmm @@ -1734,16 +1734,16 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/science) +"hg" = ( +/obj/structure/tank_dispenser{ + pixel_x = -1 + }, +/turf/open/floor/iron, +/area/station/hallway/secondary/exit/departure_lounge) "hr" = ( /obj/machinery/electroplater, /turf/open/floor/iron, /area/station/commons/storage/primary) -"hA" = ( -/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ - dir = 5 - }, -/turf/open/floor/plating, -/area/station/construction) "hD" = ( /obj/structure/closet/secure_closet/chemical/heisenberg{ locked = 0 @@ -1751,8 +1751,9 @@ /turf/open/floor/iron, /area/station/medical/chemistry) "hJ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold/cyan/visible{ - dir = 1 +/obj/machinery/conveyor{ + dir = 4; + id = "debug" }, /turf/open/floor/plating, /area/station/construction) @@ -1783,9 +1784,7 @@ /turf/open/floor/plating, /area/station/engineering/atmos) "jF" = ( -/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ - dir = 6 - }, +/obj/machinery/bouldertech/crusher, /turf/open/floor/plating, /area/station/construction) "jU" = ( @@ -1928,9 +1927,6 @@ dir = 4 }, /obj/machinery/light/directional/west, -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ - dir = 5 - }, /turf/open/floor/iron, /area/station/construction) "oV" = ( @@ -1944,8 +1940,7 @@ /turf/closed/wall/r_wall, /area/station/bitrunning/den) "pt" = ( -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible, -/obj/machinery/meter/monitored/distro_loop, +/obj/item/construction/plumbing, /turf/open/floor/plating, /area/station/construction) "pv" = ( @@ -1962,7 +1957,7 @@ }, /obj/machinery/camera/autoname/directional/west, /obj/machinery/light/directional/west, -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible, +/obj/structure/test_boulder_spawner, /turf/open/floor/iron, /area/station/construction) "pI" = ( @@ -1976,6 +1971,9 @@ /obj/machinery/door/airlock, /turf/open/floor/plating, /area/station/engineering/atmos) +"qn" = ( +/turf/open/space/basic, +/area/shipbreak) "qF" = ( /obj/machinery/airalarm/directional/north, /obj/effect/mapping_helpers/airalarm/unlocked, @@ -1995,7 +1993,9 @@ /turf/open/floor/iron, /area/station/hallway/secondary/entry) "rr" = ( -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible, +/obj/machinery/conveyor_switch/oneway{ + id = "debug" + }, /turf/open/floor/plating, /area/station/construction) "rK" = ( @@ -2010,7 +2010,7 @@ /turf/open/floor/iron, /area/station/hallway/primary/central) "rU" = ( -/obj/machinery/atmospherics/components/binary/circulator, +/obj/item/stack/ducts/fifty, /turf/open/floor/plating, /area/station/construction) "rZ" = ( @@ -2065,7 +2065,10 @@ /turf/open/floor/iron/dark, /area/station/science/explab) "tY" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on, +/obj/machinery/conveyor{ + dir = 6; + id = "debug" + }, /turf/open/floor/plating, /area/station/construction) "uf" = ( @@ -2082,10 +2085,6 @@ }, /turf/open/floor/iron, /area/station/cargo/miningoffice) -"uo" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/heater/on, -/turf/open/floor/plating, -/area/station/construction) "ut" = ( /obj/structure/closet/secure_closet/atmospherics{ locked = 0 @@ -2115,8 +2114,10 @@ /turf/open/floor/iron/dark, /area/station/science/explab) "vh" = ( -/obj/machinery/power/thermoelectric_generator, -/obj/structure/cable, +/obj/machinery/conveyor{ + dir = 1; + id = "debug" + }, /turf/open/floor/plating, /area/station/construction) "vm" = ( @@ -2169,16 +2170,14 @@ /turf/open/floor/iron, /area/station/bitrunning/den) "yx" = ( -/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ - dir = 4 +/obj/machinery/conveyor{ + dir = 8; + id = "debug" }, /turf/open/floor/plating, /area/station/construction) "yy" = ( -/obj/machinery/atmospherics/components/unary/portables_connector{ - dir = 1 - }, -/obj/machinery/portable_atmospherics/canister/plasma, +/obj/machinery/big_manipulator, /turf/open/floor/plating, /area/station/construction) "yA" = ( @@ -2193,15 +2192,6 @@ /obj/machinery/light/directional/north, /turf/open/floor/iron, /area/station/hallway/secondary/entry) -"yJ" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ - dir = 6 - }, -/turf/open/floor/iron, -/area/station/construction) "yK" = ( /obj/structure/fans/tiny/invisible, /obj/effect/turf_decal/stripes/line{ @@ -2215,7 +2205,10 @@ /turf/open/floor/plating/airless, /area/space/nearstation) "yT" = ( -/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible, +/obj/machinery/conveyor{ + dir = 2; + id = "debug" + }, /turf/open/floor/plating, /area/station/construction) "zo" = ( @@ -2224,11 +2217,9 @@ /turf/open/floor/iron, /area/station/engineering/atmos) "Aa" = ( -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/construction) +/obj/machinery/big_manipulator, +/turf/open/floor/iron, +/area/station/commons/storage/primary) "AP" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{ dir = 8 @@ -2236,11 +2227,8 @@ /turf/open/floor/iron, /area/station/science) "AR" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible, -/turf/open/floor/iron, +/obj/machinery/bouldertech/refinery/smelter, +/turf/open/floor/plating, /area/station/construction) "AY" = ( /obj/effect/landmark/start/assistant, @@ -2275,6 +2263,12 @@ /obj/item/gun/ballistic/automatic/pistol, /turf/open/floor/iron, /area/station/command/bridge) +"BK" = ( +/obj/machinery/computer/shipbreaker{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/hallway/secondary/exit/departure_lounge) "BW" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/camera/directional/north, @@ -2282,7 +2276,10 @@ /turf/open/floor/iron, /area/station/construction) "Cc" = ( -/obj/item/wrench, +/obj/machinery/conveyor{ + dir = 9; + id = "debug" + }, /turf/open/floor/plating, /area/station/construction) "Ce" = ( @@ -2320,8 +2317,7 @@ /turf/open/floor/iron, /area/station/bitrunning/den) "DL" = ( -/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible, -/obj/machinery/meter/monitored/distro_loop, +/obj/machinery/bouldertech/crystalizer, /turf/open/floor/plating, /area/station/construction) "DW" = ( @@ -2362,7 +2358,10 @@ /turf/open/floor/iron, /area/station/command/bridge) "EN" = ( -/obj/structure/cable, +/obj/machinery/conveyor{ + dir = 5; + id = "debug" + }, /turf/open/floor/plating, /area/station/construction) "ES" = ( @@ -2379,12 +2378,6 @@ }, /turf/open/floor/iron, /area/station/medical/chemistry) -"Fi" = ( -/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ - dir = 10 - }, -/turf/open/floor/plating, -/area/station/construction) "GB" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -2410,7 +2403,7 @@ /turf/open/floor/plating, /area/station/commons/storage/primary) "Hr" = ( -/obj/machinery/atmospherics/pipe/smart/manifold/cyan/visible, +/obj/machinery/bouldertech/chemical_injector, /turf/open/floor/plating, /area/station/construction) "Id" = ( @@ -2443,9 +2436,7 @@ /turf/open/floor/iron, /area/station/cargo/miningoffice) "Jn" = ( -/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/visible{ - dir = 1 - }, +/obj/machinery/bouldertech/purification_chamber, /turf/open/floor/plating, /area/station/construction) "Jp" = ( @@ -2467,17 +2458,16 @@ /turf/open/floor/plating, /area/station/engineering/atmos) "Li" = ( -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ - dir = 9 - }, +/obj/machinery/bouldertech/enricher, /turf/open/floor/plating, /area/station/construction) "Lq" = ( /turf/open/floor/circuit/green, /area/station/bitrunning/den) "Lx" = ( -/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ - dir = 9 +/obj/machinery/conveyor{ + dir = 10; + id = "debug" }, /turf/open/floor/plating, /area/station/construction) @@ -2493,14 +2483,6 @@ /obj/machinery/door/airlock/research, /turf/open/floor/iron/dark, /area/station/science/explab) -"LL" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/light_switch/directional/west, -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible, -/turf/open/floor/iron, -/area/station/construction) "LW" = ( /obj/effect/turf_decal/stripes/line, /turf/open/floor/iron, @@ -2509,6 +2491,12 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/primary/central) +"Mu" = ( +/obj/machinery/door/airlock/external/ruin{ + name = "Departure Lounge Airlock" + }, +/turf/open/floor/iron, +/area/station/hallway/secondary/exit/departure_lounge) "ME" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -2542,14 +2530,13 @@ /turf/open/floor/iron, /area/station/science) "Ob" = ( -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ - dir = 10 - }, +/obj/machinery/bouldertech/chemical_washer, /turf/open/floor/plating, /area/station/construction) "Oc" = ( -/obj/machinery/atmospherics/components/binary/volume_pump{ - dir = 4 +/obj/machinery/conveyor/inverted{ + dir = 5; + id = "debug" }, /turf/open/floor/plating, /area/station/construction) @@ -2605,7 +2592,7 @@ /turf/open/floor/iron, /area/station/hallway/secondary/entry) "Rx" = ( -/obj/machinery/atmospherics/components/binary/circulator/cold, +/obj/item/wrench/abductor, /turf/open/floor/plating, /area/station/construction) "RM" = ( @@ -2619,7 +2606,7 @@ /turf/open/floor/iron, /area/station/bitrunning/den) "Sd" = ( -/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/visible, +/obj/machinery/bouldertech/dissolution_chamber, /turf/open/floor/plating, /area/station/construction) "Sj" = ( @@ -2733,6 +2720,10 @@ }, /turf/open/floor/iron, /area/station/medical/chemistry) +"Xi" = ( +/obj/machinery/suit_storage_unit/ce, +/turf/open/floor/iron, +/area/station/hallway/secondary/exit/departure_lounge) "Xp" = ( /obj/machinery/light/directional/south, /obj/structure/tank_dispenser{ @@ -2745,10 +2736,7 @@ /turf/open/floor/iron, /area/station/science) "XE" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 1; - name = "Port to Filter" - }, +/obj/machinery/light/floor/has_bulb, /turf/open/floor/plating, /area/station/construction) "XN" = ( @@ -6160,11 +6148,11 @@ bE cN UK dm -yJ -LL +dy +ii pD -AR -AR +dy +dy oK ii dy @@ -6251,16 +6239,16 @@ ES rL cP cX -uo -Sd dn +Sd +yy dn dn dn Oc -dn -dn -dn +yT +yT +yT dL sr nn @@ -6343,16 +6331,16 @@ bE Mh TV EA -uo -Sd dn +Sd +yy dn dn dn -Jn +yx XE yy -dn +yy dL cN lQ @@ -6435,16 +6423,16 @@ bE bE ef EA -uo -Sd dn dn dn dn -Aa -dn dn +Rx +yx dn +Jn +Jn dL tE ZP @@ -6529,11 +6517,11 @@ cN BW dn Ob -pt +dn rU pt rr -Li +yx dn dn dn @@ -6620,15 +6608,15 @@ bE cN EA EN -EN -EN vh -dn +vh +vh +vh Cc -dn -dn -dn -dn +yx +XE +yy +yy dL cN fI @@ -6711,16 +6699,16 @@ lX bE cN cY -dn -jF +hJ DL -Rx DL -yT -hA -dn -dn +DL +DL +yx +yx dn +jF +jF dZ cN Tt @@ -6804,11 +6792,11 @@ bE cN cY tY -Hr -dn -dn -dn -dn +yT +yT +yT +yT +Lx yx dn dn @@ -6895,16 +6883,16 @@ bE bE cN cY -tY -Hr dn -dn -dn -dn -hJ +yy +yy +yy +yy +yy +yx XE yy -dn +yy dL cN Tt @@ -6987,16 +6975,16 @@ bE bE ef cY -tY -Hr -dn -dn -dn -dn -Oc -dn dn +Hr +Hr +Hr +Hr +Hr +yx dn +Li +Li dL cN Tt @@ -7080,15 +7068,15 @@ bE ef cY dn -Fi +yT yT yT yT yT Lx dn -dn -dn +AR +AR dL cN Tt @@ -7638,7 +7626,7 @@ dJ dI dJ dJ -dJ +Aa dJ dJ ny @@ -7729,9 +7717,9 @@ hr oE dI dJ +Aa dJ -dJ -dJ +Aa dJ dO cS @@ -7822,7 +7810,7 @@ dJ dI dJ dJ -dJ +Aa dJ dJ jU @@ -8932,7 +8920,9 @@ fh fh et ga -ga +fO +fO +fO ga ga ga @@ -8977,8 +8967,6 @@ aa aa aa aa -aa -aa "} (68,1,1) = {" aa @@ -9023,13 +9011,13 @@ ew aa aa aa -aa -aa -aa -aa -aa -aa -aa +ga +fO +fO +fO +Mu +fO +ga aa aa aa @@ -9115,13 +9103,13 @@ fh aa aa aa -aa -aa -aa -aa -aa -aa -aa +ga +hg +fO +fO +ga +fO +ga aa aa aa @@ -9207,13 +9195,13 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa +ga +Xi +BK +fO +ga +fO +ga aa aa aa @@ -9299,13 +9287,13 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa +ga +ga +gf +gf +ga +Mu +ga aa aa aa @@ -9574,25 +9562,25 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn aa aa aa @@ -9666,25 +9654,25 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn aa aa aa @@ -9758,25 +9746,25 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn aa aa aa @@ -9850,25 +9838,25 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn aa aa aa @@ -9942,25 +9930,25 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn aa aa aa @@ -10034,25 +10022,25 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn aa aa aa @@ -10126,25 +10114,25 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn aa aa aa @@ -10218,25 +10206,25 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn aa aa aa @@ -10310,25 +10298,25 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn aa aa aa @@ -10402,25 +10390,25 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn aa aa aa @@ -10494,25 +10482,25 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn aa aa aa diff --git a/_maps/map_files/tramstation/tramstation.dmm b/_maps/map_files/tramstation/tramstation.dmm index 3a6be6c7ac17..285de81e4303 100644 --- a/_maps/map_files/tramstation/tramstation.dmm +++ b/_maps/map_files/tramstation/tramstation.dmm @@ -1743,6 +1743,11 @@ }, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/aisat_interior) +"afJ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/gary, +/turf/open/floor/iron/smooth, +/area/station/maintenance/central/greater) "afN" = ( /obj/structure/lattice/catwalk, /obj/structure/cable, @@ -5500,13 +5505,6 @@ /obj/machinery/duct, /turf/open/floor/iron/white, /area/station/medical/treatment_center) -"aLG" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 9 - }, -/obj/machinery/computer/records/pathology, -/turf/open/floor/iron/white, -/area/station/medical/storage) "aLH" = ( /obj/effect/turf_decal/loading_area/white{ dir = 1 @@ -6556,11 +6554,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/engineering/atmos/pumproom) -"aVx" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/start/gary, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/starboard/central) "aVD" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/trimline/neutral/filled/line, @@ -6623,12 +6616,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, /area/station/commons/fitness) -"aXq" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/generic_maintenance_landmark, -/obj/effect/landmark/start/gary, -/turf/open/floor/iron/smooth, -/area/station/maintenance/department/crew_quarters/dorms) "aXu" = ( /obj/effect/turf_decal/caution/stand_clear/red{ dir = 4 @@ -6961,11 +6948,6 @@ /obj/machinery/power/apc/auto_name/directional/south, /turf/open/floor/catwalk_floor, /area/station/maintenance/port/aft) -"beN" = ( -/obj/effect/landmark/start/assistant, -/obj/effect/landmark/start/gary/rare, -/turf/open/floor/wood/parquet, -/area/station/service/library) "beP" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -7160,6 +7142,11 @@ /obj/item/radio/off, /turf/open/floor/iron/smooth, /area/station/maintenance/starboard/lesser) +"bhR" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/gary, +/turf/open/floor/iron/smooth, +/area/station/maintenance/department/crew_quarters/dorms) "bia" = ( /obj/machinery/light/directional/east, /obj/machinery/modular_computer/preset/engineering{ @@ -7501,12 +7488,6 @@ dir = 1 }, /area/station/hallway/secondary/service) -"box" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/event_spawn, -/obj/effect/landmark/start/gary, -/turf/open/floor/iron/smooth, -/area/station/maintenance/department/medical) "boJ" = ( /obj/item/pickaxe, /turf/open/misc/asteroid/airless, @@ -8659,11 +8640,6 @@ }, /turf/open/floor/iron/white, /area/station/science/lower) -"bGG" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/start/gary, -/turf/open/floor/iron/smooth, -/area/station/maintenance/port/aft) "bGI" = ( /obj/structure/chair/comfy/beige{ dir = 1 @@ -9053,6 +9029,11 @@ /obj/machinery/bluespace_beacon, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/aisat/foyer) +"bML" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/effect/landmark/start/blueshield, +/turf/open/floor/carpet/neon/simple/blue/nodots, +/area/station/command/heads_quarters/blueshield) "bMX" = ( /obj/effect/turf_decal/trimline/brown/filled/corner{ dir = 1 @@ -9930,15 +9911,6 @@ /obj/machinery/door/airlock/public/glass, /turf/open/floor/iron/smooth, /area/station/hallway/primary/tram/right) -"cav" = ( -/obj/effect/turf_decal/siding/wood/corner{ - dir = 4 - }, -/obj/effect/spawner/random/engineering/tracking_beacon, -/obj/structure/cable, -/obj/effect/landmark/start/gary/uncommon, -/turf/open/floor/wood, -/area/station/commons/vacant_room/office) "cay" = ( /obj/machinery/computer/security{ dir = 1 @@ -11854,14 +11826,6 @@ /obj/machinery/seed_extractor, /turf/open/floor/iron/dark, /area/station/security/prison/garden) -"cFZ" = ( -/obj/structure/table/wood, -/obj/machinery/firealarm/directional/north, -/obj/item/book/bible, -/turf/open/floor/iron/chapel{ - dir = 9 - }, -/area/station/service/chapel) "cGc" = ( /obj/structure/cable, /turf/open/floor/iron, @@ -12442,13 +12406,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/station/security/office) -"cQN" = ( -/obj/machinery/door/airlock/corporate{ - name = "Blueshield's Quarters" - }, -/obj/effect/mapping_helpers/airlock/access/all/command/captain, -/turf/open/floor/carpet/neon/simple/blue/nodots, -/area/station/command/heads_quarters/blueshield) "cQQ" = ( /obj/structure/cable, /turf/open/floor/plating, @@ -12582,9 +12539,6 @@ }, /turf/open/floor/iron/smooth, /area/station/maintenance/central/lesser) -"cTK" = ( -/turf/open/floor/carpet/executive, -/area/station/command/heads_quarters/blueshield) "cTM" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 8 @@ -12853,15 +12807,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/tram/center) -"cYx" = ( -/obj/structure/chair{ - dir = 8 - }, -/obj/effect/landmark/event_spawn, -/obj/structure/cable, -/obj/effect/landmark/start/gary/rare, -/turf/open/floor/iron/dark, -/area/station/commons/fitness/recreation/entertainment) "cYA" = ( /obj/docking_port/stationary{ dheight = 4; @@ -17498,6 +17443,11 @@ }, /turf/open/floor/iron/white, /area/station/science/ordnance) +"evs" = ( +/obj/effect/landmark/start/assistant, +/obj/effect/landmark/start/gary/rare, +/turf/open/floor/wood/parquet, +/area/station/service/library) "evu" = ( /obj/effect/turf_decal/trimline/neutral/filled/line{ dir = 8 @@ -18416,6 +18366,11 @@ "eNx" = ( /turf/open/floor/iron/grimy, /area/station/service/library/lounge) +"eNy" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/gary, +/turf/open/floor/catwalk_floor, +/area/station/maintenance/starboard/central) "eNH" = ( /obj/effect/turf_decal/trimline/green/filled/line{ dir = 4 @@ -19206,6 +19161,10 @@ /obj/structure/closet/cardboard, /turf/open/floor/plating, /area/station/maintenance/starboard/lesser) +"eZD" = ( +/obj/effect/landmark/start/gary/rare, +/turf/open/floor/iron/grimy, +/area/station/service/library/lounge) "eZS" = ( /obj/machinery/door/airlock/grunge{ name = "Entertainment Center" @@ -20182,10 +20141,6 @@ }, /turf/open/floor/plating, /area/station/cargo/sorting) -"fqe" = ( -/obj/effect/landmark/start/gary/rare, -/turf/open/floor/iron/grimy, -/area/station/service/library/lounge) "fqn" = ( /obj/effect/turf_decal/trimline/red/filled/corner{ dir = 1 @@ -20234,6 +20189,11 @@ /obj/structure/industrial_lift/public, /turf/open/floor/plating/elevatorshaft, /area/station/hallway/secondary/service) +"frQ" = ( +/obj/structure/flora/bush/flowers_yw/style_random, +/obj/effect/landmark/start/gary/uncommon, +/turf/open/floor/grass, +/area/station/asteroid) "frT" = ( /obj/machinery/atmospherics/pipe/layer_manifold/supply/hidden, /turf/closed/wall/r_wall, @@ -21841,6 +21801,14 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/construction/engineering) +"fRR" = ( +/obj/structure/table/wood, +/obj/machinery/firealarm/directional/north, +/obj/item/book/bible, +/turf/open/floor/iron/chapel{ + dir = 9 + }, +/area/station/service/chapel) "fRW" = ( /obj/effect/turf_decal/trimline/neutral/filled/line{ dir = 5 @@ -22453,10 +22421,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/hallway/secondary/entry) -"gfj" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/carpet/neon/simple/blue/nodots, -/area/station/command/heads_quarters/blueshield) "gfu" = ( /obj/effect/turf_decal/siding/thinplating_new{ dir = 4 @@ -22466,6 +22430,10 @@ }, /turf/open/floor/iron, /area/station/science/lower) +"gfH" = ( +/obj/effect/landmark/start/blueshield, +/turf/open/floor/carpet/executive, +/area/station/command/heads_quarters/blueshield) "gfK" = ( /turf/closed/wall/r_wall, /area/station/security/execution/education) @@ -24305,11 +24273,6 @@ dir = 4 }, /area/station/command/teleporter) -"gKm" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/start/gary, -/turf/open/floor/iron/smooth, -/area/station/maintenance/port/central) "gKr" = ( /obj/effect/turf_decal/siding/thinplating, /obj/structure/cable, @@ -25053,6 +25016,22 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/medical/break_room) +"gWb" = ( +/obj/structure/rack, +/obj/structure/window/spawner/directional/east, +/obj/item/book/bible{ + pixel_x = -4; + pixel_y = -4 + }, +/obj/item/book/bible, +/obj/item/book/bible{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/structure/window/spawner/directional/south, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/smooth, +/area/station/maintenance/department/crew_quarters/dorms) "gWc" = ( /mob/living/carbon/human/species/monkey, /turf/open/misc/grass/jungle, @@ -26162,6 +26141,12 @@ }, /turf/open/floor/iron/dark, /area/station/science/lower) +"hqL" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/event_spawn, +/obj/effect/landmark/start/gary, +/turf/open/floor/iron/smooth, +/area/station/maintenance/department/medical) "hqN" = ( /obj/structure/weightmachine/weightlifter, /obj/effect/turf_decal/tile/neutral/fourcorners, @@ -27900,6 +27885,11 @@ /obj/structure/cable/layer1, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/aisat/hallway) +"hVC" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/gary, +/turf/open/floor/iron/smooth, +/area/station/maintenance/port/central) "hVD" = ( /obj/machinery/computer/teleporter{ dir = 1 @@ -30306,11 +30296,6 @@ /obj/effect/landmark/navigate_destination/tram/bankofcargo, /turf/open/floor/iron/dark, /area/station/cargo/miningdock/oresilo) -"iIT" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/start/gary, -/turf/open/floor/iron/smooth, -/area/station/maintenance/starboard/central) "iJd" = ( /obj/effect/turf_decal/trimline/neutral/filled/corner{ dir = 4 @@ -31049,6 +31034,21 @@ /obj/structure/cable, /turf/open/floor/iron/dark/textured, /area/station/engineering/main) +"iUf" = ( +/obj/machinery/door/airlock/grunge{ + name = "Morgue" + }, +/obj/machinery/door/firedoor, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/airlock/access/any/medical/general, +/obj/effect/mapping_helpers/airlock/access/any/medical/morgue, +/turf/open/floor/iron/dark, +/area/station/medical/morgue) "iUh" = ( /turf/closed/wall, /area/station/security/warden) @@ -31239,11 +31239,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/commons/fitness/recreation) -"iWn" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/start/gary, -/turf/open/floor/iron, -/area/station/maintenance/starboard/central) "iWz" = ( /obj/machinery/door/airlock/external/glass{ name = "Supply Door Airlock" @@ -37995,11 +37990,6 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) -"lau" = ( -/obj/item/book/bible, -/obj/structure/altar_of_gods, -/turf/open/floor/iron/dark, -/area/station/service/chapel) "lav" = ( /obj/machinery/holopad, /obj/effect/turf_decal/trimline/neutral/corner{ @@ -38322,6 +38312,11 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/catwalk_floor, /area/station/maintenance/tram/mid) +"lfe" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/landmark/start/gary, +/turf/open/floor/iron/dark, +/area/station/commons/vacant_room/commissary) "lfq" = ( /obj/effect/turf_decal/trimline/white/warning{ dir = 4 @@ -40874,6 +40869,15 @@ /obj/item/pen, /turf/open/floor/iron, /area/station/security/checkpoint/supply) +"lXC" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 1 + }, +/obj/machinery/airalarm/directional/north, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/computer/records/pathology, +/turf/open/floor/iron/dark, +/area/station/medical/pathology) "lXH" = ( /obj/machinery/atmospherics/pipe/smart/manifold/yellow/visible{ dir = 1 @@ -41134,11 +41138,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/showroomfloor, /area/station/security/warden) -"mcb" = ( -/obj/structure/flora/bush/flowers_yw/style_random, -/obj/effect/landmark/start/gary/uncommon, -/turf/open/floor/grass, -/area/station/asteroid) "mcf" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, @@ -41308,6 +41307,12 @@ /obj/item/queen_bee/bought, /turf/open/floor/iron/dark, /area/station/service/hydroponics) +"met" = ( +/obj/structure/chair/stool/bar/directional/east, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/gary, +/turf/open/floor/iron/smooth, +/area/station/maintenance/starboard/greater) "meu" = ( /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 8 @@ -43403,6 +43408,12 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/service/hydroponics/garden) +"mNI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/generic_maintenance_landmark, +/obj/effect/landmark/start/gary, +/turf/open/floor/iron/smooth, +/area/station/maintenance/department/crew_quarters/dorms) "mNN" = ( /obj/structure/chair/comfy/brown{ dir = 1 @@ -43551,6 +43562,13 @@ /obj/effect/spawner/random/engineering/canister, /turf/open/floor/plating, /area/station/maintenance/port/aft) +"mPr" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 9 + }, +/obj/machinery/computer/records/pathology, +/turf/open/floor/iron/white, +/area/station/medical/storage) "mPA" = ( /obj/structure/cable, /obj/effect/turf_decal/sand/plating, @@ -44236,17 +44254,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/dark, /area/station/security/courtroom) -"ncX" = ( -/obj/machinery/door/airlock/corporate{ - id_tag = "BSdoor"; - name = "Blueshield's Office" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/access/all/command/captain, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/carpet/neon/simple/blue/nodots, -/area/station/command/heads_quarters/blueshield) "ndb" = ( /turf/open/floor/engine{ name = "Holodeck Projector Floor" @@ -45055,6 +45062,31 @@ /obj/machinery/cassette/adv_cassette_deck, /turf/open/floor/wood/large, /area/station/service/library) +"noG" = ( +/obj/machinery/button/door/directional/east{ + id = "armory"; + name = "Armory Shutters"; + req_access = list("armory") + }, +/obj/machinery/status_display/ai/directional/north, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/structure/rack, +/obj/item/ammo_box/magazine/m35, +/obj/item/ammo_box/magazine/m35, +/obj/item/ammo_box/magazine/m35, +/obj/item/ammo_box/magazine/m35, +/obj/item/ammo_box/magazine/m35, +/obj/item/ammo_box/magazine/m35, +/obj/item/ammo_box/magazine/m35, +/obj/item/ammo_box/magazine/m35, +/obj/item/ammo_box/magazine/m35, +/obj/item/ammo_box/magazine/m35, +/obj/item/gun/ballistic/automatic/pistol/paco/no_mag, +/obj/item/gun/ballistic/automatic/pistol/paco/no_mag{ + pixel_y = 6 + }, +/turf/open/floor/iron/dark, +/area/station/ai_monitored/security/armory) "noI" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 1 @@ -45248,22 +45280,6 @@ }, /turf/open/floor/iron/white, /area/station/science/lower) -"nrt" = ( -/obj/structure/rack, -/obj/structure/window/spawner/directional/east, -/obj/item/book/bible{ - pixel_x = -4; - pixel_y = -4 - }, -/obj/item/book/bible, -/obj/item/book/bible{ - pixel_x = 4; - pixel_y = 4 - }, -/obj/structure/window/spawner/directional/south, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/smooth, -/area/station/maintenance/department/crew_quarters/dorms) "nrM" = ( /obj/machinery/door/airlock/mining/glass{ name = "Cargo Office" @@ -46446,6 +46462,11 @@ /obj/structure/sign/directions/ptl/directional/west, /turf/open/floor/iron, /area/station/engineering/main) +"nMn" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/gary, +/turf/open/floor/iron/smooth, +/area/station/maintenance/central/lesser) "nMr" = ( /obj/effect/turf_decal/trimline/dark_red/warning{ dir = 10 @@ -47745,6 +47766,15 @@ }, /turf/open/floor/iron/dark/textured, /area/station/engineering/main) +"oht" = ( +/obj/structure/chair{ + dir = 8 + }, +/obj/effect/landmark/event_spawn, +/obj/structure/cable, +/obj/effect/landmark/start/gary/rare, +/turf/open/floor/iron/dark, +/area/station/commons/fitness/recreation/entertainment) "ohw" = ( /obj/structure/flora/bush/flowers_pp, /obj/structure/chair/sofa/bench/right{ @@ -48980,6 +49010,11 @@ /obj/effect/spawner/random/trash/food_packaging, /turf/open/floor/catwalk_floor, /area/station/maintenance/starboard/central) +"oDc" = ( +/obj/item/book/bible, +/obj/structure/altar_of_gods, +/turf/open/floor/iron/dark, +/area/station/service/chapel) "oDd" = ( /obj/effect/turf_decal/siding/white{ dir = 1 @@ -51519,6 +51554,12 @@ /obj/machinery/light/small/directional/south, /turf/open/floor/engine/air, /area/station/engineering/atmos) +"pww" = ( +/obj/structure/table/wood, +/obj/machinery/light/dim/directional/north, +/obj/item/book/bible, +/turf/open/floor/carpet, +/area/station/service/chapel/monastery) "pwx" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 1 @@ -51652,13 +51693,6 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/command) -"pys" = ( -/obj/machinery/plumbing/ooze_sucker{ - mapping_id = "6" - }, -/obj/machinery/light/floor/has_bulb, -/turf/open/floor/engine, -/area/station/science/xenobiology) "pyu" = ( /obj/effect/turf_decal/siding/thinplating/corner{ dir = 1 @@ -52157,6 +52191,11 @@ }, /turf/open/space/openspace, /area/space) +"pEE" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/gary, +/turf/open/floor/iron/smooth, +/area/station/maintenance/starboard/central) "pEL" = ( /obj/machinery/atmospherics/pipe/bridge_pipe/dark/visible{ dir = 8 @@ -52803,11 +52842,6 @@ /obj/structure/spider/passage, /turf/open/floor/iron/smooth, /area/station/maintenance/starboard/lesser) -"pNr" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/start/gary, -/turf/open/floor/iron/smooth, -/area/station/maintenance/central/greater) "pNz" = ( /obj/effect/landmark/navigate_destination/chapel, /turf/open/floor/carpet, @@ -54244,6 +54278,11 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/security/brig) +"qml" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/gary, +/turf/open/floor/iron/smooth, +/area/station/maintenance/port/aft) "qmp" = ( /obj/machinery/light/small/directional/east, /turf/open/floor/engine/n2o, @@ -54349,6 +54388,13 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/science/robotics/mechbay) +"qoq" = ( +/obj/machinery/door/airlock/corporate{ + name = "Blueshield's Quarters" + }, +/obj/effect/mapping_helpers/airlock/access/all/admin/general, +/turf/open/floor/carpet/neon/simple/blue/nodots, +/area/station/command/heads_quarters/blueshield) "qos" = ( /obj/machinery/exodrone_launcher, /obj/effect/decal/cleanable/dirt, @@ -54968,6 +55014,13 @@ /obj/effect/turf_decal/trimline/neutral/filled/corner, /turf/open/floor/iron, /area/station/security/courtroom) +"qyA" = ( +/obj/machinery/plumbing/ooze_sucker{ + mapping_id = "6" + }, +/obj/machinery/light/floor/has_bulb, +/turf/open/floor/engine, +/area/station/science/xenobiology) "qyI" = ( /obj/effect/landmark/tram/tramstation/east, /turf/open/floor/noslip/tram_plate, @@ -55405,6 +55458,13 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/ai_monitored/security/armory) +"qFc" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/landmark/start/gary/uncommon, +/turf/open/floor/stone, +/area/station/smithing) "qFf" = ( /obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 8 @@ -56757,12 +56817,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/engineering/gravity_generator) -"qZQ" = ( -/obj/structure/chair/stool/bar/directional/east, -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/start/gary, -/turf/open/floor/iron/smooth, -/area/station/maintenance/starboard/greater) "raf" = ( /obj/machinery/light/directional/west, /obj/structure/cable, @@ -56881,21 +56935,6 @@ /obj/effect/turf_decal/stripes/white/line, /turf/open/floor/iron, /area/station/hallway/primary/tram/left) -"rbg" = ( -/obj/machinery/door/airlock/grunge{ - name = "Morgue" - }, -/obj/machinery/door/firedoor, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/access/any/medical/general, -/obj/effect/mapping_helpers/airlock/access/any/medical/morgue, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) "rbj" = ( /obj/machinery/requests_console/directional/east{ assistance_requestable = 1; @@ -57131,6 +57170,12 @@ }, /turf/open/floor/iron/white, /area/station/medical/surgery/aft) +"rfs" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/blobstart, +/obj/effect/landmark/start/gary, +/turf/open/floor/iron/smooth, +/area/station/maintenance/department/medical) "rfP" = ( /obj/structure/cable, /turf/open/floor/wood, @@ -60105,13 +60150,6 @@ /obj/structure/railing, /turf/open/openspace, /area/station/solars/port) -"sgm" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/landmark/start/gary/uncommon, -/turf/open/floor/stone, -/area/station/smithing) "sgo" = ( /mob/living/basic/butterfly, /turf/open/floor/grass, @@ -60702,16 +60740,6 @@ }, /turf/open/floor/iron/white, /area/station/science/research) -"sqm" = ( -/obj/machinery/door/airlock/grunge{ - name = "Morgue External Access" - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/access/all/medical/morgue, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) "sqq" = ( /obj/effect/mob_spawn/corpse/human/charredskeleton, /obj/effect/decal/cleanable/blood/splatter, @@ -60727,11 +60755,6 @@ /obj/structure/extinguisher_cabinet/directional/west, /turf/open/floor/iron, /area/station/security/courtroom) -"sqC" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/start/gary, -/turf/open/floor/iron/smooth, -/area/station/maintenance/starboard/greater) "sqF" = ( /obj/effect/turf_decal/trimline/green/corner{ dir = 8 @@ -60755,6 +60778,17 @@ }, /turf/open/floor/iron/white, /area/station/science/lower) +"sqP" = ( +/obj/machinery/door/airlock/corporate{ + id_tag = "BSdoor"; + name = "Blueshield's Office" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/access/all/admin/general, +/turf/open/floor/carpet/neon/simple/blue/nodots, +/area/station/command/heads_quarters/blueshield) "sqQ" = ( /obj/machinery/door/airlock/medical{ name = "Surgery B" @@ -61112,15 +61146,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, /area/station/medical/pathology) -"svP" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 1 - }, -/obj/machinery/airalarm/directional/north, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/machinery/computer/records/pathology, -/turf/open/floor/iron/dark, -/area/station/medical/pathology) "svZ" = ( /obj/effect/turf_decal/trimline/red/filled/line, /obj/machinery/light/directional/south, @@ -62474,11 +62499,6 @@ "sQZ" = ( /turf/closed/wall/r_wall, /area/station/science/explab) -"sRa" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/start/gary, -/turf/open/floor/iron/smooth, -/area/station/maintenance/department/crew_quarters/dorms) "sRh" = ( /obj/structure/showcase/cyborg/old{ pixel_y = 20 @@ -63997,11 +64017,6 @@ }, /turf/open/floor/noslip/tram_plate, /area/station/hallway/primary/tram/right) -"toN" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/start/gary, -/turf/open/floor/plating, -/area/station/maintenance/starboard/greater) "toY" = ( /obj/structure/table/wood, /obj/structure/reagent_dispensers/wall/peppertank/directional/east, @@ -64933,11 +64948,6 @@ "tDT" = ( /turf/open/openspace, /area/station/commons/fitness/recreation) -"tEd" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/landmark/start/gary, -/turf/open/floor/iron/dark, -/area/station/commons/vacant_room/commissary) "tEe" = ( /obj/structure/flora/bush/sparsegrass/style_random, /obj/structure/flora/bush/grassy/style_random, @@ -65822,6 +65832,11 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos) +"tUc" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/starboard/greater) "tUH" = ( /obj/structure/rack, /obj/item/clothing/under/color/blue, @@ -66972,12 +66987,6 @@ /obj/effect/turf_decal/trimline/neutral/filled/warning, /turf/open/floor/iron, /area/station/hallway/primary/tram/left) -"unN" = ( -/obj/structure/table/wood, -/obj/machinery/light/dim/directional/north, -/obj/item/book/bible, -/turf/open/floor/carpet, -/area/station/service/chapel/monastery) "unS" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -69016,6 +69025,11 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/aisat/maint) +"uTq" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/gary, +/turf/open/floor/iron, +/area/station/maintenance/starboard/central) "uTz" = ( /obj/structure/railing{ dir = 8 @@ -71251,31 +71265,6 @@ /obj/effect/spawner/random/engineering/tank, /turf/open/floor/iron/smooth, /area/station/maintenance/department/crew_quarters/dorms) -"vzg" = ( -/obj/machinery/button/door/directional/east{ - id = "armory"; - name = "Armory Shutters"; - req_access = list("armory") - }, -/obj/machinery/status_display/ai/directional/north, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/rack, -/obj/item/ammo_box/magazine/m35, -/obj/item/ammo_box/magazine/m35, -/obj/item/ammo_box/magazine/m35, -/obj/item/ammo_box/magazine/m35, -/obj/item/ammo_box/magazine/m35, -/obj/item/ammo_box/magazine/m35, -/obj/item/ammo_box/magazine/m35, -/obj/item/ammo_box/magazine/m35, -/obj/item/ammo_box/magazine/m35, -/obj/item/ammo_box/magazine/m35, -/obj/item/gun/ballistic/automatic/pistol/paco/no_mag, -/obj/item/gun/ballistic/automatic/pistol/paco/no_mag{ - pixel_y = 6 - }, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/security/armory) "vzl" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/trash/garbage, @@ -72853,6 +72842,15 @@ }, /turf/open/floor/carpet, /area/station/command/bridge) +"vZW" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/obj/effect/spawner/random/engineering/tracking_beacon, +/obj/structure/cable, +/obj/effect/landmark/start/gary/uncommon, +/turf/open/floor/wood, +/area/station/commons/vacant_room/office) "vZX" = ( /obj/structure/lattice/catwalk, /obj/structure/railing{ @@ -74050,6 +74048,21 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron/freezer, /area/station/commons/toilet) +"wtJ" = ( +/obj/machinery/door/airlock/grunge{ + name = "Morgue External Access" + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/airlock/access/all/medical/morgue, +/turf/open/floor/iron/dark, +/area/station/medical/morgue) +"wtN" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/gary, +/turf/open/floor/iron/smooth, +/area/station/maintenance/starboard/greater) "wtP" = ( /obj/structure/closet{ name = "Evidence Closet 2" @@ -77916,11 +77929,6 @@ /obj/machinery/vending/wallmed/directional/north, /turf/open/floor/iron/white, /area/station/medical/medbay/central) -"xKz" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/start/gary, -/turf/open/floor/iron/smooth, -/area/station/maintenance/central/lesser) "xKD" = ( /obj/structure/dresser, /turf/open/floor/carpet/executive, @@ -79214,12 +79222,6 @@ /obj/machinery/airalarm/directional/south, /turf/open/floor/iron/dark, /area/station/medical/storage) -"yeR" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/blobstart, -/obj/effect/landmark/start/gary, -/turf/open/floor/iron/smooth, -/area/station/maintenance/department/medical) "yeX" = ( /obj/machinery/computer/telecomms/monitor{ dir = 1; @@ -92495,7 +92497,7 @@ apC jXf yah jfs -sRa +bhR lOR yah aac @@ -94038,7 +94040,7 @@ cAY apC lgu lgu -sRa +bhR lgu apC aaa @@ -98365,7 +98367,7 @@ pZW pVD jAk jAk -gKm +hVC jAk jAk ahU @@ -98869,7 +98871,7 @@ rUR rUR rUR uzS -ncX +sqP pnp bJM lQM @@ -99636,9 +99638,9 @@ kLz kLz kLz lRF -cTK -cQN -gfj +gfH +qoq +bML lyI iUN lQM @@ -99955,7 +99957,7 @@ snM xJZ lgu lgu -sRa +bhR lgu apC aac @@ -101239,7 +101241,7 @@ jnq vqn jnq lgu -sRa +bhR gsE apC ncE @@ -102506,7 +102508,7 @@ qOf amu rtp kWN -cYx +oht byx kWN rtp @@ -105772,7 +105774,7 @@ vXM aac qLK lnY -pNr +afJ nMu jcq nMu @@ -106054,7 +106056,7 @@ hFr hFr hFr aTT -pNr +afJ nMu nMu hFr @@ -106101,7 +106103,7 @@ aaa jnq cRa juN -xKz +nMn sAK pmz dzp @@ -106554,7 +106556,7 @@ eSk jbH iXh nMu -pNr +afJ nMu hFr qxf @@ -115829,7 +115831,7 @@ quF wfU quF quF -sqC +wtN quF iRL gbF @@ -117366,7 +117368,7 @@ aac siI iRB fIA -toN +tUc fIA iRL wkE @@ -121233,7 +121235,7 @@ iRL pWy iRL vqz -qZQ +met kOI quF aaS @@ -121484,7 +121486,7 @@ aaa aaa iRL quF -sqC +wtN mAF cOx pWy @@ -123312,7 +123314,7 @@ ejC ePU qxm ryO -iIT +pEE gDw qxm nZX @@ -124337,7 +124339,7 @@ gBw sIW whZ bvT -sgm +qFc glO hxW qxm @@ -126680,7 +126682,7 @@ vmk qVr bfH bfH -pys +qyA xQh cim kTh @@ -128967,7 +128969,7 @@ oys oys pom cwB -iWn +uTq oys iix xYf @@ -130755,7 +130757,7 @@ ecO kDR oNd kDR -aVx +eNy hiJ pAf oAw @@ -155152,7 +155154,7 @@ aaa iyc fCO kMf -cav +vZW mpa sQe iyc @@ -157514,7 +157516,7 @@ tdx mQa mQa mQa -bGG +qml mQa mQa mQa @@ -158277,7 +158279,7 @@ hnH gFt cSr gCQ -beN +evs dyx tdx tVH @@ -159568,7 +159570,7 @@ kgd rAS iMy eNx -fqe +eZD eNx apO tdx @@ -162918,7 +162920,7 @@ gHe gHe hYh vCZ -unN +pww skw kkg buB @@ -163685,7 +163687,7 @@ jkt jkt aPg piE -lau +oDc aQx kUo tXn @@ -164191,7 +164193,7 @@ tDT ylF srN pUw -cFZ +fRR qOi oqS mEs @@ -164633,7 +164635,7 @@ rmB rmB dEv dEv -vzg +noG mcU eka dEv @@ -167538,7 +167540,7 @@ jPK bpr bcG fmS -sRa +bhR apC aaa aaa @@ -168559,7 +168561,7 @@ ndb fsC hSE lgu -aXq +mNI lgu apC jPK @@ -169071,7 +169073,7 @@ fsC whz whz whz -nrt +gWb lgu lgu fas @@ -171121,7 +171123,7 @@ acm abW abW abW -mcb +frQ abW abS abW @@ -172163,7 +172165,7 @@ apC jPK apC lgu -sRa +bhR lgu apC xOk @@ -173176,7 +173178,7 @@ xBk pMh drn bdq -aLG +mPr vcv odH kRL @@ -180371,7 +180373,7 @@ oXP xOM oIa oIa -rbg +iUf oIa bFq bFq @@ -181666,7 +181668,7 @@ whz rXK srX ugt -svP +lXC txh sAd ykV @@ -182684,7 +182686,7 @@ vNN whz whz whz -sqm +wtJ whz whz whz @@ -182951,7 +182953,7 @@ vNN mHl kSi cyX -yeR +rfs srC rZZ rNg @@ -184232,7 +184234,7 @@ xTG xTG xip obu -box +hqL vlE kSi kSi @@ -193727,7 +193729,7 @@ ptZ nSI axt eRb -tEd +lfe rMB gAQ eoX diff --git a/_maps/ouroboros.json b/_maps/ouroboros.json index 69c071ccb13d..68f4554cb407 100644 --- a/_maps/ouroboros.json +++ b/_maps/ouroboros.json @@ -3,6 +3,7 @@ "map_name": "Ouroboros", "map_path": "map_files/Ouroboros", "map_file": "Ouroboros.dmm", + "space_ruin_levels": 3, "shuttles": { "emergency": "emergency_nova", "ferry": "ferry_fancy", diff --git a/_maps/tramstation.json b/_maps/tramstation.json index 4968e18e41b6..8a9468229ea0 100644 --- a/_maps/tramstation.json +++ b/_maps/tramstation.json @@ -3,6 +3,7 @@ "map_name": "Tramstation", "map_path": "map_files/tramstation", "map_file": "tramstation.dmm", + "space_ruin_levels": 3, "shuttles": { "cargo": "cargo_box", "ferry": "ferry_fancy", diff --git a/code/__DEFINES/explosions.dm b/code/__DEFINES/explosions.dm index a1645b659d1c..79b9baff89c0 100644 --- a/code/__DEFINES/explosions.dm +++ b/code/__DEFINES/explosions.dm @@ -52,6 +52,7 @@ #define EXARG_KEY_SILENT STRINGIFY(silent) /// Whether or not the explosion should produce smoke if it is large enough to warrant it. #define EXARG_KEY_SMOKE STRINGIFY(smoke) +#define EXARG_KEY_AREA_LOCK STRINGIFY(area_lock) // Explodable component deletion values /// Makes the explodable component queue to reset its exploding status when it detonates. diff --git a/code/__DEFINES/jobs.dm b/code/__DEFINES/jobs.dm index 8ba1bd9d5788..88005dacbd4a 100644 --- a/code/__DEFINES/jobs.dm +++ b/code/__DEFINES/jobs.dm @@ -185,6 +185,9 @@ #define DEPARTMENT_BITFLAG_SPOOKTOBER (1<<10) #define DEPARTMENT_SPOOKTOBER "Spooktober" +#define DEPARTMENT_BITFLAG_CENTRAL_COMMAND (1<<11) +#define DEPARTMENT_CENTRAL_COMMAND "Central Command" + /* Job datum job_flags */ /// Whether the mob is announced on arrival. #define JOB_ANNOUNCE_ARRIVAL (1<<0) diff --git a/code/__DEFINES/materials.dm b/code/__DEFINES/materials.dm index 6ffcc733928a..100435408602 100644 --- a/code/__DEFINES/materials.dm +++ b/code/__DEFINES/materials.dm @@ -68,3 +68,15 @@ #define MATERIAL_SLOWDOWN_PLASTEEL (0.05) /// The slowdown value of one [SHEET_MATERIAL_AMOUNT] of alien alloy. #define MATERIAL_SLOWDOWN_ALIEN_ALLOY (0.1) + +// The number of ore vents that will spawn boulders with this material. +/// Is this material going to spawn often in ore vents? (80% of vents on lavaland) +#define MATERIAL_RARITY_COMMON 12 +/// Is this material going to spawn often in ore vents? (53% of vents on lavaland) +#define MATERIAL_RARITY_SEMIPRECIOUS 8 +/// Is this material going to spawn uncommonly in ore vents? (33% of vents on lavaland) +#define MATERIAL_RARITY_PRECIOUS 5 +/// Is this material going to spawn rarely in ore vents? (20% of vents on lavaland) +#define MATERIAL_RARITY_RARE 3 +/// Is this material only going to spawn once in ore vents? (6% of vents on lavaland) +#define MATERIAL_RARITY_UNDISCOVERED 1 diff --git a/code/__DEFINES/mining.dm b/code/__DEFINES/mining.dm new file mode 100644 index 000000000000..11d150a453db --- /dev/null +++ b/code/__DEFINES/mining.dm @@ -0,0 +1,49 @@ +// Defines related to the mining rework circa June 2023 +/// Durability of a large size boulder from a large size vent. +#define BOULDER_SIZE_LARGE 15 +/// Durability of a medium size boulder from a medium size vent. +#define BOULDER_SIZE_MEDIUM 10 +/// Durability of a small size boulder from a small size vent. +#define BOULDER_SIZE_SMALL 5 +/// How many boulders can a single ore vent have on it's tile before it stops producing more? +#define MAX_BOULDERS_PER_VENT 10 +/// Time multiplier +#define INATE_BOULDER_SPEED_MULTIPLIER 3 +// Vent type +/// Large vents, giving large boulders. +#define LARGE_VENT_TYPE "large" +/// Medium vents, giving medium boulders. +#define MEDIUM_VENT_TYPE "medium" +/// Small vents, giving small boulders. +#define SMALL_VENT_TYPE "small" + +/// Proximity to a vent that a wall ore needs to be for 5 ore to be mined. +#define VENT_PROX_VERY_HIGH 3 +/// Proximity to a vent that a wall ore needs to be for 4 ore to be mined. +#define VENT_PROX_HIGH 6 +/// Proximity to a vent that a wall ore needs to be for 3 ore to be mined. +#define VENT_PROX_MEDIUM 15 +/// Proximity to a vent that a wall ore needs to be for 2 ore to be mined. +#define VENT_PROX_LOW 32 +/// Proximity to a vent that a wall ore needs to be for 1 ore to be mined. +#define VENT_PROX_FAR 64 + +/// The chance of ore spawning in a wall that is VENT_PROX_VERY_HIGH tiles to a vent. +#define VENT_CHANCE_VERY_HIGH 75 +/// The chance of ore spawning in a wall that is VENT_PROX_HIGH tiles to a vent. +#define VENT_CHANCE_HIGH 18 +/// The chance of ore spawning in a wall that is VENT_PROX_MEDIUM tiles to a vent. +#define VENT_CHANCE_MEDIUM 9 +/// The chance of ore spawning in a wall that is VENT_PROX_LOW tiles to a vent. +#define VENT_CHANCE_LOW 5 +/// The chance of ore spawning in a wall that is VENT_PROX_FAR tiles to a vent. +#define VENT_CHANCE_FAR 1 + +/// The number of points a miner gets for discovering a vent, multiplied by BOULDER_SIZE when completing a wave defense minus the discovery bonus. +#define MINER_POINT_MULTIPLIER 100 +/// The multiplier that gets applied for automatically generated mining points. +#define MINING_POINT_MACHINE_MULTIPLIER 0.8 + +//String defines to use with CaveGenerator presets for what ore breakdown to use. +#define OREGEN_PRESET_LAVALAND "lavaland" +#define OREGEN_PRESET_TRIPLE_Z "triple_z" diff --git a/code/__DEFINES/preferences.dm b/code/__DEFINES/preferences.dm index e0947d2d420a..24e14b06fa7c 100644 --- a/code/__DEFINES/preferences.dm +++ b/code/__DEFINES/preferences.dm @@ -60,6 +60,7 @@ // Playtime tracking system, see jobs_exp.dm #define EXP_TYPE_LIVING "Living" #define EXP_TYPE_CREW "Crew" +#define EXP_TYPE_CENTRAL_COMMAND "Central Command" #define EXP_TYPE_COMMAND "Command" #define EXP_TYPE_ENGINEERING "Engineering" #define EXP_TYPE_MEDICAL "Medical" diff --git a/code/__DEFINES/screentips.dm b/code/__DEFINES/screentips.dm index 9d56e8cf36e5..f99443752a69 100644 --- a/code/__DEFINES/screentips.dm +++ b/code/__DEFINES/screentips.dm @@ -30,3 +30,5 @@ /// Screentips are only enabled when they have context #define SCREENTIP_PREFERENCE_CONTEXT_ONLY "Only with tips" + +#define SCREENTIP_CONTEXT_MISC "Misc" diff --git a/code/__DEFINES/skills.dm b/code/__DEFINES/skills.dm index 26e66eee1f54..722293b1a431 100644 --- a/code/__DEFINES/skills.dm +++ b/code/__DEFINES/skills.dm @@ -42,6 +42,9 @@ ///The multiplier of the extra experience given by the fishing minigame based on difficulty. At the default difficulty of 15, the bonus will be of 21%. #define FISHING_SKILL_DIFFIULTY_EXP_MULT 0.015 ///How much exp one would gain per spent playing the fishing minigame at minimum difficulty. -#define FISHING_SKILL_EXP_PER_SECOND (SKILL_EXP_LEGENDARY / (22 MINUTES)) +#define FISHING_SKILL_EXP_PER_SECOND (SKILL_EXP_LEGENDARY / (15 MINUTES * 0.1)) ///The maximum amount of experience one can get per fishing minigame. I appreciate the effort though. #define FISHING_SKILL_EXP_CAP_PER_GAME (SKILL_EXP_LEGENDARY / 5) + +///The base modifier a boulder's size grants to the mining skill. +#define MINING_SKILL_BOULDER_SIZE_XP 10 diff --git a/code/__DEFINES/traits/declarations.dm b/code/__DEFINES/traits/declarations.dm index 9b75f5352410..6f5d4e3e78a3 100644 --- a/code/__DEFINES/traits/declarations.dm +++ b/code/__DEFINES/traits/declarations.dm @@ -169,7 +169,7 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai /// This carbon doesn't bleed #define TRAIT_NOBLOOD "noblood" /// This just means that the carbon will always have functional liverless metabolism -/* #define TRAIT_LIVERLESS_METABOLISM "liverless_metabolism" */ +#define TRAIT_LIVERLESS_METABOLISM "liverless_metabolism" /// This carbon can't be overdosed by chems /* #define TRAIT_OVERDOSEIMMUNE "overdose_immune" */ /// Humans with this trait cannot be turned into zombies @@ -1220,12 +1220,6 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai /// Trait which means whatever has this is dancing by a dance machine /* #define TRAIT_DISCO_DANCER "disco_dancer" */ -/// Trait which allows mobs to instantly break down boulders. -/* #define TRAIT_INSTANTLY_PROCESSES_BOULDERS "instantly_processes_boulders" */ - -/// Trait applied to objects and mobs that can attack a boulder and break it down. (See /obj/item/boulder/manual_process()) -/* #define TRAIT_BOULDER_BREAKER "boulder_breaker" */ - /// Trait given to anything linked to, not necessarily allied to, the mansus /* #define TRAIT_MANSUS_TOUCHED "mansus_touched" */ @@ -1273,4 +1267,10 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai ///Trait which allows mobs to parry mining mob projectiles /* #define TRAIT_MINING_PARRYING "mining_parrying" */ +/// That which allows mobs to instantly break down boulders. +#define TRAIT_INSTANTLY_PROCESSES_BOULDERS "instantly_processes_boulders" + +/// Trait applied to objects and mobs that can attack a boulder and break it down. (See /obj/item/boulder/manual_process()) +#define TRAIT_BOULDER_BREAKER "boulder_breaker" + // END TRAIT DEFINES diff --git a/code/__DEFINES/traits/monkestation/sources.dm b/code/__DEFINES/traits/monkestation/sources.dm index b8f958ee987f..057086421db2 100644 --- a/code/__DEFINES/traits/monkestation/sources.dm +++ b/code/__DEFINES/traits/monkestation/sources.dm @@ -30,3 +30,5 @@ #define FEED_TRAIT "feed_trait" /// Source trait during a Frenzy #define FRENZY_TRAIT "frenzy_trait" +/// Source trait for slashers. +#define TRAIT_SLASHER "slasher_trait" diff --git a/code/__DEFINES/~monkestation/_patreon.dm b/code/__DEFINES/~monkestation/_patreon.dm index 3517dc8c4612..6e8bec50c4ae 100644 --- a/code/__DEFINES/~monkestation/_patreon.dm +++ b/code/__DEFINES/~monkestation/_patreon.dm @@ -6,6 +6,7 @@ #define TRAITOR_RANK "9641531" //muh defines #define NUKIE_RANK "10901851" #define OLD_NUKIE_RANK "9641543" +#define REALLY_ANOTHER_FUCKING_NUKIE_RANK "23202435" #define ACCESS_THANKS_RANK 1 #define ACCESS_ASSISTANT_RANK 2 diff --git a/code/__DEFINES/~monkestation/blueshift.dm b/code/__DEFINES/~monkestation/blueshift.dm index ae8559e4b71e..c327e4e56a0f 100644 --- a/code/__DEFINES/~monkestation/blueshift.dm +++ b/code/__DEFINES/~monkestation/blueshift.dm @@ -329,4 +329,4 @@ GLOBAL_LIST_INIT(antag_opt_in_colors, list( #define OPT_IN_DEFAULT_LEVEL OPT_IN_YES_KILL /// If the player has any non-ghost role antags enabled, they are forced to use a minimum of this. -#define OPT_IN_ANTAG_ENABLED_LEVEL OPT_IN_YES_TEMP +#define OPT_IN_ANTAG_ENABLED_LEVEL OPT_IN_YES_KILL diff --git a/code/__DEFINES/~monkestation/cargo.dm b/code/__DEFINES/~monkestation/cargo.dm new file mode 100644 index 000000000000..0747a6ea33e1 --- /dev/null +++ b/code/__DEFINES/~monkestation/cargo.dm @@ -0,0 +1 @@ +#define COMSIG_FILTER_CHECK "filter_check" diff --git a/code/__DEFINES/~monkestation/chewin.dm b/code/__DEFINES/~monkestation/chewin.dm new file mode 100644 index 000000000000..980bcb76b964 --- /dev/null +++ b/code/__DEFINES/~monkestation/chewin.dm @@ -0,0 +1,120 @@ + +#define sequential_id(key) GLOB.uniqueness_repository.Generate(/datum/uniqueness_generator/id_sequential, key) +#define random_id(key,min_id,max_id) GLOB.uniqueness_repository.Generate(/datum/uniqueness_generator/id_random, key, min_id, max_id) + +//#define CHEWIN_DEBUG 1 + +//Step classifications, for easy reference later. +//If something falls outside these classifications, why would it? +#define CHEWIN_START 1 //Default step to construct the list. +#define CHEWIN_ADD_ITEM 2 //Adding an item to a recipe (Ex- adding a slice of bread) +#define CHEWIN_ADD_REAGENT 3 //Adding a reagent to a recipe (Ex- Adding salt) +#define CHEWIN_USE_ITEM 4 //Using an item in a recipe (Ex- cutting bread with a knife) +#define CHEWIN_USE_TOOL 5 +#define CHEWIN_ADD_PRODUCE 6 //Adding Produce to a recipe +#define CHEWIN_USE_STOVE 7 //Using a stove in a recipe +#define CHEWIN_USE_GRILL 8 //Using a stove in a recipe +#define CHEWIN_USE_OVEN 9 //Using a stove in a recipe +#define CHEWIN_USE_FRYER 10 +#define CHEWIN_ADD_REAGENT_CHOICE 11 +#define CHEWIN_ADD_PRODUCE_CHOICE 12 +#define CHEWIN_USE_OTHER 13 //Custom Command flag, will take in argument lists. + +//Optional flags +#define CHEWIN_ADD_ITEM_OPTIONAL 200 +#define CHEWIN_ADD_REAGENT_OPTIONAL 300 +#define CHEWIN_USE_ITEM_OPTIONAL 400 +#define CHEWIN_USE_TOOL_OPTIONAL 500 +#define CHEWIN_ADD_PRODUCE_OPTIONAL 600 +#define CHEWIN_USE_STOVE_OPTIONAL 700 +#define CHEWIN_USE_GRILL_OPTIONAL 800 +#define CHEWIN_USE_OVEN_OPTIONAL 900 +#define CHEWIN_ADD_REAGENT_CHOICE_OPTIONAL 1000 +#define CHEWIN_ADD_PRODUCE_CHOICE_OPTIONAL 1100 +#define CHEWIN_OTHER_OPTIONAL 1200 + + +#define CHEWIN_BEGIN_EXCLUSIVE_OPTIONS 10000 //Beginning an exclusive option list +#define CHEWIN_END_EXCLUSIVE_OPTIONS 20000 //Ending an exclusive option list +#define CHEWIN_BEGIN_OPTION_CHAIN 30000 //Beginning an option chain +#define CHEWIN_END_OPTION_CHAIN 40000 //Ending an option chain + +//Recipe state flags +#define CHEWIN_IS_LAST_STEP 1 //If the step in the recipe is marked as the last step +#define CHEWIN_IS_OPTIONAL 2 //If the step in the recipe is marked as 'Optional' +#define CHEWIN_IS_OPTION_CHAIN 4 //If the step in the recipe is marked to be part of an option chain. +#define CHEWIN_IS_EXCLUSIVE 8 //If the step in the recipe is marked to exclude other options when followed. +#define CHEWIN_BASE_QUALITY_ENABLED 16 +#define CHEWIN_MAX_QUALITY_ENABLED 32 + +//Check item use flags +#define CHEWIN_NO_STEPS 1 //The used object has no valid recipe uses +#define CHEWIN_CHOICE_CANCEL 2 //The user opted to cancel when given a choice +#define CHEWIN_SUCCESS 3 //The user decided to use the item and the step was followed +#define CHEWIN_PARTIAL_SUCCESS 4 //The user decided to use the item but the qualifications for the step was not fulfilled +#define CHEWIN_COMPLETE 5 //The meal has been completed! +#define CHEWIN_LOCKOUT 6 //Someone tried starting the function while a prompt was running. Jerk. +#define CHEWIN_BURNT 7 //The meal was ruined by burning the food somehow. + +#define CHEWIN_CHECK_INVALID 0 +#define CHEWIN_CHECK_VALID 1 +#define CHEWIN_CHECK_FULL 2 //For reagents, nothing can be added to + +//Cooking container types +#define PLATE "plate" +#define CUTTING_BOARD "cutting board" +#define PAN "pan" +#define POT "pot" +#define BOWL "bowl" +#define DF_BASKET "deep fryer basket" +#define AF_BASKET "air fryer basket" +#define OVEN "oven" +#define GRILL "grill" + +//Stove temp settings. +#define J_LO "Low" +#define J_MED "Medium" +#define J_HI "High" + +//Just a catalog for the cooking catalog +#define CATALOG_COOKING "cooking" + +//Burn times for cooking things on a stove. +//Anything put on a stove for this long becomes a burned mess. +#define CHEWIN_BURN_TIME_LOW 15 MINUTES +#define CHEWIN_BURN_TIME_MEDIUM 10 MINUTES +#define CHEWIN_BURN_TIME_HIGH 5 MINUTES + +//Ignite times for reagents interacting with a stove. +//The stove will catch fire if left on too long with flammable reagents in any of its holders. +#define CHEWIN_IGNITE_TIME_LOW 1 HOUR +#define CHEWIN_IGNITE_TIME_MEDIUM 30 MINUTES +#define CHEWIN_IGNITE_TIME_HIGH 15 MINUTES + +//Determines how much quality is taken from a food each tick when a 'no recipe' response is made. +#define CHEWIN_BASE_QUAL_REDUCTION 5 + +//A dictionary of unique step ids that point to other step IDs that should be EXCLUDED if it is present in a recipe_pointer's list of possible steps. +GLOBAL_LIST_EMPTY(chewin_optional_step_exclusion_dictionary) + +//A dictionary of all recipes by the basic ingredient +//Format: {base_ingedient_type:{unique_id:recipe}} +GLOBAL_LIST_EMPTY(chewin_recipe_dictionary) + +//A dictionary of all recipes full_stop. Used later for assembling the HTML list. +//Format: {recipe_type:{unique_id:recipe}} +GLOBAL_LIST_EMPTY(chewin_recipe_list) + +//A dictionary of all steps held within all recipes +//Format: {unique_id:step} +GLOBAL_LIST_EMPTY(chewin_step_dictionary) + +//An organized heap of recipes by class and grouping. +//Format: {class_of_step:{step_group_identifier:{unique_id:step}}} +GLOBAL_LIST_EMPTY(chewin_step_dictionary_ordered) + +#define COMSIG_STOVE_PROCESS "comsig_stove_process" + +#define CAT_BULK "Bulk Recipes" +#define CAT_STOVETOP "Stovetop Recipes" +#define CAT_OVEN "Oven Recipes" diff --git a/code/__DEFINES/~monkestation/dcs/signals/signals_item.dm b/code/__DEFINES/~monkestation/dcs/signals/signals_item.dm index 0e6c854dca47..b913dd94bfe1 100644 --- a/code/__DEFINES/~monkestation/dcs/signals/signals_item.dm +++ b/code/__DEFINES/~monkestation/dcs/signals/signals_item.dm @@ -16,3 +16,5 @@ /// the comsig for clockwork items checking turf #define COMSIG_CHECK_TURF_CLOCKWORK "check_turf_clockwork" + +#define COMSIG_ITEM_DAMAGE_MULTIPLIER "damage_multi_item" diff --git a/code/__DEFINES/~monkestation/dcs/signals/signals_mob/signals_mob_main.dm b/code/__DEFINES/~monkestation/dcs/signals/signals_mob/signals_mob_main.dm index 780dcf78e57e..bfc0f361e4f4 100644 --- a/code/__DEFINES/~monkestation/dcs/signals/signals_mob/signals_mob_main.dm +++ b/code/__DEFINES/~monkestation/dcs/signals/signals_mob/signals_mob_main.dm @@ -28,3 +28,8 @@ #define COMSIG_MOB_PICKED_UP "mob_picked_up" #define COMSIG_MOB_DROPPED "mob_dropped" + +#define COMSIG_DRANK_REAGENT "drank_reagent" + +#define COMSIG_LIVING_TRACKER_REMOVED "tracker_removed" +#define COMSIG_CLEAR_SEE "clear_see" diff --git a/code/__DEFINES/~monkestation/pain.dm b/code/__DEFINES/~monkestation/pain.dm new file mode 100644 index 000000000000..d28ed424b326 --- /dev/null +++ b/code/__DEFINES/~monkestation/pain.dm @@ -0,0 +1,51 @@ +/// If the mob enters shock, they will have +1 cure condition (helps cure it faster) +#define TRAIT_ABATES_SHOCK "shock_abated" +/// Pain effects, such as stuttering or feedback messages ("Everything hurts") are disabled. +#define TRAIT_NO_PAIN_EFFECTS "no_pain_effects" +/// Shock buildup does not increase, only decrease. No effect if already in shock (unlike abates_shock) +#define TRAIT_NO_SHOCK_BUILDUP "no_shock_buildup" +/// Don't get slowed down by aggro grabbing (or above) +#define TRAIT_NO_GRAB_SPEED_PENALTY "no_grab_speed_penalty" +/// Doesn't let a mob shift this atom around with move_pulled +#define TRAIT_NO_MOVE_PULL "no_move_pull" + +/// Sent when a carbon gains pain. (source = mob/living/carbon/human, obj/item/bodypart/affected_bodypart, amount, type) +#define COMSIG_CARBON_PAIN_GAINED "pain_gain" +/// Sent when a carbon loses pain. (source = mob/living/carbon/human, obj/item/bodypart/affected_bodypart, amount, type) +#define COMSIG_CARBON_PAIN_LOST "pain_loss" +/// Sent when a temperature pack runs out of juice. (source = obj/item/temperature_pack) +#define COMSIG_TEMPERATURE_PACK_EXPIRED "temp_pack_expired" + +/// Various lists of body zones affected by pain. +#define BODY_ZONES_ALL list(BODY_ZONE_HEAD, BODY_ZONE_CHEST, BODY_ZONE_L_ARM, BODY_ZONE_R_ARM, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG) +#define BODY_ZONES_MINUS_HEAD list(BODY_ZONE_CHEST, BODY_ZONE_L_ARM, BODY_ZONE_R_ARM, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG) +#define BODY_ZONES_LIMBS list(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG) +#define BODY_ZONES_MINUS_CHEST list(BODY_ZONE_HEAD, BODY_ZONE_L_ARM, BODY_ZONE_R_ARM, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG) + +/// List of some emotes that convey pain. +#define PAIN_EMOTES list("wince", "gasp", "grimace", "shiver", "sway", "twitch_s", "whimper", "inhale_s", "exhale_s", "groan") + +/// Amount of pain gained (to chest) from dismembered limb +#define PAIN_LIMB_DISMEMBERED 90 +/// Amount of pain gained (to chest) from surgically removed limb +#define PAIN_LIMB_REMOVED 30 + +/// Soft max pains for bodyparts, adds up to 500 +#define PAIN_LIMB_MAX 70 +#define PAIN_CHEST_MAX 120 +#define PAIN_HEAD_MAX 100 + +// Keys for pain modifiers +#define PAIN_MOD_CHEMS "chems" +#define PAIN_MOD_LYING "lying" +#define PAIN_MOD_NEAR_DEATH "near-death" +#define PAIN_MOD_KOD "ko-d" +#define PAIN_MOD_RECENT_SHOCK "recently-shocked" +#define PAIN_MOD_QUIRK "quirk" +#define PAIN_MOD_SPECIES "species" +#define PAIN_MOD_OFF_STATION "off-station-pain-resistance" + +// ID for traits and modifiers gained by pain +#define PAIN_LIMB_PARALYSIS "pain_paralysis" +#define MOVESPEED_ID_PAIN "pain_movespeed" +#define ACTIONSPEED_ID_PAIN "pain_actionspeed" diff --git a/code/__DEFINES/~monkestation/virology.dm b/code/__DEFINES/~monkestation/virology.dm index 7b63db744b22..8b3008d78218 100644 --- a/code/__DEFINES/~monkestation/virology.dm +++ b/code/__DEFINES/~monkestation/virology.dm @@ -47,6 +47,7 @@ #define DISEASE_TRAUMA "trauma" #define DISEASE_DECLONING "decloning" #define DISEASE_ANXIETY "anxiety" +#define DISEASE_SHOCK "shock" #define DISEASE_DORMANT (1 << 3) #define DISEASE_COPYSTAGE (1<<4) diff --git a/code/__HELPERS/roundend.dm b/code/__HELPERS/roundend.dm index 0da14e44a19b..2b82cbc7383d 100644 --- a/code/__HELPERS/roundend.dm +++ b/code/__HELPERS/roundend.dm @@ -281,6 +281,7 @@ GLOBAL_LIST_INIT(round_end_images, world.file2list("data/image_urls.txt")) // MO //stop collecting feedback during grifftime SSblackbox.Seal() + save_datums() // we care about this for now // monkestation start: token backups, monkecoin rewards, challenges, and roundend webhook save_tokens() diff --git a/code/_globalvars/lists/ores_spawned.dm b/code/_globalvars/lists/ores_spawned.dm new file mode 100644 index 000000000000..227e06061ad7 --- /dev/null +++ b/code/_globalvars/lists/ores_spawned.dm @@ -0,0 +1,35 @@ +/** + * Sets of global lists breaking down the base spawning distributions for various maps and stations. + * + * Currently used for ore vents on roundstart when the map is generated. (See ore_vent.dm, seedRuins() and ore_generation.dm) + * Ore vent lists here are copied to ore_vent_minerals on ruin seeding, + * in order to dynamically adjust the spawn rates as materials are picked and set a global ore distribution from vents. + * + * By default vents pull 4 unique materials each, but this can vary with subtypes. + */ + +GLOBAL_LIST_INIT(ore_vent_minerals_lavaland, list( + /datum/material/iron = 13, + /datum/material/glass = 12, + /datum/material/plasma = 9, + /datum/material/titanium = 6, + /datum/material/silver = 5, + /datum/material/gold = 5, + /datum/material/diamond = 3, + /datum/material/uranium = 3, + /datum/material/bluespace = 3, + /datum/material/plastic = 1, + )) + +GLOBAL_LIST_INIT(ore_vent_minerals_triple_z, list( + /datum/material/iron = 24, + /datum/material/glass = 23, + /datum/material/plasma = 16, + /datum/material/titanium = 10, + /datum/material/silver = 8, + /datum/material/gold = 7, + /datum/material/diamond = 4, + /datum/material/uranium = 4, + /datum/material/bluespace = 3, + /datum/material/plastic = 1, + )) diff --git a/code/_globalvars/traits/_traits.dm b/code/_globalvars/traits/_traits.dm index 91495683b763..334565ba7dad 100644 --- a/code/_globalvars/traits/_traits.dm +++ b/code/_globalvars/traits/_traits.dm @@ -295,6 +295,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_LIGHT_STEP" = TRAIT_LIGHT_STEP, "TRAIT_LIMBATTACHMENT" = TRAIT_LIMBATTACHMENT, "TRAIT_LITERATE" = TRAIT_LITERATE, + "TRAIT_LIVERLESS_METABOLISM" = TRAIT_LIVERLESS_METABOLISM, "TRAIT_LOUD_ASS" = TRAIT_LOUD_ASS, "TRAIT_MADNESS_IMMUNE" = TRAIT_MADNESS_IMMUNE, "TRAIT_MAGICALLY_GIFTED" = TRAIT_MAGICALLY_GIFTED, @@ -538,7 +539,6 @@ GLOBAL_LIST_INIT(traits_by_type, list( /* "TRAIT_INVISIMIN" = TRAIT_INVISIMIN, */ /* "TRAIT_IN_CALL" = TRAIT_IN_CALL, */ /* "TRAIT_IWASBATONED" = TRAIT_IWASBATONED, */ - /* "TRAIT_LIVERLESS_METABOLISM" = TRAIT_LIVERLESS_METABOLISM, */ /* "TRAIT_MAFIAINITIATE" = TRAIT_MAFIAINITIATE, */ /* "TRAIT_MANSUS_TOUCHED" = TRAIT_MANSUS_TOUCHED, */ /* "TRAIT_MEDIBOTCOMINGTHROUGH" = TRAIT_MEDIBOTCOMINGTHROUGH, */ @@ -632,7 +632,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( /* "TRAIT_BYPASS_RANGED_ARMOR" = TRAIT_BYPASS_RANGED_ARMOR, */ /* "TRAIT_CONTRABAND_BLOCKER" = TRAIT_CONTRABAND_BLOCKER, */ /* "TRAIT_GERM_SENSITIVE" = TRAIT_GERM_SENSITIVE, */ - /* "TRAIT_INSTANTLY_PROCESSES_BOULDERS" = TRAIT_INSTANTLY_PROCESSES_BOULDERS, */ + "TRAIT_INSTANTLY_PROCESSES_BOULDERS" = TRAIT_INSTANTLY_PROCESSES_BOULDERS, /* "TRAIT_ITEM_OBJECTIVE_BLOCKED" = TRAIT_ITEM_OBJECTIVE_BLOCKED, */ /* "TRAIT_NO_SIDE_KICK" = TRAIT_NO_SIDE_KICK, */ ), diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm index 3980bffac060..f5b2a314a961 100644 --- a/code/_onclick/click.dm +++ b/code/_onclick/click.dm @@ -185,7 +185,7 @@ else if(ismob(A)) changeNext_move(CLICK_CD_MELEE) - UnarmedAttack(A,1) + UnarmedAttack(A,1, modifiers) else if(W) if((istate & ISTATE_SECONDARY)) @@ -311,7 +311,7 @@ * used for figuring out different properties of the click, mostly right vs left and such. */ -/mob/proc/UnarmedAttack(atom/A, proximity_flag) +/mob/proc/UnarmedAttack(atom/A, proximity_flag, list/params) if(ismob(A)) changeNext_move(CLICK_CD_MELEE) return diff --git a/code/_onclick/hud/new_player.dm b/code/_onclick/hud/new_player.dm index 44a20e485c3e..a6e139dad084 100644 --- a/code/_onclick/hud/new_player.dm +++ b/code/_onclick/hud/new_player.dm @@ -190,6 +190,11 @@ to_chat(hud.mymob, span_boldwarning("The round is either not ready, or has already finished...")) return + if(hud.mymob.client?.check_overwatch()) + to_chat(hud.mymob, span_warning("Kindly wait until your connection has been authenticated before joining")) + message_admins("[hud.mymob.key] tried to use the Join button but failed the overwatch check.") + return + //Determines Relevent Population Cap var/relevant_cap var/hard_popcap = CONFIG_GET(number/hard_popcap) diff --git a/code/_onclick/other_mobs.dm b/code/_onclick/other_mobs.dm index 76e19620194b..7f0e772bede8 100644 --- a/code/_onclick/other_mobs.dm +++ b/code/_onclick/other_mobs.dm @@ -19,7 +19,7 @@ Otherwise pretty standard. */ -/mob/living/carbon/human/UnarmedAttack(atom/A, proximity_flag) +/mob/living/carbon/human/UnarmedAttack(atom/A, proximity_flag, list/params) if(HAS_TRAIT(src, TRAIT_HANDS_BLOCKED) && stat < SOFT_CRIT) if(src == A) check_self_for_injuries() @@ -40,7 +40,7 @@ if(!right_click_attack_chain(A) && !dna?.species?.spec_unarmedattack(src, A)) //Because species like monkeys dont use attack hand //monkestation edit - . = A.attack_hand(src) + . = A.attack_hand(src, params) if(.) animate_interact(A, INTERACT_GENERIC) //monkestation edit end @@ -49,7 +49,7 @@ return target.attack_hand_secondary(src, modifiers) /// Return TRUE to cancel other attack hand effects that respect it. Modifiers is the assoc list for click info such as if it was a right click. -/atom/proc/attack_hand(mob/user) +/atom/proc/attack_hand(mob/user, list/params) . = FALSE if(!(interaction_flags_atom & INTERACT_ATOM_NO_FINGERPRINT_ATTACK_HAND)) add_fingerprint(user) diff --git a/code/controllers/master.dm b/code/controllers/master.dm index 511f7b9d7450..5634f11b172c 100644 --- a/code/controllers/master.dm +++ b/code/controllers/master.dm @@ -234,6 +234,13 @@ GLOBAL_REAL(Master, /datum/controller/master) // Initialize subsystems. for (var/datum/controller/subsystem/subsystem in stage_sorted_subsystems[current_init_stage]) init_subsystem(subsystem) + if(world.system_type == MS_WINDOWS) + var/ss_name = "[subsystem.name]" + var/memory_summary = call_ext("memorystats", "get_memory_stats")() + var/file = file("data/mem_stat/[GLOB.round_id]-memstat.txt") + + var/string = "[ss_name] [memory_summary]" + WRITE_FILE(file, string) CHECK_TICK current_initializing_subsystem = null @@ -250,6 +257,9 @@ GLOBAL_REAL(Master, /datum/controller/master) var/msg = "Initializations complete within [time] second[time == 1 ? "" : "s"]!" + + initialize_cooking_recipes() + to_chat(world, span_boldannounce("[msg]")) log_world(msg) diff --git a/code/controllers/subsystem/explosions.dm b/code/controllers/subsystem/explosions.dm index ace4e3177f49..5d11d479dd26 100644 --- a/code/controllers/subsystem/explosions.dm +++ b/code/controllers/subsystem/explosions.dm @@ -224,7 +224,7 @@ SUBSYSTEM_DEF(explosions) * - smoke: Whether to generate a smoke cloud provided the explosion is powerful enough to warrant it. * - explosion_cause: [Optional] The atom that caused the explosion, when different to the origin. Used for logging. */ -/datum/controller/subsystem/explosions/proc/explode(atom/origin, devastation_range = 0, heavy_impact_range = 0, light_impact_range = 0, flame_range = 0, flash_range = 0, adminlog = TRUE, ignorecap = FALSE, silent = FALSE, smoke = FALSE, atom/explosion_cause = null) +/datum/controller/subsystem/explosions/proc/explode(atom/origin, devastation_range = 0, heavy_impact_range = 0, light_impact_range = 0, flame_range = 0, flash_range = 0, adminlog = TRUE, ignorecap = FALSE, silent = FALSE, smoke = FALSE, atom/explosion_cause = null, area/area_lock) var/list/arguments = list( EXARG_KEY_ORIGIN = origin, EXARG_KEY_DEV_RANGE = devastation_range, @@ -237,6 +237,7 @@ SUBSYSTEM_DEF(explosions) EXARG_KEY_SILENT = silent, EXARG_KEY_SMOKE = smoke, EXARG_KEY_EXPLOSION_CAUSE = explosion_cause ? explosion_cause : origin, + EXARG_KEY_AREA_LOCK = area_lock, ) var/atom/location = isturf(origin) ? origin : origin.loc if(SEND_SIGNAL(origin, COMSIG_ATOM_EXPLODE, arguments) & COMSIG_CANCEL_EXPLOSION) @@ -282,7 +283,7 @@ SUBSYSTEM_DEF(explosions) * - smoke: Whether to generate a smoke cloud provided the explosion is powerful enough to warrant it. * - explosion_cause: The atom that caused the explosion. Used for logging. */ -/datum/controller/subsystem/explosions/proc/propagate_blastwave(atom/epicenter, devastation_range, heavy_impact_range, light_impact_range, flame_range, flash_range, adminlog, ignorecap, silent, smoke, atom/explosion_cause) +/datum/controller/subsystem/explosions/proc/propagate_blastwave(atom/epicenter, devastation_range, heavy_impact_range, light_impact_range, flame_range, flash_range, adminlog, ignorecap, silent, smoke, atom/explosion_cause, area/area_lock) epicenter = get_turf(epicenter) var/area/checking = get_area(epicenter) @@ -400,6 +401,9 @@ SUBSYSTEM_DEF(explosions) //lists are guaranteed to contain at least 1 turf at this point //we presuppose that we'll be iterating away from the epicenter for(var/turf/explode as anything in affected_turfs) + if(area_lock && !(explode in area_lock)) + continue + var/our_x = explode.x var/our_y = explode.y var/dist = CHEAP_HYPOTENUSE(our_x, our_y, x0, y0) diff --git a/code/controllers/subsystem/mapping.dm b/code/controllers/subsystem/mapping.dm index be4a804b1ff8..6fa3c952c07a 100644 --- a/code/controllers/subsystem/mapping.dm +++ b/code/controllers/subsystem/mapping.dm @@ -260,16 +260,16 @@ SUBSYSTEM_DEF(mapping) var/list/ice_ruins = levels_by_trait(ZTRAIT_ICE_RUINS) if (ice_ruins.len) // needs to be whitelisted for underground too so place_below ruins work - seedRuins(ice_ruins, CONFIG_GET(number/icemoon_budget), list(/area/icemoon/surface/outdoors/unexplored), themed_ruins[ZTRAIT_ICE_RUINS], clear_below = TRUE) + seedRuins(ice_ruins, CONFIG_GET(number/icemoon_budget), list(/area/icemoon/surface/outdoors/unexplored), themed_ruins[ZTRAIT_ICE_RUINS], clear_below = TRUE, mineral_budget = 4) var/list/ice_ruins_underground = levels_by_trait(ZTRAIT_ICE_RUINS_UNDERGROUND) if (ice_ruins_underground.len) - seedRuins(ice_ruins_underground, CONFIG_GET(number/icemoon_budget), list(/area/icemoon/underground/unexplored), themed_ruins[ZTRAIT_ICE_RUINS_UNDERGROUND], clear_below = TRUE) + seedRuins(ice_ruins_underground, CONFIG_GET(number/icemoon_budget), list(/area/icemoon/underground/unexplored), themed_ruins[ZTRAIT_ICE_RUINS_UNDERGROUND], clear_below = TRUE, mineral_budget = 21) // Generate deep space ruins var/list/space_ruins = levels_by_trait(ZTRAIT_SPACE_RUINS) if (space_ruins.len) - seedRuins(space_ruins, CONFIG_GET(number/space_budget), list(/area/space), themed_ruins[ZTRAIT_SPACE_RUINS]) + seedRuins(space_ruins, CONFIG_GET(number/space_budget), list(/area/space), themed_ruins[ZTRAIT_SPACE_RUINS], mineral_budget = 0) /// Sets up rivers, and things that behave like rivers. So lava/plasma rivers, and chasms /// It is important that this happens AFTER generating mineral walls and such, since we rely on them for river logic diff --git a/code/datums/brain_damage/magic.dm b/code/datums/brain_damage/magic.dm index ac27ca655550..051ce4cbe588 100644 --- a/code/datums/brain_damage/magic.dm +++ b/code/datums/brain_damage/magic.dm @@ -124,3 +124,9 @@ desc = "It's coming closer..." image_icon = 'icons/mob/simple/lavaland/lavaland_monsters.dmi' image_state = "curseblob" + var/datum/brain_trauma/magic/stalker_multiple/host + +/obj/effect/client_image_holder/stalker_phantom/Destroy(force) + . = ..() + host.stalkers -= src + host = null diff --git a/code/datums/components/fullauto.dm b/code/datums/components/fullauto.dm index 044619d594aa..e52ac35e186b 100644 --- a/code/datums/components/fullauto.dm +++ b/code/datums/components/fullauto.dm @@ -279,8 +279,9 @@ return FALSE var/obj/item/bodypart/other_hand = shooter.has_hand_for_held_index(shooter.get_inactive_hand_index()) if(weapon_weight == WEAPON_HEAVY && (shooter.get_inactive_held_item() || !other_hand)) - balloon_alert(shooter, "use both hands!") - return FALSE + if(!istype(shooter.get_inactive_held_item(), /obj/item/offhand)) + balloon_alert(shooter, "use both hands!") + return FALSE return TRUE diff --git a/code/datums/components/riding/riding_mob.dm b/code/datums/components/riding/riding_mob.dm index 5afc69b3dd78..603d966862d4 100644 --- a/code/datums/components/riding/riding_mob.dm +++ b/code/datums/components/riding/riding_mob.dm @@ -316,8 +316,10 @@ for(var/mob/living/rider in robot_parent.buckled_mobs) rider.setDir(dir) if(istype(robot_parent.model)) - rider.pixel_x = robot_parent.model.ride_offset_x[dir2text(dir)] - rider.pixel_y = robot_parent.model.ride_offset_y[dir2text(dir)] + if(dir2text(dir) in robot_parent.model.ride_offset_x) + rider.pixel_x = robot_parent.model.ride_offset_x[dir2text(dir)] + if(dir2text(dir) in robot_parent.model.ride_offset_y) + rider.pixel_y = robot_parent.model.ride_offset_y[dir2text(dir)] //now onto every other ridable mob// diff --git a/code/datums/components/twohanded.dm b/code/datums/components/twohanded.dm index 86b312610b95..4362835ad070 100644 --- a/code/datums/components/twohanded.dm +++ b/code/datums/components/twohanded.dm @@ -94,6 +94,7 @@ RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, PROC_REF(on_equip)) RegisterSignal(parent, COMSIG_ITEM_DROPPED, PROC_REF(on_drop)) RegisterSignal(parent, COMSIG_ITEM_ATTACK_SELF, PROC_REF(on_attack_self)) + RegisterSignal(parent, COMSIG_CLICK_CTRL, PROC_REF(on_attack_self)) RegisterSignal(parent, COMSIG_ITEM_ATTACK, PROC_REF(on_attack)) RegisterSignal(parent, COMSIG_ATOM_UPDATE_ICON, PROC_REF(on_update_icon)) RegisterSignal(parent, COMSIG_MOVABLE_MOVED, PROC_REF(on_moved)) diff --git a/code/datums/datum.dm b/code/datums/datum.dm index 5daabc063048..68b894b1e6a9 100644 --- a/code/datums/datum.dm +++ b/code/datums/datum.dm @@ -60,6 +60,7 @@ var/list/filter_data #ifdef REFERENCE_TRACKING + var/running_find_references /// When was this datum last touched by a reftracker? /// If this value doesn't match with the start of the search /// We know this datum has never been seen before, and we should check it diff --git a/code/datums/elements/deliver_first.dm b/code/datums/elements/deliver_first.dm index 7587c437b769..7e525e61849c 100644 --- a/code/datums/elements/deliver_first.dm +++ b/code/datums/elements/deliver_first.dm @@ -28,6 +28,7 @@ RegisterSignal(target, COMSIG_MOVABLE_MOVED, PROC_REF(on_moved)) RegisterSignal(target, COMSIG_ATOM_EMAG_ACT, PROC_REF(on_emag)) RegisterSignal(target, COMSIG_CLOSET_POST_OPEN, PROC_REF(on_post_open)) + RegisterSignal(target, COMSIG_FILTER_CHECK, PROC_REF(on_filter_check)) ADD_TRAIT(target, TRAIT_BANNED_FROM_CARGO_SHUTTLE, REF(src)) //registers pre_open when appropriate area_check(target) @@ -102,4 +103,9 @@ playsound(src, SFX_SPARKS, 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) target.RemoveElement(/datum/element/deliver_first, goal_area_type, payment) +/datum/element/deliver_first/proc/on_filter_check(obj/structure/closet/target, list/filter_locations) + var/name = departmental_destination_to_tag(goal_area_type) + if(name in filter_locations) + return TRUE + return FALSE #undef DENY_SOUND_COOLDOWN diff --git a/code/datums/greyscale/config_types/greyscale_configs.dm b/code/datums/greyscale/config_types/greyscale_configs.dm index 1d7e0be945c3..5feff2c8bd24 100644 --- a/code/datums/greyscale/config_types/greyscale_configs.dm +++ b/code/datums/greyscale/config_types/greyscale_configs.dm @@ -1289,3 +1289,13 @@ name = "Worn Playbunny Ears" icon_file = 'monkestation/icons/mob/clothing/head_32x48.dmi' json_config = 'code/datums/greyscale/json_configs/playbunny_ears_worn.json' + +/datum/greyscale_config/big_manipulator + name = "Big Manipulator" + icon_file = 'monkestation/code/modules/factory_type_beat/icons/big_manipulator_core.dmi' + json_config = 'code/datums/greyscale/json_configs/big_manipulator.json' + +/datum/greyscale_config/manipulator_hand + name = "Manipulator Hand" + icon_file = 'monkestation/code/modules/factory_type_beat/icons/big_manipulator_hand.dmi' + json_config = 'code/datums/greyscale/json_configs/manipulator_hand.json' diff --git a/code/datums/greyscale/json_configs/big_manipulator.json b/code/datums/greyscale/json_configs/big_manipulator.json new file mode 100644 index 000000000000..c7f96bac2aba --- /dev/null +++ b/code/datums/greyscale/json_configs/big_manipulator.json @@ -0,0 +1,15 @@ +{ + "core": [ + { + "type": "icon_state", + "icon_state": "core", + "blend_mode": "overlay" + }, + { + "type": "icon_state", + "icon_state": "core_colour", + "blend_mode": "overlay", + "color_ids": [ 1 ] + } + ] +} diff --git a/code/datums/greyscale/json_configs/manipulator_hand.json b/code/datums/greyscale/json_configs/manipulator_hand.json new file mode 100644 index 000000000000..be7c96df62b6 --- /dev/null +++ b/code/datums/greyscale/json_configs/manipulator_hand.json @@ -0,0 +1,15 @@ +{ + "hand": [ + { + "type": "icon_state", + "icon_state": "hand", + "blend_mode": "overlay" + }, + { + "type": "icon_state", + "icon_state": "hand_colour", + "blend_mode": "overlay", + "color_ids": [ 1 ] + } + ] +} diff --git a/code/datums/id_trim/jobs.dm b/code/datums/id_trim/jobs.dm index cb3be26cc835..358a0c5540e6 100644 --- a/code/datums/id_trim/jobs.dm +++ b/code/datums/id_trim/jobs.dm @@ -179,32 +179,6 @@ ) job = /datum/job/bitrunner -/datum/id_trim/job/blueshield - assignment = "Blueshield" - trim_state = "trim_blueshield" - department_color = COLOR_COMMAND_BLUE - subdepartment_color = COLOR_SECURITY_RED - sechud_icon_state = SECHUD_BLUESHIELD - minimal_access = list( - ACCESS_MEDICAL, - ACCESS_SCIENCE, - ACCESS_SERVICE, - ACCESS_CONSTRUCTION, - ACCESS_SECURITY, - ACCESS_BRIG_ENTRANCE, - ACCESS_COMMAND, - ACCESS_MAINT_TUNNELS, - ACCESS_MINERAL_STOREROOM, - ACCESS_WEAPONS, - ) - extra_access = list( - ) - template_access = list( - ACCESS_CAPTAIN, - ACCESS_CHANGE_IDS - ) - job = /datum/job/blueshield - /datum/id_trim/job/botanist assignment = "Botanist" trim_state = "trim_botanist" diff --git a/code/datums/mapgen/CaveGenerator.dm b/code/datums/mapgen/CaveGenerator.dm index ad27001ff7a9..4005427637ec 100644 --- a/code/datums/mapgen/CaveGenerator.dm +++ b/code/datums/mapgen/CaveGenerator.dm @@ -95,6 +95,7 @@ if(!weighted_feature_spawn_list) weighted_feature_spawn_list = list( /obj/structure/geyser/random = 1, + /obj/structure/ore_vent/random = 1, ) feature_spawn_list = expand_weights(weighted_feature_spawn_list) open_turf_types = expand_weights(weighted_open_turf_types) @@ -217,6 +218,7 @@ var/megas_allowed = (generate_in.area_flags & MEGAFAUNA_SPAWN_ALLOWED) && length(megafauna_spawn_list) var/start_time = REALTIMEOFDAY + SSore_generation.ore_vent_minerals = (SSore_generation.ore_vent_minerals_default).Copy() for(var/turf/target_turf as anything in turfs) if(!(target_turf.type in open_turf_types)) //only put stuff on open turfs we generated, so closed walls and rivers and stuff are skipped diff --git a/code/datums/martial/sleeping_carp.dm b/code/datums/martial/sleeping_carp.dm index ec6920edf310..df8369a707e1 100644 --- a/code/datums/martial/sleeping_carp.dm +++ b/code/datums/martial/sleeping_carp.dm @@ -8,6 +8,7 @@ allow_temp_override = FALSE help_verb = /mob/living/proc/sleeping_carp_help display_combos = TRUE + COOLDOWN_DECLARE(block_cooldown) var/list/scarp_traits = list(TRAIT_NOGUNS, TRAIT_HARDLY_WOUNDED, TRAIT_NODISMEMBER, TRAIT_HEAVY_SLEEPER) /datum/martial_art/the_sleeping_carp/teach(mob/living/target, make_temporary = FALSE) @@ -160,6 +161,9 @@ return ..() /datum/martial_art/the_sleeping_carp/proc/can_deflect(mob/living/carp_user) + if(!COOLDOWN_FINISHED(src, block_cooldown)) + if(prob(70)) + return FALSE if(!can_use(carp_user)) return FALSE if(!(carp_user.istate & ISTATE_HARM)) // monke edit: istates/intents @@ -185,7 +189,9 @@ span_danger("[carp_user] effortlessly swats [hitting_projectile] aside! [carp_user.p_They()] can block bullets with [carp_user.p_their()] bare hands!"), span_userdanger("You deflect [hitting_projectile]!"), ) + COOLDOWN_START(src, block_cooldown, 3 SECONDS) playsound(carp_user, pick('sound/weapons/bulletflyby.ogg', 'sound/weapons/bulletflyby2.ogg', 'sound/weapons/bulletflyby3.ogg'), vol = 75, vary = TRUE) + carp_user.stamina?.adjust(-50) hitting_projectile.firer = carp_user hitting_projectile.set_angle(rand(0, 360))//SHING return COMPONENT_BULLET_PIERCED diff --git a/code/datums/materials/_material.dm b/code/datums/materials/_material.dm index b062651b8936..aea7332fb184 100644 --- a/code/datums/materials/_material.dm +++ b/code/datums/materials/_material.dm @@ -29,6 +29,8 @@ Simple datum which is instanced once per type and is used for every object of sa var/list/categories = list() ///The type of sheet this material creates. This should be replaced as soon as possible by greyscale sheets var/sheet_type + /// What type of ore is this material associated with? Used for mining, and not every material has one. + var/obj/item/ore_type ///This is a modifier for force, and resembles the strength of the material var/strength_modifier = 1 ///This is a modifier for integrity, and resembles the strength of the material @@ -51,6 +53,10 @@ Simple datum which is instanced once per type and is used for every object of sa var/obj/item/shard_type ///What type of debris the tile will leave behind when shattered. var/obj/effect/decal/debris_type + /// How likely this mineral is to be found in a boulder during mining. + var/mineral_rarity = MATERIAL_RARITY_COMMON + /// How many points per units of ore does this grant? + var/points_per_unit = 1 / SHEET_MATERIAL_AMOUNT /** Handles initializing the material. * diff --git a/code/datums/materials/basemats.dm b/code/datums/materials/basemats.dm index 0760d493ed19..a0139337015a 100644 --- a/code/datums/materials/basemats.dm +++ b/code/datums/materials/basemats.dm @@ -7,6 +7,9 @@ categories = list(MAT_CATEGORY_ORE = TRUE, MAT_CATEGORY_RIGID = TRUE, MAT_CATEGORY_BASE_RECIPES = TRUE, MAT_CATEGORY_ITEM_MATERIAL=TRUE) sheet_type = /obj/item/stack/sheet/iron value_per_unit = 0.0025 + ore_type = /obj/item/stack/ore/iron + mineral_rarity = MATERIAL_RARITY_COMMON + points_per_unit = 1 / SHEET_MATERIAL_AMOUNT /datum/material/iron/on_accidental_mat_consumption(mob/living/carbon/victim, obj/item/source_item) victim.apply_damage(10, BRUTE, BODY_ZONE_HEAD, wound_bonus = 5) @@ -28,6 +31,9 @@ value_per_unit = 0.0025 beauty_modifier = 0.05 armor_modifiers = list(MELEE = 0.2, BULLET = 0.2, ENERGY = 1, BIO = 0.2, FIRE = 1, ACID = 0.2) + ore_type = /obj/item/stack/ore/glass + mineral_rarity = MATERIAL_RARITY_COMMON + points_per_unit = 1 / SHEET_MATERIAL_AMOUNT /datum/material/glass/on_accidental_mat_consumption(mob/living/carbon/victim, obj/item/source_item) victim.apply_damage(10, BRUTE, BODY_ZONE_HEAD, wound_bonus = 5, sharpness = TRUE) //cronch @@ -48,6 +54,9 @@ Unless you know what you're doing, only use the first three numbers. They're in sheet_type = /obj/item/stack/sheet/mineral/silver value_per_unit = 0.025 beauty_modifier = 0.075 + ore_type = /obj/item/stack/ore/silver + mineral_rarity = MATERIAL_RARITY_SEMIPRECIOUS + points_per_unit = 16 / SHEET_MATERIAL_AMOUNT /datum/material/silver/on_accidental_mat_consumption(mob/living/carbon/victim, obj/item/source_item) victim.apply_damage(10, BRUTE, BODY_ZONE_HEAD, wound_bonus = 5) @@ -65,6 +74,9 @@ Unless you know what you're doing, only use the first three numbers. They're in value_per_unit = 0.0625 beauty_modifier = 0.15 armor_modifiers = list(MELEE = 1.1, BULLET = 1.1, LASER = 1.15, ENERGY = 1.15, BOMB = 1, BIO = 1, FIRE = 0.7, ACID = 1.1) + ore_type = /obj/item/stack/ore/gold + mineral_rarity = MATERIAL_RARITY_PRECIOUS + points_per_unit = 18 / SHEET_MATERIAL_AMOUNT /datum/material/gold/on_accidental_mat_consumption(mob/living/carbon/victim, obj/item/source_item) victim.apply_damage(10, BRUTE, BODY_ZONE_HEAD, wound_bonus = 5) @@ -83,6 +95,9 @@ Unless you know what you're doing, only use the first three numbers. They're in value_per_unit = 0.25 beauty_modifier = 0.3 armor_modifiers = list(MELEE = 1.3, BULLET = 1.3, LASER = 0.6, ENERGY = 1, BOMB = 1.2, BIO = 1, FIRE = 1, ACID = 1) + ore_type = /obj/item/stack/ore/diamond + mineral_rarity = MATERIAL_RARITY_RARE + points_per_unit = 50 / SHEET_MATERIAL_AMOUNT /datum/material/diamond/on_accidental_mat_consumption(mob/living/carbon/victim, obj/item/source_item) victim.apply_damage(15, BRUTE, BODY_ZONE_HEAD, wound_bonus = 7) @@ -99,6 +114,9 @@ Unless you know what you're doing, only use the first three numbers. They're in value_per_unit = 0.05 beauty_modifier = 0.3 //It shines so beautiful armor_modifiers = list(MELEE = 1.5, BULLET = 1.4, LASER = 0.5, ENERGY = 0.5, FIRE = 1, ACID = 1) + ore_type = /obj/item/stack/ore/uranium + mineral_rarity = MATERIAL_RARITY_SEMIPRECIOUS + points_per_unit = 30 / SHEET_MATERIAL_AMOUNT /datum/material/uranium/on_applied(atom/source, amount, material_flags) . = ..() @@ -134,6 +152,9 @@ Unless you know what you're doing, only use the first three numbers. They're in value_per_unit = 0.1 beauty_modifier = 0.15 armor_modifiers = list(MELEE = 1.4, BULLET = 0.7, ENERGY = 1.2, BIO = 1.2, ACID = 0.5) + ore_type = /obj/item/stack/ore/plasma + mineral_rarity = MATERIAL_RARITY_PRECIOUS + points_per_unit = 15 / SHEET_MATERIAL_AMOUNT /datum/material/plasma/on_applied(atom/source, amount, material_flags) . = ..() @@ -166,6 +187,9 @@ Unless you know what you're doing, only use the first three numbers. They're in beauty_modifier = 0.5 sheet_type = /obj/item/stack/sheet/bluespace_crystal value_per_unit = 0.15 + ore_type = /obj/item/stack/ore/bluespace_crystal + mineral_rarity = MATERIAL_RARITY_RARE + points_per_unit = 50 / SHEET_MATERIAL_AMOUNT /datum/material/bluespace/on_accidental_mat_consumption(mob/living/carbon/victim, obj/item/source_item) victim.reagents.add_reagent(/datum/reagent/bluespace, rand(5, 8)) @@ -183,6 +207,9 @@ Unless you know what you're doing, only use the first three numbers. They're in value_per_unit = 0.5 beauty_modifier = 0.5 armor_modifiers = list(BOMB = 100, FIRE = 10) //Clowns cant be blown away. + ore_type = /obj/item/stack/ore/bananium + mineral_rarity = MATERIAL_RARITY_UNDISCOVERED + points_per_unit = 60 / SHEET_MATERIAL_AMOUNT /datum/material/bananium/on_applied(atom/source, amount, material_flags) . = ..() @@ -211,6 +238,8 @@ Unless you know what you're doing, only use the first three numbers. They're in value_per_unit = 0.0625 beauty_modifier = 0.05 armor_modifiers = list(MELEE = 1.35, BULLET = 1.3, LASER = 1.3, ENERGY = 1.25, BOMB = 1.25, BIO = 1, FIRE = 0.7, ACID = 1) + ore_type = /obj/item/stack/ore/titanium + mineral_rarity = MATERIAL_RARITY_SEMIPRECIOUS /datum/material/titanium/on_accidental_mat_consumption(mob/living/carbon/victim, obj/item/source_item) victim.apply_damage(15, BRUTE, BODY_ZONE_HEAD, wound_bonus = 7) @@ -227,6 +256,8 @@ Unless you know what you're doing, only use the first three numbers. They're in value_per_unit = 0.3 beauty_modifier = 0.5 armor_modifiers = list(MELEE = 1.35, BULLET = 2, LASER = 0.5, ENERGY = 1.25, BOMB = 1.25, BIO = 1, FIRE = 1.4, ACID = 1) //rune is weak against magic lasers but strong against bullets. This is the combat triangle. + mineral_rarity = MATERIAL_RARITY_UNDISCOVERED + points_per_unit = 100 / SHEET_MATERIAL_AMOUNT /datum/material/runite/on_accidental_mat_consumption(mob/living/carbon/victim, obj/item/source_item) victim.apply_damage(20, BRUTE, BODY_ZONE_HEAD, wound_bonus = 10) @@ -244,6 +275,9 @@ Unless you know what you're doing, only use the first three numbers. They're in value_per_unit = 0.0125 beauty_modifier = -0.01 armor_modifiers = list(MELEE = 1.5, BULLET = 1.1, LASER = 0.3, ENERGY = 0.5, BOMB = 1, BIO = 1, FIRE = 1.1, ACID = 1) + ore_type = /obj/item/stack/ore/slag + mineral_rarity = MATERIAL_RARITY_UNDISCOVERED //Nobody's found oil on lavaland yet. + points_per_unit = 4 / SHEET_MATERIAL_AMOUNT /datum/material/plastic/on_accidental_mat_consumption(mob/living/carbon/eater, obj/item/food) eater.reagents.add_reagent(/datum/reagent/plastic_polymers, rand(6, 8)) @@ -303,6 +337,8 @@ Unless you know what you're doing, only use the first three numbers. They're in value_per_unit = 0.25 beauty_modifier = 0.4 armor_modifiers = list(MELEE = 1.5, BULLET = 1.5, LASER = 1.3, ENERGY = 1.3, BOMB = 1, BIO = 1, FIRE = 2.5, ACID = 1) + mineral_rarity = MATERIAL_RARITY_UNDISCOVERED //Doesn't naturally spawn on lavaland. + points_per_unit = 100 / SHEET_MATERIAL_AMOUNT /datum/material/adamantine/on_accidental_mat_consumption(mob/living/carbon/victim, obj/item/source_item) victim.apply_damage(20, BRUTE, BODY_ZONE_HEAD, wound_bonus = 10) @@ -320,6 +356,8 @@ Unless you know what you're doing, only use the first three numbers. They're in strength_modifier = 1.2 armor_modifiers = list(MELEE = 1.5, BULLET = 1.5, LASER = 1.5, ENERGY = 1.5, BOMB = 1.5, BIO = 1.5, FIRE = 1.5, ACID = 1.5) beauty_modifier = 0.5 + mineral_rarity = MATERIAL_RARITY_UNDISCOVERED //Doesn't naturally spawn on lavaland. + points_per_unit = 100 / SHEET_MATERIAL_AMOUNT /* monkestation edit: this is given anyways by [/datum/material_trait/magical] /datum/material/mythril/on_applied_obj(atom/source, amount, material_flags) diff --git a/code/datums/quirks/negative_quirks.dm b/code/datums/quirks/negative_quirks.dm index 08393519a5dc..a2528c8c9d92 100644 --- a/code/datums/quirks/negative_quirks.dm +++ b/code/datums/quirks/negative_quirks.dm @@ -592,7 +592,7 @@ if(BODY_ZONE_R_LEG) prosthetic = new /obj/item/bodypart/leg/right/robot/surplus slot_string = "right leg" - human_holder.del_and_replace_bodypart(prosthetic) + human_holder.del_and_replace_bodypart(prosthetic, TRUE) /datum/quirk/prosthetic_limb/post_add() to_chat(quirk_holder, span_boldannounce("Your [slot_string] has been replaced with a surplus prosthetic. It is fragile and will easily come apart under duress. Additionally, \ @@ -609,10 +609,10 @@ /datum/quirk/quadruple_amputee/add_unique(client/client_source) var/mob/living/carbon/human/human_holder = quirk_holder - human_holder.del_and_replace_bodypart(new /obj/item/bodypart/arm/left/robot/surplus) - human_holder.del_and_replace_bodypart(new /obj/item/bodypart/arm/right/robot/surplus) - human_holder.del_and_replace_bodypart(new /obj/item/bodypart/leg/left/robot/surplus) - human_holder.del_and_replace_bodypart(new /obj/item/bodypart/leg/right/robot/surplus) + human_holder.del_and_replace_bodypart(new /obj/item/bodypart/arm/left/robot/surplus, TRUE) + human_holder.del_and_replace_bodypart(new /obj/item/bodypart/arm/right/robot/surplus, TRUE) + human_holder.del_and_replace_bodypart(new /obj/item/bodypart/leg/left/robot/surplus, TRUE) + human_holder.del_and_replace_bodypart(new /obj/item/bodypart/leg/right/robot/surplus, TRUE) /datum/quirk/quadruple_amputee/post_add() to_chat(quirk_holder, span_boldannounce("All your limbs have been replaced with surplus prosthetics. They are fragile and will easily come apart under duress. Additionally, \ @@ -799,7 +799,7 @@ hardcore_value = 4 quirk_flags = QUIRK_HUMAN_ONLY|QUIRK_PROCESSES mail_goodies = list(/obj/effect/spawner/random/contraband/narcotics) - var/drug_list = list(/datum/reagent/drug/blastoff, /datum/reagent/drug/krokodil, /datum/reagent/medicine/morphine, /datum/reagent/drug/happiness, /datum/reagent/drug/methamphetamine) //List of possible IDs + var/drug_list = list(/datum/reagent/drug/blastoff, /datum/reagent/drug/krokodil, /datum/reagent/medicine/painkiller/morphine, /datum/reagent/drug/happiness, /datum/reagent/drug/methamphetamine) //List of possible IDs var/datum/reagent/reagent_type //!If this is defined, reagent_id will be unused and the defined reagent type will be instead. var/datum/reagent/reagent_instance //! actual instanced version of the reagent var/where_drug //! Where the drug spawned diff --git a/code/datums/ruins.dm b/code/datums/ruins.dm index 2a7b73d1f7e8..703991f596e9 100644 --- a/code/datums/ruins.dm +++ b/code/datums/ruins.dm @@ -6,17 +6,27 @@ How is there a wooden container filled with 18th century coinage in the middle of a lavawracked hellscape? \ It is clearly a mystery." - var/unpickable = FALSE //If TRUE these won't be placed automatically (can still be forced or loaded with another ruin) - var/always_place = FALSE //Will skip the whole weighting process and just plop this down, ideally you want the ruins of this kind to have no cost. - var/placement_weight = 1 //How often should this ruin appear - var/cost = 0 //Cost in ruin budget placement system + ///If TRUE these won't be placed automatically (can still be forced or loaded with another ruin) + var/unpickable = FALSE + ///Will skip the whole weighting process and just plop this down, ideally you want the ruins of this kind to have no cost. + var/always_place = FALSE + ///How often should this ruin appear + var/placement_weight = 1 + ///Cost in ruin budget placement system + var/cost = 0 + /// Cost in the ruin budget placement system associated with mineral spawning. We use a different budget for mineral sources like ore vents. For practical use see seedRuins + var/mineral_cost = 0 + /// If TRUE, this ruin can be placed multiple times in the same map var/allow_duplicates = TRUE - var/list/always_spawn_with = null //These ruin types will be spawned along with it (where dependent on the flag) eg list(/datum/map_template/ruin/space/teleporter_space = SPACERUIN_Z) - var/list/never_spawn_with = null //If this ruin is spawned these will not eg list(/datum/map_template/ruin/base_alternate) - + ///These ruin types will be spawned along with it (where dependent on the flag) eg list(/datum/map_template/ruin/space/teleporter_space = SPACERUIN_Z) + var/list/always_spawn_with = null + ///If this ruin is spawned these will not eg list(/datum/map_template/ruin/base_alternate) + var/list/never_spawn_with = null + ///Static part of the ruin path eg "_maps\RandomRuins\LavaRuins\" var/prefix = null + ///The dynamic part of the ruin path eg "lavaland_surface_ruinfile.dmm" var/suffix = null - + ///What flavor or ruin is this? eg ZTRAIT_SPACE_RUINS var/ruin_type = null /datum/map_template/ruin/New() diff --git a/code/datums/wounds/bones.dm b/code/datums/wounds/bones.dm index fade934c438c..1b63e5a4a2a4 100644 --- a/code/datums/wounds/bones.dm +++ b/code/datums/wounds/bones.dm @@ -152,11 +152,13 @@ victim.visible_message("Blood spews out of [victim]'s mouth from the blow to [victim.p_their()] chest!", span_danger("You spit out a string of blood from the blow to your chest!"), vision_distance=COMBAT_MESSAGE_RANGE) new /obj/effect/temp_visual/dir_setting/bloodsplatter(victim.loc, victim.dir, COLOR_DARK_RED) victim.bleed(blood_bled) + victim.blood_particles(amount = 1) if(20 to INFINITY) victim.visible_message(span_danger("Blood spurts out of [victim]'s mouth from the blow to [victim.p_their()] chest!"), span_danger("You choke up on a spray of blood from the blow to your chest!"), vision_distance=COMBAT_MESSAGE_RANGE) victim.bleed(blood_bled) new /obj/effect/temp_visual/dir_setting/bloodsplatter(victim.loc, victim.dir, COLOR_DARK_RED) victim.add_splatter_floor(get_step(victim.loc, victim.dir)) + victim.blood_particles(amount = 3) /datum/wound/blunt/bone/modify_desc_before_span(desc) . = ..() diff --git a/code/datums/wounds/loss.dm b/code/datums/wounds/loss.dm index 479656a8a429..bcad804eba68 100644 --- a/code/datums/wounds/loss.dm +++ b/code/datums/wounds/loss.dm @@ -50,6 +50,7 @@ log_wound(victim, src) if(dismembered_part.can_bleed() && wounding_type != WOUND_BURN && victim.blood_volume) victim.spray_blood(attack_direction, severity) + victim.blood_particles(amount = rand(3, 6), angle = 0, min_deviation = 0, max_deviation = 360) dismembered_part.dismember(wounding_type == WOUND_BURN ? BURN : BRUTE, wounding_type = wounding_type) qdel(src) return TRUE diff --git a/code/datums/wounds/pierce.dm b/code/datums/wounds/pierce.dm index 238e28001738..4deb88361768 100644 --- a/code/datums/wounds/pierce.dm +++ b/code/datums/wounds/pierce.dm @@ -30,6 +30,7 @@ set_blood_flow(initial_flow) if(limb.can_bleed() && attack_direction && victim.blood_volume > BLOOD_VOLUME_OKAY) victim.spray_blood(attack_direction, severity) + victim.blood_particles(amount = rand(3, 6), angle = 0, min_deviation = 0, max_deviation = 360) return ..() diff --git a/code/datums/wounds/slash.dm b/code/datums/wounds/slash.dm index e297849e61a3..b0edc7f25074 100644 --- a/code/datums/wounds/slash.dm +++ b/code/datums/wounds/slash.dm @@ -57,6 +57,7 @@ set_blood_flow(initial_flow) if(limb.can_bleed() && attack_direction && victim.blood_volume > BLOOD_VOLUME_OKAY) victim.spray_blood(attack_direction, severity) + victim.blood_particles(amount = rand(3, 6), angle = 0, min_deviation = 0, max_deviation = 360) if(!highest_scar) var/datum/scar/new_scar = new diff --git a/code/game/atoms.dm b/code/game/atoms.dm index cc8b96345131..95ba030e198a 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -2115,6 +2115,7 @@ var/shift_lmb_ctrl_shift_lmb_line = "" var/extra_lines = 0 var/extra_context = "" + var/misc_context = "" if(isliving(user) || isovermind(user) || isaicamera(user) || (ghost_screentips && isobserver(user))) var/obj/item/held_item = user.get_active_held_item() @@ -2176,8 +2177,17 @@ if (shift_lmb_ctrl_shift_lmb_line != "") extra_lines++ + if(SCREENTIP_CONTEXT_MISC in context) + misc_context += context[SCREENTIP_CONTEXT_MISC] + + if (misc_context != "") + extra_lines++ + if(extra_lines) - extra_context = "
[lmb_rmb_line][ctrl_lmb_ctrl_rmb_line][alt_lmb_alt_rmb_line][shift_lmb_ctrl_shift_lmb_line]" + if(misc_context != "") + extra_context = "
[misc_context]\n[lmb_rmb_line][ctrl_lmb_ctrl_rmb_line][alt_lmb_alt_rmb_line][shift_lmb_ctrl_shift_lmb_line]" + else + extra_context = "
[lmb_rmb_line][ctrl_lmb_ctrl_rmb_line][alt_lmb_alt_rmb_line][shift_lmb_ctrl_shift_lmb_line]" //first extra line pushes atom name line up 11px, subsequent lines push it up 9px, this offsets that and keeps the first line in the same place active_hud.screentip_text.maptext_y = -1 + (extra_lines - 1) * -9 diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm index 1b41d2f33170..453e9fe19940 100644 --- a/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm +++ b/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm @@ -372,7 +372,7 @@ ) required_enemies = list(3,3,3,3,3,2,1,1,0,0) required_candidates = 5 - weight = 5 + weight = 0 cost = 7 minimum_round_time = 70 MINUTES requirements = REQUIREMENTS_VERY_HIGH_THREAT_NEEDED diff --git a/code/game/machinery/_machinery.dm b/code/game/machinery/_machinery.dm index a8f502efe013..728df8ba25cc 100644 --- a/code/game/machinery/_machinery.dm +++ b/code/game/machinery/_machinery.dm @@ -821,12 +821,23 @@ spawn_frame(disassembled) for(var/part in component_parts) + var/area/shipbreak/A = get_area(src) if(istype(part, /datum/stock_part)) var/datum/stock_part/datum_part = part - new datum_part.physical_object_type(loc) + var/obj/item/item = new datum_part.physical_object_type(loc) + if(istype(A) && item.get_shipbreaking_reward()) //shipbreaking + var/obj/item/reward = item.get_shipbreaking_reward() + if(reward) + new reward(loc) + qdel(item) else var/obj/item/obj_part = part obj_part.forceMove(loc) + if(istype(A) && obj_part.get_shipbreaking_reward()) //shipbreaking + var/obj/item/reward = obj_part.get_shipbreaking_reward() + if(reward) + new reward(loc) + qdel(obj_part) if(istype(obj_part, /obj/item/circuitboard/machine)) var/obj/item/circuitboard/machine/board = obj_part for(var/component in board.req_components) //loop through all stack components and spawn them diff --git a/code/game/machinery/computer/crew.dm b/code/game/machinery/computer/crew.dm index e151967a1c7f..11aab499f5cc 100644 --- a/code/game/machinery/computer/crew.dm +++ b/code/game/machinery/computer/crew.dm @@ -155,6 +155,7 @@ GLOBAL_DATUM_INIT(crewmonitor, /datum/crewmonitor, new) JOB_ERT_CHAPLAIN = 225, JOB_ERT_JANITOR = 226, JOB_ERT_DEATHSQUAD = 227, + JOB_BLUESHIELD = 231, // ANYTHING ELSE = UNKNOWN_JOB_ID, Unknowns/custom jobs will appear after civilians, and before assistants JOB_ASSISTANT = 999, diff --git a/code/game/machinery/prisongate.dm b/code/game/machinery/prisongate.dm index 0b7529cbb79e..4a932b2258c5 100644 --- a/code/game/machinery/prisongate.dm +++ b/code/game/machinery/prisongate.dm @@ -45,6 +45,14 @@ /obj/machinery/prisongate/CanAllowThrough(atom/movable/gate_toucher, border_dir) . = ..() if(!iscarbon(gate_toucher)) + if(isvehicle(gate_toucher)) + var/obj/vehicle/toucher = gate_toucher + for(var/mob/living/carbon/human in toucher.occupants) + if(COOLDOWN_FINISHED(src, spam_cooldown_time)) + say("Please dismount your vehicles before trying to enter.") + playsound(src, 'sound/machines/buzz-two.ogg', 50, FALSE) + COOLDOWN_START(src, spam_cooldown_time, SPAM_CD) + return FALSE if(!isstructure(gate_toucher)) return TRUE var/obj/structure/cargobay = gate_toucher diff --git a/code/game/machinery/sleepers.dm b/code/game/machinery/sleepers.dm index b6d2e886b1cb..42c13632d1da 100644 --- a/code/game/machinery/sleepers.dm +++ b/code/game/machinery/sleepers.dm @@ -29,7 +29,7 @@ var/list/possible_chems = list( list( /datum/reagent/medicine/epinephrine, - /datum/reagent/medicine/morphine, + /datum/reagent/medicine/painkiller/morphine, /datum/reagent/medicine/c2/convermol, /datum/reagent/medicine/c2/libital, /datum/reagent/medicine/c2/aiuri, diff --git a/code/game/objects/effects/decals/cleanable/humans.dm b/code/game/objects/effects/decals/cleanable/humans.dm index 83d905882447..08715536511e 100644 --- a/code/game/objects/effects/decals/cleanable/humans.dm +++ b/code/game/objects/effects/decals/cleanable/humans.dm @@ -365,6 +365,8 @@ GLOBAL_LIST_EMPTY(bloody_footprints_cache) var/splatter_strength = 3 /// Insurance so that we don't keep moving once we hit a stoppoint var/hit_endpoint = FALSE + /// Type of squirt decals we should try to create when moving + var/line_type = /obj/effect/decal/cleanable/blood/line /obj/effect/decal/cleanable/blood/hitsplatter/Initialize(mapload, splatter_strength) . = ..() @@ -413,6 +415,17 @@ GLOBAL_LIST_EMPTY(bloody_footprints_cache) splatter_strength-- if(splatter_strength <= 0) // we used all the puff so we delete it. qdel(src) + return + if(line_type && isturf(loc)) + var/obj/effect/decal/cleanable/line = locate(line_type) in loc + if(line) + line.add_blood_DNA(blood_dna_info) + else + line = new line_type(loc, get_dir(prev_loc, loc)) + line.add_blood_DNA(blood_dna_info) + line.alpha = 0 + animate(line, alpha = initial(line.alpha), time = 2) + /obj/effect/decal/cleanable/blood/hitsplatter/proc/loop_done(datum/source) SIGNAL_HANDLER @@ -454,3 +467,4 @@ GLOBAL_LIST_EMPTY(bloody_footprints_cache) the_window.vis_contents += final_splatter the_window.bloodied = TRUE qdel(src) + diff --git a/code/game/objects/items/food/meatslab.dm b/code/game/objects/items/food/meatslab.dm index 1392be355916..4d4cf0bbac0b 100644 --- a/code/game/objects/items/food/meatslab.dm +++ b/code/game/objects/items/food/meatslab.dm @@ -227,7 +227,7 @@ icon_state = "bearmeat" food_reagents = list( /datum/reagent/consumable/nutriment/protein = 16, - /datum/reagent/medicine/morphine = 5, + /datum/reagent/medicine/painkiller/morphine = 5, /datum/reagent/consumable/nutriment/vitamin = 2, /datum/reagent/consumable/cooking_oil = 6, ) diff --git a/code/game/objects/items/food/spaghetti.dm b/code/game/objects/items/food/spaghetti.dm index 6cf2bbc81d1d..893fa08d7d0f 100644 --- a/code/game/objects/items/food/spaghetti.dm +++ b/code/game/objects/items/food/spaghetti.dm @@ -60,7 +60,7 @@ // where the soul comes from /datum/reagent/pax = 5, /datum/reagent/medicine/psicodine = 10, - /datum/reagent/medicine/morphine = 5, + /datum/reagent/medicine/painkiller/morphine = 5, ) tastes = list("nostalgia" = 1, "happiness" = 1) diff --git a/code/game/objects/items/melee/misc.dm b/code/game/objects/items/melee/misc.dm index ae9a980d989b..3df9763ddde7 100644 --- a/code/game/objects/items/melee/misc.dm +++ b/code/game/objects/items/melee/misc.dm @@ -20,7 +20,8 @@ righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi' flags_1 = CONDUCT_1 slot_flags = ITEM_SLOT_BELT - force = 10 + force = 1 + pain_damage = 12 throwforce = 7 demolition_mod = 0.25 wound_bonus = 15 diff --git a/code/game/objects/items/robot/items/hypo.dm b/code/game/objects/items/robot/items/hypo.dm index 389d10175196..d02f110fae79 100644 --- a/code/game/objects/items/robot/items/hypo.dm +++ b/code/game/objects/items/robot/items/hypo.dm @@ -47,7 +47,7 @@ ) #define BASE_SYNDICATE_REAGENTS list(\ /datum/reagent/medicine/inacusiate,\ - /datum/reagent/medicine/morphine,\ + /datum/reagent/medicine/painkiller/morphine,\ /datum/reagent/medicine/potass_iodide,\ /datum/reagent/medicine/syndicate_nanites\ ) diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index cf1d76bab1f0..517a05a58ee7 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -321,6 +321,7 @@ GLOBAL_LIST_INIT(wood_recipes, list ( \ new/datum/stack_recipe("book case", /obj/structure/bookcase, 4, time = 1.5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_FURNITURE), \ new/datum/stack_recipe("drying rack", /obj/machinery/smartfridge/drying_rack, 10, time = 1.5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_TOOLS), \ new/datum/stack_recipe("wooden barrel", /obj/structure/fermenting_barrel, 8, time = 5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_CONTAINERS), \ + new/datum/stack_recipe("fermenting keg", /obj/structure/fermentation_keg, 8, time = 5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_CONTAINERS), \ new/datum/stack_recipe("dog bed", /obj/structure/bed/dogbed, 10, time = 1 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_FURNITURE), \ new/datum/stack_recipe("dresser", /obj/structure/dresser, 10, time = 1.5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_FURNITURE), \ new/datum/stack_recipe("picture frame", /obj/item/wallframe/picture, 1, time = 1 SECONDS, check_density = FALSE, category = CAT_ENTERTAINMENT),\ diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm index f299eea303dc..0b2abb6bd53d 100644 --- a/code/game/objects/items/stacks/stack.dm +++ b/code/game/objects/items/stacks/stack.dm @@ -206,35 +206,33 @@ . = (amount) /** - * Builds all recipes in a given recipe list and returns an association list containing them - * - * Arguments: - * * recipe_to_iterate - The list of recipes we are using to build recipes + * Recursively builds the recipes data for the given list of recipes, iterating through each recipe. + * If recipe is of type /datum/stack_recipe, it adds the recipe data to the recipes_data list with the title as the key. + * If recipe is of type /datum/stack_recipe_list, it recursively calls itself, scanning the entire list and adding each recipe to its category. */ -/obj/item/stack/proc/recursively_build_recipes(list/recipe_to_iterate) - var/list/L = list() - for(var/recipe in recipe_to_iterate) - if(istype(recipe, /datum/stack_recipe_list)) - var/datum/stack_recipe_list/R = recipe - L["[R.title]"] = recursively_build_recipes(R.recipes) +/obj/item/stack/proc/recursively_build_recipes(list/recipes_to_iterate) + var/list/recipes_data = list() + for(var/recipe in recipes_to_iterate) if(istype(recipe, /datum/stack_recipe)) - var/datum/stack_recipe/R = recipe - L["[R.title]"] = build_recipe(R) - return L + var/datum/stack_recipe/single_recipe = recipe + recipes_data["[single_recipe.title]"] = build_recipe_data(single_recipe) -/** - * Returns a list of properties of a given recipe - * - * Arguments: - * * R - The stack recipe we are using to get a list of properties - */ -/obj/item/stack/proc/build_recipe(datum/stack_recipe/R) - return list( - "res_amount" = R.res_amount, - "max_res_amount" = R.max_res_amount, - "req_amount" = R.req_amount, - "ref" = text_ref(R), - ) + else if(istype(recipe, /datum/stack_recipe_list)) + var/datum/stack_recipe_list/recipe_list = recipe + recipes_data["[recipe_list.title]"] = recursively_build_recipes(recipe_list.recipes) + + return recipes_data + +/obj/item/stack/proc/build_recipe_data(datum/stack_recipe/recipe) + var/list/data = list() + + data["ref"] = text_ref(recipe) + data["required_amount"] = recipe.req_amount + data["result_amount"] = recipe.res_amount + data["max_result_amount"] = recipe.max_res_amount + data["image"] = recipe.image + + return data /** * Checks if the recipe is valid to be used @@ -265,7 +263,8 @@ /obj/item/stack/ui_interact(mob/user, datum/tgui/ui) ui = SStgui.try_update_ui(user, src, ui) if(!ui) - ui = new(user, src, "StackCrafting", name) + ui = new(user, src, "StackCraft", name) + ui.set_autoupdate(FALSE) ui.open() /obj/item/stack/ui_data(mob/user) @@ -278,16 +277,14 @@ data["recipes"] = recursively_build_recipes(recipes) return data -/obj/item/stack/ui_act(action, params) - . = ..() - if(.) - return +/obj/item/stack/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) + if(..()) + return FALSE switch(action) if("make") var/datum/stack_recipe/recipe = locate(params["ref"]) var/multiplier = text2num(params["multiplier"]) - return make_item(usr, recipe, multiplier) /// The key / title for a radial option that shows the entire list of buildables (uses the old menu) diff --git a/code/game/objects/items/stacks/stack_recipe.dm b/code/game/objects/items/stacks/stack_recipe.dm index a065a4916b39..a6e5cdf395f5 100644 --- a/code/game/objects/items/stacks/stack_recipe.dm +++ b/code/game/objects/items/stacks/stack_recipe.dm @@ -38,6 +38,8 @@ var/trait_modifier = 1 /// Category for general crafting menu var/category + /// Cached recipe result base64 image + var/image /datum/stack_recipe/New( title, @@ -77,6 +79,16 @@ src.trait_modifier = trait_modifier src.category = src.category || category || CAT_MISC + var/obj/item/result = result_type + var/icon/result_icon = icon(result::icon, result::icon_state, SOUTH, 1) + var/paint = result::color + + result_icon.Scale(32, 32) + if(!isnull(paint) && paint != COLOR_WHITE) + result_icon.Blend(paint, ICON_MULTIPLY) + + src.image = "[icon2base64(result_icon)]" + /datum/stack_recipe/radial /// Optional info to be shown on the radial option for this item var/desc diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm index 76f728432d44..47582a860ad3 100755 --- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm @@ -328,7 +328,7 @@ /obj/structure/closet/secure_closet/tac name = "armory tac locker" - req_access = list(ACCESS_ARMORY) + req_access = list(ACCESS_CENT_GENERAL) icon_state = "tac" /obj/structure/closet/secure_closet/tac/PopulateContents() diff --git a/code/game/objects/structures/girders.dm b/code/game/objects/structures/girders.dm index 99317dd61aed..da3c3635ed97 100644 --- a/code/game/objects/structures/girders.dm +++ b/code/game/objects/structures/girders.dm @@ -371,6 +371,9 @@ /obj/structure/girder/deconstruct(disassembled = TRUE) if(!(flags_1 & NODECONSTRUCT_1)) var/remains = pick(/obj/item/stack/rods, /obj/item/stack/sheet/iron) + var/area/shipbreak/A = get_area(src) + if(istype(A)) //shipbreaking + remains = /obj/item/stack/scrap/framing new remains(loc) qdel(src) diff --git a/code/game/sound.dm b/code/game/sound.dm index 856c49c975c5..52281543f36f 100644 --- a/code/game/sound.dm +++ b/code/game/sound.dm @@ -263,15 +263,14 @@ GLOBAL_LIST_EMPTY(cached_mixer_channels) S.status = SOUND_UPDATE SEND_SOUND(src, S) -/client/proc/playtitlemusic(vol = 0.85) +/client/proc/playtitlemusic(vol = 85) set waitfor = FALSE UNTIL(SSticker.login_music_done) //wait for SSticker init to set the login music // monkestation edit: fix-lobby-music UNTIL(fully_created) if("[CHANNEL_LOBBYMUSIC]" in prefs.channel_volume) if(prefs.channel_volume["[CHANNEL_LOBBYMUSIC]"] != 0) - vol *= prefs.channel_volume["[CHANNEL_LOBBYMUSIC]"] * 0.01 + vol = prefs.channel_volume["[CHANNEL_LOBBYMUSIC]"] vol *= prefs.channel_volume["[CHANNEL_MASTER_VOLUME]"] * 0.01 - if((prefs && (!prefs.read_preference(/datum/preference/toggle/sound_lobby))) || CONFIG_GET(flag/disallow_title_music)) return @@ -279,6 +278,7 @@ GLOBAL_LIST_EMPTY(cached_mixer_channels) media = new /datum/media_manager(src) media.open() media.update_music() + media.lobby_music = TRUE if(!length(SSmedia_tracks.lobby_tracks)) return @@ -293,7 +293,8 @@ GLOBAL_LIST_EMPTY(cached_mixer_channels) SSmedia_tracks.first_lobby_play = FALSE var/datum/media_track/T = SSmedia_tracks.current_lobby_track - media.push_music(T.url, world.time, vol) + media.push_music(T.url, world.time, 1) + media.update_volume(vol) // this makes it easier if we modify volume later on to_chat(src,"Lobby music: [T.title] by [T.artist].") /proc/get_rand_frequency() diff --git a/code/game/turfs/closed/walls.dm b/code/game/turfs/closed/walls.dm index baf7cd488086..793447312b94 100644 --- a/code/game/turfs/closed/walls.dm +++ b/code/game/turfs/closed/walls.dm @@ -27,6 +27,7 @@ var/hardness = 40 var/slicing_duration = 100 //default time taken to slice the wall var/sheet_type = /obj/item/stack/sheet/iron + var/scrap_type = /obj/item/stack/scrap/plating var/sheet_amount = 2 var/girder_type = /obj/structure/girder /// A turf that will replace this turf when this turf is destroyed @@ -138,12 +139,20 @@ QUEUE_SMOOTH_NEIGHBORS(src) /turf/closed/wall/proc/break_wall() - new sheet_type(src, sheet_amount) + var/area/shipbreak/A = get_area(src) + if(istype(A)) //if we are actually in the shipbreaking zone... + new scrap_type(src, sheet_amount) + else + new sheet_type(src, sheet_amount) if(girder_type) return new girder_type(src) /turf/closed/wall/proc/devastate_wall() - new sheet_type(src, sheet_amount) + var/area/shipbreak/A = get_area(src) + if(istype(A)) + new scrap_type(src, sheet_amount) + else + new sheet_type(src, sheet_amount) if(girder_type) new /obj/item/stack/sheet/iron(src) diff --git a/code/modules/actionspeed/_actionspeed_modifier.dm b/code/modules/actionspeed/_actionspeed_modifier.dm index 761bfc3ff74a..07fce1f52f2d 100644 --- a/code/modules/actionspeed/_actionspeed_modifier.dm +++ b/code/modules/actionspeed/_actionspeed_modifier.dm @@ -40,8 +40,6 @@ can next move /datum/actionspeed_modifier/New(init_id) . = ..() - id = init_id - if(!id) id = "[type]" //We turn the path into a string. diff --git a/code/modules/admin/view_variables/reference_tracking.dm b/code/modules/admin/view_variables/reference_tracking.dm index b9fd0e6d2ad6..645467bf0fe0 100644 --- a/code/modules/admin/view_variables/reference_tracking.dm +++ b/code/modules/admin/view_variables/reference_tracking.dm @@ -1,29 +1,36 @@ #ifdef REFERENCE_TRACKING -#define REFSEARCH_RECURSE_LIMIT 64 -/datum/proc/find_references(references_to_clear = INFINITY) +/datum/proc/find_references(skip_alert) + running_find_references = type if(usr?.client) - if(tgui_alert(usr,"Running this will lock everything up for about 5 minutes. Would you like to begin the search?", "Find References", list("Yes", "No")) != "Yes") + if(usr.client.running_find_references) + log_reftracker("CANCELLED search for references to a [usr.client.running_find_references].") + usr.client.running_find_references = null + running_find_references = null + //restart the garbage collector + SSgarbage.can_fire = TRUE + SSgarbage.update_nextfire(reset_time = TRUE) + return + + if(!skip_alert && tgui_alert(usr,"Running this will lock everything up for about 5 minutes. Would you like to begin the search?", "Find References", list("Yes", "No")) != "Yes") + running_find_references = null return - src.references_to_clear = references_to_clear //this keeps the garbage collector from failing to collect objects being searched for in here SSgarbage.can_fire = FALSE - _search_references() - //restart the garbage collector - SSgarbage.can_fire = TRUE - SSgarbage.update_nextfire(reset_time = TRUE) + if(usr?.client) + usr.client.running_find_references = type -/datum/proc/_search_references() - log_reftracker("Beginning search for references to a [type], looking for [references_to_clear] refs.") + log_reftracker("Beginning search for references to a [type].") var/starting_time = world.time + + log_reftracker("Refcount for [type]: [refcount(src)]") + //Time to search the whole game for our ref - DoSearchVar(GLOB, "GLOB", starting_time) //globals + DoSearchVar(GLOB, "GLOB", search_time = starting_time) //globals log_reftracker("Finished searching globals") - if(src.references_to_clear == 0) - return //Yes we do actually need to do this. The searcher refuses to read weird lists //And global.vars is a really weird list @@ -31,46 +38,45 @@ for(var/key in global.vars) global_vars[key] = global.vars[key] - DoSearchVar(global_vars, "Native Global", starting_time) + DoSearchVar(global_vars, "Native Global", search_time = starting_time) log_reftracker("Finished searching native globals") - if(src.references_to_clear == 0) - return for(var/datum/thing in world) //atoms (don't beleive its lies) - DoSearchVar(thing, "World -> [thing.type]", starting_time) - if(src.references_to_clear == 0) - break + DoSearchVar(thing, "World -> [thing.type]", search_time = starting_time) log_reftracker("Finished searching atoms") - if(src.references_to_clear == 0) - return for(var/datum/thing) //datums - DoSearchVar(thing, "Datums -> [thing.type]", starting_time) - if(src.references_to_clear == 0) - break + DoSearchVar(thing, "Datums -> [thing.type]", search_time = starting_time) log_reftracker("Finished searching datums") - if(src.references_to_clear == 0) - return //Warning, attempting to search clients like this will cause crashes if done on live. Watch yourself #ifndef REFERENCE_DOING_IT_LIVE for(var/client/thing) //clients - DoSearchVar(thing, "Clients -> [thing.type]", starting_time) - if(src.references_to_clear == 0) - break + DoSearchVar(thing, "Clients -> [thing.type]", search_time = starting_time) log_reftracker("Finished searching clients") - if(src.references_to_clear == 0) - return #endif log_reftracker("Completed search for references to a [type].") -/datum/proc/DoSearchVar(potential_container, container_name, search_time, recursion_count, is_special_list) - if(recursion_count >= REFSEARCH_RECURSE_LIMIT) - log_reftracker("Recursion limit reached. [container_name]") + if(usr?.client) + usr.client.running_find_references = null + running_find_references = null + + //restart the garbage collector + SSgarbage.can_fire = TRUE + SSgarbage.update_nextfire(reset_time = TRUE) + +/datum/proc/DoSearchVar(potential_container, container_name, recursive_limit = 64, search_time = world.time) + #ifdef REFERENCE_TRACKING_DEBUG + if(SSgarbage.should_save_refs && !found_refs) + found_refs = list() + #endif + + if(usr?.client && !usr.client.running_find_references) return - if(references_to_clear == 0) + if(!recursive_limit) + log_reftracker("Recursion limit reached. [container_name]") return //Check each time you go down a layer. This makes it a bit slow, but it won't effect the rest of the game at all @@ -84,116 +90,73 @@ return datum_container.last_find_references = search_time + var/container_print = datum_container.ref_search_details() var/list/vars_list = datum_container.vars - var/is_atom = FALSE - var/is_area = FALSE - if(isatom(datum_container)) - is_atom = TRUE - if(isarea(datum_container)) - is_area = TRUE for(var/varname in vars_list) + #ifndef FIND_REF_NO_CHECK_TICK + CHECK_TICK + #endif + if (varname == "vars" || varname == "vis_locs") //Fun fact, vis_locs don't count for references + continue var/variable = vars_list[varname] - if(islist(variable)) - //Fun fact, vis_locs don't count for references - if(varname == "vars" || (is_atom && (varname == "vis_locs" || varname == "overlays" || varname == "underlays" || varname == "filters" || varname == "verbs" || (is_area && varname == "contents")))) - continue - // We do this after the varname check to avoid area contents (reading it incures a world loop's worth of cost) - if(!length(variable)) - continue - DoSearchVar(variable,\ - "[container_name] [datum_container.ref_search_details()] -> [varname] (list)",\ - search_time,\ - recursion_count + 1,\ - /*is_special_list = */ is_atom && (varname == "contents" || varname == "vis_contents" || varname == "locs")) - else if(variable == src) + + if(variable == src) #ifdef REFERENCE_TRACKING_DEBUG if(SSgarbage.should_save_refs) - if(!found_refs) - found_refs = list() found_refs[varname] = TRUE continue //End early, don't want these logging - else - log_reftracker("Found [type] [text_ref(src)] in [datum_container.type]'s [datum_container.ref_search_details()] [varname] var. [container_name]") - #else - log_reftracker("Found [type] [text_ref(src)] in [datum_container.type]'s [datum_container.ref_search_details()] [varname] var. [container_name]") #endif - references_to_clear -= 1 - if(references_to_clear == 0) - log_reftracker("All references to [type] [text_ref(src)] found, exiting.") - return + log_reftracker("Found [type] [text_ref(src)] in [datum_container.type]'s [container_print] [varname] var. [container_name]") continue + if(islist(variable)) + DoSearchVar(variable, "[container_name] [container_print] -> [varname] (list)", recursive_limit - 1, search_time) + else if(islist(potential_container)) + var/normal = IS_NORMAL_LIST(potential_container) var/list/potential_cache = potential_container for(var/element_in_list in potential_cache) - //Check normal sublists - if(islist(element_in_list)) - if(length(element_in_list)) - DoSearchVar(element_in_list, "[container_name] -> [element_in_list] (list)", search_time, recursion_count + 1) + #ifndef FIND_REF_NO_CHECK_TICK + CHECK_TICK + #endif //Check normal entrys - else if(element_in_list == src) + if(element_in_list == src) #ifdef REFERENCE_TRACKING_DEBUG if(SSgarbage.should_save_refs) - if(!found_refs) - found_refs = list() found_refs[potential_cache] = TRUE - continue - else - log_reftracker("Found [type] [text_ref(src)] in list [container_name].") - #else + continue //End early, don't want these logging + #endif log_reftracker("Found [type] [text_ref(src)] in list [container_name].") + continue + + var/assoc_val = null + if(!isnum(element_in_list) && normal) + assoc_val = potential_cache[element_in_list] + //Check assoc entrys + if(assoc_val == src) + #ifdef REFERENCE_TRACKING_DEBUG + if(SSgarbage.should_save_refs) + found_refs[potential_cache] = TRUE + continue //End early, don't want these logging #endif + log_reftracker("Found [type] [text_ref(src)] in list [container_name]\[[element_in_list]\]") + continue + //We need to run both of these checks, since our object could be hiding in either of them + //Check normal sublists + if(islist(element_in_list)) + DoSearchVar(element_in_list, "[container_name] -> [element_in_list] (list)", recursive_limit - 1, search_time) + //Check assoc sublists + if(islist(assoc_val)) + DoSearchVar(potential_container[element_in_list], "[container_name]\[[element_in_list]\] -> [assoc_val] (list)", recursive_limit - 1, search_time) + +/proc/qdel_and_find_ref_if_fail(datum/thing_to_del, force = FALSE) + thing_to_del.qdel_and_find_ref_if_fail(force) + +/datum/proc/qdel_and_find_ref_if_fail(force = FALSE) + SSgarbage.reference_find_on_fail[text_ref(src)] = TRUE + qdel(src, force) - // This is dumb as hell I'm sorry - // I don't want the garbage subsystem to count as a ref for the purposes of this number - // If we find all other refs before it I want to early exit, and if we don't I want to keep searching past it - var/ignore_ref = FALSE - var/list/queues = SSgarbage.queues - for(var/list/queue in queues) - if(potential_cache in queue) - ignore_ref = TRUE - break - if(ignore_ref) - log_reftracker("[container_name] does not count as a ref for our count") - else - references_to_clear -= 1 - if(references_to_clear == 0) - log_reftracker("All references to [type] [text_ref(src)] found, exiting.") - return - - if(!isnum(element_in_list) && !is_special_list) - // This exists to catch an error that throws when we access a special list - // is_special_list is a hint, it can be wrong - try - var/assoc_val = potential_cache[element_in_list] - //Check assoc sublists - if(islist(assoc_val)) - if(length(assoc_val)) - DoSearchVar(potential_container[element_in_list], "[container_name]\[[element_in_list]\] -> [assoc_val] (list)", search_time, recursion_count + 1) - //Check assoc entry - else if(assoc_val == src) - #ifdef REFERENCE_TRACKING_DEBUG - if(SSgarbage.should_save_refs) - if(!found_refs) - found_refs = list() - found_refs[potential_cache] = TRUE - continue - else - log_reftracker("Found [type] [text_ref(src)] in list [container_name]\[[element_in_list]\]") - #else - log_reftracker("Found [type] [text_ref(src)] in list [container_name]\[[element_in_list]\]") - #endif - references_to_clear -= 1 - if(references_to_clear == 0) - log_reftracker("All references to [type] [text_ref(src)] found, exiting.") - return - catch - // So if it goes wrong we kill it - is_special_list = TRUE - log_reftracker("Curiosity: [container_name] lead to an error when acessing [element_in_list], what is it?") - -#undef REFSEARCH_RECURSE_LIMIT #endif // Kept outside the ifdef so overrides are easy to implement diff --git a/code/modules/client/client_procs.dm b/code/modules/client/client_procs.dm index 733bb4b63c0b..01d0b5819806 100644 --- a/code/modules/client/client_procs.dm +++ b/code/modules/client/client_procs.dm @@ -966,6 +966,10 @@ GLOBAL_LIST_INIT(blacklisted_builds, list( if(failed && !(ckey in GLOB.interviews.approved_ckeys)) message_admins(span_adminnotice("Proxy Detection: [key_name_admin(src)] Overwatch detected this is a [string]")) interviewee = TRUE + + if(ckey in GLOB.interviews.approved_ckeys) + return FALSE + return failed /client/Click(atom/object, atom/location, control, params) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index b3d105951f61..0dfff4d73fe8 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -399,10 +399,15 @@ GLOBAL_LIST_EMPTY(preferences_datums) QDEL_NULL(body) body = new + RegisterSignal(body, COMSIG_QDELETING, PROC_REF(clear_body)) // Without this, it doesn't show up in the menu body.appearance_flags &= ~TILE_BOUND +/atom/movable/screen/map_view/char_preview/proc/clear_body(atom/movable/deletee) + if(body == deletee) + body = null + /datum/preferences/proc/create_character_profiles() var/list/profiles = list() diff --git a/code/modules/error_handler/error_handler.dm b/code/modules/error_handler/error_handler.dm index 89f430232789..84254ef615b7 100644 --- a/code/modules/error_handler/error_handler.dm +++ b/code/modules/error_handler/error_handler.dm @@ -34,6 +34,9 @@ GLOBAL_VAR_INIT(total_runtimes_skipped, 0) if(!error_last_seen) // A runtime is occurring too early in start-up initialization return ..() + if(!islist(error_last_seen)) + return ..() //how the fuck? + if(stack_workaround.Find(E.name)) var/list/data = json_decode(stack_workaround.group[1]) E.file = data[1] diff --git a/code/modules/events/disease_outbreak.dm b/code/modules/events/disease_outbreak.dm index 91b3c0f99431..da8c6409c43e 100644 --- a/code/modules/events/disease_outbreak.dm +++ b/code/modules/events/disease_outbreak.dm @@ -24,7 +24,9 @@ typepath = /datum/round_event/disease_outbreak max_occurrences = 1 min_players = 10 - weight = 4 + weight = 0 + track = EVENT_TRACK_MAJOR + earliest_start = 55 MINUTES category = EVENT_CATEGORY_HEALTH description = "A 'classic' virus will infect some members of the crew." min_wizard_trigger_potency = 2 @@ -143,9 +145,9 @@ name = "Disease Outbreak: Advanced" typepath = /datum/round_event/disease_outbreak/advanced category = EVENT_CATEGORY_HEALTH - weight = 5 //monkestation change 15 ==> 5 + weight = 0 //monkestation change 15 ==> 5 min_players = 35 // To avoid shafting lowpop - earliest_start = 15 MINUTES // give the chemist a chance + earliest_start = 55 MINUTES // give the chemist a chance description = "An 'advanced' disease will infect some members of the crew." min_wizard_trigger_potency = 2 max_wizard_trigger_potency = 6 diff --git a/code/modules/events/ghost_role/alien_infestation.dm b/code/modules/events/ghost_role/alien_infestation.dm index 04aaad6999c5..9b35b2145dcf 100644 --- a/code/modules/events/ghost_role/alien_infestation.dm +++ b/code/modules/events/ghost_role/alien_infestation.dm @@ -1,11 +1,12 @@ /datum/round_event_control/antagonist/solo/from_ghosts/alien_infestation name = "Alien Infestation" typepath = /datum/round_event/antagonist/solo/ghost/alien_infestation - weight = 5 + weight = 3 + max_occurrences = 1 min_players = 35 //monkie edit: 10 to 35 (tg what the fuck) - earliest_start = 45 MINUTES //monkie edit: 20 to 90 + earliest_start = 60 MINUTES //monkie edit: 20 to 90 //dynamic_should_hijack = TRUE category = EVENT_CATEGORY_ENTITIES description = "A xenomorph larva spawns on a random vent." @@ -22,7 +23,6 @@ JOB_SECURITY_ASSISTANT, ) required_enemies = 5 - max_occurrences = 1 prompted_picking = TRUE /datum/round_event_control/antagonist/solo/from_ghosts/alien_infestation/can_spawn_event(players_amt, allow_magic = FALSE, fake_check = FALSE) //MONKESTATION ADDITION: fake_check = FALSE diff --git a/code/modules/food_and_drinks/machinery/deep_fryer.dm b/code/modules/food_and_drinks/machinery/deep_fryer.dm index be5c84fa7f79..6eeba5c25e84 100644 --- a/code/modules/food_and_drinks/machinery/deep_fryer.dm +++ b/code/modules/food_and_drinks/machinery/deep_fryer.dm @@ -25,7 +25,7 @@ GLOBAL_LIST_INIT(oilfry_blacklisted_items, typecacheof(list( circuit = /obj/item/circuitboard/machine/deep_fryer /// What's being fried RIGHT NOW? - var/obj/item/frying + var/frying = FALSE /// How long the current object has been cooking for var/cook_time = 0 /// How much cooking oil is used per process @@ -51,19 +51,13 @@ GLOBAL_LIST_INIT(oilfry_blacklisted_items, typecacheof(list( /obj/machinery/deepfryer/Initialize(mapload) . = ..() + basket = new(src) create_reagents(50, OPENCONTAINER) reagents.add_reagent(/datum/reagent/consumable/cooking_oil, 25) fry_loop = new(src, FALSE) /obj/machinery/deepfryer/Destroy() QDEL_NULL(fry_loop) - QDEL_NULL(frying) - return ..() - -/obj/machinery/deepfryer/deconstruct(disassembled) - // This handles nulling out frying via exited - if(frying) - frying.forceMove(drop_location()) return ..() /obj/machinery/deepfryer/RefreshParts() @@ -76,8 +70,6 @@ GLOBAL_LIST_INIT(oilfry_blacklisted_items, typecacheof(list( /obj/machinery/deepfryer/examine(mob/user) . = ..() - if(frying) - . += "You can make out \a [frying] in the oil." if(in_range(user, src) || isobserver(user)) . += span_notice("The status display reads: Frying at [fry_speed*100]% speed.
Using [oil_use] units of oil per second.") @@ -109,7 +101,10 @@ GLOBAL_LIST_INIT(oilfry_blacklisted_items, typecacheof(list( to_chat(user, span_userdanger("Your cooking skills are not up to the legendary Doublefry technique.")) return // Handle opening up the fryer with tools - if(default_deconstruction_screwdriver(user, "fryer_off", "fryer_off", weapon)) //where's the open maint panel icon?! + var/fryer_icon = "fryer_off" + if(!basket) + fryer_icon = "fryer" + if(default_deconstruction_screwdriver(user, fryer_icon, fryer_icon, weapon)) //where's the open maint panel icon?! return else // So we skip the attack animation @@ -122,13 +117,10 @@ GLOBAL_LIST_INIT(oilfry_blacklisted_items, typecacheof(list( || HAS_TRAIT(weapon, TRAIT_NODROP) \ || (weapon.item_flags & (ABSTRACT|DROPDEL|HAND_ITEM))) return ..() - // Do the frying. - else if(!frying && user.transferItemToLoc(weapon, src)) - start_fry(weapon, user) - return return ..() +/* /obj/machinery/deepfryer/process(seconds_per_tick) ..() var/datum/reagent/consumable/cooking_oil/frying_oil = reagents.has_reagent(/datum/reagent/consumable/cooking_oil) @@ -149,47 +141,7 @@ GLOBAL_LIST_INIT(oilfry_blacklisted_items, typecacheof(list( visible_message(span_warning("[src] emits an acrid smell!")) use_power(active_power_usage) - -/obj/machinery/deepfryer/Exited(atom/movable/gone, direction) - . = ..() - if(gone == frying) - reset_frying() - -/obj/machinery/deepfryer/handle_atom_del(atom/deleting_atom) - . = ..() - if(deleting_atom == frying) - reset_frying() - -/obj/machinery/deepfryer/proc/reset_frying() - if(!QDELETED(frying)) - frying.AddElement(/datum/element/fried_item, cook_time) - - frying = null - frying_fried = FALSE - frying_burnt = FALSE - fry_loop.stop() - cook_time = 0 - icon_state = "fryer_off" - -/obj/machinery/deepfryer/proc/start_fry(obj/item/frying_item, mob/user) - to_chat(user, span_notice("You put [frying_item] into [src].")) - if(istype(frying_item, /obj/item/freeze_cube)) - log_bomber(user, "put a freeze cube in a", src) - visible_message(span_userdanger("[src] starts glowing... Oh no...")) - playsound(src, 'sound/effects/pray_chaplain.ogg', 100) - add_filter("entropic_ray", 10, list("type" = "rays", "size" = 35, "color" = COLOR_VIVID_YELLOW)) - addtimer(CALLBACK(src, PROC_REF(blow_up)), 5 SECONDS) - - frying = frying_item - // Give them reagents to put frying oil in - if(isnull(frying.reagents)) - frying.create_reagents(50, INJECTABLE) - if(user.mind) - ADD_TRAIT(frying, TRAIT_FOOD_CHEF_MADE, REF(user.mind)) - SEND_SIGNAL(frying, COMSIG_ITEM_ENTERED_FRYER) - - icon_state = "fryer_on" - fry_loop.start() +*/ /obj/machinery/deepfryer/proc/blow_up() visible_message(span_userdanger("[src] blows up from the entropic reaction!")) @@ -201,10 +153,12 @@ GLOBAL_LIST_INIT(oilfry_blacklisted_items, typecacheof(list( /obj/machinery/deepfryer/attack_hand(mob/living/user, list/modifiers) if(frying) - to_chat(user, span_notice("You eject [frying] from [src].")) - frying.forceMove(drop_location()) - if(Adjacent(user) && !issilicon(user)) - user.put_in_hands(frying) + frying = FALSE + reset_frying(user) + if(Adjacent(user) && !issilicon(user) && basket) + user.put_in_hands(basket) + basket = null + icon_state = "fryer" return else if(user.pulling && iscarbon(user.pulling) && reagents.total_volume) @@ -232,6 +186,11 @@ GLOBAL_LIST_INIT(oilfry_blacklisted_items, typecacheof(list( reagents.remove_all((reagents.total_volume/2)) dunking_target.Paralyze(60) user.changeNext_move(CLICK_CD_MELEE) + if(Adjacent(user) && !issilicon(user) && basket) + user.put_in_hands(basket) + basket = null + icon_state = "fryer" + return ..() #undef DEEPFRYER_COOKTIME diff --git a/code/modules/food_and_drinks/machinery/oven.dm b/code/modules/food_and_drinks/machinery/oven.dm index 077d775a4428..130a78142397 100644 --- a/code/modules/food_and_drinks/machinery/oven.dm +++ b/code/modules/food_and_drinks/machinery/oven.dm @@ -139,6 +139,17 @@ . = ..() open = !open if(open) + timer_duration = world.time - timer_laststart + deltimer(oven_timer) + oven_timer = null + if(used_tray) + var/obj/item/reagent_containers/cooking_container/located = locate(/obj/item/reagent_containers/cooking_container) in used_tray.contents + if(located) + if(user && user.Adjacent(src)) + located.process_item(src, user, lower_quality_on_fail=CHEWIN_BASE_QUAL_REDUCTION, send_message=TRUE) + else + located.process_item(src, user, lower_quality_on_fail=CHEWIN_BASE_QUAL_REDUCTION) + playsound(src, 'sound/machines/oven/oven_open.ogg', 75, TRUE) set_smoke_state(OVEN_SMOKE_STATE_NONE) to_chat(user, span_notice("You open [src].")) @@ -146,6 +157,8 @@ if(used_tray) used_tray.vis_flags &= ~VIS_HIDE else + timer_laststart = world.time + oven_timer = addtimer(CALLBACK(src, PROC_REF(go_off_queen)), timer_duration, TIMER_UNIQUE | TIMER_STOPPABLE) playsound(src, 'sound/machines/oven/oven_close.ogg', 75, TRUE) to_chat(user, span_notice("You close [src].")) if(used_tray) diff --git a/code/modules/food_and_drinks/machinery/stove_component.dm b/code/modules/food_and_drinks/machinery/stove_component.dm index b148e27f01b0..9ccdf8fc2302 100644 --- a/code/modules/food_and_drinks/machinery/stove_component.dm +++ b/code/modules/food_and_drinks/machinery/stove_component.dm @@ -23,6 +23,12 @@ var/container_y = 8 /// Modifies how much temperature is exposed to the reagents, and in turn modifies how fast the reagents are heated. var/heat_coefficient = 0.033 + ///our stove temperature + var/temperature = J_LO + ///list of temperatures + var/list/temperatures = list(J_LO, J_MED, J_HI) + ///our temp index + var/temp_index = 1 /datum/component/stove/Initialize(container_x = 0, container_y = 8, obj/item/spawn_container) if(!ismachinery(parent)) @@ -37,6 +43,7 @@ add_container(spawn_container) /datum/component/stove/RegisterWithParent() + RegisterSignal(parent, COMSIG_CLICK_ALT, PROC_REF(switch_temp)) RegisterSignal(parent, COMSIG_ATOM_ATTACKBY, PROC_REF(on_attackby)) RegisterSignal(parent, COMSIG_ATOM_ATTACK_HAND_SECONDARY, PROC_REF(on_attack_hand_secondary)) RegisterSignal(parent, COMSIG_ATOM_EXITED, PROC_REF(on_exited)) @@ -73,6 +80,7 @@ turn_off() return + SEND_SIGNAL(container, COMSIG_STOVE_PROCESS, temperature, seconds_per_tick, parent) container?.reagents.expose_temperature(SOUP_BURN_TEMP + 80, heat_coefficient) real_parent.use_power(real_parent.active_power_usage) @@ -165,6 +173,7 @@ /datum/component/stove/proc/on_requesting_context(obj/machinery/source, list/context, obj/item/held_item) SIGNAL_HANDLER + context[SCREENTIP_CONTEXT_ALT_LMB] = "Change Temperature" if(isnull(held_item)) context[SCREENTIP_CONTEXT_RMB] = "Turn [on ? "off":"on"] burner" return CONTEXTUAL_SCREENTIP_SET @@ -173,6 +182,14 @@ context[SCREENTIP_CONTEXT_LMB] = "Place container" return CONTEXTUAL_SCREENTIP_SET +/datum/component/stove/proc/switch_temp(datum/source, atom/target) + temp_index++ + if(temp_index > length(temperatures)) + temp_index = 1 + temperature = temperatures[temp_index] + var/atom/movable/parent_atom = parent + parent_atom.visible_message("Temperature set to [temperature]") + /datum/component/stove/proc/on_examine(obj/machinery/source, mob/user, list/examine_list) SIGNAL_HANDLER diff --git a/code/modules/food_and_drinks/plate.dm b/code/modules/food_and_drinks/plate.dm index 083a9c5236e1..46c24742512d 100644 --- a/code/modules/food_and_drinks/plate.dm +++ b/code/modules/food_and_drinks/plate.dm @@ -14,7 +14,7 @@ var/placement_offset = -15 /obj/item/plate/attackby(obj/item/I, mob/user, params) - if(!IS_EDIBLE(I)) + if(!IS_EDIBLE(I) && !istype(I, /obj/item/reagent_containers/cooking_container)) to_chat(user, span_notice("[src] is made for food, and food alone!")) return if(contents.len >= max_items) diff --git a/code/modules/food_and_drinks/recipes/drinks/drinks_alcoholic.dm b/code/modules/food_and_drinks/recipes/drinks/drinks_alcoholic.dm index 116982d597c2..ab21e0043156 100644 --- a/code/modules/food_and_drinks/recipes/drinks/drinks_alcoholic.dm +++ b/code/modules/food_and_drinks/recipes/drinks/drinks_alcoholic.dm @@ -290,7 +290,7 @@ /datum/chemical_reaction/drink/neurotoxin results = list(/datum/reagent/consumable/ethanol/neurotoxin = 2) - required_reagents = list(/datum/reagent/consumable/ethanol/gargle_blaster = 1, /datum/reagent/medicine/morphine = 1) + required_reagents = list(/datum/reagent/consumable/ethanol/gargle_blaster = 1, /datum/reagent/medicine/painkiller/morphine = 1) reaction_tags = REACTION_TAG_DRINK | REACTION_TAG_EASY | REACTION_TAG_OTHER /datum/chemical_reaction/drink/snowwhite @@ -558,7 +558,7 @@ /datum/chemical_reaction/drink/the_juice results = list(/datum/reagent/consumable/ethanol/the_juice = 5) - required_reagents = list(/datum/reagent/consumable/mushroom_tea = 1, /datum/reagent/bluespace = 1, /datum/reagent/toxin/mindbreaker = 1, /datum/reagent/consumable/ethanol/neurotoxin = 1, /datum/reagent/medicine/morphine = 1) + required_reagents = list(/datum/reagent/consumable/mushroom_tea = 1, /datum/reagent/bluespace = 1, /datum/reagent/toxin/mindbreaker = 1, /datum/reagent/consumable/ethanol/neurotoxin = 1, /datum/reagent/medicine/painkiller/morphine = 1) mix_message = "The liquids all swirl together into a deep purple." /datum/chemical_reaction/drink/helianthus diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_guide.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_guide.dm index 707d199cba8f..4076cffd109b 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_guide.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_guide.dm @@ -37,7 +37,6 @@ non_craftable = TRUE /datum/crafting_recipe/food/reaction/New() - . = ..() if(!ispath(reaction, /datum/chemical_reaction)) return diff --git a/code/modules/hydroponics/grown/mushrooms.dm b/code/modules/hydroponics/grown/mushrooms.dm index 3b94cebeab6a..8d88dba452f6 100644 --- a/code/modules/hydroponics/grown/mushrooms.dm +++ b/code/modules/hydroponics/grown/mushrooms.dm @@ -23,7 +23,7 @@ growthstages = 4 genes = list(/datum/plant_gene/trait/plant_type/fungal_metabolism) growing_icon = 'icons/obj/hydroponics/growing_mushrooms.dmi' - reagents_add = list(/datum/reagent/medicine/morphine = 0.35, /datum/reagent/medicine/c2/multiver = 0.35, /datum/reagent/consumable/nutriment = 0) + reagents_add = list(/datum/reagent/medicine/painkiller/morphine = 0.35, /datum/reagent/medicine/c2/multiver = 0.35, /datum/reagent/consumable/nutriment = 0) graft_gene = /datum/plant_gene/trait/plant_type/fungal_metabolism /obj/item/food/grown/mushroom/reishi diff --git a/code/modules/hydroponics/grown/tea_coffee.dm b/code/modules/hydroponics/grown/tea_coffee.dm index 9231102097f4..1f816c79360e 100644 --- a/code/modules/hydroponics/grown/tea_coffee.dm +++ b/code/modules/hydroponics/grown/tea_coffee.dm @@ -89,4 +89,4 @@ name = "coffee robusta beans" desc = "Increases robustness by 37 percent!" icon_state = "coffee_robusta" - grind_results = list(/datum/reagent/toxin/coffeepowder = 0, /datum/reagent/medicine/morphine = 0) + grind_results = list(/datum/reagent/toxin/coffeepowder = 0, /datum/reagent/medicine/painkiller/morphine = 0) diff --git a/code/modules/mapping/ruins.dm b/code/modules/mapping/ruins.dm index a7b9480a34e4..ff87057796bc 100644 --- a/code/modules/mapping/ruins.dm +++ b/code/modules/mapping/ruins.dm @@ -64,7 +64,16 @@ return center -/proc/seedRuins(list/z_levels = null, budget = 0, whitelist = list(/area/space), list/potentialRuins, clear_below = FALSE) +/** + * Loads the ruins for a given z level. + * @param z_levels The z levels to load ruins on. + * @param budget The budget to spend on ruins. Compare against the cost of the ruins in /datum/map_template/ruin. + * @param whitelist A list of areas to allow ruins to be placed in. + * @param potentialRuins A list of ruins to choose from. + * @param clear_below Whether to clear the area below the ruin. Used for multiz ruins. + * @param mineral_budget The budget to spend on ruins that spawn ore vents. Map templates with vents have that defined by mineral_cost. + */ +/proc/seedRuins(list/z_levels = null, budget = 0, whitelist = list(/area/space), list/potentialRuins, clear_below = FALSE, mineral_budget = 15) if(!z_levels || !z_levels.len) WARNING("No Z levels provided - Not generating ruins") return @@ -93,14 +102,14 @@ R.allow_duplicates = FALSE // no multiples for testing R.always_place = !R.unpickable // unpickable ruin means it spawns as a set with another ruin - if(R.cost > budget) //Why would you do that + if(R.cost > budget || R.mineral_cost > mineral_budget) //Why would you do that continue if(R.always_place) forced_ruins[R] = -1 if(R.unpickable) continue ruins_available[R] = R.placement_weight - while(budget > 0 && (ruins_available.len || forced_ruins.len)) + while((budget > 0 || mineral_budget > 0) && (ruins_available.len || forced_ruins.len)) var/datum/map_template/ruin/current_pick var/forced = FALSE var/forced_z //If set we won't pick z level and use this one instead. @@ -159,6 +168,7 @@ log_world("Failed to place [current_pick.name] ruin.") else budget -= current_pick.cost + mineral_budget -= current_pick.mineral_cost if(!current_pick.allow_duplicates) for(var/datum/map_template/ruin/R in ruins_available) if(R.id == current_pick.id) @@ -189,7 +199,7 @@ //Update the available list for(var/datum/map_template/ruin/R in ruins_available) - if(R.cost > budget) + if(R.cost > budget || R.mineral_cost > mineral_budget) ruins_available -= R log_world("Ruin loader finished with [budget] left to spend.") diff --git a/code/modules/mining/equipment/mineral_scanner.dm b/code/modules/mining/equipment/mineral_scanner.dm index 46b6d407e38a..1011e8af2ff2 100644 --- a/code/modules/mining/equipment/mineral_scanner.dm +++ b/code/modules/mining/equipment/mineral_scanner.dm @@ -82,7 +82,9 @@ duration = 35 pixel_x = -224 pixel_y = -224 + /// What animation easing to use when we create the ore overlay on rock walls/ore vents. + var/easing_style = EASE_IN /obj/effect/temp_visual/mining_overlay/Initialize(mapload) . = ..() - animate(src, alpha = 0, time = duration, easing = EASE_IN) + animate(src, alpha = 0, time = duration, easing = easing_style) diff --git a/code/modules/mob/dead/new_player/new_player.dm b/code/modules/mob/dead/new_player/new_player.dm index ed00c93095fd..18a4e63e6eda 100644 --- a/code/modules/mob/dead/new_player/new_player.dm +++ b/code/modules/mob/dead/new_player/new_player.dm @@ -299,6 +299,10 @@ return new_character.key = key //Manually transfer the key to log them in, new_character.stop_sound_channel(CHANNEL_LOBBYMUSIC) + if(new_character?.client?.media) + new_character.client.media.lobby_music = FALSE + new_character.client.media.stop_music() + var/area/joined_area = get_area(new_character.loc) if(joined_area) joined_area.on_joining_game(new_character) diff --git a/code/modules/mob/inventory.dm b/code/modules/mob/inventory.dm index 5d3d80745a3d..d6a9075abf80 100644 --- a/code/modules/mob/inventory.dm +++ b/code/modules/mob/inventory.dm @@ -285,7 +285,7 @@ * * Will pass FALSE if the item can not be dropped due to TRAIT_NODROP via doUnEquip() * If the item can be dropped, it will be forceMove()'d to the ground and the turf's Entered() will be called. */ -/mob/proc/dropItemToGround(obj/item/I, force = FALSE, silent = FALSE, invdrop = TRUE) +/mob/proc/dropItemToGround(obj/item/I, force = FALSE, silent = FALSE, invdrop = TRUE, violent = FALSE) if (isnull(I)) return TRUE @@ -300,6 +300,11 @@ I.pixel_y = I.base_pixel_y + rand(-6, 6) I.do_drop_animation(src) + if(violent) + var/turf/drop = drop_location() + I.launch_item(drop) + + //for when the item will be immediately placed in a loc other than the ground /mob/proc/transferItemToLoc(obj/item/I, newloc = null, force = FALSE, silent = TRUE) . = doUnEquip(I, force, newloc, FALSE, silent = silent) diff --git a/code/modules/mob/living/basic/space_fauna/regal_rat/regal_rat_actions.dm b/code/modules/mob/living/basic/space_fauna/regal_rat/regal_rat_actions.dm index 0f90a8b2ed02..2bcee4a6d55f 100644 --- a/code/modules/mob/living/basic/space_fauna/regal_rat/regal_rat_actions.dm +++ b/code/modules/mob/living/basic/space_fauna/regal_rat/regal_rat_actions.dm @@ -105,7 +105,7 @@ if (LAZYLEN(SSmobs.cheeserats) >= rat_cap) to_chat(owner,span_warning("There's too many mice on this station to beckon a new one! Find them first!")) return - new /mob/living/basic/mouse(owner.loc) + new /mob/living/basic/mouse/ratking(owner.loc) owner.visible_message(span_warning("[owner] commands a rat to their side!")) /// Makes a passed mob into our minion diff --git a/code/modules/mob/living/blood.dm b/code/modules/mob/living/blood.dm index 246e539d3985..4c9635ef9742 100644 --- a/code/modules/mob/living/blood.dm +++ b/code/modules/mob/living/blood.dm @@ -79,7 +79,7 @@ if(iter_part.generic_bleedstacks) // If you don't have any bleedstacks, don't try and heal them if(HAS_TRAIT(src, TRAIT_HEAVY_BLEEDER)) - iter_part.adjustBleedStacks(-1, 0) /// we basically double up on bleedstacks + iter_part.adjustBleedStacks(-1, minimum = 0) /// we basically double up on bleedstacks iter_part.adjustBleedStacks(-1, 0) if(temp_bleed) @@ -92,24 +92,23 @@ iter_part.update_part_wound_overlay() //Makes a blood drop, leaking amt units of blood from the mob -/mob/living/carbon/proc/bleed(amt) - if(!blood_volume || (status_flags & GODMODE)) +/mob/living/carbon/proc/bleed(amt, no_visual = FALSE) + if(!blood_volume || (status_flags & GODMODE) || HAS_TRAIT(src, TRAIT_NOBLOOD)) return blood_volume = max(blood_volume - amt, 0) //Blood loss still happens in locker, floor stays clean - if(isturf(loc) && prob(sqrt(amt)*BLOOD_DRIP_RATE_MOD)) - add_splatter_floor(loc, (amt <= 10)) + if(!no_visual && isturf(loc) && prob(sqrt(amt) * 80)) + add_splatter_floor(loc, small_drip = (amt < 10)) -/mob/living/carbon/human/bleed(amt) +/mob/living/carbon/human/bleed(amt, no_visual = FALSE) amt *= physiology.bleed_mod - if(!HAS_TRAIT(src, TRAIT_NOBLOOD)) - ..() + return ..() /// A helper to see how much blood we're losing per tick /mob/living/carbon/proc/get_bleed_rate() - if(!blood_volume) - return + if(!blood_volume || HAS_TRAIT(src, TRAIT_NOBLOOD)) + return 0 var/bleed_amt = 0 for(var/X in bodyparts) var/obj/item/bodypart/iter_bodypart = X @@ -117,10 +116,7 @@ return bleed_amt /mob/living/carbon/human/get_bleed_rate() - if(HAS_TRAIT(src, TRAIT_NOBLOOD)) - return - . = ..() - . *= physiology.bleed_mod + return ..() * physiology.bleed_mod /** * bleed_warn() is used to for carbons with an active client to occasionally receive messages warning them about their bleeding status (if applicable) @@ -324,26 +320,26 @@ . = safe //to add a splatter of blood or other mob liquid. -/mob/living/proc/add_splatter_floor(turf/T, small_drip) - if(get_blood_id() != /datum/reagent/blood) +/mob/living/proc/add_splatter_floor(turf/splattered, small_drip) + if((get_blood_id() != /datum/reagent/blood) || HAS_TRAIT(src, TRAIT_NOBLOOD)) return - if(!QDELETED(T)) - T = get_turf(src) - if(QDELETED(T) || isclosedturf(T) || (isgroundlessturf(T) && !GET_TURF_BELOW(T))) + if(!splattered) + splattered = get_turf(src) + if(isclosedturf(splattered) || (isgroundlessturf(splattered) && !GET_TURF_BELOW(splattered))) return var/datum/reagent/blood_type = get_blood_id() var/list/temp_blood_DNA if(small_drip) - if(!QDELETED(T.liquids)) + if(!QDELETED(splattered.liquids)) var/list/blood_drop = list(get_blood_id() = 0.1) - T.add_liquid_list(blood_drop, FALSE, 300) + splattered.add_liquid_list(blood_drop, FALSE, 300) return // Only a certain number of drips (or one large splatter) can be on a given turf. - var/obj/effect/decal/cleanable/blood/drip/drop = locate() in T + var/obj/effect/decal/cleanable/blood/drip/drop = locate() in splattered if(drop) if(drop.drips < 5) - T?.pollute_turf(/datum/pollutant/metallic_scent, 5) + splattered?.pollute_turf(/datum/pollutant/metallic_scent, 5) drop.drips++ drop.add_overlay(pick(drop.random_icon_states)) drop.transfer_mob_blood_dna(src) @@ -352,18 +348,18 @@ temp_blood_DNA = GET_ATOM_BLOOD_DNA(drop) //we transfer the dna from the drip to the splatter qdel(drop)//the drip is replaced by a bigger splatter else - T?.pollute_turf(/datum/pollutant/metallic_scent, 5) - drop = new(T, get_static_viruses()) + splattered?.pollute_turf(/datum/pollutant/metallic_scent, 5) + drop = new(splattered, get_static_viruses()) drop.transfer_mob_blood_dna(src) return // Create a bit of metallic pollution, as that's how blood smells - T.pollute_turf(/datum/pollutant/metallic_scent, 30) + splattered.pollute_turf(/datum/pollutant/metallic_scent, 30) // Find a blood decal or create a new one. - var/obj/effect/decal/cleanable/blood/B = locate() in T + var/obj/effect/decal/cleanable/blood/B = locate() in splattered if(!B) - B = new /obj/effect/decal/cleanable/blood/splatter(T, get_static_viruses()) + B = new /obj/effect/decal/cleanable/blood/splatter(splattered, get_static_viruses()) if(QDELETED(B)) //Give it up return B.bloodiness = min((B.bloodiness + BLOOD_AMOUNT_PER_DECAL), BLOOD_POOL_MAX) @@ -383,7 +379,7 @@ if(B.count > 9) qdel(B) var/list/blood_large = list(get_blood_id() = 20) - T.add_liquid_list(blood_large, FALSE, 300) + splattered.add_liquid_list(blood_large, FALSE, 300) /mob/living/carbon/human/add_splatter_floor(turf/T, small_drip) if(!HAS_TRAIT(src, TRAIT_NOBLOOD)) @@ -404,4 +400,33 @@ if(!B) B = new(T) +/** + * This proc is a helper for spraying blood for things like slashing/piercing wounds and dismemberment. + * + * The strength of the splatter in the second argument determines how much it can dirty and how far it can go + * + * Arguments: + * * splatter_direction: Which direction the blood is flying + * * splatter_strength: How many tiles it can go, and how many items it can pass over and dirty + */ +/mob/living/proc/spray_blood(splatter_direction, splatter_strength = 3) + if(!isturf(loc) || !blood_volume || HAS_TRAIT(src, TRAIT_NOBLOOD)) + return + var/obj/effect/decal/cleanable/blood/hitsplatter/our_splatter = new(loc) + our_splatter.add_blood_DNA(GET_ATOM_BLOOD_DNA(src)) + var/turf/targ = get_ranged_target_turf(src, splatter_direction, splatter_strength) + our_splatter.fly_towards(targ, splatter_strength) + +/** + * Helper proc for throwing blood particles around, similar to the spray_blood proc. + */ +/mob/living/proc/blood_particles(amount = rand(1, 3), angle = rand(0,360), min_deviation = -30, max_deviation = 30, min_pixel_z = 0, max_pixel_z = 6) + if(!isturf(loc) || !blood_volume ||HAS_TRAIT(src, TRAIT_NOBLOOD)) + return + for(var/i in 1 to amount) + var/obj/effect/decal/cleanable/blood/particle/droplet = new(loc) + droplet.add_blood_DNA(GET_ATOM_BLOOD_DNA(src)) + droplet.pixel_z = rand(min_pixel_z, max_pixel_z) + droplet.start_movement(angle + rand(min_deviation, max_deviation)) + #undef BLOOD_DRIP_RATE_MOD diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index a9e876648fa6..8ed56358f71e 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -1376,24 +1376,6 @@ log_combat(shover, target, "shoved", addition = "into [name]") return COMSIG_CARBON_SHOVE_HANDLED -/** - * This proc is a helper for spraying blood for things like slashing/piercing wounds and dismemberment. - * - * The strength of the splatter in the second argument determines how much it can dirty and how far it can go - * - * Arguments: - * * splatter_direction: Which direction the blood is flying - * * splatter_strength: How many tiles it can go, and how many items it can pass over and dirty - */ -/mob/living/carbon/proc/spray_blood(splatter_direction, splatter_strength = 3) - if(!isturf(loc)) - return - var/obj/effect/decal/cleanable/blood/hitsplatter/our_splatter = new(loc) - our_splatter.add_blood_DNA(GET_ATOM_BLOOD_DNA(src)) - our_splatter.blood_dna_info = get_blood_dna_list() - var/turf/targ = get_ranged_target_turf(src, splatter_direction, splatter_strength) - our_splatter.fly_towards(targ, splatter_strength) - /mob/living/carbon/ominous_nosebleed() var/obj/item/bodypart/head = get_bodypart(BODY_ZONE_HEAD) if(isnull(head)) diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm index 488e04eee515..73dad7af793c 100644 --- a/code/modules/mob/living/carbon/carbon_defense.dm +++ b/code/modules/mob/living/carbon/carbon_defense.dm @@ -103,8 +103,7 @@ if(I.damtype == BRUTE && affecting.can_bleed()) if(prob(33)) I.add_mob_blood(src) - var/turf/location = get_turf(src) - add_splatter_floor(location) + blood_particles(amount = rand(1, 1 + round(I.force/15, 1)), angle = (user == src ? rand(0, 360): get_angle(user, src))) if(get_dist(user, src) <= 1) //people with TK won't get smeared with blood user.add_mob_blood(src) if(affecting.body_zone == BODY_ZONE_HEAD) diff --git a/code/modules/mob/living/carbon/death.dm b/code/modules/mob/living/carbon/death.dm index a0edf5431b62..ba629ae60144 100644 --- a/code/modules/mob/living/carbon/death.dm +++ b/code/modules/mob/living/carbon/death.dm @@ -26,11 +26,11 @@ /mob/living/carbon/gib(no_brain, no_organs, no_bodyparts, safe_gib = FALSE) add_memory_in_range(src, 7, /datum/memory/witness_gib, protagonist = src) - if(safe_gib) // If you want to keep all the mob's items and not have them deleted - for(var/obj/item/W in src) - dropItemToGround(W) - if(prob(50)) - step(W, pick(GLOB.alldirs)) + // if(safe_gib) // If you want to keep all the mob's items and not have them deleted MONKESTATION EDIT + for(var/obj/item/W in src) + dropItemToGround(W, violent = TRUE) + if(prob(50)) + step(W, pick(GLOB.alldirs)) var/atom/Tsec = drop_location() for(var/mob/M in src) M.forceMove(Tsec) @@ -50,10 +50,11 @@ qdel(organs) //so the brain isn't transfered to the head when the head drops. continue var/org_zone = check_zone(organs.zone) //both groin and chest organs. - if(org_zone == BODY_ZONE_CHEST) - organs.Remove(src) - organs.forceMove(Tsec) - organs.throw_at(get_edge_target_turf(src,pick(GLOB.alldirs)),rand(1,3),5) + if(org_zone != BODY_ZONE_CHEST) + continue + organs.Remove(src) + organs.forceMove(Tsec) + organs.fly_away(Tsec, horizontal_multiplier = 2, vertical_multiplier = 1.2) else for(var/obj/item/organ/organs as anything in organs) if(no_brain && istype(organs, /obj/item/organ/internal/brain)) @@ -64,17 +65,18 @@ continue organs.Remove(src) organs.forceMove(Tsec) - organs.throw_at(get_edge_target_turf(src,pick(GLOB.alldirs)),rand(1,3),5) + organs.fly_away(Tsec, horizontal_multiplier = 2, vertical_multiplier = 1.2) /// Launches all bodyparts away from the mob. skip_head will keep the head attached. -/mob/living/carbon/spread_bodyparts(skip_head = FALSE) +/mob/living/carbon/spread_bodyparts(skip_head = FALSE, skip_organ = FALSE, violent = FALSE) + var/atom/Tsec = drop_location() for(var/obj/item/bodypart/part as anything in bodyparts) if(skip_head && part.body_zone == BODY_ZONE_HEAD) continue else if(part.body_zone == BODY_ZONE_CHEST) continue - part.drop_limb() - part.throw_at(get_edge_target_turf(src, pick(GLOB.alldirs)), rand(1,3), 5) + part.drop_limb(violent = violent) + part.fly_away(Tsec, horizontal_multiplier = 2, vertical_multiplier = 1.2) /mob/living/carbon/set_suicide(suicide_state) //you thought that box trick was pretty clever, didn't you? well now hardmode is on, boyo. . = ..() diff --git a/code/modules/mob/living/carbon/human/dummy.dm b/code/modules/mob/living/carbon/human/dummy.dm index 895a80e4ac80..fb6762f4863f 100644 --- a/code/modules/mob/living/carbon/human/dummy.dm +++ b/code/modules/mob/living/carbon/human/dummy.dm @@ -213,3 +213,7 @@ GLOBAL_LIST_EMPTY(dummy_mob_list) bound_height = 64 var/list/extra_bodyparts = list() + +/mob/living/carbon/human/dummy/extra_tall/Destroy() + . = ..() + extra_bodyparts = null diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index f82259bf5f22..a51504d92cd9 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -173,6 +173,8 @@ I.disease_contact(src, check_zone(user.zone_selected)) 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) + if(I.pain_damage) + cause_pain(target_area, I.pain_damage, I.damtype) // the attacked_by code varies among species return dna.species.spec_attacked_by(I, user, affecting, src) diff --git a/code/modules/mob/living/damage_procs.dm b/code/modules/mob/living/damage_procs.dm index 833e435b58a3..9793371343fa 100644 --- a/code/modules/mob/living/damage_procs.dm +++ b/code/modules/mob/living/damage_procs.dm @@ -34,13 +34,18 @@ bare_wound_bonus = 0, sharpness = NONE, attack_direction = null, - attacking_item, + obj/item/attacking_item, ) SHOULD_CALL_PARENT(TRUE) var/damage_amount = damage if(!forced) damage_amount *= ((100 - blocked) / 100) damage_amount *= get_incoming_damage_modifier(damage_amount, damagetype, def_zone, sharpness, attack_direction, attacking_item) + if(attacking_item) + if(!SEND_SIGNAL(attacking_item, COMSIG_ITEM_DAMAGE_MULTIPLIER, src, def_zone)) + attacking_item.last_multi = 1 + damage_amount *= attacking_item.last_multi + if(damage_amount <= 0) return 0 diff --git a/code/modules/mob/living/death.dm b/code/modules/mob/living/death.dm index 957839645d92..a82cacfaf960 100644 --- a/code/modules/mob/living/death.dm +++ b/code/modules/mob/living/death.dm @@ -18,9 +18,17 @@ spill_organs(no_brain, no_organs, no_bodyparts) if(!no_bodyparts) - spread_bodyparts(no_brain, no_organs) + spread_bodyparts(no_brain, no_organs, TRUE) spawn_gibs(no_bodyparts) + ///lol I want it to be bloody as fuck + blood_particles(5, min_deviation = 70, max_deviation = 120, min_pixel_z = 4, max_pixel_z = 11) + blood_particles(6, min_deviation = -70, max_deviation = -30, min_pixel_z = 5, max_pixel_z = 7) + blood_particles(4, min_deviation = -190, max_deviation = -80, min_pixel_z = 0, max_pixel_z = 9) + blood_particles(7, min_deviation = 130, max_deviation = 160, min_pixel_z = 12, max_pixel_z = 16) + blood_particles(4, min_deviation = -200, max_deviation = -220, min_pixel_z = 4, max_pixel_z = 6) + blood_particles(2, min_deviation = 161, max_deviation = 200, min_pixel_z = 2, max_pixel_z = 12) + ///lol SEND_SIGNAL(src, COMSIG_LIVING_GIBBED, no_brain, no_organs, no_bodyparts) qdel(src) @@ -33,7 +41,7 @@ /mob/living/proc/spill_organs() return -/mob/living/proc/spread_bodyparts() +/mob/living/proc/spread_bodyparts(skip_head, skip_organs, violent) return /** diff --git a/code/modules/plumbing/ducts.dm b/code/modules/plumbing/ducts.dm index 9e91221ea8a5..33c4c5e300c7 100644 --- a/code/modules/plumbing/ducts.dm +++ b/code/modules/plumbing/ducts.dm @@ -19,7 +19,7 @@ All the important duct code: ///our ductnet, wich tracks what we're connected to var/datum/ductnet/duct ///amount we can transfer per process. note that the ductnet can carry as much as the lowest capacity duct - var/capacity = 100 + var/capacity = 1000 ///the color of our duct var/duct_color = COLOR_VERY_LIGHT_GRAY diff --git a/code/modules/plumbing/plumbers/synthesizer.dm b/code/modules/plumbing/plumbers/synthesizer.dm index 4f9f3672ecba..479af8c800a7 100644 --- a/code/modules/plumbing/plumbers/synthesizer.dm +++ b/code/modules/plumbing/plumbers/synthesizer.dm @@ -20,6 +20,7 @@ var/list/dispensable_reagents = list( /datum/reagent/aluminium, /datum/reagent/bromine, + /datum/reagent/brine, /datum/reagent/carbon, /datum/reagent/chlorine, /datum/reagent/copper, diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index bd12ddd9a4fa..bc0f0ea385ce 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -172,8 +172,11 @@ playsound(src, fire_sound, fire_sound_volume, vary_fire_sound) /obj/item/gun/proc/shoot_live_shot(mob/living/user, pointblank = 0, atom/pbtarget = null, message = 1) + var/angle = get_angle(user, pbtarget)+rand(-recoil_deviation, recoil_deviation) + 180 + if(angle > 360) + angle -= 360 if(recoil && !tk_firing(user)) - shake_camera(user, recoil + 1, recoil) + recoil_camera(user, recoil+1, (recoil*recoil_backtime_multiplier) + 1, recoil, angle) fire_sounds() if(!suppressed) if(message) @@ -278,8 +281,9 @@ var/obj/item/bodypart/other_hand = user.has_hand_for_held_index(user.get_inactive_hand_index()) //returns non-disabled inactive hands if(weapon_weight == WEAPON_HEAVY && (user.get_inactive_held_item() || !other_hand)) - balloon_alert(user, "use both hands!") - return + if(!istype(user.get_inactive_held_item(), /obj/item/offhand)) + balloon_alert(user, "use both hands!") + return //DUAL (or more!) WIELDING var/bonus_spread = 0 var/loop_counter = 0 diff --git a/code/modules/projectiles/guns/ballistic.dm b/code/modules/projectiles/guns/ballistic.dm index f5eb4bb7c71f..134980255e35 100644 --- a/code/modules/projectiles/guns/ballistic.dm +++ b/code/modules/projectiles/guns/ballistic.dm @@ -127,8 +127,11 @@ ///What is the cap on our misfire probability? Do not set this to 100. var/misfire_probability_cap = 25 + var/wield_recoil = 0 + /obj/item/gun/ballistic/Initialize(mapload) . = ..() + AddComponent(/datum/component/two_handed, wield_callback = CALLBACK(src, PROC_REF(on_wield)), unwield_callback = CALLBACK(src, PROC_REF(on_unwield))) if(!spawn_magazine_type) spawn_magazine_type = accepted_magazine_type if (!spawnwithmagazine) @@ -143,6 +146,12 @@ chamber_round(replace_new_round = TRUE) update_appearance() RegisterSignal(src, COMSIG_ITEM_RECHARGED, PROC_REF(instant_reload)) + register_context() + +/obj/item/gun/ballistic/add_context(atom/source, list/context, obj/item/held_item, mob/user) + . = ..() + context[SCREENTIP_CONTEXT_CTRL_LMB] = "Toggle Bracing" + return CONTEXTUAL_SCREENTIP_SET /obj/item/gun/ballistic/Destroy() QDEL_NULL(magazine) diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 4b668f80fef0..28166514b241 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -8,6 +8,7 @@ icon_state = "bullet" density = FALSE anchored = TRUE + animate_movement = NO_STEPS //Use SLIDE_STEPS in conjunction with legacy mouse_opacity = MOUSE_OPACITY_TRANSPARENT movement_type = FLYING wound_bonus = CANT_WOUND // can't wound by default @@ -314,8 +315,9 @@ new /obj/effect/temp_visual/dir_setting/bloodsplatter/xenosplatter(target_turf, splatter_dir) else new /obj/effect/temp_visual/dir_setting/bloodsplatter(target_turf, splatter_dir) - if(prob(33)) - living_target.add_splatter_floor(target_turf) + if(prob(damage)) + living_target.blood_particles(amount = rand(1, 1 + round(damage/20, 1)), angle = src.Angle) + else if (!isnull(hit_bodypart) && (hit_bodypart.biological_state & (BIO_METAL|BIO_WIRED))) var/random_damage_mult = RANDOM_DECIMAL(0.85, 1.15) // SOMETIMES you can get more or less sparks var/damage_dealt = ((damage / (1 - (blocked / 100))) * random_damage_mult) diff --git a/code/modules/projectiles/projectile/bullets.dm b/code/modules/projectiles/projectile/bullets.dm index b4198caeafd1..98e2f150d65d 100644 --- a/code/modules/projectiles/projectile/bullets.dm +++ b/code/modules/projectiles/projectile/bullets.dm @@ -13,6 +13,12 @@ wound_falloff_tile = -5 embed_falloff_tile = -3 + light_system = OVERLAY_LIGHT + light_outer_range = 1.25 + light_power = 1 + light_color = COLOR_VERY_SOFT_YELLOW + light_on = TRUE + speed = 0.4 //twice as fast /obj/projectile/bullet/smite diff --git a/code/modules/reagents/chemistry/holder.dm b/code/modules/reagents/chemistry/holder.dm index 3f5c833c11b5..a897c80dc6ec 100644 --- a/code/modules/reagents/chemistry/holder.dm +++ b/code/modules/reagents/chemistry/holder.dm @@ -230,6 +230,8 @@ //add the reagent to the existing if it exists for(var/datum/reagent/iter_reagent as anything in cached_reagents) if(iter_reagent.type == reagent) + if(!iter_reagent.can_merge) + return if(override_base_ph) added_ph = iter_reagent.ph iter_reagent.purity = ((iter_reagent.creation_purity * iter_reagent.volume) + (added_purity * amount)) /(iter_reagent.volume + amount) //This should add the purity to the product @@ -2040,6 +2042,7 @@ monkestation end */ qdel(reagents) reagents = new /datum/reagents(max_vol, flags) reagents.my_atom = src + return reagents /atom/movable/chem_holder name = "This atom exists to hold chems. If you can see this, make an issue report" diff --git a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm index e017d291a67c..fbc515d8bec4 100644 --- a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm +++ b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm @@ -87,7 +87,7 @@ var/list/emagged_reagents = list( /datum/reagent/toxin/carpotoxin, /datum/reagent/medicine/mine_salve, - /datum/reagent/medicine/morphine, + /datum/reagent/medicine/painkiller/morphine, /datum/reagent/drug/space_drugs, /datum/reagent/australium ) @@ -710,7 +710,7 @@ /datum/reagent/fuel/oil, /datum/reagent/saltpetre, /datum/reagent/medicine/mine_salve, - /datum/reagent/medicine/morphine, + /datum/reagent/medicine/painkiller/morphine, /datum/reagent/drug/space_drugs, /datum/reagent/toxin, /datum/reagent/toxin/plasma, diff --git a/code/modules/reagents/chemistry/reagents.dm b/code/modules/reagents/chemistry/reagents.dm index aa3d15916aa0..69929561ee18 100644 --- a/code/modules/reagents/chemistry/reagents.dm +++ b/code/modules/reagents/chemistry/reagents.dm @@ -126,6 +126,8 @@ GLOBAL_LIST_INIT(name2reagent, build_name2reagent()) var/list/metabolized_traits /// A list of traits to apply while the reagent is in a mob. var/list/added_traits + ///are we able to merge + var/can_merge = TRUE /datum/reagent/New() SHOULD_CALL_PARENT(TRUE) diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm index da8cf6bf8e26..f7dd0808abba 100644 --- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm @@ -595,7 +595,7 @@ holder.remove_reagent(/datum/reagent/toxin/histamine, 3 * REM * seconds_per_tick) ..() -/datum/reagent/medicine/morphine +/datum/reagent/medicine/painkiller/morphine name = "Morphine" description = "A painkiller that allows the patient to move at full speed even when injured. Causes drowsiness and eventually unconsciousness in high doses. Overdose will cause a variety of effects, ranging from minor to lethal." reagent_state = LIQUID @@ -607,28 +607,20 @@ addiction_types = list(/datum/addiction/opioids = 10) metabolized_traits = list(TRAIT_ANALGESIA) -/datum/reagent/medicine/morphine/on_mob_metabolize(mob/living/affected_mob) +/datum/reagent/medicine/painkiller/morphine/on_mob_metabolize(mob/living/affected_mob) ..() affected_mob.add_movespeed_mod_immunities(type, /datum/movespeed_modifier/damage_slowdown) -/datum/reagent/medicine/morphine/on_mob_end_metabolize(mob/living/affected_mob) +/datum/reagent/medicine/painkiller/morphine/on_mob_end_metabolize(mob/living/affected_mob) affected_mob.remove_movespeed_mod_immunities(type, /datum/movespeed_modifier/damage_slowdown) ..() -/datum/reagent/medicine/morphine/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired) +/datum/reagent/medicine/painkiller/morphine/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired) if(current_cycle >= 5) affected_mob.add_mood_event("numb", /datum/mood_event/narcotic_medium, name) - switch(current_cycle) - if(11) - to_chat(affected_mob, span_warning("You start to feel tired...") ) - if(12 to 24) - affected_mob.adjust_drowsiness(2 SECONDS * REM * seconds_per_tick) - if(24 to INFINITY) - affected_mob.Sleeping(40 * REM * seconds_per_tick) - . = TRUE ..() -/datum/reagent/medicine/morphine/overdose_process(mob/living/affected_mob, seconds_per_tick, times_fired) +/datum/reagent/medicine/painkiller/morphine/overdose_process(mob/living/affected_mob, seconds_per_tick, times_fired) if(SPT_PROB(18, seconds_per_tick)) affected_mob.drop_all_held_items() affected_mob.set_dizzy_if_lower(4 SECONDS) diff --git a/code/modules/reagents/chemistry/recipes/drugs.dm b/code/modules/reagents/chemistry/recipes/drugs.dm index b692d22b516e..a60e74c9d044 100644 --- a/code/modules/reagents/chemistry/recipes/drugs.dm +++ b/code/modules/reagents/chemistry/recipes/drugs.dm @@ -5,7 +5,7 @@ /datum/chemical_reaction/krokodil results = list(/datum/reagent/drug/krokodil = 6) - required_reagents = list(/datum/reagent/medicine/diphenhydramine = 1, /datum/reagent/medicine/morphine = 1, /datum/reagent/space_cleaner = 1, /datum/reagent/potassium = 1, /datum/reagent/phosphorus = 1, /datum/reagent/fuel = 1) + required_reagents = list(/datum/reagent/medicine/diphenhydramine = 1, /datum/reagent/medicine/painkiller/morphine = 1, /datum/reagent/space_cleaner = 1, /datum/reagent/potassium = 1, /datum/reagent/phosphorus = 1, /datum/reagent/fuel = 1) mix_message = "The mixture dries into a pale blue powder." required_temp = 380 reaction_tags = REACTION_TAG_EASY | REACTION_TAG_DRUG @@ -84,7 +84,7 @@ /datum/chemical_reaction/aranesp results = list(/datum/reagent/drug/aranesp = 3) - required_reagents = list(/datum/reagent/medicine/epinephrine = 1, /datum/reagent/medicine/atropine = 1, /datum/reagent/medicine/morphine = 1) + required_reagents = list(/datum/reagent/medicine/epinephrine = 1, /datum/reagent/medicine/atropine = 1, /datum/reagent/medicine/painkiller/morphine = 1) reaction_tags = REACTION_TAG_EASY | REACTION_TAG_DRUG | REACTION_TAG_TOXIN | REACTION_TAG_DAMAGING /datum/chemical_reaction/happiness diff --git a/code/modules/reagents/chemistry/recipes/medicine.dm b/code/modules/reagents/chemistry/recipes/medicine.dm index 8edab30eee11..582f3cf11a5a 100644 --- a/code/modules/reagents/chemistry/recipes/medicine.dm +++ b/code/modules/reagents/chemistry/recipes/medicine.dm @@ -328,7 +328,7 @@ reaction_tags = REACTION_TAG_EASY | REACTION_TAG_HEALING | REACTION_TAG_ORGAN /datum/chemical_reaction/medicine/morphine - results = list(/datum/reagent/medicine/morphine = 2) + results = list(/datum/reagent/medicine/painkiller/morphine = 2) required_reagents = list(/datum/reagent/carbon = 2, /datum/reagent/hydrogen = 2, /datum/reagent/consumable/ethanol = 1, /datum/reagent/oxygen = 1) required_temp = 480 reaction_tags = REACTION_TAG_EASY | REACTION_TAG_HEALING | REACTION_TAG_OTHER | REACTION_TAG_DRUG diff --git a/code/modules/reagents/chemistry/recipes/toxins.dm b/code/modules/reagents/chemistry/recipes/toxins.dm index 2bc8aa303138..4011a8142b9f 100644 --- a/code/modules/reagents/chemistry/recipes/toxins.dm +++ b/code/modules/reagents/chemistry/recipes/toxins.dm @@ -248,7 +248,7 @@ /datum/chemical_reaction/zombiepowder results = list(/datum/reagent/toxin/zombiepowder = 2) - required_reagents = list(/datum/reagent/toxin/carpotoxin = 5, /datum/reagent/medicine/morphine = 5, /datum/reagent/copper = 5) + required_reagents = list(/datum/reagent/toxin/carpotoxin = 5, /datum/reagent/medicine/painkiller/morphine = 5, /datum/reagent/copper = 5) mix_message = "The mixture turns into a strange green powder." is_cold_recipe = FALSE required_temp = 100 diff --git a/code/modules/reagents/reagent_containers.dm b/code/modules/reagents/reagent_containers.dm index 0da5d92aa3c0..c9ef536d8ded 100644 --- a/code/modules/reagents/reagent_containers.dm +++ b/code/modules/reagents/reagent_containers.dm @@ -346,3 +346,9 @@ filling.color = mix_color_from_reagents(reagents.reagent_list) . += filling + +/obj/item/reagent_containers/afterattack(atom/target, mob/user, proximity_flag, click_parameters) + . = ..() + after_attack_pour(user, target) + +/obj/item/reagent_containers/proc/after_attack_pour(mob/user, atom/target) diff --git a/code/modules/reagents/reagent_containers/cups/_cup.dm b/code/modules/reagents/reagent_containers/cups/_cup.dm index 72ad62edda93..a51fa5bac242 100644 --- a/code/modules/reagents/reagent_containers/cups/_cup.dm +++ b/code/modules/reagents/reagent_containers/cups/_cup.dm @@ -89,6 +89,7 @@ checkLiked(fraction, target_mob) ////playsound(target_mob.loc,'sound/items/drink.ogg', rand(10,50), TRUE) // monkestation edit original playsound(target_mob.loc,get_drink_sound(target_mob), rand(10,50), TRUE) // monkestation edit: synthesized drink sounds + SEND_SIGNAL(target_mob.reagents, COMSIG_DRANK_REAGENT, reagents, gulp_size) if(!iscarbon(target_mob)) return var/mob/living/carbon/carbon_drinker = target_mob @@ -136,6 +137,7 @@ reagents.trans_to(chugger, gulp_size, transfered_by = chugger, methods = INGEST) checkLiked(fraction, chugger) playsound(chugger.loc,get_drink_sound(chugger), rand(10,50), TRUE) + SEND_SIGNAL(chugger.reagents, COMSIG_DRANK_REAGENT, reagents, gulp_size) if(!iscarbon(chugger)) continue var/mob/living/carbon/carbon_drinker = chugger diff --git a/code/modules/reagents/reagent_containers/cups/bottle.dm b/code/modules/reagents/reagent_containers/cups/bottle.dm index 9394124c9d2a..8aeb4118c8a6 100644 --- a/code/modules/reagents/reagent_containers/cups/bottle.dm +++ b/code/modules/reagents/reagent_containers/cups/bottle.dm @@ -41,7 +41,7 @@ name = "morphine bottle" desc = "A small bottle of morphine." icon = 'icons/obj/medical/chemical.dmi' - list_reagents = list(/datum/reagent/medicine/morphine = 30) + list_reagents = list(/datum/reagent/medicine/painkiller/morphine = 30) /obj/item/reagent_containers/cup/bottle/chloralhydrate name = "chloral hydrate bottle" diff --git a/code/modules/reagents/reagent_containers/hypospray.dm b/code/modules/reagents/reagent_containers/hypospray.dm index ea56463d1fba..c7f9cf6c65be 100644 --- a/code/modules/reagents/reagent_containers/hypospray.dm +++ b/code/modules/reagents/reagent_containers/hypospray.dm @@ -188,7 +188,7 @@ icon_state = "morphen" inhand_icon_state = "morphen" base_icon_state = "morphen" - list_reagents = list(/datum/reagent/medicine/morphine = 10) + list_reagents = list(/datum/reagent/medicine/painkiller/morphine = 10) /obj/item/reagent_containers/hypospray/medipen/oxandrolone name = "oxandrolone medipen" @@ -245,9 +245,9 @@ icon_state = "stimpen" inhand_icon_state = "stimpen" base_icon_state = "stimpen" - volume = 30 - amount_per_transfer_from_this = 30 - list_reagents = list( /datum/reagent/medicine/epinephrine = 8, /datum/reagent/medicine/c2/aiuri = 8, /datum/reagent/medicine/c2/libital = 8, /datum/reagent/medicine/leporazine = 6) + volume = 35 + amount_per_transfer_from_this = 35 + list_reagents = list( /datum/reagent/medicine/epinephrine = 8, /datum/reagent/medicine/c2/aiuri = 8, /datum/reagent/medicine/c2/libital = 8, /datum/reagent/medicine/leporazine = 6, /datum/reagent/medicine/painkiller/hydromorphone = 5) /obj/item/reagent_containers/hypospray/medipen/survival/inject(mob/living/affected_mob, mob/user) if(lavaland_equipment_pressure_check(get_turf(user))) @@ -272,9 +272,9 @@ icon_state = "luxpen" inhand_icon_state = "atropen" base_icon_state = "luxpen" - volume = 60 - amount_per_transfer_from_this = 60 - list_reagents = list(/datum/reagent/medicine/salbutamol = 10, /datum/reagent/medicine/c2/penthrite = 10, /datum/reagent/medicine/oxandrolone = 10, /datum/reagent/medicine/sal_acid = 10 ,/datum/reagent/medicine/omnizine = 10 ,/datum/reagent/medicine/leporazine = 10) + volume = 70 + amount_per_transfer_from_this = 70 + list_reagents = list(/datum/reagent/medicine/salbutamol = 10, /datum/reagent/medicine/c2/penthrite = 10, /datum/reagent/medicine/oxandrolone = 10, /datum/reagent/medicine/sal_acid = 10 ,/datum/reagent/medicine/omnizine = 10 ,/datum/reagent/medicine/leporazine = 10, /datum/reagent/medicine/painkiller/hydromorphone = 10) /obj/item/reagent_containers/hypospray/medipen/atropine name = "atropine autoinjector" diff --git a/code/modules/reagents/reagent_containers/pill.dm b/code/modules/reagents/reagent_containers/pill.dm index 28d259d6cd8b..85f2baa58a4a 100644 --- a/code/modules/reagents/reagent_containers/pill.dm +++ b/code/modules/reagents/reagent_containers/pill.dm @@ -110,7 +110,7 @@ name = "morphine pill" desc = "Commonly used to treat insomnia." icon_state = "pill8" - list_reagents = list(/datum/reagent/medicine/morphine = 30) + list_reagents = list(/datum/reagent/medicine/painkiller/morphine = 30) rename_with_volume = TRUE /obj/item/reagent_containers/pill/stimulant diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm index c9535ddff580..c4746b9cacfa 100644 --- a/code/modules/reagents/reagent_containers/syringes.dm +++ b/code/modules/reagents/reagent_containers/syringes.dm @@ -312,4 +312,4 @@ list_reagents = list(/datum/reagent/toxin/fentanyl = 15) /obj/item/reagent_containers/syringe/contraband/morphine - list_reagents = list(/datum/reagent/medicine/morphine = 15) + list_reagents = list(/datum/reagent/medicine/painkiller/morphine = 15) diff --git a/code/modules/religion/burdened/psyker.dm b/code/modules/religion/burdened/psyker.dm index 4c31e56ac899..e913584081cd 100644 --- a/code/modules/religion/burdened/psyker.dm +++ b/code/modules/religion/burdened/psyker.dm @@ -44,7 +44,7 @@ return new_head_owner.become_blind(limb_id) -/obj/item/bodypart/head/psyker/drop_limb(special, dismembered) +/obj/item/bodypart/head/psyker/drop_limb(special, dismembered, violent) owner.cure_blind(limb_id) return ..() diff --git a/code/modules/research/techweb/all_nodes.dm b/code/modules/research/techweb/all_nodes.dm index bd68bed5b46c..4a818a53e8dc 100644 --- a/code/modules/research/techweb/all_nodes.dm +++ b/code/modules/research/techweb/all_nodes.dm @@ -15,6 +15,11 @@ "basic_micro_laser", "basic_scanning", "blast", + "big_manipulator", + "assembler", + "manipulator_filter", + "manipulator_filter_cargo", + "manipulator_filter_internal", "bodybag", "bounced_radio", "bowl", @@ -63,6 +68,8 @@ "infrared_emitter", "intercom_frame", "kitchen_knife", + "recipe_card", + "bottling_kit", "laptop", "light_bulb", "light_replacer", @@ -1429,6 +1436,9 @@ "borg_upgrade_damagemod", "borg_upgrade_rangemod", "cargoexpress", + "b_smelter", + "b_refinery", + "brm", "cooldownmod", "damagemod", "drill", diff --git a/code/modules/research/xenobiology/vatgrowing/samples/cell_lines/common.dm b/code/modules/research/xenobiology/vatgrowing/samples/cell_lines/common.dm index f22e6109fb35..97ce1219d682 100644 --- a/code/modules/research/xenobiology/vatgrowing/samples/cell_lines/common.dm +++ b/code/modules/research/xenobiology/vatgrowing/samples/cell_lines/common.dm @@ -158,7 +158,7 @@ supplementary_reagents = list( /datum/reagent/consumable/honey = 8, //Hunny. /datum/reagent/growthserum = 5, - /datum/reagent/medicine/morphine = 4, //morphine is a vital nutrient for space bears, but it is better as a supplemental for gameplay reasons. + /datum/reagent/medicine/painkiller/morphine = 4, //morphine is a vital nutrient for space bears, but it is better as a supplemental for gameplay reasons. /datum/reagent/consumable/nutriment/vitamin = 3) suppressive_reagents = list( @@ -245,7 +245,7 @@ suppressive_reagents = list( /datum/reagent/consumable/frostoil = -4, /datum/reagent/cryostylane = -4, - /datum/reagent/medicine/morphine = -2, + /datum/reagent/medicine/painkiller/morphine = -2, /datum/reagent/consumable/ice = -2) //Brrr! virus_suspectibility = 0 diff --git a/code/modules/spells/spell_types/touch/scream_for_me.dm b/code/modules/spells/spell_types/touch/scream_for_me.dm index 231b6927e504..f12ab5ce7eff 100644 --- a/code/modules/spells/spell_types/touch/scream_for_me.dm +++ b/code/modules/spells/spell_types/touch/scream_for_me.dm @@ -21,6 +21,7 @@ span_userdanger("The spell bounces from [victim]'s skin back into your arm!"), ) var/obj/item/bodypart/to_wound = caster.get_holding_bodypart_of_item(hand) + victim.cause_pain(BODY_ZONE_EVERYTHING, 50, BRUTE) caster.cause_wound_of_type_and_severity(WOUND_SLASH, to_wound, WOUND_SEVERITY_MODERATE, WOUND_SEVERITY_CRITICAL) /datum/action/cooldown/spell/touch/scream_for_me/cast_on_hand_hit(obj/item/melee/touch_attack/hand, mob/living/victim, mob/living/carbon/caster) diff --git a/code/modules/surgery/bodyparts/_bodyparts.dm b/code/modules/surgery/bodyparts/_bodyparts.dm index 5e082c0d323e..5178752d63af 100644 --- a/code/modules/surgery/bodyparts/_bodyparts.dm +++ b/code/modules/surgery/bodyparts/_bodyparts.dm @@ -406,18 +406,27 @@ SHOULD_CALL_PARENT(TRUE) var/atom/drop_loc = drop_location() - if(IS_ORGANIC_LIMB(src)) + if(IS_ORGANIC_LIMB(src) && violent_removal) playsound(drop_loc, 'sound/misc/splort.ogg', 50, TRUE, -1) seep_gauze(9999) // destroy any existing gauze if any exists - for(var/obj/item/organ/bodypart_organ in get_organs()) - bodypart_organ.transfer_to_limb(src, owner) - for(var/obj/item/organ/external/external in external_organs) - external.remove_from_limb() - external.forceMove(drop_loc) + for(var/obj/item/organ/organ as anything in get_organs()) + if(owner) + organ.Remove(owner) + else + organ.remove_from_limb(src) + organ.forceMove(drop_loc) + if(violent_removal) + organ.fly_away(drop_loc) for(var/obj/item/item_in_bodypart in src) item_in_bodypart.forceMove(drop_loc) + if(violent_removal && owner) + item_in_bodypart.transfer_mob_blood_dna(owner) + + if(owner) + owner.update_body() + else + update_icon_dropped() - update_icon_dropped() ///since organs aren't actually stored in the bodypart themselves while attached to a person, we have to query the owner for what we should have /obj/item/bodypart/proc/get_organs() diff --git a/code/modules/surgery/bodyparts/dismemberment.dm b/code/modules/surgery/bodyparts/dismemberment.dm index 9f4d54e86d61..6991a2bdd46a 100644 --- a/code/modules/surgery/bodyparts/dismemberment.dm +++ b/code/modules/surgery/bodyparts/dismemberment.dm @@ -51,48 +51,27 @@ target_turf = new_turf if(new_turf.density) break - throw_at(target_turf, throw_range, throw_speed) + fly_away(limb_owner.drop_location()) return TRUE /obj/item/bodypart/chest/dismember(dam_type = BRUTE, silent=TRUE, wounding_type) - if(!owner) + if(!owner || (bodypart_flags & BODYPART_UNREMOVABLE)) return FALSE - var/mob/living/carbon/chest_owner = owner - if(bodypart_flags & BODYPART_UNREMOVABLE) + if(owner.status_flags & GODMODE) return FALSE - if(HAS_TRAIT(chest_owner, TRAIT_NODISMEMBER)) + if(HAS_TRAIT(owner, TRAIT_NODISMEMBER)) return FALSE - . = list() - if(wounding_type != WOUND_BURN && isturf(chest_owner.loc) && can_bleed()) - chest_owner.add_splatter_floor(chest_owner.loc) - playsound(get_turf(chest_owner), 'sound/misc/splort.ogg', 80, TRUE) - for(var/obj/item/organ/organ as anything in chest_owner.organs) - var/org_zone = check_zone(organ.zone) - if(org_zone != BODY_ZONE_CHEST) - continue - organ.Remove(chest_owner) - organ.forceMove(chest_owner.loc) - . += organ - - for(var/obj/item/organ/external/ext_organ as anything in src.external_organs) - if(!(ext_organ.organ_flags & ORGAN_UNREMOVABLE)) - ext_organ.Remove(chest_owner) - ext_organ.forceMove(chest_owner.loc) - . += ext_organ + return drop_organs(violent_removal = TRUE) - if(cavity_item) - cavity_item.forceMove(chest_owner.loc) - . += cavity_item - cavity_item = null ///limb removal. The "special" argument is used for swapping a limb with a new one without the effects of losing a limb kicking in. -/obj/item/bodypart/proc/drop_limb(special, dismembered) +/obj/item/bodypart/proc/drop_limb(special, dismembered, violent = FALSE) if(!owner) return var/atom/drop_loc = owner.drop_location() - SEND_SIGNAL(owner, COMSIG_CARBON_REMOVE_LIMB, src, dismembered) + SEND_SIGNAL(owner, COMSIG_CARBON_REMOVE_LIMB, src, dismembered, special) SEND_SIGNAL(src, COMSIG_BODYPART_REMOVED, owner, dismembered) update_limb(dropping_limb = TRUE) //limb is out and about, it can't really be considered an implant @@ -154,7 +133,7 @@ qdel(src) return - if(limb_id == SPECIES_OOZELING) + if((limb_id == SPECIES_OOZELING) && !special) to_chat(phantom_owner, span_warning("Your [src] splatters with an unnerving squelch!")) playsound(phantom_owner, 'sound/effects/blobattack.ogg', 60, TRUE) phantom_owner.blood_volume -= 60 //Makes for 120 when you regenerate it. @@ -246,11 +225,11 @@ head.tongue = src ..() -/obj/item/bodypart/chest/drop_limb(special) +/obj/item/bodypart/chest/drop_limb(special, dismembered, violent) if(special) return ..() -/obj/item/bodypart/arm/drop_limb(special) +/obj/item/bodypart/arm/drop_limb(special, dismembered, violent) var/mob/living/carbon/arm_owner = owner . = ..() @@ -260,7 +239,7 @@ if(arm_owner.hand_bodyparts[held_index] == src) // We only want to do this if the limb being removed is the active hand part. // This catches situations where limbs are "hot-swapped" such as augmentations and roundstart prosthetics. - arm_owner.dropItemToGround(arm_owner.get_item_for_held_index(held_index), 1) + arm_owner.dropItemToGround(arm_owner.get_item_for_held_index(held_index), 1, violent = violent) arm_owner.hand_bodyparts[held_index] = null if(arm_owner.handcuffed) arm_owner.handcuffed.forceMove(drop_location()) @@ -271,10 +250,10 @@ var/atom/movable/screen/inventory/hand/associated_hand = arm_owner.hud_used.hand_slots["[held_index]"] associated_hand?.update_appearance() if(arm_owner.gloves) - arm_owner.dropItemToGround(arm_owner.gloves, TRUE) + arm_owner.dropItemToGround(arm_owner.gloves, TRUE, violent = violent) arm_owner.update_worn_gloves() //to remove the bloody hands overlay -/obj/item/bodypart/leg/drop_limb(special) +/obj/item/bodypart/leg/drop_limb(special, dismembered, violent) if(owner && !special) if(owner.legcuffed) owner.legcuffed.forceMove(owner.drop_location()) //At this point bodypart is still in nullspace @@ -282,14 +261,14 @@ owner.legcuffed = null owner.update_worn_legcuffs() if(owner.shoes) - owner.dropItemToGround(owner.shoes, TRUE) + owner.dropItemToGround(owner.shoes, TRUE, violent = violent) return ..() -/obj/item/bodypart/head/drop_limb(special) +/obj/item/bodypart/head/drop_limb(special, dismembered, violent) if(!special) //Drop all worn head items for(var/obj/item/head_item as anything in list(owner.glasses, owner.ears, owner.wear_mask, owner.head)) - owner.dropItemToGround(head_item, force = TRUE) + owner.dropItemToGround(head_item, force = TRUE, violent = violent) qdel(owner.GetComponent(/datum/component/creamed)) //clean creampie overlay flushed emoji diff --git a/code/modules/unit_tests/mapload_space_verification.dm b/code/modules/unit_tests/mapload_space_verification.dm index 6ff32145efa1..ff93799281e3 100644 --- a/code/modules/unit_tests/mapload_space_verification.dm +++ b/code/modules/unit_tests/mapload_space_verification.dm @@ -25,6 +25,7 @@ /area/station/solars, // magnet area is designed specifically to hold the asteroid /area/station/cargo/mining/asteroid_magnet, + /area/shipbreak, )) // We aren't planetary, so let's check area placements and ensure stuff lines up. diff --git a/code/modules/vending/drinnerware.dm b/code/modules/vending/drinnerware.dm index 6b8d2e75d1a8..2e57c0f53063 100644 --- a/code/modules/vending/drinnerware.dm +++ b/code/modules/vending/drinnerware.dm @@ -9,6 +9,12 @@ "name" = "Kitchen Utensils", "icon" = FA_ICON_KITCHEN_SET, "products" = list( + /obj/item/reagent_containers/cooking_container/deep_basket = 10, + /obj/item/reagent_containers/cooking_container/pan = 10, + /obj/item/reagent_containers/cooking_container/pot = 10, + /obj/item/reagent_containers/cooking_container/bowl = 10, + /obj/item/reagent_containers/cooking_container/oven = 10, + /obj/item/reagent_containers/cooking_container/board = 10, /obj/item/storage/bag/tray = 8, /obj/item/reagent_containers/cup/soup_pot = 3, /obj/item/kitchen/spoon/soup_ladle = 3, diff --git a/icons/effects/blood.dmi b/icons/effects/blood.dmi index 36f30f74f1ffa9f8c81de88984adae0a0fabf50c..9bf25b8de2bbf9546e8feaa08eb4c4fe488a487d 100644 GIT binary patch literal 191871 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⪚`7_t^H@{DXhic6#-PO5! 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

*=R7n`fC9wh0@-sZ@` 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 a35FfoUeYMn+U$eCug6Lnk4hiB2>n0J4Wx|# literal 166083 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 mFkS`wer(ld%obCwXXv9IcaI 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 z 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
99U9zN41btN);P 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

>r$P3 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 qRGG|Q%scpf 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%0AN@-E6l4>y~W)qiU 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%0A<0mUeq2?lTV!?*`O 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 literal 0 HcmV?d00001 diff --git a/monkestation/code/datums/brain_damage/magic.dm b/monkestation/code/datums/brain_damage/magic.dm index bda553113ebf..2ced19ca79ca 100644 --- a/monkestation/code/datums/brain_damage/magic.dm +++ b/monkestation/code/datums/brain_damage/magic.dm @@ -11,7 +11,8 @@ /datum/brain_trauma/magic/stalker_multiple/Destroy() for (var/stalker in stalkers) - QDEL_NULL(stalker) + stalkers -= stalker + qdel(stalker) return ..() /datum/brain_trauma/magic/stalker_multiple/on_gain() @@ -22,6 +23,7 @@ var/turf/stalker_source = locate(owner.x + pick(-12, 12), owner.y + pick(-12, -6, 0, 6, 12), owner.z) //random corner var/obj/effect/client_image_holder/stalker_phantom/stalker = new(stalker_source, owner) stalkers += stalker + stalker.host = src /datum/brain_trauma/magic/stalker_multiple/proc/create_stalker_multiple(count) var/turf/stalker_source = locate(owner.x + pick(-12, 12), owner.y + pick(-12, -6, 0, 6, 12), owner.z) //random corner @@ -29,10 +31,12 @@ for (var/x = 0; x < count; x++) var/obj/effect/client_image_holder/stalker_phantom/stalker = new(stalker_source, owner) stalkers += stalker + stalker.host = src /datum/brain_trauma/magic/stalker_multiple/on_lose() for (var/stalker in stalkers) - QDEL_NULL(stalker) + stalkers -= stalker + qdel(stalker) return ..() /datum/brain_trauma/magic/stalker_multiple/on_life(seconds_per_tick, times_fired) diff --git a/monkestation/code/datums/patreon_data.dm b/monkestation/code/datums/patreon_data.dm index 1e9e664fa787..c1ee4bc83ed4 100644 --- a/monkestation/code/datums/patreon_data.dm +++ b/monkestation/code/datums/patreon_data.dm @@ -59,7 +59,7 @@ access_rank = ACCESS_COMMAND_RANK if(TRAITOR_RANK) access_rank = ACCESS_TRAITOR_RANK - if(NUKIE_RANK, OLD_NUKIE_RANK) + if(NUKIE_RANK, OLD_NUKIE_RANK, REALLY_ANOTHER_FUCKING_NUKIE_RANK) access_rank = ACCESS_NUKIE_RANK /datum/patreon_data/proc/has_access(rank) @@ -70,6 +70,6 @@ return FALSE /datum/patreon_data/proc/is_donator() - if((owned_rank != NO_RANK) && (owned_rank != UNSUBBED)) - return TRUE - return FALSE + if((owned_rank == NO_RANK) || !owned_rank || (owned_rank == UNSUBBED)) + return FALSE + return TRUE diff --git a/monkestation/code/datums/status_effects/food_buffs.dm b/monkestation/code/datums/status_effects/food_buffs.dm index 16ea5135f204..45f79a5edf3f 100644 --- a/monkestation/code/datums/status_effects/food_buffs.dm +++ b/monkestation/code/datums/status_effects/food_buffs.dm @@ -2,6 +2,7 @@ duration = 10 MINUTES status_type = STATUS_EFFECT_REPLACE show_duration = TRUE + var/quality_modifier = 1 /datum/status_effect/food/on_apply() if(HAS_TRAIT(owner, TRAIT_GOURMAND)) diff --git a/monkestation/code/game/sound.dm b/monkestation/code/game/sound.dm index 54efc47f10d7..3505ea2e567d 100644 --- a/monkestation/code/game/sound.dm +++ b/monkestation/code/game/sound.dm @@ -69,7 +69,7 @@ /datum/ui_module/volume_mixer/proc/set_channel_volume(channel, vol, mob/user) if((channel == CHANNEL_LOBBYMUSIC) || (channel == CHANNEL_MASTER_VOLUME)) if(isnewplayer(user)) - user.client.media.update_volume(0.5 + (vol * 0.05)) + user.client.media.update_volume((vol)) var/sound/S = sound(null, channel = channel, volume = vol) S.status = SOUND_UPDATE diff --git a/monkestation/code/modules/a_ship_in_need_of_breaking/area.dm b/monkestation/code/modules/a_ship_in_need_of_breaking/area.dm new file mode 100644 index 000000000000..e2a2cba4fd74 --- /dev/null +++ b/monkestation/code/modules/a_ship_in_need_of_breaking/area.dm @@ -0,0 +1,4 @@ + +/area/shipbreak + name = "Shipbreak Zone" + icon_state = "escape" diff --git a/monkestation/code/modules/a_ship_in_need_of_breaking/icons/shipbreaking.dmi b/monkestation/code/modules/a_ship_in_need_of_breaking/icons/shipbreaking.dmi new file mode 100644 index 0000000000000000000000000000000000000000..93f4b56f0d2897fc9849c606c9a0883fd605740b GIT binary patch literal 1921 zcmV-{2Y&d8P)V=-0C=2@ki8CrFbss}flb!kg{=IqohDaijNF)-8#4UqFn$>nA za!0K%zz->+Sf(iaV687EATd8DJ@@>uC$IZxYQop|2;%$V+GoiPI{eNi|2v69LR(o` zp_yEc)Z#rL63oU>ecs!4v(xX1!$U8-I&R|J`+mQI^X2g!+L1KTk#rL?M3YunDp(2& z@y*6SgfxN?YzZH|c_#+j!bq z3Va!nQZ)rZ~?@NPG-Jfg)?1%0PX{Om(|6rdJZA)kNlx}#&aWBb?XX~*yOU4)}1rcw+> z;M*`nQF!Gyg{A!*QcubITT17xPZy|pAkMe-UQ@6LaB{Xc-W(@Yeb~1B%9WX_f4^=G z0DfWJ7!}QzA%Crh!10FSgXN%K*jDecLE5Vcwj$ef4yM{3-8Zlu3Mgq z2&m@$Ag}>Y59|n|P7J2>2QO@+Am=GhZEJ00HUdvE$x;E1ohAya8(MmX8P;F`h~L-O zZ+kr2-3TuTYydlvgZBS{T6*Hu(6tnx*JCyU+EJv9n!&c!Br`%fnr8tR!VbHLup_Vm zR#*SovLAL22?E0N%Re_8fy0V&?m*7yEoIW-e7`8fBG<$Fk^9AV#r3k|RQ0k3L%10M zs5%y8m13OIj=5-k_x-%l8}N&j_~6H-0`CC<7$eCd0itJ8`hs9U6a)d{<9@IRugCiI z>mz(Yy1~BHf^!~E4pbeosTu)R-t5-HM@L6o9cPE$3o7uOZU7Hwj;?mX%d^y9i~!W? zZkDDBhYEqd)6CVYU+~3={wMA0fg5Z?1lDsZHUJ&~PbjCg^)6lmf)2tlRUJJD4`P$q zEZ>I5qfYSQ3T5jtAe+tB<&cDJ1S~B4%$HgshBqxA$ci8Wkb(s9Tg(Vbfk#PV+5Snn zUa&R5%I%vK9)p~S^kX$VAqcYwZxOzH%*|q42<*R;jOzO>>jM}`Jcykl*WEAY+dI=&}KYE zK&|V-pdJZERA7zBc%o)k6r6_f6p%5E_cy|?T@r~zB9TZW5{X12kw_#GiKLEb*bzlB zGTP{)qMk0kcV`d3=?9zct&fv%bFeZYfd`b%);QhF=N?^V^iCZnwa=c zJzCm*tdnT^6K{XQl>y+{5O-|utg#QCY3kJv=xH$wf=FSD7G_F<@R$Z8rbLR_YEE+z2f7U@-&X7rVdW^*|T~(SoS)cS+V@UcO*5cQ;?0sF=bMCLxIr zTtxs<3W_iUPTzAuq?#?F!}HMw&@MiY0wt#3edYU+B_i{FCVp2J(I2b&?!B!<-`pxS zUt9O~=X@1mq#hx@=o#^J^lDp0goJ^ZVU0BkuX0qMgP+O#ZFxM7IToS##%|YE@jw5T z{g-lIfPtrZL5uktyy#vUDv58@0n&R%!t=u}#Nx#V7-8;*x#G6s`GttE2t$0}d1|6r znY_FkCc17AZCKo~(7B&yV7Mf= 2) - to_chat(owner, span_boldwarning("The souls you have stolen are preventing you from going incorporeal!")) - return - - for(var/mob/living/watcher in viewers(9, target)) - if(watcher == target) - continue - - if(!watcher.mind) //only mobs with minds stop you from jaunting - continue - - if(isdead(watcher)) - continue - - if(isaicamera(watcher)) - var/mob/camera/ai_eye/ai_eye = watcher - var/mob/living/silicon/ai/true_ai = ai_eye.ai - true_ai.disconnect_shell() // should never happen, lets try it anyway - true_ai.view_core() - to_chat(true_ai, span_warning("UNEXPECTED ENERGY SURGE -- RETURNING TO THE CORE")) - do_sparks(3, FALSE, true_ai) - true_ai.adjustBruteLoss(30) // same as a light explosion, to dis-encurage the AI always watching the slasher and telling their location - continue - - target.balloon_alert(owner, "you can only vanish unseen.") - return - - . = ..() - - if(is_jaunting(target)) - . = exit_jaunt(target) - else - . = enter_jaunt(target) - -/datum/action/cooldown/slasher/incorporealize/proc/enter_jaunt(mob/living/jaunter) - var/datum/antagonist/slasher/slasherdatum = owner.mind.has_antag_datum(/datum/antagonist/slasher) - - update_the_button(jaunter) - - animate(jaunter, alpha = 0, time = 1.5 SECONDS) - SLEEP_CHECK_DEATH(1.5 SECONDS, src) - - var/obj/effect/dummy/phased_mob/jaunt = new jaunt_type(get_turf(jaunter), jaunter) - - RegisterSignal(jaunt, COMSIG_MOB_EJECTED_FROM_JAUNT, PROC_REF(on_jaunt_exited)) - jaunter.add_traits(list(TRAIT_MAGICALLY_PHASED, TRAIT_RUNECHAT_HIDDEN), REF(src)) - jaunter.drop_all_held_items() - ADD_TRAIT(jaunter, TRAIT_NO_TRANSFORM, INNATE_TRAIT) - - // Give them some bloody hands to prevent them from doing things - var/obj/item/bloodcrawl/left_hand = new(jaunter) - var/obj/item/bloodcrawl/right_hand = new(jaunter) - left_hand.icon_state = "bloodhand_right" // Icons swapped intentionally.. - right_hand.icon_state = "bloodhand_left" // ..because perspective, or something - jaunter.put_in_hands(left_hand) - jaunter.put_in_hands(right_hand) - - // Make sure they wont be burning for 20 seconds - jaunter.extinguish_mob() - REMOVE_TRAIT(jaunter, TRAIT_NO_TRANSFORM, INNATE_TRAIT) - - slasherdatum.corporeal = FALSE - ADD_TRAIT(jaunter, TRAIT_NOBREATH, REF(src)) - - // This needs to happen at the end, after all the traits and stuff is handled - SEND_SIGNAL(jaunter, COMSIG_MOB_ENTER_JAUNT, src, jaunt) - return jaunt - -/datum/action/cooldown/slasher/incorporealize/proc/exit_jaunt(mob/living/unjaunter) - var/datum/antagonist/slasher/slasherdatum = owner.mind.has_antag_datum(/datum/antagonist/slasher) - var/obj/effect/dummy/phased_mob/jaunt = unjaunter.loc - - update_the_button(unjaunter) - - jaunt.eject_jaunter() - - animate(unjaunter, alpha = 255, time = 1.5 SECONDS) - SLEEP_CHECK_DEATH(1.5 SECONDS, src) - - for(var/obj/item/bloodcrawl/blood_hand in unjaunter.held_items) - unjaunter.temporarilyRemoveItemFromInventory(blood_hand, force = TRUE) - qdel(blood_hand) - - slasherdatum.corporeal = TRUE - REMOVE_TRAIT(unjaunter, TRAIT_NOBREATH, REF(src)) - - return TRUE - -/datum/action/cooldown/slasher/incorporealize/proc/update_the_button(atom/target) - if(is_jaunting(target)) - name = "Incorporealize" - desc = "Become incorporeal, capable of moving through walls and being completely invisible, but unable to interact with the world. Can only be used when corporeal and when not in view of any human being. " - button_icon_state = "incorporealize" - else - name = "Corporealize" - desc = "Manifest your being from your incorporeal state." - button_icon_state = "corporealize" - build_all_button_icons(UPDATE_BUTTON_NAME|UPDATE_BUTTON_ICON) - -/datum/action/cooldown/slasher/incorporealize/proc/on_jaunt_exited(obj/effect/dummy/phased_mob/jaunt, mob/living/unjaunter) - unjaunter.remove_traits(list(TRAIT_MAGICALLY_PHASED, TRAIT_RUNECHAT_HIDDEN), REF(src)) - // This needs to happen at the end, after all the traits and stuff is handled - SEND_SIGNAL(unjaunter, COMSIG_MOB_AFTER_EXIT_JAUNT, src) - -/datum/action/cooldown/slasher/incorporealize/Remove(mob/living/remove_from) - exit_jaunt(remove_from) - if(!is_jaunting(remove_from)) // In case you have made exit_jaunt conditional, as in mirror walk - return ..() - var/obj/effect/dummy/phased_mob/jaunt = remove_from.loc - jaunt.eject_jaunter() - return ..() diff --git a/monkestation/code/modules/antagonists/slasher/slasher_datum.dm b/monkestation/code/modules/antagonists/slasher/slasher_datum.dm deleted file mode 100644 index ca39a5a59a85..000000000000 --- a/monkestation/code/modules/antagonists/slasher/slasher_datum.dm +++ /dev/null @@ -1,168 +0,0 @@ -/datum/outfit/slasher - name = "Slasher Outfit" - suit = /obj/item/clothing/suit/apron/slasher - uniform = /obj/item/clothing/under/color/random/slasher - shoes = /obj/item/clothing/shoes/slasher_shoes - mask = /obj/item/clothing/mask/gas/slasher - -/datum/antagonist/slasher - name = "\improper Slasher" - show_in_antagpanel = TRUE - roundend_category = "slashers" - antagpanel_category = "Slasher" - job_rank = ROLE_SLASHER - antag_hud_name = "slasher" - show_name_in_check_antagonists = TRUE - hud_icon = 'monkestation/icons/mob/slasher.dmi' - preview_outfit = /datum/outfit/slasher - show_to_ghosts = TRUE - - ///the linked machette that the slasher can summon even if destroyed and is unique to them - var/obj/item/slasher_machette/linked_machette - ///toggles false/true if we are visible in order to breathe out or in - var/breath_out = FALSE - ///rallys the amount of souls effects are based on this - var/souls_sucked = 0 - ///when we sucked our last soul in world time - var/last_soul_sucked = 0 - ///cooldown we should have for soul sucking without downside - var/soul_digestion = 5 MINUTES - ///our current soul punishment state - var/soul_punishment = 0 - ///our cached brute_mod - var/cached_brute_mod = 0 - ///processes to heartbeat - var/heartbeat_processes = 0 - ///processes until wail if above punishment threshold - var/wailing_processes = 0 - ///our breath processes - var/breath_processes = 0 - ///list of mobs that have been given a overlay so we can remove later - var/list/mobs_with_fullscreens = list() - ///this is needed because it double fires sometimes before finishing - var/is_hudchecking = FALSE - /// the mob we are stalking - var/mob/living/carbon/human/stalked_human - /// how close we are in % to finishing stalking - var/stalk_precent = 0 - /// are we corporeal - var/corporeal = TRUE - ///ALL Powers currently owned - var/list/datum/action/cooldown/slasher/powers = list() - -/datum/antagonist/slasher/apply_innate_effects(mob/living/mob_override) - . = ..() - var/mob/living/current_mob = mob_override || owner.current - - ADD_TRAIT(current_mob, TRAIT_BATON_RESISTANCE, "slasher") - ADD_TRAIT(current_mob, TRAIT_CLUMSY, "slasher") - ADD_TRAIT(current_mob, TRAIT_DUMB, "slasher") - ADD_TRAIT(current_mob, TRAIT_NODEATH, "slasher") - ADD_TRAIT(current_mob, TRAIT_LIMBATTACHMENT, "slasher") - - var/mob/living/carbon/carbon = current_mob - var/obj/item/organ/internal/eyes/shadow/shadow = new - shadow.Insert(carbon, drop_if_replaced = FALSE) - - RegisterSignal(current_mob, COMSIG_LIVING_LIFE, PROC_REF(LifeTick)) - - ///abilities galore - for(var/datum/action/cooldown/slasher/listed_slasher as anything in subtypesof(/datum/action/cooldown/slasher)) - var/datum/action/cooldown/slasher/new_ability = new listed_slasher - new_ability.Grant(current_mob) - powers |= new_ability - - var/mob/living/carbon/human/human = current_mob - if(istype(human)) - human.equipOutfit(/datum/outfit/slasher) - cached_brute_mod = human.dna.species.brutemod - - -/datum/antagonist/slasher/on_removal() - . = ..() - owner.current.remove_traits(list(TRAIT_BATON_RESISTANCE, TRAIT_CLUMSY, TRAIT_NODEATH, TRAIT_DUMB, TRAIT_LIMBATTACHMENT), "slasher") - for(var/datum/action/cooldown/slasher/listed_slasher as anything in powers) - listed_slasher.Remove(owner.current) - -/datum/antagonist/slasher/proc/LifeTick(mob/living/source, seconds_per_tick, times_fired) - if(corporeal) - breath_processes++ - if(breath_processes >= 2) - breath_processes = 0 - if(breath_out) - source.emote("exhale") - breath_out = FALSE - else - source.emote("inhale") - breath_out = TRUE - - heartbeat_processes++ - if(heartbeat_processes >= 4) - heartbeat_processes = 0 - for(var/mob/living/carbon/human in view(7, source)) - if(human == source) - continue - human.playsound_local(human, 'sound/health/slowbeat.ogg', 40, FALSE, channel = CHANNEL_HEARTBEAT, use_reverb = FALSE) - - if(stalked_human) - for(var/mob/living/carbon/human in view(7, source)) - if(stalked_human != human) - continue - if(stalked_human.stat == DEAD) - failed_stalking() - stalk_precent += (1 / 1.8) - if(stalk_precent >= 100) - finish_stalking() - - if(!is_hudchecking) - is_hudchecking = TRUE - var/list/starting_humans = list() - starting_humans += mobs_with_fullscreens - for(var/mob/living/carbon/human in view(7, source)) - if(!(human in mobs_with_fullscreens)) - mobs_with_fullscreens += human - human.overlay_fullscreen("slasher_prox", /atom/movable/screen/fullscreen/nearby, 1) - else - starting_humans -= human - - if(length(starting_humans)) - for(var/mob/living/carbon/human in starting_humans) - human.clear_fullscreen("slasher_prox", 15) - mobs_with_fullscreens -= human - is_hudchecking = FALSE - - for(var/obj/machinery/light/listed_light in view(3, source)) - if(prob(10)) - listed_light.break_light_tube() - - var/turf/TT = get_turf(source) - var/turf/T = pick(RANGE_TURFS(4,TT)) - - if(prob(5)) - new /obj/effect/gibspawner/generic(T) - - if(soul_punishment >= 2) - wailing_processes++ - if(wailing_processes >= 8) - wailing_processes = 0 - playsound(owner.current, 'monkestation/sound/voice/terror-cry.ogg', 50, falloff_exponent = 0, use_reverb = FALSE) - owner.current.emote("wails") - var/mob/living/carbon/human/human = owner.current - human.blood_volume -= 10 - var/turf/turf = get_turf(human) - var/list/blood_drop = list(human.get_blood_id() = 10) - turf.add_liquid_list(blood_drop, FALSE, 300) - -/datum/antagonist/slasher/proc/finish_stalking() - to_chat(owner, span_boldwarning("You have finished spooking your victim, and have harvested part of their soul!")) - if(linked_machette) - linked_machette.force += 2.5 - linked_machette.throwforce += 2.5 - stalked_human = null - -/datum/antagonist/slasher/proc/failed_stalking() - to_chat(owner, span_boldwarning("You let your victim be taken before it was time!")) - if(linked_machette) - linked_machette.force -= 5 - linked_machette.throwforce -= 5 - stalked_human = null diff --git a/monkestation/code/modules/antagonists/slasher/slasher_outfit/slasher_footwear.dm b/monkestation/code/modules/antagonists/slasher/slasher_outfit/slasher_footwear.dm deleted file mode 100644 index 854969079328..000000000000 --- a/monkestation/code/modules/antagonists/slasher/slasher_outfit/slasher_footwear.dm +++ /dev/null @@ -1,10 +0,0 @@ -/obj/item/clothing/shoes/slasher_shoes - name = "Industrial Boots" - icon_state = "jackboots" - inhand_icon_state = "jackboots" - clothing_traits = list(TRAIT_NO_SLIP_ALL) - resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF - -/obj/item/clothing/shoes/slasher_shoes/Initialize(mapload) - . = ..() - ADD_TRAIT(src, TRAIT_NODROP, "slasher") diff --git a/monkestation/code/modules/antagonists/slasher/slasher_outfit/slasher_headgear.dm b/monkestation/code/modules/antagonists/slasher/slasher_outfit/slasher_headgear.dm deleted file mode 100644 index 790d0f430f64..000000000000 --- a/monkestation/code/modules/antagonists/slasher/slasher_outfit/slasher_headgear.dm +++ /dev/null @@ -1,17 +0,0 @@ -/obj/item/clothing/mask/gas/slasher - name = "slasher's gas mask" - desc = "A close-fitting sealed gas mask, this one seems to be protruding some kind of dark aura." - - icon = 'icons/obj/clothing/head/utility.dmi' - worn_icon = 'icons/mob/clothing/head/utility.dmi' - icon_state = "welding" - inhand_icon_state = "welding" - resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF - slowdown = 1 - -/obj/item/clothing/mask/gas/slasher/Initialize(mapload) - . = ..() - ADD_TRAIT(src, TRAIT_NODROP, "slasher") - -/obj/item/clothing/mask/gas/slasher/adjustmask() - return diff --git a/monkestation/code/modules/antagonists/slasher/slasher_outfit/slasher_middlewear.dm b/monkestation/code/modules/antagonists/slasher/slasher_outfit/slasher_middlewear.dm deleted file mode 100644 index 54e41adb4d2d..000000000000 --- a/monkestation/code/modules/antagonists/slasher/slasher_outfit/slasher_middlewear.dm +++ /dev/null @@ -1,17 +0,0 @@ -/obj/item/clothing/suit/apron/slasher - name = "butcher's apron" - desc = "A brown butcher's apron, you can feel an aura of something dark radiating off of it." - resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF - - icon_state = "slasher" - inhand_icon_state = null - -/obj/item/clothing/suit/apron/slasher/Initialize(mapload) - . = ..() - ADD_TRAIT(src, TRAIT_NODROP, "slasher") - -/obj/item/clothing/under/color/random/slasher - name = "butcher's jumpsuit" - clothing_traits = list(TRAIT_NODROP) - resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF - diff --git a/monkestation/code/modules/antagonists/slasher/slasher_punishment.dm b/monkestation/code/modules/antagonists/slasher/slasher_punishment.dm deleted file mode 100644 index 5a7049729e69..000000000000 --- a/monkestation/code/modules/antagonists/slasher/slasher_punishment.dm +++ /dev/null @@ -1,8 +0,0 @@ -/datum/antagonist/slasher/proc/check_soul_punishment() - if(last_soul_sucked + soul_digestion < world.time) - return - soul_punishment++ - addtimer(CALLBACK(src, PROC_REF(remove_punishment_layer)), 5 MINUTES) - -/datum/antagonist/slasher/proc/remove_punishment_layer() - soul_punishment-- diff --git a/monkestation/code/modules/assault_ops/code/assault_op_vendor.dm b/monkestation/code/modules/assault_ops/code/assault_op_vendor.dm index 10b37fa61dc6..2b9d3c9e9dd0 100644 --- a/monkestation/code/modules/assault_ops/code/assault_op_vendor.dm +++ b/monkestation/code/modules/assault_ops/code/assault_op_vendor.dm @@ -10,6 +10,8 @@ /obj/item/armament_points_card/assaultops points = 50 + armament_type = /datum/armament_entry/assault_operatives + access = list(ACCESS_SYNDICATE) // ARMAMENT ENTRIES diff --git a/monkestation/code/modules/blood_for_the_blood_gods/fly_away.dm b/monkestation/code/modules/blood_for_the_blood_gods/fly_away.dm new file mode 100644 index 000000000000..f9d4a5678eda --- /dev/null +++ b/monkestation/code/modules/blood_for_the_blood_gods/fly_away.dm @@ -0,0 +1,50 @@ +/// Called on drop_organs for the organ to "fly away" using movable physics +/obj/item/organ/proc/fly_away(turf/open/owner_location, fly_angle = rand(0, 360), horizontal_multiplier = 1, vertical_multiplier = 1) + if(!istype(owner_location)) + return + return AddComponent(/datum/component/movable_physics, \ + physics_flags = MPHYSICS_QDEL_WHEN_NO_MOVEMENT, \ + angle = fly_angle, \ + horizontal_velocity = rand(2.5 * 100, 6 * 100) * horizontal_multiplier * 0.01, \ + vertical_velocity = rand(4 * 100, 4.5 * 100) * vertical_multiplier * 0.01, \ + horizontal_friction = rand(0.24 * 100, 0.3 * 100) * 0.01, \ + vertical_friction = 10 * 0.05, \ + horizontal_conservation_of_momentum = 0.5, \ + vertical_conservation_of_momentum = 0.5, \ + z_floor = 0, \ +) + +/// Proc called to initialize movable physics when a bodypart gets dismembered +/obj/item/bodypart/proc/fly_away(turf/open/owner_location, fly_angle = rand(0, 360), horizontal_multiplier = 1, vertical_multiplier = 1) + if(!istype(owner_location)) + return + pixel_x = -px_x + pixel_y = -px_y + forceMove(owner_location) + return AddComponent(/datum/component/movable_physics, \ + physics_flags = MPHYSICS_QDEL_WHEN_NO_MOVEMENT, \ + angle = fly_angle, \ + horizontal_velocity = rand(2.5 * 100, 6 * 100) * horizontal_multiplier * 0.01, \ + vertical_velocity = rand(4 * 100, 4.5 * 100) * vertical_multiplier * 0.01, \ + horizontal_friction = rand(0.24 * 100, 0.3 * 100) * 0.01, \ + vertical_friction = 10 * 0.05, \ + horizontal_conservation_of_momentum = 0.5, \ + vertical_conservation_of_momentum = 0.5, \ + z_floor = 0, \ + ) + +/obj/item/proc/launch_item(turf/open/owner_location, fly_angle = rand(0, 360), horizontal_multiplier = 1, vertical_multiplier = 1) + if(!istype(owner_location)) + return + forceMove(owner_location) + return AddComponent(/datum/component/movable_physics, \ + physics_flags = MPHYSICS_QDEL_WHEN_NO_MOVEMENT, \ + angle = fly_angle, \ + horizontal_velocity = rand(2.5 * 100, 6 * 100) * horizontal_multiplier * 0.01, \ + vertical_velocity = rand(4 * 100, 4.5 * 100) * vertical_multiplier * 0.01, \ + horizontal_friction = rand(0.24 * 100, 0.3 * 100) * 0.01, \ + vertical_friction = 10 * 0.05, \ + horizontal_conservation_of_momentum = 0.5, \ + vertical_conservation_of_momentum = 0.5, \ + z_floor = 0, \ + ) diff --git a/monkestation/code/modules/blood_for_the_blood_gods/icons/slasher_ui.dmi b/monkestation/code/modules/blood_for_the_blood_gods/icons/slasher_ui.dmi new file mode 100644 index 0000000000000000000000000000000000000000..4cd55f751e6562e3b85c49ea79da7980e016a446 GIT binary patch literal 462 zcmV;<0WtoGP)V=-0C=2JR&a84_w-Y6@%7{?OD!tS%+FJ>RWQ*r;NmRL zOex6#a*U0*I5Sc+(=$pSoZ^zil2jm5sU#z{GCnOeu}F!FGbOXA7$|1Q#hF%=n41b= zqpB=UO(j}kd|rNhYFTCuE)B{Gu6{0HM*{%LDmL}{)qzU@007EKL_t(YiDO{E4g>{J z`AiB-3Mld>&d4g5l#~=e7%spV?BZf7fKZ?WQJ@4D5OzsRcQM4RfYHRQV^)bXk`ZWb z5O#6v=t@C0f`LJS35l}@sGuXo@Y4%Ge))nHw47$6A<2AiS;C58g@pvF{y28d7q3Q0T)K*5L_ougnB;01Wo69Xhs;*&?uI9Lt9 zX9N>O0d6Cdln59>Pys maximum_splats) + splat_overlays = splat_overlays.Splice(splat_length - maximum_splats, splat_length) + . += splat_overlays + +/obj/effect/decal/cleanable/blood/splatter/stacking/handle_merge_decal(obj/effect/decal/cleanable/blood/splatter/stacking/merger) + . = ..() + merger.splat_overlays |= splat_overlays + merger.update_appearance(UPDATE_ICON) + +/obj/effect/decal/cleanable/blood/line + name = "blood line" + desc = "Raining blood, from a lacerated sky, bleeding its horror!" + icon_state = "line" + random_icon_states = null + dryname = "dried blood line" + drydesc = "Creating my structure - Now I shall reign in blood!" + +/obj/effect/decal/cleanable/blood/line/Initialize(mapload, direction) + if(!isnull(direction)) + //has to be done before we call replace_decal() + setDir(direction) + return ..() + +/obj/effect/decal/cleanable/blood/line/replace_decal(obj/effect/decal/cleanable/merger) + . = ..() + if(!.) + return + //squirts of the same dir are redundant, but not if they're different + if(merger.dir != src.dir) + return FALSE + diff --git a/monkestation/code/modules/antagonists/slasher/__base_slasher_additions.dm b/monkestation/code/modules/blood_for_the_blood_gods/slasher/__base_slasher_additions.dm similarity index 100% rename from monkestation/code/modules/antagonists/slasher/__base_slasher_additions.dm rename to monkestation/code/modules/blood_for_the_blood_gods/slasher/__base_slasher_additions.dm diff --git a/monkestation/code/modules/antagonists/slasher/abilities/_slasher_base.dm b/monkestation/code/modules/blood_for_the_blood_gods/slasher/abilities/_slasher_base.dm similarity index 100% rename from monkestation/code/modules/antagonists/slasher/abilities/_slasher_base.dm rename to monkestation/code/modules/blood_for_the_blood_gods/slasher/abilities/_slasher_base.dm diff --git a/monkestation/code/modules/antagonists/slasher/abilities/blood_walk.dm b/monkestation/code/modules/blood_for_the_blood_gods/slasher/abilities/blood_walk.dm similarity index 100% rename from monkestation/code/modules/antagonists/slasher/abilities/blood_walk.dm rename to monkestation/code/modules/blood_for_the_blood_gods/slasher/abilities/blood_walk.dm diff --git a/monkestation/code/modules/blood_for_the_blood_gods/slasher/abilities/envelope_darkness.dm b/monkestation/code/modules/blood_for_the_blood_gods/slasher/abilities/envelope_darkness.dm new file mode 100644 index 000000000000..4316cb8ac304 --- /dev/null +++ b/monkestation/code/modules/blood_for_the_blood_gods/slasher/abilities/envelope_darkness.dm @@ -0,0 +1,40 @@ +/datum/action/cooldown/slasher/envelope_darkness + name = "Darkness Shroud" + desc = "Become masked in the light and visible in the dark." + button_icon_state = "incorporealize" + cooldown_time = 20 SECONDS + + +/datum/action/cooldown/slasher/envelope_darkness/Activate(atom/target) + var/offset = GET_Z_PLANE_OFFSET(owner.z) + var/render = OFFSET_RENDER_TARGET(O_LIGHTING_VISUAL_RENDER_TARGET, offset) + owner.add_filter("envelope", 1, alpha_mask_filter(render, flags = MASK_INVERSE)) + RegisterSignal(owner, COMSIG_MOB_AFTER_APPLY_DAMAGE, PROC_REF(break_envelope)) + RegisterSignal(owner, COMSIG_ATOM_PRE_BULLET_ACT, PROC_REF(bullet_impact)) + +/datum/action/cooldown/slasher/envelope_darkness/Remove(mob/living/remove_from) + . = ..() + UnregisterSignal(owner, COMSIG_MOB_AFTER_APPLY_DAMAGE) + UnregisterSignal(owner, COMSIG_ATOM_PRE_BULLET_ACT) + owner.remove_filter("envelope") + +/datum/action/cooldown/slasher/envelope_darkness/proc/break_envelope(datum/source, damage, damagetype) + SIGNAL_HANDLER + UnregisterSignal(owner, COMSIG_MOB_AFTER_APPLY_DAMAGE) + UnregisterSignal(owner, COMSIG_ATOM_PRE_BULLET_ACT) + if(damage < 5) + return + + var/mob/living/owner_mob = owner + for(var/i = 1 to 4) + owner_mob.blood_particles(2, max_deviation = rand(-120, 120), min_pixel_z = rand(-4, 12), max_pixel_z = rand(-4, 12)) + + + var/datum/antagonist/slasher/slasher = owner_mob.mind?.has_antag_datum(/datum/antagonist/slasher) + + slasher?.reduce_fear_area(15, 4) + owner.remove_filter("envelope") + +/datum/action/cooldown/slasher/envelope_darkness/proc/bullet_impact(mob/living/carbon/human/source, obj/projectile/hitting_projectile, def_zone) + SIGNAL_HANDLER + return COMPONENT_BULLET_PIERCED diff --git a/monkestation/code/modules/antagonists/slasher/abilities/recall_machette.dm b/monkestation/code/modules/blood_for_the_blood_gods/slasher/abilities/recall_machette.dm similarity index 97% rename from monkestation/code/modules/antagonists/slasher/abilities/recall_machette.dm rename to monkestation/code/modules/blood_for_the_blood_gods/slasher/abilities/recall_machette.dm index 49dc0aba9e70..f5c53dfdbf66 100644 --- a/monkestation/code/modules/antagonists/slasher/abilities/recall_machette.dm +++ b/monkestation/code/modules/blood_for_the_blood_gods/slasher/abilities/recall_machette.dm @@ -24,6 +24,8 @@ if(!owner.put_in_hands(stored_machette)) stored_machette.forceMove(get_turf(owner)) + else + SEND_SIGNAL(owner, COMSIG_LIVING_PICKED_UP_ITEM, stored_machette) /obj/item/slasher_machette name = "slasher's machete" diff --git a/monkestation/code/modules/antagonists/slasher/abilities/slasher_regenerate.dm b/monkestation/code/modules/blood_for_the_blood_gods/slasher/abilities/slasher_regenerate.dm similarity index 100% rename from monkestation/code/modules/antagonists/slasher/abilities/slasher_regenerate.dm rename to monkestation/code/modules/blood_for_the_blood_gods/slasher/abilities/slasher_regenerate.dm diff --git a/monkestation/code/modules/antagonists/slasher/abilities/soul_steal.dm b/monkestation/code/modules/blood_for_the_blood_gods/slasher/abilities/soul_steal.dm similarity index 91% rename from monkestation/code/modules/antagonists/slasher/abilities/soul_steal.dm rename to monkestation/code/modules/blood_for_the_blood_gods/slasher/abilities/soul_steal.dm index 63dd1c195655..272978a07a84 100644 --- a/monkestation/code/modules/antagonists/slasher/abilities/soul_steal.dm +++ b/monkestation/code/modules/blood_for_the_blood_gods/slasher/abilities/soul_steal.dm @@ -37,15 +37,8 @@ if(human_owner == human_target) // you cant suck yourself, no comment return - if(slasherdatum.last_soul_sucked + slasherdatum.soul_digestion > world.time) // they are a speedrunner, mark them as such - quick_eater = TRUE - // After this point, give chat messages about failures - if(!slasherdatum.corporeal) - to_chat(owner, span_warning("You cannot suck souls whilst incorporeal!")) - return - if(!ishuman(target)) // are they trying to suck a corgi? to_chat(owner, span_warning("You can only suck the souls of humans")) return @@ -95,8 +88,6 @@ human_target.update_body(is_creating = TRUE) slasherdatum.souls_sucked++ - slasherdatum.check_soul_punishment() - slasherdatum.last_soul_sucked = world.time // lets make their machette stronger slasherdatum.linked_machette.force += 2.5 diff --git a/monkestation/code/modules/antagonists/slasher/abilities/stalk_target.dm b/monkestation/code/modules/blood_for_the_blood_gods/slasher/abilities/stalk_target.dm similarity index 96% rename from monkestation/code/modules/antagonists/slasher/abilities/stalk_target.dm rename to monkestation/code/modules/blood_for_the_blood_gods/slasher/abilities/stalk_target.dm index 1606f1c43ebd..169cffb75306 100644 --- a/monkestation/code/modules/antagonists/slasher/abilities/stalk_target.dm +++ b/monkestation/code/modules/blood_for_the_blood_gods/slasher/abilities/stalk_target.dm @@ -10,8 +10,8 @@ . = ..() var/list/possible_targets = list() for(var/datum/mind/possible_target as anything in get_crewmember_minds()) - if(possible_target == owner.mind) - continue + //if(possible_target == owner.mind) + //continue if(!ishuman(possible_target.current)) continue if(possible_target.current.stat == DEAD) diff --git a/monkestation/code/modules/antagonists/slasher/abilities/terror_screech.dm b/monkestation/code/modules/blood_for_the_blood_gods/slasher/abilities/terror_screech.dm similarity index 55% rename from monkestation/code/modules/antagonists/slasher/abilities/terror_screech.dm rename to monkestation/code/modules/blood_for_the_blood_gods/slasher/abilities/terror_screech.dm index d27fae7f1866..02d9dabd447d 100644 --- a/monkestation/code/modules/antagonists/slasher/abilities/terror_screech.dm +++ b/monkestation/code/modules/blood_for_the_blood_gods/slasher/abilities/terror_screech.dm @@ -1,6 +1,6 @@ /datum/action/cooldown/slasher/terror name = "Screech of Terror" - desc = "Inflict near paralyzing fear to those around you." + desc = "Inflict near paralyzing fear to those already scared of you." button_icon_state = "stagger_group" cooldown_time = 45 SECONDS @@ -10,21 +10,10 @@ . = ..() var/datum/antagonist/slasher/slasherdatum = owner.mind.has_antag_datum(/datum/antagonist/slasher) - if(!slasherdatum) - to_chat(owner, span_warning("You should not have this ability or your slasher antagonist datum was deleted, please contact coders")) - return - - if(!slasherdatum.corporeal) // if he is incorporeal, dont stun people - playsound(owner, 'monkestation/sound/voice/terror.ogg', 20, falloff_exponent = 0, use_reverb = FALSE) - for(var/mob/living/carbon/human/human in view(7, owner)) - if(human == owner) - continue - to_chat(human, span_warning("You hear a distant screech... this cant possibly be good")) - human.Shake(duration = 1 SECONDS) - return + var/list/mobs = slasherdatum.return_feared_people(7, 50) playsound(owner, 'monkestation/sound/voice/terror.ogg', 100, falloff_exponent = 0, use_reverb = FALSE) - for(var/mob/living/carbon/human/human in view(7, owner)) + for(var/mob/living/carbon/human/human in mobs) if(human == owner) continue human.overlay_fullscreen("terror", /atom/movable/screen/fullscreen/curse, 1) @@ -32,6 +21,8 @@ human.stamina.adjust(-60) human.emote("scream") human.SetParalyzed(1.5 SECONDS) + var/fear_amount = (15 - get_dist(owner, human)) + slasherdatum.increase_fear(human, fear_amount) addtimer(CALLBACK(src, PROC_REF(remove_overlay), human), 5 SECONDS) /datum/action/cooldown/slasher/terror/proc/remove_overlay(mob/living/carbon/human/remover) diff --git a/monkestation/code/modules/blood_for_the_blood_gods/slasher/components/see_as_something.dm b/monkestation/code/modules/blood_for_the_blood_gods/slasher/components/see_as_something.dm new file mode 100644 index 000000000000..5b861bdeb49f --- /dev/null +++ b/monkestation/code/modules/blood_for_the_blood_gods/slasher/components/see_as_something.dm @@ -0,0 +1,48 @@ +/datum/component/see_as_something + var/datum/weakref/creature + var/image_icon_state + var/image_icon + var/image/funny_image + var/delusion_name + +/datum/component/see_as_something/Initialize(atom/movable/seer, image_icon_state, image_icon, create_name) + . = ..() + if(!seer) + return + creature = WEAKREF(seer) + src.image_icon_state = image_icon_state + src.image_icon = image_icon + delusion_name = create_name + + setup_image() + +/datum/component/see_as_something/RegisterWithParent() + . = ..() + RegisterSignal(parent, COMSIG_CLEAR_SEE, PROC_REF(remove)) + +/datum/component/see_as_something/UnregisterFromParent() + . = ..() + UnregisterSignal(parent, COMSIG_CLEAR_SEE) + +/datum/component/see_as_something/Destroy(force, silent) + . = ..() + remove_image() + + +/datum/component/see_as_something/proc/setup_image() + var/atom/movable/resolved = creature.resolve() + + funny_image = image(image_icon, resolved, image_icon_state) + funny_image.name = delusion_name + funny_image.override = TRUE + + var/mob/parent_mob = parent + + parent_mob.client?.images += funny_image + +/datum/component/see_as_something/proc/remove() + qdel(src) + +/datum/component/see_as_something/proc/remove_image() + var/mob/parent_mob = parent + parent_mob.client?.images -= funny_image diff --git a/monkestation/code/modules/antagonists/slasher/components/team_monitor.dm b/monkestation/code/modules/blood_for_the_blood_gods/slasher/components/team_monitor.dm similarity index 99% rename from monkestation/code/modules/antagonists/slasher/components/team_monitor.dm rename to monkestation/code/modules/blood_for_the_blood_gods/slasher/components/team_monitor.dm index ed40ecbcd77d..6e30712a9f9c 100644 --- a/monkestation/code/modules/antagonists/slasher/components/team_monitor.dm +++ b/monkestation/code/modules/blood_for_the_blood_gods/slasher/components/team_monitor.dm @@ -102,7 +102,8 @@ GLOBAL_LIST_EMPTY(tracker_beacons) if(frequency) team_frequency = "[frequency_key][frequency]" else - team_frequency = null + team_frequency = team_freq_key + attached_beacon = _attached_beacon @@ -113,6 +114,8 @@ GLOBAL_LIST_EMPTY(tracker_beacons) if(team_frequency) GLOB.tracker_huds[team_frequency] -= src + SEND_SIGNAL(parent, COMSIG_LIVING_TRACKER_REMOVED, team_frequency) + //Stop processing STOP_PROCESSING(SSprocessing, src) @@ -415,7 +418,7 @@ GLOBAL_LIST_EMPTY(tracker_beacons) else if(_frequency) team_frequency = "[_frequency_key][_frequency]" else - team_frequency = null + team_frequency = team_freq_key //Add ourselves to the tracking network add_tracker_beacon(team_frequency, src) diff --git a/monkestation/code/modules/antagonists/slasher/ghost_role.dm b/monkestation/code/modules/blood_for_the_blood_gods/slasher/ghost_role.dm similarity index 100% rename from monkestation/code/modules/antagonists/slasher/ghost_role.dm rename to monkestation/code/modules/blood_for_the_blood_gods/slasher/ghost_role.dm diff --git a/monkestation/code/modules/blood_for_the_blood_gods/slasher/slasher_datum.dm b/monkestation/code/modules/blood_for_the_blood_gods/slasher/slasher_datum.dm new file mode 100644 index 000000000000..6e9245150587 --- /dev/null +++ b/monkestation/code/modules/blood_for_the_blood_gods/slasher/slasher_datum.dm @@ -0,0 +1,316 @@ +/datum/outfit/slasher + name = "Slasher Outfit" + suit = /obj/item/clothing/suit/apron/slasher + uniform = /obj/item/clothing/under/color/random/slasher + shoes = /obj/item/clothing/shoes/slasher_shoes + mask = /obj/item/clothing/mask/gas/slasher + +/datum/antagonist/slasher + name = "\improper Slasher" + show_in_antagpanel = TRUE + roundend_category = "slashers" + antagpanel_category = "Slasher" + job_rank = ROLE_SLASHER + antag_hud_name = "slasher" + show_name_in_check_antagonists = TRUE + hud_icon = 'monkestation/icons/mob/slasher.dmi' + preview_outfit = /datum/outfit/slasher + show_to_ghosts = TRUE + + ///the linked machette that the slasher can summon even if destroyed and is unique to them + var/obj/item/slasher_machette/linked_machette + ///rallys the amount of souls effects are based on this + var/souls_sucked = 0 + ///our cached brute_mod + var/cached_brute_mod = 0 + /// the mob we are stalking + var/mob/living/carbon/human/stalked_human + /// how close we are in % to finishing stalking + var/stalk_precent = 0 + ///ALL Powers currently owned + var/list/datum/action/cooldown/slasher/powers = list() + + ///this is our team monitor + var/datum/component/team_monitor/slasher_monitor + ///this is our tracker component + var/datum/component/tracking_beacon + var/monitor_key = "slasher_key" + + ///weakref list of mobs and their fear + var/list/fears = list() + ///weakref list of mobs and last fear attempt to stop fear maxxing + var/list/fear_cooldowns = list() + ///weakref list of mobs and last fear stages + var/list/fear_stages = list() + ///this is a list of all heartbeaters + var/list/heartbeats = list() + //this is a list of all statics + var/list/mobs_with_fullscreens = list() + ///this is our list of refs over 100 fear + var/list/total_fear = list() + ///this is our list of tracked people + var/list/tracked = list() + ///this is our list of seers + var/list/seers = list() + +/datum/antagonist/slasher/apply_innate_effects(mob/living/mob_override) + . = ..() + var/mob/living/current_mob = mob_override || owner.current + current_mob.overlay_fullscreen("slasher_prox", /atom/movable/screen/fullscreen/nearby, 1) + + monitor_key = "slasher_monitor_[current_mob.ckey]" + tracking_beacon = current_mob.AddComponent(/datum/component/tracking_beacon, monitor_key, null, null, TRUE, "#f3d594") + slasher_monitor = current_mob.AddComponent(/datum/component/team_monitor, monitor_key, null, tracking_beacon) + slasher_monitor.show_hud(owner.current) + + ADD_TRAIT(current_mob, TRAIT_BATON_RESISTANCE, "slasher") + ADD_TRAIT(current_mob, TRAIT_CLUMSY, "slasher") + ADD_TRAIT(current_mob, TRAIT_DUMB, "slasher") + ADD_TRAIT(current_mob, TRAIT_NODEATH, "slasher") + ADD_TRAIT(current_mob, TRAIT_LIMBATTACHMENT, "slasher") + ADD_TRAIT(current_mob, TRAIT_SLASHER, "slasher") + + var/mob/living/carbon/carbon = current_mob + var/obj/item/organ/internal/eyes/shadow/shadow = new + shadow.Insert(carbon, drop_if_replaced = FALSE) + + RegisterSignal(current_mob, COMSIG_LIVING_LIFE, PROC_REF(LifeTick)) + RegisterSignal(current_mob, COMSIG_LIVING_PICKED_UP_ITEM, PROC_REF(item_pickup)) + RegisterSignal(current_mob, COMSIG_MOB_DROPPING_ITEM, PROC_REF(item_drop)) + RegisterSignal(current_mob, COMSIG_MOB_ITEM_ATTACK, PROC_REF(check_attack)) + + ///abilities galore + for(var/datum/action/cooldown/slasher/listed_slasher as anything in subtypesof(/datum/action/cooldown/slasher)) + var/datum/action/cooldown/slasher/new_ability = new listed_slasher + new_ability.Grant(current_mob) + powers |= new_ability + + var/mob/living/carbon/human/human = current_mob + if(istype(human)) + human.equipOutfit(/datum/outfit/slasher) + cached_brute_mod = human.dna.species.brutemod + + +/datum/antagonist/slasher/on_removal() + . = ..() + owner.current.clear_fullscreen("slasher_prox", 15) + owner.current.remove_traits(list(TRAIT_BATON_RESISTANCE, TRAIT_CLUMSY, TRAIT_NODEATH, TRAIT_DUMB, TRAIT_LIMBATTACHMENT), "slasher") + for(var/datum/action/cooldown/slasher/listed_slasher as anything in powers) + listed_slasher.Remove(owner.current) + +/datum/antagonist/slasher/proc/LifeTick(mob/living/source, seconds_per_tick, times_fired) + + var/list/currently_beating = list() + var/list/current_statics = list() + for(var/datum/weakref/held as anything in fear_stages) + var/stage = fear_stages[held] + var/mob/living/carbon/human/human = held.resolve() + + if(stage >= 1) + currently_beating |= held + if(!(held in heartbeats)) + heartbeats |= held + human.playsound_local(human, 'sound/health/slowbeat.ogg', 40, FALSE, channel = CHANNEL_HEARTBEAT, use_reverb = FALSE) + + if(stage >= 2) + current_statics |= held + if(!(held in mobs_with_fullscreens)) + human.overlay_fullscreen("slasher_prox", /atom/movable/screen/fullscreen/nearby, 1) + mobs_with_fullscreens |= held + + + for(var/datum/weakref/held_ref as anything in (heartbeats - currently_beating)) + var/mob/living/carbon/human/human = held_ref.resolve() + human.stop_sound_channel(CHANNEL_HEARTBEAT) + heartbeats -= held_ref + + for(var/datum/weakref/held_ref as anything in (mobs_with_fullscreens - current_statics)) + var/mob/living/carbon/human/human = held_ref.resolve() + human.clear_fullscreen("slasher_prox", 15) + mobs_with_fullscreens -= held_ref + + if(stalked_human) + for(var/mob/living/carbon/human in view(7, source)) + if(stalked_human != human) + continue + if(stalked_human.stat == DEAD) + failed_stalking() + stalk_precent += (1 / 1.8) + if(stalk_precent >= 100) + finish_stalking() + +/datum/antagonist/slasher/proc/finish_stalking() + to_chat(owner, span_boldwarning("You have finished spooking your victim, and have harvested part of their soul!")) + if(linked_machette) + linked_machette.force += 2.5 + linked_machette.throwforce += 2.5 + stalked_human = null + +/datum/antagonist/slasher/proc/failed_stalking() + to_chat(owner, span_boldwarning("You let your victim be taken before it was time!")) + if(linked_machette) + linked_machette.force -= 5 + linked_machette.throwforce -= 5 + stalked_human = null + +/datum/antagonist/slasher/proc/check_attack(mob/living/attacking_person, mob/living/attacked_mob) + var/obj/item/held_item = attacking_person.get_active_held_item() + + var/held_force = 3 + if(held_item) + held_force = held_item.force + + increase_fear(attacked_mob, held_force / 3) + + for(var/i = 1 to (held_force / 3)) + attacked_mob.blood_particles(2, max_deviation = rand(-120, 120), min_pixel_z = rand(-4, 12), max_pixel_z = rand(-4, 12)) + +/datum/antagonist/slasher/proc/item_pickup(datum/input_source, obj/item/source) + RegisterSignal(source, COMSIG_ITEM_DAMAGE_MULTIPLIER, PROC_REF(damage_multiplier)) + +/datum/antagonist/slasher/proc/item_drop(datum/input_source, obj/item/source) + UnregisterSignal(source, COMSIG_ITEM_DAMAGE_MULTIPLIER) + +/obj/item/var/last_multi = 1 + +/datum/antagonist/slasher/proc/damage_multiplier(obj/item/source, mob/living/attacked, def_zone) + var/health_left = max(0, attacked.health) * 0.01 + + attacked.cause_pain(def_zone, source.force) + + source.last_multi = health_left + + return TRUE + +/datum/antagonist/slasher/proc/increase_fear(atom/movable/target, amount) + var/datum/weakref/weak = WEAKREF(target) + if(!(weak in fear_cooldowns)) + target.AddComponent(/datum/component/hovering_information, /datum/hover_data/slasher_fear, TRAIT_SLASHER) + fear_cooldowns |= weak + fear_cooldowns[weak] = 0 + + if(fear_cooldowns[weak] > world.time + 10 SECONDS) + return + + if(!(weak in fears)) + fears |= weak + fears[weak] += amount + + fear_cooldowns[weak] = world.time + fear_stage_check(weak) + +/datum/antagonist/slasher/proc/reduce_fear_area(amount, area) + for(var/mob/living/carbon/human/human in range(area, get_turf(owner))) + var/datum/weakref/weak = WEAKREF(human) + if(!(weak in fears)) + continue + fears[weak] -= amount + fears[weak] = max(fears[weak], 0) + fear_stage_check(weak) + +/datum/antagonist/slasher/proc/reduce_fear(atom/target, amount) + var/datum/weakref/weak = WEAKREF(target) + if(!(weak in fears)) + return + fears[weak] -= amount + fears[weak] = max(fears[weak], 0) + fear_stage_check(weak) + +/datum/antagonist/slasher/proc/fear_stage_check(datum/weakref/weak) + var/fear_number = fears[weak] + var/old_stage = fear_stages[weak] + var/stage = 0 + switch(fear_number) + if(0 to 25) + stage = 0 + if(26 to 50) + stage = 1 + if(51 to 75) + stage = 2 + if(76 to 100) + stage = 3 + else + stage = 4 + + if((weak in fear_stages)) + if(fear_stages[weak] == stage) + return + stage_change(weak, stage, old_stage) + + +/datum/antagonist/slasher/proc/stage_change(datum/weakref/weak, new_stage, last_stage) + fear_stages[weak] = new_stage + + if(new_stage >= 3) + try_add_tracker(weak) + if(new_stage >= 4) + try_add_seer(weak) + + +/datum/antagonist/slasher/proc/return_feared_people(range, value) + var/list/mobs = list() + for(var/datum/weakref/weak_ref as anything in fears) + if(fears[weak_ref] < value) + continue + var/mob/living/mob = weak_ref.resolve() + if(get_dist(owner.current, mob) > range) + continue + mobs += mob + return mobs + +/datum/antagonist/slasher/proc/try_add_tracker(datum/weakref/weak) + if(weak in tracked) + return + tracked += weak + + var/mob/living/living = weak.resolve() + + var/datum/component/tracking_beacon/beacon = living.AddComponent(/datum/component/tracking_beacon, monitor_key, null, null, TRUE, "#f3d594") + slasher_monitor.add_to_tracking_network(beacon) + + RegisterSignal(living, COMSIG_LIVING_TRACKER_REMOVED, PROC_REF(remove_tracker)) + +/datum/antagonist/slasher/proc/remove_tracker(mob/living/source, frequency) + if(frequency != monitor_key) + return + + tracked -= WEAKREF(source) + slasher_monitor.update_all_directions() + +/datum/antagonist/slasher/proc/try_add_seer(datum/weakref/weak) + if(weak in seers) + return + seers += weak + + var/mob/living/living = weak.resolve() + living.AddComponent(/datum/component/see_as_something, owner.current, "wendigo", 'icons/mob/simple/icemoon/64x64megafauna.dmi', "?????") + +/datum/hover_data/slasher_fear/setup_data(atom/source, mob/enterer) + if(!enterer.mind?.has_antag_datum(/datum/antagonist/slasher)) + return + var/datum/antagonist/slasher/slasher = enterer.mind.has_antag_datum(/datum/antagonist/slasher) + + var/datum/weakref/weak = WEAKREF(source) + if(!(weak in slasher.fear_stages)) + return + var/fear_stage = slasher.fear_stages[weak] + + var/image/new_image = new + new_image.icon = 'monkestation/code/modules/blood_for_the_blood_gods/icons/slasher_ui.dmi' + new_image.pixel_x = 10 + new_image.plane = GAME_PLANE_UPPER + switch(fear_stage) + if(2) + new_image.icon_state = "they_fear" + if(3) + new_image.icon_state = "they_see_no_evil" + if(4) + new_image.icon_state = "they_see" + else + new_image.icon_state = null + + if(!isturf(source.loc)) + new_image.loc = source.loc + else + new_image.loc = source + add_client_image(new_image, enterer.client) diff --git a/monkestation/code/modules/blood_for_the_blood_gods/slasher/slasher_outfit/slasher_clothing.dm b/monkestation/code/modules/blood_for_the_blood_gods/slasher/slasher_outfit/slasher_clothing.dm new file mode 100644 index 000000000000..9a84c3caa952 --- /dev/null +++ b/monkestation/code/modules/blood_for_the_blood_gods/slasher/slasher_outfit/slasher_clothing.dm @@ -0,0 +1,46 @@ +/obj/item/clothing/shoes/slasher_shoes + name = "Industrial Boots" + icon_state = "jackboots" + inhand_icon_state = "jackboots" + clothing_traits = list(TRAIT_NO_SLIP_ALL) + resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF + +/obj/item/clothing/shoes/slasher_shoes/Initialize(mapload) + . = ..() + ADD_TRAIT(src, TRAIT_NODROP, "slasher") + +/obj/item/clothing/mask/gas/slasher + name = "slasher's gas mask" + desc = "A close-fitting sealed gas mask, this one seems to be protruding some kind of dark aura." + + icon = 'icons/obj/clothing/head/utility.dmi' + worn_icon = 'icons/mob/clothing/head/utility.dmi' + icon_state = "welding" + inhand_icon_state = "welding" + resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF + slowdown = 1 + +/obj/item/clothing/mask/gas/slasher/Initialize(mapload) + . = ..() + ADD_TRAIT(src, TRAIT_NODROP, "slasher") + +/obj/item/clothing/mask/gas/slasher/adjustmask() + return + +/obj/item/clothing/suit/apron/slasher + name = "butcher's apron" + desc = "A brown butcher's apron, you can feel an aura of something dark radiating off of it." + resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF + + icon_state = "slasher" + inhand_icon_state = null + +/obj/item/clothing/suit/apron/slasher/Initialize(mapload) + . = ..() + ADD_TRAIT(src, TRAIT_NODROP, "slasher") + +/obj/item/clothing/under/color/random/slasher + name = "butcher's jumpsuit" + clothing_traits = list(TRAIT_NODROP) + resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF + diff --git a/monkestation/code/modules/bloodsuckers/powers/fortitude.dm b/monkestation/code/modules/bloodsuckers/powers/fortitude.dm index 2577ad14ed3a..617dd765b3ee 100644 --- a/monkestation/code/modules/bloodsuckers/powers/fortitude.dm +++ b/monkestation/code/modules/bloodsuckers/powers/fortitude.dm @@ -22,7 +22,7 @@ owner.balloon_alert(owner, "fortitude turned on.") to_chat(owner, span_notice("Your flesh, skin, and muscles become as steel.")) // Traits & Effects - owner.add_traits(list(TRAIT_PIERCEIMMUNE, TRAIT_NODISMEMBER, TRAIT_PUSHIMMUNE, TRAIT_NO_SPRINT), FORTITUDE_TRAIT) + owner.add_traits(list(TRAIT_PIERCEIMMUNE, TRAIT_ANALGESIA, TRAIT_NODISMEMBER, TRAIT_PUSHIMMUNE, TRAIT_NO_SPRINT), FORTITUDE_TRAIT) if(level_current >= 4) owner.add_traits(list(TRAIT_STUNIMMUNE, TRAIT_CANT_STAMCRIT), FORTITUDE_TRAIT) // They'll get stun resistance + this, who cares. var/mob/living/carbon/human/bloodsucker_user = owner @@ -61,7 +61,7 @@ if(!HAS_TRAIT_FROM(bloodsucker_user, TRAIT_STUNIMMUNE, FORTITUDE_TRAIT)) bloodsucker_user.physiology.stamina_mod /= fortitude_resist // Remove Traits & Effects - owner.remove_traits(list(TRAIT_PIERCEIMMUNE, TRAIT_NODISMEMBER, TRAIT_PUSHIMMUNE, TRAIT_NO_SPRINT, TRAIT_STUNIMMUNE, TRAIT_CANT_STAMCRIT), FORTITUDE_TRAIT) + owner.remove_traits(list(TRAIT_PIERCEIMMUNE, TRAIT_ANALGESIA, TRAIT_NODISMEMBER, TRAIT_PUSHIMMUNE, TRAIT_NO_SPRINT, TRAIT_STUNIMMUNE, TRAIT_CANT_STAMCRIT), FORTITUDE_TRAIT) if(was_running && bloodsucker_user.m_intent == MOVE_INTENT_WALK) bloodsucker_user.set_move_intent(MOVE_INTENT_RUN) diff --git a/monkestation/code/modules/bloodsuckers/structures/bloodsucker_recipes.dm b/monkestation/code/modules/bloodsuckers/structures/bloodsucker_recipes.dm index 0b0aa55a2ab5..e065a7d2ebd3 100644 --- a/monkestation/code/modules/bloodsuckers/structures/bloodsucker_recipes.dm +++ b/monkestation/code/modules/bloodsuckers/structures/bloodsucker_recipes.dm @@ -112,3 +112,12 @@ time = 8 SECONDS category = CAT_WEAPON_MELEE always_available = FALSE + +/datum/crafting_recipe/coffin + name = "Coffin" + result = /obj/structure/closet/crate/coffin + reqs = list( + /obj/item/stack/sheet/mineral/wood = 5, + ) + time = 15 SECONDS + category = CAT_STRUCTURE diff --git a/monkestation/code/modules/blueshield/areas.dm b/monkestation/code/modules/blueshield/areas.dm new file mode 100644 index 000000000000..84e75acd3d5e --- /dev/null +++ b/monkestation/code/modules/blueshield/areas.dm @@ -0,0 +1,5 @@ +// Blueshield area +/area/station/command/heads_quarters/blueshield + name = "Blueshield's Office" + icon = 'monkestation/code/modules/blueshift/icons/areas/areas_station.dmi' + icon_state = "blueshield" diff --git a/monkestation/code/modules/blueshield/closet.dm b/monkestation/code/modules/blueshield/closet.dm new file mode 100644 index 000000000000..5402f2db276f --- /dev/null +++ b/monkestation/code/modules/blueshield/closet.dm @@ -0,0 +1,34 @@ +/obj/item/storage/bag/garment/blueshield + name = "blueshield's garment bag" + desc = "A bag for storing extra clothes and shoes. This one belongs to the blueshield." + +/obj/item/storage/bag/garment/blueshield/PopulateContents() + new /obj/item/clothing/suit/hooded/wintercoat/nova/blueshield(src) + new /obj/item/clothing/head/beret/blueshield(src) + new /obj/item/clothing/head/beret/blueshield/navy(src) + new /obj/item/clothing/under/rank/blueshield(src) + new /obj/item/clothing/under/rank/blueshield/skirt(src) + new /obj/item/clothing/under/rank/blueshield/turtleneck(src) + new /obj/item/clothing/under/rank/blueshield/turtleneck/skirt(src) + new /obj/item/clothing/suit/armor/vest/blueshield(src) + new /obj/item/clothing/suit/armor/vest/blueshield/jacket(src) + new /obj/item/clothing/neck/mantle/bsmantle(src) + +/obj/structure/closet/secure_closet/blueshield + name = "blueshield's locker" + icon_state = "bs" + icon = 'monkestation/code/modules/blueshift/icons/obj/closet.dmi' + req_access = list(ACCESS_CENT_GENERAL) + +/obj/structure/closet/secure_closet/blueshield/New() + ..() + new /obj/item/storage/briefcase/secure(src) + new /obj/item/storage/belt/security/full(src) + new /obj/item/grenade/flashbang(src) + new /obj/item/assembly/flash/handheld(src) + new /obj/item/restraints/handcuffs(src) + new /obj/item/clothing/glasses/hud/security/sunglasses(src) + new /obj/item/storage/medkit/frontier/stocked(src) + new /obj/item/storage/bag/garment/blueshield(src) + new /obj/item/mod/control/pre_equipped/blueshield(src) + new /obj/item/sensor_device/blueshield(src) diff --git a/monkestation/code/modules/blueshift/clothing/blueshield.dm b/monkestation/code/modules/blueshield/clothing.dm similarity index 68% rename from monkestation/code/modules/blueshift/clothing/blueshield.dm rename to monkestation/code/modules/blueshield/clothing.dm index 3c44a9c7c8e0..0bb05426e1fd 100644 --- a/monkestation/code/modules/blueshift/clothing/blueshield.dm +++ b/monkestation/code/modules/blueshield/clothing.dm @@ -139,3 +139,79 @@ worn_icon = 'monkestation/code/modules/blueshift/icons/mob/clothing/suits/wintercoat.dmi' icon_state = "coataformal" hoodtype = /obj/item/clothing/head/hooded/winterhood/nova + +/* +* BLUESHIELD +*/ +//Why is this in command.dm? Simple: Centcom.dmi will already be packed with CC/NTNavy/AD/LL/SOL/FTU - all of them more event-based clothes, while this will appear +//on-station often. + +/obj/item/clothing/under/rank/blueshield + icon = 'monkestation/code/modules/blueshift/icons/obj/clothing/under/command.dmi' + worn_icon = 'monkestation/code/modules/blueshift/icons/mob/clothing/under/command.dmi' + worn_icon_digitigrade = 'monkestation/code/modules/blueshift/icons/mob/clothing/under/command_digi.dmi' + name = "blueshield's suit" + desc = "A classic bodyguard's suit, with custom-fitted Blueshield-Blue cuffs and a Nanotrasen insignia over one of the pockets." + icon_state = "blueshield" + strip_delay = 50 + armor_type = /datum/armor/clothing_under/rank_blueshield + sensor_mode = SENSOR_COORDS + random_sensor = FALSE + alt_covers_chest = TRUE + +/datum/armor/clothing_under/rank_blueshield + melee = 10 + bullet = 5 + laser = 5 + energy = 10 + bomb = 10 + fire = 50 + acid = 50 + +/obj/item/clothing/under/rank/blueshield/skirt + name = "blueshield's suitskirt" + desc = "A classic bodyguard's suitskirt, with custom-fitted Blueshield-Blue cuffs and a Nanotrasen insignia over one of the pockets." + icon_state = "blueshieldskirt" + body_parts_covered = CHEST|GROIN|ARMS + dying_key = DYE_REGISTRY_JUMPSKIRT + female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY + supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON + + +/obj/item/clothing/under/rank/blueshield/turtleneck + name = "blueshield's turtleneck" + desc = "A tactical jumper fit for only the best of bodyguards, with plenty of tactical pockets for your tactical needs." + icon_state = "bs_turtleneck" + +/obj/item/clothing/under/rank/blueshield/turtleneck/skirt + name = "blueshield's skirtleneck" + desc = "A tactical jumper fit for only the best of bodyguards - instead of tactical pockets, this one has a tactical lack of leg protection." + icon_state = "bs_skirtleneck" + body_parts_covered = CHEST|GROIN|ARMS + dying_key = DYE_REGISTRY_JUMPSKIRT + female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY + supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON + +/obj/item/clothing/neck/mantle/bsmantle + name = "\proper the blueshield's mantle" + desc = "A plated mantle with command colors. Suitable for the one assigned to making sure they're still breathing." + icon = 'monkestation/code/modules/blueshift/icons/mob/clothing/neck.dmi' + worn_icon = 'monkestation/code/modules/blueshift/icons/mob/clothing/neck.dmi' + icon_state = "bsmantle" + +/obj/item/radio/headset/headset_bs + name = "\proper the blueshield's headset" + icon = 'monkestation/code/modules/blueshield/icons/radio.dmi' + worn_icon = 'monkestation/code/modules/blueshift/icons/mob/clothing/ears.dmi' + icon_state = "bshield_headset" + worn_icon_state = "bshield_headset" + keyslot = /obj/item/encryptionkey/heads/blueshield + keyslot2 = /obj/item/encryptionkey/headset_cent + +/obj/item/radio/headset/headset_bs/alt + icon_state = "bshield_headset_alt" + worn_icon_state = "bshield_headset_alt" + +/obj/item/radio/headset/headset_bs/alt/Initialize(mapload) + . = ..() + AddComponent(/datum/component/wearertargeting/earprotection, list(ITEM_SLOT_EARS)) diff --git a/monkestation/code/modules/blueshield/devices/crew_monitor.dm b/monkestation/code/modules/blueshield/devices/crew_monitor.dm new file mode 100644 index 000000000000..63549cfc312a --- /dev/null +++ b/monkestation/code/modules/blueshield/devices/crew_monitor.dm @@ -0,0 +1,133 @@ +/* +* Trimmed and modified copy of ".../machinery/computer/crew.dm" +* for the sake of modularity. (Blueshield Monitor Console soon?) +*/ + +#define SENSORS_UPDATE_PERIOD (10 SECONDS) + +GLOBAL_DATUM_INIT(blueshield_crewmonitor, /datum/crewmonitor/blueshield, new) + +//list of all Command/CC jobs +/datum/crewmonitor/blueshield + var/list/jobs_command = list( + JOB_CAPTAIN = 00, + JOB_HEAD_OF_SECURITY = 10, + JOB_CHIEF_MEDICAL_OFFICER = 20, + JOB_RESEARCH_DIRECTOR = 30, + JOB_CHIEF_ENGINEER = 40, + JOB_QUARTERMASTER = 50, + JOB_HEAD_OF_PERSONNEL = 60, + JOB_CENTCOM_ADMIRAL = 200, + JOB_CENTCOM = 201, + JOB_CENTCOM_OFFICIAL = 210, + JOB_CENTCOM_COMMANDER = 211, + JOB_CENTCOM_BARTENDER = 212, + JOB_CENTCOM_CUSTODIAN = 213, + JOB_CENTCOM_MEDICAL_DOCTOR = 214, + JOB_CENTCOM_RESEARCH_OFFICER = 215, + JOB_ERT_COMMANDER = 220, + JOB_ERT_OFFICER = 221, + JOB_ERT_ENGINEER = 222, + JOB_ERT_MEDICAL_DOCTOR = 223, + JOB_ERT_CLOWN = 224, + JOB_ERT_CHAPLAIN = 225, + JOB_ERT_JANITOR = 226, + JOB_ERT_DEATHSQUAD = 227, + JOB_NT_REP = 230, + JOB_BLUESHIELD = 231, + ) + +/datum/crewmonitor/blueshield/ui_interact(mob/user, datum/tgui/ui) + ui = SStgui.try_update_ui(user, src, ui) + if (!ui) + ui = new(user, src, "CrewConsoleNovaBlueshield") + ui.open() + +/* +* Override of crewmonitor/update_data(z) +* - "trim_assignment" is now iterated for command-only jobs +* - "if (id_card)" now encapsulates all the remaining checks to avoid showing unknowns +*/ +/datum/crewmonitor/blueshield/update_data(z) + if(data_by_z["[z]"] && last_update["[z]"] && world.time <= last_update["[z]"] + SENSORS_UPDATE_PERIOD) + return data_by_z["[z]"] + + var/list/results = list() + for(var/tracked_mob in GLOB.suit_sensors_list) + if(!tracked_mob) + stack_trace("Null entry in suit sensors list.") + continue + + var/mob/living/tracked_living_mob = tracked_mob + + var/turf/pos = get_turf(tracked_living_mob) + + if(!pos) + stack_trace("Tracked mob has no loc and is likely in nullspace: [tracked_living_mob] ([tracked_living_mob.type])") + continue + + if(pos.z != z && (!is_station_level(pos.z) || !is_station_level(z)) && !HAS_TRAIT(tracked_living_mob, TRAIT_MULTIZ_SUIT_SENSORS)) + continue + + var/mob/living/carbon/human/tracked_human = tracked_living_mob + + if(!ishuman(tracked_human)) + stack_trace("Non-human mob is in suit_sensors_list: [tracked_living_mob] ([tracked_living_mob.type])") + continue + + var/obj/item/clothing/under/uniform = tracked_human.w_uniform + if (!istype(uniform)) + stack_trace("Human without a suit sensors compatible uniform is in suit_sensors_list: [tracked_human] ([tracked_human.type]) ([uniform?.type])") + continue + + if((uniform.has_sensor <= NO_SENSORS) || !uniform.sensor_mode) + stack_trace("Human without active suit sensors is in suit_sensors_list: [tracked_human] ([tracked_human.type]) ([uniform.type])") + continue + + var/sensor_mode = uniform.sensor_mode + var/list/entry = list() + + var/obj/item/card/id/id_card = tracked_living_mob.get_idcard(hand_first = FALSE) + if (id_card) + + entry["name"] = id_card.registered_name + entry["assignment"] = id_card.assignment + var/trim_assignment = id_card.get_trim_assignment() + + //Check if they are command + if (jobs_command[trim_assignment] != null) + entry["ijob"] = jobs_command[trim_assignment] + else + continue + + if (isipc(tracked_human)) + entry["is_robot"] = TRUE + + if (sensor_mode >= SENSOR_LIVING) + entry["life_status"] = (tracked_living_mob.stat != DEAD) + + if (sensor_mode >= SENSOR_VITALS) + entry += list( + "oxydam" = round(tracked_living_mob.getOxyLoss(), 1), + "toxdam" = round(tracked_living_mob.getToxLoss(), 1), + "burndam" = round(tracked_living_mob.getFireLoss(), 1), + "brutedam" = round(tracked_living_mob.getBruteLoss(), 1), + "health" = round(tracked_living_mob.health, 1), + ) + + if (sensor_mode >= SENSOR_COORDS) + entry["area"] = get_area_name(tracked_living_mob, format_text = TRUE) + + entry["can_track"] = tracked_living_mob.can_track() + + else + continue + + results[++results.len] = entry + + data_by_z["[z]"] = results + last_update["[z]"] = world.time + + return results + +#undef SENSORS_UPDATE_PERIOD diff --git a/monkestation/code/modules/blueshield/devices/sensor.dm b/monkestation/code/modules/blueshield/devices/sensor.dm new file mode 100644 index 000000000000..6f8a5aca717b --- /dev/null +++ b/monkestation/code/modules/blueshield/devices/sensor.dm @@ -0,0 +1,8 @@ +/obj/item/sensor_device/blueshield + name = "blueshield's handheld monitor" + desc = "A unique model of handheld crew monitor that seems to have been customized for Executive Protection purposes." + icon = 'monkestation/code/modules/blueshield/icons/device.dmi' + icon_state = "blueshield_scanner" + +/obj/item/sensor_device/blueshield/attack_self(mob/user) + GLOB.blueshield_crewmonitor.show(user,src) diff --git a/monkestation/code/modules/blueshield/gun.dm b/monkestation/code/modules/blueshield/gun.dm new file mode 100644 index 000000000000..7179cb6fe755 --- /dev/null +++ b/monkestation/code/modules/blueshield/gun.dm @@ -0,0 +1,59 @@ +/* + Blueshield's Hellfire is between SC-1 and the Hellfire in terms of Damage and wound output +*/ + +/// Blueshield's Custom Hellfire +/obj/item/ammo_casing/energy/laser/hellfire/blueshield + projectile_type = /obj/projectile/beam/laser/hellfire + e_cost = LASER_SHOTS(13, 1000) + select_name = "maim" + +/obj/item/gun/energy/laser/hellgun/blueshield + name ="modified hellfire laser gun" + desc = "A lightly overtuned version of NT's Hellfire Laser rifle, scratches showing its age and the fact it has definitely been owned before. This one is more energy efficient without sacrificing damage." + icon_state = "hellgun" + ammo_type = list(/obj/item/ammo_casing/energy/laser/hellfire/blueshield) + +/obj/item/choice_beacon/blueshield + name = "gunset beacon" + desc = "A single use beacon to deliver a gunset of your choice. Please only call this in your office" + company_source = "Sol Defense Contracting" + company_message = span_bold("Supply Pod incoming, please stand by.") + +/obj/item/choice_beacon/blueshield/generate_display_names() + var/static/list/selectable_gun_types = list( + "Takbok Revolver Set" = /obj/item/storage/toolbox/guncase/skyrat/pistol/trappiste_small_case/takbok, + "Custom Hellfire Laser Rifle" = /obj/item/gun/energy/laser/hellgun/blueshield, + "Bogseo Submachinegun Gunset" = /obj/item/storage/toolbox/guncase/skyrat/xhihao_large_case/bogseo, + "Tech-9" = /obj/item/storage/toolbox/guncase/skyrat/pistol/tech_9, + ) + + return selectable_gun_types + +/obj/item/storage/toolbox/guncase/skyrat/pistol/tech_9 + desc = "A thick yellow gun case with foam inserts laid out to fit a weapon, magazines, and gear securely. The five square grid of Tech-9 is displayed prominently on the top." + + icon = 'monkestation/code/modules/blueshift/icons/obj/gunsets.dmi' + icon_state = "case_trappiste" + + lefthand_file = 'monkestation/code/modules/blueshift/icons/mob/inhands/cases_lefthand.dmi' + righthand_file = 'monkestation/code/modules/blueshift/icons/mob/inhands/cases_righthand.dmi' + inhand_icon_state = "yellowcase" + + weapon_to_spawn = /obj/item/gun/ballistic/automatic/pistol/tech_9/no_mag + extra_to_spawn = /obj/item/ammo_box/magazine/m35/rubber + +/obj/item/gun/ballistic/automatic/pistol/tech_9 + name = "\improper Glock-O" + desc = "The standard issue service pistol of blueshield agents." + burst_size = 10 //lol + fire_delay = 1 + + icon = 'monkestation/code/modules/blueshield/icons/gun.dmi' + icon_state = "tech9" + + fire_sound = 'monkestation/code/modules/blueshift/sounds/pistol_light.ogg' + accepted_magazine_type = /obj/item/ammo_box/magazine/m35 + +/obj/item/gun/ballistic/automatic/pistol/tech_9/no_mag + spawnwithmagazine = FALSE diff --git a/monkestation/code/modules/blueshield/icons/device.dmi b/monkestation/code/modules/blueshield/icons/device.dmi new file mode 100644 index 0000000000000000000000000000000000000000..449e43052746dc23531228af5b9ed7bb7c36f99a GIT binary patch literal 884 zcmV-)1B?8LP)V=-0C=2JR&a84_w-Y6@%7{?OD!tS%+FJ>RWQ*r;NmRLOex6#a*U0*I5Sc+ z(=$pSoZ^zil2jm5DJiEkwKyX)H76y$I5{ydFSSUCi!&v&s2C_|$iAJX0V6)i zoTSkIre-E^{^?U^7^ciyjZ+V)>IngQ*v~@95qkQ%D16>Mum7|0@?xm__4zXc$Z}-$ zAO}ziXl*|eK1t-zL&Qb!9w zEBoEdOE_Ya?gF>$-P`@jJJq8YTUNVcD(G63cPWH9T+4~Fa4?ty6-pj8X36G*}*5Pg64m5V9W@_~h76R8ts~q~0Ds z4R-`K0J9vV4!zK%6wuOsya9mRy^PlUg3}SmmV?xR07xH5KhZ83Ap1$|4xeFIxMmdt zs5|=p-VGFWFE5^Eh<6c1$+Oh&4pZNLqPxS$1q-h3D0+cK&F(O*>?gWA3fFDZ*Bkp zc$`yKaB_9`^iy#0_2eo`Eh^5;&r`5fFwryM;w;ZhDainGjE%TBGg33tGfE(w;*!LY zR3KBSBsDq1Qi+Q*C9|j)$T#HTOe;#vO@**gRmJBfrW2_$DL`tfK#(g z)TRNo=hJ14PGht{IH%hhsQ{C0000yP)t-sz`(!_ z3>h9CG5{=DG&Dj0N|XRyyQKc~Pn4}GLuUYS;s8K^R8(OU5+*-CPyi!E0GZ4HGiLzI z|G>b&sG3`!00001bW%=J06^y0W&i*H#(Gp(bVOxyV{&P5bZKvH004NLosvxsf-n$; z*X=19*n&}E>&8F~3%Nsukv1tUX-AE>w_u_htbxpCe)_#PlQd?>@>JEVI9K!z)=8t; zf#sVmB@fx6@I|(#M1brBz6*yO!Kcw+IiRtU>$EW%tx>51uAq%5X{B}k&5n|*zqq&1n$&iDdtr#EX|%kJYOI}BZ2T?+wx-yY#3LLvd;L4L-Qh#nl_%KE-?Xg%(NOCh*qipM8Iz=hH|s2iV!CmxpXp+NSyoWpAGo0=+~; zNBF#k2(&@6u}MPz9Qd!kzk7jbd~Ojn3FYSqUv|l?gM50g<_*I4NB9He3tmWg$@&00 z`*c92U%4>`*w;UP2@cK@JmF#RX^f)jwo1T z7I6KP?nl`HTznqNBq~+_*H5QY;-`VWnHuK@E`vw=?8=l7IK z=J9h$NpG>|U#a{xmr}s_*6QQHl zqyBi3{!;*|pNUPh06xE$GM0kVg!14~pXSAdf$C?lP9S6#pUYC? z{0=PJ-1?}A`JE;~E9`t&yS@YfC%^`NZ<4J40QM5>jnC47!Rx@@{C@AiPUClVb#--h z{r`&iz10uv2mIdZOT?#Q3Q=qLwAnP62yHb^#P2cRXJO0V&&t}+OS7JU;`1Lo5Uytu^SkfQ zaHr&w`XJN`^XxINdlmBglRnh?L+!d8Gbi|YWW?{!`@qw#n?Vp!5V=10V}O9)Tl^b! z&H;wH3R(b%-#7U_{Yna)7h<(k5x<9gzm0yuWbkMP8)w*{Xa=3{ySlo%y1I^6y{cNT zuI_SD-{p6{zE4b(L2m8KI&I}0e&+yuO%3Gs?>lhk_heo&LFOJ5{Q2_$F~9E{U<1GJ z8(>iQT?tTkf4zNMe>MH#Kb&C2?@EB61C1T}#qY`ya{8;X7oysMh5rmZEcsn4UweD& zu>w}Ezg5ET%JXx7vghc)y2UsI=OF`w700000NkvXXu0mjflPi=N literal 0 HcmV?d00001 diff --git a/monkestation/code/modules/blueshield/icons/radio.dmi b/monkestation/code/modules/blueshield/icons/radio.dmi new file mode 100644 index 0000000000000000000000000000000000000000..9c5184305e153627e3821ca8ff45ee3d34e7239e GIT binary patch literal 480 zcmV<60U!Q}P))|NllpLOeM+C@3fZx3^Veb0#JxNK|4dFE$q! z7jKuMxP)8m00001bW%=J06^y0W&i*HdU{k?bVOxyV{&P5bZKvH004NLQ&w>wg-??{NYpg+1T~lv z4LViJa7qx8JrzZsIW8SR;dQFkRwTT#^cn!yqRpm@h|~f(XGg$A@M<1J`}qzZK-g>$ zmb@+C@G6ipl`(ei@};J%%+^%d=8s{tgBX89aQ8dzQ1??=hV5Jc{~f(R$=CFiAI=-0 Wz6OG9k*x#(0000eBMNVQnZrviu48TO9rRPFC^b#Klq%Rm5SP` z=JIN6-9n0KVd`J(I!Uwj0~OoP5_dsU7#g}9sfwUftb4nx%r8jDBDA@k})(#j}|n$c+Z#5j&o zX5MpmbdyEjcbUK$O~jTR{=~CUJf2eF{gr&9h>$j!W{dZhTzkUV;>s8Q>%^lIn*}Dq zei}=Vy|W(Y8>`n-(+^TJyrZooT2k9~%cS;Gx`R}lDbw^J!^1;Uuhg582VBQc-1R-< zyPxH5*ynyU)L7m58vqb|ajIfao>lkGF@Dl9ch&lbl6sTB$58)(bQ&_~rq`CS1B?9c zTYbCIkWFDoyIF^<1+VBtZayT)dOQE;pp~uu(2KjU2oc8t%NBm}Y;TgBes z$(`d6LZN7~-4yQnNL>s~F}JiY(MzN+(qn!?b{bYNMG`;+DH7SH@#GKjCx+A zqlnqCcW8~GcvZ1#u|2StjY>fFRjaSky;;mR%m!(dbqd`lAI~uj>}UVu696ci{Xko5 zAgN}?9lVk6w*72rr(!%BBQBtAd|0D=IysNdIR~ejovy$an!wj6lWA|5ouP4|n`RBr z;gcj=PQtVrqm*eFc0k(EBNG4E&S*9W#TaL}+`8IpZDn1ctCPTTilx`MtTyw+Z0p92 zba-!hR+m85L-epaN9%W0p-^~*4$__~3LC0Z@&bcAt?TfLxaqmRpgnw~iCrB;_P(HI z;XGde^5wd{%7RuU-*Fua;Rh?lBu(p;KtUrA?5L6x?_mvcy7Rhk`&^D>%+DQsKA1#Z`vZ}wIBmd1yLRd2(z%4@61xLljPEo}ISG zhT(ocHNzr6poiY-;URzW3)U&a+@yK*$JOl&yvKPM-%wDRj=y-B`jr^9bfkoNo#u@a z?y0r-OtYwv9ooeI(-i6KP}cEM<}}TFhxE@y*l(f0*OmCpT%peG|IDHFGVz(&;qUQu z?rCAceIAX}6zCbfTc@PdZ_wG``1+Gu&uhAwQW;e|WLYkcc*-hXR(l>@84xue0fYan zKE!SlU;DtWLKZUj&vi}ZbH=Vk=$5@#6hn>DBsaN>qh(A%S55K?A6$Pb*`rKnO z-ksMD9*lJt+h{8bLRX~Ktv4?#nBwp=hE7->&2dxETB;g&`s>lY#p&Yf-N?5>KSRR#W~cS8qsAwk@}v1_d9j?hf8}ZgP&(3^YxQ;9~;5Wwxw3I zb6UcEqaPdhaB7^u3hR_ys+{2G>-vU+bfZ6MwIkG~{Q%G?yW8l85_<0QLcAYJ^xXhg zQ=S*u-(_NM+d$BBq)L7kqhPPq9pR-GS04TsM>ist literal 0 HcmV?d00001 diff --git a/monkestation/code/modules/jobs/job_types/blueshield.dm b/monkestation/code/modules/blueshield/job.dm similarity index 50% rename from monkestation/code/modules/jobs/job_types/blueshield.dm rename to monkestation/code/modules/blueshield/job.dm index 4384c79e49cc..bfc55ecd3142 100644 --- a/monkestation/code/modules/jobs/job_types/blueshield.dm +++ b/monkestation/code/modules/blueshield/job.dm @@ -4,38 +4,40 @@ auto_deadmin_role_flags = DEADMIN_POSITION_SECURITY department_head = list(JOB_HEAD_OF_SECURITY) faction = FACTION_STATION - total_positions = 0 - spawn_positions = 0 + total_positions = 1 + spawn_positions = 1 supervisors = "the Heads of Staff" - minimal_player_age = 7 - exp_requirements = 600 + minimal_player_age = 30 + exp_requirements = 7200 exp_required_type = EXP_TYPE_CREW - exp_required_type_department = EXP_TYPE_SECURITY + exp_required_type_department = EXP_TYPE_COMMAND exp_granted_type = EXP_TYPE_CREW config_tag = "BLUESHIELD" outfit = /datum/outfit/job/blueshield - plasmaman_outfit = /datum/outfit/plasmaman/security + plasmaman_outfit = /datum/outfit/plasmaman/blueshield - paycheck = PAYCHECK_CREW - paycheck_department = ACCOUNT_SEC + paycheck = PAYCHECK_COMMAND + paycheck_department = ACCOUNT_CMD - liver_traits = list(TRAIT_LAW_ENFORCEMENT_METABOLISM) + liver_traits = list(TRAIT_PRETENDER_ROYAL_METABOLISM) display_order = JOB_DISPLAY_ORDER_BLUESHIELD bounty_types = CIV_JOB_SEC departments_list = list( - /datum/job_department/security, + /datum/job_department/central_command, /datum/job_department/command, ) - family_heirlooms = list(/obj/item/book/manual/wiki/security_space_law, /obj/item/clothing/head/beret/sec) + family_heirlooms = list(/obj/item/bedsheet/captain, /obj/item/clothing/head/beret/blueshield) mail_goodies = list( - /obj/item/food/donut/caramel = 10, - /obj/item/food/donut/matcha = 10, - /obj/item/food/donut/blumpkin = 5 + /obj/item/storage/fancy/cigarettes/cigars/havana = 10, + /obj/item/stack/spacecash/c500 = 3, + /obj/item/disk/nuclear/fake/obvious = 2, + /obj/item/clothing/head/collectable/captain = 4, ) + rpg_title = "Guard" job_flags = JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_REOPEN_ON_ROUNDSTART_LOSS | JOB_ASSIGN_QUIRKS | JOB_CAN_BE_INTERN @@ -45,32 +47,39 @@ /datum/outfit/job/blueshield name = "Blueshield" jobtype = /datum/job/blueshield - - id_trim = /datum/id_trim/job/blueshield - uniform = /obj/item/clothing/under/rank/security/officer/blueshirt - suit_store = /obj/item/gun/ballistic/automatic/pistol/paco/no_mag + uniform = /obj/item/clothing/under/rank/blueshield + suit = /obj/item/clothing/suit/armor/vest/blueshield/jacket + gloves = /obj/item/clothing/gloves/tackler/combat + id = /obj/item/card/id/advanced/centcom + shoes = /obj/item/clothing/shoes/jackboots + ears = /obj/item/radio/headset/headset_bs/alt + glasses = /obj/item/clothing/glasses/hud/security/sunglasses + implants = list(/obj/item/implant/mindshield) backpack_contents = list( - /obj/item/ammo_box/magazine/m35/rubber = 2, - /obj/item/restraints/handcuffs/cable/zipties = 1, - /obj/item/reagent_containers/spray/pepper = 1, - /obj/item/shield/riot/tele = 1 + /obj/item/choice_beacon/blueshield = 1, ) - head = /obj/item/clothing/head/beret/blueshield - suit = /obj/item/clothing/suit/armor/vest/blueshield/jacket - - belt = /obj/item/modular_computer/pda/security - shoes = /obj/item/clothing/shoes/sneakers/black - l_pocket = /obj/item/citationinator - r_pocket = /obj/item/assembly/flash/handheld - glasses = /obj/item/clothing/glasses/hud/security - ears = /obj/item/radio/headset/headset_com - gloves = /obj/item/clothing/gloves/color/black - shoes = /obj/item/clothing/shoes/jackboots/sec - backpack = /obj/item/storage/backpack/blueshield satchel = /obj/item/storage/backpack/satchel/blueshield duffelbag = /obj/item/storage/backpack/duffelbag/blueshield + head = /obj/item/clothing/head/beret/blueshield box = /obj/item/storage/box/survival/security + belt = /obj/item/modular_computer/pda/security + l_pocket = /obj/item/sensor_device/blueshield - implants = list(/obj/item/implant/mindshield) + id_trim = /datum/id_trim/job/blueshield + +/datum/outfit/plasmaman/blueshield + name = "Blueshield Plasmaman" + + head = /obj/item/clothing/head/helmet/space/plasmaman/blueshield + uniform = /obj/item/clothing/under/plasmaman/blueshield + +/datum/job_department/central_command + department_name = DEPARTMENT_CENTRAL_COMMAND + department_bitflags = DEPARTMENT_BITFLAG_CENTRAL_COMMAND + department_head = /datum/job/captain + department_experience_type = EXP_TYPE_CENTRAL_COMMAND + display_order = 1 + label_class = "command" + ui_color = "#86ff82" diff --git a/monkestation/code/modules/blueshield/landmarks.dm b/monkestation/code/modules/blueshield/landmarks.dm new file mode 100644 index 000000000000..e812eaee96b8 --- /dev/null +++ b/monkestation/code/modules/blueshield/landmarks.dm @@ -0,0 +1,2 @@ +/obj/effect/landmark/start/blueshield + name = "Blueshield" diff --git a/monkestation/code/modules/blueshield/modsuit/suit.dm b/monkestation/code/modules/blueshield/modsuit/suit.dm new file mode 100644 index 000000000000..7314f5f60f6a --- /dev/null +++ b/monkestation/code/modules/blueshield/modsuit/suit.dm @@ -0,0 +1,14 @@ +/obj/item/mod/control/pre_equipped/blueshield + worn_icon = 'monkestation/code/modules/blueshield/icons/worn_praetorian.dmi' + icon = 'monkestation/code/modules/blueshield/icons/praetorian.dmi' + icon_state = "praetorian-control" + theme = /datum/mod_theme/blueshield + applied_cell = /obj/item/stock_parts/cell/high + applied_modules = list( + /obj/item/mod/module/storage, + /obj/item/mod/module/magnetic_harness, + /obj/item/mod/module/flashlight, + /obj/item/mod/module/projectile_dampener, + /obj/item/mod/module/quick_carry, + /obj/item/mod/module/holster, + ) diff --git a/monkestation/code/modules/blueshield/modsuit/theme.dm b/monkestation/code/modules/blueshield/modsuit/theme.dm new file mode 100644 index 000000000000..ca1bd0838c52 --- /dev/null +++ b/monkestation/code/modules/blueshield/modsuit/theme.dm @@ -0,0 +1,59 @@ +/datum/mod_theme/blueshield + name = "praetorian" + desc = "A prototype of the Magnate-class suit issued to station Blueshields, still boasting exceptional protection worthy of an honor guard." + extended_desc = "A prototype of the Magnate-class suit issued for use with the station Blueshields, \ + it boasts the exceptional protection of its successor, while sacrificing some of the module capacity.\ + All of the protection of the Magnate, with none of the comfort! The visor uses blue-light to obscure \ + the face of its wearer, adding to its imposing figure. Compared to the sleek and luxurious design \ + that came after it, this suit does nothing to hide its purpose, the reinforced plating layered \ + over the insulated inner armor granting it protection against corrosive liquids, explosive blasts, \ + fires, electrical shocks, and contempt from the rest of the crew." + + default_skin = "praetorian" + armor_type = /datum/armor/mod_theme_security + atom_flags = PREVENT_CONTENTS_EXPLOSION_1 + slowdown_inactive = 1 + slowdown_active = 0.5 + allowed_suit_storage = list( + /obj/item/reagent_containers/spray/pepper, + /obj/item/restraints/handcuffs, + /obj/item/assembly/flash, + /obj/item/melee/baton, + ) + skins = list( + "praetorian" = list( + MOD_ICON_OVERRIDE = 'monkestation/code/modules/blueshield/icons/praetorian.dmi', + MOD_WORN_ICON_OVERRIDE = 'monkestation/code/modules/blueshield/icons/worn_praetorian.dmi', + HELMET_FLAGS = list( + UNSEALED_LAYER = null, + UNSEALED_CLOTHING = SNUG_FIT|THICKMATERIAL, + SEALED_CLOTHING = STOPSPRESSUREDAMAGE|HEADINTERNALS, + UNSEALED_INVISIBILITY = HIDEEARS|HIDEHAIR, + SEALED_INVISIBILITY = HIDEFACIALHAIR|HIDEMASK|HIDEEYES|HIDEFACE|HIDESNOUT, + SEALED_COVER = HEADCOVERSMOUTH|HEADCOVERSEYES|PEPPERPROOF, + UNSEALED_MESSAGE = HELMET_UNSEAL_MESSAGE, + SEALED_MESSAGE = HELMET_SEAL_MESSAGE, + ), + CHESTPLATE_FLAGS = list( + UNSEALED_CLOTHING = THICKMATERIAL, + SEALED_CLOTHING = STOPSPRESSUREDAMAGE, + SEALED_INVISIBILITY = HIDEJUMPSUIT, + UNSEALED_MESSAGE = CHESTPLATE_UNSEAL_MESSAGE, + SEALED_MESSAGE = CHESTPLATE_SEAL_MESSAGE, + ), + GAUNTLETS_FLAGS = list( + UNSEALED_CLOTHING = THICKMATERIAL, + SEALED_CLOTHING = STOPSPRESSUREDAMAGE, + CAN_OVERSLOT = TRUE, + UNSEALED_MESSAGE = GAUNTLET_UNSEAL_MESSAGE, + SEALED_MESSAGE = GAUNTLET_SEAL_MESSAGE, + ), + BOOTS_FLAGS = list( + UNSEALED_CLOTHING = THICKMATERIAL, + SEALED_CLOTHING = STOPSPRESSUREDAMAGE, + CAN_OVERSLOT = TRUE, + UNSEALED_MESSAGE = BOOT_UNSEAL_MESSAGE, + SEALED_MESSAGE = BOOT_SEAL_MESSAGE, + ), + ), + ) diff --git a/monkestation/code/modules/blueshield/radio.dm b/monkestation/code/modules/blueshield/radio.dm new file mode 100644 index 000000000000..deddf9bc4eb8 --- /dev/null +++ b/monkestation/code/modules/blueshield/radio.dm @@ -0,0 +1,6 @@ +/obj/item/encryptionkey/heads/blueshield + name = "\proper the blueshield's encryption key" + icon_state = "cypherkey_centcom" + channels = list(RADIO_CHANNEL_COMMAND = 1, RADIO_CHANNEL_SECURITY = 1) + greyscale_config = /datum/greyscale_config/encryptionkey_centcom + greyscale_colors = "#1d2657#dca01b" diff --git a/monkestation/code/modules/blueshield/readme.md b/monkestation/code/modules/blueshield/readme.md new file mode 100644 index 000000000000..e136884a3158 --- /dev/null +++ b/monkestation/code/modules/blueshield/readme.md @@ -0,0 +1,24 @@ +## Title: + + +MODULE ID: BLUESHIELD + +### Description: + +This pr adds blueshield as a job into the correct folders + + +### Included files that are not contained in this module: + + - code/modules/jobs/jobs.dm > GLOBAL_LIST_INIT(security_positions, list() + - code/modules/jobs/access.dm > /proc/get_all_accesses() + + + + +### Credits: + + + +Job Ported by Kitsunemitsu +Items Ported by Dwasint diff --git a/monkestation/code/modules/blueshield/trim.dm b/monkestation/code/modules/blueshield/trim.dm new file mode 100644 index 000000000000..c1f35f30a688 --- /dev/null +++ b/monkestation/code/modules/blueshield/trim.dm @@ -0,0 +1,33 @@ +/datum/id_trim/job/blueshield + assignment = "Blueshield" + trim_state = "trim_blueshield" + department_color = COLOR_COMMAND_BLUE + subdepartment_color = COLOR_SECURITY_RED + sechud_icon_state = SECHUD_BLUESHIELD + extra_access = list( + ACCESS_BRIG, + ACCESS_CARGO, + ACCESS_COURT, + ACCESS_GATEWAY, + ) + minimal_access = list( + ACCESS_SECURITY, + ACCESS_ALL_PERSONAL_LOCKERS, + ACCESS_BRIG_ENTRANCE, + ACCESS_CENT_GENERAL, + ACCESS_COMMAND, + ACCESS_CONSTRUCTION, + ACCESS_ENGINEERING, + ACCESS_EVA, + ACCESS_MAINT_TUNNELS, + ACCESS_MEDICAL, + ACCESS_MINERAL_STOREROOM, + ACCESS_SCIENCE, + ACCESS_TELEPORTER, + ACCESS_WEAPONS, + ) + template_access = list( + ACCESS_CAPTAIN, + ACCESS_CHANGE_IDS + ) + job = /datum/job/blueshield diff --git a/monkestation/code/modules/blueshift/appliances/colony.dm b/monkestation/code/modules/blueshift/appliances/colony.dm index c25fb1fd0a81..1b3e683f427c 100644 --- a/monkestation/code/modules/blueshift/appliances/colony.dm +++ b/monkestation/code/modules/blueshift/appliances/colony.dm @@ -7,7 +7,10 @@ but good old electricity." icon = 'monkestation/code/modules/blueshift/icons/chemistry_machines.dmi' icon_state = "water_synth" + active_power_usage = 0 + amount = 100 anchored = FALSE + reagent_id = /datum/reagent/water /// Reagents that this can dispense, overrides the default list on init var/static/list/synthesizable_reagents = list( /datum/reagent/water, @@ -21,6 +24,9 @@ AddElement(/datum/element/repackable, repacked_type, 2 SECONDS) AddElement(/datum/element/manufacturer_examine, COMPANY_FRONTIER) +/obj/machinery/plumbing/synthesizer/water_synth/ui_interact(mob/user, datum/tgui/ui) + return FALSE // nah its a flat 100 with no drain + // Deployable item for cargo for the water synth /obj/item/flatpacked_machine/water_synth diff --git a/monkestation/code/modules/blueshift/areas/station.dm b/monkestation/code/modules/blueshift/areas/station.dm index b16c6f06bfb3..fff014bc55a8 100644 --- a/monkestation/code/modules/blueshift/areas/station.dm +++ b/monkestation/code/modules/blueshift/areas/station.dm @@ -31,12 +31,6 @@ icon = 'monkestation/code/modules/blueshift/icons/areas/areas_station.dmi' icon_state = "nt_rep" -// Blueshield area -/area/station/command/heads_quarters/blueshield - name = "Blueshield's Office" - icon = 'monkestation/code/modules/blueshift/icons/areas/areas_station.dmi' - icon_state = "blueshield" - /* * Department areas */ diff --git a/monkestation/code/modules/blueshift/benos/human_changes.dm b/monkestation/code/modules/blueshift/benos/human_changes.dm index f7beb903e2cc..2264d87464aa 100644 --- a/monkestation/code/modules/blueshift/benos/human_changes.dm +++ b/monkestation/code/modules/blueshift/benos/human_changes.dm @@ -27,6 +27,7 @@ /mob/living/carbon/alien/adult/nova/Initialize(mapload) . = ..() AddComponent(/datum/component/seethrough_mob) + set_pain_mod("ALIEN", 0) GRANT_ACTION(/datum/action/cooldown/alien/nova/sleepytime) if(next_evolution) diff --git a/monkestation/code/modules/blueshift/clothing/nova_command.dm b/monkestation/code/modules/blueshift/clothing/nova_command.dm index cb8451f56e86..69cfe7abd0c6 100644 --- a/monkestation/code/modules/blueshift/clothing/nova_command.dm +++ b/monkestation/code/modules/blueshift/clothing/nova_command.dm @@ -29,58 +29,6 @@ icon_state = "captainblacksuit" can_adjust = FALSE -/* -* BLUESHIELD -*/ -//Why is this in command.dm? Simple: Centcom.dmi will already be packed with CC/NTNavy/AD/LL/SOL/FTU - all of them more event-based clothes, while this will appear -//on-station often. - -/obj/item/clothing/under/rank/blueshield - icon = 'monkestation/code/modules/blueshift/icons/obj/clothing/under/command.dmi' - worn_icon = 'monkestation/code/modules/blueshift/icons/mob/clothing/under/command.dmi' - worn_icon_digitigrade = 'monkestation/code/modules/blueshift/icons/mob/clothing/under/command_digi.dmi' - name = "blueshield's suit" - desc = "A classic bodyguard's suit, with custom-fitted Blueshield-Blue cuffs and a Nanotrasen insignia over one of the pockets." - icon_state = "blueshield" - strip_delay = 50 - armor_type = /datum/armor/clothing_under/rank_blueshield - sensor_mode = SENSOR_COORDS - random_sensor = FALSE - alt_covers_chest = TRUE - -/datum/armor/clothing_under/rank_blueshield - melee = 10 - bullet = 5 - laser = 5 - energy = 10 - bomb = 10 - fire = 50 - acid = 50 - -/obj/item/clothing/under/rank/blueshield/skirt - name = "blueshield's suitskirt" - desc = "A classic bodyguard's suitskirt, with custom-fitted Blueshield-Blue cuffs and a Nanotrasen insignia over one of the pockets." - icon_state = "blueshieldskirt" - body_parts_covered = CHEST|GROIN|ARMS - dying_key = DYE_REGISTRY_JUMPSKIRT - female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY - supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON - - -/obj/item/clothing/under/rank/blueshield/turtleneck - name = "blueshield's turtleneck" - desc = "A tactical jumper fit for only the best of bodyguards, with plenty of tactical pockets for your tactical needs." - icon_state = "bs_turtleneck" - -/obj/item/clothing/under/rank/blueshield/turtleneck/skirt - name = "blueshield's skirtleneck" - desc = "A tactical jumper fit for only the best of bodyguards - instead of tactical pockets, this one has a tactical lack of leg protection." - icon_state = "bs_skirtleneck" - body_parts_covered = CHEST|GROIN|ARMS - dying_key = DYE_REGISTRY_JUMPSKIRT - female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY - supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON - /* * NT CONSULTANT diff --git a/monkestation/code/modules/blueshift/clothing/nova_neck.dm b/monkestation/code/modules/blueshift/clothing/nova_neck.dm index 4a4835d562cd..e999df7ece5b 100644 --- a/monkestation/code/modules/blueshift/clothing/nova_neck.dm +++ b/monkestation/code/modules/blueshift/clothing/nova_neck.dm @@ -58,13 +58,6 @@ worn_icon = 'monkestation/code/modules/blueshift/icons/mob/clothing/neck.dmi' icon_state = "hosmantle_blue" //There's a red version if you remove the _blue, but its not coded in currently. -/obj/item/clothing/neck/mantle/bsmantle - name = "\proper the blueshield's mantle" - desc = "A plated mantle with command colors. Suitable for the one assigned to making sure they're still breathing." - icon = 'monkestation/code/modules/blueshift/icons/mob/clothing/neck.dmi' - worn_icon = 'monkestation/code/modules/blueshift/icons/mob/clothing/neck.dmi' - icon_state = "bsmantle" - /obj/item/clothing/neck/mantle/capmantle name = "\proper the captain's mantle" desc = "A formal mantle to drape around the shoulders. Others stand on the shoulders of giants. You're the giant they stand on." diff --git a/monkestation/code/modules/blueshift/components/armament.dm b/monkestation/code/modules/blueshift/components/armament.dm index 78542490beb9..c7a8ea7f90f0 100644 --- a/monkestation/code/modules/blueshift/components/armament.dm +++ b/monkestation/code/modules/blueshift/components/armament.dm @@ -29,8 +29,17 @@ required_access = needed_access - RegisterSignal(parent, COMSIG_ATOM_ATTACK_HAND, PROC_REF(on_attack_hand)) - RegisterSignal(parent, COMSIG_ATOM_ATTACKBY, PROC_REF(on_attackby)) + if(!istype(parent, /obj/item/armament_points_card)) + RegisterSignal(parent, COMSIG_ATOM_ATTACK_HAND, PROC_REF(on_attack_hand)) + RegisterSignal(parent, COMSIG_ATOM_ATTACKBY, PROC_REF(on_attackby)) + else + RegisterSignal(parent, COMSIG_ATOM_ATTACK_HAND_SECONDARY, PROC_REF(on_attack_hand)) + RegisterSignal(parent, COMSIG_ITEM_ATTACK_SELF, PROC_REF(on_attack_hand)) + RegisterSignal(parent, COMSIG_ITEM_ATTACK_SELF_SECONDARY, PROC_REF(on_attack_hand)) + var/atom/atom_target = parent + atom_target.flags_1 |= HAS_CONTEXTUAL_SCREENTIPS_1 + RegisterSignal(parent, COMSIG_ATOM_REQUESTING_CONTEXT_FROM_ITEM, PROC_REF(context)) + inserted_card = parent /datum/component/armament/Destroy(force) if(inserted_card) @@ -38,6 +47,16 @@ inserted_card = null return ..() +/datum/component/armament/proc/context(datum/source, + list/context, + obj/item/held_item, + mob/user, +) + PRIVATE_PROC(TRUE) + SIGNAL_HANDLER + context[SCREENTIP_CONTEXT_RMB] = "Open Armament Store" + return CONTEXTUAL_SCREENTIP_SET + /datum/component/armament/proc/on_attackby(atom/target, obj/item, mob/user) SIGNAL_HANDLER @@ -141,6 +160,8 @@ buy_ammo(usr, check, params["quantity"]) SStgui.update_uis(src) if("eject_card") + if(istype(parent, /obj/item/armament_points_card)) + return eject_card(usr) SStgui.update_uis(src) diff --git a/monkestation/code/modules/blueshift/icons/mob/clothing/ears.dmi b/monkestation/code/modules/blueshift/icons/mob/clothing/ears.dmi new file mode 100644 index 0000000000000000000000000000000000000000..4fdd7765ee589b9b889fe038ed3b471b253489a7 GIT binary patch literal 1373 zcmYLG2~d&=6#m@~%hqhST#qad)WY>bR>fAqHc`>M0F@4fwJdK-+U5}L7 zCddvKb1jcGLrudY*Dc5JNP!foP)zXvMOd2Mwm0+MH}Adq-uKPCoZvtoT^(Z`004AR zzFuez3O?nwO`2*ayFR3WRr4hMt5 zqN1Y6WHO0FLZMIqREUqS_MZ3mBndx6xv{AL&w4IP5|nN`0n=_(BBV2T=lzLw6EQnu?+jF()*C_t}6490LQK*{Bh&MB2>3gf>~ns zJ*$NrH!J1`^FEYW19V3UI5aF}nW&}h01zOt;htNVeE_f-KzSX;W>n8HBp*5522cuH}DM|^{2q2xp}q;0+X%Q!tq+msgFm_&SLc`V0(LqKNeYq^ie9um0x3U zM%pcUUdN}I6cl9SJ$V8W%8jie>B+R$@m19B&{cUHC6YI{Eu4GzJJ~JozGo_s>^w~< zKf62O{s(TMw0Ge!d2*Js(h)c86JR$z91NNcQ5R=UY;JQ7doZNkn>q0aR2xRcx}qcZ z#WUS!5l)3<39cr_FNt9Rb~c5ongmPx++A+&O{e8!gd*b9KoCv4Moes2QfO&j@+sO~ zr-sk{nv`z{kBr8|oZwKrI8K_Jr`*RlnK>@+uo3eJ zT81KX-qY}!bI4?G(_MOVt3>n?Gf|JE1yBheYaJh#UY(U zm3PjUVb3WyCks=XN9*NVp+)ofxHacq{?!Y=lyG)0j_4KiWb4eSSRG$aua`GY^EpH8 zUXCiLjsE^ve)ZtoykDW-$LOBnbboZQMax2j6S1DU^tsJ90T@?Z^1i!jIWb_>DbVK9d1JPJyY|e?C38Sv2t2 zqkXLE(utz{$64d|U%^RiR*O>6A1O>GZkIIv=E!c3k(LVBEu>cdJm&>29&WU~V7_qW zf_Ui-k)F&>#uJoO3@?di1$(NU`K=_oYdfx%x2B`EUP<}z27_gE?opds=aFcGJ<$znmvFhfd7@(9{sF7mv8i$fHrDQx7({ueg&%IcwFZEMZeLrUM bzt~Qtwj{z(&h&Eo=F<#?4D@3EM9BIFNYa|Q literal 0 HcmV?d00001 diff --git a/monkestation/code/modules/blueshift/items/ammo.dm b/monkestation/code/modules/blueshift/items/ammo.dm index 19f78deb4230..405abf2b71d4 100644 --- a/monkestation/code/modules/blueshift/items/ammo.dm +++ b/monkestation/code/modules/blueshift/items/ammo.dm @@ -286,7 +286,7 @@ /obj/projectile/bullet/c35sol name = ".35 Sol Short bullet" - damage = 20 + damage = 15 wound_bonus = -5 // Normal bullets are 20 bare_wound_bonus = 5 @@ -369,7 +369,7 @@ /obj/projectile/bullet/c35sol/ripper name = ".35 Sol ripper bullet" - damage = 15 + damage = 12 weak_against_armour = TRUE diff --git a/monkestation/code/modules/blueshift/items/company_guns.dm b/monkestation/code/modules/blueshift/items/company_guns.dm index 1377d24126e3..05719ce95ce4 100644 --- a/monkestation/code/modules/blueshift/items/company_guns.dm +++ b/monkestation/code/modules/blueshift/items/company_guns.dm @@ -131,7 +131,8 @@ fire_delay = 0.1 SECONDS - recoil = 1 + recoil = 2 + wield_recoil = 0.5 spread = 12.5 projectile_wound_bonus = -20 @@ -420,7 +421,7 @@ suppressor_x_offset = 9 - burst_size = 1 + burst_size = 2 fire_delay = 0.15 SECONDS actions_types = list() @@ -429,6 +430,7 @@ spread = 12.5 // Hope you didn't need to see anytime soon recoil = 2 + wield_recoil = 0.5 /obj/item/gun/ballistic/automatic/xhihao_smg/give_manufacturer_examine() AddElement(/datum/element/manufacturer_examine, COMPANY_XHIHAO) @@ -517,6 +519,7 @@ fire_delay = 1 SECONDS recoil = 3 + wield_recoil = 1 /obj/item/gun/ballistic/revolver/takbok/give_manufacturer_examine() AddElement(/datum/element/manufacturer_examine, COMPANY_TRAPPISTE) @@ -627,6 +630,7 @@ fire_delay = 1 SECONDS recoil = 3 + wield_recoil = 1 /obj/item/gun/ballistic/automatic/pistol/trappiste/give_manufacturer_examine() AddElement(/datum/element/manufacturer_examine, COMPANY_TRAPPISTE) @@ -761,7 +765,8 @@ fire_delay = 1.2 SECONDS actions_types = list() - recoil = 0.5 + recoil = 1.5 + wield_recoil = 0.5 spread = 2.5 projectile_wound_bonus = -20 @@ -824,6 +829,7 @@ fire_sound_volume = 100 // BOOM BABY recoil = 4 + wield_recoil = 2 weapon_weight = WEAPON_HEAVY burst_size = 1 @@ -962,6 +968,7 @@ desc = "An outdated sidearm rarely seen in use by some members of the CIN. A revolver type design with a four shell cylinder. That's right, shell, this one shoots twelve guage." accepted_magazine_type = /obj/item/ammo_box/magazine/internal/cylinder/rev12ga recoil = SAWN_OFF_RECOIL + wield_recoil = SAWN_OFF_RECOIL * 0.5 weapon_weight = WEAPON_MEDIUM icon = 'monkestation/code/modules/blueshift/icons/obj/company_and_or_faction_based/szot_dynamica/guns_32.dmi' icon_state = "bobr" @@ -1001,7 +1008,7 @@ bolt_type = BOLT_TYPE_OPEN - w_class = WEIGHT_CLASS_NORMAL + w_class = WEIGHT_CLASS_BULKY weapon_weight = WEAPON_MEDIUM slot_flags = ITEM_SLOT_SUITSTORE | ITEM_SLOT_BELT @@ -1015,8 +1022,8 @@ suppressor_x_offset = 11 - burst_size = 3 - fire_delay = 0.2 SECONDS + burst_size = 2 + fire_delay = 0.35 SECONDS spread = 7.5 @@ -1339,3 +1346,15 @@ #undef SHORT_MOD_LASER_SPEECH #undef MOD_LASER_SPEECH_COOLDOWN #undef DEFAULT_RUNECHAT_GUN_COLOR + +/obj/item/gun/ballistic/proc/on_wield() + SIGNAL_HANDLER + + recoil = wield_recoil + spread = spread * 0.75 + +/obj/item/gun/ballistic/proc/on_unwield() + SIGNAL_HANDLER + + recoil = initial(recoil) + spread = initial(spread) diff --git a/monkestation/code/modules/blueshift/items/deforest.dm b/monkestation/code/modules/blueshift/items/deforest.dm index fcaa75e0f7d7..1cbd5ffcbf51 100644 --- a/monkestation/code/modules/blueshift/items/deforest.dm +++ b/monkestation/code/modules/blueshift/items/deforest.dm @@ -348,7 +348,7 @@ base_icon_state = "morpital" icon_state = "morpital" list_reagents = list( - /datum/reagent/medicine/morphine = 5, + /datum/reagent/medicine/painkiller/morphine = 5, /datum/reagent/medicine/omnizine/protozine = 15, /datum/reagent/toxin/staminatoxin = 5, ) diff --git a/monkestation/code/modules/blueshift/items/magazines.dm b/monkestation/code/modules/blueshift/items/magazines.dm index c1b4f6b5b15b..2c1770049ecf 100644 --- a/monkestation/code/modules/blueshift/items/magazines.dm +++ b/monkestation/code/modules/blueshift/items/magazines.dm @@ -20,13 +20,13 @@ /obj/item/ammo_box/magazine/c35sol_pistol/stendo name = "\improper Sol extended pistol magazine" - desc = "An extended magazine for SolFed pistols, holds twenty-four rounds." + desc = "An extended magazine for SolFed pistols, holds sixteen rounds." icon_state = "pistol_35_stended" w_class = WEIGHT_CLASS_NORMAL - max_ammo = 24 + max_ammo = 16 /obj/item/ammo_box/magazine/c35sol_pistol/stendo/starts_empty start_empty = TRUE @@ -116,7 +116,7 @@ /obj/item/ammo_box/magazine/c585trappiste_pistol name = "\improper Trappiste pistol magazine" - desc = "A standard size magazine for Trappiste pistols, holds six rounds." + desc = "A standard size magazine for Trappiste pistols, holds sixteen rounds." icon = 'monkestation/code/modules/blueshift/icons/obj/company_and_or_faction_based/trappiste_fabriek/ammo.dmi' icon_state = "pistol_585_standard" @@ -127,7 +127,7 @@ ammo_type = /obj/item/ammo_casing/c585trappiste caliber = CALIBER_585TRAPPISTE - max_ammo = 6 + max_ammo = 16 /obj/item/ammo_box/magazine/c585trappiste_pistol/spawns_empty start_empty = TRUE diff --git a/monkestation/code/modules/blueshift/machines/station_armament.dm b/monkestation/code/modules/blueshift/machines/station_armament.dm index efda34c95c60..85f77452549b 100644 --- a/monkestation/code/modules/blueshift/machines/station_armament.dm +++ b/monkestation/code/modules/blueshift/machines/station_armament.dm @@ -41,9 +41,14 @@ w_class = WEIGHT_CLASS_TINY /// How many points does this card have to use at the vendor? var/points = 10 + var/armament_type + var/list/access /obj/item/armament_points_card/Initialize(mapload) . = ..() + if(armament_type) + AddComponent(/datum/component/armament, subtypesof(armament_type), access) + maptext = span_maptext("

") /obj/item/armament_points_card/examine(mob/user) diff --git a/monkestation/code/modules/blueshift/machines/thumper.dm b/monkestation/code/modules/blueshift/machines/thumper.dm index 9531db06035c..56c5c6c2b61f 100644 --- a/monkestation/code/modules/blueshift/machines/thumper.dm +++ b/monkestation/code/modules/blueshift/machines/thumper.dm @@ -44,15 +44,15 @@ ) /// How much of the listed types of ores should we spawn when spawning ore var/static/list/ore_spawn_values = list( - /obj/item/stack/ore/iron = 25, - /obj/item/stack/ore/glass/basalt = 25, - /obj/item/stack/ore/plasma = 15, - /obj/item/stack/ore/uranium = 10, - /obj/item/stack/ore/silver = 10, - /obj/item/stack/ore/gold = 10, - /obj/item/stack/ore/titanium = 10, - /obj/item/stack/ore/diamond = 5, - /obj/item/stack/ore/bluespace_crystal = 1, + /obj/item/stack/ore/iron = 8000, + /obj/item/stack/ore/glass/basalt = 8000, + /obj/item/stack/ore/plasma = 7000, + /obj/item/stack/ore/uranium = 6000, + /obj/item/stack/ore/silver = 4000, + /obj/item/stack/ore/gold = 4000, + /obj/item/stack/ore/titanium = 4000, + /obj/item/stack/ore/diamond = 2500, + /obj/item/stack/ore/bluespace_crystal = 1000, ) /// What's the limit for ore near us? Counts by stacks, not individual amounts of ore var/nearby_ore_limit = 5 @@ -204,7 +204,7 @@ var/is_there_a_thumper_too = FALSE for(var/turf/nearby_turf in orange(ore_spawn_range, src)) for(var/ore as anything in nearby_turf.contents) - if(istype(ore, /obj/item/stack/ore)) + if(istype(ore, /obj/item/boulder)) nearby_ore += 1 continue if(istype(ore, /obj/machinery/power/colony_ore_thumper)) @@ -243,8 +243,16 @@ for(var/iteration in 1 to rand(2, 4)) var/turf/target_turf = pick(nearby_valid_turfs) - var/obj/item/stack/new_ore = pick_weight(ore_weight_list) - new new_ore(target_turf, ore_spawn_values[new_ore.type]) + var/obj/item/stack/ore/new_ore = pick_weight(ore_weight_list) + var/obj/item/stack/ore/created_ore = new new_ore + var/obj/item/boulder/new_boulder = new (target_turf) + + var/list/new_mats = list() + for(var/datum/material/material as anything in created_ore.mats_per_unit) + new_mats[material] = ore_spawn_values[created_ore.type] + + qdel(created_ore) + new_boulder.set_custom_materials(new_mats) slam_jams -= slam_jams_needed diff --git a/monkestation/code/modules/blueshift/reagents/deforest.dm b/monkestation/code/modules/blueshift/reagents/deforest.dm index ca8751c02f28..556d1b96df25 100644 --- a/monkestation/code/modules/blueshift/reagents/deforest.dm +++ b/monkestation/code/modules/blueshift/reagents/deforest.dm @@ -13,6 +13,7 @@ /datum/reagent/medicine/lidocaine/overdose_process(mob/living/carbon/affected_mob, seconds_per_tick, times_fired) . = ..() + affected_mob.cause_pain(BODY_ZONES_ALL, -1 * REM * seconds_per_tick) affected_mob.adjustOrganLoss(ORGAN_SLOT_HEART,3 * REM * seconds_per_tick, 80) //Inverse Medicines// @@ -306,6 +307,7 @@ else // Much longer than that however, and you're not gonna have a good day if(!(our_guy.mob_biotypes & MOB_ROBOTIC)) our_guy.spray_blood(our_guy.dir, 2) // The before mentioned coughing up blood + our_guy.blood_particles(amount = rand(3, 6), angle = 0, min_deviation = 0, max_deviation = 360) our_guy.emote("cough") our_guy.visible_message( span_danger("[our_guy] suddenly snaps back from [our_guy.p_their()] inhuman speeds, coughing up a spray of blood!"), @@ -410,6 +412,7 @@ if(SPT_PROB(5, seconds_per_tick) && !(our_guy.mob_biotypes & MOB_ROBOTIC)) to_chat(our_guy, span_danger("You cough up a splatter of blood!")) our_guy.spray_blood(our_guy.dir, 1) + our_guy.blood_particles(amount = rand(3, 6), angle = 0, min_deviation = 0, max_deviation = 360) our_guy.emote("cough") if(SPT_PROB(10, seconds_per_tick)) diff --git a/monkestation/code/modules/blueshift/structures/locker.dm b/monkestation/code/modules/blueshift/structures/locker.dm index e44321f0875f..ce8340aac777 100644 --- a/monkestation/code/modules/blueshift/structures/locker.dm +++ b/monkestation/code/modules/blueshift/structures/locker.dm @@ -15,39 +15,6 @@ new /obj/item/clothing/head/helmet/toggleable/riot(src) new /obj/item/shield/riot(src) -/obj/item/storage/bag/garment/blueshield - name = "blueshield's garment bag" - desc = "A bag for storing extra clothes and shoes. This one belongs to the blueshield." - -/obj/item/storage/bag/garment/blueshield/PopulateContents() - new /obj/item/clothing/suit/hooded/wintercoat/nova/blueshield(src) - new /obj/item/clothing/head/beret/blueshield(src) - new /obj/item/clothing/head/beret/blueshield/navy(src) - new /obj/item/clothing/under/rank/blueshield(src) - new /obj/item/clothing/under/rank/blueshield/skirt(src) - new /obj/item/clothing/under/rank/blueshield/turtleneck(src) - new /obj/item/clothing/under/rank/blueshield/turtleneck/skirt(src) - new /obj/item/clothing/suit/armor/vest/blueshield(src) - new /obj/item/clothing/suit/armor/vest/blueshield/jacket(src) - new /obj/item/clothing/neck/mantle/bsmantle(src) - -/obj/structure/closet/secure_closet/blueshield - name = "blueshield's locker" - icon_state = "bs" - icon = 'monkestation/code/modules/blueshift/icons/obj/closet.dmi' - req_access = list(ACCESS_CAPTAIN) - -/obj/structure/closet/secure_closet/blueshield/New() - ..() - new /obj/item/storage/briefcase/secure(src) - new /obj/item/storage/belt/security/full(src) - new /obj/item/grenade/flashbang(src) - new /obj/item/assembly/flash/handheld(src) - new /obj/item/restraints/handcuffs(src) - new /obj/item/clothing/glasses/hud/security/sunglasses(src) - new /obj/item/storage/medkit/frontier/stocked(src) - new /obj/item/storage/bag/garment/blueshield(src) - /obj/structure/closet/secure_closet/nanotrasen_consultant name = "nanotrasen consultant's locker" diff --git a/monkestation/code/modules/brewin_and_chewin/brewing/bottler.dm b/monkestation/code/modules/brewin_and_chewin/brewing/bottler.dm new file mode 100644 index 000000000000..69f4d333a4ec --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/brewing/bottler.dm @@ -0,0 +1,53 @@ +/obj/item/bottle_kit + name = "Bottling Kit" + desc = "A box that holds glasses fabricators, lables, caps and quarks ready for home brewing and bottling." + icon = 'monkestation/code/modules/brewin_and_chewin/icons/objects.dmi' + icon_state = "bottler_box" + w_class = WEIGHT_CLASS_NORMAL + custom_materials = list(/datum/material/iron = 2000, /datum/material/glass = 4000) + var/glass_colour = "brew_bottle" + var/fake_glass_name = "Kinda Blue" + +/obj/item/bottle_kit/examine(mob/user) + . = ..() + . += span_info("Current Glass Bottle Printing Type: [fake_glass_name].") + + +/obj/item/bottle_kit/attack_self(mob/user as mob) + ..() + glass_picker(user) + +/obj/item/bottle_kit/proc/glass_picker(mob/user as mob) + var/list/options = list() + options["Kinda Blue"] = "brew_bottle" + options["Redish"] = "brew_red_bottle" + options["Green-Adjcent"] = "brew_green_bottle" + options["Scuffed Platium"] = "brew_white_bottle" + options["Sorta Coal"] = "brew_coal_bottle" + options["Maybe Bronze"] = "brew_fancy_bottle" + options["Off-Amethyst"] = "brew_funky_bottle" + options["Odd Sky Shade"] = "brew_sky_bottle" + options["Washed Out Brass"] = "brew_saint_po_bottle" + options["Faded Caramel"] = "brew_gold_bottle" + options["Approximate Sea Shore"] = "brew_pianowoman_bottle" + options["Faded Dust"] = "brew_noir_bottle" + options["Close Honeycomb"] = "brew_bees_bottle" + + + if(!options.len) + to_chat(user, span_info("The bottle kit is limited to only normal blue bottles. Oh no!")) + glass_colour = "brew_bottle" + fake_glass_name = "Blue" + return + + var/choice = tgui_input_list(user, "What colour do you pick?", name, options) + + var/printing_choice = options[choice] + + if(!printing_choice) + glass_colour = "brew_bottle" + fake_glass_name = "Kinda Blue" + return + + fake_glass_name = choice + glass_colour = printing_choice diff --git a/monkestation/code/modules/brewin_and_chewin/brewing/bottles.dm b/monkestation/code/modules/brewin_and_chewin/brewing/bottles.dm new file mode 100644 index 000000000000..bb7157e2ec16 --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/brewing/bottles.dm @@ -0,0 +1,19 @@ +/obj/item/reagent_containers/cup/glass/bottle/small/brewing_bottle + name = "Flash Bottle" + desc = "A quickly printed bottle using a non-recycleable glass." + icon = 'monkestation/code/modules/brewin_and_chewin/icons/bottle.dmi' + icon_state = "brew_bottle" + + var/glass_name + var/glass_desc + +/obj/item/reagent_containers/cup/glass/bottle/small/brewing_bottle/afterattack(atom/target, mob/user, proximity_flag, click_parameters) + . = ..() + if(target.type in typesof(/obj/item/reagent_containers/cup/glass) - typesof(/obj/item/reagent_containers/cup/glass/bottle)) + if(glass_name) + target.name = glass_name + if(glass_desc) + target.desc = glass_desc + if(reagents.total_volume <= 0) + glass_desc = null + glass_name = null diff --git a/monkestation/code/modules/brewin_and_chewin/brewing/designs.dm b/monkestation/code/modules/brewin_and_chewin/brewing/designs.dm new file mode 100644 index 000000000000..644e17339dac --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/brewing/designs.dm @@ -0,0 +1,23 @@ +/datum/design/bottling_kit + name = "Bottling Kit" + id = "bottling_kit" + build_type = AUTOLATHE + materials = list(/datum/material/glass=2000, /datum/material/iron=2000) + build_path = /obj/item/bottle_kit + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_KITCHEN, + ) + departmental_flags = DEPARTMENT_BITFLAG_SERVICE + +/datum/design/recipe_card + name = "Fermentation Recipe Card" + id = "recipe_card" + build_type = AUTOLATHE + materials = list(/datum/material/iron=100) + build_path = /obj/item/recipe_card + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_KITCHEN, + ) + departmental_flags = DEPARTMENT_BITFLAG_SERVICE diff --git a/monkestation/code/modules/brewin_and_chewin/brewing/fermintation_keg.dm b/monkestation/code/modules/brewin_and_chewin/brewing/fermintation_keg.dm new file mode 100644 index 000000000000..ba4f66a5f3da --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/brewing/fermintation_keg.dm @@ -0,0 +1,302 @@ +GLOBAL_LIST_EMPTY(custom_fermentation_recipes) + +/obj/structure/fermentation_keg + name = "fermentation keg" + desc = "A simple keg that is meant for making booze." + + icon = 'monkestation/code/modules/brewin_and_chewin/icons/objects.dmi' + icon_state = "barrel_tapless" + + density = TRUE + + /// The sound of fermentation + var/datum/looping_sound/boiling/soundloop + /// The volume of the barrel sounds + var/sound_volume = 25 + var/open_icon_state = "barrel_tapless_open" + + //After brewing we can sell or bottle, this is for the latter + var/ready_to_bottle = FALSE + var/brewing = FALSE + + ///our currently needed crops + var/list/recipe_crop_stocks + ///our currently selected recipe + var/datum/brewing_recipe/selected_recipe + ///our current price value used by exports + var/price_tag = 0 + ///our made item which we clear once its no longer ready to bottle + var/made_item + + + +/obj/structure/fermentation_keg/Initialize() + . = ..() + create_reagents(240, OPENCONTAINER | NO_REACT) //on agv it should be 120u for water then rest can be other needed chemicals + recipe_crop_stocks = list() + + soundloop = new(src, brewing) + soundloop.volume = sound_volume + +/obj/structure/fermentation_keg/attack_hand(mob/user) + if(!brewing && (!selected_recipe || ready_to_bottle)) + shopping_run(user) + return + + if(try_n_brew(user)) + start_brew() + ..() + +/obj/structure/fermentation_keg/attackby(obj/item/I, mob/user) + var/list/produce_list = list() + var/obj/item/storage/bag/plants/storage + + if(istype(I, /obj/item/bottle_kit)) + var/obj/item/bottle_kit/kit = I + bottle(kit.glass_colour) + + if(I.type in selected_recipe?.needed_items) + produce_list += I + + if(istype(I, /obj/item/food/grown)) + produce_list += I + + if(istype(I, /obj/item/storage/bag/plants)) + storage = I + for(var/obj/item/food/grown/item in storage.contents) + produce_list += item + + for(var/obj/item/food/grown/G in produce_list) + if(G.type in selected_recipe?.needed_crops) + var/amount = recipe_crop_stocks[G.type] || 0 + var/added_item = round(min(10, max(1, G.seed.potency / 10))) + recipe_crop_stocks[G.type] = amount + added_item + qdel(G) + + for(var/obj/item/item in produce_list) + if(item.type in selected_recipe?.needed_items) + var/amount = recipe_crop_stocks[item.type] || 0 + var/added_item = 1 + recipe_crop_stocks[item.type] = amount + added_item + qdel(item) + + . = ..() + +/obj/structure/fermentation_keg/examine(mob/user) + . =..() + if(ready_to_bottle) + . += span_boldnotice("[made_item]") + . += span_notice("Value: [price_tag]") + + else if(selected_recipe) + var/message = "Currently making: [selected_recipe.display_name].\n" + + for(var/datum/reagent/required_chem as anything in selected_recipe.needed_reagents) + message += "Reagent Needed: [initial(required_chem.name)] [selected_recipe.needed_reagents[required_chem]].\n" + + for(var/obj/item/food/grown/required_crop as anything in selected_recipe.needed_crops) + message += "Crop Needed: [capitalize(initial(required_crop.name))] [selected_recipe.needed_crops[required_crop]], Current Amount: [recipe_crop_stocks[required_crop] || 0].\n" + + for(var/obj/item/needed_item as anything in selected_recipe.needed_items) + message += "Item Needed: [capitalize(initial(needed_item.name))] [selected_recipe.needed_items[needed_item]], Current Amount: [recipe_crop_stocks[needed_item] || 0].\n" + + //time + if(selected_recipe.brew_time) + if(selected_recipe.brew_time >= 1 MINUTES) + message += "Once set, will take [selected_recipe.brew_time / 600] Minutes.\n" + else + message += "Once set, will take [selected_recipe.brew_time / 10] Seconds.\n" + + //How many are brewed + if(selected_recipe.brewed_amount) + message += "Will produce [selected_recipe.brewed_amount] bottles when finished.\n" + + if(selected_recipe.brewed_item && selected_recipe.brewed_item_count) + var/name_to_use = selected_recipe.secondary_name + if(!name_to_use) + name_to_use = selected_recipe.display_name + message += "Will produce [name_to_use] x [selected_recipe.brewed_item_count] when finished.\n" + + if(selected_recipe.helpful_hints) + message += "[selected_recipe.helpful_hints].\n" + + if(istype(selected_recipe, /datum/brewing_recipe/custom_recipe)) + var/datum/brewing_recipe/custom_recipe/recipe = selected_recipe + message += "Recipe Created By:[recipe.made_by]" + . += message + + +/obj/structure/fermentation_keg/proc/shopping_run(mob/user) + if(brewing) + return + + var/list/options = list() + for(var/path in subtypesof(/datum/brewing_recipe) - /datum/brewing_recipe/custom_recipe) + var/datum/brewing_recipe/recipe = path + var/prereq = initial(recipe.pre_reqs) + if((!ready_to_bottle && prereq == null) || (selected_recipe?.reagent_to_brew == prereq && ready_to_bottle)) + options[initial(recipe.display_name)] = recipe + + + for(var/datum/brewing_recipe/recipe in GLOB.custom_fermentation_recipes) + var/prereq = recipe.pre_reqs + if((!ready_to_bottle && prereq == null) || (selected_recipe?.reagent_to_brew == prereq && ready_to_bottle)) + options[recipe.display_name] = recipe + + if(options.len == 0) + to_chat(user, "Their is no further brewing to be done, clear this barrel out or sell it.") + return + + var/choice = tgui_input_list(user,"What brew do you want to make?", name, options) + + if(!choice) + return + + var/choice_to_spawn = options[choice] + + if(istype(choice_to_spawn, /datum/brewing_recipe/custom_recipe)) + selected_recipe = choice_to_spawn + else + selected_recipe = new choice_to_spawn + + //Second stage brewing gives no refunds! - This is intented design to help make it so folks dont quit halfway through and still get a rebate + ready_to_bottle = FALSE + price_tag = 150 + icon_state = open_icon_state + +//Remove only chemicals +/obj/structure/fermentation_keg/proc/clear_keg_reagents() + if(reagents) + //consume consume consume consume + reagents.clear_reagents() + +//Remove and reset +/obj/structure/fermentation_keg/proc/clear_keg(force = FALSE) + if(brewing) + return FALSE + + if(!force && ready_to_bottle) + return FALSE + + if(reagents) + reagents.clear_reagents() + + ready_to_bottle = FALSE + made_item = null + icon_state = open_icon_state + + recipe_crop_stocks.Cut() + + price_tag = 150 + + if(force) + selected_recipe = null + + return TRUE + +/obj/structure/fermentation_keg/proc/start_brew() + brewing = TRUE + + for(var/obj/item/food/grown/item as anything in selected_recipe.needed_crops) + if(!(item in recipe_crop_stocks)) + return + var/amount = recipe_crop_stocks[item] || 0 + recipe_crop_stocks[item] = amount - selected_recipe.needed_crops[item] + + for(var/obj/item/item as anything in selected_recipe.needed_items) + if(!(item in recipe_crop_stocks)) + return + var/amount = recipe_crop_stocks[item] || 0 + recipe_crop_stocks[item] = amount - selected_recipe.needed_items[item] + + clear_keg_reagents() + + soundloop.start() + addtimer(CALLBACK(src, PROC_REF(end_brew)), selected_recipe.brew_time) + icon_state = initial(icon_state) + +/obj/structure/fermentation_keg/proc/end_brew() + icon_state = "barrel_tapless_ready" + soundloop.stop() + ready_to_bottle = TRUE + brewing = FALSE + price_tag = selected_recipe.cargo_valuation + made_item = selected_recipe.display_name + +/obj/structure/fermentation_keg/proc/try_n_brew(mob/user) + var/ready = TRUE + if(!selected_recipe) + if(user) + to_chat(user, span_notice("You need to set a booze to brew!")) + ready = FALSE + + if(brewing) + if(user) + to_chat(user, span_notice("This keg is already brewing a mix!")) + ready = FALSE + + //Crops + for(var/obj/item/food/grown/needed_crop as anything in selected_recipe.needed_crops) + if(recipe_crop_stocks[needed_crop] < selected_recipe.needed_crops[needed_crop]) + if(user) + to_chat(user, span_notice("This keg lacks [initial(needed_crop.name)]!")) + ready = FALSE + + for(var/obj/item/needed_item as anything in selected_recipe.needed_crops) + if(recipe_crop_stocks[needed_item] < selected_recipe.needed_items[needed_item]) + if(user) + to_chat(user, span_notice("This keg lacks [initial(needed_item.name)]!")) + ready = FALSE + + for(var/datum/reagent/required_chem as anything in selected_recipe.needed_reagents) + if(selected_recipe.needed_reagents[required_chem] > reagents.get_reagent_amount(required_chem)) + if(user) + to_chat(user, span_notice("The keg's unable to brew well lacking [initial(required_chem.name)]!")) + ready = FALSE + + return ready + + +/obj/structure/fermentation_keg/proc/bottle(glass_colour) + if(ready_to_bottle) + + ready_to_bottle = FALSE + made_item = null + brewing = FALSE + price_tag = 150 + icon_state = open_icon_state + + if(selected_recipe.reagent_to_brew) + if(!glass_colour) + glass_colour = "brew_bottle" + + var/bottlecaps + for(bottlecaps=0, bottlecaps < selected_recipe.brewed_amount, bottlecaps++) + var/obj/item/reagent_containers/cup/glass/bottle/small/brewing_bottle/bottle_made = new /obj/item/reagent_containers/cup/glass/bottle/small/brewing_bottle(get_turf(src)) + bottle_made.icon_state = "[glass_colour]" + if(istype(selected_recipe, /datum/brewing_recipe/custom_recipe)) + var/datum/brewing_recipe/custom_recipe/recipe = selected_recipe + bottle_made.name = recipe.bottle_name + bottle_made.desc = recipe.bottle_desc + bottle_made.glass_name = recipe.glass_name + bottle_made.glass_desc = recipe.glass_desc + bottle_made.reagents.add_reagent(selected_recipe.reagent_to_brew, selected_recipe.per_brew_amount, list("reagents" = recipe.reagent_data)) + else + bottle_made.reagents.add_reagent(selected_recipe.reagent_to_brew, selected_recipe.per_brew_amount) + + if(selected_recipe.brewed_item) + var/items_given + for(items_given= 0, items_given < selected_recipe.brewed_item_count, items_given++) + new selected_recipe.brewed_item(get_turf(src)) + selected_recipe = null + + +/obj/structure/fermentation_keg/verb/reset_keg() + set name = "Clear Keg (Completely Resets)" + set category = "Object" + set src in range(1) + + if(!isdead(usr)) + clear_keg(TRUE) + else + to_chat(usr, span_notice("Sadly this keg isnt brewing spirits!")) diff --git a/monkestation/code/modules/brewin_and_chewin/brewing/reagents.dm b/monkestation/code/modules/brewin_and_chewin/brewing/reagents.dm new file mode 100644 index 000000000000..cf7297591407 --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/brewing/reagents.dm @@ -0,0 +1,27 @@ +/datum/reagent/consumable/ethanol/melon_liquor + name = "Melon Liquor" + description = "A relatively sweet and fruity 46 proof liquor." + taste_description = "fruity alcohol" + color = "#138808d0" // rgb: 19, 136, 8 + boozepwr = 30 + +/datum/reagent/consumable/ethanol/poison_wine + name = "Fungal Wine" + description = "Is this even wine? Toxic! Hallucinogenic! Probably consumed in boatloads by your superiors!" + taste_description = "purified alcoholic death" + color = "#000000d0" + boozepwr = 1 + +/datum/reagent/consumable/ethanol/poison_wine/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, times_fired) + . = ..() + drinker.adjust_hallucinations(1.5 SECONDS) + drinker.adjust_drugginess(5 SECONDS) + + drinker.adjustToxLoss(3 * seconds_per_tick) + +/datum/reagent/consumable/ethanol/candy_wine + name = "Candy Liquor" + description = "Made from assorted sweets, candies and even flowers." + taste_description = "sweet and smooth alcohol" + color = "#E33232d0" // rgb: 227, 50, 50 + boozepwr = 15 diff --git a/monkestation/code/modules/brewin_and_chewin/brewing/recipe_card.dm b/monkestation/code/modules/brewin_and_chewin/brewing/recipe_card.dm new file mode 100644 index 000000000000..fa378e1424d0 --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/brewing/recipe_card.dm @@ -0,0 +1,80 @@ +/obj/item/recipe_card + name = "fermentation recipe card" + desc = "Used to write down your secret recipe card." + icon = 'monkestation/code/modules/brewin_and_chewin/icons/paper.dmi' + icon_state = "recipe_paper" + + var/list/stored_reagents = list() + var/list/stored_foods = list() + var/brewing_time = 2 MINUTES + +/obj/item/recipe_card/afterattack(atom/target, mob/user, proximity_flag, click_parameters) + . = ..() + if(istype(target, /obj/item/food/grown)) + if(target.type in stored_foods) + return + var/amount = tgui_input_number(user, "How much of [target.name] is needed?", name, 10, 50, 1) + if(!amount) + return + stored_foods += list(target.type = amount) + return + + if(istype(target, /obj/structure/fermentation_keg)) + stored_reagents = list() + for(var/datum/reagent/reagent as anything in target.reagents.reagent_list) + stored_reagents += list(reagent.type = reagent.volume) + + +/obj/item/recipe_card/CtrlClick(mob/user) + . = ..() + submit_recipe(user) + +/obj/item/recipe_card/proc/submit_recipe(mob/user) + if(!length(stored_foods) || !length(stored_reagents)) + return + var/display_name = tgui_input_text(user, "What is this drink called?", name) + if(!display_name) + return + var/bottle_name = tgui_input_text(user, "What is this drink's bottle called?", name) + if(!bottle_name) + return + var/glass_name = tgui_input_text(user, "What is this drink's glass called?", name) + if(!glass_name) + return + + var/bottle_desc = tgui_input_text(user, "What is this drink's bottle description?", name, multiline = TRUE) + if(!bottle_desc) + return + var/glass_desc = tgui_input_text(user, "What is this drink's glass description?", name, multiline = TRUE) + if(!glass_desc) + return + + var/datum/brewing_recipe/custom_recipe/new_recipe = new + + new_recipe.made_by = user.name + new_recipe.glass_desc = glass_desc + new_recipe.glass_name = glass_name + new_recipe.bottle_name = bottle_name + new_recipe.bottle_desc = bottle_desc + new_recipe.brew_time = brewing_time + new_recipe.needed_crops = stored_foods + new_recipe.needed_reagents = stored_reagents + new_recipe.brewed_amount = 4 + new_recipe.display_name = display_name + new_recipe.cargo_valuation = 2000 + + var/list/reagent_data = list() + + var/total_reagent_count = 0 + for(var/datum/reagent/reagent as anything in stored_reagents) + total_reagent_count += stored_reagents[reagent] + + for(var/datum/reagent/reagent as anything in stored_reagents) + var/list/new_list = list() + new_list += reagent + new_list[reagent] = stored_reagents[reagent] / total_reagent_count + reagent_data += new_list + + new_recipe.reagent_data = reagent_data + GLOB.custom_fermentation_recipes += new_recipe + qdel(src) diff --git a/monkestation/code/modules/brewin_and_chewin/brewing/recipes/_base.dm b/monkestation/code/modules/brewin_and_chewin/brewing/recipes/_base.dm new file mode 100644 index 000000000000..e1dab0ca9842 --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/brewing/recipes/_base.dm @@ -0,0 +1,29 @@ +/datum/brewing_recipe + ///the type path of the reagent + var/reagent_to_brew = /datum/reagent/consumable/ethanol + ///our display name + var/display_name = "Pure Coder Tears" + ///pre-reqs: Essentially do we need past recipes made of this, uses the reagent_to_brew var to know if this has been done + var/pre_reqs + ///the crops typepath we need goes typepath = amount. Amount is not just how many based on potency value up to a cap it adds values. + var/list/needed_crops = list() + ///the type paths of needed reagents in typepath = amount + var/list/needed_reagents = list() + ///list of items that aren't crops we need + var/list/needed_items = list() + ///our brewing time in deci seconds should use the SECONDS MINUTES HOURS helpers + var/brew_time = 1 SECONDS + ///the price this gets at cargo + var/cargo_valuation = 0 + ///amount of brewed creations used when either canning or bottling + var/brewed_amount = 1 + ///each bottle or canning gives how this much reagents + var/per_brew_amount = 50 + ///helpful hints + var/helpful_hints + ///if we have a secondary name some do if you want to hide the ugly info + var/secondary_name + ///typepath of our output if set we also make this item + var/brewed_item + ///amount of brewed items + var/brewed_item_count = 1 diff --git a/monkestation/code/modules/brewin_and_chewin/brewing/recipes/beers.dm b/monkestation/code/modules/brewin_and_chewin/brewing/recipes/beers.dm new file mode 100644 index 000000000000..020d9c307da8 --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/brewing/recipes/beers.dm @@ -0,0 +1,21 @@ +/datum/brewing_recipe/light_beer + reagent_to_brew = /datum/reagent/consumable/ethanol/beer/light + display_name = "Light Beer" + needed_crops = list(/obj/item/food/grown/wheat = 40, /obj/item/food/grown/poppy = 5) + needed_reagents = list(/datum/reagent/water = 60) + + cargo_valuation = 1750 + brew_time = 2 MINUTES + brewed_amount = 12 + helpful_hints = "Can be brewed again into regular beer" + +/datum/brewing_recipe/beer + reagent_to_brew = /datum/reagent/consumable/ethanol/beer + pre_reqs = /datum/reagent/consumable/ethanol/beer/light + display_name = "Beer" + needed_crops = list(/obj/item/food/grown/wheat = 10, /obj/item/food/grown/poppy = 5) + needed_reagents = list(/datum/reagent/water = 60) + + cargo_valuation = 2250 + brew_time = 2 MINUTES + brewed_amount = 6 diff --git a/monkestation/code/modules/brewin_and_chewin/brewing/recipes/custom.dm b/monkestation/code/modules/brewin_and_chewin/brewing/recipes/custom.dm new file mode 100644 index 000000000000..df6301b10536 --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/brewing/recipes/custom.dm @@ -0,0 +1,24 @@ +/datum/brewing_recipe/custom_recipe + reagent_to_brew = /datum/reagent/consumable/ethanol/custom_brew + var/bottle_name + var/bottle_desc + var/glass_name + var/glass_desc + + ///list of reagents we transfer PER UNIT so if its 30% ethanol put /datum/reagent/consumable/ethanol = 0.3 + var/list/reagent_data = list() + var/made_by + + +/datum/reagent/consumable/ethanol/custom_brew + name = "EVIL WIZARD POTION" + can_merge = FALSE + +/datum/reagent/consumable/ethanol/custom_brew/on_transfer(atom/A, methods, trans_volume) + . = ..() + if(!("reagents" in data)) + return + for(var/datum/reagent/reagent as anything in data["reagents"]) + var/multiplier = trans_volume * data["reagents"][reagent] + A.reagents.add_reagent(reagent, multiplier) + A.reagents.remove_all_type(/datum/reagent/consumable/ethanol/custom_brew, trans_volume) diff --git a/monkestation/code/modules/brewin_and_chewin/brewing/recipes/liquors.dm b/monkestation/code/modules/brewin_and_chewin/brewing/recipes/liquors.dm new file mode 100644 index 000000000000..a56a9b24598d --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/brewing/recipes/liquors.dm @@ -0,0 +1,21 @@ +/datum/brewing_recipe/melon_liquor + reagent_to_brew = /datum/reagent/consumable/ethanol/melon_liquor + display_name = "Melon Liquor" + needed_items = list(/obj/item/grown/log = 5) + needed_crops = list(/obj/item/food/grown/watermelon = 80, /obj/item/food/grown/poppy = 35) + needed_reagents = list(/datum/reagent/water = 160) + brewed_amount = 2 + + cargo_valuation = 2000 + brew_time = 6 MINUTES + +/datum/brewing_recipe/red_candy_liquor + reagent_to_brew = /datum/reagent/consumable/ethanol/candy_wine + display_name = "Red Candy Liquor" + pre_reqs = /datum/reagent/consumable/ethanol/wine + brewed_amount = 1 + needed_crops = list(/obj/item/food/grown/grapes = 10, /obj/item/food/grown/sunflower = 5, /obj/item/food/grown/harebell = 5) + needed_reagents = list(/datum/reagent/consumable/sugar = 15) + + cargo_valuation = 7000 + brew_time = 16 MINUTES diff --git a/monkestation/code/modules/brewin_and_chewin/brewing/recipes/meads.dm b/monkestation/code/modules/brewin_and_chewin/brewing/recipes/meads.dm new file mode 100644 index 000000000000..457fb36de060 --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/brewing/recipes/meads.dm @@ -0,0 +1,9 @@ +/datum/brewing_recipe/mead + reagent_to_brew = /datum/reagent/consumable/ethanol/mead + display_name = "Honey Mead" + needed_reagents = list(/datum/reagent/water = 50, /datum/reagent/consumable/honey = 50) + brewed_amount = 4 + + cargo_valuation = 3000 + brew_time = 6 MINUTES + diff --git a/monkestation/code/modules/brewin_and_chewin/brewing/recipes/misc.dm b/monkestation/code/modules/brewin_and_chewin/brewing/recipes/misc.dm new file mode 100644 index 000000000000..8f58c78e63b4 --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/brewing/recipes/misc.dm @@ -0,0 +1,84 @@ +/datum/brewing_recipe/gin + reagent_to_brew = /datum/reagent/consumable/ethanol/gin + display_name = "Gin" + needed_items = list(/obj/item/grown/log = 5) + needed_crops = list(/obj/item/food/grown/berries = 40, /obj/item/food/grown/citrus/lemon = 40) + needed_reagents = list(/datum/reagent/water = 160, /datum/reagent/consumable/sugar = 15) + brewed_amount = 3 + + cargo_valuation = 3200 + brew_time = 6 MINUTES + +/datum/brewing_recipe/tequila + reagent_to_brew = /datum/reagent/consumable/ethanol/tequila + display_name = "Tequila" + needed_items = list(/obj/item/grown/log = 5) + needed_crops = list(/obj/item/food/grown/citrus/lemon = 40, /obj/item/food/grown/citrus/lime = 40, /obj/item/food/grown/pineapple = 10) + needed_reagents = list(/datum/reagent/water = 50, /datum/reagent/consumable/salt = 5) + brewed_amount = 2 + + cargo_valuation = 2250 + brew_time = 3 MINUTES + +/datum/brewing_recipe/patron + reagent_to_brew = /datum/reagent/consumable/ethanol/patron + display_name = "Patron" + needed_crops = list(/obj/item/food/grown/wheat = 80) + needed_reagents = list(/datum/reagent/water = 30, /datum/reagent/consumable/mintextract = 5) + brewed_amount = 1 + + cargo_valuation = 2000 + brew_time = 1.5 MINUTES + +/datum/brewing_recipe/ale + reagent_to_brew = /datum/reagent/consumable/ethanol/ale + display_name = "Ale" + needed_crops = list(/obj/item/food/grown/wheat = 60, /obj/item/food/grown/poppy = 5) + needed_reagents = list(/datum/reagent/water = 120, /datum/reagent/consumable/honey = 5) + brewed_amount = 12 + + cargo_valuation = 2000 + brew_time = 9 MINUTES + +/datum/brewing_recipe/whiskey + reagent_to_brew = /datum/reagent/consumable/ethanol/whiskey + display_name = "Whiskey" + needed_crops = list(/obj/item/food/grown/wheat = 40) + needed_reagents = list(/datum/reagent/water = 120) + brewed_amount = 10 + + cargo_valuation = 2000 + brew_time = 15 MINUTES + +/datum/brewing_recipe/glucose + reagent_to_brew = /datum/reagent/consumable/nutriment/glucose + display_name = "Glucose" + needed_crops = list(/obj/item/food/grown/wheat = 60, /obj/item/food/grown/corn = 30) + needed_reagents = list(/datum/reagent/water = 120, /datum/reagent/consumable/honey = 5, /datum/reagent/consumable/sugar = 30) + brewed_amount = 3 + per_brew_amount = 15 + + cargo_valuation = 4750 + brew_time = 3 MINUTES + helpful_hints = "Further brewing can be done when finished." + +/datum/brewing_recipe/nothing + reagent_to_brew = /datum/reagent/consumable/nothing + pre_reqs = /datum/reagent/consumable/nutriment/glucose + display_name = "Nothing" + needed_reagents = list(/datum/reagent/water = 200) + brewed_amount = 2 + + cargo_valuation = 404 + brew_time = 7 MINUTES + +/datum/brewing_recipe/cream + reagent_to_brew = /datum/reagent/consumable/cream + display_name = "Cream" + brewed_amount = 3 + needed_crops = list(/obj/item/food/grown/soybeans = 40) + needed_reagents = list(/datum/reagent/consumable/vinegar = 10, /datum/reagent/consumable/milk = 30) + + cargo_valuation = 1600 + brew_time = 2 MINUTES + helpful_hints = "Further brewing can be done when finished." diff --git a/monkestation/code/modules/brewin_and_chewin/brewing/recipes/rums.dm b/monkestation/code/modules/brewin_and_chewin/brewing/recipes/rums.dm new file mode 100644 index 000000000000..bbaf16d971f9 --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/brewing/recipes/rums.dm @@ -0,0 +1,22 @@ +/datum/brewing_recipe/rum + reagent_to_brew = /datum/reagent/consumable/ethanol/rum + display_name = "Rum" + brewed_amount = 4 + needed_items = list(/obj/item/grown/log = 5) + needed_crops = list(/obj/item/food/grown/sugarcane = 60) + needed_reagents = list(/datum/reagent/water = 120, /datum/reagent/consumable/salt = 5) + + cargo_valuation = 2000 + brew_time = 3 MINUTES + helpful_hints = "Further brewing can be done when finished." + +/datum/brewing_recipe/kahlua + reagent_to_brew = /datum/reagent/consumable/ethanol/kahlua + pre_reqs = /datum/reagent/consumable/ethanol/rum + display_name = "Kahlua" + + brewed_amount = 3 + needed_reagents = list(/datum/reagent/consumable/sugar = 15, /datum/reagent/consumable/coffee = 60) + + cargo_valuation = 5000 + brew_time = 2 MINUTES diff --git a/monkestation/code/modules/brewin_and_chewin/brewing/recipes/vinegars.dm b/monkestation/code/modules/brewin_and_chewin/brewing/recipes/vinegars.dm new file mode 100644 index 000000000000..e15ff0952ef8 --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/brewing/recipes/vinegars.dm @@ -0,0 +1,39 @@ +/datum/brewing_recipe/vinegar + reagent_to_brew = /datum/reagent/consumable/vinegar + display_name = "Vinegar" + brewed_amount = 3 + needed_crops = list(/obj/item/food/grown/apple = 20, /obj/item/food/grown/pineapple = 10) + needed_reagents = list(/datum/reagent/water = 30) + + cargo_valuation = 2500 + brew_time = 3 MINUTES + helpful_hints = "Further brewing can be done when finished." + +/datum/brewing_recipe/cheese_wheel + reagent_to_brew = /datum/reagent/consumable/vinegar + pre_reqs = /datum/reagent/consumable/cream + display_name = "Cheese Wheels (Byproduct Vinegar)" + brewed_amount = 1 + per_brew_amount = 15 //make an excess + needed_crops = list(/obj/item/food/grown/apple = 20, /obj/item/food/grown/pineapple = 10) + needed_reagents = list(/datum/reagent/water = 30, /datum/reagent/consumable/milk = 30, /datum/reagent/consumable/vinegar = 5) + + cargo_valuation = 1000 + brew_time = 1 MINUTES + + brewed_item = /obj/item/food/cheese/wheel + brewed_item_count = 3 + secondary_name = "Cheese Wheel" + helpful_hints = "The bottles will produced Vinegar." + +/datum/brewing_recipe/enzyme + reagent_to_brew = /datum/reagent/consumable/enzyme + pre_reqs = /datum/reagent/consumable/vinegar + display_name = "Universal Enzymes" + brewed_amount = 1 + needed_crops = list(/obj/item/food/grown/grass = 120, /obj/item/food/grown/pineapple = 30, /obj/item/food/grown/citrus/orange = 30) + needed_reagents = list(/datum/reagent/water = 30, /datum/reagent/consumable/ethanol = 60) + + cargo_valuation = 7500 + brew_time = 6 MINUTES + diff --git a/monkestation/code/modules/brewin_and_chewin/brewing/recipes/wines.dm b/monkestation/code/modules/brewin_and_chewin/brewing/recipes/wines.dm new file mode 100644 index 000000000000..439bfdccacfe --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/brewing/recipes/wines.dm @@ -0,0 +1,46 @@ +/datum/brewing_recipe/lizard_wine + reagent_to_brew = /datum/reagent/consumable/ethanol/lizardwine + display_name = "Lizard Wine" + needed_items = list(/obj/item/organ/external/tail/lizard = 1) + needed_crops = list(/obj/item/food/grown/poppy = 5) + needed_reagents = list(/datum/reagent/water = 50, /datum/reagent/consumable/ethanol = 100) + brewed_amount = 3 + + cargo_valuation = 10000 + brew_time = 10 MINUTES + +/datum/brewing_recipe/wine + reagent_to_brew = /datum/reagent/consumable/ethanol/wine + display_name = "Wine" + needed_items = list(/obj/item/grown/log = 5) + needed_crops = list(/obj/item/food/grown/grapes = 60) + needed_reagents = list(/datum/reagent/water = 160, /datum/reagent/consumable/sugar = 15) + brewed_amount = 2 + + cargo_valuation = 3000 + brew_time = 6 MINUTES + helpful_hints = "Further brewing can be done when finished." + +/datum/brewing_recipe/vermouth + reagent_to_brew = /datum/reagent/consumable/ethanol/vermouth + display_name = "Vermouth" + pre_reqs = /datum/reagent/consumable/ethanol/wine + needed_items = list(/obj/item/grown/log = 7) + needed_crops = list(/obj/item/food/grown/grapes = 60, /obj/item/food/grown/berries = 15) + needed_reagents = list(/datum/reagent/water = 160) + brewed_amount = 3 + + cargo_valuation = 5000 + brew_time = 8 MINUTES + +/datum/brewing_recipe/poison_wine + reagent_to_brew = /datum/reagent/consumable/ethanol/poison_wine + display_name = "Fungal Wine (poison)" + pre_reqs = /datum/reagent/consumable/ethanol/wine + brewed_amount = 1 + needed_items = list(/obj/item/grown/log = 5) + needed_crops = list(/obj/item/food/grown/grapes = 10, /obj/item/food/grown/mushroom/plumphelmet = 5) + needed_reagents = list(/datum/reagent/toxin/amatoxin = 15) + + cargo_valuation = 9000 + brew_time = 16 MINUTES diff --git a/monkestation/code/modules/brewin_and_chewin/cargo_exports.dm b/monkestation/code/modules/brewin_and_chewin/cargo_exports.dm new file mode 100644 index 000000000000..e760f62f55c2 --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/cargo_exports.dm @@ -0,0 +1,13 @@ +/datum/export/fermented_kegs + cost = 0 + unit_name = "place holder" + export_types = list(/obj/structure/fermentation_keg) + +/datum/export/fermented_kegs/get_cost(obj/O) + var/obj/structure/fermentation_keg/keg = O + var/credit_value = keg.price_tag + unit_name = keg.selected_recipe?.display_name + if(!unit_name) + unit_name = "Unnamed Keg" + + return credit_value diff --git a/monkestation/code/modules/brewin_and_chewin/chewing/cooking_containers.dm b/monkestation/code/modules/brewin_and_chewin/chewing/cooking_containers.dm new file mode 100644 index 000000000000..43500418a3bb --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/chewing/cooking_containers.dm @@ -0,0 +1,385 @@ +//Cooking containers are used in ovens, fryers and so on, to hold multiple ingredients for a recipe. +//They interact with the cooking process, and link up with the cooking code dynamically. + +//Originally sourced from the Aurora, heavily retooled to actually work with CHEWIN + + +//Holder for a portion of an incomplete meal, +//allows a cook to temporarily offload recipes to work on things factory-style, eliminating the need for 20 plates to get things done fast. + +/obj/item/reagent_containers/cooking_container + icon = 'monkestation/code/modules/brewin_and_chewin/icons/kitchen.dmi' + verb_exclaim = "" + var/shortname + var/place_verb = "into" + var/appliancetype //string + w_class = WEIGHT_CLASS_SMALL + volume = 240 //Don't make recipes using reagents in larger quantities than this amount; they won't work. + var/datum/chewin_cooking/recipe_tracker/tracker = null //To be populated the first time the plate is interacted with. + var/lip //Icon state of the lip layer of the object + var/removal_penalty = 0 //A flat quality reduction for removing an unfinished recipe from the container. + + possible_transfer_amounts = list(5,10,30,60,90,120,240) + amount_per_transfer_from_this = 10 + + reagent_flags = OPENCONTAINER | NO_REACT + var/list/fryer_data = list("High"=0) //Record of what deepfryer-cooking has been done on this food. + var/list/stove_data = list("High"=0 , "Medium" = 0, "Low"=0) //Record of what stove-cooking has been done on this food. + var/list/grill_data = list("High"=0 , "Medium" = 0, "Low"=0) //Record of what grill-cooking has been done on this food. + var/list/oven_data = list("High"=0 , "Medium" = 0, "Low"=0) //Record of what oven-cooking has been done on this food. + +/obj/item/reagent_containers/cooking_container/Initialize() + .=..() + appearance_flags |= KEEP_TOGETHER + RegisterSignal(src, COMSIG_STOVE_PROCESS, PROC_REF(process_stovetop)) + RegisterSignal(src, COMSIG_ITEM_OVEN_PROCESS, PROC_REF(process_bake)) + + +/obj/item/reagent_containers/cooking_container/examine(mob/user) + . = ..() + if(contents) + .+= get_content_info() + if(reagents.total_volume) + .+= get_reagent_info() + +/obj/item/reagent_containers/cooking_container/proc/get_content_info() + var/string = "It contains:
  • " + string += jointext(contents, "
  • ") + "
" + return string + +/obj/item/reagent_containers/cooking_container/proc/get_reagent_info() + return "It contains [reagents.total_volume] units of reagents." + +/obj/item/reagent_containers/cooking_container/attackby(var/obj/item/used_item, var/mob/user) + + #ifdef CHEWIN_DEBUG + logger.Log(LOG_CATEGORY_DEBUG"cooking_container/attackby() called!") + #endif + + if(istype(used_item, /obj/item/spatula)) + do_empty(user, target=null, reagent_clear = FALSE) + return + + if(!tracker && (contents.len || reagents.total_volume != 0)) + to_chat(user, "The [src] is full. Empty its contents first.") + else + process_item(used_item, user) + + return TRUE + +/obj/item/reagent_containers/cooking_container/after_attack_pour(mob/user, atom/target) + + + #ifdef CHEWIN_DEBUG + logger.Log(LOG_CATEGORY_DEBUG"cooking_container/standard_pour_into() called!") + #endif + + if(tracker) + if(alert(user, "There is an ongoing recipe in the [src]. Dump it out?",,"Yes","No") == "No") + return FALSE + for(var/datum/reagent/our_reagent in reagents.reagent_list) + if(our_reagent.data && istype(our_reagent.data, /list) && our_reagent.data["FOOD_QUALITY"]) + our_reagent.data["FOOD_QUALITY"] = 0 + + do_empty(user, target, reagent_clear = FALSE) + + #ifdef CHEWIN_DEBUG + logger.Log(LOG_CATEGORY_DEBUG"cooking_container/do_empty() completed!") + #endif + + . = ..() + + +/obj/item/reagent_containers/cooking_container/afterattack(var/obj/target, var/mob/user, var/flag) + if(!istype(target, /obj/item/reagent_containers)) + return FALSE + if(!flag) + return FALSE + if(tracker) + return FALSE + if(after_attack_pour(user, target)) + return TRUE + +/obj/item/reagent_containers/cooking_container/proc/process_item(var/obj/I, var/mob/user, var/lower_quality_on_fail = 0, var/send_message = TRUE) + + + #ifdef CHEWIN_DEBUG + logger.Log(LOG_CATEGORY_DEBUG"cooking_container/process_item() called!") + #endif + + //OK, time to load the tracker + if(!tracker) + if(lower_quality_on_fail) + for (var/obj/item/contained in contents) + contained?:food_quality -= lower_quality_on_fail + else + tracker = new /datum/chewin_cooking/recipe_tracker(src) + + var/return_value = 0 + switch(tracker.process_item_wrap(I, user)) + if(CHEWIN_NO_STEPS) + if(no_step_checks(I)) //literally fryers + if(send_message) + to_chat(user, "It doesn't seem like you can create a meal from that. Yet.") + if(lower_quality_on_fail) + for (var/datum/chewin_cooking/recipe_pointer/pointer in tracker.active_recipe_pointers) + pointer?:tracked_quality -= lower_quality_on_fail + if(CHEWIN_CHOICE_CANCEL) + if(send_message) + to_chat(user, "You decide against cooking with the [src].") + if(CHEWIN_COMPLETE) + if(send_message) + to_chat(user, "You finish cooking with the [src].") + qdel(tracker) + tracker = null + clear_cooking_data() + update_icon() + return_value = 1 + if(CHEWIN_SUCCESS) + if(send_message) + to_chat(user, "You have successfully completed a recipe step.") + clear_cooking_data() + return_value = 1 + update_icon() + if(CHEWIN_PARTIAL_SUCCESS) + if(send_message) + to_chat(user, "More must be done to complete this step of the recipe.") + if(CHEWIN_LOCKOUT) + if(send_message) + to_chat(user, "You can't make the same decision twice!") + + if(tracker && !tracker.recipe_started) + qdel(tracker) + tracker = null + return return_value + +//TODO: Handle the contents of the container being ruined via burning. +/obj/item/reagent_containers/cooking_container/proc/handle_burning() + return + +//TODO: Handle the contents of the container lighting on actual fire. +/obj/item/reagent_containers/cooking_container/proc/handle_ignition() + return FALSE + +/obj/item/reagent_containers/cooking_container/verb/empty() + set src in view(1) + set name = "Empty Container" + set category = "Object" + set desc = "Removes items from the container, excluding reagents." + do_empty(usr) + +/obj/item/reagent_containers/cooking_container/proc/do_empty(mob/user, var/atom/target = null, var/reagent_clear = TRUE) + #ifdef CHEWIN_DEBUG + logger.Log(LOG_CATEGORY_DEBUG"cooking_container/do_empty() called!") + #endif + + if(contents.len != 0) + if(tracker && removal_penalty) + for (var/obj/item/contained in contents) + contained?:food_quality -= removal_penalty + to_chat(user, span_warning("The quality of ingredients in the [src] was reduced by the extra jostling.")) + + //Handle quality reduction for reagents + if(reagents.total_volume != 0) + var/reagent_qual_reduction = round(reagents.total_volume/contents.len) + if(reagent_qual_reduction != 0) + for (var/obj/item/contained in contents) + contained?:food_quality -= reagent_qual_reduction + to_chat(user, span_warning("The quality of ingredients in the [src] was reduced by the presence of reagents in the container.")) + + + for (var/contained in contents) + var/atom/movable/AM = contained + remove_from_visible(AM) + if(!target) + AM.forceMove(get_turf(src)) + else + AM.forceMove(get_turf(target)) + + //TODO: Splash the reagents somewhere + if(reagent_clear) + reagents.clear_reagents() + + update_icon() + qdel(tracker) + tracker = null + clear_cooking_data() + + if(contents.len != 0) + to_chat(user, span_notice("You remove all the solid items from [src].")) + + +/obj/item/reagent_containers/cooking_container/AltClick(var/mob/user) + do_empty(user) + +//Deletes contents of container. +//Used when food is burned, before replacing it with a burned mess +/obj/item/reagent_containers/cooking_container/proc/clear() + QDEL_LIST(contents) + contents=list() + reagents.clear_reagents() + if(tracker) + qdel(tracker) + tracker = null + clear_cooking_data() + + +/obj/item/reagent_containers/cooking_container/proc/clear_cooking_data() + stove_data = list("High"=0 , "Medium" = 0, "Low"=0) + grill_data = list("High"=0 , "Medium" = 0, "Low"=0) + fryer_data = list("High"=0) + +/obj/item/reagent_containers/cooking_container/proc/label(var/number, var/CT = null) + //This returns something like "Fryer basket 1 - empty" + //The latter part is a brief reminder of contents + //This is used in the removal menu + . = shortname + if (!isnull(number)) + .+= " [number]" + .+= " - " + if (LAZYLEN(contents)) + var/obj/O = locate() in contents + return . + O.name //Just append the name of the first object + return . + "empty" + +/obj/item/reagent_containers/cooking_container/update_icon() + . = ..() + cut_overlays() + for(var/obj/item/our_item in vis_contents) + src.remove_from_visible(our_item) + + for(var/i=contents.len, i>=1, i--) + var/obj/item/our_item = contents[i] + src.add_to_visible(our_item) + if(lip) + add_overlay(image(src.icon, icon_state=lip, layer=ABOVE_OBJ_LAYER)) + +/obj/item/reagent_containers/cooking_container/proc/add_to_visible(var/obj/item/our_item) + our_item.pixel_x = initial(our_item.pixel_x) + our_item.pixel_y = initial(our_item.pixel_y) + our_item.vis_flags = VIS_INHERIT_LAYER | VIS_INHERIT_PLANE | VIS_INHERIT_ID + our_item.blend_mode = BLEND_INSET_OVERLAY + our_item.transform *= 0.6 + src.vis_contents += our_item + +/obj/item/reagent_containers/cooking_container/proc/remove_from_visible(var/obj/item/our_item) + our_item.vis_flags = 0 + our_item.blend_mode = 0 + our_item.transform = null + src.vis_contents.Remove(our_item) + +/obj/item/reagent_containers/cooking_container/plate + icon = 'monkestation/code/modules/brewin_and_chewin/icons/eris_kitchen.dmi' + name = "serving plate" + shortname = "plate" + desc = "A shitty serving plate. You probably shouldn't be seeing this." + icon_state = "plate" + appliancetype = PLATE + +/obj/item/reagent_containers/cooking_container/board + name = "cutting board" + shortname = "cutting_board" + desc = "Good for making sandwiches on, too." + icon_state = "cutting_board" + appliancetype = CUTTING_BOARD + +/obj/item/reagent_containers/cooking_container/oven + name = "oven tray" + shortname = "shelf" + desc = "Put ingredients in this; designed for use with an oven. Warranty void if used." + icon_state = "oven_dish" + lip = "oven_dish_lip" + appliancetype = OVEN + +/obj/item/reagent_containers/cooking_container/proc/process_bake(datum/source, obj/machinery/oven/oven, seconds_per_tick) + #ifdef CWJ_DEBUG + logger.Log(LOG_CATEGORY_DEBUG"grill/proc/process_bake data:", list("temperature: [oven.temperature]", "reference_time: [oven.reference_time]", " world.time: [world.time]", "cooking_timestamp: [oven.cooking_timestamp]", " grill_data: [grill_data]")) + #endif + + if(oven_data[oven.temperature]) + oven_data[oven.temperature] += seconds_per_tick * 10 + else + oven_data[oven.temperature] = seconds_per_tick * 10 + return COMPONENT_BAKING_GOOD_RESULT | COMPONENT_HANDLED_BAKING + +/obj/item/reagent_containers/cooking_container/proc/process_stovetop(datum/source, temperature, seconds_per_tick, obj/stove_object) + if(stove_data[temperature]) + stove_data[temperature] += seconds_per_tick * 10 + else + stove_data[temperature] = seconds_per_tick * 10 + process_item(stove_object, null, FALSE, FALSE) + return TRUE + +/obj/item/reagent_containers/cooking_container/pan + name = "pan" + desc = "An normal pan." + + icon_state = "pan" //Default state is the base icon so it looks nice in the map builder + lip = "pan_lip" + hitsound = 'sound/weapons/smash.ogg' + appliancetype = PAN + +/obj/item/reagent_containers/cooking_container/pot + name = "cooking pot" + shortname = "cooking pot" + desc = "Boil things with this. Maybe even stick 'em in a stew." + + icon_state = "pot" + lip = "pot_lip" + + hitsound = 'sound/weapons/smash.ogg' + removal_penalty = 5 + appliancetype = POT + w_class = WEIGHT_CLASS_BULKY + +/obj/item/reagent_containers/cooking_container/deep_basket + name = "deep fryer basket" + shortname = "basket" + desc = "Cwispy! Warranty void if used." + + icon_state = "deepfryer_basket" + lip = "deepfryer_basket_lip" + removal_penalty = 5 + appliancetype = DF_BASKET + +/obj/item/reagent_containers/cooking_container/proc/no_step_checks(obj/item/item) + return TRUE + +/obj/item/reagent_containers/cooking_container/deep_basket/no_step_checks(obj/item/item) + item.forceMove(src) + qdel(tracker) + update_icon() + return FALSE + + +/obj/item/reagent_containers/cooking_container/air_basket + name = "air fryer basket" + shortname = "basket" + desc = "Permanently laminated with dried oil and late-stage capitalism." + + icon_state = "airfryer_basket" + lip = "airfryer_basket_lip" + removal_penalty = 5 + appliancetype = AF_BASKET + + +/obj/item/reagent_containers/cooking_container/grill_grate + name = "grill grate" + shortname = "grate" + place_verb = "onto" + desc = "Primarily used to grill meat, place this on a grill and enjoy an ancient human tradition." + + icon_state = "grill_grate" + + appliancetype = GRILL + +/obj/item/reagent_containers/cooking_container/bowl + name = "cooking bowl" + shortname = "cooking bowl" + desc = "A bowl." + + icon_state = "bowl" + lip = "bowl_lip" + + removal_penalty = 2 + appliancetype = BOWL diff --git a/monkestation/code/modules/brewin_and_chewin/chewing/food_additons.dm b/monkestation/code/modules/brewin_and_chewin/chewing/food_additons.dm new file mode 100644 index 000000000000..2fde194769c1 --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/chewing/food_additons.dm @@ -0,0 +1,30 @@ +/obj/item + ///can in rare cases be on an item so generalizing onto items + var/food_quality = 1 + +/obj/item/food/examine(mob/user) + . = ..() + . += span_notice("The food's level of quality is [food_quality]") + + var/food_descriptor + if(food_quality < 0) + food_descriptor = "It looks gross. Someone cooked this poorly." + else if (food_quality >= 100) + food_descriptor = "What cruel twist of fate it must be, for this unparalleled artistic masterpiece can only be truly appreciated through its destruction. Does this dish's transient form belie the true nature of all things? You see totality of existence reflected through \the [src]." + else + switch(food_quality) + if(0) + food_descriptor = "It looks like an unappetizing a meal." + if(1 to 10) + food_descriptor = "The food is edible, but frozen dinners have been reheated with more skill." + if(11 to 20) + food_descriptor = "It looks adequately made." + if(21 to 30) + food_descriptor = "The quality of the food is is pretty good." + if(31 to 50) + food_descriptor = "This food looks very tasty." + if(61 to 70) + food_descriptor = "There's a special spark in this cooking, a measure of love and care unseen by the casual chef." + if(81 to 99) + food_descriptor = "The quality of this food is legendary. Words fail to describe it further. It must be eaten" + . += span_notice(food_descriptor) diff --git a/monkestation/code/modules/brewin_and_chewin/chewing/food_effects/food_posioning.dm b/monkestation/code/modules/brewin_and_chewin/chewing/food_effects/food_posioning.dm new file mode 100644 index 000000000000..2a9e39d1708e --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/chewing/food_effects/food_posioning.dm @@ -0,0 +1,19 @@ +/atom/movable/screen/alert/status_effect/food/food_poisoning + name = "Food Poisoning" + desc = "Suffering from food Poisoning" + icon_state = "gross2" + +/datum/status_effect/food/food_poisoning + duration = 1.5 MINUTES + id = "food_poisoning" + alert_type = /atom/movable/screen/alert/status_effect/food/food_poisoning + var/min_vomit_processes = 5 + +/datum/status_effect/food/food_poisoning/tick(seconds_per_tick, times_fired) + . = ..() + owner.adjust_hallucinations(0.5 SECONDS) + owner.adjust_drugginess(0.75 SECONDS) + if(prob(20) && min_vomit_processes <= 0) + owner.vomit(4, FALSE, FALSE) + min_vomit_processes = 5 + min_vomit_processes-- diff --git a/monkestation/code/modules/brewin_and_chewin/chewing/fryer_overhaul.dm b/monkestation/code/modules/brewin_and_chewin/chewing/fryer_overhaul.dm new file mode 100644 index 000000000000..9cdf1cd244ad --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/chewing/fryer_overhaul.dm @@ -0,0 +1,82 @@ +/obj/machinery/deepfryer + icon = 'monkestation/code/modules/brewin_and_chewin/icons/eris_kitchen.dmi' + icon_state = "fryer" + var/obj/item/reagent_containers/cooking_container/deep_basket/basket + +/obj/machinery/deepfryer/update_icon_state() + . = ..() + if(basket) + icon_state = "fryer_off" + else + icon_state = "fryer" + +/obj/machinery/deepfryer/process(seconds_per_tick) + ..() + if(!basket) + return + if(basket.tracker) + basket.fryer_data[J_HI] += 10 * seconds_per_tick + else + var/datum/reagent/consumable/cooking_oil/frying_oil = reagents.has_reagent(/datum/reagent/consumable/cooking_oil) + if(!frying_oil) + return + for(var/obj/item/item as anything in basket.contents) + reagents.chem_temp = frying_oil.fry_temperature + if(!item) + continue + + reagents.trans_to(item, oil_use * seconds_per_tick, multiplier = fry_speed * 3) //Fried foods gain more of the reagent thanks to space magic + + cook_time += fry_speed * seconds_per_tick + if(cook_time >= 5 SECONDS && !frying_fried) + frying_fried = TRUE //frying... frying... fried + playsound(src.loc, 'sound/machines/ding.ogg', 50, TRUE) + audible_message(span_notice("[src] dings!")) + else if (cook_time >= 12 SECONDS && !frying_burnt) + frying_burnt = TRUE + visible_message(span_warning("[src] emits an acrid smell!")) + + use_power(active_power_usage) + +/obj/machinery/deepfryer/proc/start_fry(obj/item/frying_item, mob/user) + to_chat(user, span_notice("You put [frying_item] into [src].")) + if(istype(frying_item, /obj/item/freeze_cube)) + log_bomber(user, "put a freeze cube in a", src) + visible_message(span_userdanger("[src] starts glowing... Oh no...")) + playsound(src, 'sound/effects/pray_chaplain.ogg', 100) + add_filter("entropic_ray", 10, list("type" = "rays", "size" = 35, "color" = COLOR_VIVID_YELLOW)) + addtimer(CALLBACK(src, PROC_REF(blow_up)), 5 SECONDS) + + // Give them reagents to put frying oil in + if(isnull(frying_item.reagents)) + frying_item.create_reagents(50, INJECTABLE) + if(user.mind) + ADD_TRAIT(frying_item, TRAIT_FOOD_CHEF_MADE, REF(user.mind)) + SEND_SIGNAL(frying_item, COMSIG_ITEM_ENTERED_FRYER) + + icon_state = "fryer_on" + +/obj/machinery/deepfryer/proc/reset_frying(mob/user) + if(!basket) + return + for(var/obj/item/item as anything in basket.contents) + if(!QDELETED(item)) + item.AddElement(/datum/element/fried_item, cook_time) + if(user) + basket.process_item(src, user, lower_quality_on_fail=CHEWIN_BASE_QUAL_REDUCTION, send_message=TRUE) + frying_fried = FALSE + frying_burnt = FALSE + fry_loop.stop() + cook_time = 0 + icon_state = "fryer_off" + +/obj/machinery/deepfryer/attackby(obj/item/weapon, mob/user, params) + . = ..() + if(istype(weapon, /obj/item/reagent_containers/cooking_container/deep_basket) && !basket) + weapon.forceMove(src) + basket = weapon + icon_state = "fryer_on" + frying = TRUE + for(var/obj/item/item as anything in basket.contents) + start_fry(item, user) + fry_loop.start() diff --git a/monkestation/code/modules/brewin_and_chewin/chewing/global_creation.dm b/monkestation/code/modules/brewin_and_chewin/chewing/global_creation.dm new file mode 100644 index 000000000000..b82f58fed439 --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/chewing/global_creation.dm @@ -0,0 +1,11 @@ +/proc/initialize_cooking_recipes() + //All combination path datums, save for the default recipes we don't want. + var/list/recipe_paths = typesof(/datum/chewin_cooking/recipe) + recipe_paths -= /datum/chewin_cooking/recipe + for (var/path in recipe_paths) + var/datum/chewin_cooking/recipe/example_recipe = new path() + if(!GLOB.chewin_recipe_dictionary[example_recipe.cooking_container]) + GLOB.chewin_recipe_dictionary[example_recipe.cooking_container] = list() + GLOB.chewin_recipe_dictionary[example_recipe.cooking_container]["[example_recipe.unique_id]"] = example_recipe + + GLOB.chewin_recipe_list += example_recipe diff --git a/monkestation/code/modules/brewin_and_chewin/chewing/items.dm b/monkestation/code/modules/brewin_and_chewin/chewing/items.dm new file mode 100644 index 000000000000..6c526ae43d6c --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/chewing/items.dm @@ -0,0 +1,14 @@ +/obj/item/spatula + name = "Spatula" + desc = "A Hydrodynamic Spatula. Port and Starboard attachments not included." + icon = 'monkestation/code/modules/brewin_and_chewin/icons/kitchen.dmi' + icon_state = "spat" + w_class = WEIGHT_CLASS_SMALL + +/obj/item + var/cooking_description_modifier + +/obj/item/examine(mob/user) + . = ..() + if(cooking_description_modifier) + . += span_notice(cooking_description_modifier) diff --git a/monkestation/code/modules/brewin_and_chewin/chewing/oven_overrides.dm b/monkestation/code/modules/brewin_and_chewin/chewing/oven_overrides.dm new file mode 100644 index 000000000000..20c4f2bd8f57 --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/chewing/oven_overrides.dm @@ -0,0 +1,42 @@ +/obj/machinery/oven + ///our temperature for baked goods + var/temperature = J_LO + ///time stamps specifically for chewin recipes + var/cooking_timestamp = 0 + ///our reference timestamp + var/reference_time = 0 + ///our oven timer + var/oven_timer + ///timer duration + var/timer_duration = 0 + ///timer last start + var/timer_laststart = 0 + +/obj/machinery/oven/Initialize(mapload) + . = ..() + register_context() + +/obj/machinery/oven/add_context(atom/source, list/context, obj/item/held_item, mob/user) + . = ..() + context[SCREENTIP_CONTEXT_ALT_LMB] = "Set Timer" + return CONTEXTUAL_SCREENTIP_SET + +/obj/machinery/oven/AltClick(mob/user) + . = ..() + if(!oven_timer) + timer_duration = tgui_input_number(user, "How long should the timer be in 10th of a seconds", min_value = 0, max_value = 10000000) + if(!timer_duration) + return + if(!open) + timer_laststart = world.time + oven_timer = addtimer(CALLBACK(src, PROC_REF(go_off_queen)), timer_duration, TIMER_UNIQUE | TIMER_STOPPABLE) + else + deltimer(oven_timer) + oven_timer = null + +/obj/machinery/oven/proc/go_off_queen() + timer_duration = 0 + timer_laststart = 0 + oven_timer = null + + playsound(src, 'sound/weapons/gun/general/empty_alarm.ogg', 25) diff --git a/monkestation/code/modules/brewin_and_chewin/chewing/recipe.dm b/monkestation/code/modules/brewin_and_chewin/chewing/recipe.dm new file mode 100644 index 000000000000..aaaa53948c0b --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/chewing/recipe.dm @@ -0,0 +1,868 @@ +/* +CHEWIN COOKING - A comprehensive cooking rework. +The recipe datum outlines a list of steps from getting a piece of food from point A to point B. +Recipes have steps that are held in a modular linked list, holding required steps, and optional ones to increase the total quality of the food. +Following a recipe incorrectly (IE, adding too much of an item, having the burner too hot, etc.) Will decrease the quality of the food.area +Recipes have clear start and end points. They start with a particular item and end with a particular item. +That said, a start item can follow multiple recipes until they eventually diverge as different steps are followed. +In the case two recipes have identical steps, the user should be prompted on what their intended result should be. (Donuts vs Bagels) +Recipes are loaded at startup. Food items reference it by the recipe_tracker datum +By following the steps correctly, good food can be made. +Food quality is calculated based on the steps taken. +*/ + +/datum/chewin_cooking/recipe + var/unique_id + var/name //Name for the cooking guide. Auto-populates if not set. + var/description //Description for the cooking guide. Auto-populates if not set. + var/recipe_guide //Step by step recipe guide. I hate it. + var/recipe_icon //Icon for the cooking guide. Auto-populates if not set. + var/recipe_icon_state //Icon state for the cooking guide. Auto-populates if not set. + + //The Cooking container the recipe is performed in. + var/cooking_container = null + + var/product_type //Type path for the product created by the recipe. An item of this type should ALSO have a recipe_tracker Datum. + var/product_name + var/product_count = 1 //how much of a thing is made per case of the recipe being followed. + + //Special variables that must be defined INSTEAD of product_type in order to create reagents instead of an object. + var/reagent_id + var/reagent_amount + var/reagent_name + var/reagent_desc + + var/icon_image_file + + var/quality_description //A decorator description tacked onto items when the recipe is completed. Used in future recipes. "The Bread looks Handmade." + + var/exclusive_option_mode = FALSE //triggers whether two steps in a process are exclusive- IE: you can do one or the other, but not both. + + var/list/active_exclusive_option_list = list() //Only needed during the creation process for tracking a given exclusive option dictionary. + + var/option_chain_mode = 0 //triggers whether two steps in a process are exclusive- IE: you can do one or the other, but not both. + + var/active_exclusive_option_chain //Only needed during the creation process for tracking items in an option chain. + + var/replace_reagents = FALSE //Determines if we entirely replace the contents of the food product with the slurry that goes into it. + + var/appear_in_default_catalog = TRUE //Everything appears in the catalog by default + /* + The Step Builder is iterated through to create new steps in the recipe dynamically. + _OPTIONAL steps are linked to the previously made REQUIRED step + CHEWIN_BEGIN steps must eventually terminate in a matching CHEWIN_END step + */ + var/list/step_builder = null + + var/datum/chewin_cooking/recipe_step/first_step //The first step in the linked list that will result in the final recipe + + var/datum/chewin_cooking/recipe_step/last_required_step //Reference to the last required step in the cooking process. + + var/datum/chewin_cooking/recipe_step/last_created_step //Reference to the last step made, regardless of if it was required or not. + ///this is the category shown in personal crafting menus + var/food_category = CATEGORY_MISC + ///this is our food buff override provided by other things + var/food_buff_override + +/datum/chewin_cooking/recipe/New() + + if(reagent_id && !reagent_amount) + CRASH("/datum/chewin_cooking/recipe/New: Reagent creating recipe must have reagent_amount defined! Recipe path=[src.type].") + + build_steps() + + if(ispath(product_type)) + var/obj/item/product_info = new product_type() + product_name = product_info.name + if(!name) + name = product_info.name + + if(!description) + description = product_info.desc + + QDEL_NULL(product_info) //We don't need this anymore. + + if(reagent_id) + var/datum/reagent/test_reagent = GLOB.chemical_reagents_list[reagent_id] + if(test_reagent) + if(!name) + name = test_reagent.name + if(!description) + description = test_reagent.description + + reagent_name = test_reagent.name + reagent_desc = test_reagent.description + + if(!name) + name = "NO NAME!" + + unique_id = sequential_id("recipe") + generate_crafting_helper() + +//Build out the recipe steps for a recipe, based on the step_builder list +/datum/chewin_cooking/recipe/proc/build_steps() + if(!step_builder) + CRASH("/datum/chewin_cooking/recipe/build_steps: Recipe has no step builder defined! Recipe path=[src.type].") + + if(!cooking_container) + CRASH("/datum/chewin_cooking/recipe/build_steps: Recipe has no cooking container defined! Recipe path=[src.type].") + + //Create a base step + create_step_base() + + for (var/step in step_builder) + if(islist(step)) + var/list/step_list = step + var/reason = "" + switch(step_list[1]) + if(CHEWIN_ADD_ITEM) + if(step_list.len < 2) + reason="Bad argument Length for CHEWIN_ADD_ITEM" + else if(!ispath(step_list[2])) + reason="Bad argument type for CHEWIN_ADD_ITEM at arg 2" + else + create_step_add_item(step_list[2], FALSE) + if(CHEWIN_ADD_ITEM_OPTIONAL) + if(step_list.len < 2) + reason="Bad argument Length for CHEWIN_ADD_ITEM_OPTIONAL" + else if(!ispath(step_list[2])) + reason="Bad argument type for CHEWIN_ADD_ITEM_OPTIONAL at arg 2" + else + create_step_add_item(step_list[2], TRUE) + if(CHEWIN_ADD_REAGENT) + if(step_list.len < 3) + reason="Bad argument Length for CHEWIN_ADD_REAGENT" + else if(!ispath(step_list[2], /datum/reagent)) + reason="Bad reagent type for CHEWIN_ADD_REAGENT at arg 2" + else + create_step_add_reagent(step_list[2], step_list[3], FALSE) + if(CHEWIN_ADD_REAGENT_OPTIONAL) + if(step_list.len < 3) + reason="Bad argument Length for CHEWIN_ADD_REAGENT_OPTIONAL" + else if(!ispath(step_list[2], /datum/reagent)) + reason="Bad reagent type for CHEWIN_ADD_REAGENT_OPTIONAL at arg 2" + else + create_step_add_reagent(step_list[2], step_list[3], TRUE) + + if(CHEWIN_ADD_REAGENT_CHOICE) + if(step_list.len < 3) + reason="Bad argument Length for CHEWIN_ADD_REAGENT" + else if(!islist(step_list[2])) + reason="Bad reagent type for CHEWIN_ADD_REAGENT at arg 2" + else + create_step_add_reagent_choice(step_list[2], step_list[3], FALSE) + if(CHEWIN_ADD_REAGENT_CHOICE_OPTIONAL) + if(step_list.len < 3) + reason="Bad argument Length for CHEWIN_ADD_REAGENT_OPTIONAL" + else if(!islist(step_list[2])) + reason="Bad reagent type for CHEWIN_ADD_REAGENT_OPTIONAL at arg 2" + else + create_step_add_reagent_choice(step_list[2], step_list[3], TRUE) + + if(CHEWIN_ADD_PRODUCE_CHOICE) + if(step_list.len < 3) + reason="Bad argument Length for CHEWIN_ADD_PRODUCE_CHOICE" + else if(!islist(step_list[2])) + reason="Bad reagent type for CHEWIN_ADD_PRODUCE_CHOICE at arg 2" + else + create_step_add_produce_choice(step_list[2], FALSE) + if(CHEWIN_ADD_PRODUCE_CHOICE_OPTIONAL) + if(step_list.len < 3) + reason="Bad argument Length for CHEWIN_ADD_PRODUCE_CHOICE_OPTIONAL" + else if(!islist(step_list[2])) + reason="Bad reagent type for CHEWIN_ADD_PRODUCE_CHOICE_OPTIONAL at arg 2" + else + create_step_add_produce_choice(step_list[2], TRUE) + + if(CHEWIN_USE_ITEM) + if(step_list.len < 2) + reason="Bad argument Length for CHEWIN_USE_ITEM" + else if(!ispath(step_list[2])) + reason="Bad argument type for CHEWIN_USE_ITEM at arg 2" + else + create_step_use_item(step_list[2], FALSE) + if(CHEWIN_USE_ITEM_OPTIONAL) + if(step_list.len < 2) + reason="Bad argument Length for CHEWIN_USE_ITEM_OPTIONAL" + else if(!ispath(step_list[2])) + reason="Bad argument type for CHEWIN_USE_ITEM_OPTIONAL at arg 2" + else + create_step_use_item(step_list[2], TRUE) + if(CHEWIN_ADD_PRODUCE) + if(step_list.len < 2) + reason="Bad argument Length for CHEWIN_ADD_PRODUCE" + else + create_step_add_produce(step_list[2], FALSE) + if(CHEWIN_ADD_PRODUCE_OPTIONAL) + if(step_list.len < 2) + reason="Bad argument Length for CHEWIN_ADD_PRODUCE_OPTIONAL" + else + create_step_add_produce(step_list[2], TRUE) + if(CHEWIN_USE_TOOL) + if(step_list.len < 3) + reason="Bad argument Length for CHEWIN_USE_TOOL" + else + create_step_use_tool(step_list[2], step_list[3], FALSE) + if(CHEWIN_USE_TOOL_OPTIONAL) + if(step_list.len < 3) + reason="Bad argument Length for CHEWIN_USE_TOOL_OPTIONAL" + else + create_step_use_tool(step_list[2], step_list[3], TRUE) + if(CHEWIN_USE_STOVE) + if(step_list.len < 3) + reason="Bad argument Length for CHEWIN_USE_STOVE" + switch(step_list[2]) + if(J_LO) + if(step_list[3] > CHEWIN_BURN_TIME_LOW) + reason="Time too large for Low setting on CHEWIN_USE_STOVE; Food will automatically burn." + + if(J_MED) + if(step_list[3] > CHEWIN_BURN_TIME_MEDIUM) + reason="Time too large for Medium setting on CHEWIN_USE_STOVE; Food will automatically burn." + + if(J_HI) + if(step_list[3] > CHEWIN_BURN_TIME_HIGH) + reason="Time too large for High setting on CHEWIN_USE_STOVE; Food will automatically burn." + + else + reason="Unrecognized temperature for CHEWIN_USE_STOVE" + + if(!reason) + create_step_use_stove(step_list[2], step_list[3], FALSE) + if(CHEWIN_USE_STOVE_OPTIONAL) + if(step_list.len < 3) + reason="Bad argument Length for CHEWIN_USE_STOVE_OPTIONAL" + switch(step_list[2]) + if(J_LO) + if(step_list[3] > CHEWIN_BURN_TIME_LOW) + reason="Time too large for Low setting on CHEWIN_USE_STOVE_OPTIONAL; Food will automatically burn." + + if(J_MED) + if(step_list[3] > CHEWIN_BURN_TIME_MEDIUM) + reason="Time too large for Medium setting on CHEWIN_USE_STOVE_OPTIONAL; Food will automatically burn." + + if(J_HI) + if(step_list[3] > CHEWIN_BURN_TIME_HIGH) + reason="Time too large for High setting on CHEWIN_USE_STOVE_OPTIONAL; Food will automatically burn." + else + reason="Unrecognized temperature for CHEWIN_USE_STOVE_OPTIONAL" + if(!reason) + create_step_use_stove(step_list[2], step_list[3], TRUE) + + if(CHEWIN_USE_GRILL) + if(step_list.len < 3) + reason="Bad argument Length for CHEWIN_USE_GRILL" + switch(step_list[2]) + if(J_LO) + if(step_list[3] > CHEWIN_BURN_TIME_LOW) + reason="Time too large for Low setting on CHEWIN_USE_GRILL; Food will automatically burn." + + if(J_MED) + if(step_list[3] > CHEWIN_BURN_TIME_MEDIUM) + reason="Time too large for Medium setting on CHEWIN_USE_GRILL; Food will automatically burn." + + if(J_HI) + if(step_list[3] > CHEWIN_BURN_TIME_HIGH) + reason="Time too large for High setting on CHEWIN_USE_GRILL; Food will automatically burn." + + else + reason="Unrecognized temperature for CHEWIN_USE_GRILL" + + if(!reason) + create_step_use_grill(step_list[2], step_list[3], FALSE) + + if(CHEWIN_USE_GRILL_OPTIONAL) + if(step_list.len < 3) + reason="Bad argument Length for CHEWIN_USE_GRILL_OPTIONAL" + switch(step_list[2]) + if(J_LO) + if(step_list[3] > CHEWIN_BURN_TIME_LOW) + reason="Time too large for Low setting on CHEWIN_USE_GRILL_OPTIONAL; Food will automatically burn." + + if(J_MED) + if(step_list[3] > CHEWIN_BURN_TIME_MEDIUM) + reason="Time too large for Medium setting on CHEWIN_USE_GRILL_OPTIONAL; Food will automatically burn." + + if(J_HI) + if(step_list[3] > CHEWIN_BURN_TIME_HIGH) + reason="Time too large for High setting on CHEWIN_USE_GRILL_OPTIONAL; Food will automatically burn." + else + reason="Unrecognized temperature for CHEWIN_USE_GRILL_OPTIONAL" + if(!reason) + create_step_use_grill(step_list[2], step_list[3], TRUE) + if(CHEWIN_USE_OVEN) + if(step_list.len < 3) + reason="Bad argument Length for CHEWIN_USE_OVEN" + switch(step_list[2]) + if(J_LO) + if(step_list[3] > CHEWIN_BURN_TIME_LOW) + reason="Time too large for Low setting on CHEWIN_USE_OVEN; Food will automatically burn." + + if(J_MED) + if(step_list[3] > CHEWIN_BURN_TIME_MEDIUM) + reason="Time too large for Medium setting on CHEWIN_USE_OVEN; Food will automatically burn." + + if(J_HI) + if(step_list[3] > CHEWIN_BURN_TIME_HIGH) + reason="Time too large for High setting on CHEWIN_USE_OVEN; Food will automatically burn." + + else + reason="Unrecognized temperature for CHEWIN_USE_OVEN" + + if(!reason) + create_step_use_oven(step_list[2], step_list[3], FALSE) + + if(CHEWIN_USE_FRYER) + if(step_list.len < 3) + reason="Bad argument Length for CHEWIN_USE_FRYER" + switch(step_list[2]) + if(J_HI) + if(step_list[3] > CHEWIN_BURN_TIME_HIGH) + reason="Time too large for High setting on CHEWIN_USE_FRYER; Food will automatically burn." + + else + reason="Unrecognized temperature for CHEWIN_USE_FRYER" + + if(!reason) + create_step_use_fryer(step_list[2], step_list[3], FALSE) + + if(CHEWIN_USE_OVEN_OPTIONAL) + if(step_list.len < 3) + reason="Bad argument Length for CHEWIN_USE_OVEN_OPTIONAL" + switch(step_list[2]) + if(J_LO) + if(step_list[3] > CHEWIN_BURN_TIME_LOW) + reason="Time too large for Low setting on CHEWIN_USE_OVEN_OPTIONAL; Food will automatically burn." + + if(J_MED) + if(step_list[3] > CHEWIN_BURN_TIME_MEDIUM) + reason="Time too large for Medium setting on CHEWIN_USE_OVEN_OPTIONAL; Food will automatically burn." + + if(J_HI) + if(step_list[3] > CHEWIN_BURN_TIME_HIGH) + reason="Time too large for High setting on CHEWIN_USE_OVEN_OPTIONAL; Food will automatically burn." + else + reason="Unrecognized temperature for CHEWIN_USE_OVEN_OPTIONAL" + if(!reason) + create_step_use_oven(step_list[2], step_list[3], TRUE) + + //Named Arguments modify the recipe in fixed ways + if("desc" in step_list) + set_step_desc(step_list["desc"]) + + if("base" in step_list) + set_step_base_quality(step_list["base"]) + + if("max" in step_list) + set_step_max_quality(step_list["max"]) + + if("prod_desc" in step_list) + set_step_custom_result_desc(step_list["prod_desc"]) + + if("food_buff" in step_list) + set_step_custom_food_buff(step_list["food_buff"]) + + if("finish_text" in step_list) + set_step_custom_finish_text(step_list["finish_text"]) + + if("qmod" in step_list) + if(!set_inherited_quality_modifier(step_list["qmod"])) + reason="qmod / inherited_quality_modifier declared on non add-item recipe step." + + if("remain_percent" in step_list) + if(step_list["remain_percent"] > 1 || step_list["remain_percent"] < 0) + reason="remain_percent must be between 1 and 0." + else if(!set_remain_percent_modifier(step_list["remain_percent"])) + reason="remain_percent / declared on non add-reagent recipe step." + + if("exact" in step_list) + if(!set_exact_type_required(step_list["exact"])) + reason="exact / exact type match declared on non add-item / use-item recipe step." + + if("reagent_skip" in step_list) + if(!set_reagent_skip(step_list["reagent_skip"])) + reason="reagent_skip / reagent_skip declared on non add-item / add-reagent recipe step." + + if("exclude_reagents" in step_list) + for(var/id in step_list["exclude_reagents"]) + var/datum/reagent/path = text2path(id) + if(!path) + path = id + if(!ispath(path, /datum/reagent)) + reason="exclude_reagents list has nonexistant reagent id [id]" + + if(!set_exclude_reagents(step_list["exclude_reagents"])) + reason="exclude_reagents declared on non add-item / add-reagent recipe step." + + if(reason) + CRASH("[src.type]/New: CHEWIN Step Builder failed. Reason: [reason]") + else + switch(step) + if(CHEWIN_BEGIN_EXCLUSIVE_OPTIONS) + begin_exclusive_options() + if(CHEWIN_END_EXCLUSIVE_OPTIONS) + end_exclusive_options() + if(CHEWIN_BEGIN_OPTION_CHAIN) + begin_option_chain() + if(CHEWIN_END_OPTION_CHAIN) + end_option_chain() + + if(exclusive_option_mode) + CRASH("/datum/chewin_cooking/recipe/New: Exclusive option active at end of recipe creation process. Recipe name=[name].") + + if(option_chain_mode) + CRASH("/datum/chewin_cooking/recipe/New: Option Chain active at end of recipe creation process. Recipe name=[name].") + + if(last_created_step.flags & CHEWIN_IS_OPTIONAL) + CRASH("/datum/chewin_cooking/recipe/New: Last option in builder is optional. It must be a required step! Recipe name=[name].") + +//----------------------------------------------------------------------------------- +//Commands for interacting with the recipe tracker +//----------------------------------------------------------------------------------- +//Add base step command. All other steps stem from this. Don't call twice! +/datum/chewin_cooking/recipe/proc/create_step_base() + var/datum/chewin_cooking/recipe_step/start/step = new /datum/chewin_cooking/recipe_step/start(cooking_container) + last_required_step = step + last_created_step = step + first_step = step + +//----------------------------------------------------------------------------------- +//Add reagent step shortcut commands +/datum/chewin_cooking/recipe/proc/create_step_add_reagent(var/reagent_id, var/amount, var/optional) + var/datum/chewin_cooking/recipe_step/add_reagent/step = new (reagent_id, amount, src) + return src.add_step(step, optional) + +//----------------------------------------------------------------------------------- +//Add reagent choice step shortcut commands +/datum/chewin_cooking/recipe/proc/create_step_add_reagent_choice(var/list/reagent_ids, var/amount, var/optional) + var/datum/chewin_cooking/recipe_step/add_reagent_choice/step = new (reagent_ids, amount, src) + return src.add_step(step, optional) + +//----------------------------------------------------------------------------------- +//Add produce step shortcut commands +/datum/chewin_cooking/recipe/proc/create_step_add_produce_choice(var/list/produces, var/optional) + var/datum/chewin_cooking/recipe_step/add_produce_choice/step = new (produces, src) + return src.add_step(step, optional) + +//----------------------------------------------------------------------------------- +//Add item step shortcut commands +/datum/chewin_cooking/recipe/proc/create_step_add_item(var/item_type, var/optional) + var/datum/chewin_cooking/recipe_step/add_item/step = new (item_type, src) + return src.add_step(step, optional) +//----------------------------------------------------------------------------------- +//Use item step shortcut commands +/datum/chewin_cooking/recipe/proc/create_step_use_item(var/item_type, var/optional) + var/datum/chewin_cooking/recipe_step/use_item/step = new (item_type, src) + return src.add_step(step, optional) + +//----------------------------------------------------------------------------------- +//Use item step shortcut commands +/datum/chewin_cooking/recipe/proc/create_step_add_produce(var/produce, var/optional) + var/datum/chewin_cooking/recipe_step/add_produce/step = new /datum/chewin_cooking/recipe_step/add_produce(produce, src) + return src.add_step(step, optional) +//----------------------------------------------------------------------------------- +//Use Tool step shortcut commands +/datum/chewin_cooking/recipe/proc/create_step_use_tool(var/type, var/quality, var/optional) + var/datum/chewin_cooking/recipe_step/use_tool/step = new (type, quality, src) + return src.add_step(step, optional) + +//----------------------------------------------------------------------------------- +//Use Fryer step shortcut commands +/datum/chewin_cooking/recipe/proc/create_step_use_fryer(var/heat, var/time, var/optional) + var/datum/chewin_cooking/recipe_step/use_fryer/step = new (heat, time, src) + return src.add_step(step, optional) + +//----------------------------------------------------------------------------------- +//Use Stove step shortcut commands +/datum/chewin_cooking/recipe/proc/create_step_use_stove(var/heat, var/time, var/optional) + var/datum/chewin_cooking/recipe_step/use_stove/step = new (heat, time, src) + return src.add_step(step, optional) +//----------------------------------------------------------------------------------- +//Use Grill step shortcut commands +/datum/chewin_cooking/recipe/proc/create_step_use_grill(var/heat, var/time, var/optional) + var/datum/chewin_cooking/recipe_step/use_grill/step = new (heat, time, src) + return src.add_step(step, optional) +//----------------------------------------------------------------------------------- +//Use Stove step shortcut commands +/datum/chewin_cooking/recipe/proc/create_step_use_oven(var/heat, var/time, var/optional) + var/datum/chewin_cooking/recipe_step/use_oven/step = new (heat, time, src) + return src.add_step(step, optional) +//----------------------------------------------------------------------------------- +//Customize the last step created +/datum/chewin_cooking/recipe/proc/set_step_desc(var/new_description) + last_created_step.desc = new_description + +/datum/chewin_cooking/recipe/proc/set_step_max_quality(var/quality) + last_created_step.flags |= CHEWIN_BASE_QUALITY_ENABLED + last_created_step.max_quality_award = quality + +/datum/chewin_cooking/recipe/proc/set_step_base_quality(var/quality) + last_created_step.flags |= CHEWIN_MAX_QUALITY_ENABLED + last_created_step.base_quality_award = quality + +/datum/chewin_cooking/recipe/proc/set_step_custom_result_desc(var/new_description) + last_created_step.custom_result_desc = new_description + +/datum/chewin_cooking/recipe/proc/set_step_custom_finish_text(var/new_finish_text) + last_created_step.finish_text = new_finish_text + +/datum/chewin_cooking/recipe/proc/set_step_custom_food_buff(var/new_food_buff) + last_created_step.custom_food_buff = new_food_buff + +/datum/chewin_cooking/recipe/proc/set_exact_type_required(var/boolean) + if((last_created_step.class == CHEWIN_ADD_ITEM) || (last_created_step.class == CHEWIN_USE_ITEM)) + last_created_step?:exact_path = boolean + return TRUE + else + return FALSE + +/datum/chewin_cooking/recipe/proc/set_reagent_skip(var/boolean) + if((last_created_step.class == CHEWIN_ADD_ITEM) || (last_created_step.class == CHEWIN_ADD_PRODUCE)) + last_created_step?:reagent_skip = boolean + return TRUE + else + return FALSE + +/datum/chewin_cooking/recipe/proc/set_exclude_reagents(var/list/exclude_list) + if((last_created_step.class == CHEWIN_ADD_ITEM) || (last_created_step.class == CHEWIN_ADD_PRODUCE)) + last_created_step?:exclude_reagents = exclude_list + return TRUE + else + return FALSE + +/datum/chewin_cooking/recipe/proc/set_inherited_quality_modifier(var/modifier) + if(last_created_step.class == CHEWIN_ADD_ITEM || last_created_step.class == CHEWIN_USE_TOOL || last_created_step.class == CHEWIN_ADD_PRODUCE) + last_created_step?:inherited_quality_modifier = modifier + return TRUE + else + return FALSE + +/datum/chewin_cooking/recipe/proc/set_remain_percent_modifier(var/modifier) + if(last_created_step.class == CHEWIN_ADD_REAGENT) + last_created_step?:remain_percent = modifier + return TRUE + else + return FALSE + +//----------------------------------------------------------------------------------- +//Setup for two options being exclusive to eachother. +//Performs a lot of internal checking to make sure that it doesn't break everything. +//If begin_exclusive_options is called, end_exclusive_options must eventually be called in order to close out and proceed to the next required step. + +/datum/chewin_cooking/recipe/proc/begin_exclusive_options() + if(exclusive_option_mode) + #ifdef CHEWIN_DEBUG + log_debug("/datum/chewin_cooking/recipe/proc/begin_exclusive_options: Exclusive option already active.") + log_debug("Recipe name=[name].") + #endif + return + else if(!first_step) + CRASH("/datum/chewin_cooking/recipe/proc/begin_exclusive_options: Exclusive list cannot be active before the first required step is defined. Recipe name=[src.type].") + exclusive_option_mode = TRUE + active_exclusive_option_list = list() + +/datum/chewin_cooking/recipe/proc/end_exclusive_options() + if(!exclusive_option_mode) + #ifdef CHEWIN_DEBUG + log_debug("/datum/chewin_cooking/recipe/proc/end_exclusive_options: Exclusive option already inactive.") + log_debug("Recipe name=[name].") + #endif + return + else if(active_exclusive_option_list.len == 0) + CRASH("/datum/chewin_cooking/recipe/proc/end_exclusive_options: Exclusive option list ended with no values added. Recipe name=[src.type].") + else if(option_chain_mode) + CRASH("/datum/chewin_cooking/recipe/proc/end_exclusive_options: Exclusive option cannot end while option chain is active. Recipe name=[src.type].") + + exclusive_option_mode = FALSE + + //Flatten exclusive options into the global list for easy referencing later. + //initiate the exclusive option list + for (var/datum/chewin_cooking/recipe_step/exclusive_option in active_exclusive_option_list) + if (!GLOB.chewin_optional_step_exclusion_dictionary["[exclusive_option.unique_id]"]) + GLOB.chewin_optional_step_exclusion_dictionary["[exclusive_option.unique_id]"] = list() + //populate the exclusive option list + for (var/datum/chewin_cooking/recipe_step/exclusive_option in active_exclusive_option_list) + for (var/datum/chewin_cooking/recipe_step/excluder in active_exclusive_option_list["[exclusive_option]"]) + if (exclusive_option.unique_id != excluder.unique_id) + GLOB.chewin_optional_step_exclusion_dictionary["[exclusive_option.unique_id]"] = excluder.unique_id + + active_exclusive_option_list = null + +//----------------------------------------------------------------------------------- +//Setup for a chain of optional steps to be added that order themselves sequentially. +//Optional steps with branching paths is NOT supported. +//If begin_option_chain is called, end_option_chain must eventually be called in order to close out and proceed to the next required step. +/datum/chewin_cooking/recipe/proc/begin_option_chain() + if(option_chain_mode) + #ifdef CHEWIN_DEBUG + log_debug("/datum/chewin_cooking/recipe/proc/begin_option_chain: Option Chain already active.") + log_debug("Recipe name=[name].") + #endif + return + if(!first_step) + CRASH("/datum/chewin_cooking/recipe/proc/begin_option_chain: Option Chain cannot be active before first required step is defined. Recipe name=[name].") + option_chain_mode =1 + +/datum/chewin_cooking/recipe/proc/end_option_chain() + if(!option_chain_mode) + #ifdef CHEWIN_DEBUG + log_debug("/datum/chewin_cooking/recipe/proc/end_option_chain: Option Chain already inactive.") + log_debug("Recipe name=[name].") + #endif + return + last_created_step.next_step = last_required_step + option_chain_mode = 0 + + +//----------------------------------------------------------------------------------- +//Function that dynamically adds a step into a given recipe matrix. +/datum/chewin_cooking/recipe/proc/add_step(var/datum/chewin_cooking/recipe_step/step, var/optional) + + //Required steps can't have exclusive options. + //If a given recipe needs to split into two branching required steps, it should be split into two different recipes. + if(!optional && exclusive_option_mode) + CRASH("/datum/chewin_cooking/recipe/proc/add_step: Required step added while exclusive option mode is on. Recipe name=[name].") + + if(!optional && option_chain_mode) + CRASH("/datum/chewin_cooking/recipe/proc/add_step: Required step added while option chain mode is on. Recipe name=[name].") + + if(optional) + switch(option_chain_mode) + //When the chain needs to be initialized + if(1) + last_required_step.optional_step_list += step + option_chain_mode = 2 + step.flags |= CHEWIN_IS_OPTION_CHAIN + //When the chain has already started. + if(2) + last_created_step.next_step = step + step.flags |= CHEWIN_IS_OPTION_CHAIN + else + last_required_step.optional_step_list += step + //Set the next step to loop back to the step it branched from. + step.next_step = last_required_step + else + last_required_step.next_step = step + + + //populate the previous step for optional backwards pathing. + if(option_chain_mode) + step.previous_step = last_created_step + else + step.previous_step = last_required_step + + //Update flags + if(!optional) + last_required_step.flags &= ~CHEWIN_IS_LAST_STEP + step.flags |= CHEWIN_IS_LAST_STEP + else + step.flags |= CHEWIN_IS_OPTIONAL + if(exclusive_option_mode) + step.flags |= CHEWIN_IS_EXCLUSIVE + if(option_chain_mode) + step.flags |= CHEWIN_IS_OPTION_CHAIN + + if(!optional) + last_required_step = step + + last_created_step = step + + //Handle exclusive options + if(exclusive_option_mode) + active_exclusive_option_list[step] = list() + for (var/datum/chewin_cooking/recipe_step/ex_step in active_exclusive_option_list) + if(ex_step == step.unique_id || step.in_option_chain(ex_step)) + continue + active_exclusive_option_list[ex_step] += step + return step + +//----------------------------------------------------------------------------------- +//default function for creating a product +/datum/chewin_cooking/recipe/proc/create_product(var/datum/chewin_cooking/recipe_pointer/pointer, var/mob/user) + var/datum/chewin_cooking/recipe_tracker/parent = pointer.parent_ref.resolve() + var/obj/item/container = parent.holder_ref.resolve() + if(container) + //Build up a list of reagents that went into this. + var/datum/reagents/slurry = new /datum/reagents(maximum=1000000) + slurry.my_atom = container + + //Filter out reagents based on settings + if(GLOB.chewin_step_dictionary_ordered["[CHEWIN_ADD_REAGENT]"]) + for(var/id in pointer.steps_taken) + if(!GLOB.chewin_step_dictionary_ordered["[CHEWIN_ADD_REAGENT]"][id]) + continue + var/datum/chewin_cooking/recipe_step/add_reagent/active_step = GLOB.chewin_step_dictionary_ordered["[CHEWIN_ADD_REAGENT]"][id] + var/amount_to_remove = active_step.required_reagent_amount * (1 - active_step.remain_percent) + if(!amount_to_remove) + continue + #ifdef CHEWIN_DEBUG + log_debug("/recipe/proc/create_product: Removing [amount_to_remove] units of id [active_step.required_reagent_id] from [container]") + #endif + container.reagents.remove_reagent(active_step.required_reagent_id, amount_to_remove, safety = 1) + + if(product_type) //Make a regular item + if(container.reagents.total_volume) + #ifdef CHEWIN_DEBUG + log_debug("/recipe/proc/create_product: Transferring container reagents of [container.reagents.total_volume] to slurry of current volume [slurry.total_volume] max volume [slurry.maximum_volume]") + #endif + container.reagents.trans_to(slurry, amount=container.reagents.total_volume) + + //Do reagent filtering on added items and produce + var/list/exclude_list = list() + for(var/obj/item/added_item in container.contents) + var/can_add = TRUE + var/list/exclude_specific_reagents = list() + #ifdef CHEWIN_DEBUG + log_debug("/recipe/proc/create_product: Analyzing reagents of [added_item].") + #endif + for(var/id in pointer.steps_taken) + #ifdef CHEWIN_DEBUG + log_debug("/recipe/proc/create_product: Comparing step id [id] for [added_item].") + #endif + if(id in exclude_list) //Only consider a step for removal one time. + #ifdef CHEWIN_DEBUG + log_debug("/recipe/proc/create_product: id in exclude list; skipping.") + #endif + continue + if(GLOB.chewin_step_dictionary_ordered["[CHEWIN_ADD_ITEM]"] && GLOB.chewin_step_dictionary_ordered["[CHEWIN_ADD_ITEM]"][id]) + var/datum/chewin_cooking/recipe_step/add_item/active_step = GLOB.chewin_step_dictionary_ordered["[CHEWIN_ADD_ITEM]"][id] + exclude_specific_reagents = active_step.exclude_reagents + if(active_step.reagent_skip) + #ifdef CHEWIN_DEBUG + log_debug("/recipe/proc/create_product: Reagent skip detected. Ignoring reagents from [added_item].") + #endif + can_add = FALSE + exclude_list += id + break + else if(GLOB.chewin_step_dictionary_ordered["[CHEWIN_ADD_PRODUCE]"] && GLOB.chewin_step_dictionary_ordered["[CHEWIN_ADD_PRODUCE]"][id]) + var/datum/chewin_cooking/recipe_step/add_produce/active_step = GLOB.chewin_step_dictionary_ordered["[CHEWIN_ADD_PRODUCE]"][id] + exclude_specific_reagents = active_step.exclude_reagents + if(active_step.reagent_skip) + #ifdef CHEWIN_DEBUG + log_debug("/recipe/proc/create_product: Reagent skip detected. Ignoring reagents from [added_item].") + #endif + can_add = FALSE + exclude_list += id + break + if(can_add) + if(exclude_specific_reagents.len) + for(var/id in exclude_specific_reagents) + #ifdef CHEWIN_DEBUG + log_debug("/recipe/proc/create_product: Removing [added_item.reagents.get_reagent_amount(id)] units of id [id] from [added_item]") + #endif + added_item.reagents.remove_reagent(id, added_item.reagents.get_reagent_amount(id), safety=TRUE) + #ifdef CHEWIN_DEBUG + log_debug("/recipe/proc/create_product: Adding [added_item.reagents.total_volume] units from [added_item] to slurry") + #endif + added_item.reagents.trans_to(slurry, amount=added_item.reagents.total_volume) + + //Purge the contents of the container we no longer need it + QDEL_LIST(container.contents) + container.contents = list() + + var/reagent_quality = calculate_reagent_quality(pointer) + + //Produce Item descriptions based on the steps taken + var/cooking_description_modifier = "" + for(var/id in pointer.steps_taken) + if(pointer.steps_taken[id] != "skip") + cooking_description_modifier += "[pointer.steps_taken[id]]\n" + + food_buff_override = pointer.custom_food_buff + + for(var/i = 0; i < product_count; i++) + var/obj/item/new_item = new product_type(container) + logger.Log(LOG_CATEGORY_DEBUG, "Item created with reagents of [new_item.reagents.total_volume]") + if(replace_reagents) + //Clearing out reagents in data. If initialize hasn't been called, we also null that out here. + #ifdef CHEWIN_DEBUG + log_debug("/recipe/proc/create_product: Clearing out reagents from the [new_item]") + #endif + new_item.reagents.clear_reagents() + #ifdef CHEWIN_DEBUG + log_debug("/recipe/proc/create_product: Transferring slurry of [slurry.total_volume] to [new_item] of total volume [new_item.reagents.total_volume]") + #endif + slurry.trans_to(new_item.reagents, amount=slurry.total_volume) + + new_item?:food_quality = pointer.tracked_quality + reagent_quality + new_item?:cooking_description_modifier = cooking_description_modifier + if(user) + ADD_TRAIT(new_item, TRAIT_FOOD_CHEF_MADE, user) + if(istype(new_item, /obj/item/food) && food_buff_override) + var/obj/item/food/food_item = new_item + food_item?:food_buffs = food_buff_override + + if(istype(new_item, /obj/item/food)) + var/obj/item/food/food_type = new_item + if(food_type.food_quality < 0) + food_type.food_buffs = /datum/status_effect/food/food_poisoning + //TODO: Consider making an item's base components show up in the reagents of the product. + else + //Purge the contents of the container we no longer need it + QDEL_LIST(container.contents) + container.contents = list() + + container.reagents.clear_reagents() + + if(reagent_id) //Make a reagent + //quality handling + var/total_quality = pointer.tracked_quality + calculate_reagent_quality(pointer) + + //Create our Reagent + container.reagents.add_reagent(reagent_id, reagent_amount, data=list("FOOD_QUALITY" = total_quality)) + + qdel(slurry) + +//Extra Reagents in a recipe take away recipe quality for every extra unit added to the concoction. +//Reagents are calculated in two areas. Here and /datum/chewin_cooking/recipe_step/add_reagent/calculate_quality +/datum/chewin_cooking/recipe/proc/calculate_reagent_quality(var/datum/chewin_cooking/recipe_pointer/pointer) + if(!GLOB.chewin_step_dictionary_ordered["[CHEWIN_ADD_REAGENT]"]) + return 0 + var/datum/chewin_cooking/recipe_tracker/parent = pointer.parent_ref.resolve() + var/obj/item/container = parent.holder_ref.resolve() + var/total_volume = container.reagents.total_volume + + var/calculated_volume = 0 + + var/calculated_quality = 0 + for(var/id in pointer.steps_taken) + if(!GLOB.chewin_step_dictionary_ordered["[CHEWIN_ADD_REAGENT]"][id]) + continue + var/datum/chewin_cooking/recipe_step/add_reagent/active_step = GLOB.chewin_step_dictionary_ordered["[CHEWIN_ADD_REAGENT]"][id] + calculated_volume += active_step.required_reagent_amount + + calculated_quality += active_step.base_quality_award + + return calculated_quality - (total_volume - calculated_volume) + + + +//----------------------------------------------------------------------------------- +/datum/chewin_cooking/proc/get_class_string(var/code) + switch(code) + if(CHEWIN_ADD_ITEM) + return "Add Item" + if(CHEWIN_USE_ITEM) + return "Use Item" + if(CHEWIN_ADD_REAGENT) + return "Add Reagent" + if(CHEWIN_ADD_REAGENT_CHOICE) + return "Add one of these Reagents" + if(CHEWIN_ADD_PRODUCE_CHOICE) + return "Add one of these Produce" + if(CHEWIN_ADD_PRODUCE) + return "Add Produce" + if(CHEWIN_USE_TOOL) + return "Use Tool" + if(CHEWIN_USE_STOVE) + return "Use Stove" + if(CHEWIN_USE_GRILL) + return "Use Grill" + if(CHEWIN_USE_OVEN) + return "Use Oven" + if(CHEWIN_USE_FRYER) + return "Use Fryer" + if(CHEWIN_USE_OTHER) + return "Custom Action" + if(CHEWIN_START) + return "Placeholder Action" diff --git a/monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/_base.dm b/monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/_base.dm new file mode 100644 index 000000000000..4bd0b7178300 --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/_base.dm @@ -0,0 +1,108 @@ +//A step in a recipe, whether optional or required +/datum/chewin_cooking/recipe_step + var/unique_id //Special ID for a given recipe, allows for referencing later by food objects to save on memory. + + var/class = CHEWIN_USE_OTHER //The classificaiton of the step involved. + + var/group_identifier = "None" //Different for every type of recipe. + + var/image/tooltip_image = null + + var/parent_recipe //The parent recipe of this particular step. Created on initialization with New() + + var/desc //A description of the step + + var/custom_result_desc //A custom description of the resulting quality on a successful completion. + + var/list/optional_step_list = list() //List of optional steps that can be followed from this point forward. + + var/max_quality_award = 0 //The maximum quality awarded by following a given step to the letter. + + var/base_quality_award = 0 + + var/flags = 0 + + var/custom_food_buff + + var/finish_text + + //The next required step for the parent recipe + var/datum/chewin_cooking/recipe_step/next_step + + //The previous required step for the current recipe + var/datum/chewin_cooking/recipe_step/previous_step + + var/auto_complete_enabled = FALSE //If the step can be completed without any further input. + + + +/datum/chewin_cooking/recipe_step/New(var/datum/chewin_cooking/recipe/our_recipe) + parent_recipe = our_recipe + unique_id = sequential_id("recipe_step") + + if(!tooltip_image) + src.set_image() + + //Add the recipe to our dictionary for future reference. + if(!GLOB.chewin_step_dictionary_ordered["[class]"]) + GLOB.chewin_step_dictionary_ordered["[class]"] = list() + GLOB.chewin_step_dictionary_ordered["[class]"]["[unique_id]"] = src + GLOB.chewin_step_dictionary["[unique_id]"] = src + +/datum/chewin_cooking/recipe_step/proc/set_image() + + +//Calculate how well the recipe step was followed to the letter. +/datum/chewin_cooking/recipe_step/proc/calculate_quality(var/obj/added_item, var/obj/item/reagent_containers/container) + return 0 + +//Check if the conditions of a recipe step was followed correctly. +/datum/chewin_cooking/recipe_step/proc/check_conditions_met() + return CHEWIN_CHECK_VALID + +//Check if a given step is in the same option chain as another step. +/datum/chewin_cooking/recipe_step/proc/in_option_chain(var/datum/chewin_cooking/recipe_step/step) + if(!step) + return FALSE + if(!(flags & CHEWIN_IS_OPTION_CHAIN) || !(step.flags & CHEWIN_IS_OPTION_CHAIN)) + return FALSE + + var/datum/chewin_cooking/recipe_step/target_step = src.previous_step + //traverse backwards on the chain. + while(target_step && !(target_step & CHEWIN_IS_OPTION_CHAIN)) + if(step.unique_id == target_step.unique_id) + return TRUE + target_step = target_step.previous_step + + //Traverse forwards on the chain. + target_step = src.next_step + while(target_step && !(target_step & CHEWIN_IS_OPTION_CHAIN)) + if(step.unique_id == target_step.unique_id) + return TRUE + target_step = src.next_step + + //We didn't find anything. Return False. + return FALSE + +//Automatically clamps food based on their maximum and minimum quality, if they are set. +/datum/chewin_cooking/recipe_step/proc/clamp_quality(var/raw_quality) + if((flags & CHEWIN_BASE_QUALITY_ENABLED) && (flags & CHEWIN_MAX_QUALITY_ENABLED)) + return clamp(raw_quality, base_quality_award, max_quality_award) + if(flags & CHEWIN_BASE_QUALITY_ENABLED) + return max(raw_quality, base_quality_award) + if(flags & CHEWIN_MAX_QUALITY_ENABLED) + return min(raw_quality, max_quality_award) + return raw_quality + +/datum/chewin_cooking/recipe_step/proc/get_step_result_text(var/obj/used_obj, step_quality) + if(custom_result_desc) + return custom_result_desc + else + return "skip" + +/datum/chewin_cooking/recipe_step/proc/follow_step(var/obj/added_item, var/obj/item/reagent_containers/container) + return CHEWIN_SUCCESS + +//Special function to check if the step has been satisfied. Sometimed just following the step is enough, but not always. +/datum/chewin_cooking/recipe_step/proc/is_complete(var/obj/added_item, var/datum/chewin_cooking/recipe_tracker/tracker) + return TRUE diff --git a/monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/add_item.dm b/monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/add_item.dm new file mode 100644 index 000000000000..18a7cf7f6516 --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/add_item.dm @@ -0,0 +1,74 @@ +//A cooking step that involves adding an item to the food. Is based on Item Type. +//This basically deletes the food used on it. + +//ENSURE THE INCOMING ITEM HAS var/quality DEFINED! +/datum/chewin_cooking/recipe_step/add_item + class = CHEWIN_ADD_ITEM + + var/required_item_type //Item required for the recipe step + + var/inherited_quality_modifier = 1 //The modifier we apply multiplicatively to balance quality scaling across recipes. + + var/exact_path = FALSE //Tests if the item has to be the EXACT ITEM PATH, or just a child of the item path. + + var/reagent_skip = FALSE + + var/list/exclude_reagents = list() + +//item_type: The type path of the object we are looking for. +//our_recipe: The parent recipe object, +/datum/chewin_cooking/recipe_step/add_item/New(var/item_type, var/datum/chewin_cooking/recipe/our_recipe) + + #ifdef CHEWIN_DEBUG + if(!ispath(item_type, /obj/item)) + log_debug("/datum/chewin_cooking/recipe_step/add_item/New(): item [item_type] is not a valid path") + #endif + + var/obj/item/example_item = new item_type() + if(example_item) + desc = "Add \a [example_item] into the recipe." + + required_item_type = item_type + group_identifier = item_type + tooltip_image = image(example_item.icon, icon_state=example_item.icon_state) + QDEL_NULL(example_item) + #ifdef CHEWIN_DEBUG + else + log_debug("/datum/chewin_cooking/recipe_step/add_item/New(): item [item_type] couldn't be created.") + #endif + ..(our_recipe) + + +/datum/chewin_cooking/recipe_step/add_item/check_conditions_met(var/obj/added_item, var/datum/chewin_cooking/recipe_tracker/tracker) + #ifdef CHEWIN_DEBUG + log_debug("Called add_item/check_conditions_met for [added_item], checking against item type [required_item_type]. Exact_path = [exact_path]") + #endif + if(!istype(added_item, /obj/item)) + return CHEWIN_CHECK_INVALID + if(exact_path) + if(added_item.type == required_item_type) + return CHEWIN_CHECK_VALID + else + if(istype(added_item, required_item_type)) + return CHEWIN_CHECK_VALID + return CHEWIN_CHECK_INVALID + +//The quality of add_item is special, in that it inherits the quality level of its parent and +//passes it along. +//May need "Balancing" with var/inherited_quality_modifier +/datum/chewin_cooking/recipe_step/add_item/calculate_quality(var/obj/added_item, var/datum/chewin_cooking/recipe_tracker/tracker) + var/raw_quality = added_item?:food_quality * inherited_quality_modifier + return clamp_quality(raw_quality) + +/datum/chewin_cooking/recipe_step/add_item/follow_step(var/obj/added_item, var/datum/chewin_cooking/recipe_tracker/tracker) + #ifdef CHEWIN_DEBUG + logger.Log(LOG_CATEGORY_DEBUG, "Called: /datum/chewin_cooking/recipe_step/add_item/follow_step") + #endif + var/obj/item/container = tracker.holder_ref.resolve() + if(container) + if(usr.canUnEquip(added_item)) + usr.dropItemToGround(added_item) + added_item.forceMove(container) + else + added_item.forceMove(container) + return CHEWIN_SUCCESS diff --git a/monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/add_produce.dm b/monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/add_produce.dm new file mode 100644 index 000000000000..596611a73221 --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/add_produce.dm @@ -0,0 +1,59 @@ +//A cooking step that involves using SPECIFICALLY Grown foods +/datum/chewin_cooking/recipe_step/add_produce + class=CHEWIN_ADD_PRODUCE + var/required_produce_type + var/base_potency + var/reagent_skip = FALSE + var/inherited_quality_modifier + + var/list/exclude_reagents = list() + +/datum/chewin_cooking/recipe_step/add_produce/New(var/obj/item/food/grown/produce, var/datum/chewin_cooking/recipe/our_recipe) + if(produce) + desc = "Add \a [produce] into the recipe." + required_produce_type = produce + group_identifier = produce + + var/obj/item/food/grown/grown = new produce + var/obj/item/seeds/plant_seed = grown.seed + base_potency = initial(plant_seed.potency) + qdel(grown) + else + CRASH("/datum/chewin_cooking/recipe_step/add_produce/New: [produce] not found. Exiting.") + ..(base_quality_award, our_recipe) + +/datum/chewin_cooking/recipe_step/add_produce/check_conditions_met(var/obj/added_item, var/datum/chewin_cooking/recipe_tracker/tracker) + #ifdef CHEWIN_DEBUG + log_debug("Called add_produce/check_conditions_met for [added_item] against [required_produce_type]") + #endif + + if(!istype(added_item, /obj/item/food/grown)) + return CHEWIN_CHECK_INVALID + + var/obj/item/food/grown/added_produce = added_item + + if(added_produce.type == required_produce_type) + return CHEWIN_CHECK_VALID + + return CHEWIN_CHECK_INVALID + +/datum/chewin_cooking/recipe_step/add_produce/calculate_quality(var/obj/added_item, var/datum/chewin_cooking/recipe_tracker/tracker) + + var/obj/item/food/grown/added_produce = added_item + + var/potency_raw = round(base_quality_award + (added_produce.seed.potency - base_potency) * inherited_quality_modifier) + + return clamp_quality(potency_raw) + +/datum/chewin_cooking/recipe_step/add_produce/follow_step(var/obj/added_item, var/datum/chewin_cooking/recipe_tracker/tracker) + #ifdef CHEWIN_DEBUG + log_debug("Called: /datum/chewin_cooking/recipe_step/add_produce/follow_step") + #endif + var/obj/item/container = tracker.holder_ref.resolve() + if(container) + if(usr.canUnEquip(added_item)) + usr.dropItemToGround(added_item) + added_item.forceMove(container) + else + added_item.forceMove(container) + return CHEWIN_SUCCESS diff --git a/monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/add_produce_choice.dm b/monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/add_produce_choice.dm new file mode 100644 index 000000000000..1c0c3b9168f2 --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/add_produce_choice.dm @@ -0,0 +1,63 @@ +//A cooking step that involves using SPECIFICALLY Grown foods +/datum/chewin_cooking/recipe_step/add_produce_choice + class=CHEWIN_ADD_PRODUCE_CHOICE + var/list/required_produce_types = list() + var/list/base_potencies = list() + var/reagent_skip = FALSE + var/inherited_quality_modifier + + var/list/exclude_reagents = list() + +/datum/chewin_cooking/recipe_step/add_produce_choice/New(list/choices = list(), var/datum/chewin_cooking/recipe/our_recipe) + if(!length(choices)) + CRASH("/datum/chewin_cooking/recipe_step/add_produce_choice/New: No list passed in. Exiting.") + + group_identifier = "" + required_produce_types = choices + for(var/obj/item/food/grown/produce as anything in choices) + if(produce) + group_identifier += produce + var/obj/item/food/grown/grown = new produce + var/obj/item/seeds/plant_seed = grown.seed + base_potencies |= produce + base_potencies[produce] = initial(plant_seed.potency) + qdel(grown) + else + CRASH("/datum/chewin_cooking/recipe_step/add_produce_choice/New: [produce] not found. Exiting.") + ..(base_quality_award, our_recipe) + +/datum/chewin_cooking/recipe_step/add_produce_choice/check_conditions_met(var/obj/added_item, var/datum/chewin_cooking/recipe_tracker/tracker) + #ifdef CHEWIN_DEBUG + log_debug("Called add_produce_choice/check_conditions_met for [added_item] against [required_produce_type]") + #endif + + if(!istype(added_item, /obj/item/food/grown)) + return CHEWIN_CHECK_INVALID + + var/obj/item/food/grown/added_produce = added_item + + if(added_produce.type in required_produce_types) + return CHEWIN_CHECK_VALID + + return CHEWIN_CHECK_INVALID + +/datum/chewin_cooking/recipe_step/add_produce_choice/calculate_quality(var/obj/added_item, var/datum/chewin_cooking/recipe_tracker/tracker) + + var/obj/item/food/grown/added_produce = added_item + + var/potency_raw = round(base_quality_award + (added_produce.seed.potency - base_potencies[added_produce.type]) * inherited_quality_modifier * required_produce_types[added_produce.type]) + + return clamp_quality(potency_raw) + +/datum/chewin_cooking/recipe_step/add_produce_choice/follow_step(var/obj/added_item, var/datum/chewin_cooking/recipe_tracker/tracker) + #ifdef CHEWIN_DEBUG + log_debug("Called: /datum/chewin_cooking/recipe_step/add_produce_choice/follow_step") + #endif + var/obj/item/container = tracker.holder_ref.resolve() + if(container) + if(usr.canUnEquip(added_item)) + usr.dropItemToGround(added_item) + added_item.forceMove(container) + else + added_item.forceMove(container) + return CHEWIN_SUCCESS diff --git a/monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/add_reagent.dm b/monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/add_reagent.dm new file mode 100644 index 000000000000..f4f1d531ef4a --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/add_reagent.dm @@ -0,0 +1,82 @@ +//A cooking step that involves adding a reagent to the food. +/datum/chewin_cooking/recipe_step/add_reagent + class=CHEWIN_ADD_REAGENT + auto_complete_enabled = TRUE + var/expected_total + var/required_reagent_id + var/required_reagent_amount + var/remain_percent = 1 //What percentage of the reagent ends up in the product + +//reagent_id: The id of the required reagent to be added, E.G. 'salt'. +//amount: The amount of the required reagent that needs to be added. +//base_quality_award: The quality awarded by following this step. +//our_recipe: The parent recipe object, +/datum/chewin_cooking/recipe_step/add_reagent/New(var/reagent_id, var/amount, var/datum/chewin_cooking/recipe/our_recipe) + + var/datum/reagent/global_reagent = GLOB.chemical_reagents_list[reagent_id] + if(global_reagent) + desc = "Add [amount] unit[amount>1 ? "s" : ""] of [global_reagent.name]." + + required_reagent_id = reagent_id + group_identifier = reagent_id + + required_reagent_amount = amount + else + CRASH("/datum/chewin_cooking/recipe_step/add/reagent/New(): Reagent [reagent_id] not found. Recipe: [our_recipe]") + + ..(our_recipe) + + +/datum/chewin_cooking/recipe_step/add_reagent/check_conditions_met(var/obj/used_item, var/datum/chewin_cooking/recipe_tracker/tracker) + var/obj/item/container = tracker.holder_ref.resolve() + + + if((container.reagents.total_volume + required_reagent_amount - container.reagents.get_reagent_amount(required_reagent_id)) > container.reagents.maximum_volume) + return CHEWIN_CHECK_FULL + + if(!istype(used_item, /obj/item/reagent_containers)) + return CHEWIN_CHECK_INVALID + if(!(used_item.reagents?.flags & OPENCONTAINER)) + return CHEWIN_CHECK_INVALID + + var/obj/item/reagent_containers/our_item = used_item + if(our_item.amount_per_transfer_from_this <= 0) + return CHEWIN_CHECK_INVALID + if(our_item.reagents.total_volume == 0) + return CHEWIN_CHECK_INVALID + + return CHEWIN_CHECK_VALID + +//Reagents are calculated in two areas. Here and /datum/chewin_cooking/recipe/proc/calculate_reagent_quality +/datum/chewin_cooking/recipe_step/add_reagent/calculate_quality(var/obj/used_item, var/datum/chewin_cooking/recipe_tracker/tracker) + var/obj/item/container = tracker.holder_ref.resolve() + var/data = container.reagents.get_data(required_reagent_id) + var/cooked_quality = 0 + if(data && istype(data, /list) && data["FOOD_QUALITY"]) + cooked_quality = data["FOOD_QUALITY"] + return cooked_quality + + +/datum/chewin_cooking/recipe_step/add_reagent/follow_step(var/obj/used_item, var/datum/chewin_cooking/recipe_tracker/tracker) + var/obj/item/reagent_containers/our_item = used_item + var/obj/item/container = tracker.holder_ref.resolve() + + var/trans = our_item.reagents.trans_to(container, our_item.amount_per_transfer_from_this) + + playsound(usr,'monkestation/sound/chemistry/transfer/beakerpour_0-10-1.ogg',50,1) + to_chat(usr, span_notice("You transfer [trans] units to \the [container].")) + + return CHEWIN_SUCCESS + +/datum/chewin_cooking/recipe_step/add_reagent/is_complete(var/obj/used_item, var/datum/chewin_cooking/recipe_tracker/tracker) + var/obj/item/reagent_containers/our_item = used_item + var/obj/item/container = tracker.holder_ref.resolve() + + var/incoming_amount = max(0, min(our_item.amount_per_transfer_from_this, our_item.reagents.total_volume, (container.reagents.maximum_volume - container.reagents.total_volume))) + + var/incoming_valid_amount = incoming_amount + + var/resulting_total = container.reagents.get_reagent_amount(required_reagent_id) + incoming_valid_amount + if(resulting_total >= required_reagent_amount) + return TRUE + return FALSE diff --git a/monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/add_reagent_choice.dm b/monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/add_reagent_choice.dm new file mode 100644 index 000000000000..7444ba8afb35 --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/add_reagent_choice.dm @@ -0,0 +1,95 @@ +//A cooking step that involves adding a reagent to the food. +/datum/chewin_cooking/recipe_step/add_reagent_choice + class=CHEWIN_ADD_REAGENT_CHOICE + auto_complete_enabled = TRUE + var/expected_total + var/list/reagent_ids + var/required_reagent_amount + var/remain_percent = 1 //What percentage of the reagent ends up in the product + +//reagent_ids: list of reagent_id = quality from step. +//amount: The amount of the required reagent that needs to be added. +//base_quality_award: The quality awarded by following this step. +//our_recipe: The parent recipe object, +/datum/chewin_cooking/recipe_step/add_reagent_choice/New(var/list/reagent_ids = list(), var/amount, var/datum/chewin_cooking/recipe/our_recipe) + + if(!length(reagent_ids)) + CRASH("/datum/chewin_cooking/recipe_step/add/reagent/New(): No Reagent List Given") + + group_identifier = "" + for(var/datum/reagent/reagent as anything in reagent_ids) + var/datum/reagent/global_reagent = GLOB.chemical_reagents_list[reagent] + if(global_reagent) + desc = "Add [amount] unit[amount>1 ? "s" : ""] of [global_reagent.name]." + + group_identifier += "[initial(reagent.name)] " + else + CRASH("/datum/chewin_cooking/recipe_step/add/reagent/New(): Reagent [reagent] not found. Recipe: [our_recipe]") + + required_reagent_amount = amount + src.reagent_ids = reagent_ids + + ..(our_recipe) + + +/datum/chewin_cooking/recipe_step/add_reagent_choice/check_conditions_met(var/obj/used_item, var/datum/chewin_cooking/recipe_tracker/tracker) + var/obj/item/container = tracker.holder_ref.resolve() + + + var/return_type = CHEWIN_CHECK_VALID + for(var/datum/reagent/required_reagent_id as anything in reagent_ids) + return_type = CHEWIN_CHECK_VALID + if((container.reagents.total_volume + required_reagent_amount - container.reagents.get_reagent_amount(required_reagent_id)) > container.reagents.maximum_volume) + return_type = CHEWIN_CHECK_FULL + + if(!istype(used_item, /obj/item/reagent_containers)) + return_type = CHEWIN_CHECK_INVALID + if(!(used_item.reagents?.flags & OPENCONTAINER)) + return_type = CHEWIN_CHECK_INVALID + + var/obj/item/reagent_containers/our_item = used_item + if(our_item.amount_per_transfer_from_this <= 0) + return_type = CHEWIN_CHECK_INVALID + if(our_item.reagents.total_volume == 0) + return_type = CHEWIN_CHECK_INVALID + + if(return_type == CHEWIN_CHECK_VALID) + return return_type + + return return_type + +//Reagents are calculated in two areas. Here and /datum/chewin_cooking/recipe/proc/calculate_reagent_quality +/datum/chewin_cooking/recipe_step/add_reagent_choice/calculate_quality(var/obj/used_item, var/datum/chewin_cooking/recipe_tracker/tracker) + var/obj/item/container = tracker.holder_ref.resolve() + for(var/datum/reagent/reagent as anything in container.reagents.reagent_list) + if(!(reagent.type in reagent_ids)) + continue + if(reagent.volume < required_reagent_amount) + continue + return reagent_ids[reagent.type] + + +/datum/chewin_cooking/recipe_step/add_reagent_choice/follow_step(var/obj/used_item, var/datum/chewin_cooking/recipe_tracker/tracker) + var/obj/item/reagent_containers/our_item = used_item + var/obj/item/container = tracker.holder_ref.resolve() + + var/trans = our_item.reagents.trans_to(container, our_item.amount_per_transfer_from_this) + + playsound(usr,'monkestation/sound/chemistry/transfer/beakerpour_0-10-1.ogg',50,1) + to_chat(usr, span_notice("You transfer [trans] units to \the [container].")) + + return CHEWIN_SUCCESS + +/datum/chewin_cooking/recipe_step/add_reagent_choice/is_complete(var/obj/used_item, var/datum/chewin_cooking/recipe_tracker/tracker) + var/obj/item/reagent_containers/our_item = used_item + var/obj/item/container = tracker.holder_ref.resolve() + + var/incoming_amount = max(0, min(our_item.amount_per_transfer_from_this, our_item.reagents.total_volume, (container.reagents.maximum_volume - container.reagents.total_volume))) + + var/incoming_valid_amount = incoming_amount + + for(var/datum/reagent/required_reagent_id as anything in reagent_ids) + var/resulting_total = container.reagents.get_reagent_amount(required_reagent_id) + incoming_valid_amount + if(resulting_total >= required_reagent_amount) + return TRUE + return FALSE diff --git a/monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/recipe_start.dm b/monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/recipe_start.dm new file mode 100644 index 000000000000..5e6a26290337 --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/recipe_start.dm @@ -0,0 +1,11 @@ + +//The default starting step. +//Doesn't do anything, just holds the item. + +/datum/chewin_cooking/recipe_step/start + class = CHEWIN_START + var/required_container + +/datum/chewin_cooking/recipe_step/start/New(var/container) + required_container = container + diff --git a/monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/use_fryer.dm b/monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/use_fryer.dm new file mode 100644 index 000000000000..fedcbedd7287 --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/use_fryer.dm @@ -0,0 +1,62 @@ +//A cooking step that involves adding a reagent to the food. +/datum/chewin_cooking/recipe_step/use_fryer + class=CHEWIN_USE_FRYER + auto_complete_enabled = TRUE + var/time + var/heat + +//set_heat: The temperature the oven must bake at. +//set_time: How long something must be baked in the overn +//our_recipe: The parent recipe object +/datum/chewin_cooking/recipe_step/use_fryer/New(var/set_heat, var/set_time, var/datum/chewin_cooking/recipe/our_recipe) + + + + time = set_time + heat = set_heat + + desc = "Cook in an oven set to [heat] for [DisplayTimeText(time)]." + + ..(our_recipe) + + +/datum/chewin_cooking/recipe_step/use_fryer/check_conditions_met(var/obj/used_item, var/datum/chewin_cooking/recipe_tracker/tracker) + + if(!istype(used_item, /obj/machinery/deepfryer)) + return CHEWIN_CHECK_INVALID + + return CHEWIN_CHECK_VALID + +//Reagents are calculated prior to object creation +/datum/chewin_cooking/recipe_step/use_fryer/calculate_quality(var/obj/used_item, var/datum/chewin_cooking/recipe_tracker/tracker) + var/obj/item/reagent_containers/cooking_container/container = tracker.holder_ref.resolve() + + var/bad_cooking = 0 + for (var/key in container.fryer_data) + if (heat != key) + bad_cooking += container.fryer_data[key] + + bad_cooking = round(bad_cooking/(5 SECONDS)) + + var/good_cooking = round(time/3 SECONDS) - bad_cooking + + return clamp_quality(good_cooking) + + +/datum/chewin_cooking/recipe_step/use_fryer/follow_step(var/obj/used_item, var/datum/chewin_cooking/recipe_tracker/tracker) + return CHEWIN_SUCCESS + +/datum/chewin_cooking/recipe_step/use_fryer/is_complete(var/obj/used_item, var/datum/chewin_cooking/recipe_tracker/tracker) + + var/obj/item/reagent_containers/cooking_container/container = tracker.holder_ref.resolve() + + if(container.fryer_data[heat] >= time) + #ifdef CHEWIN_DEBUG + log_debug("use_fryer/is_complete() Returned True; comparing [heat]: [container.oven_data[heat]] to [time]") + #endif + return TRUE + + #ifdef CHEWIN_DEBUG + log_debug("use_fryer/is_complete() Returned False; comparing [heat]: [container.oven_data[heat]] to [time]") + #endif + return FALSE diff --git a/monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/use_grill.dm b/monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/use_grill.dm new file mode 100644 index 000000000000..87b3ff8308e4 --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/use_grill.dm @@ -0,0 +1,63 @@ +//A cooking step that involves adding a reagent to the food. +/datum/chewin_cooking/recipe_step/use_grill + class=CHEWIN_USE_GRILL + auto_complete_enabled = TRUE + var/time + var/heat + +//reagent_id: The id of the required reagent to be added, E.G. 'salt'. +//amount: The amount of the required reagent that needs to be added. +//base_quality_award: The quality awarded by following this step. +//our_recipe: The parent recipe object, +/datum/chewin_cooking/recipe_step/use_grill/New(var/set_heat, var/set_time, var/datum/chewin_cooking/recipe/our_recipe) + + + + time = set_time + heat = set_heat + + desc = "Cook on a grill set to [heat] for [DisplayTimeText(time)]." + + ..(our_recipe) + + +/datum/chewin_cooking/recipe_step/use_grill/check_conditions_met(var/obj/used_item, var/datum/chewin_cooking/recipe_tracker/tracker) + + if(!istype(used_item, /obj/machinery/grill)) + return CHEWIN_CHECK_INVALID + + return CHEWIN_CHECK_VALID + +//Reagents are calculated prior to object creation +/datum/chewin_cooking/recipe_step/use_grill/calculate_quality(var/obj/used_item, var/datum/chewin_cooking/recipe_tracker/tracker) + var/obj/item/reagent_containers/cooking_container/container = tracker.holder_ref.resolve() + + var/bad_cooking = 0 + for (var/key in container.grill_data) + if (heat != key) + bad_cooking += container.grill_data[key] + + bad_cooking = round(bad_cooking/(5 SECONDS)) + + var/good_cooking = round(time/3 SECONDS) - bad_cooking + + return clamp_quality(good_cooking) + + +/datum/chewin_cooking/recipe_step/use_grill/follow_step(var/obj/used_item, var/datum/chewin_cooking/recipe_tracker/tracker) + return CHEWIN_SUCCESS + +/datum/chewin_cooking/recipe_step/use_grill/is_complete(var/obj/used_item, var/datum/chewin_cooking/recipe_tracker/tracker) + + var/obj/item/reagent_containers/cooking_container/container = tracker.holder_ref.resolve() + + if(container.grill_data[heat] >= time) + #ifdef CHEWIN_DEBUG + log_debug("use_grill/is_complete() Returned True; comparing [heat]: [container.grill_data[heat]] to [time]") + #endif + return TRUE + + #ifdef CHEWIN_DEBUG + log_debug("use_grill/is_complete() Returned False; comparing [heat]: [container.grill_data[heat]] to [time]") + #endif + return FALSE diff --git a/monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/use_item.dm b/monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/use_item.dm new file mode 100644 index 000000000000..17e3e4f86d96 --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/use_item.dm @@ -0,0 +1,42 @@ +//A cooking step that involves using an item on the food. +/datum/chewin_cooking/recipe_step/use_item + class=CHEWIN_USE_ITEM + var/required_item_type + var/exact_path = FALSE //Tests if the item has to be the EXACT ITEM PATH, or just a child of the item path. + +//item_type: The type path of the object we are looking for. +//base_quality_award: The quality awarded by following this step. +//our_recipe: The parent recipe object +/datum/chewin_cooking/recipe_step/use_item/New(var/item_type, var/datum/chewin_cooking/recipe/our_recipe) + #ifdef CHEWIN_DEBUG + if(!ispath(item_type)) + log_debug("/datum/chewin_cooking/recipe_step/add_item/New(): item [item_type] is not a valid path") + #endif + + var/example_item = new item_type() + if(example_item) + desc = "Apply \a [example_item]." + + required_item_type = item_type + group_identifier = item_type + + QDEL_NULL(example_item) + #ifdef CHEWIN_DEBUG + else + log_debug("/datum/chewin_cooking/recipe_step/add_item/New(): item [item_type] couldn't be created.") + #endif + ..(our_recipe) + + +/datum/chewin_cooking/recipe_step/use_item/check_conditions_met(var/obj/added_item, var/datum/chewin_cooking/recipe_tracker/tracker) + if(src.exact_path) + if(added_item.type == required_item_type) + return CHEWIN_CHECK_VALID + else + if(istype(added_item,required_item_type)) + return CHEWIN_CHECK_VALID + return CHEWIN_CHECK_INVALID + +//Think about a way to make this more intuitive? +/datum/chewin_cooking/recipe_step/use_item/calculate_quality(var/obj/added_item) + return clamp_quality(0) diff --git a/monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/use_oven.dm b/monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/use_oven.dm new file mode 100644 index 000000000000..3f4981cfd10d --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/use_oven.dm @@ -0,0 +1,62 @@ +//A cooking step that involves adding a reagent to the food. +/datum/chewin_cooking/recipe_step/use_oven + class=CHEWIN_USE_OVEN + auto_complete_enabled = TRUE + var/time + var/heat + +//set_heat: The temperature the oven must bake at. +//set_time: How long something must be baked in the overn +//our_recipe: The parent recipe object +/datum/chewin_cooking/recipe_step/use_oven/New(var/set_heat, var/set_time, var/datum/chewin_cooking/recipe/our_recipe) + + + + time = set_time + heat = set_heat + + desc = "Cook in an oven set to [heat] for [DisplayTimeText(time)]." + + ..(our_recipe) + + +/datum/chewin_cooking/recipe_step/use_oven/check_conditions_met(var/obj/used_item, var/datum/chewin_cooking/recipe_tracker/tracker) + + if(!istype(used_item, /obj/machinery/oven)) + return CHEWIN_CHECK_INVALID + + return CHEWIN_CHECK_VALID + +//Reagents are calculated prior to object creation +/datum/chewin_cooking/recipe_step/use_oven/calculate_quality(var/obj/used_item, var/datum/chewin_cooking/recipe_tracker/tracker) + var/obj/item/reagent_containers/cooking_container/container = tracker.holder_ref.resolve() + + var/bad_cooking = 0 + for (var/key in container.oven_data) + if (heat != key) + bad_cooking += container.oven_data[key] + + bad_cooking = round(bad_cooking/(5 SECONDS)) + + var/good_cooking = round(time/3 SECONDS) - bad_cooking + + return clamp_quality(good_cooking) + + +/datum/chewin_cooking/recipe_step/use_oven/follow_step(var/obj/used_item, var/datum/chewin_cooking/recipe_tracker/tracker) + return CHEWIN_SUCCESS + +/datum/chewin_cooking/recipe_step/use_oven/is_complete(var/obj/used_item, var/datum/chewin_cooking/recipe_tracker/tracker) + + var/obj/item/reagent_containers/cooking_container/container = tracker.holder_ref.resolve() + + if(container.oven_data[heat] >= time) + #ifdef CHEWIN_DEBUG + log_debug("use_oven/is_complete() Returned True; comparing [heat]: [container.oven_data[heat]] to [time]") + #endif + return TRUE + + #ifdef CHEWIN_DEBUG + log_debug("use_oven/is_complete() Returned False; comparing [heat]: [container.oven_data[heat]] to [time]") + #endif + return FALSE diff --git a/monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/use_stove.dm b/monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/use_stove.dm new file mode 100644 index 000000000000..1cd4317bbbbb --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/use_stove.dm @@ -0,0 +1,62 @@ +//A cooking step that involves adding a reagent to the food. +/datum/chewin_cooking/recipe_step/use_stove + class=CHEWIN_USE_STOVE + auto_complete_enabled = TRUE + var/time + var/heat + +//set_heat: The temperature the stove must cook at. +//set_time: How long something must be cook in the stove +//our_recipe: The parent recipe object +/datum/chewin_cooking/recipe_step/use_stove/New(var/set_heat, var/set_time, var/datum/chewin_cooking/recipe/our_recipe) + + + + time = set_time + heat = set_heat + + desc = "Cook on a stove set to [heat] for [DisplayTimeText(time)]." + + ..(our_recipe) + + +/datum/chewin_cooking/recipe_step/use_stove/check_conditions_met(var/obj/used_item, var/datum/chewin_cooking/recipe_tracker/tracker) + + if(!used_item.GetComponent(/datum/component/stove)) + return CHEWIN_CHECK_INVALID + + return CHEWIN_CHECK_VALID + +//Reagents are calculated prior to object creation +/datum/chewin_cooking/recipe_step/use_stove/calculate_quality(var/obj/used_item, var/datum/chewin_cooking/recipe_tracker/tracker) + var/obj/item/reagent_containers/cooking_container/container = tracker.holder_ref.resolve() + + var/bad_cooking = 0 + for (var/key in container.stove_data) + if (heat != key) + bad_cooking += container.stove_data[key] + + bad_cooking = round(bad_cooking / (5 SECONDS)) + + var/good_cooking = round(time / (3 SECONDS)) - bad_cooking + + return clamp_quality(good_cooking) + + +/datum/chewin_cooking/recipe_step/use_stove/follow_step(var/obj/used_item, var/datum/chewin_cooking/recipe_tracker/tracker) + return CHEWIN_SUCCESS + +/datum/chewin_cooking/recipe_step/use_stove/is_complete(var/obj/used_item, var/datum/chewin_cooking/recipe_tracker/tracker) + + var/obj/item/reagent_containers/cooking_container/container = tracker.holder_ref.resolve() + + if(container.stove_data[heat] >= time) + #ifdef CHEWIN_DEBUG + log_debug("use_stove/is_complete() Returned True; comparing [heat]: [container.stove_data[heat]] to [time]") + #endif + return TRUE + + #ifdef CHEWIN_DEBUG + log_debug("use_stove/is_complete() Returned False; comparing [heat]: [container.stove_data[heat]] to [time]") + #endif + return FALSE diff --git a/monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/use_tool.dm b/monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/use_tool.dm new file mode 100644 index 000000000000..71ac14c44c7c --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/use_tool.dm @@ -0,0 +1,40 @@ +//A cooking step that involves using an item on the food. +/datum/chewin_cooking/recipe_step/use_tool + class=CHEWIN_USE_ITEM + var/tool_type + var/tool_quality + var/inherited_quality_modifier = 0.1 + +//item_type: The type path of the object we are looking for. +//base_quality_award: The quality awarded by following this step. +//our_recipe: The parent recipe object +/datum/chewin_cooking/recipe_step/use_tool/New(var/type, var/quality, var/datum/chewin_cooking/recipe/our_recipe) + + desc = "Use \a [type] tool of quality [quality] or higher." + + tool_type = type + tool_quality = quality + + ..(our_recipe) + + +/datum/chewin_cooking/recipe_step/use_tool/check_conditions_met(var/obj/item/added_item, var/datum/chewin_cooking/recipe_tracker/tracker) + if(!initial(added_item.tool_behaviour)) + return CHEWIN_CHECK_INVALID + + return CHEWIN_CHECK_VALID + +/datum/chewin_cooking/recipe_step/use_tool/follow_step(var/obj/added_item, var/obj/item/reagent_containers/cooking_container/container) + var/obj/item/our_tool = added_item + to_chat(usr, span_notice("You use the [added_item] according to the recipe.")) + + if(our_tool.toolspeed < tool_quality) + return to_chat(usr, span_notice("The low quality of the tool hurts the quality of the dish.")) + + return CHEWIN_SUCCESS + +//Think about a way to make this more intuitive? +/datum/chewin_cooking/recipe_step/use_tool/calculate_quality(var/obj/added_item) + var/obj/item/our_tool = added_item + var/raw_quality = (our_tool.toolspeed - tool_quality) * inherited_quality_modifier + return clamp_quality(raw_quality) diff --git a/monkestation/code/modules/brewin_and_chewin/chewing/recipes/black_eggs.dm b/monkestation/code/modules/brewin_and_chewin/chewing/recipes/black_eggs.dm new file mode 100644 index 000000000000..f10d0cda4fb6 --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/chewing/recipes/black_eggs.dm @@ -0,0 +1,59 @@ +/datum/chewin_cooking/recipe/black_eggs + cooking_container = PAN + product_type = /obj/item/food/black_eggs + recipe_guide = "Crack eggs into a pan, add some vinegar and blood cook for 15 seconds on low." + step_builder = list( + + CHEWIN_BEGIN_OPTION_CHAIN, + list(CHEWIN_ADD_ITEM_OPTIONAL, /obj/item/food/butter, base=10, reagent_skip=TRUE), + list(CHEWIN_USE_STOVE_OPTIONAL, J_LO, 10 SECONDS, finish_text = "The butter melts in the pan!"), + CHEWIN_END_OPTION_CHAIN, + + list(CHEWIN_ADD_ITEM, /obj/item/food/egg, qmod=0.5), + list(CHEWIN_ADD_ITEM, /obj/item/food/egg, qmod=0.5), + + list(CHEWIN_ADD_REAGENT, /datum/reagent/blood, 5, base=3), + list(CHEWIN_ADD_REAGENT_OPTIONAL, /datum/reagent/consumable/vinegar, 5, base=3), + + CHEWIN_BEGIN_EXCLUSIVE_OPTIONS, + list(CHEWIN_ADD_REAGENT_OPTIONAL, /datum/reagent/blood, 15, remain_percent = 0.2 , base=3, prod_desc="Extra Bloody!"), + list(CHEWIN_ADD_REAGENT_OPTIONAL, /datum/reagent/consumable/capsaicin, 5, remain_percent = 0.2, base=6, prod_desc="Extra Spicy!"), + CHEWIN_END_EXCLUSIVE_OPTIONS, + + list(CHEWIN_USE_STOVE, J_LO, 15 SECONDS , finish_text = "You can smell scrambled eggs!") + + ) + +/datum/chewin_cooking/recipe/black_eggs_five + name = "Black Scrambled Eggs (5 Servings)" + cooking_container = PAN + product_type = /obj/item/food/black_eggs + product_count = 5 + recipe_guide = "Crack eggs into a pan, add some vinegar and blood cook for 25 seconds on low." + step_builder = list( + + CHEWIN_BEGIN_OPTION_CHAIN, + list(CHEWIN_ADD_ITEM_OPTIONAL, /obj/item/food/butter, base=10, reagent_skip=TRUE), + list(CHEWIN_USE_STOVE_OPTIONAL, J_LO, 10 SECONDS, finish_text = "The butter melts in the pan!"), + CHEWIN_END_OPTION_CHAIN, + + list(CHEWIN_ADD_ITEM, /obj/item/food/egg, qmod=0.5), + list(CHEWIN_ADD_ITEM, /obj/item/food/egg, qmod=0.5), + list(CHEWIN_ADD_ITEM, /obj/item/food/egg, qmod=0.5), + list(CHEWIN_ADD_ITEM, /obj/item/food/egg, qmod=0.5), + list(CHEWIN_ADD_ITEM, /obj/item/food/egg, qmod=0.5), + list(CHEWIN_ADD_ITEM, /obj/item/food/egg, qmod=0.5), + list(CHEWIN_ADD_ITEM, /obj/item/food/egg, qmod=0.5), + list(CHEWIN_ADD_ITEM, /obj/item/food/egg, qmod=0.5), + + list(CHEWIN_ADD_REAGENT, /datum/reagent/blood, 15, base=4), + list(CHEWIN_ADD_REAGENT_OPTIONAL, /datum/reagent/consumable/vinegar, 15, base=5), + + CHEWIN_BEGIN_EXCLUSIVE_OPTIONS, + list(CHEWIN_ADD_REAGENT_OPTIONAL, /datum/reagent/blood, 30, remain_percent = 0.2 , base=5, prod_desc="Extra Bloody!"), + list(CHEWIN_ADD_REAGENT_OPTIONAL, /datum/reagent/consumable/capsaicin, 15, remain_percent = 0.2, base=6, prod_desc="Extra Spicy!"), + CHEWIN_END_EXCLUSIVE_OPTIONS, + + list(CHEWIN_USE_STOVE, J_LO, 25 SECONDS , finish_text = "You can smell scrambled eggs!") + + ) diff --git a/monkestation/code/modules/brewin_and_chewin/chewing/recipes/converted_recipes.md b/monkestation/code/modules/brewin_and_chewin/chewing/recipes/converted_recipes.md new file mode 100644 index 000000000000..22f38cca6d52 --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/chewing/recipes/converted_recipes.md @@ -0,0 +1,8 @@ +This is just a file to track foods that has a chewin counterpart + /obj/item/food/fries + /obj/item/food/meat/steak/plain + /obj/item/food/fried_blood_sausage + /obj/item/food/salad/katsu_curry + /obj/item/food/bread/plain + /obj/item/food/black_eggs + /obj/item/food/lizard_dumplings diff --git a/monkestation/code/modules/brewin_and_chewin/chewing/recipes/documentation.md b/monkestation/code/modules/brewin_and_chewin/chewing/recipes/documentation.md new file mode 100644 index 000000000000..23a3a08776e4 --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/chewing/recipes/documentation.md @@ -0,0 +1,117 @@ +# CHEWIN Step Builder Commands + +All steps in the step builder have the following format: + +## list(< CHEWIN_STEP_CLASS><_OPTIONAL>, < REQUIRED_ARGS>, < CUSTOM_ARGS>=value) + + +### `` +The name of any one of the recipe step types, custom or otherwise. Valid options are: + +- **CHEWIN_ADD_ITEM** + - Adds an item to the recipe. The object is inserted in the container. The product inherits the item's quality and reagents if able. + - **Required Arguments:** + - `type_path`: The type path of the item being added. + - **Example:** + - `list(CHEWIN_ADD_ITEM, /obj/item/food/breadslice)` + +- **CHEWIN_ADD_REAGENT** + - Adds a reagent to the recipe. The resulting reagent is stored in the container's reagent datum. The product inherits the reagents added if able. It's possible to sneak poison into food this way. + - **Required Arguments:** + - `reagent_id`: The type path of the reagent being added. + - `amount`: The amount of units the ingredient requires. + - **Example:** + - `list(CHEWIN_ADD_REAGENT, /datum/reagent/consumable/salt, 5)` + +- **CHEWIN_ADD_PRODUCE** + - Adds a grown item to the recipe. The item is inserted in the container. The product inherits reagents if able, and its quality scales with the plant's potency. + - **Required Arguments:** + - `plantname`: The path to the produce being added. + - **Example:** + - `list(CHEWIN_ADD_PRODUCE, /obj/item/food/grown/banana)` + +- **CHEWIN_USE_TOOL** + - Uses a tool on the item. Going far and beyond the quality of the tool increases the quality of the product. + - **Required Arguments:** + - `tool_quality`: The id of the reagent being added. + - `difficulty`: The minimum tool quality of the reagent not implemented at this time as skills are still a hot topic. + - **Example:** + - `list(CHEWIN_USE_TOOL, QUALITY_CUTTING, 5)` + +- **CHEWIN_USE_ITEM** + - Uses an item on the recipe. The object is not consumed. + - **Required Arguments:** + - `type_path`: The type path of the item being added. + - **Example:** + - `list(CHEWIN_USE_ITEM, /obj/item/rollingpin)` + *Use a rolling pin on the container.* + +- **CHEWIN_USE_STOVE** + - Cook the cooking container on a stove. Keep it on too long, it burns. + - **Required Arguments:** + - `temperature`: The required temperature to cook the food at. + - *Temperatures are macro'd by: `J_LO`, `J_MED`, `J_HI`.* + - `time`: The amount of time, in seconds, to keep the food on the stove. + - **Example:** + - `list(CHEWIN_USE_STOVE, J_LO, 40)` + *Cook on a stove set to "Low" for 40 seconds.* + +### `<_OPTIONAL>` +The tag `_OPTIONAL` can be tacked onto any command to make it an optional step not required to finish the recipe. + +- **Example:** + - `list(CHEWIN_ADD_ITEM_OPTIONAL, /obj/item/food/breadslice)` + +### `` +The required arguments for a specific class of step to function. They are not labeled and must be in order. See above for which classes of step have which required arguments. + +### `` +All custom arguments are declared in the format `key=value`. They are used to quickly modify a given step in a recipe. + +- **Example:** + - `list(CHEWIN_ADD_ITEM, /obj/item/food/breadslice, desc="a custom description")` + +#### Valid options are: +- **desc** + - Adds a custom description to the recipe step, when read from a cooking book. + - **Example:** `desc="a custom description"` + +- **base** + - Defines the base quality for a recipe step. This will become the LOWEST quality following a step can award. For some step classes, this will simply be the default awarded. If not defined, there is no minimum quality a step can add. + - **Example:** `base=4` + +- **max** + - Defines the maximum quality for a recipe step. This will become the HIGHEST quality following a step can award. If not defined, there is no maximum quality a step can add. + - **Example:** `max=10` + +- **result_desc** + - Adds a custom description to the result of the recipe step. This will be read off on the item product. + - **Example:** `result_desc="A Slice of Bread is in the sandwich."` + +- **exact** + - **CHEWIN_ADD_ITEM or CHEWIN_USE_ITEM ONLY:** + - Determines if the steps require an exact type path, or if a child will satisfy the requirements. If the type path is also preferable. + - **Example:** `exact=TRUE` + +- **qmod** + - **CHEWIN_ADD_ITEM, CHEWIN_USE_TOOL ONLY:** + - Modifier to adjust the `inherited_quality_modifier` on an `add_item` recipe step. + - **Example:** `qmod=0.5` + *Only 50% of the added item's quality will be inherited.* + +- **remain_percent** + - **CHEWIN_ADD_REAGENT ONLY:** + - Determines the percentage of a reagent that remains in the cooking of an item. IE- if you cook a steak with wine, you can make it so the wine doesn't wind up in the resulting food. + - **Example:** `remain_percent=0.1` + *Only 10% of the units expected to be added will apply to the resulting food injection.* + +- **reagent_skip** + - **CHEWIN_ADD_ITEM, CHEWIN_ADD_PRODUCE ONLY:** + - Outright excludes all reagents from the added item/produce from showing up in the product. + - **Example:** `reagent_skip=TRUE` + +- **exclude_reagents** + - **CHEWIN_ADD_ITEM, CHEWIN_ADD_PRODUCE ONLY:** + - Excludes the presence of a reagent in an item from the resulting meal. + - **Example:** `exclude_reagents=list(/datum/reagent/toxin/carpotoxin)` + *Removes the presence of Carpotoxin from the item.* diff --git a/monkestation/code/modules/brewin_and_chewin/chewing/recipes/example_recipe.dm b/monkestation/code/modules/brewin_and_chewin/chewing/recipes/example_recipe.dm new file mode 100644 index 000000000000..61e029215592 --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/chewing/recipes/example_recipe.dm @@ -0,0 +1,170 @@ +/* +========================================================= +CHEWIN STEP_BUILDER COMMANDS: +All steps in the step builder have the following format: +list(<_OPTIONAL>, , =value) + + The name any one of the recipe step types, custom or otherwise. + Valid options are: + CHEWIN_ADD_ITEM + Add an item to the recipe. The object is inserted in the container. + The product inherits the item's quality and reagents if able. + : + type_path - the type path of the item being added. + Example: list(CHEWIN_ADD_ITEM, /obj/item/food/breadslice) + + CHEWIN_ADD_REAGENT + Add a reagent to the recipe. The resulting reagent is stored in the container's reagent datum. + The product inherits the reagents added if able. It's possible to sneak poison into food this way. + : + reagent_id - the typepath of the reagent being added + amount - The amount of units the ingredient requires + Example: list(CHEWIN_ADD_REAGENT, /datum/reagent/consumable/salt, 5) + + CHEWIN_ADD_PRODUCE + Add a grown item to the recipe. The item is inserted in the container. + The product inherits reagents if able, and its quality scales with the plant's potency. + : + plantname - the path to the produce being added. + Example: list(CHEWIN_ADD_PRODUCE, /obj/item/food/grown/banana) + + CHEWIN_USE_TOOL + Uses a tool on the item. Going far and beyond the quality of the tool increases the quality of the product. + : + tool_quality - the id of the reagent being added + difficulty - The minimum tool quality of the reagent not implemented at this time as skills are still a hot topic + Example: list(CHEWIN_USE_TOOL, QUALITY_CUTTING, 5) + + CHEWIN_USE_ITEM + Uses an item on the recipe. The object is not consumed. + : + type_path - the type path of the item being added. + Example: list(CHEWIN_USE_ITEM, /obj/item/rollingpin) #Use a rolling pin on the container + + CHEWIN_USE_STOVE + Cook the cooking container on a stove. Keep it on too long, it burns. + : + temperature - the required temperature to cook the food at. + (Temperatures are macro'd by: J_LO, J_MED, J_HI) + time - the amount of time, in seconds, to keep the food on the stove. + Example: list(CHEWIN_USE_STOVE, J_LO, 40) #Cook on a stove set to "Low" for 40 seconds. + +<_OPTIONAL> + The tag _OPTIONAL can be tacked onto any command to make it an optional step not required to finish the recipe. + Example: list(CHEWIN_ADD_ITEM_OPTIONAL, /obj/item/food/breadslice) + + + The required arguments for a specific class of step to function. They are not labeled and must be in order. + See above for which classes of step have which required arguments. + + + All custom arguments are declared in the format key=value. They are used to quickly modify a given step in a recipe. + Example: list(CHEWIN_ADD_ITEM, /obj/item/food/breadslice, desc="a custom description") + Valid options are: + desc + Adds a custom description to the recipe step, when read from a cooking book. + Example: desc="a custom description" + + base + Defines the base quality for a recipe step. This will become the LOWEST quality following a step can award. + For some step classes, this will simply be the default awarded. + If not defined, there is no minimum quality a step can add. + Example: base=4 + + max + Defines the maximum quality for a recipe step. This will become the HIGHEST quality following a step can award. + If not defined, there is no maximum quality a step can add. + Example: max=10 + + result_desc + Adds a custom description to the result of the recipe step. This will be read off on the item product. + Example: result_desc="A Slice of Bread is in the sandwich." + + exact + CHEWIN_ADD_ITEM or CHEWIN_USE_ITEM ONLY: + Determines if the steps require an exact type path, or if a child will satisfy the requirements. + of the type path is also preferable. + Example: exact=TRUE + + qmod + CHEWIN_ADD_ITEM, CHEWIN_USE_TOOL ONLY: + modifier to adjust the inherited_quality_modifier on an add_item recipe step. + Example: qmod=0.5 //only 50% of the added item's quality will be inherited. + remain_percent + CHEWIN_ADD_REAGENT ONLY: + Determines the percentage of a reagent that remains in the cooking of an item. + IE- if you cook a steak with wine, you can make it so the wine doesn't wind up in the resulting food. + Example: remain_percent=0.1 //Only 10% of the units expected to be added will apply to the resulting food injection. + + reagent_skip + CHEWIN_ADD_ITEM, CHEWIN_ADD_PRODUCE ONLY: + Outright excludes all reagents from the added item/produce from showing up in the product. + Example: reagent_skip=TRUE + + exclude_reagents + CHEWIN_ADD_ITEM, CHEWIN_ADD_PRODUCE ONLY: + Excludes the presence of a reagent in an item from the resulting meal. + Example: exclude_reagents=list(/datum/reagent/toxin/carpotoxin) //Removes the presence of Carpotoxin from the item. + finish_text + when the step finishes a visible message will be sent + +========================================================= +*/ + +//Example Recipes +/datum/chewin_cooking/recipe/steak_stove + + //Name of the recipe. If not defined, it will just use the name of the product_type + name="Stove-Top cooked Steak" + + //The recipe will be cooked on a pan + cooking_container = PAN + + //The product of the recipe will be a steak. + product_type = /obj/item/food/meat/steak/plain + + //The product will have it's initial reagents wiped, prior to the recipe adding in reagents of its own. + replace_reagents = TRUE + + step_builder = list( + + //Butter your pan by adding a block of butter (no slices yet), and then melting it. Adding the butter unlocks the option to melt it on the stove. + CHEWIN_BEGIN_OPTION_CHAIN, + //base - the lowest amount of quality following this step can award. + //reagent_skip - Exclude the added item's reagents from being included the product + list(CHEWIN_ADD_ITEM_OPTIONAL, /obj/item/food/butter, base=10, reagent_skip=TRUE), + + //Melt the butter into the pan by cooking it on a stove set to Low for 10 seconds + list(CHEWIN_USE_STOVE_OPTIONAL, J_LO, 10 SECONDS, finish_text = "The butter melts in the pan!"), + CHEWIN_END_OPTION_CHAIN, + + //A steak is needed to start the meal. + //qmod- Half of the food quality of the parent will be considered. + //exclude_reagents- Carpotoxin will be filtered out of the steak. + list(CHEWIN_ADD_ITEM, /obj/item/food/meat/slab, qmod=0.5, exclude_reagents=list(/datum/reagent/toxin/carpotoxin)), + + //Add some mushrooms to give it some zest. Only one kind is allowed! + CHEWIN_BEGIN_EXCLUSIVE_OPTIONS, + list(CHEWIN_ADD_PRODUCE_OPTIONAL, /obj/item/food/grown/mushroom/libertycap, qmod=0.2, reagent_skip=TRUE), + list(CHEWIN_ADD_PRODUCE_OPTIONAL, /obj/item/food/grown/mushroom/reishi, qmod=0.4, reagent_skip=TRUE), + list(CHEWIN_ADD_PRODUCE_OPTIONAL, /obj/item/food/grown/mushroom/amanita, qmod=0.4, reagent_skip=TRUE), + list(CHEWIN_ADD_PRODUCE_OPTIONAL, /obj/item/food/grown/mushroom/plumphelmet, qmod=0.4, reagent_skip=TRUE), + CHEWIN_END_EXCLUSIVE_OPTIONS, + + //Beat that meat to increase its quality + list(CHEWIN_USE_TOOL_OPTIONAL, TOOL_HAMMER, 15), + + //You can add up to 3 units of salt to increase the quality. Any more will negatively impact it. + //base- for CHEWIN_ADD_REAGENT, the amount that this step will award if followed perfectly. + list(CHEWIN_ADD_REAGENT_OPTIONAL, /datum/reagent/consumable/salt, 3, base=3), + + //You can add capaicin or wine, but not both + //prod_desc- A description appended to the resulting product. + CHEWIN_BEGIN_EXCLUSIVE_OPTIONS, + list(CHEWIN_ADD_REAGENT_OPTIONAL, /datum/reagent/consumable/capsaicin, 5, base=6, prod_desc="The steak was Spiced with chili powder."), + list(CHEWIN_ADD_REAGENT_OPTIONAL, /datum/reagent/consumable/ethanol/wine, 5, remain_percent=0.1 ,base=6, prod_desc="The steak was sauteed in wine"), + CHEWIN_END_EXCLUSIVE_OPTIONS, + + //Cook on a stove, at medium temperature, for 30 seconds + list(CHEWIN_USE_STOVE, J_MED, 30 SECONDS) + ) diff --git a/monkestation/code/modules/brewin_and_chewin/chewing/recipes/french_fries.dm b/monkestation/code/modules/brewin_and_chewin/chewing/recipes/french_fries.dm new file mode 100644 index 000000000000..b69c8ceaf86d --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/chewing/recipes/french_fries.dm @@ -0,0 +1,8 @@ +/datum/chewin_cooking/recipe/fries + cooking_container = DF_BASKET + product_type = /obj/item/food/fries + recipe_guide = "Put potato wedges in a fryer, fry for 30 seconds." + step_builder = list( + list(CHEWIN_ADD_ITEM, /obj/item/food/grown/potato/wedges, qmod=0.5), + list(CHEWIN_USE_FRYER, J_HI, 10 SECONDS , finish_text = "The fries look gold and crispy!") + ) diff --git a/monkestation/code/modules/brewin_and_chewin/chewing/recipes/fried_blood_sausage.dm b/monkestation/code/modules/brewin_and_chewin/chewing/recipes/fried_blood_sausage.dm new file mode 100644 index 000000000000..9d94934c6dac --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/chewing/recipes/fried_blood_sausage.dm @@ -0,0 +1,56 @@ +/datum/chewin_cooking/recipe/fried_blood_sausage + cooking_container = PAN + product_type = /obj/item/food/fried_blood_sausage + recipe_guide = "Put blood sausages in a pan, cook for 30 seconds on medium." + step_builder = list( + + CHEWIN_BEGIN_OPTION_CHAIN, + list(CHEWIN_ADD_ITEM_OPTIONAL, /obj/item/food/butter, base=10, reagent_skip=TRUE), + list(CHEWIN_USE_STOVE_OPTIONAL, J_LO, 10 SECONDS, finish_text = "The butter melts in the pan!"), + CHEWIN_END_OPTION_CHAIN, + + list(CHEWIN_ADD_ITEM, /obj/item/food/raw_tiziran_sausage, qmod=0.5), + + list(CHEWIN_ADD_REAGENT_OPTIONAL, /datum/reagent/consumable/korta_flour, 5, base=3), + + CHEWIN_BEGIN_EXCLUSIVE_OPTIONS, + list(CHEWIN_ADD_REAGENT_OPTIONAL, /datum/reagent/blood, 15, remain_percent = 0.2 , base=3, prod_desc="Extra Bloody!"), + list(CHEWIN_ADD_REAGENT_OPTIONAL, /datum/reagent/consumable/honey, 15, remain_percent = 0.2 , base=4, prod_desc="Extra Sweet!"), + list(CHEWIN_ADD_REAGENT_OPTIONAL, /datum/reagent/consumable/capsaicin, 5, remain_percent = 0.2, base=6, prod_desc="Extra Spicy!"), + CHEWIN_END_EXCLUSIVE_OPTIONS, + + list(CHEWIN_USE_STOVE, J_MED, 30 SECONDS , finish_text = "You can smell fried blood sausage!") + + ) + +/datum/chewin_cooking/recipe/fried_blood_sausage_five + name = "Fried Blood Sausages (5 Servings)" + cooking_container = PAN + product_type = /obj/item/food/fried_blood_sausage + food_category = CAT_BULK + product_count = 5 + recipe_guide = "Put five blood sausages in a pan, cook for 45 seconds on medium." + step_builder = list( + + CHEWIN_BEGIN_OPTION_CHAIN, + list(CHEWIN_ADD_ITEM_OPTIONAL, /obj/item/food/butter, base=10, reagent_skip=TRUE), + list(CHEWIN_USE_STOVE_OPTIONAL, J_LO, 10 SECONDS, finish_text = "The butter melts in the pan!"), + CHEWIN_END_OPTION_CHAIN, + + list(CHEWIN_ADD_ITEM, /obj/item/food/raw_tiziran_sausage, qmod=0.5), + list(CHEWIN_ADD_ITEM, /obj/item/food/raw_tiziran_sausage, qmod=0.5), + list(CHEWIN_ADD_ITEM, /obj/item/food/raw_tiziran_sausage, qmod=0.5), + list(CHEWIN_ADD_ITEM, /obj/item/food/raw_tiziran_sausage, qmod=0.5), + list(CHEWIN_ADD_ITEM, /obj/item/food/raw_tiziran_sausage, qmod=0.5), + + list(CHEWIN_ADD_REAGENT_OPTIONAL, /datum/reagent/consumable/korta_flour, 20, base=3), + + CHEWIN_BEGIN_EXCLUSIVE_OPTIONS, + list(CHEWIN_ADD_REAGENT_OPTIONAL, /datum/reagent/blood, 30, remain_percent = 0.2 , base=3, prod_desc="Extra Bloody!"), + list(CHEWIN_ADD_REAGENT_OPTIONAL, /datum/reagent/consumable/honey, 30, remain_percent = 0.2 , base=4, prod_desc="Extra Sweet!"), + list(CHEWIN_ADD_REAGENT_OPTIONAL, /datum/reagent/consumable/capsaicin, 10, remain_percent = 0.2, base=6, prod_desc="Extra Spicy!"), + CHEWIN_END_EXCLUSIVE_OPTIONS, + + list(CHEWIN_USE_STOVE, J_MED, 56 SECONDS , finish_text = "You can smell fried blood sausages!") + + ) diff --git a/monkestation/code/modules/brewin_and_chewin/chewing/recipes/fried_rice.dm b/monkestation/code/modules/brewin_and_chewin/chewing/recipes/fried_rice.dm new file mode 100644 index 000000000000..bc3c2d2c35ae --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/chewing/recipes/fried_rice.dm @@ -0,0 +1,17 @@ +/datum/chewin_cooking/recipe/hurricane_rice + cooking_container = PAN + food_category = CAT_STOVETOP + product_type = /obj/item/food/salad/hurricane_rice + recipe_guide = "Add boiled rice to pan, crack an egg, add vegetables, cook for 15 seconds on high, add soysauce, cook for 5 seconds on high." + step_builder = list( + list(CHEWIN_ADD_ITEM, /obj/item/food/boiledrice, qmod=0.5), + list(CHEWIN_ADD_ITEM, /obj/item/food/egg, qmod=0.5), + list(CHEWIN_ADD_PRODUCE, /obj/item/food/grown/chili, qmod=0.5), + + list(CHEWIN_ADD_ITEM_OPTIONAL, /obj/item/food/onion_slice, qmod=0.5), + list(CHEWIN_ADD_ITEM_OPTIONAL, /obj/item/food/pineappleslice, qmod=0.5), + + list(CHEWIN_USE_STOVE, J_HI, 15 SECONDS , finish_text = "You can smell almost finished fried rice, just needs some seasoning!"), + list(CHEWIN_ADD_REAGENT, /datum/reagent/consumable/soysauce, 3, base=3), + list(CHEWIN_USE_STOVE, J_HI, 5 SECONDS , finish_text = "You can smell fried rice!"), + ) diff --git a/monkestation/code/modules/brewin_and_chewin/chewing/recipes/katsu_curry.dm b/monkestation/code/modules/brewin_and_chewin/chewing/recipes/katsu_curry.dm new file mode 100644 index 000000000000..3f69d1af3f4a --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/chewing/recipes/katsu_curry.dm @@ -0,0 +1,61 @@ +/datum/chewin_cooking/recipe/katsu + cooking_container = DF_BASKET + product_type = /obj/item/food/katsu_fillet + recipe_guide = "Put raw cutlets with some reispan bread slices in a fryer, fry for 20 seconds." + step_builder = list( + list(CHEWIN_ADD_ITEM, /obj/item/food/meat/rawcutlet, qmod=0.5), + list(CHEWIN_ADD_ITEM, /obj/item/food/breadslice/reispan, qmod=0.5), + list(CHEWIN_USE_FRYER, J_HI, 20 SECONDS) + ) + +/datum/chewin_cooking/recipe/katsu_curry + name = "Katsu Curry" + cooking_container = BOWL + product_type = /obj/item/food/salad/katsu_curry + recipe_guide = "Melt some butter in a bowl, add some rice, curry sauce and katsu." + step_builder = list( + list(CHEWIN_ADD_ITEM, /obj/item/food/butter, qmod=0.5), + list(CHEWIN_USE_STOVE, J_LO, 10 SECONDS, finish_text = "The butter melts in the bowl!"), + + list(CHEWIN_ADD_REAGENT_OPTIONAL, /datum/reagent/consumable/soysauce, 5, base=3), + + list(CHEWIN_ADD_ITEM, /obj/item/food/boiledrice, qmod=0.5), + list(CHEWIN_ADD_ITEM, /obj/item/food/katsu_fillet, qmod=0.5), + list(CHEWIN_ADD_REAGENT, /datum/reagent/consumable/nutriment/soup/curry_sauce, 5, base=3), + + CHEWIN_BEGIN_EXCLUSIVE_OPTIONS, + list(CHEWIN_ADD_PRODUCE_OPTIONAL, /obj/item/food/grown/chili, qmod=0.2, reagent_skip=TRUE, prod_desc = "Extra spicy!", food_buff = /datum/status_effect/food/sweaty), + list(CHEWIN_ADD_PRODUCE_OPTIONAL, /obj/item/food/grown/pineapple, qmod=0.2, reagent_skip=TRUE, prod_desc = "Mild and Sweet."), + CHEWIN_END_EXCLUSIVE_OPTIONS, + + list(CHEWIN_USE_STOVE, J_LO, 20 SECONDS), + ) + +/datum/chewin_cooking/recipe/katsu_curry_large + name = "Katsu Curry (5 Servings)" + cooking_container = POT + food_category = CAT_BULK + product_count = 5 + product_type = /obj/item/food/salad/katsu_curry + recipe_guide = "Melt some butter in a pot, add some rice, curry sauce and katsu, cook on low in the stove for 1 minute. Serves 5" + step_builder = list( + list(CHEWIN_ADD_ITEM, /obj/item/food/butter, qmod=0.5), + list(CHEWIN_USE_STOVE, J_LO, 10 SECONDS, finish_text = "The butter melts in the pot!"), + + list(CHEWIN_ADD_REAGENT_OPTIONAL, /datum/reagent/consumable/soysauce, 15, base=3), + + list(CHEWIN_ADD_ITEM, /obj/item/food/boiledrice, qmod=0.5), + list(CHEWIN_ADD_ITEM, /obj/item/food/boiledrice, qmod=0.5), + list(CHEWIN_ADD_ITEM, /obj/item/food/boiledrice, qmod=0.5), + list(CHEWIN_ADD_ITEM, /obj/item/food/katsu_fillet, qmod=0.5), + list(CHEWIN_ADD_ITEM, /obj/item/food/katsu_fillet, qmod=0.5), + list(CHEWIN_ADD_ITEM, /obj/item/food/katsu_fillet, qmod=0.5), + list(CHEWIN_ADD_REAGENT, /datum/reagent/consumable/nutriment/soup/curry_sauce, 25, base=3), + + CHEWIN_BEGIN_EXCLUSIVE_OPTIONS, + list(CHEWIN_ADD_PRODUCE_OPTIONAL, /obj/item/food/grown/chili, qmod=0.2, reagent_skip=TRUE, prod_desc = "Extra spicy!"), + list(CHEWIN_ADD_PRODUCE_OPTIONAL, /obj/item/food/grown/pineapple, qmod=0.2, reagent_skip=TRUE, prod_desc = "Mild and Sweet."), + CHEWIN_END_EXCLUSIVE_OPTIONS, + + list(CHEWIN_USE_STOVE, J_LO, 1 MINUTES), + ) diff --git a/monkestation/code/modules/brewin_and_chewin/chewing/recipes/kimchi.dm b/monkestation/code/modules/brewin_and_chewin/chewing/recipes/kimchi.dm new file mode 100644 index 000000000000..fbe196f189c1 --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/chewing/recipes/kimchi.dm @@ -0,0 +1,90 @@ +/datum/chewin_cooking/recipe/kimchi + cooking_container = BOWL + product_type = /obj/item/food/kimchi + recipe_guide = "Mix Cabbage, Chili, and Salt in a bowl." + step_builder = list( + list(CHEWIN_ADD_PRODUCE, /obj/item/food/grown/cabbage, qmod=0.5), + list(CHEWIN_ADD_PRODUCE, /obj/item/food/grown/chili, qmod=0.5), + list(CHEWIN_ADD_REAGENT, /datum/reagent/consumable/salt, 5, base=3), + ) + +/datum/chewin_cooking/recipe/kimchi_inferno + cooking_container = BOWL + product_type = /obj/item/food/inferno_kimchi + recipe_guide = "Mix Cabbage, Ghost Chili, and Salt in a bowl." + step_builder = list( + list(CHEWIN_ADD_PRODUCE, /obj/item/food/grown/cabbage, qmod=0.5), + list(CHEWIN_ADD_PRODUCE, /obj/item/food/grown/ghost_chili, qmod=0.5), + list(CHEWIN_ADD_REAGENT, /datum/reagent/consumable/salt, 5, base=3), + ) + +/datum/chewin_cooking/recipe/garlic_kimchi + cooking_container = BOWL + product_type = /obj/item/food/garlic_kimchi + recipe_guide = "Mix Cabbage, Garlic, Chili, and Salt in a bowl." + step_builder = list( + list(CHEWIN_ADD_PRODUCE, /obj/item/food/grown/cabbage, qmod=0.5), + list(CHEWIN_ADD_PRODUCE, /obj/item/food/grown/chili, qmod=0.5), + list(CHEWIN_ADD_PRODUCE, /obj/item/food/grown/garlic, qmod=0.5), + list(CHEWIN_ADD_REAGENT, /datum/reagent/consumable/salt, 5, base=3), + ) + +/datum/chewin_cooking/recipe/kimchi_five + name = "Kimchi (5 Servings)" + cooking_container = POT + food_category = CAT_BULK + product_type = /obj/item/food/kimchi + product_count = 5 + recipe_guide = "Mix Cabbage, Chili, and Salt in a bowl." + step_builder = list( + list(CHEWIN_ADD_PRODUCE, /obj/item/food/grown/cabbage, qmod=0.5), + list(CHEWIN_ADD_PRODUCE, /obj/item/food/grown/cabbage, qmod=0.5), + list(CHEWIN_ADD_PRODUCE, /obj/item/food/grown/cabbage, qmod=0.5), + list(CHEWIN_ADD_PRODUCE, /obj/item/food/grown/cabbage, qmod=0.5), + list(CHEWIN_ADD_PRODUCE, /obj/item/food/grown/chili, qmod=0.5), + list(CHEWIN_ADD_PRODUCE, /obj/item/food/grown/chili, qmod=0.5), + list(CHEWIN_ADD_PRODUCE, /obj/item/food/grown/chili, qmod=0.5), + list(CHEWIN_ADD_PRODUCE, /obj/item/food/grown/chili, qmod=0.5), + list(CHEWIN_ADD_REAGENT, /datum/reagent/consumable/salt, 20, base=3), + ) + +/datum/chewin_cooking/recipe/kimchi_inferno_five + name = "Inferno Kimchi (5 Servings)" + cooking_container = POT + food_category = CAT_BULK + product_count = 5 + product_type = /obj/item/food/inferno_kimchi + recipe_guide = "Mix Cabbage, Ghost Chili, and Salt in a bowl." + step_builder = list( + list(CHEWIN_ADD_PRODUCE, /obj/item/food/grown/cabbage, qmod=0.5), + list(CHEWIN_ADD_PRODUCE, /obj/item/food/grown/cabbage, qmod=0.5), + list(CHEWIN_ADD_PRODUCE, /obj/item/food/grown/cabbage, qmod=0.5), + list(CHEWIN_ADD_PRODUCE, /obj/item/food/grown/cabbage, qmod=0.5), + list(CHEWIN_ADD_PRODUCE, /obj/item/food/grown/ghost_chili, qmod=0.5), + list(CHEWIN_ADD_PRODUCE, /obj/item/food/grown/ghost_chili, qmod=0.5), + list(CHEWIN_ADD_PRODUCE, /obj/item/food/grown/ghost_chili, qmod=0.5), + list(CHEWIN_ADD_PRODUCE, /obj/item/food/grown/ghost_chili, qmod=0.5), + list(CHEWIN_ADD_REAGENT, /datum/reagent/consumable/salt, 20, base=3), + ) + +/datum/chewin_cooking/recipe/garlic_kimchi_five + name = "Garlic Kimchi (5 Servings)" + cooking_container = POT + food_category = CAT_BULK + product_count = 5 + product_type = /obj/item/food/garlic_kimchi + recipe_guide = "Mix Cabbage, Garlic, Chili, and Salt in a bowl." + step_builder = list( + list(CHEWIN_ADD_PRODUCE, /obj/item/food/grown/cabbage, qmod=0.5), + list(CHEWIN_ADD_PRODUCE, /obj/item/food/grown/cabbage, qmod=0.5), + list(CHEWIN_ADD_PRODUCE, /obj/item/food/grown/cabbage, qmod=0.5), + list(CHEWIN_ADD_PRODUCE, /obj/item/food/grown/cabbage, qmod=0.5), + list(CHEWIN_ADD_PRODUCE, /obj/item/food/grown/chili, qmod=0.5), + list(CHEWIN_ADD_PRODUCE, /obj/item/food/grown/chili, qmod=0.5), + list(CHEWIN_ADD_PRODUCE, /obj/item/food/grown/chili, qmod=0.5), + list(CHEWIN_ADD_PRODUCE, /obj/item/food/grown/chili, qmod=0.5), + list(CHEWIN_ADD_PRODUCE, /obj/item/food/grown/garlic, qmod=0.5), + list(CHEWIN_ADD_PRODUCE, /obj/item/food/grown/garlic, qmod=0.5), + list(CHEWIN_ADD_PRODUCE, /obj/item/food/grown/garlic, qmod=0.5), + list(CHEWIN_ADD_REAGENT, /datum/reagent/consumable/salt, 20, base=3), + ) diff --git a/monkestation/code/modules/brewin_and_chewin/chewing/recipes/lizard_dumplings.dm b/monkestation/code/modules/brewin_and_chewin/chewing/recipes/lizard_dumplings.dm new file mode 100644 index 000000000000..830c89594e41 --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/chewing/recipes/lizard_dumplings.dm @@ -0,0 +1,48 @@ +/datum/chewin_cooking/recipe/lizard_dumplings + cooking_container = POT + product_type = /obj/item/food/lizard_dumplings + product_count = 3 + recipe_guide = "Put wrapped potatoes in a pot, steam for 30 seconds on medium." + step_builder = list( + list(CHEWIN_ADD_REAGENT, /datum/reagent/water, 15, base=3), + + list(CHEWIN_ADD_ITEM, /obj/item/food/grown/potato, qmod=0.5), + + list(CHEWIN_ADD_REAGENT_CHOICE, list(/datum/reagent/consumable/korta_flour = 2, /datum/reagent/consumable/flour = 0.5), 5, base=4), + + CHEWIN_BEGIN_EXCLUSIVE_OPTIONS, + list(CHEWIN_ADD_REAGENT_OPTIONAL, /datum/reagent/consumable/honey, 15, remain_percent = 0.2 , base=4, prod_desc="Extra Sweet!"), + list(CHEWIN_ADD_REAGENT_OPTIONAL, /datum/reagent/consumable/capsaicin, 5, remain_percent = 0.2, base=6, prod_desc="Extra Spicy!"), + list(CHEWIN_ADD_REAGENT_OPTIONAL, /datum/reagent/consumable/soysauce, 5, remain_percent = 0.2, base=6, prod_desc="Salty!"), + CHEWIN_END_EXCLUSIVE_OPTIONS, + + list(CHEWIN_USE_STOVE, J_MED, 30 SECONDS , finish_text = "You can smell fresh cooked dumplings!") + + ) + +/datum/chewin_cooking/recipe/lizard_dumplings_dozen + name = "Lizard Dumplings (12 Servings)" + cooking_container = POT + product_type = /obj/item/food/lizard_dumplings + food_category = CAT_BULK + product_count = 12 + recipe_guide = "Put wrapped potatoes in a pot, steam for 45 seconds on medium." + step_builder = list( + list(CHEWIN_ADD_REAGENT, /datum/reagent/water, 25, base=3), + + list(CHEWIN_ADD_ITEM, /obj/item/food/grown/potato, qmod=0.5), + list(CHEWIN_ADD_ITEM, /obj/item/food/grown/potato, qmod=0.5), + list(CHEWIN_ADD_ITEM, /obj/item/food/grown/potato, qmod=0.5), + list(CHEWIN_ADD_ITEM, /obj/item/food/grown/potato, qmod=0.5), + + list(CHEWIN_ADD_REAGENT_CHOICE, list(/datum/reagent/consumable/korta_flour = 2, /datum/reagent/consumable/flour = 0.5), 15, base=3), + + CHEWIN_BEGIN_EXCLUSIVE_OPTIONS, + list(CHEWIN_ADD_REAGENT_OPTIONAL, /datum/reagent/consumable/honey, 15, remain_percent = 0.2 , base=4, prod_desc="Extra Sweet!"), + list(CHEWIN_ADD_REAGENT_OPTIONAL, /datum/reagent/consumable/capsaicin, 10, remain_percent = 0.2, base=6, prod_desc="Extra Spicy!"), + list(CHEWIN_ADD_REAGENT_OPTIONAL, /datum/reagent/consumable/soysauce, 10, remain_percent = 0.2, base=6, prod_desc="Salty!"), + CHEWIN_END_EXCLUSIVE_OPTIONS, + + list(CHEWIN_USE_STOVE, J_MED, 45 SECONDS , finish_text = "You can smell fresh cooked dumplings!") + + ) diff --git a/monkestation/code/modules/brewin_and_chewin/chewing/recipes/oven_bread.dm b/monkestation/code/modules/brewin_and_chewin/chewing/recipes/oven_bread.dm new file mode 100644 index 000000000000..86a191ac061b --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/chewing/recipes/oven_bread.dm @@ -0,0 +1,9 @@ +//this is a testing recipe these recipes are for actual multistep things +/datum/chewin_cooking/recipe/bread + cooking_container = OVEN + product_type = /obj/item/food/bread/plain + recipe_guide = "Put dough in an oven, bake for 30 seconds on medium." + step_builder = list( + list(CHEWIN_ADD_ITEM, /obj/item/food/dough, qmod=0.5), + list(CHEWIN_USE_OVEN, J_LO, 30 SECONDS, , finish_text = "The smell of baked bread oozes out!") + ) diff --git a/monkestation/code/modules/brewin_and_chewin/chewing/recipes/recipe_crafting_helper_generator.dm b/monkestation/code/modules/brewin_and_chewin/chewing/recipes/recipe_crafting_helper_generator.dm new file mode 100644 index 000000000000..2fdfe3af2330 --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/chewing/recipes/recipe_crafting_helper_generator.dm @@ -0,0 +1,148 @@ +/datum/chewin_cooking/recipe/proc/generate_crafting_helper() + var/datum/crafting_recipe/food/new_food_recipe = new + new_food_recipe.category = food_category + new_food_recipe.result = product_type + new_food_recipe.name = name + new_food_recipe.non_craftable = TRUE + + var/list/steps = list() + var/in_group = FALSE + for(var/iter in step_builder) + if(islist(iter)) + var/list/iteration_list = iter + switch(iteration_list[1]) + if(CHEWIN_ADD_PRODUCE_OPTIONAL) + var/obj/item/food/grown/grown_path = iteration_list[2] + if(!in_group) + steps += "Optional Step" + steps += "Add [initial(grown_path.name)] to [cooking_container]" + if(!in_group) + steps += "End Optional Step" + if(CHEWIN_ADD_PRODUCE) + var/obj/item/food/grown/grown_path = iteration_list[2] + steps += "Add [initial(grown_path.name)] to [cooking_container]" + if(CHEWIN_ADD_PRODUCE_CHOICE_OPTIONAL) + var/string = "" + var/first = TRUE + for(var/obj/item/food/grown/grown_path as anything in iteration_list[2]) + if(!first) + string += " or" + string += initial(grown_path.name) + first = FALSE + if(!in_group) + steps += "Optional Step" + steps += "Add [string] to [cooking_container]" + if(!in_group) + steps += "End Optional Step" + if(CHEWIN_ADD_PRODUCE_CHOICE) + var/string = "" + var/first = TRUE + for(var/obj/item/food/grown/grown_path as anything in iteration_list[2]) + if(!first) + string += " or" + string += initial(grown_path.name) + first = FALSE + steps += "Add [string] to [cooking_container]" + + if(CHEWIN_ADD_ITEM) + var/obj/item/item_path = iteration_list[2] + steps += "Add [initial(item_path.name)] to [cooking_container]" + if(CHEWIN_ADD_ITEM_OPTIONAL) + var/obj/item/item_path = iteration_list[2] + if(!in_group) + steps += "Optional Step" + steps += "Add [initial(item_path.name)] to [cooking_container]" + if(!in_group) + steps += "End Optional Step" + if(CHEWIN_ADD_REAGENT_OPTIONAL) + var/datum/reagent/reagent_path = iteration_list[2] + if(!in_group) + steps += "Optional Step" + steps += "Add [iteration_list[3]] units of [initial(reagent_path.name)] to [cooking_container]" + if(!in_group) + steps += "End Optional Step" + if(CHEWIN_ADD_REAGENT) + var/datum/reagent/reagent_path = iteration_list[2] + steps += "Add [iteration_list[3]] units of [initial(reagent_path.name)] to [cooking_container]" + if(CHEWIN_ADD_REAGENT_CHOICE_OPTIONAL) + var/string = "" + var/first = TRUE + for(var/datum/reagent/reagent_path as anything in iteration_list[2]) + if(!first) + string += " or" + string += initial(reagent_path.name) + first = FALSE + + if(!in_group) + steps += "Optional Step" + steps += "Add [iteration_list[3]] units of [string] to [cooking_container]" + if(!in_group) + steps += "End Optional Step" + if(CHEWIN_ADD_REAGENT_CHOICE) + var/string = "" + var/first = TRUE + for(var/datum/reagent/reagent_path as anything in iteration_list[2]) + if(!first) + string += " or " + string += initial(reagent_path.name) + first = FALSE + + steps += "Add [iteration_list[3]] units of [string] to [cooking_container]" + if(CHEWIN_USE_TOOL) + steps += "Use [iteration_list[2]] on [cooking_container]" + if(CHEWIN_USE_TOOL_OPTIONAL) + if(!in_group) + steps += "Optional Step" + steps += "Use [iteration_list[2]] on [cooking_container]" + if(!in_group) + steps += "End Optional Step" + if(CHEWIN_USE_ITEM) + steps += "Use [iteration_list[2]] on [cooking_container]" + if(CHEWIN_USE_ITEM_OPTIONAL) + if(!in_group) + steps += "Optional Step" + steps += "Use [iteration_list[2]] on [cooking_container]" + if(!in_group) + steps += "End Optional Step" + if(CHEWIN_USE_STOVE) + steps += "Cook on Stove on [iteration_list[2]] heat for [iteration_list[3] * 0.1] Seconds" + if(CHEWIN_USE_STOVE_OPTIONAL) + if(!in_group) + steps += "Optional Step" + steps += "Cook on Stove on [iteration_list[2]] heat for [iteration_list[3] * 0.1] Seconds" + if(!in_group) + steps += "End Optional Step" + if(CHEWIN_USE_FRYER) + steps += "Deepfr for [iteration_list[3] * 0.1] Seconds" + if(CHEWIN_USE_OVEN) + steps += "Cook in Oven on [iteration_list[2]] heat for [iteration_list[3] * 0.1] Seconds" + if(CHEWIN_USE_OVEN_OPTIONAL) + if(!in_group) + steps += "Optional Step" + steps += "Cook in Oven on [iteration_list[2]] heat for [iteration_list[3] * 0.1] Seconds" + if(!in_group) + steps += "End Optional Step" + if(CHEWIN_USE_GRILL) + steps += "Cook on Grill on [iteration_list[2]] heat for [iteration_list[3] * 0.1] Seconds" + if(CHEWIN_USE_GRILL_OPTIONAL) + if(!in_group) + steps += "Optional Step" + steps += "Cook on Grill on [iteration_list[2]] heat for [iteration_list[3] * 0.1] Seconds" + if(!in_group) + steps += "End Optional Step" + else + switch(iter) + if(CHEWIN_BEGIN_OPTION_CHAIN) + in_group = TRUE + steps += "Optional Steps" + if(CHEWIN_END_OPTION_CHAIN) + in_group = FALSE + steps += "End Optional Steps" + if(CHEWIN_BEGIN_EXCLUSIVE_OPTIONS) + in_group = TRUE + steps += "Exclusive Optional Steps" + if(CHEWIN_END_EXCLUSIVE_OPTIONS) + in_group = FALSE + steps += "End Exclusive Optional Steps" + new_food_recipe.steps = steps + GLOB.cooking_recipes += new_food_recipe diff --git a/monkestation/code/modules/brewin_and_chewin/chewing/recipes/sandwhich_test.dm b/monkestation/code/modules/brewin_and_chewin/chewing/recipes/sandwhich_test.dm new file mode 100644 index 000000000000..a6d2ed525a3c --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/chewing/recipes/sandwhich_test.dm @@ -0,0 +1,8 @@ +/datum/chewin_cooking/recipe/sandwich_basic + cooking_container = CUTTING_BOARD + product_type = /obj/item/food/sandwich + step_builder = list( + list(CHEWIN_ADD_ITEM, /obj/item/food/breadslice, qmod=0.5), + list(CHEWIN_ADD_ITEM, /obj/item/food/meat/cutlet, qmod=0.5, desc="It has meat in it.", result_desc="There is meat between the bread."), + list(CHEWIN_ADD_ITEM, /obj/item/food/breadslice, qmod=0.5) + ) diff --git a/monkestation/code/modules/brewin_and_chewin/chewing/tracker.dm b/monkestation/code/modules/brewin_and_chewin/chewing/tracker.dm new file mode 100644 index 000000000000..a553e8eed737 --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/chewing/tracker.dm @@ -0,0 +1,458 @@ +//Datum held by objects that is the core component in a recipe. +//You use other items on an items with this datum to advance its recipe. +//Kept intentionally bare-bones because MANY of these objects are going to be made. +/datum/chewin_cooking/recipe_tracker + var/datum/weakref/holder_ref //The parent object holding the recipe tracker. + var/step_flags //A collection of the classes of steps the recipe can take next. + //This variable is a little complicated. + //It specifically references recipe_pointer objects each pointing to a different point in a different recipe. + var/list/active_recipe_pointers = list() + var/completion_lockout = FALSE //Freakin' cheaters... + var/list/completed_list = list()//List of recipes marked as complete. + var/recipe_started = FALSE //Tells if steps have been taken for this recipe + +/datum/chewin_cooking/recipe_tracker/New(var/obj/item/reagent_containers/container) + + #ifdef CHEWIN_DEBUG + log_debug("Called /datum/chewin_cooking/recipe_tracker/New") + #endif + holder_ref = WEAKREF(container) + src.generate_pointers() + src.populate_step_flags() + +//Call when a method is done incorrectly that provides a flat debuff to the whole meal. +/datum/chewin_cooking/recipe_tracker/proc/apply_flat_penalty(var/penalty) + if(active_recipe_pointers.len == 0) + return + + for (var/datum/chewin_cooking/recipe_pointer/pointer in active_recipe_pointers) + pointer.tracked_quality -= penalty + +//Generate recipe_pointer objects based on the global list +/datum/chewin_cooking/recipe_tracker/proc/generate_pointers() + + #ifdef CHEWIN_DEBUG + log_debug("Called /datum/chewin_cooking/recipe_tracker/proc/generate_pointers") + #endif + var/obj/item/reagent_containers/cooking_container/container = holder_ref.resolve() + + #ifdef CHEWIN_DEBUG + log_debug("Loading all references to [container] of type [container.type] using [container.appliancetype]") + #endif + //iterate through dictionary matching on holder type + if(GLOB.chewin_recipe_dictionary[container.appliancetype]) + for (var/key in GLOB.chewin_recipe_dictionary[container.appliancetype]) + #ifdef CHEWIN_DEBUG + log_debug("Loading [container.appliancetype] , [key] into pointer.") + #endif + active_recipe_pointers += new /datum/chewin_cooking/recipe_pointer(container.appliancetype, key, src) + +//Generate next steps +/datum/chewin_cooking/recipe_tracker/proc/get_step_options() + + #ifdef CHEWIN_DEBUG + log_debug("Called /datum/chewin_cooking/recipe_tracker/proc/get_step_options") + #endif + var/list/options = list() + for (var/datum/chewin_cooking/recipe_pointer/pointer in active_recipe_pointers) + options += pointer.get_possible_steps() + + #ifdef CHEWIN_DEBUG + log_debug("/datum/chewin_cooking/recipe_tracker/proc/get_step_options returned [options.len] options") + #endif + return options + + +/datum/chewin_cooking/recipe_tracker/proc/populate_step_flags() + #ifdef CHEWIN_DEBUG + log_debug("Called /datum/chewin_cooking/recipe_tracker/proc/populate_step_flags") + #endif + step_flags = 0 + for (var/datum/chewin_cooking/recipe_pointer/pointer in active_recipe_pointers) + var/flag_group = pointer.get_step_flags() + #ifdef CHEWIN_DEBUG + log_debug("Flag group returned with [flag_group]") + #endif + step_flags |= flag_group + +//Check if a recipe tracker has recipes loaded. +/datum/chewin_cooking/recipe_tracker/proc/has_recipes() + #ifdef CHEWIN_DEBUG + log_debug("Called /datum/chewin_cooking/recipe_tracker/proc/has_recipes") + #endif + return active_recipe_pointers.len + +//Wrapper function for analyzing process_item internally. +/datum/chewin_cooking/recipe_tracker/proc/process_item_wrap(var/obj/used_object, var/mob/user) + + #ifdef CHEWIN_DEBUG + log_debug("/datum/chewin_cooking/recipe_tracker/proc/process_item_wrap called!") + #endif + + var/response = process_item(used_object, user) + + if(response == CHEWIN_SUCCESS || response == CHEWIN_COMPLETE || response == CHEWIN_PARTIAL_SUCCESS) + if(!recipe_started) + recipe_started = TRUE + return response + +//Core function that checks if a object meets all the requirements for certain recipe actions. +/datum/chewin_cooking/recipe_tracker/proc/process_item(var/obj/used_object, var/mob/user) + #ifdef CHEWIN_DEBUG + log_debug("Called /datum/chewin_cooking/recipe_tracker/proc/process_item") + #endif + if(completion_lockout) + #ifdef CHEWIN_DEBUG + log_debug("/datum/chewin_cooking/recipe_tracker/proc/process_item held in lockout!") + #endif + return CHEWIN_LOCKOUT + var/list/valid_steps = list() + var/list/valid_unique_id_list = list() + var/use_class + + //Decide what action is being taken with the item, if any. + for (var/datum/chewin_cooking/recipe_pointer/pointer in active_recipe_pointers) + var/option_list = list() + option_list += pointer.get_possible_steps() + for (var/datum/chewin_cooking/recipe_step/step in option_list) + var/class_string = get_class_string(step.class) + var/is_valid = step.check_conditions_met(used_object, src) + #ifdef CHEWIN_DEBUG + log_debug("recipe_tracker/proc/process_item: Check conditions met returned [is_valid]") + #endif + if(is_valid == CHEWIN_CHECK_VALID) + if(!valid_steps["[class_string]"]) + valid_steps["[class_string]"] = list() + valid_steps["[class_string]"]+= step + + if(!valid_unique_id_list["[class_string]"]) + valid_unique_id_list["[class_string]"] = list() + valid_unique_id_list["[class_string]"] += step.unique_id + + if(!use_class) + use_class = class_string + if(valid_steps.len == 0) + #ifdef CHEWIN_DEBUG + log_debug("/recipe_tracker/proc/process_item returned no steps!") + #endif + return CHEWIN_NO_STEPS + + if(valid_steps.len > 1) + completion_lockout = TRUE + if(user) + var/list/choice = input(user, "There's two things you can do with this item!", "Choose One:") in valid_steps + completion_lockout = FALSE + if(!choice) + #ifdef CHEWIN_DEBUG + log_debug("/recipe_tracker/proc/process_item returned choice cancel!") + #endif + return CHEWIN_CHOICE_CANCEL + use_class = choice + else + use_class = 1 + #ifdef CHEWIN_DEBUG + log_debug("Use class determined: [use_class]") + #endif + + valid_steps = valid_steps[use_class] + valid_unique_id_list = valid_unique_id_list[use_class] + + var/has_traversed = FALSE + //traverse and cull pointers + for (var/datum/chewin_cooking/recipe_pointer/pointer in active_recipe_pointers) + var/used_id = FALSE + var/list/option_list = pointer.get_possible_steps() + for (var/datum/chewin_cooking/recipe_step/step in option_list) + if(!(step.unique_id in valid_unique_id_list)) + continue + else + used_id = TRUE + if(step.is_complete(used_object, src)) + has_traversed = TRUE + pointer.traverse(step.unique_id, used_object) + break + if (!used_id) + active_recipe_pointers.Remove(pointer) + qdel(pointer) + + + //attempt_complete_recursive(used_object, use_class) No, never again... + + //Choose to keep baking or finish now. + if(completed_list.len && (completed_list.len != active_recipe_pointers.len)) + + var/recipe_string = null + for(var/datum/chewin_cooking/recipe_pointer/pointer in completed_list) + if(!recipe_string) + recipe_string = "\a [pointer.current_recipe.name]" + else + recipe_string += ", or \a [pointer.current_recipe.name]" + if(user) + if(alert(user, "If you finish cooking now, you will create [recipe_string]. However, you feel there are possibilities beyond even this. Continue cooking anyways?",,"Yes","No") == "Yes") + //Cull finished recipe items + for (var/datum/chewin_cooking/recipe_pointer/pointer in completed_list) + active_recipe_pointers.Remove(pointer) + qdel(pointer) + completed_list = list() + + //Check if we completed our recipe + var/datum/chewin_cooking/recipe_pointer/chosen_pointer = null + if(completed_list.len >= 1) + #ifdef CHEWIN_DEBUG + log_debug("/recipe_tracker/proc/process_item YO WE ACTUALLY HAVE A COMPLETED A RECIPE!") + #endif + chosen_pointer = completed_list[1] + if(user) + if(completed_list.len > 1) + completion_lockout = TRUE + var/choice = input(user, "There's two things you complete at this juncture!", "Choose One:") in completed_list + completion_lockout = FALSE + if(choice) + chosen_pointer = completed_list[choice] + + //Call a proc that follows one of the steps in question, so we have all the nice to_chat calls. + var/datum/chewin_cooking/recipe_step/sample_step = valid_steps[1] + #ifdef CHEWIN_DEBUG + log_debug("/recipe_tracker/proc/process_item: Calling follow_step") + #endif + sample_step.follow_step(used_object, src) + + if(chosen_pointer) + chosen_pointer.current_recipe.create_product(chosen_pointer, user) + return CHEWIN_COMPLETE + populate_step_flags() + + if(has_traversed) + #ifdef CHEWIN_DEBUG + log_debug("/recipe_tracker/proc/process_item returned success!") + #endif + return CHEWIN_SUCCESS + + #ifdef CHEWIN_DEBUG + log_debug("/recipe_tracker/proc/process_item returned partial success!") + #endif + return CHEWIN_PARTIAL_SUCCESS + +//Sleep... My precious, monsterous child.... +/* +/datum/chewin_cooking/recipe_tracker/proc/attempt_complete_recursive( + var/obj/used_object, + var/use_class, + var/depth = 1, + var/list/considered_steps = null) + var/list/ourlist = null + if(depth == 1) + ourlist = active_recipe_pointers.Copy() + else + ourlist = considered_steps.Copy() + log_debug("/recipe_tracker/proc/attempt_complete_recursive entered second recursion!") + for (var/datum/chewin_cooking/recipe_pointer/pointer in ourlist) + var/option_list = list() + option_list += pointer.get_possible_steps() + var/has_valid_step = FALSE + var/had_traversal = FALSE + for (var/datum/chewin_cooking/recipe_step/step in option_list) + if(step.class != use_class) + continue + if(depth !=1 && !step.auto_complete_enabled) + continue + if(step.check_conditions_met(used_object, src) == CHEWIN_CHECK_VALID) + has_valid_step = TRUE + else + continue + if(step.is_complete(src)) + pointer.traverse(step.unique_id, used_object) + had_traversal = TRUE + break ///The first valid step is the only one we traverse, in the instance of multiple valid cases. + if(depth == 1 && !has_valid_step) + active_recipe_pointers.Remove(pointer) + ourlist.Remove(pointer) + else if(!had_traversal) + ourlist.Remove(pointer) + if(ourlist.len != 0 && depth !=5) + attempt_complete_recursive(used_object, use_class, depth=++depth, considered_steps = ourlist) +*/ +//=================================================================================== + + +//Points to a specific step in a recipe while considering the optional paths that recipe can take. +/datum/chewin_cooking/recipe_pointer + var/datum/chewin_cooking/recipe/current_recipe //The recipe being followed here. + var/datum/chewin_cooking/recipe_step/current_step //The current step in the recipe we are following. + + var/datum/weakref/parent_ref + + var/tracked_quality = 0 //The current level of quality within that recipe. + + var/list/steps_taken = list() //built over the course of following a recipe, tracks what has been done to the object. Format is unique_id:result + ///what our current food buff is + var/custom_food_buff + +/datum/chewin_cooking/recipe_pointer/New(start_type, recipe_id, var/datum/chewin_cooking/recipe_tracker/parent) + + #ifdef CHEWIN_DEBUG + log_debug("Called /datum/chewin_cooking/recipe_pointer/pointer/New([start_type], [recipe_id], parent)") + #endif + + parent_ref = WEAKREF(parent) + + #ifdef CHEWIN_DEBUG + if(!GLOB.chewin_recipe_dictionary[start_type][recipe_id]) + log_debug("Recipe [start_type]-[recipe_id] not found by tracker!") + #endif + + current_recipe = GLOB.chewin_recipe_dictionary[start_type][recipe_id] + + #ifdef CHEWIN_DEBUG + if(!current_recipe) + log_debug("Recipe [start_type]-[recipe_id] initialized as null!") + #endif + + current_step = current_recipe.first_step + + #ifdef CHEWIN_DEBUG + steps_taken["[current_step.unique_id]"]="Started with a [start_type]" + #endif + +//A list returning the next possible steps in a given recipe +/datum/chewin_cooking/recipe_pointer/proc/get_possible_steps() + + #ifdef CHEWIN_DEBUG + log_debug("Called /datum/chewin_cooking/recipe_pointer/proc/get_possible_steps") + if(!current_step) + log_debug("Recipe pointer in [current_recipe] has no current_step assigned?") + + if(!current_step.next_step) + log_debug("Recipe pointer in [current_recipe] has no next step.") + #endif + + //Build a list of all possible steps while accounting for exclusive step relations. + //Could be optimized, but keeps the amount of variables in the pointer low. + var/list/return_list = list(current_step.next_step) + for(var/datum/chewin_cooking/recipe_step/step in current_step.optional_step_list) + + if(steps_taken["[step.unique_id]"]) + //Traverse an option chain if one is present. + if(step.flags & CHEWIN_IS_OPTION_CHAIN) + var/datum/chewin_cooking/recipe_step/option_chain_step = step.next_step + while(option_chain_step.unique_id != current_step.unique_id) + if(!steps_taken["[option_chain_step.unique_id]"]) + return_list += option_chain_step + break + option_chain_step = option_chain_step.next_step + continue + + //Reference the global exclusion list to see if we can add this + var/exclude_step = FALSE + if(step.flags & CHEWIN_IS_EXCLUSIVE) + for (var/id in GLOB.chewin_optional_step_exclusion_dictionary["[step.unique_id]"]) + //Reference the global exclusion list to see if any of the taken steps + //Have the current step marked as exclusive. + if(steps_taken["[id]"]) + exclude_step = TRUE + break + + + if(!exclude_step) + return_list += step + #ifdef CHEWIN_DEBUG + else + log_debug("Ignoring step [step.unique_id] due to exclusion.") + #endif + + + #ifdef CHEWIN_DEBUG + log_debug("/datum/chewin_cooking/recipe_pointer/proc/get_possible_steps returned list of length [return_list.len]") + #endif + return return_list + +//Get the classes of all applicable next-steps for a recipe in a bitmask. +/datum/chewin_cooking/recipe_pointer/proc/get_step_flags() + #ifdef CHEWIN_DEBUG + log_debug("Called /datum/chewin_cooking/recipe_pointer/proc/get_step_flags") + if(!current_step) + log_debug("Recipe pointer in [current_recipe] has no current_step assigned?") + else if(!current_step.next_step) + log_debug("Recipe pointer in [current_recipe] has no next step.") + #endif + + //Build a list of all possible steps while accounting for exclusive step relations. + //Could be optimized, but keeps the amount of variables in the pointer low. + var/return_flags = current_step.next_step.class + for(var/datum/chewin_cooking/recipe_step/step in current_step.optional_step_list) + + if(steps_taken["[step.unique_id]"]) + //Traverse an option chain if one is present. + if(step.flags & CHEWIN_IS_OPTION_CHAIN) + var/datum/chewin_cooking/recipe_step/option_chain_step = step.next_step + while(option_chain_step.unique_id != current_step.unique_id) + if(!steps_taken["[option_chain_step.unique_id]"]) + return_flags |= option_chain_step.class + break + option_chain_step = option_chain_step.next_step + continue + + //Reference the global exclusion list to see if we can add this + var/exclude_step = FALSE + if(step.flags & CHEWIN_IS_EXCLUSIVE) + for (var/id in GLOB.chewin_optional_step_exclusion_dictionary["[step.unique_id]"]) + //Reference the global exclusion list to see if any of the taken steps + //Have the current step marked as exclusive. + if(steps_taken["[id]"]) + exclude_step = TRUE + break + if(!exclude_step) + return_flags |= step.class + return return_flags + +/datum/chewin_cooking/recipe_pointer/proc/has_option_by_id(var/id) + if(!GLOB.chewin_step_dictionary["[id]"]) + return FALSE + var/datum/chewin_cooking/recipe_step/active_step = GLOB.chewin_step_dictionary["[id]"] + var/list/possible_steps = get_possible_steps() + if(active_step in possible_steps) + return TRUE + return FALSE + +/datum/chewin_cooking/recipe_pointer/proc/traverse(var/id, var/obj/used_obj) + #ifdef CHEWIN_DEBUG + log_debug("/recipe_pointer/traverse: Traversing pointer from [current_step.unique_id] to [id].") + #endif + if(!GLOB.chewin_step_dictionary["[id]"]) + return FALSE + var/datum/chewin_cooking/recipe_tracker/tracker = parent_ref.resolve() + var/datum/chewin_cooking/recipe_step/active_step = GLOB.chewin_step_dictionary["[id]"] + + var/is_valid_step = FALSE + var/list/possible_steps = get_possible_steps() + for(var/datum/chewin_cooking/recipe_step/possible_step in possible_steps) + if(active_step.unique_id == possible_step.unique_id) + is_valid_step = TRUE + break + + if(!is_valid_step) + #ifdef CHEWIN_DEBUG + log_debug("/recipe_pointer/traverse: step [id] is not valid for recipe [current_recipe.unique_id]") + #endif + return FALSE + + var/step_quality = active_step.calculate_quality(used_obj, tracker) + tracked_quality += step_quality + steps_taken["[id]"] = active_step.get_step_result_text(used_obj, step_quality) + if(active_step.custom_food_buff) + custom_food_buff = active_step.custom_food_buff + if(active_step.finish_text) + var/datum/chewin_cooking/recipe_tracker/parent = parent_ref.resolve() + var/obj/item/resolved_ref = parent.holder_ref.resolve() + resolved_ref.say(active_step.finish_text) // I want runetext womp womp + + if(!(active_step.flags & CHEWIN_IS_OPTIONAL)) + current_step = active_step + + //The recipe has been completed. + if(!current_step.next_step && current_step.unique_id == id) + + tracker.completed_list += src + return TRUE + + return FALSE diff --git a/monkestation/code/modules/brewin_and_chewin/icons/bottle.dmi b/monkestation/code/modules/brewin_and_chewin/icons/bottle.dmi new file mode 100644 index 0000000000000000000000000000000000000000..3a2a818a8ca1c34bd5b11b1b1d5312314287e5f0 GIT binary patch literal 145613 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

9KH%hNj$0Uq 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 ?sp-A*2)e!-}U%3y;Hda!F>K*9OYYwCQQ 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 F{{dG|I^_TW literal 0 HcmV?d00001 diff --git a/monkestation/code/modules/brewin_and_chewin/icons/eris_kitchen.dmi b/monkestation/code/modules/brewin_and_chewin/icons/eris_kitchen.dmi new file mode 100644 index 0000000000000000000000000000000000000000..a4d9b3dd4fe2c557669e1015dc74f2b7ca862819 GIT binary patch literal 1642 zcmV-w29^1VP)C0000^P)t-sz`($T ziIi4WW;8fGyTQpHA187}D#>O+@uNiQ+k?1-Fy6L3V<|NsB$XfFDZ*Bkpc$`yKaB_9`^iy#0_2eo`Eh^5;&r`5fFwryM;w;ZhDainGjE%TBGg33t zGfE(w;*!LYR3K9+y(lv$M~RCwC9|j)$T#HTOe;#vO@**gRmJD$5mcB~RGC^tg2J>k z;#3k;m6TYVomvu~R!W3#AZiIKE6pn=!Y7m~C`cr1OF<5hL0DBjPH!nIxca$(lL!EM ziJWxSYebm<00kOJL_t(|ob6i)d)puk4H7xJUQW^-|NoZ`0XCNaWj^w4^GnycR*D`% z2%bp~ho?h^=vGf`N<2 zbSWf&W})2xuk(8kVX9rVDJPi)KN~zDOOQFCEg^UT2lCYG0xbD5`5ZTIMvBxwsHD>`T-E zSK6Z<`fHHbx#0=pBq88hFk=>~tiM(gJ3<2}AwVr)+%H#GreE*aJ%MtfQW_qm1e9HH ze1v^Y#RM95oKl{0C6r~Gi{c3QeVyy!_)|onVMjQfPJlq`v!1qZW~~CcDI#FrR}Q4T zE3qSdd;R7J*r9T}CHIpw2WoQ&C3b|@*H=s6m?0-{GK*}$pY^Y0ckgfl!T!f2D2GspIDH>A(X%@z{&{Kf;6b(; zLXvdlD$%h+z2(Lef_OiG>B>+L=-44`IU&%~_lv;kGdlvsQq|M{ zO|%Jt7Ip$1{k{Q#XGdVy?|%_oW~}I7Ft}dp?)?(67KLHB8Qkv!Pl3*M+!CeNVc^{p zSOz*ACam-5rb}R2wLz~(z%dv&yP8YjYXWb-51ztsy>oV?rwEjSTKz$R`pUq(<#xZ) z9JpTZ_Z!#54U~U)g{=Jn?>vVac^?KE0iM9%x2nL~yZ(bJ;28u0*9w8QeR>GO`VVfS zA9x4mt4W|{cXf(XPfEdg%;WFwEExfC;uGk|FJ@r9aVbzRm=^(1k+_Jr{WbsYcG8CF zn(g7OGQ>^0O2kbl6m|a$g99~QbKkLRC;ev;SB*hg2nauaN(lU5Zqi2({ANDg&0A-ZLgWa1 zmk{{H_y-)1K68_I*e%7gK>n-7;I_FKt>$049MAEOP5&H+1-%mik%(K%`;HwucI?>k zPoW}jw{y?S+s*t};2Gy-7!i2Rd7b^k o8^ZI>3*Cpn_T$POJ9cb}-A^-pY literal 0 HcmV?d00001 diff --git a/monkestation/code/modules/brewin_and_chewin/icons/grill.dmi b/monkestation/code/modules/brewin_and_chewin/icons/grill.dmi new file mode 100644 index 0000000000000000000000000000000000000000..5b999f1c6a4cb4ddba6181c037d3cb093d58e2b7 GIT binary patch literal 2055 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 literal 0 HcmV?d00001 diff --git a/monkestation/code/modules/brewin_and_chewin/icons/kitchen.dmi b/monkestation/code/modules/brewin_and_chewin/icons/kitchen.dmi new file mode 100644 index 0000000000000000000000000000000000000000..5bbb7a8fd7c46711682946260d9776cab1254d3a GIT binary patch literal 4329 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 literal 0 HcmV?d00001 diff --git a/monkestation/code/modules/brewin_and_chewin/icons/oven.dmi b/monkestation/code/modules/brewin_and_chewin/icons/oven.dmi new file mode 100644 index 0000000000000000000000000000000000000000..115df9f185eb9e76b3c0cd23f091ec48e51db490 GIT binary patch literal 1886 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 + + +MODULE ID: BREWIN_AND_CHEWIN + +### Description: + +This pr essentially works towards a slap craft varient for food items to add more immersion to foods, aswell as an overhaul to fermenting to allow you to better make beers and wines, adds pickling aswell. + + +### Included files that are not contained in this module: + + + +### Credits: + + + +Made by Dwasint diff --git a/monkestation/code/modules/brewin_and_chewin/uniqueness.dm b/monkestation/code/modules/brewin_and_chewin/uniqueness.dm new file mode 100644 index 000000000000..85480c8cd65a --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/uniqueness.dm @@ -0,0 +1,70 @@ +GLOBAL_DATUM_INIT(uniqueness_repository, /repository/unique, new()) + +/repository/unique + var/list/generators + +/repository/unique/New() + ..() + generators = list() + +/repository/unique/proc/Generate() + var/generator_type = args[1] + var/datum/uniqueness_generator/generator = generators[generator_type] + if(!generator) + generator = new generator_type() + generators[generator_type] = generator + var/list/generator_args = args.Copy() // Cannot cut args directly, BYOND complains about it being readonly. + generator_args -= generator_type + return generator.Generate(arglist(generator_args)) + +/datum/uniqueness_generator/proc/Generate() + return + +/datum/uniqueness_generator/id_sequential + var/list/ids_by_key + +/datum/uniqueness_generator/id_sequential/New() + ..() + ids_by_key = list() + +/datum/uniqueness_generator/id_sequential/Generate(var/key, var/default_id = 100) + var/id = ids_by_key[key] + if(id) + id++ + else + id = default_id + + ids_by_key[key] = id + . = id + +/datum/uniqueness_generator/id_random + var/list/ids_by_key + +/datum/uniqueness_generator/id_random/New() + ..() + ids_by_key = list() + +/datum/uniqueness_generator/id_random/Generate(var/key, var/min, var/max) + var/list/ids = ids_by_key[key] + if(!ids) + ids = list() + ids_by_key[key] = ids + + if(ids.len >= (max - min) + 1) + stack_trace("Random ID limit reached for key [key].") + ids.Cut() + + if(ids.len >= 0.6 * ((max-min) + 1)) // if more than 60% of possible ids used + . = list() + for(var/i = min to max) + if(i in ids) + continue + . += i + var/id = pick(.) + ids += id + return id + else + do + . = rand(min, max) + while(. in ids) + ids += . diff --git a/monkestation/code/modules/can_spessmen_feel_pain/components/make_item_slow.dm b/monkestation/code/modules/can_spessmen_feel_pain/components/make_item_slow.dm new file mode 100644 index 000000000000..00f77f233fbb --- /dev/null +++ b/monkestation/code/modules/can_spessmen_feel_pain/components/make_item_slow.dm @@ -0,0 +1,61 @@ +/** + * Simple component that handles making an item slow the person holding it, + * as well as reverting it to its prior state when deleted. + */ +/datum/component/make_item_slow + dupe_mode = COMPONENT_DUPE_UNIQUE_PASSARGS + /// The amount of slowdown applied to the item. + var/applied_slowdown = 1 + /// The slowdown of [parent] before the component was applied. + var/initial_slowdown = 0 + +/datum/component/make_item_slow/Initialize(applied_slowdown = 1) + if(!isitem(parent)) + return COMPONENT_INCOMPATIBLE + + var/obj/item/item_parent = parent + + if(item_parent.item_flags & SLOWS_WHILE_IN_HAND) // it already does it! + return COMPONENT_INCOMPATIBLE + + src.initial_slowdown = item_parent.slowdown + src.applied_slowdown = applied_slowdown + + make_slow() + +/datum/component/make_item_slow/Destroy() + revert_slow() + return ..() + +/** + * If this component is applied to a parent that already has the same typer component, just update the slowness to the new value. + */ +/datum/component/make_item_slow/InheritComponent(datum/component/make_item_slow/passed_component, original, applied_slowdown = 1) + src.applied_slowdown = applied_slowdown + make_slow() + +/** + * Apply our slowness to the attatched item. + */ +/datum/component/make_item_slow/proc/make_slow() + var/obj/item/item_parent = parent + var/mob/living/carbon/mob_holder = item_parent.loc + + item_parent.slowdown = applied_slowdown + item_parent.item_flags |= SLOWS_WHILE_IN_HAND + + if(istype(mob_holder)) + mob_holder.update_equipment_speed_mods() + +/** + * Remove our slowness from the attatched item. + */ +/datum/component/make_item_slow/proc/revert_slow() + var/obj/item/item_parent = parent + var/mob/living/carbon/mob_holder = item_parent.loc + + item_parent.slowdown = initial_slowdown + item_parent.item_flags &= ~SLOWS_WHILE_IN_HAND + + if(istype(mob_holder)) + mob_holder.update_equipment_speed_mods() diff --git a/monkestation/code/modules/can_spessmen_feel_pain/elements/temperature_pack.dm b/monkestation/code/modules/can_spessmen_feel_pain/elements/temperature_pack.dm new file mode 100644 index 000000000000..d88213b3d015 --- /dev/null +++ b/monkestation/code/modules/can_spessmen_feel_pain/elements/temperature_pack.dm @@ -0,0 +1,107 @@ +/** + * Element to make an item into a "temperature pack". + * Temperature packs are hot or cold things that can be pressed against + * limbs experiencing pain to reduce it. + */ +/datum/element/temperature_pack + element_flags = ELEMENT_BESPOKE + argument_hash_start_idx = 2 + /// Amount of pain we restore every tick in the targeted limb. + var/pain_heal_rate = 0 + /// Pain modifier put on the limb we're targeting. + var/pain_modifier_on_limb = 1 + /// Body temperature change per tick. + var/temperature_change = 0 + +/datum/element/temperature_pack/Attach(obj/item/target, pain_heal_rate = 0, pain_modifier_on_limb = 1, temperature_change = 0) + . = ..() + + if(!isitem(target)) + return ELEMENT_INCOMPATIBLE + + src.pain_heal_rate = pain_heal_rate + src.pain_modifier_on_limb = pain_modifier_on_limb + src.temperature_change = temperature_change + + RegisterSignal(target, COMSIG_ITEM_ATTACK_SECONDARY, PROC_REF(try_apply_to_limb)) + RegisterSignal(target, COMSIG_ATOM_EXAMINE, PROC_REF(get_examine_text)) + +/datum/element/temperature_pack/Detach(obj/target) + . = ..() + UnregisterSignal(target, list( + COMSIG_ITEM_ATTACK_SECONDARY, + COMSIG_ATOM_EXAMINE, + )) + +/** + * Edit the examine text to show the item can be used as a temperature pack. + */ +/datum/element/temperature_pack/proc/get_examine_text(obj/item/source, mob/examiner, list/examine_list) + SIGNAL_HANDLER + + if(pain_heal_rate > 0) + examine_list += span_notice("Right-clicking on a hurt limb with this item can help soothe pain.") + +/** + * Try to apply [source] item onto [target] mob from [user]. + */ +/datum/element/temperature_pack/proc/try_apply_to_limb(obj/item/source, atom/target, mob/user, params) + SIGNAL_HANDLER + + . = SECONDARY_ATTACK_CALL_NORMAL // Normal operations + + if(!ishuman(target)) + return + + var/mob/living/carbon/human/target_mob = target + var/targeted_zone = target_mob.zone_selected + + if(!target_mob.pain_controller) + return + if(target_mob.stat == DEAD) + to_chat(user, span_warning("[target_mob] is dead!")) + return + if(!target_mob.get_bodypart_pain(targeted_zone, TRUE)) + to_chat(user, span_warning("That limb is not in pain.")) + return + + . = SECONDARY_ATTACK_CONTINUE_CHAIN // Past this point, no afterattacks + + for(var/datum/status_effect/temperature_pack/pre_existing_effect in target_mob.status_effects) + if(pre_existing_effect.targeted_zone == targeted_zone) + to_chat(user, span_warning("There is already something pressed against that limb.")) + return + if(pre_existing_effect.pressed_item == source) + to_chat(user, span_warning("You are already pressing [source] onto another limb.")) + return + + . = SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN // And past THIS point, no attack + + INVOKE_ASYNC(src, PROC_REF(apply_to_limb), source, target, user, targeted_zone) + +/** + * Actually apply [parent] temperature pack to [targeted_zone] limb on [target] mob from [user]. + */ +/datum/element/temperature_pack/proc/apply_to_limb(obj/item/parent, mob/living/carbon/target, mob/user, targeted_zone) + if(!do_after(user, 0.5 SECONDS, target)) + return + + var/obj/item/bodypart/targeted_bodypart = target.get_bodypart(targeted_zone) + user.visible_message( + span_notice("[user] press [parent] against [target == user ? "their" : "[target]'s" ] [targeted_bodypart.name]."), + span_notice("You press [parent] against [target == user ? "your" : "[target]'s" ] [targeted_bodypart.name].") + ) + + var/selected_effect = temperature_change > 0 \ + ? /datum/status_effect/temperature_pack/heat \ + : /datum/status_effect/temperature_pack/cold + + target.apply_status_effect( + selected_effect, + user, + parent, + targeted_zone, + pain_heal_rate, + pain_modifier_on_limb, + temperature_change, + ) diff --git a/monkestation/code/modules/can_spessmen_feel_pain/icons/hud/screen_full.dmi b/monkestation/code/modules/can_spessmen_feel_pain/icons/hud/screen_full.dmi new file mode 100644 index 0000000000000000000000000000000000000000..bf34384867fce5b6d8b41d1fed3a4bdcef67404a GIT binary patch literal 357905 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

2Nq^gXcb8+?I(~d5AjW0aGuq}se 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­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 UViJNqzv9*b(b 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�$hcm+7qGhWMdPAM)k?hgA<}F7CAQDROJ`q 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

Uax_El6usyULbjvrglD-TB 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 NJYD@<);T3K0RZ2FXqW&1 literal 0 HcmV?d00001 diff --git a/monkestation/code/modules/can_spessmen_feel_pain/icons/mob/inhands/pain_items_rhand.dmi b/monkestation/code/modules/can_spessmen_feel_pain/icons/mob/inhands/pain_items_rhand.dmi new file mode 100644 index 0000000000000000000000000000000000000000..fece08e148179fb9a293e7508397f87cd0263a92 GIT binary patch literal 691 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGoEma{AB`&GO$wiq3C7Jno3=9=> zN>A2ZmQsHJVvZ>L$=JiUHNAAfG!p-~KnJ zh1U5$|GfWZ@*LhXDKDATk7#Jby z9FOMA-g@oQ_rKR7Lbv25D#VrD6@!D3*x3-C{{rXH{t7Njvll*^6 zGuCd7`TtJNpl@-1v!=}{))D-klq0I^z~Q(oQ)p?( z#n~r4v;R&k=2T<}^g3zc8+lA+7iV|Jm)iZSpDsVv-E%0P7R|30 zeZ8mn`JU^Bj4)3D>HnLLZ)U7^sQxuMutD8htD!jW+r9AUt~tf#@Bf~)EMF~Jteu@3 zw9b=t#a;Pd?_&9Qams+l)G1Zi$>Y`1znA0!HvO-A zTVl0WmaqML)W;%=`RDVMKK*-<^|2s1^LlCVWs{^H!KG7V`rT&*8GFoQ^v<{Ww4>VY z!RFUrqm=sdwO2A!-xff2AwzJ%=P)2!qn8%mzS5};o*pgh_bS>qN1Y4#>S+iq?($VoSdBAk(}!Q0004WQchCV=-0C=2JR&a84_w-Y6@%7{?OD!tS%+FJ>RWQ*r;NmRL zOex6#a*U0*I5Sc+(=$pSoZ^zil2jm5sW>A)IXfvQF)ur{M2U+tC9|j)q?d~`ttc@! z6~s2=QdV&Fa{-$U03|vd2XAS{9smFVNl8ROR7i>Kl(A~VKn#XuI6P%Y@&;Byz1ws* zC6EWm3uN-pP6>qzp<}5{#x8z=l7#b~A-8nv;)klVRJwo*g)D{qcsamzyMPdyA!KAj-;<+6|I4851o&$rz2$8?{Ul|iRz=3cs>&~;yKrg(1G zXjPMe#gxWT2{fyz7I?h1@IV^_wZJ?LggnDS*zg9?!kk*BT42_{Fg)(6FlR2VE6~E& z>N^k~v=BRr7MPb>@XocWz$?TD!Z|#_9osJ N002ovPDHLkV1kHN0zv=) literal 0 HcmV?d00001 diff --git a/monkestation/code/modules/can_spessmen_feel_pain/icons/obj/chemical.dmi b/monkestation/code/modules/can_spessmen_feel_pain/icons/obj/chemical.dmi new file mode 100644 index 0000000000000000000000000000000000000000..e2efb6e79d95b41e0931614d95d26b60b4d19f10 GIT binary patch literal 414 zcmV;P0b%}$P)+9>4 znVo!qgwxvFXl-%n?(YBp|FpWi#b6MRIU(DlAf#3!wJ!<(%>Uu4CG6UknoSzFNe%y* z|NmzHKR`*yV-o)}|Nj7))pHlJEeCHAebxW~00DGTPE!Ct=GbNc0041%R9JLGWpiV4 zX>fFDZ*Bkpc$`yKaB_9`^iy#0_2eo`Eh^5;&r`5fFwryM;w;ZhDainGjE%TBGg33t zGfE(w;*!LYR3KBSATuW?J~=Tjv$!O+NQsLxC9|j)C~nBbnO2mTn+jnoE4cc(fQ<(L zNgW+@>k0#$0001iNklUfMf;*m8UO54jBO>^zJEDDN()wPJ9H;dY{wcDG-4AMa2FCFvV$Pyhe`07*qo IM6N<$f`=`zqyPW_ literal 0 HcmV?d00001 diff --git a/monkestation/code/modules/can_spessmen_feel_pain/icons/obj/pain_items.dmi b/monkestation/code/modules/can_spessmen_feel_pain/icons/obj/pain_items.dmi new file mode 100644 index 0000000000000000000000000000000000000000..2eb7cbfdcf76dc0d3ba9d838a8e0f71969a6f729 GIT binary patch literal 2159 zcmaJ@3oz7c8~-oabqh)BTDEc|6|pM0u4|}>XxU;Fu~wEOHlan5TL`7xIc$iqmR#2E zAvxN#Lb*lO$~6`n*8SV_o%!Z`XXbQfp7(v;ncp+>%=4Rhe!n;7g7ul5!g9g@0PM81 zFty`l!XHNv%)46*uF`p_IoRGY!1VepH-9g`054x00N^td9vKNo9+xodZ9fbivMRnb zshW{5B^?}<^xSKAwX#xV>tN7+XR_I|j_vs^H@nw8y+x5FKHT{Is8ivDMZdA{*H6ew z_^E2cF^Ug9OIq%VASlW8ir3nn=YQPu+nq!m=D9%$BgBV({TGMIS0^yL=Z0PsA~!26 z&m)t#52QwbS6ADlWL~^Jaqsd{Ay5*q3QVBi-gQ-_-WTxpw)tBaC z<+s2iyQ17l%IdsnAQ($iBYS-2Y}Qv_J5QN5s)DO)w_*!s{027GLlRtm^6YWA#D6Ejyu+nE)2JwZ@saOx^)gDd*q)=y99u`dr#TPdfwPUefQ1L@3WK8a`nn3xDc0ZPz53fy!A zMk|0fS3wV3{tGsZ;OeQ%cCE!+mGuznT zT<0I1lf?ViWuAn?`EzfszIWGrE{NKYk82%hI-F(gO-AjUVB|o6o|)UPhj6L%>%18A zKiz>7GUYA>@8t#JU;vPwo(>Rd<~gf+;}a9f)&usqgyIPg z0GC&_Y?4`HJFa%{Gu%3JmG9wZW6)4!9gEU z0QSQl1rXztA1fJE{h9>LX6DT!p=2CrZ6rQwXnA?LDT^D@^qGRZe-)B{e9vaAMm&p0 zAAr!3Yh7H_G|rQ7X~Z)vxUuMj&`Z&%7I|0KQbJa zJQzav6<91*Uw^-sNQY{&#hbKtcdc9w^kT97$jW-2%B;6jrK9Lnz(Dfqy-LSMs3@2% zBSJAkZk}x)`=w!R5lA>ivMYAQVy9`OQ1v%H2q|n}68&2>F4j)J*#2FmmkR8w-ZpFi z8u3!hz+1W~G(*wJZs%c&EjP=c}&wFUE_l>x73m!r+JJ_7nf#LU?bKl-Z$xyTd zkwXeENGiYu)ij-m-6CopPXpYz*Fcz5;+29}2vG7#b-3})EmsznEF3Bz3aClvFTe>k7f0;vE%_1c&NX%P-*GG@d0G{m8losdG8aU^N0eVr*_X~dZ-~MY;<&%S%?P}lFWf!O-_@_K1f&6jsqd2 z&hrCS2aV7tXdQQ@6+yIs+1@%FU!|2gQ&%gjmq|Bg@O^0vTKG7PK9asMGW(tTp1HM> z0%r?6DGHxLlD0P%bAJ$>AuXcWO*l}7?>5+A17Eo6hq-qwveKG?Bq%mH)&FQGqDT4` zoD_5o;>zyz&JK#>_^m(i)hnQ%^GV1gJ0ai!;RP3Ip+#YQUd<3CNnr8{q;tVBM1x=k z>uyyX;&$B^w@?OXbZX$iEFhjT@5>+ar`G*c1b+%VDx``Z|1NF;9$m2@&0+WQ@Dww zR!eW<*98t_bYVToBBES?SAqWrVv%Me6)SBkl1(P8puJ5u=8yhQvisC%JV5uf$fSRW zmoS1>QgPQcnFQ6(HznTcu6Zwgk aO&Ct8;HA0n%p%?o0 literal 0 HcmV?d00001 diff --git a/monkestation/code/modules/can_spessmen_feel_pain/icons/obj/syringe.dmi b/monkestation/code/modules/can_spessmen_feel_pain/icons/obj/syringe.dmi new file mode 100644 index 0000000000000000000000000000000000000000..94b2da421b0027da976af0482d989398aa6bd2fe GIT binary patch literal 714 zcmV;*0yX`KP)0GyeE;(B>F!?u&q1L1xE@28BHvj6#5I*Rc^c@DA8q44 z`{*ZExG?zaarySr|GpzgohSI{MZmzoR<7fS$nUn@^>e%D2qd2E00001bW%=J06^y0 zW&i*HntD`NbVOxyV{&P5bZKvH004NLQ&wh>^GcP+cCnvQizPKbaw;(l7iHkEOv#1y- zX~@NyR+N~V3Sr~XVnBi(5|k1)HmRtzBsCt%LBzNpnoIbl_+~YMjqaptnE0m`Z(0Q?lvh zRZ6q#n_HT97A#tv&)Z*S*&Pu2ciD>WA7+n7eO{2~Wb>!zJj|clz9;axzyGD{?XO;5 z#eVyU_U+vs=;r(%IG?*fZ=bhF>PH#G{}urN0001hf5M4;Kd7oo^?%N#^F#Fd-v8^mrXNP~f6it9j|}ks-!zTt w|D22dADz(pKW~BR|D22dKNR>s001cb0z) 1 && existing_key >= amount) + return FALSE + if(amount < 1 && existing_key <= amount) + return FALSE + if(amount == 1) + return FALSE + + LAZYSET(pain_mods, key, amount) + refresh_pain_attributes() + return update_pain_modifier() + +/** + * Remove a pain modifier and update our overall modifier. + * + * key - key of the removed modifier + * + * returns TRUE if our pain mod actually changed + */ +/datum/pain/proc/unset_pain_modifier(key) + if(isnull(LAZYACCESS(pain_mods, key))) + return FALSE + + LAZYREMOVE(pain_mods, key) + return update_pain_modifier() + +/** + * Update our overall pain modifier. + * The pain modifier is multiplicative based on all the pain modifiers we have. + * + * returns TRUE if our pain modifier was changed after update, FALSE if it remained the same + */ +/datum/pain/proc/update_pain_modifier() + var/old_pain_mod = pain_modifier + pain_modifier = 1 + for(var/mod in pain_mods) + pain_modifier *= pain_mods[mod] + return old_pain_mod != pain_modifier + +/** + * Adjust the amount of pain in all [def_zones] provided by [amount] (multiplied by the [pain_modifier] if positive). + * + * def_zones - list of all zones being adjusted. Can be passed a non-list. + * amount - amount of pain being applied to all items in [def_zones]. If posiitve, multiplied by [pain_modifier]. + */ +/datum/pain/proc/adjust_bodypart_pain(list/def_zones, amount = 0, dam_type = BRUTE) + SHOULD_NOT_SLEEP(TRUE) // This needs to be asyncronously called in a lot of places, it should already check that this doesn't sleep but just in case. + + if(!islist(def_zones)) + def_zones = list(def_zones) + + // No pain at all + if(amount == 0) + return + if(amount > 0 && (parent.status_flags & GODMODE)) + return + + for(var/zone in shuffle(def_zones)) + var/adjusted_amount = round(amount, 0.01) + var/obj/item/bodypart/adjusted_bodypart = body_zones[check_zone(zone)] + if(isnull(adjusted_bodypart)) // it's valid - for if we're passed a zone we don't have + continue + + // Pain is negative (healing) + if(adjusted_amount < 0) + // Pain is negative and we're at min pain + if(adjusted_bodypart.pain <= adjusted_bodypart.min_pain) + continue + // Pain is negative and we're above soft cap, incraese the healing amount greatly + if(adjusted_bodypart.pain >= adjusted_bodypart.soft_max_pain) + adjusted_amount *= 3 + + // Pain is positive (dealing) + else + // Adjust incoming dealt pain by modifiers + adjusted_amount = round(adjusted_amount * pain_modifier * adjusted_bodypart.bodypart_pain_modifier, 0.01) + // Pain modifiers results in us taking 0 pain + // (If someone adds a negative pain mod and causes "inverse pain" (which you shouldn't) this needs to go) + if(adjusted_amount <= 0) + continue + + // Officially recieving pain at this point + adjusted_bodypart.last_received_pain_type = dam_type + +#ifdef TESTING + if(print_debug_messages) + testing("[amount] was adjusted down to [adjusted_amount]. (Modifiers: [pain_modifier], [adjusted_bodypart.bodypart_pain_modifier])") +#endif + + // Actually do the pain addition / subtraction here + adjusted_bodypart.pain = max(adjusted_bodypart.pain + adjusted_amount, adjusted_bodypart.min_pain) + + if(adjusted_amount > 0) + INVOKE_ASYNC(src, PROC_REF(on_pain_gain), adjusted_bodypart, amount, dam_type) + else if(adjusted_amount <= -1.5 || COOLDOWN_FINISHED(src, time_since_last_pain_loss)) + INVOKE_ASYNC(src, PROC_REF(on_pain_loss), adjusted_bodypart, amount, dam_type) + +#ifdef TESTING + if(print_debug_messages && (print_debug_decay || abs(adjusted_amount) > 1)) + testing("PAIN DEBUG: [parent] recived [adjusted_amount] pain to [adjusted_bodypart]. Part pain: [adjusted_bodypart.pain]") +#endif + + return TRUE + +/** + * Set the minimum amount of pain in all [def_zones] by [amount]. + * + * def_zones - list of all zones being adjusted. Can be passed a non-list. + * amount - amount of pain being all items in [def_zones] are set to. + */ +/datum/pain/proc/adjust_bodypart_min_pain(list/def_zones, amount = 0) + if(!amount) + return + + if(!islist(def_zones)) + def_zones = list(def_zones) + + for(var/zone in def_zones) + var/obj/item/bodypart/adjusted_bodypart = body_zones[zone] + if(isnull(adjusted_bodypart)) // it's valid - for if we're passed a zone we don't have + continue + + adjusted_bodypart.min_pain = max(adjusted_bodypart.min_pain + amount, 0) // Negative min pain is a neat idea ("banking pain") but not today + adjusted_bodypart.pain = max(adjusted_bodypart.pain, adjusted_bodypart.min_pain) + + return TRUE + +/** + * Called when pain is gained to apply side effects. + * Calls [affected_part]'s [on_gain_pain_effects] proc with arguments [amount]. + * Sends signal [COMSIG_CARBON_PAIN_GAINED] with arguments [mob/living/carbon/parent, obj/item/bodypart/affected_part, amount]. + * + * affected_part - the bodypart that gained the pain + * amount - amount of pain that was gained, post-[pain_modifier] applied + */ +/datum/pain/proc/on_pain_gain(obj/item/bodypart/affected_part, amount, type) + affected_part.on_gain_pain_effects(amount) + refresh_pain_attributes() + SEND_SIGNAL(parent, COMSIG_CARBON_PAIN_GAINED, affected_part, amount, type) + COOLDOWN_START(src, time_since_last_pain_loss, 30 SECONDS) + + if(amount > 12 && prob(25)) + do_pain_emote("scream", 5 SECONDS) + else if(amount > 6 && prob(10)) + do_pain_emote() + +/** + * Called when pain is lost, if the mob did not lose pain in the last 60 seconds. + * Calls [affected_part]'s [on_lose_pain_effects] proc with arguments [amount]. + * Sends signal [COMSIG_CARBON_PAIN_LOST] with arguments [mob/living/carbon/parent, obj/item/bodypart/affected_part, amount]. + * + * affected_part - the bodypart that lost pain + * amount - amount of pain that was lost + */ +/datum/pain/proc/on_pain_loss(obj/item/bodypart/affected_part, amount, type) + affected_part.on_lose_pain_effects(amount) + refresh_pain_attributes() + SEND_SIGNAL(parent, COMSIG_CARBON_PAIN_LOST, affected_part, amount, type) + +/** + * Hook into [/mob/living/proc/apply_damage] proc via signal and apply pain based on how much damage was gained. + * + * source - source of the signal / the mob being damaged / parent + * damage - the amount of damage sustained + * damagetype - the type of damage sustained + * def_zone - the limb being targeted with damage (either a bodypart zone or an obj/item/bodypart) + */ +/datum/pain/proc/add_damage_pain( + mob/living/carbon/source, + damage, + damagetype, + def_zone, + blocked = 0, + wound_bonus = 0, + bare_wound_bonus = 0, + sharpness = NONE, + attack_direction, + obj/item/attacking_item, +) + + SIGNAL_HANDLER + + if(damage <= 0 || (parent.status_flags & GODMODE)) + return + if(isbodypart(def_zone)) + var/obj/item/bodypart/targeted_part = def_zone + def_zone = targeted_part.body_zone + else + def_zone = check_zone(def_zone) + + // By default pain is calculated based on damage and wounding + // Attacks with a wound bonus add additional pain (usually, like 2-5) + // (Note that if they also succeed in applying a wound, more pain comes from that) + // Also, sharp attacks apply a smidge extra pain + var/pain = (2 * damage) + (0.1 * max(wound_bonus + bare_wound_bonus, 1)) * (sharpness ? 1.2 : 1) + switch(damagetype) + // Brute pain is dealt to the target zone + // pain is just divided by a random number, for variance + if(BRUTE) + pain *= (rand(60, 80) / 100) + + // Burn pain is dealt to the target zone + // pain is lower for weaker burns, but scales up for more damaging burns + if(BURN) + switch(damage) + if(1 to 10) + pain *= 0.25 + if(10 to 20) + pain *= 0.5 + if(20 to INFINITY) + pain *= 0.75 + + // Toxins pain is dealt to the chest (stomach and liver) + // Pain is determined by the liver's tox tolerance, liver damage, and stomach damage + // having a high amount of toxloss also adds additional pain + // + // Note: 99% of sources of toxdamage is done through adjusttoxloss, and as such doesn't go through this + if(TOX) + if(HAS_TRAIT(parent, TRAIT_TOXINLOVER) || HAS_TRAIT(parent, TRAIT_TOXIMMUNE)) + return + def_zone = BODY_ZONE_CHEST + var/obj/item/organ/internal/liver/our_liver = source.get_organ_slot(ORGAN_SLOT_LIVER) + var/obj/item/organ/internal/stomach/our_stomach = source.get_organ_slot(ORGAN_SLOT_STOMACH) + if(our_liver) + pain = damage / our_liver.toxTolerance + switch(our_liver.damage) + if(20 to 50) + pain += 1 + if(50 to 80) + pain += 2 + if(80 to INFINITY) + pain += 3 + else if(HAS_TRAIT(parent, TRAIT_LIVERLESS_METABOLISM)) + pain = 1 + else + pain = damage * 2 + + if(our_stomach) + switch(our_stomach.damage) + if(20 to 50) + pain += 1 + if(50 to 80) + pain += 2 + if(80 to INFINITY) + pain += 3 + else if(HAS_TRAIT(parent, TRAIT_NOHUNGER)) + pain = 1 + else + pain += 3 + + switch(source.getToxLoss()) + if(33 to 66) + pain += 1 + if(66 to INFINITY) + pain += 3 + + // Oxy pain is dealt to the head and chest + // pain is increasd based on lung damage and overall oxyloss + // + // Note: 99% of sources of oxydamage is done through adjustoxyloss, and as such doesn't go through this + if(OXY) + if(HAS_TRAIT(parent, TRAIT_NOBREATH)) + return + def_zone = list(BODY_ZONE_HEAD, BODY_ZONE_CHEST) + var/obj/item/organ/internal/lungs/our_lungs = source.get_organ_slot(ORGAN_SLOT_LUNGS) + if(our_lungs) + switch(our_lungs.damage) + if(20 to 50) + pain += 1 + if(50 to 80) + pain += 2 + if(80 to INFINITY) + pain += 3 + else + pain += 5 + + switch(parent.getOxyLoss()) + if(0 to 20) + pain = 0 + if(20 to 50) + pain += 1 + if(50 to INFINITY) + pain += 3 + + // No pain from stamina loss + // In the future stamina can probably cause very sharp pain and replace stamcrit, + // but the system will require much finer tuning before then + if(STAMINA) + return + + // Head pain causes brain damage, so brain damage causes no pain (to prevent death spirals) + if(BRAIN) + return + + if(!def_zone || !pain) +#ifdef TESTING + if(print_debug_messages) + testing("PAIN DEBUG: [parent] recieved damage but no pain. ([def_zone ? "Nullified to [pain]" : "No def zone"])") +#endif + return + +#ifdef TESTING + if(print_debug_messages) + testing("PAIN DEBUG: [parent] is recieving [pain] of type [damagetype] to the [parse_zone(def_zone)]. (Original amount: [damage])") +#endif + + adjust_bodypart_pain(def_zone, pain, damagetype) + +/** + * Add pain in from a received wound based on severity. + * + * source - source of the signal / the mob being wounded / parent + * applied_wound - the wound being applied + * wounded_limb - the limb being wounded + */ +/datum/pain/proc/add_wound_pain(mob/living/carbon/source, datum/wound/applied_wound, obj/item/bodypart/wounded_limb) + SIGNAL_HANDLER + +#ifdef TESTING + if(print_debug_messages) + testing("PAIN DEBUG: [parent] is recieving a wound of level [applied_wound.severity] to the [parse_zone(wounded_limb.body_zone)].") +#endif + + adjust_bodypart_min_pain(wounded_limb.body_zone, applied_wound.severity * 5) + adjust_bodypart_pain(wounded_limb.body_zone, applied_wound.severity * 7.5) + +/** + * Remove pain from a healed wound. + * + * source - source of the signal / the mob being wounded / parent + * removed_wound - the wound being healed + * wounded_limb - the limb that was wounded + */ +/datum/pain/proc/remove_wound_pain(mob/living/carbon/source, datum/wound/removed_wound, obj/item/bodypart/wounded_limb) + SIGNAL_HANDLER + + adjust_bodypart_min_pain(wounded_limb.body_zone, -removed_wound.severity * 5) + adjust_bodypart_pain(wounded_limb.body_zone, -removed_wound.severity * 5) + +/** + * The process proc for pain. + * + * Applies and removes pain modifiers as they come and go. + * Causes various side effects based on pain. + * + * Triggers once every 2 seconds. + * Handles natural pain decay, which happens once every 5 processes (every 10 seconds) + */ +/datum/pain/process(seconds_per_tick) + if(!HAS_TRAIT(parent, TRAIT_ANALGESIA)) + var/has_pain = FALSE + var/just_cant_feel_anything = !parent.can_feel_pain() + var/no_recent_pain = COOLDOWN_FINISHED(src, time_since_last_pain_loss) + for(var/part in shuffle(body_zones)) + var/obj/item/bodypart/checked_bodypart = body_zones[part] + if(checked_bodypart.pain <= 0) + continue + has_pain = TRUE + if(just_cant_feel_anything || !COOLDOWN_FINISHED(src, time_since_last_pain_message)) + continue + // 1% chance per 8 pain being experienced to get a feedback message every second + if(!SPT_PROB(checked_bodypart.get_modified_pain() / 8, seconds_per_tick)) + continue + if(checked_bodypart.pain_feedback(seconds_per_tick, no_recent_pain)) + COOLDOWN_START(src, time_since_last_pain_message, 12 SECONDS) + + if(!has_pain) + // no-op if none of our bodyparts are in pain + return + + var/curr_pain = get_average_pain() + switch(curr_pain) + if(-INFINITY to 10) + shock_buildup = max(shock_buildup - 3, -30) // staying out of pain for a while gives you a small resiliency to shock (~1 minute) + + if(10 to 25) + shock_buildup = max(shock_buildup - 1, -30) + + if(25 to 40) + if(SPT_PROB(2, seconds_per_tick)) + do_pain_message(span_danger(pick("Everything aches.", "Everything feels sore."))) + + if(40 to 70) + if(!HAS_TRAIT(parent, TRAIT_NO_SHOCK_BUILDUP)) + shock_buildup += 1 + if(SPT_PROB(2, seconds_per_tick)) + do_pain_message(span_bolddanger(pick("Everything hurts.", "Everything feels very sore.", "It hurts."))) + + if(70 to INFINITY) + if(!HAS_TRAIT(parent, TRAIT_NO_SHOCK_BUILDUP)) + shock_buildup += 3 + if(SPT_PROB(2, seconds_per_tick)) + do_pain_message(span_userdanger(pick("Stop the pain!", "Everything hurts!"))) + + // If shock buildup exceeds our health + 30 ticks then well, we enter shock + // This means at 100 health you can be in moderate pain for 130 ticks / 260 seconds / ~4 minutes before falling into shock + if(shock_buildup >= (parent.health + 30) \ + && curr_pain >= 50 \ + && !HAS_TRAIT(parent, TRAIT_NO_SHOCK_BUILDUP) \ + && !is_undergoing_shock() \ + && !parent.undergoing_cardiac_arrest() \ + ) + parent.infect_disease_predefined(DISEASE_SHOCK, TRUE, "[ROUND_TIME()] Inflicted with Pain Shock [key_name(parent)]") + to_chat(parent, span_userdanger("You feel your body start to shut down!")) + if(parent.stat == CONSCIOUS && !parent.incapacitated(IGNORE_RESTRAINTS|IGNORE_GRAB) && !HAS_TRAIT(parent, TRAIT_NO_PAIN_EFFECTS)) + parent.visible_message(span_danger("[parent] grabs at their chest and stares into the distance as they go into shock!"), ignored_mobs = parent) + shock_buildup = -200 // requires another 200 ticks / 400 seconds / ~6 minutes of pain to go into shock again + return + + var/standard_effect_prob = (curr_pain * 0.05) - 0.75 // starts at 15, caps at 4.5 + var/rare_effect_prob = (curr_pain * 0.04) - 1.5 // starts at 40 + var/very_rare_effect_prob = (curr_pain * 0.03) - 2.25 // starts at 70 + + if(standard_effect_prob > 0) + if(!just_cant_feel_anything) + if(SPT_PROB(standard_effect_prob, seconds_per_tick)) + parent.adjust_stutter_up_to(10 SECONDS * pain_modifier, 30 SECONDS) + if(SPT_PROB(standard_effect_prob, seconds_per_tick)) + parent.adjust_jitter_up_to(20 SECONDS * pain_modifier, 60 SECONDS) + if(SPT_PROB(standard_effect_prob, seconds_per_tick)) + parent.adjust_dizzy_up_to(10 SECONDS * pain_modifier, 30 SECONDS) + if(curr_pain >= 70) + parent.adjust_confusion_up_to(8 SECONDS * pain_modifier, 24 SECONDS) + if(SPT_PROB(standard_effect_prob * 1.2, seconds_per_tick) && parent.stamina?.loss <= 80) + var/stam_taken = round((0.2 * curr_pain + 8) * pain_modifier) // 10 = 10, 100 = 28, good enough + if(just_cant_feel_anything) + parent.apply_damage(stam_taken * 1.2, STAMINA) + // First we apply damage, if that succeeds -> + // Check how much damage, if above a threshold -> + // Run a pain emote, if the pain emote succeeds as well -> + else if(parent.apply_damage(stam_taken, STAMINA) && stam_taken >= 15 && do_pain_emote(pick("wince", "gasp"))) + parent.visible_message(span_warning("[parent] doubles over in pain!")) + + if(rare_effect_prob > 0) + if(SPT_PROB(rare_effect_prob * 2, seconds_per_tick)) + var/list/options = list("wince", "whimper") + if(curr_pain >= 70) + options.Add("cry", "scream") + do_pain_emote(pick(options), 5 SECONDS) + if(SPT_PROB(rare_effect_prob, seconds_per_tick) && parent.body_position != LYING_DOWN && !just_cant_feel_anything) + parent.Knockdown(2 SECONDS * pain_modifier) + parent.visible_message(span_warning("[parent] collapses from pain!")) + if(SPT_PROB(rare_effect_prob, seconds_per_tick)) + var/obj/item/held_item = parent.get_active_held_item() + var/obj/item/bodypart/active_hand = parent.get_active_hand() + if(held_item && active_hand && parent.dropItemToGround(held_item)) + if(active_hand.bodytype & BODYTYPE_ROBOTIC) + to_chat(parent, span_danger("Your hand malfunctions, causing you to drop [held_item]!")) + parent.visible_message(span_warning("[parent]'s hand malfunctions, causing them to drop [held_item]!"), ignored_mobs = parent) + do_sparks(number = 1, source = parent) + else if(just_cant_feel_anything) + to_chat(parent, span_danger("Your hand spams and you drop [held_item]!")) + else + to_chat(parent, span_danger("Your fumble though the pain and drop [held_item]!")) + parent.visible_message(span_warning("[parent] fumbles around and drops [held_item]!"), ignored_mobs = parent) + do_pain_emote("gasp") + + if(very_rare_effect_prob > 0) + if(SPT_PROB(very_rare_effect_prob, seconds_per_tick)) + parent.vomit(50) + if(SPT_PROB(very_rare_effect_prob, seconds_per_tick) && !just_cant_feel_anything) + parent.adjust_confusion_up_to(8 SECONDS, 24 SECONDS) + + // Finally, handle pain decay over time + if(HAS_TRAIT(parent, TRAIT_STASIS) || parent.on_fire || parent.stat == DEAD) + return + + // Decay every 3 ticks / 6 seconds, or 1 ticks / 2 seconds if "sleeping" + var/every_x_ticks = HAS_TRAIT(parent, TRAIT_KNOCKEDOUT) ? 1 : 3 + + natural_decay_counter++ + if(natural_decay_counter % every_x_ticks != 0) + return + + natural_decay_counter = 0 + if(COOLDOWN_FINISHED(src, time_since_last_pain_loss) && parent.stat == CONSCIOUS) + // 0.16 per 10 seconds, ~0.1 per minute, 10 minutes for ~1 decay + natural_pain_decay = max(natural_pain_decay - 0.12, -4) + else + natural_pain_decay = base_pain_decay + + // modify our pain decay by our pain modifier (ex. 0.5 pain modifier = 2x natural pain decay, capped at ~3x) + var/pain_modified_decay = round(natural_pain_decay * (1 / max(pain_modifier, 0.33)), 0.01) + adjust_bodypart_pain(BODY_ZONES_ALL, pain_modified_decay) + +/** + * Whenever we buckle to something or lie down, get a pain bodifier. + */ +/datum/pain/proc/check_lying_pain_modifier(datum/source, new_buckled) + SIGNAL_HANDLER + + var/buckled_lying_modifier = 1 + if(parent.body_position == LYING_DOWN) + buckled_lying_modifier -= 0.1 + + if(new_buckled) + buckled_lying_modifier -= 0.1 + + if(buckled_lying_modifier < 1) + set_pain_modifier(PAIN_MOD_LYING, buckled_lying_modifier) + else + unset_pain_modifier(PAIN_MOD_LYING) + +/** + * While actively burning, cause pain + */ +/datum/pain/proc/on_burn_tick(datum/source) + SIGNAL_HANDLER + + var/mob/living/carbon/human/human_parent = parent + if(human_parent.get_thermal_protection() >= FIRE_SUIT_MAX_TEMP_PROTECT) + return + + // The more firestacks, the more pain we apply per burn tick, up to 2 per tick per bodypart. + // We can be liberal with this because when they're extinguished most of it will go away. + parent.apply_status_effect(/datum/status_effect/pain_from_fire, clamp(parent.fire_stacks * 0.2, 0, 2)) + +/** + * Apply or remove pain various modifiers from pain (mood, action speed, movement speed) based on the [average_pain]. + */ +/datum/pain/proc/refresh_pain_attributes(...) + SIGNAL_HANDLER + + if(!parent.can_feel_pain()) + clear_pain_attributes() + return + + switch(get_average_pain()) + if(-INFINITY to 20) + clear_pain_attributes() + if(20 to 40) + parent.mob_surgery_speed_mod = 0.9 + parent.add_movespeed_modifier(/datum/movespeed_modifier/pain/light) + parent.add_actionspeed_modifier(/datum/actionspeed_modifier/pain/light) + parent.add_mood_event("pain", /datum/mood_event/light_pain) + if(40 to 60) + parent.mob_surgery_speed_mod = 0.75 + parent.add_movespeed_modifier(/datum/movespeed_modifier/pain/medium) + parent.add_actionspeed_modifier(/datum/actionspeed_modifier/pain/medium) + parent.add_mood_event("pain", /datum/mood_event/med_pain) + if(60 to 80) + parent.mob_surgery_speed_mod = 0.6 + parent.add_movespeed_modifier(/datum/movespeed_modifier/pain/heavy) + parent.add_actionspeed_modifier(/datum/actionspeed_modifier/pain/heavy) + parent.add_mood_event("pain", /datum/mood_event/heavy_pain) + if(80 to INFINITY) + parent.mob_surgery_speed_mod = 0.5 + parent.add_movespeed_modifier(/datum/movespeed_modifier/pain/crippling) + parent.add_actionspeed_modifier(/datum/actionspeed_modifier/pain/crippling) + parent.add_mood_event("pain", /datum/mood_event/crippling_pain) + +/** + * Clears all pain related attributes + */ +/datum/pain/proc/clear_pain_attributes() + parent.mob_surgery_speed_mod = initial(parent.mob_surgery_speed_mod) + parent.remove_movespeed_modifier(MOVESPEED_ID_PAIN) + parent.remove_actionspeed_modifier(ACTIONSPEED_ID_PAIN) + parent.clear_mood_event("pain") + +/** + * Run a pain related emote, if a few checks are successful. + * + * emote - string, what emote we're running + * cooldown - what cooldown to set our emote cooldown to + * + * returns TRUE if successful. + */ +/datum/pain/proc/do_pain_emote(emote = pick(PAIN_EMOTES), cooldown = 3 SECONDS) + ASSERT(istext(emote)) + if(!parent.can_feel_pain()) + return FALSE + if(cooldown && !COOLDOWN_FINISHED(src, time_since_last_pain_message)) + return FALSE + if(parent.stat >= UNCONSCIOUS || parent.incapacitated(IGNORE_RESTRAINTS|IGNORE_GRAB)) + return FALSE + + parent.emote(emote) + COOLDOWN_START(src, time_since_last_pain_message, cooldown) + return TRUE + +/** + * Run a pain related message, if a few checks are successful. + * + * message - string, what message we're sending + * painless_message - optional string, what message we're sending if the mob doesn't "feel" pain + * cooldown - what cooldown to set our message cooldown to + * + * returns TRUE if successful. + * Returns FALSE if we failed to send a message, even if painless_message was provided and sent. + */ +/datum/pain/proc/do_pain_message(message, painless_message, cooldown = 0 SECONDS) + ASSERT(istext(message)) + + if(parent.client?.prefs) + if(parent.client.prefs.read_preference(/datum/preference/toggle/pain_messages)) + return FALSE + + if(!parent.can_feel_pain()) + if(painless_message) + to_chat(parent, painless_message) + return FALSE + if(parent.stat >= UNCONSCIOUS) + return FALSE + if(cooldown && !COOLDOWN_FINISHED(src, time_since_last_pain_message)) + return FALSE + + to_chat(parent, message) + COOLDOWN_START(src, time_since_last_pain_message, cooldown) + return TRUE + +/** + * Get the average pain of all bodyparts as a percent of the total pain. + */ +/datum/pain/proc/get_average_pain() + var/max_total_pain = 0 + var/total_pain = 0 + for(var/zone in body_zones) + var/obj/item/bodypart/adjusted_bodypart = body_zones[zone] + total_pain += adjusted_bodypart.pain + max_total_pain += adjusted_bodypart.soft_max_pain + + return 100 * total_pain / max_total_pain + +/** + * Returns a disease datum (Truthy value) if we are undergoing shock. + */ +/datum/pain/proc/is_undergoing_shock() + return locate(/datum/disease/advanced/premade/shock) in parent.diseases + +/** + * Remove all pain, pain paralysis, side effects, etc. from our mob after we're fully healed by something (like an adminheal) + */ +/datum/pain/proc/remove_all_pain(datum/source, heal_flags) + SIGNAL_HANDLER + + // Ideally pain would have its own heal flag but we live in a society + if(!(heal_flags & (HEAL_ADMIN|HEAL_WOUNDS|HEAL_STATUS))) + return + + for(var/zone in body_zones) + var/obj/item/bodypart/healed_bodypart = body_zones[zone] + adjust_bodypart_min_pain(zone, -INFINITY) + adjust_bodypart_pain(zone, -INFINITY) + // Shouldn't be necessary but you never know! + REMOVE_TRAIT(healed_bodypart, TRAIT_PARALYSIS, PAIN_LIMB_PARALYSIS) + + clear_pain_attributes() + shock_buildup = 0 + natural_pain_decay = base_pain_decay + +/** + * Determines if we should be processing or not. + */ +/datum/pain/proc/on_parent_statchance(mob/source) + SIGNAL_HANDLER + + if(source.stat == DEAD) + if(datum_flags & DF_ISPROCESSING) + STOP_PROCESSING(SSpain, src) + else + START_PROCESSING(SSpain, src) + +/** + * Signal proc for [COMSIG_LIVING_HEALTHSCAN] + * Reports how much pain [parent] is sustaining to [user]. + * + * Note, this report is relatively vague intentionally - + * rather than sending a detailed report of which bodyparts are in pain and how much, + * the patient is encouraged to elaborate on which bodyparts hurt the most, and how much they hurt. + * (To encourage a bit more interaction between the doctors.) + */ +/datum/pain/proc/on_analyzed(datum/source, list/render_list, advanced, mob/user, mode) + SIGNAL_HANDLER + + var/amount = "" + var/tip = "" + var/in_shock = !!is_undergoing_shock() + if(in_shock) + tip += span_bold("Neurogenic shock has begun and should be treated urgently. ") + + switch(get_average_pain()) + if(5 to 15) + amount = "minor" + tip += "Pain should subside in time." + if(15 to 30) + amount = "moderate" + tip += "Pain should subside in time and can be quickened with rest or painkilling medication." + if(30 to 50) + amount = "major" + tip += "Treat wounds and abate pain with rest, cryogenics, and painkilling medication." + if(50 to 80) + amount = "severe" + if(!in_shock) + tip += span_bold("Alert: Potential of neurogenic shock. ") + tip += "Treat wounds and abate pain with long rest, cryogenics, and moderate painkilling medication." + if(80 to INFINITY) + amount = "extreme" + if(!in_shock) + tip += span_bold("Alert: High potential of neurogenic shock. ") + tip += "Treat wounds and abate pain with long rest, cryogenics, and heavy painkilling medication." + + if(amount && tip) + render_list += "" + render_list += span_bold("Subject is experiencing [amount] pain. ") + render_list += tip + render_list += "\n" + +#ifdef TESTING + debug_print_pain() +#endif + +// ------ Pain debugging stuff. ------ +/datum/pain/vv_get_dropdown() + . = ..() + VV_DROPDOWN_OPTION("debug_pain", "Debug Pain") + VV_DROPDOWN_OPTION("set_limb_pain", "Adjust Limb Pain") + VV_DROPDOWN_OPTION("refresh_mod", "Refresh Pain Mod") + +/datum/pain/vv_do_topic(list/href_list) + . = ..() + if(href_list["debug_pain"]) + debug_print_pain() + if(href_list["set_limb_pain"]) + admin_adjust_bodypart_pain() + if(href_list["refresh_mod"]) + update_pain_modifier() + +/datum/pain/proc/debug_print_pain() + + var/list/final_print = list() + final_print += "

" + to_chat(usr, final_print.Join("\n")) + +/datum/pain/proc/admin_adjust_bodypart_pain() + var/zone = input(usr, "Which bodypart") as null|anything in BODY_ZONES_ALL + "All" + var/amount = input(usr, "How much?") as null|num + + if(isnull(amount) || isnull(zone)) + return + if(zone == "All") + zone = BODY_ZONES_ALL + + amount = clamp(amount, -200, 200) + adjust_bodypart_pain(zone, amount) diff --git a/monkestation/code/modules/can_spessmen_feel_pain/pain/bodyparts.dm b/monkestation/code/modules/can_spessmen_feel_pain/pain/bodyparts.dm new file mode 100644 index 000000000000..9a14a244f0fc --- /dev/null +++ b/monkestation/code/modules/can_spessmen_feel_pain/pain/bodyparts.dm @@ -0,0 +1,286 @@ +// Bodypart extensions to handle pain +// Yes pain is handled on a per-bodypart basis +/obj/item/bodypart + /// The amount of pain this limb is experiencing (A bit for default) + var/pain = 15 + /// The min amount of pain this limb can experience + var/min_pain = 0 + /// The soft cap of pain that this limb can experience + /// This is not a hard cap, pain can go above this, but beyond this effects will not worsen + var/soft_max_pain = PAIN_LIMB_MAX + /// Modifier applied to pain that this part receives + var/bodypart_pain_modifier = 1 + /// The last type of pain we received. Determines what type of pain we're recieving. + var/last_received_pain_type = BRUTE + +// Adds pain to check-self. +/obj/item/bodypart/check_for_injuries(mob/living/carbon/human/examiner, list/check_list) + . = ..() + if(owner != examiner || !owner.can_feel_pain()) // haha you thought + return + + switch((get_modified_pain() / soft_max_pain) * 100) + if(10 to 40) + check_list += "\t [span_danger("Your [name] is experiencing mild pain \ + and [last_received_pain_type == BURN ? "burns" : "hurts"] to the touch.")]" + + if(40 to 70) + check_list += "\t [span_warning("Your [name] is experiencing moderate pain \ + and [last_received_pain_type == BURN ? "burns" : "hurts"] to the touch!")]" + + if(70 to INFINITY) + check_list += "\t [span_boldwarning("Your [name] is experiencing severe pain \ + and [last_received_pain_type == BURN ? "burns" : "hurts"] to the touch!")]" + +/** + * Gets our bodypart's effective pain (pain * pain modifiers). + * + * Returns our effective pain. + */ +/obj/item/bodypart/proc/get_modified_pain() + if(owner?.pain_controller) + return pain * bodypart_pain_modifier * owner.pain_controller.pain_modifier + else + return pain * bodypart_pain_modifier + +/** + * Effects on this bodypart has when pain is gained. + * + * amount - amount of pain gained + */ +/obj/item/bodypart/proc/on_gain_pain_effects(amount) + if(!owner) + return FALSE + + if(get_modified_pain() >= 65 && can_be_disabled && !HAS_TRAIT_FROM(src, TRAIT_PARALYSIS, PAIN_LIMB_PARALYSIS)) + owner.pain_message( + span_userdanger("Your [plaintext_zone] goes numb from the pain!"), + span_danger("You can't move your [plaintext_zone]!") + ) + ADD_TRAIT(src, TRAIT_PARALYSIS, PAIN_LIMB_PARALYSIS) + update_disabled() + + return TRUE + +/** + * Effects on this bodypart has when pain is lost and some time passes without any pain gain. + * + * amount - amount of pain lost + */ +/obj/item/bodypart/proc/on_lose_pain_effects(amount) + if(!owner) + return FALSE + + if(get_modified_pain() < 65 && HAS_TRAIT_FROM(src, TRAIT_PARALYSIS, PAIN_LIMB_PARALYSIS)) + owner.pain_message( + span_green("You can feel your [plaintext_zone] again!"), + span_green("You can move your [plaintext_zone] again!") + ) + REMOVE_TRAIT(src, TRAIT_PARALYSIS, PAIN_LIMB_PARALYSIS) + update_disabled() + + return TRUE + +/** + * Feedback messages from this limb when it is sustaining pain. + * + * healing_pain - if TRUE, the bodypart has gone some time without recieving pain, and is healing. + */ +/obj/item/bodypart/proc/pain_feedback(seconds_per_tick, healing_pain) + var/list/feedback_phrases = list() + var/static/list/healing_phrases = list( + "but is improving", + "but is starting to dull", + "but the stinging is stopping", + "but feels faint", + ) + + switch(pain) + if(10 to 25) + owner.flash_pain_overlay(1) + feedback_phrases += list("aches", "feels sore", "stings slightly", "tingles", "twinges") + if(25 to 50) + owner.flash_pain_overlay(1) + feedback_phrases += list("hurts", "feels sore", "stings", "throbs", "pangs", "cramps", "feels wrong", "feels loose") + if(last_received_pain_type == BURN) + feedback_phrases += list("stings to the touch", "burns") + if(50 to 65) + if(SPT_PROB(4, seconds_per_tick)) + owner.pain_emote() + owner.flash_pain_overlay(2) + feedback_phrases += list("really hurts", "is losing feeling", "throbs painfully", "is in agony", "anguishes", "feels broken", "feels terrible") + if(last_received_pain_type == BURN) + feedback_phrases += list("burns to the touch", "burns", "singes") + if(65 to INFINITY) + if(SPT_PROB(8, seconds_per_tick)) + var/bonus_emote = pick(PAIN_EMOTES) + owner.pain_emote(pick("groan", "scream", bonus_emote)) + owner.flash_pain_overlay(2, 2 SECONDS) + feedback_phrases += list("is numb from the pain") + + if(feedback_phrases.len) + owner.pain_message(span_danger("Your [plaintext_zone] [pick(feedback_phrases)][healing_pain ? ", [pick(healing_phrases)]." : "!"]")) + return TRUE + +// --- Chest --- +/obj/item/bodypart/chest + soft_max_pain = PAIN_CHEST_MAX + +/obj/item/bodypart/chest/robot + // Augmented limbs start with maximum pain as a trade-off for becoming almost immune to it + // The idea being that the roboticist installing augments should take care of their patient + // following the period after they're augmented - anesthetic, rest, painkillers (from medbay) + pain = PAIN_CHEST_MAX + // As a trade off for starting with maximum pain, + // augmented limbs lose pain very rapidly and take very little in the way of pain. + // Why not a 0 modifier? I feel like it'll be unfun if they can just completely ignore the system. + bodypart_pain_modifier = 0.2 + +/obj/item/bodypart/chest/pain_feedback(seconds_per_tick, healing_pain) + var/list/feedback_phrases = list() + var/list/side_feedback = list() + var/static/list/healing_phrases = list( + "but is improving", + "but is starting to dull", + "but the stinging is stopping", + "but feels faint", + "but is settling", + "but it subsides", + ) + + switch(pain) + if(10 to 40) + owner.flash_pain_overlay(1) + feedback_phrases += list("aches", "feels sore", "stings slightly", "tingles", "twinges") + if(40 to 75) + owner.flash_pain_overlay(1, 2 SECONDS) + feedback_phrases += list("hurts", "feels sore", "stings", "throbs", "pangs", "cramps", "feels tight") + side_feedback += list("Your side hurts", "Your side pangs", "Your ribs hurt", "Your ribs pang", "Your neck stiffs") + if(75 to 110) + if(SPT_PROB(8, seconds_per_tick)) + owner.pain_emote() + owner.flash_pain_overlay(2, 2 SECONDS) + feedback_phrases += list("really hurts", "is losing feeling", "throbs painfully", "stings to the touch", "is in agony", "anguishes", "feels broken", "feels tight") + side_feedback += list("You feel a sharp pain in your side", "Your ribs feel broken") + if(110 to INFINITY) + if(SPT_PROB(12, seconds_per_tick)) + var/bonus_emote = pick(PAIN_EMOTES) + owner.pain_emote(pick("groan", "scream", bonus_emote)) + owner.flash_pain_overlay(2, 3 SECONDS) + feedback_phrases += list("hurts madly", "is in agony", "is anguishing", "burns to the touch", "feels terrible", "feels constricted") + side_feedback += list("You feel your ribs jostle in your [plaintext_zone]") + + if(side_feedback.len && last_received_pain_type == BRUTE && SPT_PROB(50, seconds_per_tick)) + owner.pain_message(span_danger("[pick(side_feedback)][healing_pain ? ", [pick(healing_phrases)]." : "!"]")) + else if(feedback_phrases.len) + owner.pain_message(span_danger("Your [plaintext_zone] [pick(feedback_phrases)][healing_pain ? ", [pick(healing_phrases)]." : "!"]")) + + return TRUE + +// --- Head --- +/obj/item/bodypart/head + soft_max_pain = PAIN_HEAD_MAX + +/obj/item/bodypart/head/robot + pain = PAIN_HEAD_MAX + bodypart_pain_modifier = 0.2 + +/obj/item/bodypart/head/on_gain_pain_effects(amount) + . = ..() + if(!.) + return FALSE + + if(amount >= 10) + // Large amounts of head pain causes minor brain damage + owner.adjustOrganLoss(ORGAN_SLOT_BRAIN, min(pain / 5, 10), 50) + + return TRUE + +/obj/item/bodypart/head/pain_feedback(seconds_per_tick, healing_pain) + var/list/feedback_phrases = list() + var/list/side_feedback = list() + var/static/list/healing_phrases = list( + "but is improving", + "but is starting to dull", + "but the stinging is stopping", + "but the tension is stopping", + "but is settling", + "but it subsides", + "but the pressure fades", + ) + + switch(pain) + if(10 to 30) + owner.flash_pain_overlay(1) + feedback_phrases += list("aches", "feels sore", "stings slightly", "tingles", "twinges") + side_feedback += list("Your neck feels sore", "Your eyes feel tired") + if(30 to 60) + owner.flash_pain_overlay(1) + feedback_phrases += list("hurts", "feels sore", "stings", "throbs", "pangs") + side_feedback += list("Your neck aches badly", "Your eyes hurt", "You feel a migrane coming on", "You feel a splitting headache") + if(60 to 90) + owner.flash_pain_overlay(2) + feedback_phrases += list("really hurts", "is losing feeling", "throbs painfully", "is in agony", "anguishes", "feels broken", "feels terrible") + side_feedback += list("Your neck stiffs", "You feel pressure in your [plaintext_zone]", "The back of your eyes begin hurt", "You feel a terrible migrane") + if(90 to INFINITY) + var/bonus_emote = pick(PAIN_EMOTES) + owner.pain_emote(pick("groan", bonus_emote)) + owner.flash_pain_overlay(2, 2 SECONDS) + feedback_phrases += list("hurts madly", "is in agony", "is anguishing", "feels terrible", "is in agony", "feels tense") + side_feedback += list("You feel a splitting migrane", "Pressure floods your [plaintext_zone]", "Your [plaintext_zone] feels as if it's being squeezed", "Your eyes hurt to keep open") + + if(side_feedback.len && last_received_pain_type == BRUTE && SPT_PROB(50, seconds_per_tick)) + owner.pain_message(span_danger("[pick(side_feedback)][healing_pain ? ", [pick(healing_phrases)]." : "!"]")) + else if(feedback_phrases.len) + owner.pain_message(span_danger("Your [plaintext_zone] [pick(feedback_phrases)][healing_pain ? ", [pick(healing_phrases)]." : "!"]")) + + return TRUE + +// --- Legs --- +/obj/item/bodypart/leg/on_gain_pain_effects(amount) + . = ..() + if(!.) + return + + if(get_modified_pain() < 40) + return + if(amount < 5) // only big bursts of pain will cause a limp + return + owner.apply_status_effect(/datum/status_effect/limp/pain, src) + +// --- Right Leg --- +/obj/item/bodypart/leg/right/robot + pain = PAIN_LIMB_MAX * 0.5 + bodypart_pain_modifier = 0.2 + +/obj/item/bodypart/leg/right/robot/surplus + pain = 0 + bodypart_pain_modifier = 0.8 + +// --- Left Leg --- +/obj/item/bodypart/leg/left/robot + pain = PAIN_LIMB_MAX * 0.5 + bodypart_pain_modifier = 0.2 + +/obj/item/bodypart/leg/left/robot/surplus + pain = 0 + bodypart_pain_modifier = 0.8 + + +// --- Right Arm --- +/obj/item/bodypart/arm/right/robot + pain = PAIN_LIMB_MAX * 0.5 + bodypart_pain_modifier = 0.2 + +/obj/item/bodypart/arm/right/robot/surplus + pain = 0 + bodypart_pain_modifier = 0.8 + +// --- Left Arm --- +/obj/item/bodypart/arm/right/robot + pain = PAIN_LIMB_MAX * 0.5 + bodypart_pain_modifier = 0.2 + +/obj/item/bodypart/arm/left/robot/surplus + pain = 0 + bodypart_pain_modifier = 0.8 diff --git a/monkestation/code/modules/can_spessmen_feel_pain/pain/causes/generic.dm b/monkestation/code/modules/can_spessmen_feel_pain/pain/causes/generic.dm new file mode 100644 index 000000000000..ce7d020df001 --- /dev/null +++ b/monkestation/code/modules/can_spessmen_feel_pain/pain/causes/generic.dm @@ -0,0 +1,55 @@ +// -- Causes of pain, from non-modular actions -- +/datum/brain_trauma/mild/concussion/on_life(seconds_per_tick, times_fired) + . = ..() + if(SPT_PROB(1, seconds_per_tick)) + owner.cause_pain(BODY_ZONE_HEAD, 10) + +// Shocks +/mob/living/carbon/human/electrocute_act(shock_damage, source, siemens_coeff = 1, flags = NONE) + . = ..() + if(!.) + return + + sharp_pain(BODY_ZONES_ALL, min((. / 2), 25), BURN) + set_timed_pain_mod(PAIN_MOD_RECENT_SHOCK, 0.5, 30 SECONDS) + +// Fleshmend of course heals pain. +/datum/status_effect/fleshmend/tick() + . = ..() + if(iscarbon(owner) && !owner.on_fire) + var/mob/living/carbon/carbon_owner = owner + carbon_owner.cause_pain(BODY_ZONES_ALL, -2) + +// Regen cores. +/datum/status_effect/regenerative_core/on_apply() + . = ..() + var/mob/living/carbon/human/human_owner = owner + if(istype(human_owner) && human_owner.pain_controller) + human_owner.cause_pain(BODY_ZONES_LIMBS, -25) + human_owner.cause_pain(BODY_ZONE_CHEST, -30) + human_owner.cause_pain(BODY_ZONE_HEAD, -15) // heals 90 pain total + +// Flight potion's flavor says "it hurts a shit ton bro", so it should cause decent pain +/datum/reagent/flightpotion/expose_mob(mob/living/exposed_mob, methods=TOUCH, reac_volume, show_message = TRUE) + var/has_wings_before = exposed_mob.get_organ_slot(ORGAN_SLOT_EXTERNAL_WINGS) + . = ..() + if(iscarbon(exposed_mob) && exposed_mob.stat != DEAD) + var/mob/living/carbon/exposed_carbon = exposed_mob + if(reac_volume < 5 || !(ishumanbasic(exposed_carbon) || islizard(exposed_carbon) || ismoth(exposed_carbon))) + return + if(has_wings_before) + exposed_carbon.cause_pain(BODY_ZONE_HEAD, 10) + exposed_carbon.cause_pain(BODY_ZONE_CHEST, 45) + exposed_carbon.cause_pain(list(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM), 18) + else + exposed_carbon.cause_pain(BODY_ZONE_HEAD, 16) + exposed_carbon.cause_pain(BODY_ZONE_CHEST, 75) + exposed_carbon.cause_pain(list(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM), 30) + +/datum/wound/blunt/bone/moderate/chiropractice(mob/living/carbon/human/user) + . = ..() + user.cause_pain(limb.body_zone, 25) + +/datum/wound/blunt/bone/moderate/malpractice(mob/living/carbon/human/user) + . = ..() + user.cause_pain(limb.body_zone, 40) diff --git a/monkestation/code/modules/can_spessmen_feel_pain/pain/causes/opiods.dm b/monkestation/code/modules/can_spessmen_feel_pain/pain/causes/opiods.dm new file mode 100644 index 000000000000..fdbb8969da43 --- /dev/null +++ b/monkestation/code/modules/can_spessmen_feel_pain/pain/causes/opiods.dm @@ -0,0 +1,27 @@ +/datum/addiction/opioids + withdrawal_stage_messages = list( + "My body aches all over...", + "I need some pain relief...", + "It hurts all over...I need some opioids!", + ) + +/datum/addiction/opioids/withdrawal_stage_1_process(mob/living/carbon/affected_carbon, seconds_per_tick) + . = ..() + if(!affected_carbon.pain_controller) + return + if(affected_carbon.pain_controller.get_average_pain() <= 10 && SPT_PROB(8, seconds_per_tick)) + affected_carbon.cause_pain(BODY_ZONES_ALL, 0.5 * seconds_per_tick) + +/datum/addiction/opioids/withdrawal_stage_2_process(mob/living/carbon/affected_carbon, seconds_per_tick) + . = ..() + if(!affected_carbon.pain_controller) + return + if(affected_carbon.pain_controller.get_average_pain() <= 20 && SPT_PROB(8, seconds_per_tick)) + affected_carbon.cause_pain(BODY_ZONES_ALL, 1 * seconds_per_tick) + +/datum/addiction/opioids/withdrawal_stage_3_process(mob/living/carbon/affected_carbon, seconds_per_tick) + . = ..() + if(!affected_carbon.pain_controller) + return + if(affected_carbon.pain_controller.get_average_pain() <= 30 && SPT_PROB(8, seconds_per_tick)) + affected_carbon.cause_pain(BODY_ZONES_ALL, 1.5 * seconds_per_tick) diff --git a/monkestation/code/modules/can_spessmen_feel_pain/pain/causes/surgery.dm b/monkestation/code/modules/can_spessmen_feel_pain/pain/causes/surgery.dm new file mode 100644 index 000000000000..be9a8769490b --- /dev/null +++ b/monkestation/code/modules/can_spessmen_feel_pain/pain/causes/surgery.dm @@ -0,0 +1,236 @@ +/datum/surgery_step + /// Moodlet given if a surgery is done without anesthetics + var/surgery_moodlet = /datum/mood_event/surgery + /// Pain overlay flashed if a surgery is done without anesthetics + var/pain_overlay_severity = 1 + /// How much pain this gives (given out in display_pain, so this might be given out twice) + var/pain_amount = 0 + /// What type of pain this gives + var/pain_type = BRUTE + +// Regex for updating existing display pain calls: +// display_pain\((.+)\) -> display_pain($1, target_zone = target_zone) // NON-MODULE CHANGE +/datum/surgery_step/display_pain(mob/living/carbon/target, pain_message, mechanical_surgery = FALSE, target_zone) + // Only feels pain if we feels pain + if(pain_amount <= 0 || isnull(target_zone) || !target.can_feel_pain()) + return FALSE + + // No pain from mechanics but still show the message (usually) + if(mechanical_surgery) + if(prob(70)) + target.pain_message(span_userdanger(pain_message)) + return FALSE + + target.cause_pain(target_zone, pain_amount, pain_type) + + if(target.IsSleeping() || target.stat >= UNCONSCIOUS) + if(target.has_status_effect(/datum/status_effect/grouped/anesthetic)) + target.add_mood_event("surgery", /datum/mood_event/anesthetic) + return FALSE + if(ispath(surgery_moodlet)) + target.add_mood_event("surgery", surgery_moodlet) + if(isnum(pain_overlay_severity)) + target.flash_pain_overlay(pain_overlay_severity) + // No message if the pain emote fails + if(!target.pain_emote()) + return FALSE + if(!target.pain_message(span_userdanger(pain_message))) + return FALSE + return TRUE + +/datum/surgery_step/brainwash/sleeper_agent + pain_amount = 36 + +/datum/surgery_step/sever_limb + pain_amount = 16 // Losing a limb also applies pain to chest + +/datum/surgery_step/repair_bone_hairline + pain_amount = 16 + +/datum/surgery_step/reset_compound_fracture + pain_amount = 24 + +/datum/surgery_step/fix_brain + surgery_moodlet = /datum/mood_event/surgery/major + pain_overlay_severity = 2 + pain_amount = 24 + +/datum/surgery_step/debride + pain_amount = 12 + pain_type = BURN + +/datum/surgery_step/handle_cavity + pain_amount = 16 + +/datum/surgery_step/incise_heart + surgery_moodlet = /datum/mood_event/surgery/major + pain_overlay_severity = 2 + // It is extremely unlikely this surgery is done on alive people to feel (most) of this + pain_amount = 60 + +/datum/surgery_step/coronary_bypass + surgery_moodlet = /datum/mood_event/surgery/major + pain_overlay_severity = 2 + pain_amount = 30 + +/datum/surgery_step/coronary_bypass/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE) + . = ..() + // Reduces pain from surgery a bit on success + target.cause_pain(target_zone, pain_amount * -0.5, pain_type) + +/datum/surgery_step/coronary_bypass/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery) + . = ..() + // Double pain from surgery + target.cause_pain(target_zone, pain_amount, pain_type) + +/datum/surgery_step/fix_eyes + pain_amount = 9 + +/datum/surgery_step/gastrectomy + pain_amount = 20 + +/datum/surgery_step/gastrectomy/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE) + . = ..() + // Reduces pain from surgery a bit on success + target.cause_pain(target_zone, pain_amount * -1.25, pain_type) + +/datum/surgery_step/gastrectomy/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery) + . = ..() + // Double pain from surgery + target.cause_pain(target_zone, pain_amount, pain_type) + +/datum/surgery_step/heal + pain_amount = 9 + +/datum/surgery_step/hepatectomy + surgery_moodlet = /datum/mood_event/surgery/major + pain_overlay_severity = 2 + pain_amount = 20 + +/datum/surgery_step/hepatectomy/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE) + . = ..() + // Reduces pain from surgery a bit on success + target.cause_pain(target_zone, pain_amount * -1.25, pain_type) + +/datum/surgery_step/hepatectomy/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery) + . = ..() + // Double pain from surgery + target.cause_pain(target_zone, pain_amount, pain_type) + +/datum/surgery_step/extract_implant + pain_amount = 24 + +/datum/surgery_step/cut_fat + pain_amount = 16 + +/datum/surgery_step/lobectomy + surgery_moodlet = /datum/mood_event/surgery/major + pain_overlay_severity = 2 + pain_amount = 20 + +/datum/surgery_step/incise + pain_amount = 12 + +/datum/surgery_step/incise/nobleed + pain_amount = 3 + +/datum/surgery_step/clamp_bleeders + pain_amount = 3 + +/datum/surgery_step/retract_skin + pain_amount = 12 + +/datum/surgery_step/close + pain_amount = 12 + pain_type = BURN + +/datum/surgery_step/saw + surgery_moodlet = /datum/mood_event/surgery/major + pain_overlay_severity = 2 + // no pain_amount here because it uses apply_damage, which causes pain + +/datum/surgery_step/drill + pain_amount = 24 + +/datum/surgery_step/reshape_face + pain_amount = 16 + +/datum/surgery_step/repair_innards + pain_amount = 16 + +/datum/surgery_step/stomach_pump + pain_amount = 12 + +/datum/surgery_step/brainwash + surgery_moodlet = /datum/mood_event/surgery/major + pain_overlay_severity = 2 + pain_amount = 40 + +/datum/surgery_step/lobotomize + surgery_moodlet = /datum/mood_event/surgery/major + pain_overlay_severity = 2 + pain_amount = 40 + +/datum/surgery_step/bionecrosis + surgery_moodlet = /datum/mood_event/surgery/major + pain_overlay_severity = 2 + pain_amount = 40 + +/datum/surgery_step/pacify + surgery_moodlet = /datum/mood_event/surgery/major + pain_overlay_severity = 2 + pain_amount = 40 + +/datum/surgery_step/viral_bond + pain_amount = 24 + pain_type = BURN + +/datum/surgery_step/wing_reconstruction + pain_amount = 9 + pain_type = BURN + +/datum/surgery_step/fold_cortex + surgery_moodlet = /datum/mood_event/surgery/major + pain_overlay_severity = 2 + pain_amount = 40 + +/datum/surgery_step/imprint_cortex + surgery_moodlet = /datum/mood_event/surgery/major + pain_overlay_severity = 2 + pain_amount = 40 + +/datum/surgery_step/reshape_ligaments + surgery_moodlet = /datum/mood_event/surgery/major + pain_overlay_severity = 2 + pain_amount = 10 + pain_type = BURN + +/datum/surgery_step/reinforce_ligaments + surgery_moodlet = /datum/mood_event/surgery/major + pain_overlay_severity = 2 + pain_amount = 10 + pain_type = BURN + +/datum/surgery_step/muscled_veins + surgery_moodlet = /datum/mood_event/surgery/major + pain_overlay_severity = 2 + pain_amount = 15 + pain_type = BURN + +/datum/surgery_step/ground_nerves + surgery_moodlet = /datum/mood_event/surgery/major + pain_overlay_severity = 2 + pain_amount = 15 + pain_type = BURN + +/datum/surgery_step/splice_nerves + surgery_moodlet = /datum/mood_event/surgery/major + pain_overlay_severity = 2 + pain_amount = 15 + pain_type = BURN + +/datum/surgery_step/thread_veins + surgery_moodlet = /datum/mood_event/surgery/major + pain_overlay_severity = 2 + pain_amount = 15 + pain_type = BURN diff --git a/monkestation/code/modules/can_spessmen_feel_pain/pain/effects.dm b/monkestation/code/modules/can_spessmen_feel_pain/pain/effects.dm new file mode 100644 index 000000000000..91f06698b764 --- /dev/null +++ b/monkestation/code/modules/can_spessmen_feel_pain/pain/effects.dm @@ -0,0 +1,109 @@ +// -- Pain effects - mood and modifiers. -- + +/atom/movable/screen/fullscreen/pain + icon = 'monkestation/code/modules/can_spessmen_feel_pain/icons/hud/screen_full.dmi' + icon_state = "painoverlay" + layer = UI_DAMAGE_LAYER + +/mob/living/proc/flash_pain_overlay(severity = 1, time = 1 SECONDS) + if(client?.prefs) + if(client.prefs.read_preference(/datum/preference/toggle/pain_flashes)) + clear_fullscreen("pain", time) + return + overlay_fullscreen("pain", /atom/movable/screen/fullscreen/pain, severity) + clear_fullscreen("pain", time) + +/datum/movespeed_modifier/pain + id = MOVESPEED_ID_PAIN + movetypes = GROUND + +// >= 100 total pain +/datum/movespeed_modifier/pain/light + multiplicative_slowdown = 0.1 + +// >= 200 total pain +/datum/movespeed_modifier/pain/medium + multiplicative_slowdown = 0.2 + +// >= 300 total pain +/datum/movespeed_modifier/pain/heavy + multiplicative_slowdown = 0.35 + +// >= 400 total pain +/datum/movespeed_modifier/pain/crippling + multiplicative_slowdown = 0.5 + +/datum/actionspeed_modifier/pain + id = ACTIONSPEED_ID_PAIN + +// >= 100 total pain +/datum/actionspeed_modifier/pain/light + multiplicative_slowdown = 0.2 + +// >= 200 total pain +/datum/actionspeed_modifier/pain/medium + multiplicative_slowdown = 0.2 + +// >= 300 total pain +/datum/actionspeed_modifier/pain/heavy + multiplicative_slowdown = 0.35 + +// >= 400 total pain +/datum/actionspeed_modifier/pain/crippling + multiplicative_slowdown = 0.5 + +/datum/mood_event/light_pain + description = "Everything aches." + mood_change = -3 + +/datum/mood_event/med_pain + description = "Everything feels sore." + mood_change = -6 + +/datum/mood_event/heavy_pain + description = "Everything hurts!" + mood_change = -10 + +/datum/mood_event/crippling_pain + description = "STOP THE PAIN!" + mood_change = -15 + +// Applied when you go under the knife with anesthesia +/datum/mood_event/anesthetic + description = "Thank science for modern medicine." + mood_change = 2 + timeout = 6 MINUTES + +// Applied by most surgeries if you get operated on without anesthetics +/datum/mood_event/surgery + description = "They're operating on me while I'm awake!" + mood_change = -6 + timeout = 3 MINUTES + +// Applied by some surgeries that are especially bad without anesthetics +/datum/mood_event/surgery/major + description = "THEY'RE CUTTING ME OPEN!!" + mood_change = -10 + timeout = 6 MINUTES + +/atom/movable/screen/alert/numbed + name = "Numbed" + desc = "Your body is numb, painless. You're under the effect of some kind of painkiller." + icon_state = "drugged" + +/datum/mood_event/narcotic_light + description = "I feel numb." + mood_change = 4 + timeout = 3 MINUTES + +/datum/emote/living/carbon/human/scream + +/datum/emote/living/carbon/human/scream/can_run_emote(mob/living/carbon/human/user, status_check, intentional) + if(intentional) + return ..() + + // Cut unintentional screems if they can't feel pain at the moment + if(!user.can_feel_pain()) + return FALSE + + return ..() diff --git a/monkestation/code/modules/can_spessmen_feel_pain/pain/helpers.dm b/monkestation/code/modules/can_spessmen_feel_pain/pain/helpers.dm new file mode 100644 index 000000000000..4444c2f5b763 --- /dev/null +++ b/monkestation/code/modules/can_spessmen_feel_pain/pain/helpers.dm @@ -0,0 +1,154 @@ +// -- Helper procs and hooks for pain. -- +/mob/living + /// The pain controller datum - tracks, processes, and handles pain. + /// Only intialized on humans (currently), here for ease of access / future compatibillity? + var/datum/pain/pain_controller + +/mob/living/Destroy() + QDEL_NULL(pain_controller) + return ..() + +/mob/living/carbon/human/Initialize(mapload) + . = ..() + var/datum/pain/new_pain_controller = new(src) + if(!QDELETED(new_pain_controller)) + pain_controller = new_pain_controller + +/** + * Causes pain to this mob. + * + * Note that most damage causes pain regardless, but this is still useful for direct pain damage + * + * * target_zone - required, which zone or zones to afflict pain to + * * amount - how much pain to inflict + * * dam_type - the type of pain to inflict. Only [BRUTE] and [BURN] really matters. + */ +/mob/living/proc/cause_pain(target_zone, amount, dam_type = BRUTE) + ASSERT(!isnull(target_zone)) + ASSERT(isnum(amount)) + return pain_controller?.adjust_bodypart_pain(target_zone, amount, dam_type) + +/** + * Runs an emote on the pain emote cooldown + * Emote supplied does NOT need to be a pain emote + * + * If no emote is supplied, randomly picks from all pain-related emotes + * + * * emote - what emote key to run + * * cooldown - applies cooldown on doing similar pain related emotes + */ +/mob/living/proc/pain_emote(emote, cooldown) + return pain_controller?.do_pain_emote(emote, cooldown) + +/** + * Runs a pain message on the pain message cooldown + * + * * message - the message to send + * * painless_message - optional, the message to send if the mob does not feel pain + * * cooldown - applies cooldown on doing similar pain messages + */ +/mob/living/proc/pain_message(message, painless_message, cooldown) + return pain_controller?.do_pain_message(message, painless_message, cooldown) + +/** + * Adjust the minimum pain the target zone can experience for a time + * + * This means that the target zone will not be able to go below the specified pain amount + * + * * target_zone - required, which zone to afflict pain to + * * amount - how much min pain to increase + * * time - how long to incease the min pain to + */ +/mob/living/proc/apply_min_pain(target_zone, amount, time) + ASSERT(!isnull(target_zone)) + ASSERT(isnum(amount)) + ASSERT(isnum(time)) + return apply_status_effect(/datum/status_effect/minimum_bodypart_pain, target_zone, amount, time) + +/** + * Sets the pain modifier of [id] to [amount]. + */ +/mob/living/proc/set_pain_mod(id, amount) + ASSERT(isnum(amount)) + ASSERT(istext(id) || ispath(id)) + return pain_controller?.set_pain_modifier(id, amount) + +/** + * Unsets the pain mod at the supplied [id]. + */ +/mob/living/proc/unset_pain_mod(id) + ASSERT(istext(id) || ispath(id)) + return pain_controller?.unset_pain_modifier(id) + +/** + * Checks if this mob can feel pain. + * + * By default mobs cannot feel pain if they have a pain modifier of 0.5 or less. + */ +/mob/living/proc/can_feel_pain() + return pain_controller?.pain_modifier > 0.5 && !HAS_TRAIT(src, TRAIT_NO_PAIN_EFFECTS) + +/** + * Adjusts the progress of pain shock on the current mob. + * + * * amount - the number of ticks of progress to remove. Note that one tick = two seconds for pain. + * * down_to - the minimum amount of pain shock the mob can have. Defaults to -30, giving the mob a buffer against shock. + */ +/mob/living/proc/adjust_pain_shock(amount, down_to = -30) + if(isnull(pain_controller)) + return + if(amount > 0 && HAS_TRAIT(src, TRAIT_NO_SHOCK_BUILDUP)) + return + + ASSERT(isnum(amount)) + pain_controller.shock_buildup = max(pain_controller.shock_buildup + amount, down_to) + +/** + * Cause [amount] of [dam_type] sharp pain to [target_zones]. + * Sharp pain is for sudden spikes of pain that go away after [duration] deciseconds. + * + * * target_zones - requried, one or multiple target zones to apply sharp pain to + * * amount - how much sharp pain to inflict + * * dam_type - the type of sharp pain to inflict. Only [BRUTE] and [BURN] really matters. + * * duration - how long the sharp pain lasts for + */ +/mob/living/proc/sharp_pain(target_zones, amount, dam_type = BRUTE, duration = 1 MINUTES) + if(isnull(pain_controller)) + return + ASSERT(!isnull(target_zones)) + ASSERT(isnum(amount)) + + if(!islist(target_zones)) + target_zones = list(target_zones) + for(var/zone in target_zones) + apply_status_effect(/datum/status_effect/sharp_pain, zone, amount, dam_type, duration) + +/** + * Set [id] pain modifier to [amount], and + * unsets it after [time] deciseconds have elapsed. + */ +/mob/living/proc/set_timed_pain_mod(id, amount, time) + if(isnull(pain_controller)) + return + ASSERT(isnum(amount)) + ASSERT(isnum(time)) + ASSERT(istext(id) || ispath(id)) + if(time <= 0) + // no-op rather than stack trace or anything, so code with variable time can ignore it + return + + set_pain_mod(id, amount) + addtimer(CALLBACK(pain_controller, TYPE_PROC_REF(/datum/pain, unset_pain_modifier), id), time) + +/** + * Returns the bodypart pain of [zone]. + * If [get_modified] is TRUE, returns the bodypart's pain multiplied by any modifiers affecting it. + */ +/mob/living/proc/get_bodypart_pain(target_zone, get_modified = FALSE) + ASSERT(!isnull(target_zone)) + + var/obj/item/bodypart/checked_bodypart = pain_controller?.body_zones[target_zone] + if(isnull(checked_bodypart)) + return 0 + + return get_modified ? checked_bodypart.get_modified_pain() : checked_bodypart.pain diff --git a/monkestation/code/modules/can_spessmen_feel_pain/pain/item_helpers.dm b/monkestation/code/modules/can_spessmen_feel_pain/pain/item_helpers.dm new file mode 100644 index 000000000000..b4c18b0a59de --- /dev/null +++ b/monkestation/code/modules/can_spessmen_feel_pain/pain/item_helpers.dm @@ -0,0 +1,3 @@ +/obj/item + ///the pain damage we do + var/pain_damage diff --git a/monkestation/code/modules/can_spessmen_feel_pain/pain/modifiers.dm b/monkestation/code/modules/can_spessmen_feel_pain/pain/modifiers.dm new file mode 100644 index 000000000000..3d30c8f8348b --- /dev/null +++ b/monkestation/code/modules/can_spessmen_feel_pain/pain/modifiers.dm @@ -0,0 +1,125 @@ +// -- Pain modifiers. -- +// Species pain modifiers. +/datum/species/on_species_gain(mob/living/carbon/C, datum/species/old_species, pref_load) + . = ..() + if(isnum(species_pain_mod) && species_pain_mod != 1) + C.set_pain_mod(PAIN_MOD_SPECIES, species_pain_mod) + +/datum/species/on_species_loss(mob/living/carbon/human/C, datum/species/new_species, pref_load) + . = ..() + C.unset_pain_mod(PAIN_MOD_SPECIES) + +// Eternal youth gives a small bonus pain mod. +/datum/symptom/youth/Activate(datum/disease/advance/A) + . = ..() + if(!.) + return + switch(A.stage) + if(5) + A.affected_mob.set_pain_mod(name, 0.9) + +/datum/symptom/youth/End(datum/disease/advance/A) + . = ..() + if(!.) + return + A.affected_mob.unset_pain_mod(name) + +// Some Traumas + +/datum/brain_trauma/special/tenacity/on_gain() + . = ..() + owner.set_pain_mod(name, 0) + +/datum/brain_trauma/special/tenacity/on_lose() + owner.unset_pain_mod(name) + return ..() + +// Near death experience +/mob/living/carbon/human/set_health(new_value) + . = ..() + if(HAS_TRAIT_FROM(src, TRAIT_KNOCKEDOUT, CRIT_HEALTH_TRAIT)) + src.add_mood_event("near-death", /datum/mood_event/deaths_door) + set_pain_mod(PAIN_MOD_NEAR_DEATH, 0.1) + else + src.clear_mood_event("near-death") + unset_pain_mod(PAIN_MOD_NEAR_DEATH) + +// Stasis gives you a pain modifier and stops pain decay +// +// This is kind of a cop-out, I admit: +// Loigcally, you shouldn't feel any pain on stasis, since all of your body systems are frozen +// However, for balance this kneecaps surgery by making it a no-brainer to use stasis +// +// As a result, I'm opting to add just a "decent" pain modifier instead +/datum/status_effect/grouped/stasis/on_apply() + . = ..() + if(ishuman(owner)) + var/mob/living/carbon/human/human_owner = owner + human_owner.set_pain_mod(id, 0.5) + +/datum/status_effect/grouped/stasis/on_remove() + if(ishuman(owner)) + var/mob/living/carbon/human/human_owner = owner + human_owner.unset_pain_mod(id) + return ..() + +// Determination gives a hefty pain modifier +/datum/status_effect/determined/on_apply() + . = ..() + if(ishuman(owner)) + var/mob/living/carbon/human/human_owner = owner + human_owner.set_pain_mod(id, 0.625) + ADD_TRAIT(owner, TRAIT_NO_PAIN_EFFECTS, TRAIT_STATUS_EFFECT(id)) + ADD_TRAIT(owner, TRAIT_NO_SHOCK_BUILDUP, TRAIT_STATUS_EFFECT(id)) + +/datum/status_effect/determined/on_remove() + if(ishuman(owner)) + var/mob/living/carbon/human/human_owner = owner + human_owner.unset_pain_mod(id) + REMOVE_TRAIT(owner, TRAIT_NO_PAIN_EFFECTS, TRAIT_STATUS_EFFECT(id)) + REMOVE_TRAIT(owner, TRAIT_NO_SHOCK_BUILDUP, TRAIT_STATUS_EFFECT(id)) + return ..() + +// Fake healthy is supposed to mimic feeling no pain +/datum/status_effect/grouped/screwy_hud/fake_healthy/on_apply() + . = ..() + ADD_TRAIT(owner, TRAIT_NO_PAIN_EFFECTS, TRAIT_STATUS_EFFECT(id)) + +/datum/status_effect/grouped/screwy_hud/fake_healthy/on_remove() + . = ..() + REMOVE_TRAIT(owner, TRAIT_NO_PAIN_EFFECTS, TRAIT_STATUS_EFFECT(id)) + +// Being drunk gives a slight one, note the actual reagent gives one based on its strength +/datum/status_effect/inebriated/drunk/on_apply() + . = ..() + if(ishuman(owner)) + var/mob/living/carbon/human/human_owner = owner + human_owner.set_pain_mod(id, 0.9) + +/datum/status_effect/inebriated/drunk/on_remove() + if(ishuman(owner)) + var/mob/living/carbon/human/human_owner = owner + human_owner.unset_pain_mod(id) + return ..() + +// Being drowsy gives a very slight one +/datum/status_effect/drowsiness/on_apply() + . = ..() + if(ishuman(owner)) + var/mob/living/carbon/human/human_owner = owner + human_owner.set_pain_mod(id, 0.95) + +/datum/status_effect/drowsiness/on_remove() + if(ishuman(owner)) + var/mob/living/carbon/human/human_owner = owner + human_owner.unset_pain_mod(id) + return ..() + +// Reacting to all cases of gaining knocked out rather than just sleeping +/mob/living/on_knockedout_trait_gain(datum/source) + . = ..() + set_pain_mod(PAIN_MOD_KOD, 0.8) + +/mob/living/on_knockedout_trait_loss(datum/source) + . = ..() + unset_pain_mod(PAIN_MOD_KOD) diff --git a/monkestation/code/modules/can_spessmen_feel_pain/pain/pain_assistance_tools.dm b/monkestation/code/modules/can_spessmen_feel_pain/pain/pain_assistance_tools.dm new file mode 100644 index 000000000000..57d8200e5b9c --- /dev/null +++ b/monkestation/code/modules/can_spessmen_feel_pain/pain/pain_assistance_tools.dm @@ -0,0 +1,559 @@ +// -- Implements and equipment to help reduce pain. -- +// Temperature pack stuff - things you can press to people to help reduce pain. +/// Heal rate and modifier for generic items that are frozen. +#define FROZEN_ITEM_PAIN_RATE 1 +#define FROZEN_ITEM_PAIN_MODIFIER 0.5 +#define FROZEN_ITEM_TEMPERATURE_CHANGE -5 + +// Holding a beer to your busted arm, now that's classic +/obj/item/reagent_containers/cup/glass/bottle/beer/Initialize(mapload) + . = ..() + if(reagents.get_reagent_amount(/datum/reagent/consumable/ethanol/beer) > 1) + AddElement(/datum/element/temperature_pack, \ + pain_heal_rate = 0.3, \ + pain_modifier_on_limb = 0.9, \ + temperature_change = -2) + +// Frozen items become usable temperature packs. +/datum/element/frozen/Attach(datum/target) + . = ..() + if(. == ELEMENT_INCOMPATIBLE) + return + if(!isitem(target)) + return + + target.AddElement(/datum/element/temperature_pack, FROZEN_ITEM_PAIN_RATE, FROZEN_ITEM_PAIN_MODIFIER, FROZEN_ITEM_TEMPERATURE_CHANGE) + +/datum/element/frozen/Detach(datum/source, ...) + . = ..() + if(!isitem(source)) + return + + source.RemoveElement(/datum/element/temperature_pack, FROZEN_ITEM_PAIN_RATE, FROZEN_ITEM_PAIN_MODIFIER, FROZEN_ITEM_TEMPERATURE_CHANGE) + +/// Temperature packs (heat packs, cold packs). Apply to hurt limb to un-hurty. +/obj/item/temperature_pack + name = "temperature pack" + desc = "A temperature pack, to soothe pain." + w_class = WEIGHT_CLASS_SMALL + icon = 'monkestation/code/modules/can_spessmen_feel_pain/icons/obj/pain_items.dmi' + lefthand_file = 'monkestation/code/modules/can_spessmen_feel_pain/icons/mob/inhands/pain_items_lhand.dmi' + righthand_file = 'monkestation/code/modules/can_spessmen_feel_pain/icons/mob/inhands/pain_items_rhand.dmi' + icon_state = "cold_pack" + throwforce = 0 + throw_speed = 2 + throw_range = 5 + attack_verb_continuous = list("pads") + attack_verb_simple = list("pads") + /// Whether our pack has been used. + var/used = FALSE + /// Whether our pack is active. + var/active = FALSE + /// The amount of pain that our pack heals when used. + var/pain_heal_amount = 0 + /// The modifier put onto the limb when used. + var/pain_limb_modifier = 1 + /// The change in temperature applied to the user while our pack is in use. + var/temperature_change = 0 + +/obj/item/temperature_pack/Initialize(mapload) + . = ..() + update_appearance() + +/obj/item/temperature_pack/attack_self(mob/user, modifiers) + . = ..() + if(.) + return + + if(used) + return + + used = TRUE + activate_pack(user) + return TRUE + +/obj/item/temperature_pack/examine(mob/user) + . = ..() + if(used) + if(active) + . += span_notice("It's used, but emanating [temperature_change > 0 ? "heat" : "a chill"].") + else + . += span_notice("It's used up and empty.") + else + . += span_notice("Use it in hand to activate the pack, [temperature_change > 0 ? "heating it up" : "cooling it down"].") + +/obj/item/temperature_pack/update_overlays() + . = ..() + if(!used || active) + if(temperature_change > 0) + . += "heat_overlay" + if(active) + . += "active_heat_overlay" + else + . += "cold_overlay" + if(active) + . += "active_cold_overlay" + +/** + * Activate [src] from [user], making it into a temperature pack that can be used, that expires in 5 minutes. + */ +/obj/item/temperature_pack/proc/activate_pack(mob/user) + addtimer(CALLBACK(src, PROC_REF(deactivate_pack)), 5 MINUTES) + to_chat(user, span_notice("You crack [src], [temperature_change > 0 ? "heating it up" : "cooling it down"].")) + AddElement(/datum/element/temperature_pack, pain_heal_amount, pain_limb_modifier, temperature_change) + active = TRUE + update_appearance() + +/** + * Deactivate [src], making it unusable, and sending signal [COMSIG_TEMPERATURE_PACK_EXPIRED]. + */ +/obj/item/temperature_pack/proc/deactivate_pack() + SEND_SIGNAL(src, COMSIG_TEMPERATURE_PACK_EXPIRED) + visible_message(span_notice("[src] fizzles as the last of its [temperature_change > 0 ? "heat" : "chill"] runs out.")) + RemoveElement(/datum/element/temperature_pack, pain_heal_amount, pain_limb_modifier, temperature_change) + active = FALSE + name = "used [name]" + desc = "A used up [name]. It's no use to anyone anymore." + update_appearance() + +// Head packs have a stronger modifier, but heals less. +/obj/item/temperature_pack/heat + name = "heat pack" + desc = "A heat pack. Crack it to turn it on and apply it to an aching limb to reduce joint stress and moderate pain." + temperature_change = 5 + pain_heal_amount = 3.6 + pain_limb_modifier = 0.5 + +// Cold packs heal more, but have a weaker modifier. +/obj/item/temperature_pack/cold + name = "cold pack" + desc = "A cold pack. Crack it on and apply it to a hurt limb to abate sharp pain." + temperature_change = -5 + pain_heal_amount = 6 + pain_limb_modifier = 0.75 + +/obj/item/reagent_containers/pill/aspirin + name = "aspirin pill" + desc = "Used to treat moderate pain and fever. Metabolizes slowly. Best at treating chest pain." + icon_state = "pill7" + list_reagents = list(/datum/reagent/medicine/painkiller/aspirin = 10) // Lasts ~4 minutes, heals ~20 pain in chest (lower in other parts) + rename_with_volume = TRUE + +/obj/item/reagent_containers/syringe/aspirin + name = "syringe (aspirin)" + desc = "Contains fiteen units of aspirin. Used to treat chest pain and fever. Metabolizes slowly." + list_reagents = list(/datum/reagent/medicine/painkiller/aspirin = 15) + +/obj/item/reagent_containers/pill/ibuprofen + name = "ibuprofen pill" + desc = "Used to treat mild pain, headaches, and fever. Metabolizes slowly. Best at treating head pain." + icon_state = "pill8" + list_reagents = list(/datum/reagent/medicine/painkiller/ibuprofen = 10) // Lasts ~4 minutes, heals ~20 pain in head (lower in other parts) + rename_with_volume = TRUE + +/obj/item/reagent_containers/syringe/ibuprofen + name = "syringe (ibuprofen)" + desc = "Contains fiteen units of ibuprofen. Used to treat head pain headaches, and fever. Metabolizes slowly." + list_reagents = list(/datum/reagent/medicine/painkiller/ibuprofen = 15) + +/obj/item/reagent_containers/pill/paracetamol + name = "paracetamol pill" + desc = "Used to treat moderate pain and headaches. Metabolizes slowly. Good as a general painkiller." + icon_state = "pill9" + list_reagents = list(/datum/reagent/medicine/painkiller/paracetamol = 10) // Lasts ~4 minutes, heals ~15 pain per bodypart + rename_with_volume = TRUE + +/obj/item/reagent_containers/syringe/paracetamol + name = "syringe (paracetamol)" + desc = "Contains fiteen units of Paracetamol. Used to treat general pain. Metabolizes slowly." + list_reagents = list(/datum/reagent/medicine/painkiller/paracetamol = 15) + +/obj/item/reagent_containers/pill/morphine/diluted + desc = "Used to treat major to severe pain. Causes moderate drowsiness. Mildly addictive." + icon_state = "pill11" + list_reagents = list(/datum/reagent/medicine/painkiller/morphine = 5) // Lasts ~1 minute, heals ~10 pain per bodypart (~100 pain) // NON-MODULE CHANGE + rename_with_volume = TRUE + +/obj/item/reagent_containers/syringe/morphine + name = "syringe (morphine)" + desc = "Contains three injections of Morphine. Used to treat major to severe pain. Causes moderate drowsiness. Mildly addictive." + list_reagents = list(/datum/reagent/medicine/painkiller/morphine = 15) // NON-MODULE CHANGE + +/obj/item/reagent_containers/pill/oxycodone + name = "oxycodone pill" + desc = "Used to treat severe to extreme pain. Rapid acting, may cause delirium. Very addictive." + icon_state = "pill12" + list_reagents = list(/datum/reagent/medicine/painkiller/oxycodone = 5) // Lasts ~1 minute, heals ~20 pain per bodypart (~200 pain) + rename_with_volume = TRUE + +/obj/item/reagent_containers/syringe/oxycodone + name = "syringe (oxycodone)" + desc = "Contains three injections of Oxycodone. Used to treat severe to extreme pain. Rapid acting, may cause delirium. Very addictive." + list_reagents = list(/datum/reagent/medicine/painkiller/oxycodone = 15) + +/obj/item/reagent_containers/pill/aspirin_para_coffee + name = "aspirin/paracetamol/caffeine pill" + desc = "A mix of Aspirin, Paracetamol and Coffee to produce an effective, but short lasting painkiller with little to no side effects. Do not take multiple at once." + list_reagents = list(/datum/reagent/medicine/painkiller/aspirin_para_coffee = 10) + +/obj/item/storage/pill_bottle/prescription + name = "prescription pill bottle" + desc = "Contains prescription pills." + /// Typepath of pill type to spawn + var/obj/item/reagent_containers/pill/pill_type = null + /// Number of pills to spawn + var/num_pills = 0 + +/obj/item/storage/pill_bottle/prescription/Initialize(mapload) + . = ..() + if(pill_type) + name = "[initial(pill_type.name)] bottle" + if(num_pills) + atom_storage.max_slots = num_pills + atom_storage.max_total_storage = num_pills + +/obj/item/storage/pill_bottle/prescription/PopulateContents() + if(num_pills && pill_type) + for(var/i in 1 to num_pills) + new pill_type(src) + +/obj/item/storage/pill_bottle/painkillers + name = "bottle of painkillers" + desc = "Contains multiple pills used to treat anywhere from mild to extreme pain. CAUTION: Do not take in conjunction with alcohol." + icon = 'monkestation/code/modules/can_spessmen_feel_pain/icons/obj/chemical.dmi' + custom_price = PAYCHECK_CREW * 3 + custom_premium_price = PAYCHECK_CREW * 3 + +/obj/item/storage/pill_bottle/painkillers/Initialize(mapload) + . = ..() + atom_storage.max_slots = 14 + atom_storage.max_total_storage = 14 + +/obj/item/storage/pill_bottle/painkillers/PopulateContents() + for(var/i in 1 to 3) + new /obj/item/reagent_containers/pill/aspirin(src) + for(var/i in 1 to 3) + new /obj/item/reagent_containers/pill/ibuprofen(src) + for(var/i in 1 to 3) + new /obj/item/reagent_containers/pill/paracetamol(src) + for(var/i in 1 to 3) + new /obj/item/reagent_containers/pill/morphine/diluted(src) + for(var/i in 1 to 2) + new /obj/item/reagent_containers/pill/oxycodone(src) + +/obj/item/reagent_containers/hypospray/medipen/morphine + name = "morphine medipen" + desc = "A medipen that contains a dosage of painkilling morphine. \ + WARNING: Do not use in combination with alcohol. Can cause drowsiness and addiction." + icon_state = "morphen" + inhand_icon_state = "morphen" + base_icon_state = "morphen" + list_reagents = list(/datum/reagent/medicine/painkiller/morphine = 10) // Heals ~20 pain (per limb) + +/// Miner pen. Heals about 30 pain to all limbs, causes ~150 addiction points +/obj/item/reagent_containers/hypospray/medipen/survival/painkiller + name = "survival painkiller medipen" + desc = "A medipen that contains a dosage of painkilling chemicals. \ + WARNING: Do not use in combination with alcohol. Can cause drowsiness." + icon = 'monkestation/code/modules/can_spessmen_feel_pain/icons/obj/syringe.dmi' + icon_state = "painkiller_stimpen" + base_icon_state = "painkiller_stimpen" + volume = 30 + amount_per_transfer_from_this = 30 + list_reagents = list( + /datum/reagent/medicine/painkiller/paracetamol = 10, // Heals ~10 pain (per limb) + /datum/reagent/medicine/painkiller/aspirin_para_coffee = 5, // Heals ~7.5 pain (per limb) + /datum/reagent/medicine/painkiller/morphine = 5, // Heals ~10 pain (per limb), causes drowsy + /datum/reagent/medicine/synaptizine = 10, // Cures drowsy from morphine + ) + +/// Medkit pen. Heals about 35 pain to all limbs, causes ~450 addiction points +/obj/item/reagent_containers/hypospray/medipen/emergency_painkiller + name = "emergency painkiller medipen" + desc = "A medipen that contains a dosage of heavy painkilling chemicals. \ + WARNING: Do not use in combination with alcohol. Can cause drowsiness and addiction." + icon = 'monkestation/code/modules/can_spessmen_feel_pain/icons/obj/syringe.dmi' + icon_state = "painkiller" + base_icon_state = "painkiller" + volume = 25 + amount_per_transfer_from_this = 25 + list_reagents = list( + /datum/reagent/medicine/painkiller/oxycodone = 7.5, // Heals ~25 pain (per limb) + /datum/reagent/medicine/painkiller/morphine = 5, // Heals ~10 pain (per limb), causes drowsy + /datum/reagent/medicine/synaptizine = 10, // Cures drowsyness from morphine + ) + +/obj/item/reagent_containers/hypospray/medipen/brute_painkiller + name = "ibaltifen painkiller medipen" + desc = "An autoinjector containing ibaltifen, used to treat pain caused by bruises and broken limbs. WARNING: Do not use in combination with alcohol." + icon = 'monkestation/code/modules/can_spessmen_feel_pain/icons/obj/syringe.dmi' + icon_state = "burn_painkiller_pen" + base_icon_state = "burn_painkiller_pen" + inhand_icon_state = "salacid" + list_reagents = list(/datum/reagent/medicine/painkiller/specialized/ibaltifen = 10) // ~20-25 pain healing (if brute pain, per limb) + +/obj/item/reagent_containers/hypospray/medipen/burn_painkiller + name = "anurifen painkiller medipen" + desc = "An autoinjector containing anurifen, used to treat pain caused by bruises and broken limbs. WARNING: Do not use in combination with alcohol." + icon = 'monkestation/code/modules/can_spessmen_feel_pain/icons/obj/syringe.dmi' + icon_state = "brute_painkiller_pen" + base_icon_state = "brute_painkiller_pen" + inhand_icon_state = "oxapen" + list_reagents = list(/datum/reagent/medicine/painkiller/specialized/anurifen = 10) // ~20-25 pain healing (if burn pain, per limb) + +/datum/armor/shock_blanket + laser = 20 + energy = 20 + bomb = 20 + bio = 10 + fire = 100 + acid = 50 + +/** + * Shock blanket item. Hit someone to cover them with the blanket. + * If they lie down and stay still, it will regulate their body temperature. + */ +/obj/item/shock_blanket + name = "shock blanket" + desc = "A metallic looking plastic blanket specifically designed to well insulate anyone seeking comfort underneath." + icon = 'monkestation/code/modules/can_spessmen_feel_pain/icons/obj/pain_items.dmi' + worn_icon = 'monkestation/code/modules/can_spessmen_feel_pain/icons/mob/pain_items.dmi' + lefthand_file = 'monkestation/code/modules/can_spessmen_feel_pain/icons/mob/inhands/pain_items_lhand.dmi' + righthand_file = 'monkestation/code/modules/can_spessmen_feel_pain/icons/mob/inhands/pain_items_rhand.dmi' + icon_state = "shockblanket" + base_icon_state = "shockblanket" + worn_icon_state = "shockblanket" + drop_sound = 'sound/items/handling/cloth_drop.ogg' + pickup_sound = 'sound/items/handling/cloth_pickup.ogg' + w_class = WEIGHT_CLASS_SMALL + slot_flags = ITEM_SLOT_OCLOTHING + body_parts_covered = CHEST + resistance_flags = FIRE_PROOF + heat_protection = CHEST|GROIN|LEGS|ARMS + cold_protection = CHEST|GROIN|LEGS|ARMS + max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT + min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT + armor_type = /datum/armor/shock_blanket + equip_delay_self = 3 SECONDS + equip_delay_other = 2 SECONDS + slowdown = 1.5 + throwforce = 0 + throw_speed = 1 + throw_range = 2 + custom_price = PAYCHECK_CREW * 2 + +/obj/item/shock_blanket/Initialize(mapload) + . = ..() + if(prob(5)) + name = pick("space blanket", "safety blanket") + + AddElement(/datum/element/bed_tuckable, 0, 0, 0) + AddElement(/datum/element/attack_equip) + +/obj/item/shock_blanket/examine(mob/user) + . = ..() + . += span_notice("To use: Apply to a patient experiencing shock or loss of body temperature. Keep patient still and lying down for maximum effect.") + +/obj/item/shock_blanket/attack_self(mob/user, modifiers) + . = ..() + if(.) + return + if(!user.dropItemToGround(src)) + return + + var/obj/structure/bed/bed_below = locate(/obj/structure/bed) in loc + to_chat(user, span_notice("You lay out [src] on [bed_below ? "[bed_below]" : "the floor"].")) + icon_state = "[initial(icon_state)]_dropped" + layer = MOB_LAYER + +/obj/item/shock_blanket/equipped(mob/user, slot) + . = ..() + if(!isliving(user)) + return + + if(slot_flags & slot) + RegisterSignal(user, list(COMSIG_LIVING_SET_BODY_POSITION, COMSIG_LIVING_SET_BUCKLED), PROC_REF(check_protection)) + RegisterSignal(user, list(COMSIG_QDELETING, COMSIG_MOVABLE_PRE_MOVE), PROC_REF(disable_protection)) + try_enable(user) + +/obj/item/shock_blanket/dropped(mob/user, silent) + . = ..() + disable_protection(user) + UnregisterSignal(user, list(COMSIG_LIVING_SET_BODY_POSITION, COMSIG_LIVING_SET_BUCKLED, COMSIG_QDELETING, COMSIG_MOVABLE_PRE_MOVE)) + + if(locate(/obj/structure/bed) in loc) + icon_state = "[base_icon_state]_dropped" + layer = MOB_LAYER + +/obj/item/shock_blanket/pickup(mob/user) + . = ..() + icon_state = base_icon_state + layer = initial(layer) + +/// If we can enable protection, does so. Returns true on success. +/obj/item/shock_blanket/proc/try_enable(mob/living/source) + if(source.body_position == LYING_DOWN || source.buckled) + enable_protection(source) + return TRUE + return FALSE + +/** + * Check if we should be recieving temperature protection. + * We only give protection if we're lying down or buckled - if we're moving, we don't get anything. + */ +/obj/item/shock_blanket/proc/check_protection(mob/living/source) + SIGNAL_HANDLER + + if(try_enable(source)) + return + + disable_protection(source) + +/** + * Enable the temperature protection. + */ +/obj/item/shock_blanket/proc/enable_protection(mob/living/source) + if(istype(source) && !(datum_flags & DF_ISPROCESSING)) + var/temp_change = "warmer" + if(source.bodytemperature > source.get_body_temp_normal(apply_change = FALSE)) + temp_change = "colder" + + to_chat(source, span_notice("You feel [temp_change] as [src] begins regulating your body temperature.")) + START_PROCESSING(SSobj, src) + +/** + * Disable the temperature protection. + */ +/obj/item/shock_blanket/proc/disable_protection(mob/living/source) + SIGNAL_HANDLER + + if(istype(source) && (datum_flags & DF_ISPROCESSING)) + var/temp_change = "freezing" + if(source.bodytemperature > source.get_body_temp_normal(apply_change = FALSE)) + temp_change = "hotter" + + to_chat(source, span_notice("You feel [temp_change] again as [src] stops regulating your body temperature.")) + + STOP_PROCESSING(SSobj, src) + +/obj/item/shock_blanket/process(seconds_per_tick) + var/mob/living/carbon/wearer = loc + if(!istype(wearer)) + disable_protection() + return + + var/target_temp = wearer.get_body_temp_normal(apply_change = FALSE) + if(wearer.bodytemperature > target_temp) + wearer.adjust_bodytemperature(-8 * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, target_temp) + else if(wearer.bodytemperature < (target_temp + 1)) + wearer.adjust_bodytemperature(8 * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, 0, target_temp) + if(ishuman(wearer)) + var/mob/living/carbon/human/human_wearer = wearer + if(human_wearer.coretemperature > target_temp) + human_wearer.adjust_coretemperature(-8 * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, target_temp) + else if(human_wearer.coretemperature < (target_temp + 1)) + human_wearer.adjust_coretemperature(8 * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, 0, target_temp) + +/obj/item/shock_blanket/emergency + desc = "An emergency variant shock blanket intended to be placed in medkits for field treatment. Faster to apply to patients, but more restrictive to movement." + slowdown = 2.5 + equip_delay_self = 1.2 SECONDS + equip_delay_other = 1.2 SECONDS + +/obj/item/shock_blanket/emergency/Initialize(mapload) + . = ..() + name = "emergency [name]" + +// Change the contents of first-aid kids. +/obj/item/storage/medkit/emergency/Initialize(mapload) + . = ..() + atom_storage.max_specific_storage = WEIGHT_CLASS_SMALL + atom_storage.max_slots = 12 + atom_storage.max_total_storage = 16 + +/obj/item/storage/medkit/emergency/PopulateContents() + if(empty) + return + var/static/list/items_inside = list( + /obj/item/healthanalyzer/simple = 1, + /obj/item/stack/medical/gauze = 1, + /obj/item/stack/medical/suture/emergency = 1, + /obj/item/stack/medical/ointment = 1, + /obj/item/reagent_containers/hypospray/medipen/ekit = 2, + /obj/item/reagent_containers/hypospray/medipen/emergency_painkiller = 2, + /obj/item/storage/pill_bottle/iron = 1, + /obj/item/shock_blanket/emergency = 1, + ) + generate_items_inside(items_inside, src) + +/obj/item/storage/medkit/regular/PopulateContents() + if(empty) + return + var/static/list/items_inside = list( + /obj/item/stack/medical/gauze = 1, + /obj/item/stack/medical/suture = 2, + /obj/item/stack/medical/mesh = 2, + /obj/item/reagent_containers/hypospray/medipen = 1, + /obj/item/reagent_containers/hypospray/medipen/morphine = 1, + ) + generate_items_inside(items_inside, src) + +/obj/item/storage/medkit/brute/PopulateContents() + if(empty) + return + var/static/list/items_inside = list( + /obj/item/reagent_containers/pill/patch/libital = 3, + /obj/item/stack/medical/gauze = 1, + /obj/item/storage/pill_bottle/probital = 1, + /obj/item/reagent_containers/hypospray/medipen/salacid = 1, + /obj/item/reagent_containers/hypospray/medipen/brute_painkiller = 1, + ) + generate_items_inside(items_inside, src) + +/obj/item/storage/medkit/fire/PopulateContents() + if(empty) + return + var/static/list/items_inside = list( + /obj/item/reagent_containers/pill/patch/aiuri = 3, + /obj/item/reagent_containers/spray/hercuri = 1, + /obj/item/stack/medical/ointment = 1, + /obj/item/reagent_containers/hypospray/medipen/oxandrolone = 1, + /obj/item/reagent_containers/hypospray/medipen/burn_painkiller = 1, + ) + generate_items_inside(items_inside, src) + +/obj/item/storage/medkit/advanced/PopulateContents() + if(empty) + return + var/static/list/items_inside = list( + /obj/item/reagent_containers/pill/patch/synthflesh = 3, + /obj/item/storage/pill_bottle/prescription/aspirin_para_coffee = 1, + /obj/item/reagent_containers/hypospray/medipen/atropine = 2, + /obj/item/stack/medical/gauze = 1, + /obj/item/storage/pill_bottle/penacid = 1 + ) + generate_items_inside(items_inside, src) + +// Pain implements added to various vendors. +/obj/machinery/vending/drugs + products_monke = list( + /obj/item/storage/pill_bottle/painkillers = 2, + ) + +/obj/machinery/vending/medical + products_monke = list( + /obj/item/shock_blanket/emergency = 3, + /obj/item/temperature_pack/cold = 2, + /obj/item/temperature_pack/heat = 2, + ) + +/obj/machinery/vending/wallmed + products_monke = list( + /obj/item/shock_blanket/emergency = 2, + /obj/item/temperature_pack/cold = 1, + /obj/item/temperature_pack/heat = 1, + ) + +#undef FROZEN_ITEM_PAIN_RATE +#undef FROZEN_ITEM_PAIN_MODIFIER +#undef FROZEN_ITEM_TEMPERATURE_CHANGE diff --git a/monkestation/code/modules/can_spessmen_feel_pain/pain/pain_goodies.dm b/monkestation/code/modules/can_spessmen_feel_pain/pain/pain_goodies.dm new file mode 100644 index 000000000000..8a37b388760d --- /dev/null +++ b/monkestation/code/modules/can_spessmen_feel_pain/pain/pain_goodies.dm @@ -0,0 +1,3 @@ +/obj/item/storage/pill_bottle/prescription/aspirin_para_coffee + pill_type = /obj/item/reagent_containers/pill/aspirin_para_coffee + num_pills = 3 diff --git a/monkestation/code/modules/can_spessmen_feel_pain/pain/preferences.dm b/monkestation/code/modules/can_spessmen_feel_pain/pain/preferences.dm new file mode 100644 index 000000000000..5e5d3ff76e12 --- /dev/null +++ b/monkestation/code/modules/can_spessmen_feel_pain/pain/preferences.dm @@ -0,0 +1,13 @@ +/datum/preference/toggle/pain_flashes + category = PREFERENCE_CATEGORY_GAME_PREFERENCES + savefile_key = "pain_flashes" + savefile_identifier = PREFERENCE_PLAYER + + default_value = FALSE + +/datum/preference/toggle/pain_messages + category = PREFERENCE_CATEGORY_GAME_PREFERENCES + savefile_key = "pain_messages" + savefile_identifier = PREFERENCE_PLAYER + + default_value = FALSE diff --git a/monkestation/code/modules/can_spessmen_feel_pain/pain/reagents/modified_reagents.dm b/monkestation/code/modules/can_spessmen_feel_pain/pain/reagents/modified_reagents.dm new file mode 100644 index 000000000000..fa0289905d61 --- /dev/null +++ b/monkestation/code/modules/can_spessmen_feel_pain/pain/reagents/modified_reagents.dm @@ -0,0 +1,175 @@ +// -- Reagents that modify pain. -- +/datum/reagent + /// Modifier applied by this reagent to the mob's pain. + /// This is both a multiplicative modifier to their overall received pain, + /// and an additive modifier to their per tick pain decay rate. + var/pain_modifier = null + +/datum/reagent/on_mob_metabolize(mob/living/carbon/user) + . = ..() + // hi melbert, this should have SHOULD_CALL_PARENT(TRUE) + if(isnull(pain_modifier) || !istype(user)) + return + + if(user.set_pain_mod("[PAIN_MOD_CHEMS]-[name]", pain_modifier) && !user.can_feel_pain()) + // If the painkiller's strong enough give them an alert + user.throw_alert("numbed", /atom/movable/screen/alert/numbed) + +/datum/reagent/on_mob_end_metabolize(mob/living/carbon/user) + . = ..() + if(isnull(pain_modifier) || !istype(user)) + return + user.unset_pain_mod("[PAIN_MOD_CHEMS]-[name]") + +/datum/reagent/on_mob_delete(mob/living/L) + . = ..() + if(!isnull(pain_modifier) && L.can_feel_pain()) + L.clear_alert("numbed") + +// Muscle stimulant is functionally morphine without downsides (it's rare) +/datum/reagent/medicine/muscle_stimulant + pain_modifier = 0.5 + +// Epinephrine helps pain very very slightly and helps against shock +/datum/reagent/medicine/epinephrine + pain_modifier = 0.9 + +/datum/reagent/medicine/epinephrine/on_mob_metabolize(mob/living/carbon/M) + ..() + ADD_TRAIT(M, TRAIT_ABATES_SHOCK, type) + +/datum/reagent/medicine/epinephrine/on_mob_end_metabolize(mob/living/carbon/M) + REMOVE_TRAIT(M, TRAIT_ABATES_SHOCK, type) + ..() + +/datum/reagent/medicine/epinephrine/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired) + . = ..() + affected_mob.adjust_pain_shock(-1) + +// Atropine fills a simliar niche to epinephrine +/datum/reagent/medicine/atropine + pain_modifier = 0.8 + +/datum/reagent/medicine/atropine/on_mob_metabolize(mob/living/carbon/M) + ..() + ADD_TRAIT(M, TRAIT_ABATES_SHOCK, type) + +/datum/reagent/medicine/atropine/on_mob_end_metabolize(mob/living/carbon/M) + REMOVE_TRAIT(M, TRAIT_ABATES_SHOCK, type) + ..() + +/datum/reagent/medicine/atropine/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired) + . = ..() + affected_mob.adjust_pain_shock(-2) + +// Miner's salve is described as a good painkiller +/datum/reagent/medicine/mine_salve + pain_modifier = 0.66 + +// Determined = fight or flight mode = should have less pain +/datum/reagent/determination + pain_modifier = 0.8 + +// Drugs reduce pain +/datum/reagent/drug/space_drugs + pain_modifier = 0.8 + +/datum/reagent/toxin/fentanyl + pain_modifier = 0.5 + +/datum/reagent/drug/cocaine + pain_modifier = 0.4 + +//Alcohol reduces pain based on boozepwr +/datum/reagent/consumable/ethanol/New() + if(boozepwr && isnull(pain_modifier)) + var/new_pain_modifier = 12 / (boozepwr * 0.2) + if(new_pain_modifier < 1) + pain_modifier = new_pain_modifier + return ..() + +/datum/reagent/consumable/ethanol/painkiller + pain_modifier = 0.75 + +// Abductor chem sets pain mod to 0 so abductors can do their surgeries +/datum/reagent/medicine/cordiolis_hepatico + pain_modifier = 0 + +// Healium functions as an anesthetic +/datum/reagent/healium + pain_modifier = 0.75 + +/datum/reagent/healium/on_mob_metabolize(mob/living/L) + . = ..() + L.apply_status_effect(/datum/status_effect/grouped/anesthetic, name) + +/datum/reagent/healium/on_mob_end_metabolize(mob/living/L) + . = ..() + L.remove_status_effect(/datum/status_effect/grouped/anesthetic, name) + +// Nitrous Oxide can apply some anesthetic, like the gas +/datum/reagent/nitrous_oxide + pain_modifier = 0.75 + +/datum/reagent/nitrous_oxide/on_mob_metabolize(mob/living/carbon/user) + . = ..() + RegisterSignal(user, SIGNAL_ADDTRAIT(TRAIT_KNOCKEDOUT), PROC_REF(apply_anesthetic)) + RegisterSignal(user, SIGNAL_REMOVETRAIT(TRAIT_KNOCKEDOUT), PROC_REF(remove_anesthetic)) + if(HAS_TRAIT(user, TRAIT_KNOCKEDOUT)) + apply_anesthetic(user) + +/datum/reagent/nitrous_oxide/on_mob_end_metabolize(mob/living/carbon/user) + . = ..() + UnregisterSignal(user, list(SIGNAL_ADDTRAIT(TRAIT_KNOCKEDOUT), SIGNAL_REMOVETRAIT(TRAIT_KNOCKEDOUT))) + remove_anesthetic(user) + +/datum/reagent/nitrous_oxide/proc/apply_anesthetic(mob/living/carbon/source) + SIGNAL_HANDLER + source.apply_status_effect(/datum/status_effect/grouped/anesthetic, type) + +/datum/reagent/nitrous_oxide/proc/remove_anesthetic(mob/living/carbon/source) + SIGNAL_HANDLER + source.remove_status_effect(/datum/status_effect/grouped/anesthetic, type) + +// Cryoxadone slowly heals pain, like wounds. +// It also helps against shock, sort of. +/datum/reagent/medicine/cryoxadone/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired) + . = ..() + if(!.) + return + var/power = -0.00003 * (affected_mob.bodytemperature ** 2) + 3 + + ADD_TRAIT(affected_mob, TRAIT_ABATES_SHOCK, type) // To negate the fact that being cold is bad for shock + affected_mob.set_pain_mod(type, 0.5) // Heal pain faster + affected_mob.cause_pain(BODY_ZONES_ALL, -0.5 * power * REM * seconds_per_tick) + affected_mob.adjust_pain_shock(-power * REM * seconds_per_tick) + +/datum/reagent/medicine/cryoxadone/on_mob_end_metabolize(mob/living/carbon/user) + . = ..() + user.unset_pain_mod(type) + REMOVE_TRAIT(user, TRAIT_ABATES_SHOCK, type) + +// Saline glucose helps shock +/datum/reagent/medicine/salglu_solution/on_mob_metabolize(mob/living/carbon/M) + . = ..() + ADD_TRAIT(M, TRAIT_ABATES_SHOCK, type) + +/datum/reagent/medicine/salglu_solution/on_mob_end_metabolize(mob/living/carbon/M) + REMOVE_TRAIT(M, TRAIT_ABATES_SHOCK, type) + return ..() + +// Combat stimulants help against pain +/datum/reagent/medicine/stimulants + pain_modifier = 0.5 + +/datum/reagent/medicine/changelingadrenaline + pain_modifier = 0.5 + +// Diphenhydrame helps against disgust slightly +/datum/reagent/medicine/diphenhydramine/on_mob_life(mob/living/carbon/M, seconds_per_tick, times_fired) + . = ..() + M.adjust_disgust(-3 * REM * seconds_per_tick ) + +/datum/reagent/consumable/laughter/on_mob_metabolize(mob/living/carbon/user) + pain_modifier = pick(0.8, 1, 1, 1, 1, 1.2) + return ..() diff --git a/monkestation/code/modules/can_spessmen_feel_pain/pain/reagents/painkiller_related.dm b/monkestation/code/modules/can_spessmen_feel_pain/pain/reagents/painkiller_related.dm new file mode 100644 index 000000000000..5a763b6da3b7 --- /dev/null +++ b/monkestation/code/modules/can_spessmen_feel_pain/pain/reagents/painkiller_related.dm @@ -0,0 +1,50 @@ +// These chems are related to painkillers tangentially + +// Component in ibuprofen. +/datum/reagent/propionic_acid + name = "Propionic Acid" + description = "A pungent liquid that's often used in preservatives and synthesizing of other chemicals." + reagent_state = LIQUID + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + color = "#c7a9c9" + ph = 7 + +// Diphenhydramine can be upgraded into Dimenhydrinate, less good against allergens but better against nausea +/datum/reagent/medicine/dimenhydrinate + name = "Dimenhydrinate" + description = "Helps combat nausea and motion sickness." + reagent_state = LIQUID + color = "#98ffee" + metabolization_rate = 0.5 * REAGENTS_METABOLISM + ph = 10.6 + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + +/datum/reagent/medicine/dimenhydrinate/on_mob_life(mob/living/carbon/M, seconds_per_tick, times_fired) + . = ..() + M.adjust_disgust(-8 * REM * seconds_per_tick) + if(M.nutrition > NUTRITION_LEVEL_FULL - 25) // Boosts hunger to a bit, assuming you've been vomiting + M.adjust_nutrition(2 * HUNGER_FACTOR * REM * seconds_per_tick) + +/datum/chemical_reaction/medicine/dimenhydrinate + results = list(/datum/reagent/medicine/dimenhydrinate = 3) + required_reagents = list(/datum/reagent/medicine/diphenhydramine = 1, /datum/reagent/nitrogen = 1, /datum/reagent/chlorine = 1) + optimal_ph_max = 12.5 + reaction_tags = REACTION_TAG_MODERATE | REACTION_TAG_HEALING | REACTION_TAG_OTHER | REACTION_TAG_DRUG + +// Good against nausea, easier to make than Dimenhydrinate +/datum/reagent/medicine/ondansetron + name = "Ondansetron" + description = "Prevents nausea and vomiting." + reagent_state = LIQUID + color = "#74d3ff" + metabolization_rate = 0.5 * REAGENTS_METABOLISM + ph = 10.6 + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + +/datum/reagent/medicine/ondansetron/on_mob_life(mob/living/carbon/M, seconds_per_tick, times_fired) + . = ..() + if(SPT_PROB(8, seconds_per_tick)) + M.adjust_drowsiness(2 SECONDS * REM * seconds_per_tick) + if(SPT_PROB(15, seconds_per_tick) && M.get_bodypart_pain(BODY_ZONE_HEAD) <= PAIN_HEAD_MAX / 4) + M.cause_pain(BODY_ZONE_HEAD, 4) + M.adjust_disgust(-10 * REM * seconds_per_tick) diff --git a/monkestation/code/modules/can_spessmen_feel_pain/pain/reagents/painkillers.dm b/monkestation/code/modules/can_spessmen_feel_pain/pain/reagents/painkillers.dm new file mode 100644 index 000000000000..a217837a0e06 --- /dev/null +++ b/monkestation/code/modules/can_spessmen_feel_pain/pain/reagents/painkillers.dm @@ -0,0 +1,481 @@ + +/datum/chemical_reaction/medicine/ondansetron + results = list(/datum/reagent/medicine/ondansetron = 3) + required_reagents = list(/datum/reagent/fuel/oil = 1, /datum/reagent/nitrogen = 1, /datum/reagent/oxygen = 1) + required_catalysts = list(/datum/reagent/consumable/ethanol = 3) + optimal_ph_max = 11 + reaction_tags = REACTION_TAG_EASY | REACTION_TAG_HEALING | REACTION_TAG_OTHER | REACTION_TAG_DRUG + +/datum/chemical_reaction/medicine/aspirin + results = list(/datum/reagent/medicine/painkiller/aspirin = 3) + required_reagents = list(/datum/reagent/medicine/sal_acid = 1, /datum/reagent/acetone = 1, /datum/reagent/oxygen = 1) + required_catalysts = list(/datum/reagent/toxin/acid = 1) + reaction_tags = REACTION_TAG_MODERATE | REACTION_TAG_HEALING | REACTION_TAG_OTHER | REACTION_TAG_DRUG + +/datum/chemical_reaction/medicine/paracetamol + results = list(/datum/reagent/medicine/painkiller/paracetamol = 5) + required_reagents = list(/datum/reagent/phenol = 1, /datum/reagent/acetone = 1, /datum/reagent/hydrogen = 1, /datum/reagent/oxygen = 1, /datum/reagent/toxin/acid/nitracid = 1) + optimal_temp = 480 + reaction_tags = REACTION_TAG_MODERATE | REACTION_TAG_HEALING | REACTION_TAG_OTHER | REACTION_TAG_DRUG + +/datum/chemical_reaction/medicine/ibuprofen + results = list(/datum/reagent/medicine/painkiller/ibuprofen = 5) + required_reagents = list(/datum/reagent/propionic_acid = 1, /datum/reagent/phenol = 1, /datum/reagent/oxygen = 1, /datum/reagent/hydrogen = 1) + reaction_tags = REACTION_TAG_MODERATE | REACTION_TAG_HEALING | REACTION_TAG_OTHER | REACTION_TAG_DRUG + +/datum/chemical_reaction/propionic_acid + results = list(/datum/reagent/propionic_acid = 3) + required_reagents = list(/datum/reagent/carbon = 1, /datum/reagent/oxygen = 1, /datum/reagent/hydrogen = 1) + required_catalysts = list(/datum/reagent/toxin/acid = 1) + is_cold_recipe = TRUE + required_temp = 250 + optimal_temp = 200 + overheat_temp = 50 + reaction_tags = REACTION_TAG_EASY | REACTION_TAG_CHEMICAL + +/datum/chemical_reaction/medicine/aspirin_para_coffee + results = list(/datum/reagent/medicine/painkiller/aspirin_para_coffee = 3) + required_reagents = list(/datum/reagent/medicine/painkiller/aspirin = 1, /datum/reagent/medicine/painkiller/paracetamol = 1, /datum/reagent/consumable/coffee = 1) + optimal_ph_min = 2 + optimal_ph_max = 12 + reaction_tags = REACTION_TAG_MODERATE | REACTION_TAG_HEALING | REACTION_TAG_OTHER | REACTION_TAG_DRUG + +/datum/chemical_reaction/medicine/ibaltifen + results = list(/datum/reagent/medicine/painkiller/specialized/ibaltifen = 3) + required_reagents = list(/datum/reagent/propionic_acid = 1, /datum/reagent/chlorine = 1, /datum/reagent/copper = 1) + required_catalysts = list(/datum/reagent/medicine/c2/libital = 1) + reaction_tags = REACTION_TAG_MODERATE | REACTION_TAG_HEALING | REACTION_TAG_OTHER | REACTION_TAG_DRUG + +/datum/chemical_reaction/medicine/anurifen + results = list(/datum/reagent/medicine/painkiller/specialized/anurifen = 3) + required_reagents = list(/datum/reagent/propionic_acid= 1, /datum/reagent/fluorine = 1, /datum/reagent/phosphorus = 1) + required_catalysts = list(/datum/reagent/medicine/c2/aiuri = 1) + reaction_tags = REACTION_TAG_MODERATE | REACTION_TAG_HEALING | REACTION_TAG_OTHER | REACTION_TAG_DRUG + +// Not really reactions, but I'm leaving these here +// Gain oxycodone from juicing poppies +/obj/item/food/grown/poppy + juice_results = list(/datum/reagent/medicine/painkiller/oxycodone = 0) + +/obj/item/food/grown/poppy/geranium + juice_results = list() + +/obj/item/food/grown/poppy/lily + juice_results = list() + +// Painkillers! They help with pain. +/datum/reagent/medicine/painkiller + name = "prescription painkiller" + +/datum/reagent/medicine/painkiller/on_mob_life(mob/living/carbon/M, seconds_per_tick, times_fired) + . = ..() + + // Painkillers make you numb. + if(current_cycle >= 5) + switch(pain_modifier) + if(0 to 0.45) + M.add_mood_event("numb", /datum/mood_event/narcotic_heavy, name) + if(0.45 to 0.55) + M.add_mood_event("numb", /datum/mood_event/narcotic_medium, name) + else + M.add_mood_event("numb", /datum/mood_event/narcotic_light, name) + + // However, drinking with painkillers is toxic. + var/highest_boozepwr = 0 + for(var/datum/reagent/consumable/ethanol/alcohol in M.reagents.reagent_list) + if(alcohol.boozepwr > highest_boozepwr) + highest_boozepwr = alcohol.boozepwr + + if(highest_boozepwr > 0) + M.apply_damage(round(highest_boozepwr / 33, 0.5) * REM * seconds_per_tick, TOX) + . = TRUE + +// Morphine is the well known existing painkiller. +// It's very strong but makes you sleepy. Also addictive. +/datum/reagent/medicine/painkiller/morphine + name = "Morphine" + description = "A painkiller that allows the patient to move at full speed even when injured. \ + Causes drowsiness and eventually unconsciousness in high doses. \ + Overdose causes minor dizziness and jitteriness." + reagent_state = LIQUID + color = "#A9FBFB" + metabolization_rate = 0.5 * REAGENTS_METABOLISM // 0.1 units per second + overdose_threshold = 30 + ph = 8.96 + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + addiction_types = list(/datum/addiction/opioids = 30) //5u = 100 progress, 25-30u = addiction + // Morphine is THE painkiller + pain_modifier = 0.4 + +/datum/reagent/medicine/painkiller/morphine/on_mob_metabolize(mob/living/L) + . = ..() + L.add_movespeed_mod_immunities(type, /datum/movespeed_modifier/damage_slowdown) + +/datum/reagent/medicine/painkiller/morphine/on_mob_end_metabolize(mob/living/L) + L.remove_movespeed_mod_immunities(type, /datum/movespeed_modifier/damage_slowdown) + return ..() + +/datum/reagent/medicine/painkiller/morphine/on_mob_life(mob/living/carbon/M, seconds_per_tick, times_fired) + // Morphine heals a very tiny bit + M.adjustBruteLoss(-0.2 * REM * seconds_per_tick, FALSE) + M.adjustFireLoss(-0.1 * REM * seconds_per_tick, FALSE) + // Morphine heals pain, dur + M.cause_pain(BODY_ZONES_ALL, -2.5) + // Morphine causes a bit of disgust + if(M.disgust < DISGUST_LEVEL_VERYGROSS && SPT_PROB(50 * max(1 - creation_purity, 0.5), seconds_per_tick)) + M.adjust_disgust(2 * REM * seconds_per_tick) + + // The longer we're metabolzing it, the more we get sleepy + // for reference: (with 0.1 metabolism rate) + // ~2.5 units = 12 cycles = ~30 seconds + switch(current_cycle) + if(64) //~12 + to_chat(M, span_warning("You start to feel tired...")) + M.adjust_eye_blur(2 SECONDS * REM * seconds_per_tick) // just a hint teehee + if(prob(50)) + M.emote("yawn") + + if(96 to 144) // 20 to 30u + if(SPT_PROB(33, seconds_per_tick)) + M.adjust_drowsiness_up_to(1 * REM * seconds_per_tick, 6 SECONDS) + + if(144 to 192) // 30u to 40u + if(SPT_PROB(66, seconds_per_tick)) + M.adjust_drowsiness_up_to(1 * REM * seconds_per_tick, 12 SECONDS) + + if(192 to INFINITY) //40u onward + M.adjust_drowsiness_up_to(1 * REM * seconds_per_tick, 20 SECONDS) + M.Sleeping(4 SECONDS * REM * seconds_per_tick) + + ..() + return TRUE + +/datum/reagent/medicine/painkiller/morphine/overdose_process(mob/living/M, seconds_per_tick, times_fired) + ..() + if(SPT_PROB(18, seconds_per_tick)) + M.drop_all_held_items() + M.set_dizzy_if_lower(4 SECONDS) + M.set_jitter_if_lower(4 SECONDS) + +// Aspirin. Bad at headaches, good at everything else, okay at fevers. +// Use healing chest and limb pain primarily. +/datum/reagent/medicine/painkiller/aspirin + name = "Aspirin" + description = "A medication that combats pain and fever. Can cause mild nausea. Overdosing is toxic, and causes high body temperature, sickness, hallucinations, dizziness, and confusion." + reagent_state = LIQUID + color = "#9c46ff" + metabolization_rate = 0.25 * REAGENTS_METABOLISM + overdose_threshold = 25 + ph = 6.4 + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + pain_modifier = 0.6 + +/datum/reagent/medicine/painkiller/aspirin/on_mob_life(mob/living/carbon/M, seconds_per_tick, times_fired) + // Not good at headaches, but very good at treating everything else. + M.adjustBruteLoss(-0.1 * REM * seconds_per_tick, FALSE) + M.adjustFireLoss(-0.05 * REM * seconds_per_tick, FALSE) + // Numbers seem low, but our metabolism is very slow + M.cause_pain(BODY_ZONE_HEAD, -0.08 * REM * seconds_per_tick) + M.cause_pain(BODY_ZONES_LIMBS, -0.16 * REM * seconds_per_tick) + M.cause_pain(BODY_ZONE_CHEST, -0.32 * REM * seconds_per_tick) + // Okay at fevers. + M.adjust_bodytemperature(-15 * TEMPERATURE_DAMAGE_COEFFICIENT * REM * seconds_per_tick, M.get_body_temp_normal()) + if(M.disgust < DISGUST_LEVEL_VERYGROSS && SPT_PROB(66 * max(1 - creation_purity, 0.5), seconds_per_tick)) + M.adjust_disgust(1.5 * REM * seconds_per_tick) + + ..() + return TRUE + +/datum/reagent/medicine/painkiller/aspirin/overdose_process(mob/living/carbon/M, seconds_per_tick, times_fired) + if(!istype(M)) + return + + // On overdose, heat up the body... + M.adjust_bodytemperature(30 * TEMPERATURE_DAMAGE_COEFFICIENT * REM * seconds_per_tick) + // Causes sickness... + M.apply_damage(1 * REM * seconds_per_tick, TOX) + if(M.disgust < 100 && SPT_PROB(100 * max(1 - creation_purity, 0.5), seconds_per_tick)) + M.adjust_disgust(3 * REM * seconds_per_tick) + // ...Hallucinations after a while... + if(current_cycle >= 15 && SPT_PROB(75 * max(1 - creation_purity, 0.5), seconds_per_tick)) + M.adjust_hallucinations_up_to(6 SECONDS * REM * seconds_per_tick, 40 SECONDS) + // ...Dizziness after a longer while... + if(current_cycle >= 20 && SPT_PROB(50 * max(1 - creation_purity, 0.5), seconds_per_tick)) + M.adjust_dizzy_up_to(2 SECONDS * REM * seconds_per_tick, 10 SECONDS) + // ...And finally, confusion + if(current_cycle >= 25 && SPT_PROB(30 * max(1 - creation_purity, 0.5), seconds_per_tick)) + M.adjust_confusion_up_to(4 SECONDS, 12 SECONDS) + ..() + return TRUE + +// Paracetamol. Okay at headaches, okay at everything else, bad at fevers, less disgust. +// Use for general healing every type of pain. +/datum/reagent/medicine/painkiller/paracetamol // Also known as Acetaminophen, or Tylenol + name = "Paracetamol" + description = "A painkiller that combats mind to moderate pain, headaches, and low fever. Causes mild nausea. Overdosing causes liver damage, sickness, and can be lethal." + reagent_state = LIQUID + color = "#fcaeff" + metabolization_rate = 0.25 * REAGENTS_METABOLISM + overdose_threshold = 25 + ph = 4.7 + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + pain_modifier = 0.6 + +/datum/reagent/medicine/painkiller/paracetamol/on_mob_life(mob/living/carbon/M, seconds_per_tick, times_fired) + // Good general painkiller. + // Numbers seem lowish, but our metabolism is very slow + M.adjustBruteLoss(-0.05 * REM * seconds_per_tick, FALSE) + M.adjustFireLoss(-0.05 * REM * seconds_per_tick, FALSE) + M.adjustToxLoss(-0.05 * REM * seconds_per_tick, FALSE) + M.cause_pain(BODY_ZONES_ALL, -0.2 * REM * seconds_per_tick) + // Not very good at treating fevers. + M.adjust_bodytemperature(-10 * TEMPERATURE_DAMAGE_COEFFICIENT * REM * seconds_per_tick, M.get_body_temp_normal()) + // Causes liver damage - higher dosages causes more liver damage. + M.adjustOrganLoss(ORGAN_SLOT_LIVER, volume / 30 * REM * seconds_per_tick) + if(M.disgust < DISGUST_LEVEL_VERYGROSS && SPT_PROB(66 * max(1 - creation_purity, 0.5), seconds_per_tick)) + M.adjust_disgust(1.2 * REM * seconds_per_tick) + + ..() + return TRUE + +/datum/reagent/medicine/painkiller/paracetamol/overdose_process(mob/living/carbon/M, seconds_per_tick, times_fired) + if(!istype(M)) + return + + // On overdose, cause sickness and liver damage. + M.adjustOrganLoss(ORGAN_SLOT_LIVER, 2 * REM * seconds_per_tick) + if(M.disgust < 100 && SPT_PROB(100 * max(1 - creation_purity, 0.5), seconds_per_tick)) + M.adjust_disgust(3 * REM * seconds_per_tick) + + return ..() + +// Ibuprofen. Best at headaches, best at fevers, less good at everything else. +// Use for treating head pain primarily. +/datum/reagent/medicine/painkiller/ibuprofen // Also known as Advil + name = "Ibuprofen" + description = "A medication that combats mild pain, headaches, and fever. Causes mild nausea and dizziness in higher dosages. Overdosing causes sickness, drowsiness, dizziness, and mild pain." + reagent_state = LIQUID + color = "#e695ff" + metabolization_rate = 0.25 * REAGENTS_METABOLISM + overdose_threshold = 30 + ph = 5.6 + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + pain_modifier = 0.6 + +/datum/reagent/medicine/painkiller/ibuprofen/on_mob_life(mob/living/carbon/M, seconds_per_tick, times_fired) + // Really good at treating headaches. + M.adjustBruteLoss(-0.05 * REM * seconds_per_tick, FALSE) + M.adjustToxLoss(-0.1 * REM * seconds_per_tick, FALSE) + // Heals pain, numbers seem low but our metabolism is very slow + M.cause_pain(BODY_ZONE_HEAD, -0.32 * REM * seconds_per_tick) + M.cause_pain(BODY_ZONE_CHEST, -0.16 * REM * seconds_per_tick) + M.cause_pain(BODY_ZONES_LIMBS, -0.08 * REM * seconds_per_tick) + // Causes flat liver damage. + M.adjustOrganLoss(ORGAN_SLOT_LIVER, 0.25 * REM * seconds_per_tick) + // Really good at treating fevers. + M.adjust_bodytemperature(-25 * TEMPERATURE_DAMAGE_COEFFICIENT * REM * seconds_per_tick, M.get_body_temp_normal()) + // Causes more disgust the longer it's in someone... + if(M.disgust < DISGUST_LEVEL_VERYGROSS && SPT_PROB(66 * max(1 - creation_purity, 0.5), seconds_per_tick)) + M.adjust_disgust(min(current_cycle * 0.02, 2.4) * REM * seconds_per_tick) + // ...and dizziness. + if(current_cycle >= 25 && SPT_PROB(30 * max(1 - creation_purity, 0.5), seconds_per_tick)) + M.adjust_dizzy_up_to(2 SECONDS * REM * seconds_per_tick, 10 SECONDS) + + ..() + return TRUE + +/datum/reagent/medicine/painkiller/ibuprofen/overdose_process(mob/living/carbon/M, seconds_per_tick, times_fired) + if(!istype(M)) + return + + // On overdose, causes liver damage and chest pain... + M.adjustOrganLoss(ORGAN_SLOT_LIVER, 1.5 * REM * seconds_per_tick) + M.cause_pain(BODY_ZONE_CHEST, 0.24 * REM * seconds_per_tick) + // Sickness... + if(M.disgust < 100 && SPT_PROB(100 * max(1 - creation_purity, 0.5), seconds_per_tick)) + M.adjust_disgust(3 * REM * seconds_per_tick) + // ...Drowsyness... + if(SPT_PROB(75 * max(1 - creation_purity, 0.5), seconds_per_tick)) + M.adjust_drowsiness(2 SECONDS * REM * seconds_per_tick) + // ...And dizziness + if(SPT_PROB(85 * max(1 - creation_purity, 0.5), seconds_per_tick)) + M.adjust_dizzy(4 SECONDS * REM * seconds_per_tick) + + return ..() + +// Combination drug of other painkillers. It's a real thing. Less side effects, heals pain generally, mildly toxic in high doses. +// Upgrade to paracetamol and aspirin if you go through the effort to get coffee. +/datum/reagent/medicine/painkiller/aspirin_para_coffee + name = "aspirin/paracetamol/caffeine" + description = "A combination drug that effectively treats moderate pain with low side effects when used in low dosage. Toxic in higher dosages." + reagent_state = LIQUID + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + color = "#e695ff" + metabolization_rate = REAGENTS_METABOLISM + pain_modifier = 0.75 + +/datum/reagent/medicine/painkiller/aspirin_para_coffee/on_mob_life(mob/living/carbon/M, seconds_per_tick, times_fired) + // Heals all pain a bit if in low dosage. + if(volume <= 10) + // Number looks high, compared to other painkillers, + // but we have a comparatively much higher metabolism than them. + M.cause_pain(BODY_ZONES_ALL, -2.8 * REM * seconds_per_tick) + // Mildly toxic in higher dosages. + else if(SPT_PROB(volume * 3, seconds_per_tick)) + M.apply_damage(3 * REM * seconds_per_tick, TOX) + . = TRUE + + ..() + +// Oxycodone. Very addictive, heals pain very fast, also a drug. +/datum/reagent/medicine/painkiller/oxycodone + name = "Oxycodone" + description = "A drug that rapidly treats major to extreme pain. Highly addictive. Overdose can cause heart attacks." + reagent_state = LIQUID + color = "#ffcb86" + metabolization_rate = 0.5 * REAGENTS_METABOLISM + overdose_threshold = 30 + ph = 5.6 + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + addiction_types = list(/datum/addiction/opioids = 45) //5u = 150 progress, 15-20u = addiction + pain_modifier = 0.35 + +/datum/reagent/medicine/painkiller/oxycodone/on_mob_life(mob/living/carbon/M, seconds_per_tick, times_fired) + M.adjustBruteLoss(-0.3 * REM * seconds_per_tick, FALSE) + M.adjustFireLoss(-0.2 * REM * seconds_per_tick, FALSE) + M.cause_pain(BODY_ZONES_ALL, -3.4 * REM * seconds_per_tick) + M.set_drugginess(20 SECONDS * REM * seconds_per_tick) + if(M.disgust < DISGUST_LEVEL_VERYGROSS && SPT_PROB(40, seconds_per_tick)) + M.adjust_disgust(2 * REM * seconds_per_tick) + if(SPT_PROB(33, seconds_per_tick)) + M.adjust_dizzy_up_to(2 SECONDS * REM * seconds_per_tick, 10 SECONDS) + + ..() + return TRUE + +/datum/reagent/medicine/painkiller/oxycodone/overdose_process(mob/living/carbon/M, seconds_per_tick, times_fired) + . = ..() + if(!ishuman(M)) + return + + var/mob/living/carbon/human/human_mob = M + if(SPT_PROB(12, seconds_per_tick)) + var/can_heart_fail = (!human_mob.undergoing_cardiac_arrest() && human_mob.can_heartattack()) + var/picked_option = rand(1, (can_heart_fail ? 6 : 3)) + switch(picked_option) + if(1) + to_chat(human_mob, span_danger("Your legs don't want to move.")) + human_mob.Paralyze(6 SECONDS * REM * seconds_per_tick) + if(2) + to_chat(human_mob, span_danger("Your breathing starts to shallow.")) + human_mob.losebreath = clamp(human_mob.losebreath + 3 * REM * seconds_per_tick, 0, 12) + human_mob.apply_damage((15 / creation_purity), OXY) + if(3) + human_mob.drop_all_held_items() + if(4) + to_chat(human_mob, span_danger("You feel your heart skip a beat.")) + human_mob.set_jitter_if_lower(6 SECONDS * REM * seconds_per_tick) + if(5) + to_chat(human_mob, span_danger("You feel the world spin.")) + human_mob.set_dizzy_if_lower(6 SECONDS * REM * seconds_per_tick) + if(6) + to_chat(human_mob, span_userdanger("You feel your heart seize and stop completely!")) + if(human_mob.stat == CONSCIOUS) + human_mob.visible_message(span_userdanger("[human_mob] clutches at [human_mob.p_their()] chest as if [human_mob.p_their()] heart stopped!"), ignored_mobs = human_mob) + human_mob.emote("scream") + human_mob.set_heartattack(TRUE) + metabolization_rate *= 4 + return TRUE + +/datum/reagent/medicine/painkiller/hydromorphone + name = "Hydromorphone" + description = "Pretty sure you wouldn't be able to feel anything" + reagent_state = LIQUID + color = "#ffcb86" + metabolization_rate = 0.5 * REAGENTS_METABOLISM + pain_modifier = 0.1 + +/datum/reagent/medicine/painkiller/hydromorphone/on_mob_life(mob/living/carbon/M, seconds_per_tick, times_fired) + M.cause_pain(BODY_ZONES_ALL, -12 * REM * seconds_per_tick) + ..() + +// Future painkiller ideas: +// - Real world stuff +// Tramadol +// Fentanyl (Rework) (Also a potential anesthetic) +// Hydrocodone (And its combination drugs) +// Dihydromorphine +// Pethidine +// - Space stuff (Suffix: -fen) + +// A subtype of painkillers that will heal pain better +// depending on what type of pain the part's feeling +/datum/reagent/medicine/painkiller/specialized + name = "specialized painkiller" + addiction_types = list(/datum/addiction/opioids = 15) //5u = 50 progress, 60u = addiction + + /// How much pain we restore on life ticks, modified by modifiers (yeah?) + var/pain_heal_amount = 2.4 + /// What type of pain are we looking for? If we aren't experiencing this type, it will be 10x less effective + var/pain_type_to_look_for + /// What type of wound are we looking for? If our bodypart has this wound, it will be 1.5x more effective + var/wound_type_to_look_for + +/datum/reagent/medicine/painkiller/specialized/on_mob_life(mob/living/carbon/M, seconds_per_tick, times_fired) + . = ..() + if(!M.pain_controller) + return + + for(var/obj/item/bodypart/part as anything in M.bodyparts) + if(!IS_ORGANIC_LIMB(part)) + continue + + var/final_pain_heal_amount = -1 * pain_heal_amount * REM * seconds_per_tick + if(pain_type_to_look_for && (part.last_received_pain_type != pain_type_to_look_for)) + final_pain_heal_amount *= 0.1 + if(wound_type_to_look_for && (locate(wound_type_to_look_for) in part.wounds)) + final_pain_heal_amount *= 1.5 + + M.cause_pain(part.body_zone, final_pain_heal_amount) + +// Libital, but helps pain: ib-alti-fen +// Heals lots of pain for bruise pain, otherwise lower +/datum/reagent/medicine/painkiller/specialized/ibaltifen + name = "Ibaltifen" + description = "A painkiller designed to combat pain caused by broken limbs and bruises." + reagent_state = LIQUID + color = "#feffae" + metabolization_rate = 0.5 * REAGENTS_METABOLISM + ph = 7.9 + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + pain_modifier = 0.75 + pain_type_to_look_for = BRUTE + wound_type_to_look_for = /datum/wound/blunt + +/datum/reagent/medicine/painkiller/specialized/ibaltifen/on_mob_life(mob/living/carbon/M, seconds_per_tick, times_fired) + // a bit of libital influence + M.adjustOrganLoss(ORGAN_SLOT_LIVER, 0.5 * REM * seconds_per_tick) + M.adjustBruteLoss(-0.5 * REM * normalise_creation_purity() * seconds_per_tick) + ..() + return TRUE + +// Aiuri, but helps pain: an-uri-fen +// Heals lots of pain for burn pain, otherwise lower +/datum/reagent/medicine/painkiller/specialized/anurifen + name = "Anurifen" + description = "A painkiller designed to combat pain caused by burns." + reagent_state = LIQUID + color = "#c4aeff" + metabolization_rate = 0.5 * REAGENTS_METABOLISM + ph = 3.6 + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + pain_modifier = 0.75 + pain_type_to_look_for = BURN + wound_type_to_look_for = /datum/wound/burn + +/datum/reagent/medicine/painkiller/specialized/anurifen/on_mob_life(mob/living/carbon/M, seconds_per_tick, times_fired) + // a bit of aiuri influence + M.adjustOrganLoss(ORGAN_SLOT_EYES, 0.4 * REM * seconds_per_tick) + M.adjustFireLoss(-0.5 * REM * normalise_creation_purity() * seconds_per_tick) + ..() + return TRUE diff --git a/monkestation/code/modules/can_spessmen_feel_pain/pain/shock.dm b/monkestation/code/modules/can_spessmen_feel_pain/pain/shock.dm new file mode 100644 index 000000000000..279d14a9262b --- /dev/null +++ b/monkestation/code/modules/can_spessmen_feel_pain/pain/shock.dm @@ -0,0 +1,207 @@ +// -- Shock from too much pain. -- +/datum/disease/advanced/premade/shock + form = "Condition" + name = "Shock" + spread_text = "Neurogenic" // Only model pain shock + category = DISEASE_SHOCK + max_stages = 3 + stage_prob = 1 + cure_text = "Keep the patient still and lying down, maintain a high body temperature, stop blood loss, \ + and provide pain relievers while monitoring closely. Epinephrine and Saline-Glucose can also help." + agent = "Pain" + viable_mobtypes = list(/mob/living/carbon/human) + desc = "Occurs when a subject enters a state of shock due to high pain, blood loss, heart difficulties, and other injuries. \ + If left untreated, the subject may experience cardiac arrest." + severity = DISEASE_SEVERITY_DANGEROUS + disease_flags = NONE + spread_flags = DISEASE_SPREAD_NON_CONTAGIOUS + visibility_flags = HIDDEN_PANDEMIC + bypasses_immunity = TRUE + /// How many conditions do we require to get cured? + var/conditions_required_to_cure = 4 + /// How many conditions do we need to not get a heart attack? + var/conditions_required_to_maintain = 3 + +/datum/disease/advanced/premade/shock/after_add() + affected_mob.apply_status_effect(/datum/status_effect/low_blood_pressure) + affected_mob.set_pain_mod(type, 1.2) + antigen = null + +/** + * Checks which cure conditions we fulfill. + * + * returns the total number of conditions we fulfill. + */ +/datum/disease/advanced/premade/shock/proc/check_cure_conditions() + if(!ishuman(affected_mob)) + return TRUE + var/mob/living/carbon/human = affected_mob + if(human.undergoing_cardiac_arrest()) + return FALSE + if(affected_mob.stat == DEAD) + return FALSE + + // We require [conditions_required_to_cure] of these to be fulfilled to be cured + var/conditions_fulfilled = 0 + + // Good: Body temperature is stable (not freezing, we don't care about heat) + if(affected_mob.bodytemperature > affected_mob.get_body_temp_cold_damage_limit()) + conditions_fulfilled += 1 + // Good: Sleeping (or unconscious I guess) + if(affected_mob.IsSleeping() || affected_mob.IsUnconscious()) + conditions_fulfilled += 1 + // Good: Having this trait (from salgu or epinephrine) + if(HAS_TRAIT(affected_mob, TRAIT_ABATES_SHOCK)) + conditions_fulfilled += 1 + // Good: Having lower pain + switch(affected_mob.pain_controller.get_average_pain()) + if(-INFINITY to 10) + // Almost guarantees you fulfill enough conditions if you get this low, assuming you have no major detractors + // Why? It might confuse some people if the person's like, not experiencing any pain at all + // but for some reason is still in shock, because they haven't done one of the other conditions arbitrarily + conditions_fulfilled += (conditions_required_to_cure + 1) + if(10 to 30) + conditions_fulfilled += 3 + if(30 to 40) + conditions_fulfilled += 2 + if(40 to 50) + conditions_fulfilled += 1 + + // Good: Painkillers (while conscious / in soft crit) + if(affected_mob.stat <= SOFT_CRIT && !affected_mob.can_feel_pain()) + conditions_fulfilled += 1 + + // Bad: Bleeding + if(human.is_bleeding()) + conditions_fulfilled -= 1 + // Very bad: Wounds + conditions_fulfilled -= min(LAZYLEN(human.all_wounds), 4) + // Somewhat bad: Standing up + if(affected_mob.body_position == STANDING_UP) + conditions_fulfilled -= 2 + // Bad: In deepcrit (dying) + if(affected_mob.stat > SOFT_CRIT) + conditions_fulfilled -= 1 + + return conditions_fulfilled + +/datum/disease/advanced/premade/shock/cure(add_resistance, mob/living/carbon/target) + affected_mob.remove_status_effect(/datum/status_effect/low_blood_pressure) + affected_mob.unset_pain_mod(type) + return ..() + +/datum/disease/advanced/premade/shock/activate(seconds_per_tick, times_fired) + . = ..() + if(!ishuman(affected_mob)) + return + + if(check_cure_conditions() >= conditions_required_to_cure) + cure() + return + var/mob/living/carbon/human = affected_mob + if(!.) + return + + if(isnull(affected_mob.pain_controller)) + cure() + return FALSE + + if(affected_mob.stat == DEAD) + cure() + return FALSE + + var/cure_level = check_cure_conditions() + testing("[affected_mob] undergoing shock: [cure_level] cure conditions achieved.") + + // Having a few cure conditions present ([conditions_required_to_maintain]) will keep us below stage 3 + if(stage > 2 && cure_level >= conditions_required_to_maintain) + update_stage(2) + + // If we have enough conditions present to cure us, roll for a cure + if(stage <= 2 && has_cure(cure_level) && SPT_PROB(cure_level, seconds_per_tick)) + to_chat(affected_mob, span_bold(span_green("Your body feels awake and active again!"))) + cure() + return FALSE + + switch(stage) + // compensated (or nonprogressive) - still able to sustain themselves + // - agitation, anxiety + // - nausea or vomiting + // - chills + if(1) + cure_text = "Subject is in stage one of shock. \ + Provide immediate pain relief and stop blood loss to prevent worsening condition. \ + Keep the patient still and lying down, and be sure to moderate their temprature. \ + Supply epinephrine and saline-glucose if condition worsens." + if(SPT_PROB(0.5, seconds_per_tick)) + to_chat(affected_mob, span_danger("Your chest feels uncomfortable.")) + affected_mob.pain_emote(pick("mumble", "grumble")) + affected_mob.flash_pain_overlay(1) + if(SPT_PROB(1, seconds_per_tick)) + to_chat(affected_mob, span_danger("You feel nauseous.")) + if(prob(50)) + affected_mob.vomit(35) + if(SPT_PROB(2, seconds_per_tick)) + to_chat(affected_mob, span_danger("You feel anxious.")) + affected_mob.adjust_jitter(rand(12 SECONDS, 16 SECONDS)) + if(SPT_PROB(6, seconds_per_tick)) + to_chat(affected_mob, span_danger("You feel cold.")) + affected_mob.pain_emote("shiver", 3 SECONDS) + affected_mob.adjust_bodytemperature(-5 * seconds_per_tick, affected_mob.get_body_temp_cold_damage_limit() + 5) // Not lethal + + // decompensated (or progressive) - unable to maintain themselves + // - mental issues + // - difficulty breathing / high heart rate + // - decrease in body temperature + if(2) + cure_text = "Subject is in stage one of shock. \ + Provide immediate pain relief and stop blood loss to prevent cardiac arrest. \ + Keep the patient still and lying down, and be sure to moderate their temprature. \ + Supply epinephrine and saline-glucose if condition worsens." + + if(SPT_PROB(10, seconds_per_tick)) + affected_mob.adjust_stutter_up_to(10 SECONDS, 120 SECONDS) + if(SPT_PROB(1, seconds_per_tick)) + to_chat(affected_mob, span_danger("Your chest feels wrong!")) + affected_mob.pain_emote(pick("mumble", "grumble")) + affected_mob.flash_pain_overlay(2) + if(SPT_PROB(2, seconds_per_tick)) + to_chat(affected_mob, span_danger("You can't focus on anything!")) + affected_mob.adjust_confusion(rand(4 SECONDS, 8 SECONDS)) + if(SPT_PROB(2, seconds_per_tick)) + to_chat(affected_mob, span_danger("You're having difficulties breathing!")) + affected_mob.losebreath = clamp(affected_mob.losebreath + 4, 0, 12) + if(SPT_PROB(2, seconds_per_tick)) + to_chat(affected_mob, span_danger("You skip a breath!")) + affected_mob.pain_emote("gasp", 3 SECONDS) + affected_mob.apply_damage(rand(5, 15), OXY) + if(SPT_PROB(1, seconds_per_tick)) + affected_mob.emote("faint") + if(SPT_PROB(8, seconds_per_tick)) + to_chat(affected_mob, span_danger("You feel freezing!")) + affected_mob.pain_emote("shiver", 3 SECONDS) + affected_mob.adjust_bodytemperature(-10 * seconds_per_tick, affected_mob.get_body_temp_cold_damage_limit() - 5) // uh oh + + // irreversible - point of no return, system failure + // cardiac arrest + if(3) + cure_text = "Subject is in stage three of shock. Cardiac arrest is imminent - urgent action is needed. \ + Prepare a defibrillator on standby and moderate their body temperature." + if(SPT_PROB(10, seconds_per_tick)) + affected_mob.adjust_stutter_up_to(10 SECONDS, 120 SECONDS) + if(SPT_PROB(8, seconds_per_tick)) + affected_mob.adjust_slurring_up_to(10 SECONDS, 36 SECONDS) + if(SPT_PROB(2, seconds_per_tick)) + affected_mob.emote("faint") + if(SPT_PROB(33, seconds_per_tick)) + if(human.can_heartattack()) + to_chat(affected_mob, span_userdanger("Your heart stops!")) + affected_mob.visible_message(span_danger("[affected_mob] grabs at their chest and collapses!"), ignored_mobs = affected_mob) + human.set_heartattack(TRUE) + cure() + return FALSE + else + affected_mob.losebreath += 10 + else if(SPT_PROB(10, seconds_per_tick)) + to_chat(affected_mob, span_userdanger(pick("You feel your heart skip a beat...", "You feel your body shutting down...", "You feel your heart beat irregularly..."))) + affected_mob.adjust_bodytemperature(-10 * seconds_per_tick, affected_mob.get_body_temp_cold_damage_limit() - 20) // welp diff --git a/monkestation/code/modules/can_spessmen_feel_pain/pain/species.dm b/monkestation/code/modules/can_spessmen_feel_pain/pain/species.dm new file mode 100644 index 000000000000..9a1c06ef3bbb --- /dev/null +++ b/monkestation/code/modules/can_spessmen_feel_pain/pain/species.dm @@ -0,0 +1,4 @@ +/// -- Extensions of species and species procs. -- +/datum/species + /// Pain modifier that this species receives. + var/species_pain_mod = 1 diff --git a/monkestation/code/modules/can_spessmen_feel_pain/pain/status_effects/anesthetics.dm b/monkestation/code/modules/can_spessmen_feel_pain/pain/status_effects/anesthetics.dm new file mode 100644 index 000000000000..03f24a52b8a0 --- /dev/null +++ b/monkestation/code/modules/can_spessmen_feel_pain/pain/status_effects/anesthetics.dm @@ -0,0 +1,42 @@ +/// Anesthetics, for use in surgery - to stop pain. +/datum/status_effect/grouped/anesthetic + id = "anesthetics" + alert_type = /atom/movable/screen/alert/status_effect/anesthetics + +/datum/status_effect/grouped/anesthetic/on_creation(mob/living/new_owner, source) + if(!istype(get_area(new_owner), /area/station/medical)) + // if we're NOT in medical, give no alert. N2O floods or whatever. + alert_type = null + + return ..() + +/datum/status_effect/grouped/anesthetic/on_apply() + . = ..() + RegisterSignal(owner, SIGNAL_REMOVETRAIT(TRAIT_KNOCKEDOUT), PROC_REF(try_removal)) + +/datum/status_effect/grouped/anesthetic/on_remove() + . = ..() + UnregisterSignal(owner, SIGNAL_REMOVETRAIT(TRAIT_KNOCKEDOUT)) + +/datum/status_effect/grouped/anesthetic/get_examine_text() + return span_warning("[owner.p_Theyre()] out cold.") + +/datum/status_effect/grouped/anesthetic/proc/try_removal(datum/source) + SIGNAL_HANDLER + + if(HAS_TRAIT(owner, TRAIT_KNOCKEDOUT)) + return + + qdel(src) + +/atom/movable/screen/alert/status_effect/anesthetics + name = "Anesthetic" + desc = "Everything's woozy... The world goes dark... You're on anesthetics. \ + Good luck in surgery! If it's actually surgery, that is." + icon_state = "paralysis" + +// Extend "too much N2O" so we can apply anesthesia if it knocks the guy out +/obj/item/organ/internal/lungs/too_much_n2o(mob/living/carbon/breather, datum/gas_mixture/breath, n2o_pp, old_n2o_pp) + . = ..() + if(HAS_TRAIT(breather, TRAIT_KNOCKEDOUT)) + breather.apply_status_effect(/datum/status_effect/grouped/anesthetic, /datum/gas/nitrous_oxide) diff --git a/monkestation/code/modules/can_spessmen_feel_pain/pain/status_effects/fire_pain.dm b/monkestation/code/modules/can_spessmen_feel_pain/pain/status_effects/fire_pain.dm new file mode 100644 index 000000000000..b359a5a477b6 --- /dev/null +++ b/monkestation/code/modules/can_spessmen_feel_pain/pain/status_effects/fire_pain.dm @@ -0,0 +1,42 @@ +/// Handler for pain from fire. Goes up the longer you're on fire, largely goes away when extinguished +/datum/status_effect/pain_from_fire + id = "sharp_pain_from_fire" + status_type = STATUS_EFFECT_REFRESH + alert_type = null + remove_on_fullheal = TRUE + heal_flag_necessary = HEAL_ADMIN|HEAL_WOUNDS|HEAL_STATUS + + /// Amount of pain being given + var/pain_amount = 0 + +/datum/status_effect/pain_from_fire/on_creation(mob/living/new_owner, pain_amount = 0) + src.pain_amount = pain_amount + return ..() + +/datum/status_effect/pain_from_fire/refresh(mob/living/new_owner, added_pain_amount = 0) + if(added_pain_amount <= 0) + return + pain_amount += added_pain_amount + owner.cause_pain(BODY_ZONES_ALL, added_pain_amount, BURN) + +/datum/status_effect/pain_from_fire/on_apply() + if(isnull(owner.pain_controller) || pain_amount <= 0) + return FALSE + + RegisterSignal(owner, COMSIG_LIVING_EXTINGUISHED, PROC_REF(remove_on_signal)) + owner.cause_pain(BODY_ZONES_ALL, pain_amount, BURN) + return TRUE + +/datum/status_effect/pain_from_fire/on_remove() + if(QDELING(owner)) + return + UnregisterSignal(owner, COMSIG_LIVING_EXTINGUISHED) + owner.cause_pain(BODY_ZONES_ALL, -3 * pain_amount, BURN) + +/// When signalled, terminate. +/datum/status_effect/pain_from_fire/proc/remove_on_signal(datum/source) + SIGNAL_HANDLER + + if(QDELING(owner) || QDELING(src)) + return + qdel(src) diff --git a/monkestation/code/modules/can_spessmen_feel_pain/pain/status_effects/low_blood_pressure.dm b/monkestation/code/modules/can_spessmen_feel_pain/pain/status_effects/low_blood_pressure.dm new file mode 100644 index 000000000000..30b1d0f40592 --- /dev/null +++ b/monkestation/code/modules/can_spessmen_feel_pain/pain/status_effects/low_blood_pressure.dm @@ -0,0 +1,21 @@ +/datum/status_effect/low_blood_pressure + id = "low_blood_pressure" + tick_interval = -1 + status_type = STATUS_EFFECT_UNIQUE + alert_type = /atom/movable/screen/alert/status_effect/low_blood_pressure + +/datum/status_effect/low_blood_pressure/on_apply() + if(ishuman(owner)) + var/mob/living/carbon/human/human_owner = owner + human_owner.physiology.bleed_mod *= 0.75 + return TRUE + +/datum/status_effect/low_blood_pressure/on_remove() + if(ishuman(owner)) + var/mob/living/carbon/human/human_owner = owner + human_owner.physiology.bleed_mod /= 0.75 + +/atom/movable/screen/alert/status_effect/low_blood_pressure + name = "Low blood pressure" + desc = "Your blood pressure is low right now. Your organs aren't getting enough blood." + icon_state = "highbloodpressure" diff --git a/monkestation/code/modules/can_spessmen_feel_pain/pain/status_effects/min_pain.dm b/monkestation/code/modules/can_spessmen_feel_pain/pain/status_effects/min_pain.dm new file mode 100644 index 000000000000..27fd47b70c97 --- /dev/null +++ b/monkestation/code/modules/can_spessmen_feel_pain/pain/status_effects/min_pain.dm @@ -0,0 +1,50 @@ +/// A handler for temporarily increasing the minimum amount of pain a bodypart can be in. +/datum/status_effect/minimum_bodypart_pain + id = "min_bodypart_pain" + status_type = STATUS_EFFECT_MULTIPLE + alert_type = null + remove_on_fullheal = TRUE + heal_flag_necessary = HEAL_ADMIN|HEAL_WOUNDS|HEAL_STATUS + + /// The min pain we're setting the bodypart to + var/min_amount = 0 + /// The zone we're afflicting + var/targeted_zone = BODY_ZONE_CHEST + +/datum/status_effect/minimum_bodypart_pain/on_creation( + mob/living/carbon/human/new_owner, + targeted_zone, + min_amount = 0, + duration = 0, +) + + src.duration = duration + src.targeted_zone = targeted_zone + src.min_amount = min_amount + return ..() + +/datum/status_effect/minimum_bodypart_pain/on_apply() + if(!ishuman(owner)) + return FALSE + + var/mob/living/carbon/human/human_owner = owner + if(!human_owner.pain_controller) + return FALSE + + if(!targeted_zone || min_amount == 0) + return FALSE + + var/obj/item/bodypart/afflicted_bodypart = human_owner.pain_controller.body_zones[targeted_zone] + if(!afflicted_bodypart) + return FALSE + + human_owner.pain_controller.adjust_bodypart_min_pain(targeted_zone, min_amount) + return TRUE + +/datum/status_effect/minimum_bodypart_pain/on_remove() + var/mob/living/carbon/human/human_owner = owner + var/obj/item/bodypart/afflicted_bodypart = human_owner.pain_controller?.body_zones[targeted_zone] + if(!afflicted_bodypart) + return + + human_owner.pain_controller.adjust_bodypart_min_pain(targeted_zone, -min_amount) diff --git a/monkestation/code/modules/can_spessmen_feel_pain/pain/status_effects/pain_limp.dm b/monkestation/code/modules/can_spessmen_feel_pain/pain/status_effects/pain_limp.dm new file mode 100644 index 000000000000..fb2110254ccb --- /dev/null +++ b/monkestation/code/modules/can_spessmen_feel_pain/pain/status_effects/pain_limp.dm @@ -0,0 +1,68 @@ +/// Limping from extreme pain in the legs. +/datum/status_effect/limp/pain + id = "limp_pain" + status_type = STATUS_EFFECT_UNIQUE + alert_type = /atom/movable/screen/alert/status_effect/limp/pain + remove_on_fullheal = TRUE + heal_flag_necessary = HEAL_ADMIN|HEAL_WOUNDS|HEAL_STATUS + +/datum/status_effect/limp/pain/on_creation(mob/living/new_owner, obj/item/bodypart/next_leg) + src.next_leg = next_leg + return ..() + +/datum/status_effect/limp/pain/on_apply() + . = ..() + if(!.) + return + + var/mob/living/carbon/human/owner_human = owner + if(!owner_human) + return FALSE + if(!istype(owner_human) || isnull(owner_human?.pain_controller)) + return FALSE + + RegisterSignals(owner, list(COMSIG_CARBON_PAIN_GAINED, COMSIG_CARBON_PAIN_LOST), PROC_REF(update_limp)) + owner.pain_message( + span_danger("Your [next_leg?.plaintext_zone || "leg"] hurts to walk on!"), + span_danger("You struggle to walk on your [next_leg?.plaintext_zone || "leg"]!"), + ) + +/datum/status_effect/limp/pain/get_examine_text() + return span_warning("[owner.p_Theyre()] limping with every move.") + +/datum/status_effect/limp/pain/on_remove() + . = ..() + UnregisterSignal(owner, list(COMSIG_CARBON_PAIN_GAINED, COMSIG_CARBON_PAIN_LOST)) + if(!QDELING(owner)) + owner.pain_message( + span_green("Your pained limp stops!"), + span_green("It becomes easier to walk again."), + ) + +/datum/status_effect/limp/pain/update_limp() + var/mob/living/carbon/human/limping_human = owner + + left = limping_human.pain_controller.body_zones[BODY_ZONE_L_LEG] + right = limping_human.pain_controller.body_zones[BODY_ZONE_R_LEG] + + if(!left && !right) + qdel(src) + return + + slowdown_left = 0 + slowdown_right = 0 + + if(left?.get_modified_pain() >= 30) + slowdown_left = left.get_modified_pain() / 10 + + if(right?.get_modified_pain() >= 30) + slowdown_right = right.get_modified_pain() / 10 + + // this handles losing your leg with the limp and the other one being in good shape as well + if(slowdown_left < 3 && slowdown_right < 3) + qdel(src) + return + +/atom/movable/screen/alert/status_effect/limp/pain + name = "Pained Limping" + desc = "The pain in your legs is unbearable, forcing you to limp!" diff --git a/monkestation/code/modules/can_spessmen_feel_pain/pain/status_effects/sharp_pain.dm b/monkestation/code/modules/can_spessmen_feel_pain/pain/status_effects/sharp_pain.dm new file mode 100644 index 000000000000..d9dfb9c8023c --- /dev/null +++ b/monkestation/code/modules/can_spessmen_feel_pain/pain/status_effects/sharp_pain.dm @@ -0,0 +1,61 @@ +/// Sharp pain. Used for a lot of pain at once, as a little of it is healed after the effect runs out. +/datum/status_effect/sharp_pain + id = "sharp_pain" + status_type = STATUS_EFFECT_MULTIPLE + alert_type = null + remove_on_fullheal = TRUE + heal_flag_necessary = HEAL_ADMIN|HEAL_WOUNDS|HEAL_STATUS + + /// Amount of pain being given + var/pain_amount = 0 + /// Type of pain being given + var/pain_type + /// The amount of pain we had before recieving the sharp pain + var/initial_pain_amount = 0 + /// The zone we're afflicting + var/targeted_zone + +/datum/status_effect/sharp_pain/on_creation( + mob/living/carbon/human/new_owner, + targeted_zone, + pain_amount = 0, + pain_type = BRUTE, + duration = 0, +) + + src.duration = duration + src.targeted_zone = targeted_zone + src.pain_amount = pain_amount + src.pain_type = pain_type + return ..() + +/datum/status_effect/sharp_pain/on_apply() + if(!ishuman(owner)) + return FALSE + + var/mob/living/carbon/human/human_owner = owner + if(!human_owner.pain_controller) + return FALSE + + if(!targeted_zone || pain_amount == 0) + return FALSE + + var/obj/item/bodypart/afflicted_bodypart = human_owner.pain_controller.body_zones[targeted_zone] + if(!afflicted_bodypart) + return FALSE + + initial_pain_amount = afflicted_bodypart.pain + human_owner.pain_controller.adjust_bodypart_pain(targeted_zone, pain_amount, pain_type) + return TRUE + +/datum/status_effect/sharp_pain/on_remove() + var/mob/living/carbon/human/human_owner = owner + var/obj/item/bodypart/afflicted_bodypart = human_owner.pain_controller?.body_zones[targeted_zone] + if(!afflicted_bodypart) + return + + var/healed_amount = pain_amount * -0.33 + if((afflicted_bodypart.pain + healed_amount) < initial_pain_amount) + healed_amount = initial_pain_amount - afflicted_bodypart.pain + + human_owner.pain_controller.adjust_bodypart_pain(targeted_zone, healed_amount, pain_type) diff --git a/monkestation/code/modules/can_spessmen_feel_pain/pain/status_effects/temp_pack.dm b/monkestation/code/modules/can_spessmen_feel_pain/pain/status_effects/temp_pack.dm new file mode 100644 index 000000000000..bc5f230aff60 --- /dev/null +++ b/monkestation/code/modules/can_spessmen_feel_pain/pain/status_effects/temp_pack.dm @@ -0,0 +1,171 @@ +/// Status effects applied when pressing a hot or cold item onto a bodypart, to soothe pain. +/datum/status_effect/temperature_pack + id = "temp_pack" + status_type = STATUS_EFFECT_MULTIPLE + on_remove_on_mob_delete = TRUE + tick_interval = 5 SECONDS + processing_speed = STATUS_EFFECT_NORMAL_PROCESS + alert_type = null + /// The item we're using to heal pain. + var/obj/item/pressed_item + /// The mob holding the [pressed_item] to [owner]. Can be [owner]. + var/mob/living/holder + /// The zone we're healing. + var/targeted_zone = BODY_ZONE_CHEST + /// The amount we heal per tick. Positive number. + var/pain_heal_amount = 0 + /// The pain modifier placed on the limb. + var/pain_modifier = 1 + /// The change in temperature while applied. + var/temperature_change = 0 + +/datum/status_effect/temperature_pack/on_creation( + mob/living/new_owner, + mob/living/holder, + obj/item/pressed_item, + targeted_zone = BODY_ZONE_CHEST, + pain_heal_amount = 0, + pain_modifier = 1, + temperature_change = 0, +) + + src.holder = holder + src.pressed_item = pressed_item + src.targeted_zone = targeted_zone + src.pain_heal_amount = pain_heal_amount + src.pain_modifier = pain_modifier + src.temperature_change = temperature_change + return ..() + +/datum/status_effect/temperature_pack/on_apply() + if(!ishuman(owner)) + return FALSE + + var/mob/living/carbon/human/human_owner = owner + if(!human_owner.pain_controller || human_owner.stat == DEAD) + return FALSE + + if(QDELETED(pressed_item)) + return FALSE + + if(QDELETED(holder)) + return FALSE + + for(var/datum/status_effect/temperature_pack/pre_existing_effect in owner.status_effects) + if(pre_existing_effect == src) + continue + if(pre_existing_effect.targeted_zone == targeted_zone) + return FALSE + + var/obj/item/bodypart/held_bodypart = human_owner.pain_controller.body_zones[targeted_zone] + if(!held_bodypart) + return FALSE + + held_bodypart.bodypart_pain_modifier *= pain_modifier + pressed_item.AddComponent(/datum/component/make_item_slow) + RegisterSignal(pressed_item, list(COMSIG_QDELETING, COMSIG_ITEM_DROPPED, COMSIG_TEMPERATURE_PACK_EXPIRED), PROC_REF(stop_effects)) + if(holder != owner) + RegisterSignal(holder, COMSIG_MOVABLE_MOVED, PROC_REF(check_adjacency)) + return TRUE + +/datum/status_effect/temperature_pack/tick() + if(QDELETED(holder) || QDELETED(pressed_item) || owner.stat == DEAD || !holder.is_holding(pressed_item)) + stop_effects(silent = TRUE) + return + + var/mob/living/carbon/human/human_owner = owner + if(!human_owner.get_bodypart_pain(targeted_zone, TRUE)) + stop_effects(silent = FALSE) + return + + if(temperature_change) + owner.adjust_bodytemperature(temperature_change, human_owner.get_body_temp_cold_damage_limit() + 5, human_owner.get_body_temp_heat_damage_limit() - 5) + var/obj/item/bodypart/held_bodypart = human_owner.pain_controller.body_zones[targeted_zone] + if(held_bodypart && prob(66)) + human_owner.cause_pain(targeted_zone, -pain_heal_amount) + if(prob(10)) + to_chat(human_owner, span_italics(span_notice("[pressed_item] dulls the pain in your [held_bodypart.name] a little."))) + +/** + * Check on move whether [holder] is still adjacent to [owner]. + */ +/datum/status_effect/temperature_pack/proc/check_adjacency(datum/source) + SIGNAL_HANDLER + + if(!in_range(holder, owner)) + stop_effects(silent = FALSE) + +/** + * Stop the effects of this status effect, deleting it, and sending a message if [silent] is TRUE. + */ +/datum/status_effect/temperature_pack/proc/stop_effects(datum/source, silent = FALSE) + SIGNAL_HANDLER + + if(!silent && !QDELETED(holder) && !QDELETED(pressed_item)) + to_chat(holder, span_notice("You stop pressing [pressed_item] against [owner == holder ? "yourself":"[owner]"].")) + qdel(src) + +/datum/status_effect/temperature_pack/on_remove() + var/mob/living/carbon/human/human_owner = owner + var/obj/item/bodypart/held_bodypart = human_owner.pain_controller?.body_zones[targeted_zone] + held_bodypart?.bodypart_pain_modifier /= pain_modifier + qdel(pressed_item.GetComponent(/datum/component/make_item_slow)) + UnregisterSignal(pressed_item, list(COMSIG_QDELETING, COMSIG_ITEM_DROPPED, COMSIG_TEMPERATURE_PACK_EXPIRED)) + UnregisterSignal(holder, COMSIG_MOVABLE_MOVED) + + pressed_item = null + holder = null + +/// Cold stuff needs to stay cold. +/datum/status_effect/temperature_pack/cold + id = "cold_pack" + temperature_change = -2 + +/datum/status_effect/temperature_pack/cold/on_apply() + . = ..() + if(!.) + return + + var/mob/living/carbon/human/human_owner = owner + var/obj/item/bodypart/held_bodypart = human_owner.pain_controller.body_zones[targeted_zone] + to_chat(human_owner, span_green("You wince as [owner == holder ? "you press" : "[holder] presses"] [pressed_item] against your [parse_zone(held_bodypart.body_zone)], but eventually the chill starts to dull the pain.")) + human_owner.pain_emote("wince", 3 SECONDS) + +/datum/status_effect/temperature_pack/cold/get_examine_text() + var/mob/living/carbon/human/human_owner = owner + var/obj/item/bodypart/held_bodypart = human_owner.pain_controller.body_zones[targeted_zone] + return span_danger("[holder == owner ? "[owner.p_Theyre()]" : "[holder] is"] pressing a cold [pressed_item.name] against [owner.p_their()] [parse_zone(held_bodypart.body_zone)].") + +/datum/status_effect/temperature_pack/cold/tick() + if(pressed_item.resistance_flags & ON_FIRE) + stop_effects(silent = TRUE) + return + + return ..() + +/// And warm stuff needs to stay warm. +/datum/status_effect/temperature_pack/heat + id = "heat_pack" + temperature_change = 2 + +/datum/status_effect/temperature_pack/heat/on_apply() + . = ..() + if(!.) + return + + var/mob/living/carbon/human/human_owner = owner + var/obj/item/bodypart/held_bodypart = human_owner.pain_controller.body_zones[targeted_zone] + to_chat(human_owner, span_green("You gasp as [owner == holder ? "you press" : "[holder] presses"] [pressed_item] against your [held_bodypart.name], but eventually the warmth starts to dull the pain.")) + human_owner.pain_emote("gasp", 3 SECONDS) + +/datum/status_effect/temperature_pack/head/get_examine_text() + var/mob/living/carbon/human/human_owner = owner + var/obj/item/bodypart/held_bodypart = human_owner.pain_controller.body_zones[targeted_zone] + return span_danger("[holder == owner ? "[owner.p_Theyre()]" : "[holder] is"] pressing a warm [pressed_item.name] against [owner.p_their()] [held_bodypart.name].") + +/datum/status_effect/temperature_pack/heat/tick() + if(HAS_TRAIT(pressed_item, TRAIT_FROZEN)) + stop_effects(silent = TRUE) + return + + return ..() diff --git a/monkestation/code/modules/can_spessmen_feel_pain/pain/traits.dm b/monkestation/code/modules/can_spessmen_feel_pain/pain/traits.dm new file mode 100644 index 000000000000..065b51865734 --- /dev/null +++ b/monkestation/code/modules/can_spessmen_feel_pain/pain/traits.dm @@ -0,0 +1,101 @@ +// Less vulnerable to pain (lower pain modifier) +/datum/quirk/pain_resistance + name = "Hypoalgesia" + desc = "You're more resistant to pain - Your pain naturally decreases faster and you receive less overall." + icon = FA_ICON_FIST_RAISED + value = 8 + gain_text = "You feel duller." + lose_text = "You feel sharper." + medical_record_text = "Patient has Hypoalgesia, and is less susceptible to pain stimuli than most." + mail_goodies = list(/obj/item/temperature_pack/heat) + +/datum/quirk/pain_resistance/add() + var/mob/living/carbon/carbon_holder = quirk_holder + if(istype(carbon_holder)) + carbon_holder.set_pain_mod(PAIN_MOD_QUIRK, 0.9) + +/datum/quirk/pain_resistance/remove() + var/mob/living/carbon/carbon_holder = quirk_holder + if(istype(carbon_holder)) + carbon_holder.unset_pain_mod(PAIN_MOD_QUIRK) + +// More vulnerabile to pain (increased pain modifier) +/datum/quirk/pain_vulnerability + name = "Hyperalgesia" + desc = "You're less resistant to pain - Your pain naturally decreases slower and you receive more overall." + icon = FA_ICON_USER_INJURED + value = -6 + gain_text = span_danger("You feel sharper.") + lose_text = span_notice("You feel duller.") + medical_record_text = "Patient has Hyperalgesia, and is more susceptible to pain stimuli than most." + mail_goodies = list(/obj/item/temperature_pack/cold) + +/datum/quirk/pain_vulnerability/add() + var/mob/living/carbon/carbon_holder = quirk_holder + if(istype(carbon_holder)) + carbon_holder.set_pain_mod(PAIN_MOD_QUIRK, 1.15) + +/datum/quirk/pain_vulnerability/remove() + var/mob/living/carbon/carbon_holder = quirk_holder + if(istype(carbon_holder)) + carbon_holder.unset_pain_mod(PAIN_MOD_QUIRK) + + +// More vulnerable to pain + get pain from more actions (Glass bones and paper skin) +/datum/quirk/allodynia + name = "Allodynia" + desc = "Your nerves are extremely sensitive - you may receive pain from things that wouldn't normally be painful, such as hugs." + icon = FA_ICON_TIRED + value = -10 + gain_text = span_danger("You feel fragile.") + lose_text = span_notice("You feel less delicate.") + medical_record_text = "Patient has Allodynia, and is extremely sensitive to touch, pain, and similar stimuli." + mail_goodies = list(/obj/item/temperature_pack/cold, /obj/item/temperature_pack/heat) + COOLDOWN_DECLARE(time_since_last_touch) + +/datum/quirk/allodynia/add() + var/mob/living/carbon/carbon_holder = quirk_holder + if(istype(carbon_holder)) + carbon_holder.set_pain_mod(PAIN_MOD_QUIRK, 1.2) + RegisterSignal(quirk_holder, list(COMSIG_LIVING_GET_PULLED, COMSIG_CARBON_HELP_ACT), PROC_REF(cause_body_pain)) + +/datum/quirk/allodynia/remove() + var/mob/living/carbon/carbon_holder = quirk_holder + if(istype(carbon_holder)) + carbon_holder.unset_pain_mod(PAIN_MOD_QUIRK) + UnregisterSignal(quirk_holder, list(COMSIG_LIVING_GET_PULLED, COMSIG_CARBON_HELP_ACT)) + +/** + * Causes pain to arm zones if they're targeted, and the chest zone otherwise. + * + * source - quirk_holder / the mob being touched + * toucher - the mob that's interacting with source (pulls, hugs, etc) + */ +/datum/quirk/allodynia/proc/cause_body_pain(datum/source, mob/living/toucher) + SIGNAL_HANDLER + + if(!COOLDOWN_FINISHED(src, time_since_last_touch)) + return + + if(quirk_holder.stat != CONSCIOUS) + return + + to_chat(quirk_holder, span_danger("[toucher] touches you, causing a wave of sharp pain throughout your [parse_zone(toucher.zone_selected)]!")) + actually_hurt(toucher.zone_selected, 9) + +/** + * Actually cause the pain to the target limb, causing a visual effect, emote, and a negative moodlet. + * + * zone - the body zone being affected + * amount - the amount of pain being added + */ +/datum/quirk/allodynia/proc/actually_hurt(zone, amount) + var/mob/living/carbon/carbon_holder = quirk_holder + if(!istype(carbon_holder)) + return + + new /obj/effect/temp_visual/annoyed(quirk_holder.loc) + carbon_holder.cause_pain(zone, amount) + INVOKE_ASYNC(quirk_holder, TYPE_PROC_REF(/mob/living, pain_emote)) + quirk_holder.add_mood_event("bad_touch", /datum/mood_event/very_bad_touch) + COOLDOWN_START(src, time_since_last_touch, 30 SECONDS) diff --git a/monkestation/code/modules/can_spessmen_feel_pain/readme.md b/monkestation/code/modules/can_spessmen_feel_pain/readme.md new file mode 100644 index 000000000000..18513d949f33 --- /dev/null +++ b/monkestation/code/modules/can_spessmen_feel_pain/readme.md @@ -0,0 +1,21 @@ +## Title: + + +MODULE ID: SPESSMAN_PAIN + +### Description: + +This pr adds a "lite" version of baymed pain to the game. + + +### Included files that are not contained in this module: + - defines/monkestation/pain.dm + + + +### Credits: + + + +Made by MrMelbert (https://github.com/MrMelbert/MapleStationCode/pull/17) +Ported and Adapted by Dwasint diff --git a/monkestation/code/modules/can_spessmen_feel_pain/subsystem.dm b/monkestation/code/modules/can_spessmen_feel_pain/subsystem.dm new file mode 100644 index 000000000000..690da8aa97f1 --- /dev/null +++ b/monkestation/code/modules/can_spessmen_feel_pain/subsystem.dm @@ -0,0 +1,5 @@ +PROCESSING_SUBSYSTEM_DEF(pain) + name = "Pain" + flags = SS_NO_INIT | SS_BACKGROUND + priority = 20 + wait = 2 SECONDS diff --git a/monkestation/code/modules/cassettes/machines/media/HTML5_player.dm b/monkestation/code/modules/cassettes/machines/media/HTML5_player.dm index 58c6cd2233da..8e262c8fe272 100644 --- a/monkestation/code/modules/cassettes/machines/media/HTML5_player.dm +++ b/monkestation/code/modules/cassettes/machines/media/HTML5_player.dm @@ -18,6 +18,11 @@ function SetMusic(url, time, volume, balance) { if(url != "") player.addEventListener("canplay", setTime, false); player.src = url; } +function SetVolume(volume, balance) { + var player = document.getElementById('player'); + player.volume = +volume; +} + diff --git a/monkestation/code/modules/cassettes/machines/media/media_manager.dm b/monkestation/code/modules/cassettes/machines/media/media_manager.dm index 8e0bf91cf616..0d7a15e4d5a5 100644 --- a/monkestation/code/modules/cassettes/machines/media/media_manager.dm +++ b/monkestation/code/modules/cassettes/machines/media/media_manager.dm @@ -111,9 +111,10 @@ var/client/owner // Client this is actually running in var/forced=0 // If true, current url overrides area media sources var/playerstyle // Choice of which player plugin to use - var/const/WINDOW_ID = "statwindow.mediapanel" // Which elem in skin.dmf to use + var/const/WINDOW_ID = "outputwindow.mediapanel" // Which elem in skin.dmf to use var/balance=0 // do you know what insanity is? Value from -100 to 100 where -100 is left and 100 is right var/signal_synced = 0 //used to check if we have our signal created + var/lobby_music = FALSE /datum/media_manager/New(var/client/C) ASSERT(istype(C)) @@ -130,8 +131,9 @@ /datum/media_manager/proc/send_update() if(!(owner.prefs)) return - if(owner.prefs.channel_volume["[CHANNEL_JUKEBOX]"]) - volume *= (owner.prefs.channel_volume["[CHANNEL_JUKEBOX]"] * 0.01) + if(!lobby_music) + if(owner.prefs.channel_volume["[CHANNEL_JUKEBOX]"]) + volume = (owner.prefs.channel_volume["[CHANNEL_JUKEBOX]"]) if(!owner.prefs.read_preference(/datum/preference/toggle/hear_music)) owner << output(list2params(list("", (world.time - 0) / 10, volume * 1, 0)), "[WINDOW_ID]:SetMusic") diff --git a/monkestation/code/modules/cybernetics/augments/_base_changes.dm b/monkestation/code/modules/cybernetics/augments/_base_changes.dm index 1872722458b7..823287cffc33 100644 --- a/monkestation/code/modules/cybernetics/augments/_base_changes.dm +++ b/monkestation/code/modules/cybernetics/augments/_base_changes.dm @@ -88,7 +88,7 @@ bodypart_overlay = new bodypart_overlay_path bodypart_overlay.unique_properties(src) ownerlimb.add_bodypart_overlay(bodypart_overlay) - owner.update_body_parts() + owner?.update_body_parts() return ..() /obj/item/organ/internal/cyberimp/remove_from_limb() diff --git a/monkestation/code/modules/cybernetics/minigame/airlock_hacking_datum.dm b/monkestation/code/modules/cybernetics/minigame/airlock_hacking_datum.dm index b178c5a89ccc..2f7658387e56 100644 --- a/monkestation/code/modules/cybernetics/minigame/airlock_hacking_datum.dm +++ b/monkestation/code/modules/cybernetics/minigame/airlock_hacking_datum.dm @@ -44,4 +44,4 @@ * Generates the airlock's hacking datum. */ /obj/machinery/door/airlock/proc/set_hacking() - return new /datum/hacking/airlock(src) + //return new /datum/hacking/airlock(src) diff --git a/monkestation/code/modules/cybernetics/minigame/general_hacking.dm b/monkestation/code/modules/cybernetics/minigame/general_hacking.dm index 0d81da8bdbc2..4ecdfb84cddd 100644 --- a/monkestation/code/modules/cybernetics/minigame/general_hacking.dm +++ b/monkestation/code/modules/cybernetics/minigame/general_hacking.dm @@ -7,12 +7,11 @@ PROCESSING_SUBSYSTEM_DEF(hacking) /atom /// Some atoms can be hacked so awesome - var/datum/hacking/hacking = null + var/datum/hacking/hacking /atom/Destroy(force) . = ..() - if(hacking) - QDEL_NULL(hacking) + QDEL_NULL(hacking) /// Attempts to open the hacking interface /atom/proc/attempt_hacking_interaction(mob/user) diff --git a/monkestation/code/modules/factory_type_beat/ai_behaviours/latch_onto.dm b/monkestation/code/modules/factory_type_beat/ai_behaviours/latch_onto.dm new file mode 100644 index 000000000000..6cb5258f0768 --- /dev/null +++ b/monkestation/code/modules/factory_type_beat/ai_behaviours/latch_onto.dm @@ -0,0 +1,16 @@ + +/datum/ai_behavior/hunt_target/latch_onto + +/datum/ai_behavior/hunt_target/latch_onto/setup(datum/ai_controller/controller, hunting_target_key, hunting_cooldown_key) + . = ..() + var/mob/living/living_pawn = controller.pawn + if(living_pawn.buckled) + return FALSE + +/datum/ai_behavior/hunt_target/latch_onto/target_caught(mob/living/hunter, obj/hunted) + if(hunter.buckled) + return FALSE + if(!hunted.buckle_mob(hunter, force = TRUE)) + return FALSE + hunted.visible_message(span_notice("[hunted] has been latched onto by [hunter]!")) + return TRUE diff --git a/monkestation/code/modules/factory_type_beat/boulder.dm b/monkestation/code/modules/factory_type_beat/boulder.dm new file mode 100644 index 000000000000..ce203ade508f --- /dev/null +++ b/monkestation/code/modules/factory_type_beat/boulder.dm @@ -0,0 +1,284 @@ +/** + * The objects that ore vents produce, which is refined into minerals. + */ +/obj/item/boulder + name = "boulder" + desc = "This rocks." + icon_state = "ore" + icon = 'monkestation/code/modules/factory_type_beat/icons/ore.dmi' + item_flags = NO_MAT_REDEMPTION + throw_range = 2 + throw_speed = 0.5 + drag_slowdown = 1.5 // It's still a big rock. + ///When a refinery machine is working on this boulder, we'll set this. Re reset when the process is finished, but the boulder may still be refined/operated on further. + var/obj/machinery/bouldertech/processed_by = null + /// How many steps of refinement this boulder has gone through. Starts at 5-8, goes down one each machine process. + var/durability = 5 + /// What was the size of the boulder when it was spawned? This is used for inheiriting the icon_state. + var/boulder_size = BOULDER_SIZE_SMALL + /// Used in inheriting the icon_state from our parent vent in update_icon. + var/boulder_string = "boulder" + /// Cooldown used to prevents boulders from getting processed back into a machine immediately after being processed. + COOLDOWN_DECLARE(processing_cooldown) + + /// Static list of all minerals to populate gulag boulders with. + var/list/static/gulag_minerals = list( + /datum/material/diamond = 1, + /datum/material/gold = 8, + /datum/material/iron = 95, + /datum/material/plasma = 30, + /datum/material/silver = 20, + /datum/material/titanium = 8, + /datum/material/uranium = 3, + ) + /// Static list of all minerals to populate gulag boulders with, but with bluespace added where safe. + var/list/static/expanded_gulag_minerals = list( + /datum/material/bluespace = 1, + /datum/material/diamond = 1, + /datum/material/gold = 8, + /datum/material/iron = 94, + /datum/material/plasma = 30, + /datum/material/silver = 20, + /datum/material/titanium = 8, + /datum/material/uranium = 3, + ) + +/obj/item/boulder/Initialize(mapload) + . = ..() + register_context() + AddComponent(/datum/component/two_handed, require_twohands = TRUE, force_unwielded = 0, force_wielded = 5) //Heavy as all hell, it's a boulder, dude. + +/obj/item/boulder/Destroy(force) + SSore_generation.available_boulders -= src + processed_by = null + return ..() + +/obj/item/boulder/examine(mob/user) + . = ..() + . += span_notice("This boulder would take [durability] more steps to refine or break.") + +/obj/item/boulder/examine_more(mob/user) + . = ..() + . += span_notice("[span_bold("Boulders")] can either be cracked open by [span_bold("mining tools")], or processed into sheets with [span_bold("refineries or smelters")]. Undisturbed boulders can be collected by the [span_bold("BRM")].") + +/obj/item/boulder/add_context(atom/source, list/context, obj/item/held_item, mob/living/user) + if(held_item?.tool_behaviour == TOOL_MINING || HAS_TRAIT(user, TRAIT_BOULDER_BREAKER)) + context[SCREENTIP_CONTEXT_RMB] = "Crush boulder into ore" + return CONTEXTUAL_SCREENTIP_SET + +/obj/item/boulder/attack_self(mob/user, list/modifiers) + . = ..() + if(.) + return + if(HAS_TRAIT(user, TRAIT_BOULDER_BREAKER)) + manual_process(null, user, INATE_BOULDER_SPEED_MULTIPLIER) + return + +/obj/item/boulder/attack_hand_secondary(mob/user, list/modifiers) + . = ..() + if(. == SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN) + return + if(HAS_TRAIT(user, TRAIT_BOULDER_BREAKER)) + manual_process(null, user, INATE_BOULDER_SPEED_MULTIPLIER) + return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN + +/obj/item/boulder/CanAllowThrough(atom/movable/mover, border_dir) + . = ..() + if(istype(mover, /obj/item/boulder)) //This way, boulders can only go one at a time on conveyor belts, but everyone else can go through. + return FALSE + +/obj/item/boulder/attackby_secondary(obj/item/weapon, mob/user, params) + . = ..() + if(HAS_TRAIT(user, TRAIT_BOULDER_BREAKER) || HAS_TRAIT(weapon, TRAIT_BOULDER_BREAKER)) + manual_process(weapon, user, INATE_BOULDER_SPEED_MULTIPLIER) + return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN + if(weapon.tool_behaviour == TOOL_MINING) + manual_process(weapon, user) + return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN + return ..() + +/obj/item/boulder/attack_basic_mob(mob/user, list/modifiers) + . = ..() + if(.) + return + if(HAS_TRAIT(user, TRAIT_BOULDER_BREAKER)) + manual_process(null, user, INATE_BOULDER_SPEED_MULTIPLIER) //A little hacky but it works around the speed of the blackboard task selection process for now. + return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN + +/obj/item/boulder/update_icon_state() + . = ..() + switch(boulder_size) + if(BOULDER_SIZE_SMALL) + icon_state = "[boulder_string]_small" + if(BOULDER_SIZE_MEDIUM) + icon_state = "[boulder_string]_medium" + if(BOULDER_SIZE_LARGE) + icon_state = "[boulder_string]_large" + else + icon_state = "[boulder_string]_small" + +/** + * This is called when a boulder is processed by a mob or tool, and reduces the durability of the boulder. + * @param obj/item/weapon The weapon that is being used to process the boulder, that we pull toolspeed from. If null, we use the override_speed_multiplier instead. + * @param mob/living/user The mob that is processing the boulder. + * @param override_speed_multiplier The speed multiplier to use if weapon is null. The do_after will take 2 * this value seconds to complete. + * @param continued Whether or not this is a continued process, or the first one. If true, we don't play the "You swing at the boulder" message. + */ +/obj/item/boulder/proc/manual_process(obj/item/weapon, mob/living/user, override_speed_multiplier, continued = FALSE) + var/process_speed = 0 + //Handle weapon conditions. + if(weapon) + if(HAS_TRAIT(weapon, TRAIT_INSTANTLY_PROCESSES_BOULDERS)) + durability = 0 + process_speed = weapon.toolspeed + weapon.play_tool_sound(src, 50) + if(!continued) + to_chat(user, span_notice("You swing at \the [src]...")) + + // Handle user conditions/override conditions. + else if (override_speed_multiplier || HAS_TRAIT(user, TRAIT_BOULDER_BREAKER)) + if(user) + if(HAS_TRAIT(user, TRAIT_INSTANTLY_PROCESSES_BOULDERS)) + durability = 0 + else if(override_speed_multiplier) + process_speed = override_speed_multiplier + else + process_speed = INATE_BOULDER_SPEED_MULTIPLIER + playsound(src, 'sound/effects/rocktap1.ogg', 50) + if(!continued) + to_chat(user, span_notice("You scrape away at \the [src]... speed is [process_speed].")) + else + CRASH("No weapon, acceptable user, or override speed multiplier passed to manual_process()") + if(durability > 0) + if(!do_after(user, (2 * process_speed SECONDS), target = src)) + return + if(!user.Adjacent(src)) + return + durability-- + user.apply_damage(4, STAMINA) + if(durability <= 0) + convert_to_ore() + to_chat(user, span_notice("You finish working on \the [src], and it crumbles into ore.")) + playsound(src, 'sound/effects/rock_break.ogg', 50) + user.mind?.adjust_experience(/datum/skill/mining, MINING_SKILL_BOULDER_SIZE_XP * 0.2) + qdel(src) + return + var/msg = (durability == 1 ? "is crumbling!" : "looks weaker!") + to_chat(user, span_notice("\The [src] [msg]")) + manual_process(weapon, user, override_speed_multiplier, continued = TRUE) + +/** + * This function is called while breaking boulders manually, and drops ore based on the boulder's mineral content. + * Quantity of ore spawned here is 1 less than if the boulder was processed by a machine, but clamped at 10 maximum, 1 minimum. + */ +/obj/item/boulder/proc/convert_to_ore() + for(var/datum/material/picked in custom_materials) + var/obj/item/stack/ore/cracked_ore // Take the associated value and convert it into ore stacks... + var/quantity = clamp(round((custom_materials[picked] - SHEET_MATERIAL_AMOUNT)/SHEET_MATERIAL_AMOUNT), 1, 10) //but less resources than if they processed it by hand. + + var/cracked_ore_type = picked.ore_type + if(isnull(cracked_ore_type)) + stack_trace("boulder found containing material type [picked.type] with no set ore_type") + continue + cracked_ore = new cracked_ore_type (drop_location(), quantity) + SSblackbox.record_feedback("tally", "ore_mined", quantity, cracked_ore) + +/** + * Handles the boulder's processing cooldown to check if it's ready to be processed again. + */ +/obj/item/boulder/proc/can_get_processed() + return COOLDOWN_FINISHED(src, processing_cooldown) + +/** + * Starts the boulder's processing cooldown. + */ +/obj/item/boulder/proc/restart_processing_cooldown() + COOLDOWN_START(src, processing_cooldown, 2 SECONDS) + +/** + * Moves boulder contents to the drop location, and then deletes the boulder. + */ +/obj/item/boulder/proc/break_apart() + var/list/quips = list("Clang!", "Crack!", "Bang!", "Clunk!", "Clank!") + if(length(contents)) + visible_message(span_notice("[pick(quips)] Something falls out of \the [src]!")) + playsound(loc, 'sound/effects/picaxe1.ogg', 60, FALSE) + for(var/obj/item/content as anything in contents) + content.forceMove(get_turf(src)) + qdel(src) + +/** + * This is called when a boulder is spawned from a vent, and is used to set the boulder's icon as well as durability. + * We also set our boulder_size variable, which is used for inheiriting the icon_state later on if processed. + * @param obj/structure/ore_vent/parent_vent The vent that spawned this boulder to generate consistent boulder icons. If null, we use the default size. + * @param size The size of the boulder to spawn. If parent_vent is defined, this is ignored. + * @param is_artifact Whether or not this boulder is an artifact boulder. If true, we use the artifact boulder icon state regardless of size. + */ +/obj/item/boulder/proc/flavor_boulder(obj/structure/ore_vent/parent_vent, size = BOULDER_SIZE_SMALL, is_artifact = FALSE) + var/durability_min = size + var/durability_max = size + BOULDER_SIZE_SMALL + if(parent_vent) + durability_min = parent_vent.boulder_size + durability_max = parent_vent.boulder_size + BOULDER_SIZE_SMALL + durability = rand(durability_min, durability_max) //randomize durability a bit for some flavor. + boulder_size = size + if(parent_vent) + boulder_size = parent_vent.boulder_size + boulder_string = parent_vent.boulder_icon_state + update_appearance(UPDATE_ICON_STATE) + +/** + * Unique proc for gulag-style boulders, which adds a random amount of minerals to the boulder. + */ +/obj/item/boulder/proc/add_gulag_minerals() + var/datum/material/new_material = pick_weight(gulag_minerals) + var/list/new_mats = list() + new_mats[new_material] = SHEET_MATERIAL_AMOUNT * rand(1,3) //We only want a few sheets of material in the gulag boulders + set_custom_materials(new_mats) + +/obj/item/boulder/artifact + name = "artifact boulder" + desc = "This boulder is brimming with strange energy. Cracking it open could contain something unusual for science." + icon_state = "boulder_artifact" + /// References to the relic inside the boulder, if any. + var/obj/artifact_inside + +/obj/item/boulder/artifact/Initialize(mapload) + . = ..() + artifact_inside = spawn_artifact(src) /// This could be poggers for archaeology in the future. + +/obj/item/boulder/artifact/Destroy(force) + QDEL_NULL(artifact_inside) + return ..() + +/obj/item/boulder/artifact/convert_to_ore() + . = ..() + artifact_inside.forceMove(drop_location()) + artifact_inside = null + +/obj/item/boulder/artifact/break_apart() + artifact_inside = null + return ..() + + +/obj/item/boulder/gulag + name = "low-quality boulder" + desc = "This rocks. It's a low quality boulder, so it's probably not worth as much." + +/obj/item/boulder/gulag/Initialize(mapload) + . = ..() + add_gulag_minerals(gulag_minerals) + +/obj/item/boulder/gulag_expanded + name = "low-density boulder" + desc = "This rocks. It's not very well packed, and can't contain as many minerals." + +/obj/item/boulder/gulag_expanded/Initialize(mapload) + . = ..() + add_gulag_minerals(expanded_gulag_minerals) + +/obj/item/boulder/shabby + name = "shabby boulder" + desc = "A bizzare, twisted boulder. Wait, wait no, it's just a rock." + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.1, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 1.1) + durability = 1 diff --git a/monkestation/code/modules/factory_type_beat/circuits.dm b/monkestation/code/modules/factory_type_beat/circuits.dm new file mode 100644 index 000000000000..61b0fdb7d352 --- /dev/null +++ b/monkestation/code/modules/factory_type_beat/circuits.dm @@ -0,0 +1,46 @@ +/obj/item/circuitboard/machine/brm + name = "Boulder Retrieval Matrix" + greyscale_colors = CIRCUIT_COLOR_SUPPLY + build_path = /obj/machinery/bouldertech/brm + req_components = list( + /datum/stock_part/capacitor = 1, + /datum/stock_part/scanning_module = 1, + /datum/stock_part/micro_laser = 1, + ) + +/obj/item/circuitboard/machine/refinery + name = "Boulder Refinery" + greyscale_colors = CIRCUIT_COLOR_SUPPLY + build_path = /obj/machinery/bouldertech/refinery + req_components = list( + /obj/item/reagent_containers/cup/beaker = 1, + /obj/item/assembly/igniter/condenser = 1, + /datum/stock_part/manipulator = 2, + /datum/stock_part/matter_bin = 1, + ) + +/obj/item/circuitboard/machine/smelter + name = "Boulder Smelter" + greyscale_colors = CIRCUIT_COLOR_SUPPLY + build_path = /obj/machinery/bouldertech/refinery/smelter + req_components = list( + /obj/item/assembly/igniter = 1, + /datum/stock_part/manipulator = 2, + /datum/stock_part/matter_bin = 2, + ) + +/obj/item/circuitboard/machine/big_manipulator + name = "Big Manipulator" + greyscale_colors = CIRCUIT_COLOR_ENGINEERING + build_path = /obj/machinery/big_manipulator + req_components = list( + /datum/stock_part/manipulator = 1, + ) + +/obj/item/circuitboard/machine/assembler + name = "Assembler" + greyscale_colors = CIRCUIT_COLOR_ENGINEERING + build_path = /obj/machinery/assembler + req_components = list( + /datum/stock_part/manipulator = 1, + ) diff --git a/monkestation/code/modules/factory_type_beat/debug.dm b/monkestation/code/modules/factory_type_beat/debug.dm new file mode 100644 index 000000000000..7f38eebb1485 --- /dev/null +++ b/monkestation/code/modules/factory_type_beat/debug.dm @@ -0,0 +1,49 @@ +/proc/count_lists() +#ifndef OPENDREAM + var/list_count = 0 + for(var/list/list) + list_count++ + + var/file = file("data/list_count/[GLOB.round_id].txt") + + WRITE_FILE(file, list_count) +#endif + +/proc/save_types() +#ifndef OPENDREAM + var/datum/D + var/atom/A + var/list/counts = new + for(A) counts[A.type] = (counts[A.type]||0) + 1 + for(D) counts[D.type] = (counts[D.type]||0) + 1 + + var/F = file("data/type_tracker/[GLOB.round_id]-stat_track.txt") + for(var/i in counts) + WRITE_FILE(F, "[i]\t[counts[i]]\n") +#endif + +/proc/save_datums() +#ifndef OPENDREAM + var/datum/D + var/list/counts = new + for(D) counts[D.type] = (counts[D.type]||0) + 1 + + var/F = file("data/type_tracker/[GLOB.round_id]-datums-[world.time].txt") + for(var/i in counts) + WRITE_FILE(F, "[i]\t[counts[i]]\n") +#endif + +///these procs don't work on od +SUBSYSTEM_DEF(memory_stats) + name = "Mem Stats" + init_order = INIT_ORDER_AIR + priority = FIRE_PRIORITY_AIR + wait = 5 MINUTES + flags = SS_NO_INIT | SS_BACKGROUND + runlevels = RUNLEVEL_GAME | RUNLEVEL_POSTGAME + +/datum/controller/subsystem/memory_stats/fire(resumed) + if(world.system_type == MS_WINDOWS) + var/memory_summary = call_ext("memorystats", "get_memory_stats")() + if(memory_summary) + rustg_file_write(memory_summary, "data/mem_stat/[GLOB.round_id]-memstat.txt") diff --git a/monkestation/code/modules/factory_type_beat/designs.dm b/monkestation/code/modules/factory_type_beat/designs.dm new file mode 100644 index 000000000000..e8b790b565cb --- /dev/null +++ b/monkestation/code/modules/factory_type_beat/designs.dm @@ -0,0 +1,236 @@ +#define FABRICATOR_SUBCATEGORY_MATERIALS "/Materials" + +/datum/design/manipulator_filter + name = "Manipulator Filter" + desc = "This can be inserted into a manipulator to give it filters." + id = "manipulator_filter" + build_path = /obj/item/manipulator_filter + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE | COLONY_FABRICATOR + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_CARGO + ) + materials = list(/datum/material/iron = 2000) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_CARGO | DEPARTMENT_BITFLAG_SERVICE + +/datum/design/manipulator_filter_cargo + name = "Manipulator Filter (Department)" + desc = "This can be inserted into a manipulator to give it filters." + id = "manipulator_filter_cargo" + build_path = /obj/item/manipulator_filter/cargo + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE | COLONY_FABRICATOR + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_CARGO + ) + materials = list(/datum/material/iron = 2000) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_CARGO | DEPARTMENT_BITFLAG_SERVICE + +/datum/design/manipulator_filter_internal + name = "Manipulator Filter (Internal)" + desc = "This can be inserted into a manipulator to give it filters." + id = "manipulator_filter_internal" + build_path = /obj/item/manipulator_filter/internal_filter + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE | COLONY_FABRICATOR + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_CARGO + ) + materials = list(/datum/material/iron = 2000) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_CARGO | DEPARTMENT_BITFLAG_SERVICE + +/datum/design/board/big_manipulator + name = "Big Manipulator Board" + desc = "The circuit board for a big manipulator." + id = "big_manipulator" + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE | COLONY_FABRICATOR + build_path = /obj/item/circuitboard/machine/big_manipulator + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ENGINEERING + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_CARGO | DEPARTMENT_BITFLAG_SERVICE + +/datum/design/board/assembler + name = "Assembler Board" + desc = "The circuit board for an assembler." + id = "assembler" + build_path = /obj/item/circuitboard/machine/assembler + build_type = COLONY_FABRICATOR | IMPRINTER | AWAY_IMPRINTER + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ENGINEERING + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_CARGO | DEPARTMENT_BITFLAG_SERVICE + +/datum/design/dissolution_chamber + name = "Dissolution Chamber" + id = "dissolution_chamber" + build_type = COLONY_FABRICATOR | AUTOLATHE | PROTOLATHE | AWAY_LATHE + materials = list( + /datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5, + /datum/material/glass = SHEET_MATERIAL_AMOUNT, + ) + build_path = /obj/item/flatpacked_machine/ore_processing/dissolution_chamber + category = list( + RND_CATEGORY_INITIAL, + FABRICATOR_SUBCATEGORY_MATERIALS, + ) + construction_time = 10 SECONDS + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_CARGO + +/datum/design/chemical_washer + name = "Chemical Washer" + id = "chemical_washer" + build_type = COLONY_FABRICATOR | AUTOLATHE | PROTOLATHE | AWAY_LATHE + materials = list( + /datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5, + /datum/material/glass = SHEET_MATERIAL_AMOUNT, + ) + build_path = /obj/item/flatpacked_machine/ore_processing/chemical_washer + category = list( + RND_CATEGORY_INITIAL, + FABRICATOR_SUBCATEGORY_MATERIALS, + ) + construction_time = 10 SECONDS + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_CARGO + +/datum/design/chemical_injector + name = "Chemical Injector" + id = "chemical_injector" + build_type = COLONY_FABRICATOR | AUTOLATHE | PROTOLATHE | AWAY_LATHE + materials = list( + /datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5, + /datum/material/glass = SHEET_MATERIAL_AMOUNT, + ) + build_path = /obj/item/flatpacked_machine/ore_processing/chemical_injector + category = list( + RND_CATEGORY_INITIAL, + FABRICATOR_SUBCATEGORY_MATERIALS, + ) + construction_time = 10 SECONDS + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_CARGO + +/datum/design/crystalizer + name = "Crystalizer" + id = "crystalizer" + build_type = COLONY_FABRICATOR | AUTOLATHE | PROTOLATHE | AWAY_LATHE + materials = list( + /datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5, + /datum/material/glass = SHEET_MATERIAL_AMOUNT, + ) + build_path = /obj/item/flatpacked_machine/ore_processing/crystalizer + category = list( + RND_CATEGORY_INITIAL, + FABRICATOR_SUBCATEGORY_MATERIALS, + ) + construction_time = 10 SECONDS + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_CARGO + +/datum/design/crusher + name = "Crusher" + id = "crusher" + build_type = COLONY_FABRICATOR | AUTOLATHE | PROTOLATHE | AWAY_LATHE + materials = list( + /datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5, + /datum/material/glass = SHEET_MATERIAL_AMOUNT, + ) + build_path = /obj/item/flatpacked_machine/ore_processing/crusher + category = list( + RND_CATEGORY_INITIAL, + FABRICATOR_SUBCATEGORY_MATERIALS, + ) + construction_time = 10 SECONDS + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_CARGO + +/datum/design/enricher + name = "Enrichment Chamber" + id = "enricher" + build_type = COLONY_FABRICATOR | AUTOLATHE | PROTOLATHE | AWAY_LATHE + materials = list( + /datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5, + /datum/material/glass = SHEET_MATERIAL_AMOUNT, + ) + build_path = /obj/item/flatpacked_machine/ore_processing/enricher + category = list( + RND_CATEGORY_INITIAL, + FABRICATOR_SUBCATEGORY_MATERIALS, + ) + construction_time = 10 SECONDS + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_CARGO + +/datum/design/purification_chamber + name = "Purification Chamber" + id = "purification_chamber" + build_type = COLONY_FABRICATOR | AUTOLATHE | PROTOLATHE | AWAY_LATHE + materials = list( + /datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5, + /datum/material/glass = SHEET_MATERIAL_AMOUNT, + ) + build_path = /obj/item/flatpacked_machine/ore_processing/purification_chamber + category = list( + RND_CATEGORY_INITIAL, + FABRICATOR_SUBCATEGORY_MATERIALS, + ) + construction_time = 10 SECONDS + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_CARGO + +/datum/design/brine_chamber + name = "Brine Chamber Controller" + id = "brine_chamber" + build_type = COLONY_FABRICATOR | AUTOLATHE | PROTOLATHE | AWAY_LATHE + materials = list( + /datum/material/iron = SHEET_MATERIAL_AMOUNT * 15, + /datum/material/glass = SHEET_MATERIAL_AMOUNT, + ) + build_path = /obj/item/flatpacked_machine/ore_processing/brine_chamber + category = list( + RND_CATEGORY_INITIAL, + FABRICATOR_SUBCATEGORY_MATERIALS, + ) + construction_time = 30 SECONDS + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_CARGO + +// Autolathe-able circuitboards for starting with boulder processing machines. +/datum/design/board/smelter + name = "Boulder Smelter" + desc = "A circuitboard for a boulder smelter. Lowtech enough to be printed from the lathe." + id = "b_smelter" + build_type = AUTOLATHE | COLONY_FABRICATOR + materials = list( + /datum/material/glass = SHEET_MATERIAL_AMOUNT, + /datum/material/iron = SHEET_MATERIAL_AMOUNT, + ) + build_path = /obj/item/circuitboard/machine/smelter + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_CARGO, + ) + departmental_flags = DEPARTMENT_BITFLAG_CARGO + +/datum/design/board/refinery + name = "Boulder Refinery" + desc = "A circuitboard for a boulder refinery. Lowtech enough to be printed from the lathe." + id = "b_refinery" + build_type = AUTOLATHE | COLONY_FABRICATOR + materials = list( + /datum/material/glass = SHEET_MATERIAL_AMOUNT, + /datum/material/iron = SHEET_MATERIAL_AMOUNT, + ) + build_path = /obj/item/circuitboard/machine/refinery + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_CARGO, + ) + departmental_flags = DEPARTMENT_BITFLAG_CARGO + + +/datum/design/board/brm + name = "Boulder Retrieval Matrix" + id = "brm" + materials = list( + /datum/material/glass = SHEET_MATERIAL_AMOUNT, + ) + build_path = /obj/item/circuitboard/machine/brm + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_TELEPORT, + ) + departmental_flags = DEPARTMENT_BITFLAG_CARGO + +#undef FABRICATOR_SUBCATEGORY_MATERIALS diff --git a/monkestation/code/modules/factory_type_beat/effects.dm b/monkestation/code/modules/factory_type_beat/effects.dm new file mode 100644 index 000000000000..ef0d6fb0adda --- /dev/null +++ b/monkestation/code/modules/factory_type_beat/effects.dm @@ -0,0 +1,21 @@ +/obj/effect/temp_visual/mining_overlay/vent + icon = 'monkestation/code/modules/factory_type_beat/icons/vent_overlays.dmi' + icon_state = "unknown" + duration = 45 + pixel_x = 0 + pixel_y = 0 + easing_style = CIRCULAR_EASING|EASE_IN + +/obj/effect/decal/cleanable/rubble + name = "rubble" + desc = "A pile of rubble." + icon = 'monkestation/code/modules/factory_type_beat/icons/debris.dmi' + icon_state = "rubble" + mergeable_decal = FALSE + beauty = -10 + +/obj/effect/decal/cleanable/rubble/Initialize(mapload) + . = ..() + flick("rubble_bounce", src) + icon_state = "rubble" + update_appearance(UPDATE_ICON_STATE) diff --git a/monkestation/code/modules/factory_type_beat/flatpacks.dm b/monkestation/code/modules/factory_type_beat/flatpacks.dm new file mode 100644 index 000000000000..2a08025476cc --- /dev/null +++ b/monkestation/code/modules/factory_type_beat/flatpacks.dm @@ -0,0 +1,35 @@ +/obj/item/flatpacked_machine/ore_processing + icon_state = "colony_lathe_packed" + +/obj/item/flatpacked_machine/ore_processing/dissolution_chamber + name = "flat-packed dissolution chamber" + type_to_deploy = /obj/machinery/bouldertech/dissolution_chamber + +/obj/item/flatpacked_machine/ore_processing/chemical_washer + name = "flat-packed chemical washer" + type_to_deploy = /obj/machinery/bouldertech/chemical_washer + +/obj/item/flatpacked_machine/ore_processing/chemical_injector + name = "flat-packed chemical injector" + type_to_deploy = /obj/machinery/bouldertech/chemical_injector + +/obj/item/flatpacked_machine/ore_processing/crystalizer + name = "flat-packed crystalizer" + type_to_deploy = /obj/machinery/bouldertech/crystalizer + +/obj/item/flatpacked_machine/ore_processing/crusher + name = "flat-packed crusher" + type_to_deploy = /obj/machinery/bouldertech/crusher + +/obj/item/flatpacked_machine/ore_processing/enricher + name = "flat-packed enrichment chamber" + type_to_deploy = /obj/machinery/bouldertech/enricher + +/obj/item/flatpacked_machine/ore_processing/purification_chamber + name = "flat-packed purification chamber" + type_to_deploy = /obj/machinery/bouldertech/purification_chamber + +/obj/item/flatpacked_machine/ore_processing/brine_chamber + name = "flat-packed brine chamber controller" + desc = "This is a massive deploy so clear space (5x5). This acts as the lower left corner" + type_to_deploy = /obj/structure/brine_chamber/controller diff --git a/monkestation/code/modules/factory_type_beat/icons/big_manipulator.dmi b/monkestation/code/modules/factory_type_beat/icons/big_manipulator.dmi new file mode 100644 index 0000000000000000000000000000000000000000..b6e878e1898427f00258da730b18a012a39d67e4 GIT binary patch literal 504 zcmVpfo43B)=#=y(qslFGY!qGbOXA7$|GV#hF%= zn41b=W7m_MlUN=PlqxDALtiRx+msbt{anCa0swp2Lyq!|ksts70P#sgK~zYI?UYLn zf-n$gwg~>p?<7f`+3sIYtaI4)Xv200DGTPE!Ct z=GbNc0047(R9JLGWpiV4X>fFDZ*Bkpc$`yKaB_9`^iy#0_2eo`Eh^5;&r`5fFwryM z;w;ZhDainGjE%TBGg33tGfE(w;*!LYR3K9+Ilm}XiHkEOv#1!zHRR$gNJ>0RZh$Chinb1d{*&0a8gsK~y-6)siu8gD@0^@sKb@s=-Ug zh7-VJ2qVG+NFBPs&?!rZlqpk?(lHFI6)YT}iNpnZfgYe2;4ZbncBr7q+<(A&?|uG_ zpP#1vBcX>ofbn$4zzv2LvzY1S7eMI%h?A6Q6A$W`NfEPjn=u_y<$(!h^05e$Y|j@x z+bI9AV9LcQv#s2C5Ei630n@7RdxO0M^xgu6;PN8^$UBSV`foizPE=^+PXjrt6$Sf* ze*>Wd`Ar}KtGWpUb?r*vbuH`jk8XM7cL3n`c<1rwSpvJaZZS)F3(xKn$F%d9rx(#k zPxhhgTd6l^{#d(4cFe3x-bt^vMIt*kOqWcA$Y(XC5{P_Ioxi5)IEk>y9c*0r+LTCX z_w!(SlK_f9%%cI-)aa6DN2HPUHDQ5isRr8cC>{Z3eZox zC%d}lIXXF|WM&;cb?WKc*K-#w2FeEdueuLZ%vciS7tG-B>_!@pQ(P4iQR0$XoLrPy zP?DLS$G}iACpfI2sPy}n;DV1|pJ;jOYMncCK6pc@!A0W-k95xaXr5#!(mA`s!Z^tI zvay%KoJW(6ObSs5)>JmsckS#pR^7ZpVo7_q@mdW-bI~JaE}p z`P?^H8Qzzxy;(l@k_7_;^F>b=$B>FSZ)YD2yX7F#W^BurdVGS71Lq!w3G5jjat*w; z?Xt5Md50gm#|$b%EQfZx$3Rj>tgFW5|4kr)@~`ff0(n=ansD0!+IV^%oazfEp(B*e6Q@)38Muo zlZ!hSalBx9y4lS}W|@LZ-IcaGuff06dCm7gTUKbI1Xka$m@2aqn zV~?r`PgUUgoHJRRPc;iBsjj@}9pbGKud-!{$!?Do>LGvXPrlGv*f&8Ur{1FHR7;6G zci@upI*VJvr=GaEo;dgWd3VTry+4zV#h0EtUtjOO&p_i}u9BDDp-7pU%Rieo*R3ku z_hR|p9CxFDN+Ojj%TLhdq6#t7( zHn-0E_vCQH+~?++%i^E$Z}E+vd`4{^qJK8_i|YL^?Y54bMm%!XJ2P?w=s>CmNESI^40^6HXl~!Wlf5~2PdoyX!Y?r zy_DDWgo~BW8!1hvY1~U|SG#phI2mZNDf*%g|ICiVI$NSe^!XzVCIsEk{neN6%_laO zxvbjX%UNyFBUk>}f1UhO*>9iEKlH}j=u6BtUNL^xiKX%J@>$vYYQFe$?0$G!I&858 zgYc`_wI_r5cT70QnZKRo>U z>h9-fo6h^CSJr)>cj2jDdg{UB*}twjryWk`pW*1c#bLJ91GVrSUzqhBorRmcKXED| dxytziJCE1X>0ErJcY$RKgQu&X%Q~loCICgw8C(DW literal 0 HcmV?d00001 diff --git a/monkestation/code/modules/factory_type_beat/icons/debris.dmi b/monkestation/code/modules/factory_type_beat/icons/debris.dmi new file mode 100644 index 0000000000000000000000000000000000000000..10b73560cbb170f78b3a84d09ae8947678da892c GIT binary patch literal 19814 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 HQ$iB}RnB4h literal 0 HcmV?d00001 diff --git a/monkestation/code/modules/factory_type_beat/icons/mining.dmi b/monkestation/code/modules/factory_type_beat/icons/mining.dmi new file mode 100644 index 0000000000000000000000000000000000000000..cdc886d85acd126560f0e647d2b33fa70b9c235c GIT binary patch literal 63105 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 {ZqJTtbW>!|`yi+Zm z=GYNp7cM|8EG+zgywo_A|M)n|vGu$%7jk6f%2+(WY!OCUT3Y`nPaZi78?tOV7aFG> zd3i><$NTaZ#F__+HWnhxV`MA4P|oN89t)R#c!RGfJ1c9ybs%U*V26r(GgqRm?egJt zAP?R05DXP^eAIGm?)2|sO2{q8KTmuQH~6Z0Y8J z8yEFtD`Y4Qmc2wibQyI>m2P<1k*}TB|ItDBtt?YZU;A}E;7CF0#9zYcMt!u|7Kh4v zb=A|+xpthNULtNM`|1wMj^q|(6_*SM9MP8YevxmdE=ccsmF)AXACLJ)h2kLowCDJ_ z4MggWm7xNoTY~VJmQ1rf@Z{~Cr6e~@<0kv z{_dbdekWt>)T!K(KGVPp%<@&>xfTo?tHJY+qUetogMFnLleA;DCQnp7I(-!TYo+Jt zFyP61@AG@@|8T4qMyeY?^ojd%KF~qxZT!;XS`%PNo^(iG@-8Zx=jZzkgNO}cYOA* zr5}l2$X~`&o+Re6cM?_PasA&i&s@(!&MKJE1#dkYfPu&GwPx?HFa4Ld(?&0bW{f{p zMgICd=%m_GY$yUfq3l*dbw}@eu113}Gmn@pu0;0MWxr!*WI09D9`HGnq!S^Zvysd0 z*(M$Q`QrIYDLG{>wH?n7Z=s>p0?@~6mDSl}6BW`N%tZ<#%kn_GZsa{EKRT7uD;kp~ zo|%3lyc1Q8YK3ig85ExC@jFRn0UBECL~gWj`%nUS@XJc(o)R#JsU_DOyFvzF&R=1} zgjVkKr3Z@NnCM}Uv$%rsb-+6yN1&Pq=<^*Tm>0h09g^qsIQgyH6!E@4#Q70%9!*#A zj-XNV5%~4rs46DQP7DHqdSXzt&ehZm`)sG`x$5M!>WR8)J_3-@~p{=zJJsJ`_0z@ ztfP5-tEz!%XNi%k@X|x9L>Vt+W?^DTe;aE7II zibGo5&7P7n@os5B&sBU8QvG|`*)_K{;^-g+2!4tcm}W-*kwT+%OvtUV)|3rLrlc%* zKsnVBcR5{J^s5Rk-czKp(j4hq=C-!>w?7ttjj@2ny?C)Cpqu%;n(H63>*jswK`1#> zRE@Mf>2i59jjsz04-PPC?6}}($^bCB)eRv8hHeu*@$u5Tsa4a!1E3j#-@EV2{21!1 ztIq)T$nTeyPgPDy&cEjL3AuJ^1dmY9vVt5H1R+ZXH29LTSQtZrS)5uN$ps^wX(L@O zHE{Bh-PAy?;^u@yVQ!`dJM4nONsfmmAx2htq&W^>SJhqfHC^2J1W-4R^k~iCMoz%w z!aDdZQjA|jzT%8FGY?trSzjKQ;?09EW&tJ#AoT?}a#R4yMHx}S$&#RJrR@_|vKKkB z*$%-3pS+AOyr+LZ5^(w2fD-1<4NO0#I!2s)I96vv5-Ows;)W)>>4K>W1MK+c!%vO> z>am;6GM%ajRN@*`x(0w1KZY^WX6@*#MPa4q1Z6c|KXDC!y#RlZ_*ZFRBWhzuWzKa( z&;&gx{(p}i?n^&gQ`5|~Z&m&@7L$Y%*b1j>rB;u|&B1DH(PQWX#r89(d@4q>au_ow zrvOh#im8g69EYlVjMUlmGURCyMcSrH+GC#`3y7oBe%T|>YdG&+$ihgcVm}vsIbC%Uj8!jyW_he?{R;D>Qu2x8>-!1jAgFAY` z9O;Q~>?FdgeLMSW_V$3bek8BMaWhvOV_6FOG^#rwnlS3@o0}#EOEaRHe5x+8ZkAiV z{`-5w`>6nDNt0h2+7s2I{>PV1aF(#23k!MjO+_?}oT>n1lhDEjt;J+Jq7dzA# zcT9`EZMg5{A2U4?xMMKQ=nIU;j}O&G+_$#2F1nwPO8m22@TXT!18%z;fAm}GbG$N! zGyp-s9`QeM4F7BxzpXA9IJ#@#m$E~CHZ^IDzpFiywP zlHcf*Oyot=@?4|Wf#ov;0# z2@4}E#jy9i9{Id540iK~^rB*UHuE_AwRzqy49g^!Dto=|f|PtkJv1Pvr+cpJk_#25 zCug}%=a0foSEp|c#6nT(QO9@pjBIv+ociS}6PgxMYxq9g25C%6c*3fCeYaNRpk|T? z0xINJ-im*8jJ^Dk>a&@Fxidt{m~)4z$g}yqqCtOmnZnb_9{)jj)S7n(c$^ zf6&rr#%md*xOHum)U1O)`@Y_tRI+Fh>~oGcz)_;!ZxOinsVN$6+4Xy!gxVh_W%9f9 zE!K>+RnVvIkc3uhCZ>E(hunvDlHH6b!w#odn0FbJPJL)R(!#BqDmojQGRpg)@_w53 zex`!Y!`7ca-XLUZl+_+oQq|G+)P`MrKI2Un&Z}=Z+(n+)y&tB9jykJ$Wa^F>vsm*?a%~59v?2DK zX&^J%QLvhNXVBswZC(0b0fMbfqZTA?c-bbeojdb^7U3k#Z_}MqWYMOKbAHFO(_VO3 zQ-!0Q(INb09>yMZ;E~<^iot7z@=1bi9&`6`m2yd_fPynjD@El((tJaEx~t43;ZY;l`>sI% zxPD);V|dYOpTJ)#38Nv2fOLxrE5?r6X5oTqdl>4&Otot~@=BRmm{!BKyB^BzjCYz> zp$jFV$hUtVc+8}7rb`NFv91X~&-m`muTss-3Ugb=QAGovt8;jyJ1KRJHv{;D{0EmI z5GFzCdjaKY6;ij~i(kc#T6h%&Gw55?4qa#!>~gET zax$MW#Zi{Cd=KItgnrxr;IjeR#Ny`e$)pOLm*>hKh*!IxnM{Oau_CtBk6d;pm{EN^ zzJc*G>$u6|f)MFb>{LqMD5hd%`($+;=0j*-&kUay1(T=yIY*Z@!J)|+;wYDzEf0BK za!`=% zJEUy;tS?qQP8X4Tp(w+y=hX!>UvtYPOZEG2vyc!A3O@tAU3}7A2KZJGD%eBAeUn!^ z^eyL^zCDETg9WY8^Gd7|wED|Pf>q@)2;5z>oxDt#;_YF4vS)zJl-d#^@}fF1~qTC zE(nmXb($ix$m81XX^04ejov2oqjoo8kg9lDG)dS!&U3X*jf=H(l zciAOfS0|n!5D&vNzc82XcktDI_dbqAf9u-i{GfXEPt!({(`E)6qzkRd$NR#mX-<#} zw|J86dw-Y(_}$uF5U|`*D(&pxsXYIt{Ps@fe<;piSRs{aipO%7a^*j42&M&;zpbsU zTj-c`V4`aNLwiU!3IO@>{~xrcr~qp~=v(`KVt9Q=g(UItga4Kpxw%@!7XBsUirmw| zg!Ade@7rqMyWy`^^Qtdh=G|M5P~Q7JKfb{*%)SBAQlz?pmc8CzZIV8xb}k70fkD38mfvGs<`MvFz3|Ym8TnCWK-_?_2~zv?>_^G`-q8_I0LllfA(l8hMsNo&j^e8P z6#-wo0HmEGg$D>dnqd8CxD{$#HbV8JCgjt^5#s`~&=LOvLeJ)}wWs~j2ylZu2Le*f z-NQ4Hi~bQsawai~=3Kk>nDJrn%&g5FkLJ9>3Az35TRI|#fvIKv;q8NhbS6w-B=1*J zH4QVO!0LB85eO0lDgU^tFu>l5nd>9dC(jx!)~#?V)vs_uRCQdL@6(zem6dnr`HD`* zB~YoY>BG~6cgLE2>O+T4W4U+h>hT$tV`=Jk+QDf%DuFv??+z@Fmll7yy6UC!b(-=bSw+lz*L7^_JrBSbir|Mh+Pfrd~$-oS5zfr%jjl;H&q}Z#pp*9!URrs=REclhe1lbU8G$2aENvMbwa1N2@0cbPFlRJSLejb>I)c}` zd?qm)uwG%jW920}8!5{XHo2>DEvAZ)@?5t{dFYX&s=?TEGG>=dS?pGQ*l>-x>#!a* z7LNhnCEE-2;o5jgT?#DWq!qNBiTfG#dNY|-uakS9o|Yvb)kdNpbFDq~O`(#e)|max z1qs){<=8_0m;vp*iLcxbKJfqv&j*nY*uIM2wyWgA6z^`8d|<1=K-H2-X=&G)y^KBg zuVQ^TuXDrk)7Q)_?#sK*DYTp^(TmP2BTZ7nS&Q@|{*L-&6D8vHr4 zO4ZvBxd*uP!V<%A?Jfv-782FOmb2#CyA3JEzX&)X^z_A&LMTRzsGx+3yesR`xWxsV zBt$lNQ!X~zZFv{Y>zv_j-Fjv8?p@vaHwe8po!XuC=Yy${+O>wk(##83eLcy1zSy0c z2U0Ub1-dnIp8s%8TGS3$kT6F}p8+@L-Qna_ucZ94<9Tx)?O|b*?hIp@nV;`X{T=|LR@u)ccww9LjNU!ti(w_hl&mAU@C9`9GQBW~MGF8L$**B$AQ7Q`NQNKvq zlPyf?CH2ou%E+ct+b383bbID%k`LR*gbtgUR6VI$q?kbdq!!jCL{3*~Y?rtBGq$U~!Ivhz^63`<;`r%*E66FkJK7qH?CHe(&l@RcA N=P#X`r8g`?{|i+?Vs8Kd literal 0 HcmV?d00001 diff --git a/monkestation/code/modules/factory_type_beat/icons/mining_machines.dmi b/monkestation/code/modules/factory_type_beat/icons/mining_machines.dmi new file mode 100644 index 0000000000000000000000000000000000000000..1be820a1fe411f1f55be962f73b83dcdf96d2531 GIT binary patch literal 25994 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%0D|Ja?sOiO{Btr@dY!DsjES7e@8Mtpr z)$*q==gEE+411$3=&RvkP*5HoorS-98)GN8E+_`+mtt=A03RxST+4VGu*#}9s6&nG zGxM^*W%^>$$2np0z_o9(r~F-5j~hjac{VoNJmC%41>O4~MD5@(@=CU!uIpu3Da(}G z_lBMJ<#FqKbFKAHeiL$Ox)3OZbw~i*j*glh9a6w^u=S=-SY4JeKnUNm7tvTl<*gZ< zfc5AG&R)N~;dB`E{CcoZ34+`whyZK<|bGOh)J^nbIn)Qoa=W8Oh(vbxBggA*pwfDs0zq^aR=*4-$1 z(;H@yzpC`by_TdsYowzDW=`ENw;K19v!wd9X%cBJ;-NzxTq?tP%2vD0M5Z7p!*|Nc zRJ;uD-U&H2ggW6Qd?4+_9Ej>578f~|d=THABx4%q>y8j#E6_qA3w2CD(A{8s$sqq3oQ;)nE-p6Nlhx7?!q=<*9M*@@jb~)m7Ig zaI2Y$)!C)3(Y5Gq<^2Flf%gVsQ6NHQuEZ=?MJ_+(3!Ox(WS0X7b+{Hr`~of`K-b3 z`s>S(b7-G}_1lcvM>R`Oxc+CfADSx3=oTblgnu~tewI^_ z(rqffLblgG`d}92XWN0Ds93%SJx4MbPo8|icYCrJ`oZRaaW}|~r#vXTk=wlN{0=vgY`v#D$<%+Fj+sIY4Zk7l_Wh9KPd z(TB^QTJ@PrGF5ynuX0|CQ$V2<1eYsX)l@mDZRxriOcJGqyhA^K+kP_34|>yY+Ivdg z4*U4(XmO7FN*L0Y&y5DZVIH`q5iZvK>2zUM?dbe}Jt|cG3rU9VX2G z2*^II{CRPW>*H@u&tlxg5OtEil%+rGYCood1|O!|&w_>q zVQ9p3`mt=*H4!0l5yM4Y^|(4zke5(sTOib0HeG##AHhLA1&$G)rT9n4oMz;nYf0M% z{IgdL^3Wysg>M70Gxl_Go@8w_!!Ic-59wL4{MJASMa1l&(|fvV5^z85XTIG&F|>&V zX8*%~k869uwTX_Gey4kI!5xxwh^7OL2=FeF-d9|midRT%hBprfOd=jU*@u}h*?S%E zL3^GSqGC#r?+MTGpKm-oPAXNkRzHarg)R87!0$#)-N7bX?)VaUk?K$nmq+mn_krqi ze9h{okEhubZhR#NPxgjDnX2+1AFO6txpTLuXUT{93;|WJvMxlgL7!agm|^=k8>AwN8Xuc?s zrw^5rd96Jbrl3}ScL6-V@M~zX6q>lDj-Kv5!r-djGZs1S(SBvYZ$XrP%VV+Du3?pX zXwlD2IfTrCLD+K8_hyj^4_|C6CdQiN>>xafm^1A%Jm>*isU)*~lE$nOc%4;^sc#6F ziKVl?_}G4FD!Pfnx2`}^gnS#0QhF~r>K z!lTX=5%y{iSNBuQ5~ChlEL@fr!9L(gNqL-G@B$VaSm`!Zb_NgP{IdGC6>R#rw*F0z zkT|`*OVkAg8U8CnbgHHol^2U=o)x;N3O#Ot?g^x&U?qa7jCr)o(ntL;+d;>L;06O( n!gbvbYoTx9|1D|$3Z>(qgD9+36@7nY2>hrkYbup1Scd)&*WrwU literal 0 HcmV?d00001 diff --git a/monkestation/code/modules/factory_type_beat/icons/ore.dmi b/monkestation/code/modules/factory_type_beat/icons/ore.dmi new file mode 100644 index 0000000000000000000000000000000000000000..7cc3b8820577c88044de6c38f037d81053e7737c GIT binary patch literal 9564 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 literal 0 HcmV?d00001 diff --git a/monkestation/code/modules/factory_type_beat/icons/processing.dmi b/monkestation/code/modules/factory_type_beat/icons/processing.dmi new file mode 100644 index 0000000000000000000000000000000000000000..f154d3c132743f2c78e734dbf1742931a1db5e01 GIT binary patch literal 626 zcmV-&0*(ENP)gwu%fPnb;_?DKI($dnvz`%2VAd>(900DGTPE!Ct=GbNc004%1R9JLG zWpiV4X>fFDZ*Bkpc$`yKaB_9`^iy#0_2eo`Eh^5;&r`5fFwryM;w;ZhDainGjE%TB zGg33tGfE(w;*!LYR3K9+xu_Dz&QapxOvx-N28tMRai$d|=B7f}aCOBQiA5;{RVC+? z<`xiCl~P(Dq0Oz+x_ACCe)c^nia7jc#R7i>Kl(BDuKop1Z z62mI=s2%k<#TC?~EA%RiYDzkr7+n>k=jz$k`?JMG-eGbqUE1*5zQ_CC zbUcmkh4zB`>>Ua>1_DklmlwY%d~Q9TIRxG^XKv^X=$99eOGMnhY|bgo;rUiSJ8Y?)MvI}g#Z8m M07*qoM6N<$f<(U=o&W#< literal 0 HcmV?d00001 diff --git a/monkestation/code/modules/factory_type_beat/icons/terrain.dmi b/monkestation/code/modules/factory_type_beat/icons/terrain.dmi new file mode 100644 index 0000000000000000000000000000000000000000..fd930fe709dcec26c02157f340a847fe5d04bb51 GIT binary patch literal 6098 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 literal 0 HcmV?d00001 diff --git a/monkestation/code/modules/factory_type_beat/icons/vent_overlays.dmi b/monkestation/code/modules/factory_type_beat/icons/vent_overlays.dmi new file mode 100644 index 0000000000000000000000000000000000000000..54ac3d7a819bb01d19e11503e6a8339128453732 GIT binary patch literal 1404 zcmeAS@N?(olHy`uVBq!ia0vp^4M2Q=gAGWYNy}aiq&8KBM3lIs7AF^F7L;V>=P@u; z%;}wYmg|s#K+E})!7bnP{)yzrEm`^{;l85T#@I9dC-Zdo?d@(d@7zA~X>vlDS83j@ zb>Ux^PUfF2kQAUEn!7D%O+rRe@eOaoND1|%;x#Ih)J|_|5OG#)ZEVRY54tny+qcF0 zFT5~Gnl@|ZC#&w*yGe!DnnRtdK3)AQ>SK^%$#VSb=iEicksS>s4M)=*nQtARz#ntS z_Q==g>%Fgj`C5HY{O;#wx2c)l%?u1It)4E9Ar*7p-rbum;wW+aW9Kq~8fMkjKo=dJ z&P6UAfh-?ee_UHJful=9Xrs_$?}cXDk`h&f0e*`-80sp1U+MgOX0hhQb`@{&`iGO!mPVg{x^KbEjW^{*1$<(1zbL-6 zsQlBht6<~y9l8Az=bU-Z(5AVAuj#IGq~BdelXZVeEH~~*5}YAhw{fxAm9^Zw4_3>s zFaBL!l*T(jH1NtOd{lK?3zmvD7-usrYrrP+NF;l`t*6WG} zZwliC8M-xhv}oTy@%GU&sY&9EJO8%-OnKK8yO8nE&zE&crAb^TX6XI<(z-S)@c2}S zc_;oWF!Zg=wvBjm*20tJfTI1qyBv4@m>3H>_B|@SczMSsUa>~L6Geg?z$Atn+zI^3 z&2jtIEvNV_3k!=EXS{iDTihk?*5$m^L_jgDFyCbKh|ca zYuxplJ9q7w8+n0@p3ICMH-7mBU%k+6@3?;U&F5T96PTuR#dR?(ak$Uu^FB(#D8A*% zO#bczXZ#sXX5N^t;!<$-<53U=?A63)bwX2o1Q zepgUn_IAbv4<;XeeV*})NWjZZhL07}47RLOq!(Mo`7bD@_RTB?DSrredS{5MmsLPK3APiwuI#0=Poqum8l2_U8wQqiFc0R zithUxcDc&#z9wyAYj!(LMpQsWf9moE^;+|*+s-i`HM}$NSMmZ*raKe77)mbg{B(E9 zi$z(R#2Y;){JVchxR$G6;Q@~4Z`}{hkUahC_l34>=l;!;6Z-e_6k*bF 0) + S = locate(path_key) in crafting_inventory + if(S.amount >= amt) + if(!locate(S.type) in Deletion) + SD = new S.type() + Deletion += SD + S.use(amt) + SD = locate(S.type) in Deletion + SD.amount += amt + continue main_loop + else + amt -= S.amount + if(!locate(S.type) in Deletion) + Deletion += S + else + data = S.amount + S = locate(S.type) in Deletion + S.add(data) + crafting_inventory -= S + else + var/atom/movable/I + while(amt > 0) + I = locate(path_key) in crafting_inventory + Deletion += I + crafting_inventory -= I + amt-- + var/list/partlist = list(chosen_recipe.parts.len) + for(var/M in chosen_recipe.parts) + partlist[M] = chosen_recipe.parts[M] + for(var/part in chosen_recipe.parts) + if(isstack(part)) + var/obj/item/stack/ST = locate(part) in Deletion + if(ST.amount > partlist[part]) + ST.amount = partlist[part] + stored_parts += ST + Deletion -= ST + continue + else + while(partlist[part] > 0) + var/atom/movable/AM = locate(part) in Deletion + stored_parts += AM + Deletion -= AM + partlist[part] -= 1 + while(Deletion.len) + var/DL = Deletion[Deletion.len] + Deletion.Cut(Deletion.len) + if(istype(DL, /obj/item/storage)) + var/obj/item/storage/container = DL + container.emptyStorage() + else if(isstructure(DL)) + var/obj/structure/structure = DL + structure.dump_contents(structure.drop_location()) + qdel(DL) + + var/atom/movable/I + if(ispath(chosen_recipe.result, /obj/item/stack)) + I = new chosen_recipe.result(src, chosen_recipe.result_amount || 1) + I.forceMove(drop_location()) + else + I = new chosen_recipe.result (src) + I.forceMove(drop_location()) + if(I.atom_storage && chosen_recipe.delete_contents) + for(var/obj/item/thing in I) + qdel(thing) + I.CheckParts(stored_parts, chosen_recipe) + I.forceMove(drop_location()) + + crafting = FALSE + check_recipe_state() + + +/datum/hover_data/assembler + var/obj/effect/overlay/hover/recipe_icon + var/last_type + +/datum/hover_data/assembler/New(datum/component/hovering_information, atom/parent) + . = ..() + recipe_icon = new(null) + recipe_icon.maptext_width = 64 + recipe_icon.maptext_y = 32 + recipe_icon.maptext_x = -4 + recipe_icon.alpha = 125 + +/datum/hover_data/assembler/setup_data(obj/machinery/assembler/source, mob/enterer) + . = ..() + if(!source.chosen_recipe) + return + if(last_type != source.chosen_recipe.result) + update_image(source) + var/image/new_image = new(source) + new_image.appearance = recipe_icon.appearance + SET_PLANE_EXPLICIT(new_image, new_image.plane, source) + if(!isturf(source.loc)) + new_image.loc = source.loc + else + new_image.loc = source + add_client_image(new_image, enterer.client) + +/datum/hover_data/assembler/proc/update_image(obj/machinery/assembler/source) + if(!source.chosen_recipe) + return + last_type = source.chosen_recipe.result + + var/atom/atom = source.chosen_recipe.result + + recipe_icon.icon = initial(atom.icon) + recipe_icon.icon_state = initial(atom.icon_state) diff --git a/monkestation/code/modules/factory_type_beat/machinery/atmos_chem/chemical_infuser.dm b/monkestation/code/modules/factory_type_beat/machinery/atmos_chem/chemical_infuser.dm new file mode 100644 index 000000000000..d34edeeed4d4 --- /dev/null +++ b/monkestation/code/modules/factory_type_beat/machinery/atmos_chem/chemical_infuser.dm @@ -0,0 +1,129 @@ +/obj/machinery/atmospherics/components/unary/chemical_infuser + name = "chemical infuser" + desc = "An afront to both chemists and atmospheric technicans." + + layer = BELOW_OBJ_LAYER + + icon_state = "reaction_chamber" + icon = 'icons/obj/plumbing/plumbers.dmi' + + initialize_directions = EAST + + var/static/list/chemical_infuser_recipes = list() + var/datum/chemical_infuser_recipe/chosen_recipe + var/processing = FALSE + +/obj/machinery/atmospherics/components/unary/chemical_infuser/Initialize(mapload) + . = ..() + create_reagents(1000, TRANSPARENT) + AddComponent(/datum/component/plumbing/chemical_infuser) + +/obj/machinery/atmospherics/components/unary/chemical_infuser/set_init_directions() + . = ..() + switch(dir) + if(SOUTH) + initialize_directions = EAST + if(NORTH) + initialize_directions = WEST + if(WEST) + initialize_directions = SOUTH + if(EAST) + initialize_directions = NORTH + +/obj/machinery/atmospherics/components/unary/chemical_infuser/ui_interact(mob/user, datum/tgui/ui) + if(!length(chemical_infuser_recipes)) + create_recipes() + chosen_recipe = tgui_input_list(user, "Choose a recipe to focus on.", name, chemical_infuser_recipes) + +/obj/machinery/atmospherics/components/unary/chemical_infuser/proc/create_recipes() + for(var/datum/chemical_infuser_recipe/new_recipes as anything in subtypesof(/datum/chemical_infuser_recipe)) + chemical_infuser_recipes += new new_recipes + +/obj/machinery/atmospherics/components/unary/chemical_infuser/examine(mob/user) + . = ..() + if(chosen_recipe) + . += "[chosen_recipe.name] requires:" + for(var/datum/reagent/reagent as anything in chosen_recipe.required_reagents) + var/amount = reagents.get_reagent_amount(reagent) + . += "[reagent.name]: [amount] / [chosen_recipe.required_reagents[reagent]]" + for(var/datum/gas/gas as anything in chosen_recipe.required_gases) + var/datum/gas_mixture/mixture = airs[1] + mixture.assert_gas(gas) + var/gas_amount = mixture.gases[gas][MOLES] + . += "[gas.name]: [gas_amount] / [chosen_recipe.required_gases[gas]]" + +/obj/machinery/atmospherics/components/unary/chemical_infuser/process_atmos() + if(!chosen_recipe) + return + + var/passes_all_gases = TRUE + for(var/datum/gas/gas as anything in chosen_recipe.required_gases) + var/datum/gas_mixture/mixture = airs[1] + mixture.assert_gas(gas) + var/gas_amount = mixture.gases[gas][MOLES] + if(gas_amount < chosen_recipe.required_gases[gas]) + passes_all_gases = FALSE + break + if(!passes_all_gases) + return + + var/passes_all_chemicals = TRUE + for(var/datum/reagent/reagent as anything in chosen_recipe.required_reagents) + var/amount = reagents.get_reagent_amount(reagent) + if(amount < chosen_recipe.required_reagents[reagent]) + passes_all_chemicals = FALSE + break + if(!passes_all_chemicals) + return + + if(!processing) + playsound(get_turf(src), 'sound/effects/bubbles2.ogg', 25, TRUE) + var/list/seen = viewers(4, get_turf(src)) + var/iconhtml = icon2html(src, seen) + audible_message(span_notice("[iconhtml] The solution bubbles fiercely!")) + addtimer(CALLBACK(src, PROC_REF(create_recipe)), 7 SECONDS) + processing = TRUE + +/obj/machinery/atmospherics/components/unary/chemical_infuser/proc/create_recipe() + processing = FALSE + for(var/datum/reagent/reagent as anything in chosen_recipe.required_reagents) + reagents.remove_all_type(reagent, chosen_recipe.required_reagents[reagent]) + var/datum/gas_mixture/mixture = airs[1] + + for(var/datum/gas/gas as anything in chosen_recipe.required_gases) + mixture.remove_specific(gas, chosen_recipe.required_gases[gas]) + + for(var/datum/reagent/reagent as anything in chosen_recipe.outputs) + reagents.add_reagent(reagent, chosen_recipe.outputs[reagent]) + +/datum/component/plumbing/chemical_infuser + demand_connects = NORTH + supply_connects = SOUTH + +/datum/component/plumbing/chemical_infuser/Initialize(start=TRUE, _ducting_layer, _turn_connects=TRUE, datum/reagents/custom_receiver) + . = ..() + if(!istype(parent, /obj/machinery/atmospherics/components/unary/chemical_infuser)) + return COMPONENT_INCOMPATIBLE + +/datum/component/plumbing/chemical_infuser/can_give(amount, reagent, datum/ductnet/net) + . = ..() + var/obj/machinery/plumbing/reaction_chamber/reaction_chamber = parent + if(!. || !reaction_chamber.emptying || reagents.is_reacting == TRUE) + return FALSE + +/datum/component/plumbing/chemical_infuser/send_request(dir) + var/obj/machinery/atmospherics/components/unary/chemical_infuser/chamber = parent + if(!chamber.chosen_recipe) + return + + for(var/required_reagent in chamber.chosen_recipe.required_reagents) + var/has_reagent = FALSE + for(var/datum/reagent/containg_reagent as anything in reagents.reagent_list) + if(required_reagent == containg_reagent.type) + has_reagent = TRUE + if(containg_reagent.volume + CHEMICAL_QUANTISATION_LEVEL < chamber.chosen_recipe.required_reagents[required_reagent]) + process_request(min(chamber.chosen_recipe.required_reagents[required_reagent] - containg_reagent.volume, MACHINE_REAGENT_TRANSFER) , required_reagent, dir) + return + if(!has_reagent) + process_request(min(chamber.chosen_recipe.required_reagents[required_reagent], MACHINE_REAGENT_TRANSFER), required_reagent, dir) + return diff --git a/monkestation/code/modules/factory_type_beat/machinery/atmos_chem/chemical_infuser_recipes/_base.dm b/monkestation/code/modules/factory_type_beat/machinery/atmos_chem/chemical_infuser_recipes/_base.dm new file mode 100644 index 000000000000..d4cf68eb86cf --- /dev/null +++ b/monkestation/code/modules/factory_type_beat/machinery/atmos_chem/chemical_infuser_recipes/_base.dm @@ -0,0 +1,5 @@ +/datum/chemical_infuser_recipe + var/name = "Test" + var/list/outputs = list() + var/list/required_gases = list() + var/list/required_reagents = list() diff --git a/monkestation/code/modules/factory_type_beat/machinery/atmos_chem/chemical_infuser_recipes/sulfur.dm b/monkestation/code/modules/factory_type_beat/machinery/atmos_chem/chemical_infuser_recipes/sulfur.dm new file mode 100644 index 000000000000..1dd00d6b4114 --- /dev/null +++ b/monkestation/code/modules/factory_type_beat/machinery/atmos_chem/chemical_infuser_recipes/sulfur.dm @@ -0,0 +1,26 @@ +/datum/chemical_infuser_recipe/sulfur + name = "Sulfur" + required_reagents = list(/datum/reagent/gunpowder = 5) + required_gases = list(/datum/gas/oxygen = 5) + outputs = list(/datum/reagent/sulfur = 50) + +/datum/chemical_infuser_recipe/sulfur_trioxide + name = "Sulfur Trioxide" + + required_reagents = list(/datum/reagent/sulfur/dioxide = 5) + required_gases = list(/datum/gas/oxygen = 5) + outputs = list(/datum/reagent/sulfur/trioxide = 10) + +/datum/chemical_infuser_recipe/sulfuric_acid + name = "Sulfuric Acid" + + required_gases = list(/datum/gas/oxygen = 5) + required_reagents = list(/datum/reagent/sulfur/trioxide = 5) + outputs = list(/datum/reagent/toxin/acid = 10) + + +/datum/reagent/sulfur/dioxide + name = "Sulfur Dioxide" + +/datum/reagent/sulfur/trioxide + name = "sulfur Trioxide" diff --git a/monkestation/code/modules/factory_type_beat/machinery/atmos_chem/pressurised_reactions/_base.dm b/monkestation/code/modules/factory_type_beat/machinery/atmos_chem/pressurised_reactions/_base.dm new file mode 100644 index 000000000000..1823238c1ed7 --- /dev/null +++ b/monkestation/code/modules/factory_type_beat/machinery/atmos_chem/pressurised_reactions/_base.dm @@ -0,0 +1,5 @@ +/datum/pressurized_reaction + var/name = "Test" + var/list/outputs = list() + var/required_pressure = 0 + var/list/required_reagents = list() diff --git a/monkestation/code/modules/factory_type_beat/machinery/atmos_chem/pressurised_reactions/sulfur.dm b/monkestation/code/modules/factory_type_beat/machinery/atmos_chem/pressurised_reactions/sulfur.dm new file mode 100644 index 000000000000..df643cb43e2d --- /dev/null +++ b/monkestation/code/modules/factory_type_beat/machinery/atmos_chem/pressurised_reactions/sulfur.dm @@ -0,0 +1,5 @@ +/datum/pressurized_reaction/sulfur_dioxide + name = "Sulfur Dioxide" + required_pressure = 300 + required_reagents = list(/datum/reagent/sulfur = 50) + outputs = list(/datum/reagent/sulfur/dioxide = 50) diff --git a/monkestation/code/modules/factory_type_beat/machinery/atmos_chem/pressurized_reaction_chamber.dm b/monkestation/code/modules/factory_type_beat/machinery/atmos_chem/pressurized_reaction_chamber.dm new file mode 100644 index 000000000000..fca6dbfbe1b7 --- /dev/null +++ b/monkestation/code/modules/factory_type_beat/machinery/atmos_chem/pressurized_reaction_chamber.dm @@ -0,0 +1,112 @@ +/obj/machinery/atmospherics/components/unary/pressurized_reaction_chamber + name = "pressurized reaction chamber" + desc = "An afront to both chemists and atmospheric technicans." + + icon_state = "reaction_chamber" + icon = 'icons/obj/plumbing/plumbers.dmi' + + initialize_directions = EAST + + var/static/list/pressurized_reaction_recipes = list() + var/datum/pressurized_reaction/chosen_recipe + var/processing = FALSE + +/obj/machinery/atmospherics/components/unary/pressurized_reaction_chamber/Initialize(mapload) + . = ..() + create_reagents(1000, TRANSPARENT) + AddComponent(/datum/component/plumbing/pressurized_reaction_chamber) + +/obj/machinery/atmospherics/components/unary/pressurized_reaction_chamber/set_init_directions() + . = ..() + switch(dir) + if(SOUTH) + initialize_directions = EAST + if(NORTH) + initialize_directions = WEST + if(WEST) + initialize_directions = SOUTH + if(EAST) + initialize_directions = NORTH + +/obj/machinery/atmospherics/components/unary/pressurized_reaction_chamber/ui_interact(mob/user, datum/tgui/ui) + if(!length(pressurized_reaction_recipes)) + create_recipes() + chosen_recipe = tgui_input_list(user, "Choose a recipe to focus on.", name, pressurized_reaction_recipes) + +/obj/machinery/atmospherics/components/unary/pressurized_reaction_chamber/proc/create_recipes() + for(var/datum/pressurized_reaction/new_recipes as anything in subtypesof(/datum/pressurized_reaction)) + pressurized_reaction_recipes += new new_recipes + +/obj/machinery/atmospherics/components/unary/pressurized_reaction_chamber/examine(mob/user) + . = ..() + if(chosen_recipe) + . += "[chosen_recipe.name] requires:" + for(var/datum/reagent/reagent as anything in chosen_recipe.required_reagents) + var/amount = reagents.get_reagent_amount(reagent) + . += "[reagent.name]: [amount] / [chosen_recipe.required_reagents[reagent]]" + . += "[chosen_recipe.required_pressure]kPa of pressure." + +/obj/machinery/atmospherics/components/unary/pressurized_reaction_chamber/process_atmos() + if(!chosen_recipe) + return + + var/passes_all_chemicals = TRUE + for(var/datum/reagent/reagent as anything in chosen_recipe.required_reagents) + var/amount = reagents.get_reagent_amount(reagent) + if(amount < chosen_recipe.required_reagents[reagent]) + passes_all_chemicals = FALSE + break + if(!passes_all_chemicals) + return + var/datum/gas_mixture/mixture = airs[1] + var/pressure = mixture.return_pressure() + if(pressure < chosen_recipe.required_pressure) + return + + if(!processing) + playsound(get_turf(src), 'sound/effects/bubbles2.ogg', 25, TRUE) + var/list/seen = viewers(4, get_turf(src)) + var/iconhtml = icon2html(src, seen) + audible_message(span_notice("[iconhtml] The solution bubbles fiercely!")) + addtimer(CALLBACK(src, PROC_REF(create_recipe)), 7 SECONDS) + processing = TRUE + +/obj/machinery/atmospherics/components/unary/pressurized_reaction_chamber/proc/create_recipe() + processing = FALSE + for(var/datum/reagent/reagent as anything in chosen_recipe.required_reagents) + reagents.remove_all_type(reagent, chosen_recipe.required_reagents[reagent]) + + for(var/datum/reagent/reagent as anything in chosen_recipe.outputs) + reagents.add_reagent(reagent, chosen_recipe.outputs[reagent]) + +/datum/component/plumbing/pressurized_reaction_chamber + demand_connects = NORTH + supply_connects = SOUTH + +/datum/component/plumbing/pressurized_reaction_chamber/Initialize(start=TRUE, _ducting_layer, _turn_connects=TRUE, datum/reagents/custom_receiver) + . = ..() + if(!istype(parent, /obj/machinery/atmospherics/components/unary/pressurized_reaction_chamber)) + return COMPONENT_INCOMPATIBLE + +/datum/component/plumbing/pressurized_reaction_chamber/can_give(amount, reagent, datum/ductnet/net) + . = ..() + var/obj/machinery/plumbing/reaction_chamber/reaction_chamber = parent + if(!. || !reaction_chamber.emptying || reagents.is_reacting == TRUE) + return FALSE + +/datum/component/plumbing/pressurized_reaction_chamber/send_request(dir) + var/obj/machinery/atmospherics/components/unary/pressurized_reaction_chamber/chamber = parent + if(!chamber.chosen_recipe) + return + + for(var/required_reagent in chamber.chosen_recipe.required_reagents) + var/has_reagent = FALSE + for(var/datum/reagent/containg_reagent as anything in reagents.reagent_list) + if(required_reagent == containg_reagent.type) + has_reagent = TRUE + if(containg_reagent.volume + CHEMICAL_QUANTISATION_LEVEL < chamber.chosen_recipe.required_reagents[required_reagent]) + process_request(min(chamber.chosen_recipe.required_reagents[required_reagent] - containg_reagent.volume, MACHINE_REAGENT_TRANSFER) , required_reagent, dir) + return + if(!has_reagent) + process_request(min(chamber.chosen_recipe.required_reagents[required_reagent], MACHINE_REAGENT_TRANSFER), required_reagent, dir) + return diff --git a/monkestation/code/modules/factory_type_beat/machinery/brine_chamber.dm b/monkestation/code/modules/factory_type_beat/machinery/brine_chamber.dm new file mode 100644 index 000000000000..45fa27f2bde3 --- /dev/null +++ b/monkestation/code/modules/factory_type_beat/machinery/brine_chamber.dm @@ -0,0 +1,144 @@ +/obj/structure/brine_chamber + name = "brine chamber" + desc = "Converts water into brine." + icon = 'monkestation/code/modules/factory_type_beat/icons/mining_machines.dmi' + icon_state = "brine_chamber" + density = TRUE + anchored = TRUE + can_atmos_pass = ATMOS_PASS_NO + + +//pain +/obj/structure/brine_chamber/proc/assert_sprite() + var/obj/structure/brine_chamber/above = locate(/obj/structure/brine_chamber) in get_step(src, NORTH) + var/obj/structure/brine_chamber/below = locate(/obj/structure/brine_chamber) in get_step(src, SOUTH) + var/obj/structure/brine_chamber/left = locate(/obj/structure/brine_chamber) in get_step(src, WEST) + var/obj/structure/brine_chamber/right = locate(/obj/structure/brine_chamber) in get_step(src, EAST) + + if(!above && !below) + icon_state = "brine_chamber" + return + if(above && below) + icon_state = "brine_chamber_vertical" + return + if((above || below) && (left || right)) + icon_state = "brine_corner" + if(above && left) + dir = NORTH + if(above && right) + dir = SOUTH + if(below && left) + dir = WEST + if(below && right) + dir = EAST + +/obj/structure/brine_chamber/controller/assert_sprite() + return + +/obj/structure/brine_chamber/Initialize(mapload) + . = ..() + AddElement(/datum/element/give_turf_traits, string_list(list(TRAIT_BLOCK_LIQUID_SPREAD))) + +/obj/structure/brine_chamber/controller + icon_state = "brine_chamber_controller" + + var/list/turfs = list() + var/list/walls = list() + var/process_count = 0 + +/obj/structure/brine_chamber/controller/Initialize(mapload) + . = ..() + var/turf/our_turf = get_turf(src) + var/turf/inner_turf = get_step(src, NORTH) + inner_turf = get_step(inner_turf, EAST) + var/list/spawn_turfs = CORNER_OUTLINE(inner_turf, 2, 2) + var/list/full_turfs = CORNER_BLOCK(our_turf, 4, 4) + turfs = full_turfs - spawn_turfs + + for(var/turf/spawned_turf in spawn_turfs) + if(spawned_turf == our_turf) + continue + if(spawned_turf.is_blocked_turf(TRUE)) + repack() + break + var/obj/structure/brine_chamber/new_piece = new (spawned_turf) + walls += new_piece + for(var/obj/structure/brine_chamber/chamber as anything in walls) + chamber.assert_sprite() + + create_reagents(3000, TRANSPARENT) + AddComponent(/datum/component/plumbing/brine_controller) + AddComponent(/datum/component/plumbing/chemical_washer_water) + AddElement(/datum/element/repackable, item_to_pack_into = /obj/item/flatpacked_machine/ore_processing/brine_chamber, repacking_time = 3 SECONDS) + + START_PROCESSING(SSobj, src) + +/obj/structure/brine_chamber/controller/Destroy() + . = ..() + repack(TRUE) + +/obj/structure/brine_chamber/controller/process(seconds_per_tick) + if(process_count < 10) + process_count++ + return + process_count = 0 + + var/turf/inside_turf = pick(turfs) + if(reagents.total_volume) + inside_turf.add_liquid_from_reagents(reagents, FALSE, reagents.chem_temp, reagents.total_volume) + reagents.remove_all(reagents.total_volume) + if(!inside_turf?.liquids) + return + var/water_volume = inside_turf.liquids.liquid_group.reagents.get_reagent_amount(/datum/reagent/water) + inside_turf.liquids.liquid_group.reagents.remove_all_type(/datum/reagent/water, water_volume * 0.1) + inside_turf.add_liquid(/datum/reagent/brine, water_volume * 0.1, FALSE, 300) + + +/obj/structure/brine_chamber/controller/proc/repack(from_destroy = FALSE) + for(var/atom/movable/wall as anything in walls) + walls -= wall + qdel(wall) + if(!from_destroy) + new/obj/item/flatpacked_machine/ore_processing/brine_chamber(src.drop_location()) + turfs = null + + +/datum/component/plumbing/brine_controller + supply_connects = SOUTH + supply_color = COLOR_GREEN + extend_pipe_to_edge = TRUE + + ducting_layer = FOURTH_DUCT_LAYER + + +///returns TRUE when they can give the specified amount and reagent. called by process request +/datum/component/plumbing/brine_controller/can_give(amount, reagent, datum/ductnet/net) + if(amount <= 0) + return + var/obj/structure/brine_chamber/controller/host = parent + var/turf/inside_turf = pick(host.turfs) + if(!inside_turf.liquids) + return + + if(reagent) //only asked for one type of reagent + for(var/datum/reagent/contained_reagent as anything in inside_turf.liquids.liquid_group.reagents.reagent_list) + if(contained_reagent.type == reagent) + return TRUE + else if(inside_turf.liquids.liquid_group.reagents.total_volume) //take whatever + return TRUE + + return FALSE + +///this is where the reagent is actually transferred and is thus the finish point of our process() +/datum/component/plumbing/brine_controller/transfer_to(datum/component/plumbing/target, amount, reagent, datum/ductnet/net) + if(!target || !target.reagents) + return FALSE + var/obj/structure/brine_chamber/controller/host = parent + var/turf/inside_turf = pick(host.turfs) + if(!inside_turf.liquids) + return + + if(reagent) + inside_turf.liquids.liquid_group.transfer_specific_reagents(target.recipient_reagents_holder, amount, reagent) + else + inside_turf.liquids.liquid_group.transfer_specific_reagents(target.recipient_reagents_holder, amount, reagents_to_check = list(/datum/reagent/brine)) diff --git a/monkestation/code/modules/factory_type_beat/machinery/grabber.dm b/monkestation/code/modules/factory_type_beat/machinery/grabber.dm new file mode 100644 index 000000000000..21ef501f12bf --- /dev/null +++ b/monkestation/code/modules/factory_type_beat/machinery/grabber.dm @@ -0,0 +1,506 @@ +/// Manipulator Core. Main part of the mechanism that carries out the entire process. +/obj/machinery/big_manipulator + name = "Big Manipulator" + desc = "Take and drop objects. Innovation..." + icon = 'monkestation/code/modules/factory_type_beat/icons/big_manipulator_core.dmi' + icon_state = "core" + density = TRUE + circuit = /obj/item/circuitboard/machine/big_manipulator + greyscale_colors = "#d8ce13" + greyscale_config = /datum/greyscale_config/big_manipulator + /// How many time manipulator need to take and drop item. + var/working_speed = 2 SECONDS + /// Using high tier manipulators speeds up big manipulator and requires more energy. + var/power_use_lvl = 0.2 + /// When manipulator already working with item inside he don't take any new items. + var/on_work = FALSE + /// Activate mechanism. + var/on = FALSE + /// Dir to get turf where we take items. + var/take_here = NORTH + /// Dir to get turf where we drop items. + var/drop_here = SOUTH + /// Turf where we take items. + var/turf/take_turf + /// Turf where we drop items. + var/turf/drop_turf + /// Obj inside manipulator. + var/datum/weakref/containment_obj + /// Other manipulator component. + var/obj/effect/big_manipulator_hand/manipulator_hand + ///are we hacked? + var/hacked = FALSE + ///our installed filter + var/obj/item/manipulator_filter/filter + ///our failed attempts + var/failed_attempts = 0 + var/atom/movable/failed_item + +/obj/machinery/big_manipulator/Initialize(mapload) + . = ..() + take_turf = get_step(src, take_here) + drop_turf = get_step(src, drop_here) + create_manipulator_hand() + RegisterSignal(manipulator_hand, COMSIG_QDELETING, PROC_REF(on_hand_qdel)) + manipulator_lvl() + +/obj/machinery/big_manipulator/Destroy(force) + . = ..() + failed_item = null + if(filter) + filter.forceMove(get_turf(src)) + filter = null + qdel(manipulator_hand) + if(isnull(containment_obj)) + return + var/obj/obj_resolve = containment_obj?.resolve() + if(isnull(obj_resolve)) + return + obj_resolve.forceMove(get_turf(obj_resolve)) + + +/obj/machinery/big_manipulator/Moved(atom/old_loc, movement_dir, forced, list/old_locs, momentum_change) + . = ..() + take_and_drop_turfs_check() + if(isnull(get_turf(src))) + qdel(manipulator_hand) + return + if(!manipulator_hand) + create_manipulator_hand() + manipulator_hand.forceMove(get_turf(src)) + +/obj/machinery/big_manipulator/wrench_act(mob/living/user, obj/item/tool) + . = ..() + default_unfasten_wrench(user, tool, time = 1 SECONDS) + return TRUE + +/obj/machinery/big_manipulator/wrench_act_secondary(mob/living/user, obj/item/tool) + . = ..() + if(on_work || on) + to_chat(user, span_warning("[src] is activated!")) + return + rotate_big_hand() + playsound(src, 'sound/items/deconstruct.ogg', 50, TRUE) + return TRUE + +/obj/machinery/big_manipulator/can_be_unfasten_wrench(mob/user, silent) + if(on_work || on) + to_chat(user, span_warning("[src] is activated!")) + return FAILED_UNFASTEN + return ..() + +/obj/machinery/big_manipulator/default_unfasten_wrench(mob/user, obj/item/wrench, time) + . = ..() + if(. == SUCCESSFUL_UNFASTEN) + take_and_drop_turfs_check() + +/obj/machinery/big_manipulator/screwdriver_act(mob/living/user, obj/item/tool) + if(default_deconstruction_screwdriver(user, icon_state, icon_state, tool)) + return TRUE + return TRUE + +/obj/machinery/big_manipulator/crowbar_act(mob/living/user, obj/item/tool) + . = ..() + if(default_deconstruction_crowbar(tool)) + return TRUE + return TRUE + +/obj/machinery/big_manipulator/RefreshParts() + . = ..() + + manipulator_lvl() + +/// Creat manipulator hand effect on manipulator core. +/obj/machinery/big_manipulator/proc/create_manipulator_hand() + manipulator_hand = new/obj/effect/big_manipulator_hand(get_turf(src)) + manipulator_hand.dir = take_here + +/// Check servo tier and change manipulator speed, power_use and colour. +/obj/machinery/big_manipulator/proc/manipulator_lvl() + var/datum/stock_part/manipulator/locate_servo = locate() in component_parts + if(!locate_servo) + return + switch(locate_servo.tier) + if(1) + working_speed = 2 SECONDS + power_use_lvl = 0.2 + set_greyscale(COLOR_YELLOW) + manipulator_hand?.set_greyscale(COLOR_YELLOW) + if(2) + working_speed = 1.4 SECONDS + power_use_lvl = 0.4 + set_greyscale(COLOR_ORANGE) + manipulator_hand?.set_greyscale(COLOR_ORANGE) + if(3) + working_speed = 0.8 SECONDS + power_use_lvl = 0.6 + set_greyscale(COLOR_RED) + manipulator_hand?.set_greyscale(COLOR_RED) + if(4) + working_speed = 0.2 SECONDS + power_use_lvl = 0.8 + set_greyscale(COLOR_PURPLE) + manipulator_hand?.set_greyscale(COLOR_PURPLE) + + active_power_usage = BASE_MACHINE_ACTIVE_CONSUMPTION * power_use_lvl + +/// Changing take and drop turf tiles when we anchore manipulator or if manipulator not in turf. +/obj/machinery/big_manipulator/proc/take_and_drop_turfs_check() + if(anchored && isturf(src.loc)) + take_turf = get_step(src, take_here) + drop_turf = get_step(src, drop_here) + else + take_turf = null + drop_turf = null + +/// Changing take and drop turf dirs and also changing manipulator hand sprite dir. +/obj/machinery/big_manipulator/proc/rotate_big_hand() + switch(take_here) + if(NORTH) + manipulator_hand.item_x = 64 + manipulator_hand.item_y = 32 + take_here = EAST + drop_here = WEST + if(EAST) + manipulator_hand.item_x = 32 + manipulator_hand.item_y = 0 + take_here = SOUTH + drop_here = NORTH + if(SOUTH) + manipulator_hand.item_x = 0 + manipulator_hand.item_y = 32 + take_here = WEST + drop_here = EAST + if(WEST) + manipulator_hand.item_x = -32 + manipulator_hand.item_y = 0 + take_here = NORTH + drop_here = SOUTH + manipulator_hand.dir = take_here + take_and_drop_turfs_check() + +/// Deliting hand will destroy our manipulator core. +/obj/machinery/big_manipulator/proc/on_hand_qdel() + SIGNAL_HANDLER + + deconstruct(TRUE) + +/// Pre take and drop proc from [take and drop procs loop]: +/// Check if we have item on take_turf to start take and drop loop +/obj/machinery/big_manipulator/proc/is_work_check() + if(filter) + var/atom/movable = filter_return() + if(movable) + try_take_thing(take_turf, movable) + return + + if(hacked) + for(var/mob/living/take_item in take_turf.contents) + try_take_thing(take_turf, take_item) + break + for(var/obj/take_item in take_turf.contents) + if(take_item.anchored) + continue + try_take_thing(take_turf, take_item) + break + +/obj/machinery/big_manipulator/proc/filter_return() + if(!filter) + return null + for(var/atom/movable/listed in take_turf.contents) + if(filter.check_filter(listed)) + return listed + +/// First take and drop proc from [take and drop procs loop]: +/// Check if we can take item from take_turf to work with him. This proc also calling from ATOM_ENTERED signal. +/obj/machinery/big_manipulator/proc/try_take_thing(datum/source, atom/movable/target) + SIGNAL_HANDLER + if(target == failed_item) + failed_item = null + return + + if(!on) + return + if(!anchored) + return + if(QDELETED(source) || QDELETED(target)) + return + if(on_work) + return + if(!directly_use_power(active_power_usage)) + on = FALSE + say("Not enough energy!") + return + failed_item = null + + if(filter) + if(passes_filter(target)) + start_work(target) + return + + if(isitem(target) || (isliving(target) && hacked) || (isobj(target) && !target.anchored)) + start_work(target) + +/obj/machinery/big_manipulator/proc/passes_filter(atom/movable/target) + if(!filter) + return FALSE + return filter.check_filter(target) + +/// Second take and drop proc from [take and drop procs loop]: +/// Taking our item and start manipulator hand rotate animation. +/obj/machinery/big_manipulator/proc/start_work(atom/movable/target) + target.forceMove(src) + containment_obj = WEAKREF(target) + manipulator_hand.picked = target + manipulator_hand.update_appearance() + on_work = TRUE + do_rotate_animation(1) + addtimer(CALLBACK(src, PROC_REF(drop_thing), target), working_speed) + +/// Third take and drop proc from [take and drop procs loop]: +/// Drop our item and start manipulator hand backward animation. +/obj/machinery/big_manipulator/proc/drop_thing(atom/movable/target) + if(!drop_turf.can_drop_off(target)) + failed_attempts++ + if(failed_attempts >= 10) + do_rotate_animation(0) + addtimer(CALLBACK(src, PROC_REF(end_work_failed), target), working_speed) + return + addtimer(CALLBACK(src, PROC_REF(drop_thing), target), working_speed) + return + failed_attempts = 0 + target.forceMove(drop_turf) + manipulator_hand.picked = null + manipulator_hand.update_appearance() + do_rotate_animation(0) + addtimer(CALLBACK(src, PROC_REF(end_work)), working_speed) + +/// Fourth and last take and drop proc from take and drop procs loop: +/// Finishes work and begins to look for a new item for [take and drop procs loop]. +/obj/machinery/big_manipulator/proc/end_work() + on_work = FALSE + is_work_check() + +/obj/machinery/big_manipulator/proc/end_work_failed(atom/movable/target) + target.forceMove(take_turf) + failed_item = target + manipulator_hand.picked = null + manipulator_hand.update_appearance() + on_work = FALSE + failed_attempts = 0 + is_work_check() + +/// Rotates manipulator hand 90 degrees. +/obj/machinery/big_manipulator/proc/do_rotate_animation(backward) + animate(manipulator_hand, transform = matrix(90, MATRIX_ROTATE), working_speed*0.5) + addtimer(CALLBACK(src, PROC_REF(finish_rotate_animation), backward), working_speed*0.5) + +/// Rotates manipulator hand from 90 degrees to 180 or 0 if backward. +/obj/machinery/big_manipulator/proc/finish_rotate_animation(backward) + animate(manipulator_hand, transform = matrix(180 * backward, MATRIX_ROTATE), working_speed*0.5) + +/obj/machinery/big_manipulator/ui_interact(mob/user, datum/tgui/ui) + if(!anchored) + to_chat(user, span_warning("[src] isn't attached to the ground!")) + return + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "BigManipulator") + ui.open() + +/obj/machinery/big_manipulator/AltClick(mob/user) + . = ..() + if(!filter) + return + filter.forceMove(get_turf(src)) + filter = null + +/obj/machinery/big_manipulator/ui_data(mob/user) + var/list/data = list() + data["active"] = on + return data + +/obj/machinery/big_manipulator/ui_act(action, params, datum/tgui/ui) + . = ..() + if(.) + return + switch(action) + if("on") + on = !on + if(on) + RegisterSignal(take_turf, COMSIG_ATOM_ENTERED, PROC_REF(try_take_thing)) + else + UnregisterSignal(take_turf, COMSIG_ATOM_ENTERED) + is_work_check() + return TRUE + +/// Manipulator hand. Effect we animate to show that the manipulator is working and moving something. +/obj/effect/big_manipulator_hand + name = "Manipulator claw" + desc = "Take and drop objects. Innovation..." + icon = 'monkestation/code/modules/factory_type_beat/icons/big_manipulator_hand.dmi' + icon_state = "hand" + layer = LOW_ITEM_LAYER + anchored = TRUE + appearance_flags = KEEP_TOGETHER | LONG_GLIDE | TILE_BOUND | PIXEL_SCALE + greyscale_config = /datum/greyscale_config/manipulator_hand + pixel_x = -32 + pixel_y = -32 + + ///item offset x + var/item_x = 32 + var/item_y = 64 + var/atom/movable/picked + +/obj/effect/big_manipulator_hand/update_overlays() + . = ..() + if(picked) + var/mutable_appearance/ma = mutable_appearance(picked.icon, picked.icon_state, picked.layer, src, appearance_flags = KEEP_TOGETHER) + ma.color = picked.color + ma.appearance = picked.appearance + ma.appearance_flags = appearance_flags + ma.plane = plane + ma.pixel_x = item_x + ma.pixel_y = item_y + . += ma + +/turf/proc/can_drop_off(atom/movable/target) + if(isclosedturf(src)) + return FALSE + for(var/obj/structure/listed in contents) + if(!listed.can_drop_off(target)) + return FALSE + for(var/obj/machinery/listed in contents) + if(!listed.can_drop_off(target)) + return FALSE + + return TRUE + +/obj/structure/proc/can_drop_off(atom/movable/target) + return TRUE + +/obj/machinery/proc/can_drop_off(atom/movable/target) + return TRUE + + +/obj/item/manipulator_filter + name = "manipulator filter" + desc = "A filter specifically designed to work inside of a manipulator." + + icon = 'monkestation/code/modules/factory_type_beat/icons/items.dmi' + icon_state = "filter" + + var/list/filtered_items = list() + var/max_filtered_items = 5 + + +/obj/item/manipulator_filter/afterattack(atom/target, mob/user, proximity_flag, click_parameters) + if(istype(target, /obj/machinery/big_manipulator)) + try_attach(target) + return + + if(target == src) + return ..() + if(!proximity_flag) + return ..() + if(!ismovable(target)) + return ..() + if(istype(target, /obj/effect/decal/conveyor_sorter)) + return + if(is_type_in_list(target, filtered_items)) + to_chat(user, span_warning("[target] is already in [src]'s sorting list!")) + return + if(length(filtered_items) >= max_filtered_items) + to_chat(user, span_warning("[src] already has [max_filtered_items] things within the sorting list!")) + return + filtered_items += target.type + to_chat(user, span_notice("[target] has been added to [src]'s sorting list.")) + +/obj/item/manipulator_filter/examine(mob/user) + . = ..() + . += span_notice("This sorter can sort up to [max_filtered_items] Items.") + . += span_notice("Use Alt-Click to reset the sorting list.") + . += span_notice("Attack things to attempt to add to the sorting list.") + +/obj/item/manipulator_filter/AltClick(mob/user) + visible_message("[src] pings, resetting its sorting list!") + playsound(src, 'sound/machines/ping.ogg', 30, TRUE) + filtered_items = list() + +/obj/item/manipulator_filter/proc/try_attach(obj/machinery/big_manipulator/target) + if(target.filter) + return FALSE + target.filter = src + src.forceMove(target) + return TRUE + +/obj/item/manipulator_filter/proc/check_filter(atom/movable/target) + if(target.type in filtered_items) + return TRUE + return FALSE + + +/obj/item/manipulator_filter/cargo + name = "manipulator filter" + desc = "A filter specifically designed to work inside of a manipulator." + +/obj/item/manipulator_filter/cargo/afterattack(atom/target, mob/user, proximity_flag, click_parameters) + if(istype(target, /obj/machinery/big_manipulator)) + try_attach(target) + return + +/obj/item/manipulator_filter/attack_self(mob/user, modifiers) + . = ..() + var/choice = tgui_input_list(user, "Add a destination to check", name, GLOB.TAGGERLOCATIONS - filtered_items) + if(!choice) + return + + if(length(filtered_items) >= max_filtered_items) + return + + filtered_items |= choice + +/obj/item/manipulator_filter/cargo/check_filter(atom/movable/target) + if(istype(target, /obj/item/delivery)) + var/obj/item/delivery/item = target + var/name_tag = GLOB.TAGGERLOCATIONS[item.sort_tag] + if(name_tag in filtered_items) + return TRUE + + if(istype(target, /obj/item/mail)) + var/obj/item/mail/item = target + var/name_tag = GLOB.TAGGERLOCATIONS[item.sort_tag] + if(name_tag in filtered_items) + return TRUE + + if(SEND_SIGNAL(target, COMSIG_FILTER_CHECK, filtered_items)) + return TRUE + + return FALSE + + +/obj/item/manipulator_filter/internal_filter + name = "internal filter" + desc = "Checks the contents inside of an object and if it matches any of the filters grabs the object" + +/obj/item/manipulator_filter/internal_filter/check_filter(atom/movable/target) + for(var/atom/movable/listed in target.contents) + if(listed.type in filtered_items) + return TRUE + return FALSE + + +/proc/departmental_destination_to_tag(destination) + switch(destination) + if(/area/station/engineering/main) + return "Engineering" + if(/area/station/science/research) + return "Research" + if(/area/station/hallway/secondary/service) + return "Hydroponics" + if(/area/station/service/bar/atrium) + return "Bar" + if(/area/station/security/office, /area/station/security/brig, /area/station/security/brig/upper) + return "Security" + if(/area/station/medical/medbay/central, /area/station/medical/medbay, /area/station/medical/treatment_center, /area/station/medical/storage) + return "Medbay" diff --git a/monkestation/code/modules/factory_type_beat/machinery/splitter.dm b/monkestation/code/modules/factory_type_beat/machinery/splitter.dm new file mode 100644 index 000000000000..14134a57a192 --- /dev/null +++ b/monkestation/code/modules/factory_type_beat/machinery/splitter.dm @@ -0,0 +1,55 @@ +/obj/structure/belt_splitter + name = "belt splitter" + desc = "takes an input from one side and tries to output it on any side that has a belt." + + icon = 'monkestation/code/modules/factory_type_beat/icons/mining_machines.dmi' + icon_state = "splitter" + + anchored = TRUE + + var/current_split_number = 1 + + var/list/direction_order = list(NORTH, EAST, SOUTH, WEST) + +/obj/structure/belt_splitter/Initialize(mapload) + . = ..() + var/static/list/loc_connections = list( + COMSIG_ATOM_ENTERED = PROC_REF(try_split), + ) + AddComponent(/datum/component/connect_loc_behalf, src, loc_connections) + AddComponent(/datum/component/simple_rotation) + +/obj/structure/belt_splitter/Destroy() + . = ..() + +/obj/structure/belt_splitter/setDir() + . = ..() + rebuild_directions() + +/obj/structure/belt_splitter/wrench_act(mob/living/user, obj/item/tool) + . = ..() + default_unfasten_wrench(user, tool) + return TOOL_ACT_TOOLTYPE_SUCCESS + +/obj/structure/belt_splitter/proc/rebuild_directions() + direction_order = list(NORTH, EAST, SOUTH, WEST) + direction_order -= dir + +/obj/structure/belt_splitter/proc/try_split(datum/source, atom/movable/arrived, atom/old_loc, list/atom/old_locs) + if(arrived.anchored) + return + var/not_passed = TRUE + var/failed_attempts = 0 + while(not_passed && failed_attempts < 10) + failed_attempts++ + var/direction = direction_order[current_split_number] + current_split_number++ + if(current_split_number > length(direction_order)) + current_split_number = 1 + if(direction == dir) + direction = direction_order[current_split_number] + + if(!(locate(/obj/machinery/conveyor) in get_step(src, direction))) + continue + arrived.forceMove(get_step(src, direction)) + not_passed = FALSE diff --git a/monkestation/code/modules/factory_type_beat/machinery/test_boulder_spawner.dm b/monkestation/code/modules/factory_type_beat/machinery/test_boulder_spawner.dm new file mode 100644 index 000000000000..24704dc1a767 --- /dev/null +++ b/monkestation/code/modules/factory_type_beat/machinery/test_boulder_spawner.dm @@ -0,0 +1,21 @@ +/obj/structure/test_boulder_spawner + name = "DEBUG BOULDER SPAWNER" + desc = "... Why? How?" + + icon = 'monkestation/code/modules/factory_type_beat/icons/mining_machines.dmi' + icon_state = "unloader-corner" + + var/spawn_dir = EAST + + var/processing = FALSE + +/obj/structure/test_boulder_spawner/attack_hand(mob/living/user, list/modifiers) + . = ..() + if(!processing) + START_PROCESSING(SSobj, src) + else + STOP_PROCESSING(SSobj, src) + +/obj/structure/test_boulder_spawner/process(seconds_per_tick) + var/atom/movable/new_item = new /obj/item/boulder/gulag_expanded(get_turf(src)) + new_item.forceMove(get_step(src, spawn_dir)) diff --git a/monkestation/code/modules/factory_type_beat/map_templates.dm b/monkestation/code/modules/factory_type_beat/map_templates.dm new file mode 100644 index 000000000000..1efe3376dcf2 --- /dev/null +++ b/monkestation/code/modules/factory_type_beat/map_templates.dm @@ -0,0 +1,30 @@ + +/datum/map_template/ruin/icemoon/underground/vent + name = "Icemoon Ore Vent" + id = "ore_vent_i" + description = "A vent that spews out ore. Seems to be a natural phenomenon." //Make this a subtype that only spawns medium and large vents. Some smalls will go to the top level. + suffix = "icemoon_underground_ore_vent.dmm" + allow_duplicates = TRUE + cost = 0 + mineral_cost = 1 + always_place = TRUE + +/datum/map_template/ruin/icemoon/ruin/vent + name = "Surface Icemoon Ore Vent" + id = "ore_vent_i" + description = "A vent that spews out ore. Seems to be a natural phenomenon. Smaller than the underground ones." + suffix = "icemoon_surface_ore_vent.dmm" + allow_duplicates = TRUE + cost = 0 + mineral_cost = 1 + always_place = TRUE + +/datum/map_template/ruin/lavaland/vent + name = "Ore Vent" + id = "ore_vent" + description = "A vent that spews out ore. Seems to be a natural phenomenon." + suffix = "lavaland_surface_ore_vent.dmm" + allow_duplicates = TRUE + cost = 0 + mineral_cost = 1 + always_place = TRUE diff --git a/monkestation/code/modules/factory_type_beat/mobs/node_drone.dm b/monkestation/code/modules/factory_type_beat/mobs/node_drone.dm new file mode 100644 index 000000000000..aeeb88729ccb --- /dev/null +++ b/monkestation/code/modules/factory_type_beat/mobs/node_drone.dm @@ -0,0 +1,154 @@ +#define FLY_IN_STATE 1 +#define FLY_OUT_STATE 2 +#define NEUTRAL_STATE 3 + +/** + * Mining drones that are spawned when starting a ore vent's wave defense minigame. + * They will latch onto the vent to defend it from lavaland mobs, and will flee if attacked by lavaland mobs. + * If the drone survives, they will fly away to safety as the vent spawns ores. + * If the drone dies, the wave defense will fail. + */ + +/mob/living/basic/node_drone + name = "NODE drone" + desc = "Standard in-atmosphere drone, used by Nanotrasen to operate and excavate valuable ore vents." + icon = 'monkestation/code/modules/factory_type_beat/icons/mining.dmi' + icon_state = "mining_node_active" + icon_living = "mining_node_active" + icon_dead = "mining_node_active" + + maxHealth = 500 + health = 500 + density = TRUE + pass_flags = PASSTABLE|PASSGRILLE|PASSMOB + mob_size = MOB_SIZE_LARGE + mob_biotypes = MOB_ROBOTIC + faction = list(FACTION_STATION, FACTION_NEUTRAL) + light_outer_range = 4 + basic_mob_flags = DEL_ON_DEATH + + speak_emote = list("chirps") + response_help_continuous = "pets" + response_help_simple = "pet" + response_disarm_continuous = "gently pushes aside" + response_disarm_simple = "gently push aside" + response_harm_continuous = "clangs" + response_harm_simple = "clang against" + + ai_controller = /datum/ai_controller/basic_controller/node_drone + + /// Is the drone currently attached to a vent? + var/active_node = FALSE + /// What status do we currently track for icon purposes? + var/flying_state = NEUTRAL_STATE + /// Weakref to the vent the drone is currently attached to. + var/obj/structure/ore_vent/attached_vent = null + /// Set when the drone is begining to leave lavaland after the vent is secured. + var/escaping = FALSE + +/mob/living/basic/node_drone/death(gibbed) + . = ..() + explosion(origin = src, light_impact_range = 1, smoke = 1) + +/mob/living/basic/node_drone/Destroy() + attached_vent?.node = null //clean our reference to the vent both ways. + attached_vent = null + return ..() + + +/mob/living/basic/node_drone/examine(mob/user) + . = ..() + var/sameside = user.faction_check_atom(src, exact_match = FALSE) + if(sameside) + . += span_notice("This drone is currently attached to a mineral vent. You should protect it from harm to secure the mineral vent.") + else + . += span_warning("This vile Nanotrasen trash is trying to destroy the environment. Attack it to free the mineral vent from its grasp.") + +/mob/living/basic/node_drone/update_icon_state() + . = ..() + + icon_state = "mining_node_active" + + if(flying_state == FLY_IN_STATE || flying_state == FLY_OUT_STATE) + icon_state = "mining_node_flying" + +/mob/living/basic/node_drone/proc/arrive(obj/structure/ore_vent/parent_vent) + attached_vent = parent_vent + flying_state = FLY_IN_STATE + update_appearance(UPDATE_ICON_STATE) + pixel_z = 400 + animate(src, pixel_z = 0, time = 2 SECONDS, easing = QUAD_EASING|EASE_OUT, flags = ANIMATION_PARALLEL) + + +/** + * Called when wave defense is completed. Visually flicks the escape sprite and then deletes the mob. + */ +/mob/living/basic/node_drone/proc/escape() + var/funny_ending = FALSE + flying_state = FLY_OUT_STATE + update_appearance(UPDATE_ICON_STATE) + if(prob(1)) + say("I have to go now, my planet needs me.") + funny_ending = TRUE + visible_message(span_notice("The drone flies away to safety as the vent is secured.")) + animate(src, pixel_z = 400, time = 2 SECONDS, easing = QUAD_EASING|EASE_IN, flags = ANIMATION_PARALLEL) + sleep(2 SECONDS) + if(funny_ending) + playsound(src, 'sound/effects/explosion3.ogg', 50, FALSE) //node drone died on the way back to his home planet. + visible_message(span_notice("...or maybe not.")) + qdel(src) + + +/mob/living/basic/node_drone/proc/pre_escape() + if(attached_vent) + attached_vent.unbuckle_mob(src) + attached_vent = null + if(!escaping) + escaping = TRUE + flick("mining_node_escape", src) + addtimer(CALLBACK(src, PROC_REF(escape)), 1.9 SECONDS) + return + +/// The node drone AI controller +// Generally, this is a very simple AI that will try to find a vent and latch onto it, unless attacked by a lavaland mob, who it will try to flee from. +/datum/ai_controller/basic_controller/node_drone + blackboard = list( + BB_BASIC_MOB_FLEEING = FALSE, // Will flee when the vent lies undefended. + BB_CURRENT_HUNTING_TARGET = null, // Hunts for vents. + BB_TARGETING_STRATEGY = /datum/targeting_strategy/basic, // Use this to find vents to run away from + ) + + ai_traits = STOP_MOVING_WHEN_PULLED + ai_movement = /datum/ai_movement/basic_avoidance + idle_behavior = null + planning_subtrees = list( + // Priority is see if lavaland mobs are attacking us to flee from them. + /datum/ai_planning_subtree/find_nearest_thing_which_attacked_me_to_flee, + // Fly you fool + /datum/ai_planning_subtree/flee_target/node_drone, + // Otherwise, look for and execute hunts for vents to latch onto. + /datum/ai_planning_subtree/find_and_hunt_target/look_for_vent, + ) + +// Node subtree to hunt down ore vents. +/datum/ai_planning_subtree/find_and_hunt_target/look_for_vent + hunting_behavior = /datum/ai_behavior/hunt_target/latch_onto/node_drone + hunt_targets = list(/obj/structure/ore_vent) + hunt_range = 7 // Hunt vents to the end of the earth. + +// node drone behavior for buckling down on a vent. +/datum/ai_behavior/hunt_target/latch_onto/node_drone + hunt_cooldown = 5 SECONDS + +// Evasion behavior. +/datum/ai_planning_subtree/flee_target/node_drone + flee_behaviour = /datum/ai_behavior/run_away_from_target/drone + +/datum/ai_behavior/run_away_from_target/drone + action_cooldown = 1 SECONDS + run_distance = 3 + + +#undef FLY_IN_STATE +#undef FLY_OUT_STATE +#undef NEUTRAL_STATE diff --git a/monkestation/code/modules/factory_type_beat/ore_vent.dm b/monkestation/code/modules/factory_type_beat/ore_vent.dm new file mode 100644 index 000000000000..cfb933cedd8b --- /dev/null +++ b/monkestation/code/modules/factory_type_beat/ore_vent.dm @@ -0,0 +1,525 @@ +#define MAX_ARTIFACT_ROLL_CHANCE 10 +#define MINERAL_TYPE_OPTIONS_RANDOM 4 +#define OVERLAY_OFFSET_START 0 +#define OVERLAY_OFFSET_EACH 5 +#define MINERALS_PER_BOULDER 3 + +/obj/structure/ore_vent + name = "ore vent" + desc = "An ore vent, brimming with underground ore. Scan with an advanced mining scanner to start extracting ore from it." + icon = 'monkestation/code/modules/factory_type_beat/icons/terrain.dmi' + icon_state = "ore_vent" + move_resist = MOVE_FORCE_EXTREMELY_STRONG + resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF //This thing will take a beating. + anchored = TRUE + density = TRUE + can_buckle = TRUE + + /// Has this vent been tapped to produce boulders? Cannot be untapped. + var/tapped = FALSE + /// Has this vent been scanned by a mining scanner? Cannot be scanned again. Adds ores to the vent's description. + var/discovered = FALSE + /// Is this type of vent exempt from the 15 vent limit? Think the free iron/glass vent or boss vents. This also causes it to not roll for random mineral breakdown. + var/unique_vent = FALSE + /// What icon_state do we use when the ore vent has been tapped? + var/icon_state_tapped = "ore_vent_active" + + /// A weighted list of what minerals are contained in this vent, with weight determining how likely each mineral is to be picked in produced boulders. + var/list/mineral_breakdown = list() + /// What size boulders does this vent produce? + var/boulder_size = BOULDER_SIZE_SMALL + /// Reference to this ore vent's NODE drone, to track wave success. + var/mob/living/basic/node_drone/node = null //this path is a placeholder. + /// String containing the formatted list of ores that this vent can produce, and who first discovered this vent. + var/ore_string = "" + /// Associated list of vent size weights to pick from. + var/list/ore_vent_options = list( + LARGE_VENT_TYPE = 3, + MEDIUM_VENT_TYPE = 5, + SMALL_VENT_TYPE = 7, + ) + + /// What string do we use to warn the player about the excavation event? + var/excavation_warning = "Are you ready to excavate this ore vent?" + ///Are we currently spawning mobs? + var/spawning_mobs = FALSE + /// A list of mobs that can be spawned by this vent during a wave defense event. + var/list/defending_mobs = list( + /mob/living/basic/mining/goliath, + /mob/living/basic/mining/legion/spawner_made, + /mob/living/basic/mining/watcher, + /mob/living/basic/mining/lobstrosity/lava, + /mob/living/basic/mining/brimdemon, + /mob/living/basic/mining/bileworm, + ) + ///What items can be used to scan a vent? + var/static/list/scanning_equipment = list( + /obj/item/t_scanner/adv_mining_scanner, + /obj/item/mining_scanner, + ) + + /// What base icon_state do we use for this vent's boulders? + var/boulder_icon_state = "boulder" + /// Percent chance that this vent will produce an artifact boulder. + var/artifact_chance = 0 + /// We use a cooldown to prevent the wave defense from being started multiple times. + COOLDOWN_DECLARE(wave_cooldown) + COOLDOWN_DECLARE(manual_vent_cooldown) + COOLDOWN_DECLARE(next_attack) + + +/obj/structure/ore_vent/Initialize(mapload) + if(mapload) + generate_description() + register_context() + SSore_generation.possible_vents += src + boulder_icon_state = pick(list( + "boulder", + "rock", + "stone", + )) + if(tapped) + SSore_generation.processed_vents += src + icon_state = icon_state_tapped + update_appearance(UPDATE_ICON_STATE) + add_overlay(mutable_appearance('monkestation/code/modules/factory_type_beat/icons/terrain.dmi', "well", ABOVE_MOB_LAYER, src, ABOVE_MOB_LAYER)) + return ..() + +/obj/structure/ore_vent/Destroy() + SSore_generation.possible_vents -= src + node = null + if(tapped) + SSore_generation.processed_vents -= src + return ..() + +/obj/structure/ore_vent/attackby(obj/item/attacking_item, mob/user, params) + . = ..() + if(.) + return TRUE + if(!is_type_in_list(attacking_item, scanning_equipment)) + return TRUE + if(tapped) + balloon_alert_to_viewers("vent tapped!") + return TRUE + scan_and_confirm(user) + return TRUE + +/obj/structure/ore_vent/attack_hand(mob/living/user, list/modifiers) + . = ..() + if(.) + return + if(!HAS_TRAIT(user, TRAIT_BOULDER_BREAKER)) + return + if(!discovered) + to_chat(user, span_notice("You can't quite find the weakpoint of [src]... Perhaps it needs to be scanned first?")) + return + to_chat(user, span_notice("You start striking [src] with your golem's fist, attempting to dredge up a boulder...")) + for(var/i in 1 to 3) + if(do_after(user, boulder_size * 1 SECONDS, src)) + user.apply_damage(20, STAMINA) + playsound(src, 'sound/weapons/genhit.ogg', 50, TRUE) + produce_boulder(TRUE) + visible_message(span_notice("You've successfully produced a boulder! Boy are your arms tired.")) + +/obj/structure/ore_vent/attack_basic_mob(mob/user, list/modifiers) + . = ..() + if(!HAS_TRAIT(user, TRAIT_BOULDER_BREAKER)) + return + produce_boulder(TRUE) + +/obj/structure/ore_vent/is_buckle_possible(mob/living/target, force, check_loc) + . = ..() + if(tapped) + return FALSE + if(istype(target, /mob/living/basic/node_drone)) + return TRUE + +/obj/structure/ore_vent/examine(mob/user) + . = ..() + if(discovered) + switch(boulder_size) + if(BOULDER_SIZE_SMALL) + . += span_notice("This vent produces [span_bold("small")] boulders containing [ore_string]") + if(BOULDER_SIZE_MEDIUM) + . += span_notice("This vent produces [span_bold("medium")] boulders containing [ore_string]") + if(BOULDER_SIZE_LARGE) + . += span_notice("This vent produces [span_bold("large")] boulders containing [ore_string]") + else + . += span_notice("This vent can be scanned with a [span_bold("Mining Scanner")].") + +/obj/structure/ore_vent/add_context(atom/source, list/context, obj/item/held_item, mob/living/user) + if(is_type_in_list(held_item, scanning_equipment)) + context[SCREENTIP_CONTEXT_LMB] = "Scan vent" + return CONTEXTUAL_SCREENTIP_SET + + +/** + * This proc is called when the ore vent is initialized, in order to determine what minerals boulders it spawns can contain. + * The materials available are determined by SSore_generation.ore_vent_minerals, which is a list of all minerals that can be contained in ore vents for a given cave generation. + * As a result, minerals use a weighted list as seen by ore_vent_minerals_lavaland, which is then copied to ore_vent_minerals. + * Once a material is picked from the weighted list, it's removed from ore_vent_minerals, so that it can't be picked again and provided it's own internal weight used when assigning minerals to boulders spawned by this vent. + * May also be called after the fact, as seen in SSore_generation's initialize, to add more minerals to an existing vent. + * + * The above applies only when spawning in at mapload, otherwise we pick randomly from ore_vent_minerals_lavaland. + * + * @params new_minerals How many minerals should be added to this vent? Defaults to MINERAL_TYPE_OPTIONS_RANDOM, which is 4. + * @params map_loading Is this vent being spawned in at mapload? If so, we use the ore_generation subsystem's ore_vent_minerals list to pick minerals. Otherwise, we pick randomly from ore_vent_minerals_lavaland. + */ +/obj/structure/ore_vent/proc/generate_mineral_breakdown(new_minerals = MINERAL_TYPE_OPTIONS_RANDOM, map_loading = FALSE) + if(new_minerals < 1) + CRASH("generate_mineral_breakdown called with new_minerals < 1.") + var/list/available_mats = difflist(first = SSore_generation.ore_vent_minerals, second = mineral_breakdown, skiprep = 1) + for(var/i in 1 to new_minerals) + if(!length(SSore_generation.ore_vent_minerals) && map_loading) + // We should prevent this from happening in SSore_generation, but if not then we crash here + CRASH("No minerals left to pick from! We may have spawned too many ore vents in init, or the map config in seedRuins may not have enough resources for the mineral budget.") + var/datum/material/new_material + if(map_loading) + if(length(available_mats)) + new_material = pick(GLOB.ore_vent_minerals_lavaland) + var/datum/material/surrogate_mat = pick(SSore_generation.ore_vent_minerals) + available_mats -= surrogate_mat + SSore_generation.ore_vent_minerals -= surrogate_mat + else + new_material = pick(available_mats) + available_mats -= new_material + SSore_generation.ore_vent_minerals -= new_material + else + new_material = pick(GLOB.ore_vent_minerals_lavaland) + mineral_breakdown[new_material] = rand(1, 4) + + +/** + * Returns the quantity of mineral sheets in each ore vent's boulder contents roll. + * First roll can produce the most ore, with subsequent rolls scaling lower logarithmically. + * Inversely scales with ore_floor, so that the first roll is the largest, and subsequent rolls are smaller. + * (1 -> from 16 to 7 sheets of materials, and 3 -> from 8 to 6 sheets of materials on a small vent) + * This also means a large boulder can highroll a boulder with a full stack of 50 sheets of material. + * @params ore_floor The number of minerals already rolled. Used to scale the logarithmic function. + */ +/obj/structure/ore_vent/proc/ore_quantity_function(ore_floor) + return SHEET_MATERIAL_AMOUNT * round(boulder_size * (log(rand(1 + ore_floor, 4 + ore_floor)) ** -1)) + +/** + * Starts the wave defense event, which will spawn a number of lavaland mobs based on the size of the ore vent. + * Called after the vent has been tapped by a scanning device. + * Will summon a number of waves of mobs, ending in the vent being tapped after the final wave. + */ +/obj/structure/ore_vent/proc/start_wave_defense() + AddComponent(\ + /datum/component/spawner, \ + spawn_types = defending_mobs, \ + spawn_time = (10 SECONDS + (5 SECONDS * (boulder_size/5))), \ + max_spawned = 10, \ + max_spawn_per_attempt = (1 + (boulder_size/5)), \ + spawn_text = "emerges to assault", \ + spawn_distance = 4, \ + spawn_distance_exclude = 3, \ + ) + var/wave_timer = 60 SECONDS + if(boulder_size == BOULDER_SIZE_MEDIUM) + wave_timer = 90 SECONDS + else if(boulder_size == BOULDER_SIZE_LARGE) + wave_timer = 150 SECONDS + COOLDOWN_START(src, wave_cooldown, wave_timer) + addtimer(CALLBACK(src, PROC_REF(handle_wave_conclusion)), wave_timer) + spawning_mobs = TRUE + icon_state = icon_state_tapped + update_appearance(UPDATE_ICON_STATE) + +/** + * Called when the wave defense event ends, after a variable amount of time in start_wave_defense. + * + * If the node drone is still alive, the ore vent is tapped and the ore vent will begin generating boulders. + * If the node drone is dead, the ore vent is not tapped and the wave defense can be reattempted. + * + * Also gives xp and mining points to all nearby miners in equal measure. + */ +/obj/structure/ore_vent/proc/handle_wave_conclusion() + SEND_SIGNAL(src, COMSIG_SPAWNER_STOP_SPAWNING) + COOLDOWN_RESET(src, wave_cooldown) + particles = null + if(!QDELETED(node)) ///The Node Drone has survived the wave defense, and the ore vent is tapped. + tapped = TRUE + SSore_generation.processed_vents += src + balloon_alert_to_viewers("vent tapped!") + icon_state = icon_state_tapped + update_appearance(UPDATE_ICON_STATE) + else + visible_message(span_danger("\the [src] creaks and groans as the mining attempt fails, and the vent closes back up.")) + icon_state = initial(icon_state) + update_appearance(UPDATE_ICON_STATE) + return FALSE //Bad end, try again. + + for(var/mob/living/miner in range(7, src)) //Give the miners who are near the vent points and xp. + var/obj/item/card/id/user_id_card = miner.get_idcard(TRUE) + if(miner.stat <= SOFT_CRIT) + miner.mind?.adjust_experience(/datum/skill/mining, MINING_SKILL_BOULDER_SIZE_XP * boulder_size) + if(!user_id_card) + continue + var/point_reward_val = (MINER_POINT_MULTIPLIER * boulder_size) - MINER_POINT_MULTIPLIER // We remove the base value of discovering the vent + user_id_card.registered_account.mining_points += point_reward_val + user_id_card.registered_account.bank_card_talk("You have been awarded [point_reward_val] mining points for your efforts.") + node.pre_escape() //Visually show the drone is done and flies away. + add_overlay(mutable_appearance('monkestation/code/modules/factory_type_beat/icons/terrain.dmi', "well", ABOVE_MOB_LAYER, src, GAME_PLANE)) + +/** + * Called when the ore vent is tapped by a scanning device. + * Gives a readout of the ores available in the vent that gets added to the description, + * then asks the user if they want to start wave defense if it's already been discovered. + * @params user The user who tapped the vent. + * @params scan_only If TRUE, the vent will only scan, and not prompt to start wave defense. Used by the mech mineral scanner. + */ +/obj/structure/ore_vent/proc/scan_and_confirm(mob/living/user, scan_only = FALSE) + if(tapped) + balloon_alert_to_viewers("vent tapped!") + return + if(!COOLDOWN_FINISHED(src, wave_cooldown)) + balloon_alert_to_viewers("protect the node drone!") + return + if(scan_only) + discovered = TRUE + generate_description(user) + balloon_alert_to_viewers("vent scanned!") + return + if(!discovered) + balloon_alert(user, "scanning...") + playsound(src, 'sound/items/timer.ogg', 30, TRUE) + if(do_after(user, 4 SECONDS)) + discovered = TRUE + balloon_alert(user, "vent scanned!") + generate_description(user) + var/obj/item/card/id/user_id_card = user.get_idcard(TRUE) + if(isnull(user_id_card)) + return + user_id_card.registered_account.mining_points += (MINER_POINT_MULTIPLIER) + user_id_card.registered_account.bank_card_talk("You've been awarded [MINER_POINT_MULTIPLIER] mining points for discovery of an ore vent.") + return + + if(tgui_alert(user, excavation_warning, "Begin defending ore vent?", list("Yes", "No")) != "Yes") + return + if(!COOLDOWN_FINISHED(src, wave_cooldown)) + return + //This is where we start spitting out mobs. + Shake(duration = 3 SECONDS) + node = new /mob/living/basic/node_drone(loc) + node.arrive(src) + RegisterSignal(node, COMSIG_QDELETING, PROC_REF(handle_wave_conclusion)) + particles = new /particles/smoke/ash() + + for(var/i in 1 to 5) // Clears the surroundings of the ore vent before starting wave defense. + for(var/turf/closed/mineral/rock in oview(i)) + if(istype(rock, /turf/open/misc/asteroid) && prob(35)) // so it's too common + new /obj/effect/decal/cleanable/rubble(rock) + if(prob(100 - (i * 15))) + rock.gets_drilled(user, FALSE) + if(prob(50)) + new /obj/effect/decal/cleanable/rubble(rock) + sleep(0.6 SECONDS) + + start_wave_defense() + +/** + * Generates a description of the ore vent to ore_string, based on the minerals contained within it. + * Ore_string is passed to examine(). + */ +/obj/structure/ore_vent/proc/generate_description(mob/user) + for(var/mineral_count in 1 to length(mineral_breakdown)) + var/datum/material/resource = mineral_breakdown[mineral_count] + if(mineral_count == length(mineral_breakdown)) + ore_string += "and " + span_bold(initial(resource.name)) + "." + else + ore_string += span_bold(initial(resource.name)) + ", " + if(user) + ore_string += "\nThis vent was first discovered by [user]." +/** + * Adds floating temp_visual overlays to the vent, showcasing what minerals are contained within it. + * If undiscovered, adds a single overlay with the icon_state "unknown". + */ +/obj/structure/ore_vent/proc/add_mineral_overlays() + if(mineral_breakdown.len && !discovered) + var/obj/effect/temp_visual/mining_overlay/vent/new_mat = new /obj/effect/temp_visual/mining_overlay/vent(drop_location()) + new_mat.icon_state = "unknown" + return + for(var/datum/material/selected_mat as anything in mineral_breakdown) + var/obj/effect/temp_visual/mining_overlay/vent/new_mat = new /obj/effect/temp_visual/mining_overlay/vent(drop_location()) + new_mat.icon_state = selected_mat.name + +/** + * Here is where we handle producing a new boulder, based on the qualities of this ore vent. + * Returns the boulder produced. + * @params apply_cooldown Should we apply a cooldown to producing boulders? Default's false, used by manual boulder production (goldgrubs, golems, etc). + */ +/obj/structure/ore_vent/proc/produce_boulder(apply_cooldown = FALSE) + RETURN_TYPE(/obj/item/boulder) + + if(!length(mineral_breakdown)) + generate_mineral_breakdown() + //cooldown applies only for manual processing by hand + if(apply_cooldown && !COOLDOWN_FINISHED(src, manual_vent_cooldown)) + return + var/obj/item/boulder/new_rock + if(prob(artifact_chance)) + new_rock = new /obj/item/boulder/artifact(loc) + else + new_rock = new /obj/item/boulder(loc) + //decorate the boulder with materials + var/list/mats_list = list() + for(var/iteration in 1 to MINERALS_PER_BOULDER) + var/datum/material/material = pick_weight(mineral_breakdown) + mats_list[material] += ore_quantity_function(iteration) + new_rock.set_custom_materials(mats_list) + + //set size & durability + new_rock.boulder_size = boulder_size + new_rock.durability = rand(2, boulder_size) //randomize durability a bit for some flavor. + new_rock.boulder_string = boulder_icon_state + new_rock.update_appearance(UPDATE_ICON_STATE) + if(apply_cooldown) + COOLDOWN_START(src, manual_vent_cooldown, 10 SECONDS) + return new_rock + + +//comes with the station, and is already tapped. +/obj/structure/ore_vent/starter_resources + name = "active ore vent" + desc = "An ore vent, brimming with underground ore. It's already supplying the station with iron and glass." + tapped = TRUE + discovered = TRUE + unique_vent = TRUE + boulder_size = BOULDER_SIZE_SMALL + mineral_breakdown = list( + /datum/material/iron = 50, + /datum/material/glass = 50, + ) + +/obj/structure/ore_vent/random + +/obj/structure/ore_vent/random/Initialize(mapload) + . = ..() + if(!unique_vent && !mapload) + generate_mineral_breakdown(map_loading = mapload) //Default to random mineral breakdowns, unless this is a unique vent or we're still setting up default vent distribution. + generate_description() + artifact_chance = rand(0, MAX_ARTIFACT_ROLL_CHANCE) + var/string_boulder_size = pick_weight(ore_vent_options) + name = "[string_boulder_size] ore vent" + switch(string_boulder_size) + if(LARGE_VENT_TYPE) + boulder_size = BOULDER_SIZE_LARGE + if(mapload) + SSore_generation.ore_vent_sizes["large"] += 1 + if(MEDIUM_VENT_TYPE) + boulder_size = BOULDER_SIZE_MEDIUM + if(mapload) + SSore_generation.ore_vent_sizes["medium"] += 1 + if(SMALL_VENT_TYPE) + boulder_size = BOULDER_SIZE_SMALL + if(mapload) + SSore_generation.ore_vent_sizes["small"] += 1 + else + boulder_size = BOULDER_SIZE_SMALL //Might as well set a default value + name = initial(name) + + + +/obj/structure/ore_vent/random/icebox //The one that shows up on the top level of icebox + icon_state = "ore_vent_ice" + icon_state_tapped = "ore_vent_ice_active" + defending_mobs = list( + /mob/living/basic/mining/lobstrosity, + /mob/living/basic/mining/legion/snow/spawner_made, + /mob/living/simple_animal/hostile/asteroid/polarbear, + /mob/living/basic/mining/wolf, + ) + ore_vent_options = list( + SMALL_VENT_TYPE = 1, + ) + +/obj/structure/ore_vent/random/icebox/lower + defending_mobs = list( + /mob/living/basic/mining/ice_whelp, + /mob/living/basic/mining/lobstrosity, + /mob/living/basic/mining/legion/snow/spawner_made, + /mob/living/basic/mining/ice_demon, + /mob/living/simple_animal/hostile/asteroid/polarbear, + /mob/living/basic/mining/wolf, + ) + ore_vent_options = list( + SMALL_VENT_TYPE = 3, + MEDIUM_VENT_TYPE = 5, + LARGE_VENT_TYPE = 7, + ) + + +/obj/structure/ore_vent/boss + name = "menacing ore vent" + desc = "An ore vent, brimming with underground ore. This one has an evil aura about it. Better be careful." + unique_vent = TRUE + boulder_size = BOULDER_SIZE_LARGE + mineral_breakdown = list( // All the riches of the world, eeny meeny boulder room. + /datum/material/iron = 1, + /datum/material/glass = 1, + /datum/material/plasma = 1, + /datum/material/titanium = 1, + /datum/material/silver = 1, + /datum/material/gold = 1, + /datum/material/diamond = 1, + /datum/material/uranium = 1, + /datum/material/bluespace = 1, + /datum/material/plastic = 1, + ) + defending_mobs = list( + /mob/living/simple_animal/hostile/megafauna/bubblegum, + /mob/living/simple_animal/hostile/megafauna/dragon, + /mob/living/simple_animal/hostile/megafauna/colossus, + ) + excavation_warning = "Something big is nearby. Are you ABSOLUTELY ready to excavate this ore vent?" + ///What boss do we want to spawn? + var/summoned_boss = null + +/obj/structure/ore_vent/boss/Initialize(mapload) + . = ..() + summoned_boss = pick(defending_mobs) + +/obj/structure/ore_vent/boss/examine(mob/user) + . = ..() + var/boss_string = "" + switch(summoned_boss) + if(/mob/living/simple_animal/hostile/megafauna/bubblegum) + boss_string = "A giant fleshbound beast" + if(/mob/living/simple_animal/hostile/megafauna/dragon) + boss_string = "Sharp teeth and scales" + if(/mob/living/simple_animal/hostile/megafauna/colossus) + boss_string = "A giant, armored behemoth" + if(/mob/living/simple_animal/hostile/megafauna/demonic_frost_miner) + boss_string = "A bloody drillmark" + if(/mob/living/simple_animal/hostile/megafauna/wendigo) + boss_string = "A chilling skull" + . += span_notice("[boss_string] is etched onto the side of the vent.") + +/obj/structure/ore_vent/boss/start_wave_defense() + // Completely override the normal wave defense, and just spawn the boss. + var/mob/living/simple_animal/hostile/megafauna/boss = new summoned_boss(loc) + RegisterSignal(boss, COMSIG_LIVING_DEATH, PROC_REF(handle_wave_conclusion)) + COOLDOWN_START(src, wave_cooldown, INFINITY) //Basically forever + //boss.say(boss.summon_line) //Pull their specific summon line to say. Default is meme text so make sure that they have theirs set already. + +/obj/structure/ore_vent/boss/handle_wave_conclusion() + node = new /mob/living/basic/node_drone(loc) //We're spawning the vent after the boss dies, so the player can just focus on the boss. + COOLDOWN_RESET(src, wave_cooldown) + return ..() + +/obj/structure/ore_vent/boss/icebox + icon_state = "ore_vent_ice" + icon_state_tapped = "ore_vent_ice_active" + defending_mobs = list( + /mob/living/simple_animal/hostile/megafauna/demonic_frost_miner, + /mob/living/simple_animal/hostile/megafauna/wendigo, + /mob/living/simple_animal/hostile/megafauna/colossus, + ) + +#undef MAX_ARTIFACT_ROLL_CHANCE +#undef MINERAL_TYPE_OPTIONS_RANDOM +#undef OVERLAY_OFFSET_START +#undef OVERLAY_OFFSET_EACH +#undef MINERALS_PER_BOULDER diff --git a/monkestation/code/modules/factory_type_beat/processing/bouldertech.dm b/monkestation/code/modules/factory_type_beat/processing/bouldertech.dm new file mode 100644 index 000000000000..2b6618990787 --- /dev/null +++ b/monkestation/code/modules/factory_type_beat/processing/bouldertech.dm @@ -0,0 +1,380 @@ +/obj/machinery/bouldertech + name = "bouldertech brand refining machine" + desc = "You shouldn't be seeing this! And bouldertech isn't even a real company!" + icon = 'monkestation/code/modules/factory_type_beat/icons/mining_machines.dmi' + icon_state = "ore_redemption" + anchored = TRUE + density = TRUE + + /// What is the efficiency of minerals produced by the machine? + var/refining_efficiency = 1 + /// How many boulders can we process maximum per loop? + var/boulders_processing_max = 1 + /// What boulder(s) are we holding? + var/list/boulders_contained = list() + /// How many boulders can we hold maximum? + var/boulders_held_max = 1 + /// Does this machine have a mineral storage link to the silo? + var/holds_minerals = FALSE + /// What materials do we accept and process out of boulders? Removing iron from an iron/glass boulder would leave a boulder with glass. + var/list/processable_materials = list() + /* + /// If we get a boulder with one of these inside, we'll drop it back out. + var/static/list/drop_if_contained = list( + /obj/item/relic, + ) + */ + /// What sound plays when a thing operates? + var/usage_sound = 'sound/machines/mining/wooping_teleport.ogg' + /// Cooldown associated with the usage_sound played. + COOLDOWN_DECLARE(sound_cooldown) + + /// Silo link to it's materials list. + var/datum/component/remote_materials/silo_materials + ///Does this machine hold mining points? + var/holds_mining_points = FALSE + /// Mining points held by the machine for miners. + var/points_held = 0 + ///our export side + var/export_side = EAST + ///do we allow boulders + var/allows_boulders = TRUE + var/next_allowed_process = 0 + var/process_string + +/obj/machinery/bouldertech/Initialize(mapload) + . = ..() + register_context() + if(holds_minerals) + silo_materials = AddComponent(/datum/component/remote_materials, "bouldertech", mapload, force_connect = TRUE, mat_container_flags=BREAKDOWN_FLAGS_ORM) + AddComponent(/datum/component/simple_rotation) + +/obj/machinery/bouldertech/LateInitialize() + . = ..() + if(!holds_minerals) + return + var/static/list/loc_connections = list( + COMSIG_ATOM_ENTERED = PROC_REF(on_entered), + ) + AddElement(/datum/element/connect_loc, loc_connections) + +/obj/machinery/bouldertech/add_context(atom/source, list/context, obj/item/held_item, mob/user) + var/processable = "Accepts: " + if(allows_boulders) + processable += "Boulders" + if(process_string) + if(allows_boulders) + processable += ", " + processable += process_string + + context[SCREENTIP_CONTEXT_MISC] = processable + return CONTEXTUAL_SCREENTIP_SET + +/obj/machinery/bouldertech/Destroy() + boulders_contained = null + silo_materials = null + return ..() + +/obj/machinery/bouldertech/update_icon_state() + . = ..() + icon_state ="[initial(icon_state)]" + +/obj/machinery/bouldertech/wrench_act(mob/living/user, obj/item/tool) + . = ..() + if(default_unfasten_wrench(user, tool, time = 1.5 SECONDS) == SUCCESSFUL_UNFASTEN) + update_appearance(UPDATE_ICON_STATE) + START_PROCESSING(SSmachines, src) + return TOOL_ACT_TOOLTYPE_SUCCESS + +/obj/machinery/bouldertech/screwdriver_act(mob/living/user, obj/item/tool) + . = ..() + if(default_deconstruction_screwdriver(user, "[initial(icon_state)]-off", initial(icon_state), tool)) + return TOOL_ACT_TOOLTYPE_SUCCESS + +/obj/machinery/bouldertech/crowbar_act(mob/living/user, obj/item/tool) + . = ..() + if(default_pry_open(tool, close_after_pry = TRUE, closed_density = FALSE)) + return TOOL_ACT_TOOLTYPE_SUCCESS + if(default_deconstruction_crowbar(tool)) + return TOOL_ACT_TOOLTYPE_SUCCESS + +/obj/machinery/bouldertech/attackby(obj/item/attacking_item, mob/user, params) + if(holds_minerals && istype(attacking_item, /obj/item/boulder)) + var/obj/item/boulder/my_boulder = attacking_item + update_boulder_count() + if(!accept_boulder(my_boulder)) + balloon_alert_to_viewers("full!") + return + balloon_alert_to_viewers("accepted") + START_PROCESSING(SSmachines, src) + return TRUE + if(istype(attacking_item, /obj/item/card/id) && holds_mining_points) + if(points_held <= 0) + balloon_alert_to_viewers("no points to claim!") + if(!COOLDOWN_FINISHED(src, sound_cooldown)) + return TRUE + COOLDOWN_START(src, sound_cooldown, 1.5 SECONDS) + playsound(src, 'sound/machines/buzz-sigh.ogg', 30, FALSE) + return FALSE + var/obj/item/card/id/id_card = attacking_item + var/amount = tgui_input_number(user, "How many mining points do you wish to claim? ID Balance: [id_card.registered_account.mining_points], stored mining points: [points_held]", "Transfer Points", max_value = points_held, min_value = 0, round_value = 1) + if(!amount) + return TRUE + if(amount > points_held) + amount = points_held + id_card.registered_account.mining_points += amount + points_held = round(points_held - amount) + to_chat(user, span_notice("You claim [amount] mining points from \the [src] to [id_card].")) + return TRUE + return ..() + +/obj/machinery/bouldertech/attack_hand_secondary(mob/user, list/modifiers) + . = ..() + if(. == SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN) + return + if(!anchored) + balloon_alert(user, "anchor first!") + return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN + if(!holds_minerals) + return SECONDARY_ATTACK_CONTINUE_CHAIN + if(!length(boulders_contained)) + balloon_alert_to_viewers("No boulders to remove!") + return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN + remove_boulder(pick(boulders_contained)) + return SECONDARY_ATTACK_CONTINUE_CHAIN + +/obj/machinery/bouldertech/deconstruct(disassembled) + . = ..() + if(length(contents)) + for(var/obj/item/boulder/boulder in contents) + remove_boulder(boulder) + +/obj/machinery/bouldertech/process() + if(!anchored) + return PROCESS_KILL + var/stop_processing_check = FALSE + var/boulders_concurrent = boulders_processing_max ///How many boulders can we touch this process() call + for(var/obj/item/potential_boulder as anything in boulders_contained) + if(QDELETED(potential_boulder)) + boulders_contained -= potential_boulder + break + if(boulders_concurrent <= 0) + break //Try again next time + + if(!istype(potential_boulder, /obj/item/boulder)) + potential_boulder.forceMove(drop_location()) + CRASH("\The [src] had a non-boulder in it's boulders contained!") + + var/obj/item/boulder/boulder = potential_boulder + if(boulder.durability < 0) + CRASH("\The [src] had a boulder with negative durability!") + if(!check_for_processable_materials(boulder.custom_materials)) //Checks for any new materials we can process. + boulders_concurrent-- //We count skipped boulders + remove_boulder(boulder) + continue + boulders_concurrent-- + boulder.durability-- //One less durability to the processed boulder. + if(COOLDOWN_FINISHED(src, sound_cooldown)) + COOLDOWN_START(src, sound_cooldown, 1.5 SECONDS) + playsound(loc, usage_sound, 29, FALSE, SHORT_RANGE_SOUND_EXTRARANGE) //This can get annoying. One play per process() call. + stop_processing_check = TRUE + if(boulder.durability <= 0) + breakdown_boulder(boulder) //Crack that bouwlder open! + continue + if(!stop_processing_check) + playsound(src.loc, 'sound/machines/ping.ogg', 50, FALSE) + return PROCESS_KILL + + +/obj/machinery/bouldertech/CanAllowThrough(atom/movable/mover, border_dir) + if(!anchored) + return FALSE + if(allows_boulders) + if(boulders_contained.len >= boulders_held_max) + return FALSE + if(istype(mover, /obj/item/boulder)) + var/obj/item/boulder/boulder = mover + return boulder.can_get_processed() + return ..() + +/obj/machinery/bouldertech/examine(mob/user) + . = ..() + if(holds_mining_points) + . += span_notice("The machine reads that it has [span_bold("[points_held] mining points")] stored. Swipe an ID to claim them.") + +/** + * Accepts a boulder into the machinery, then converts it into minerals. + * If the boulder can be fully processed by this machine, we take the materials, insert it into the silo, and destroy the boulder. + * If the boulder has materials left, we make a copy of the boulder to hold the processable materials, take the processable parts, and eject the original boulder. + * @param chosen_boulder The boulder to being breaking down into minerals. + */ +/obj/machinery/bouldertech/proc/breakdown_boulder(obj/item/boulder/chosen_boulder) + if(QDELETED(chosen_boulder)) + return FALSE + if(chosen_boulder.loc != src) + return FALSE + if(!length(chosen_boulder.custom_materials)) + qdel(chosen_boulder) + playsound(loc, 'sound/weapons/drill.ogg', 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) + update_boulder_count() + return FALSE + if(isnull(silo_materials)) + return FALSE + + //here we loop through the boulder's ores + var/list/processable_ores = list() + var/tripped = FALSE + //If a material is in the boulder's custom_materials, but not in the processable_materials list, we add it to the processable_ores list to add back to a leftover boulder. + for(var/datum/material/possible_mat as anything in chosen_boulder.custom_materials) + if(!is_type_in_list(possible_mat, processable_materials)) + continue + var/quantity = chosen_boulder.custom_materials[possible_mat] + points_held = round((points_held + (quantity * possible_mat.points_per_unit * MINING_POINT_MACHINE_MULTIPLIER))) // put point total here into machine + processable_ores += possible_mat + processable_ores[possible_mat] = quantity + chosen_boulder.custom_materials -= possible_mat //Remove it from the boulder now that it's tracked + tripped = TRUE + if(!tripped) + remove_boulder(chosen_boulder) + say("Nothing to process!") + return FALSE //we shouldn't spend more time processing a boulder with contents we don't care about. + use_power(BASE_MACHINE_ACTIVE_CONSUMPTION) + check_for_boosts() //Calls the relevant behavior for boosting the machine's efficiency, if able. + var/is_artifact = (istype(chosen_boulder, /obj/item/boulder/artifact)) //We need to know if it's an artifact so we can carry it over to the new boulder. + var/obj/item/boulder/disposable_boulder = new (src) + disposable_boulder.custom_materials = processable_ores + silo_materials.mat_container.insert_item(disposable_boulder, refining_efficiency) + qdel(disposable_boulder) + + refining_efficiency = initial(refining_efficiency) //Reset refining efficiency to 100% now that we've processed any relevant ores. + if(!length(chosen_boulder.custom_materials)) + playsound(loc, 'sound/weapons/drill.ogg', 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) + if(is_artifact) + points_held = round((points_held + MINER_POINT_MULTIPLIER) * MINING_POINT_MACHINE_MULTIPLIER) /// Artifacts give bonus points! + chosen_boulder.break_apart() + update_boulder_count() + return TRUE //We've processed all the materials in the boulder, so we can just destroy it in break_apart. + + chosen_boulder.restart_processing_cooldown() //So that we don't pick it back up! + chosen_boulder.durability = rand(chosen_boulder.boulder_size, chosen_boulder.boulder_size + BOULDER_SIZE_SMALL) //Reset durability to a random value between the boulder's size and a little more. + remove_boulder(chosen_boulder) + return TRUE + +/** + * Accepts a boulder into the machine. Used when a boulder is first placed into the machine. + * @param new_boulder The boulder to be accepted. + */ +/obj/machinery/bouldertech/proc/accept_boulder(obj/item/boulder/new_boulder) + if(isnull(new_boulder)) + return FALSE + if(boulders_contained.len >= boulders_held_max) //Full already + return FALSE + if(!istype(new_boulder) && !check_extras(new_boulder)) //Can't be processed + return FALSE + if(!new_boulder.custom_materials) //Shouldn't happen, but just in case. + qdel(new_boulder) + playsound(loc, 'sound/weapons/drill.ogg', 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) + return FALSE + new_boulder.forceMove(src) + boulders_contained += new_boulder + SSore_generation.available_boulders -= new_boulder + START_PROCESSING(SSmachines, src) //Starts processing if we aren't already. + return TRUE + +/obj/machinery/bouldertech/proc/check_extras(obj/item/item) + return FALSE + +/** + * Ejects a boulder from the machine. Used when a boulder is finished processing, or when a boulder can't be processed. + * @param drop_turf The location to eject the boulder to. If null, it will eject to the machine's drop_location(). + * @param specific_boulder The boulder to be ejected. + */ +/obj/machinery/bouldertech/proc/remove_boulder(obj/item/boulder/specific_boulder, turf/drop_turf = null) + if(isnull(specific_boulder)) + CRASH("remove_boulder() called with no boulder!") + if(!length(specific_boulder.custom_materials)) + qdel(specific_boulder) + update_boulder_count() + playsound(loc, 'sound/weapons/drill.ogg', 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) + return FALSE + specific_boulder.restart_processing_cooldown() //Reset the cooldown so we don't pick it back up by the same machine. + if(isturf(drop_turf)) + specific_boulder.forceMove(drop_turf) + else + specific_boulder.forceMove(drop_location()) + if(!update_boulder_count()) + return TRUE + STOP_PROCESSING(SSmachines, src) + balloon_alert_to_viewers("clear!") + playsound(loc, 'sound/machines/ping.ogg', 50, FALSE) + return TRUE + +/obj/machinery/bouldertech/can_drop_off() + if(length(boulders_contained) >= boulders_held_max) + return FALSE + return TRUE + +/** + * Getter proc to determine how many boulders are contained in the machine. + * Also adds their reference to the boulders_contained list. + */ +/obj/machinery/bouldertech/proc/update_boulder_count() + boulders_contained = list() + for(var/obj/item/boulder/boulder in contents) + boulders_contained += boulder + if(length(return_extras())) + boulders_contained |= return_extras() + return boulders_contained.len + +/obj/machinery/bouldertech/proc/return_extras() + return list() + +/obj/machinery/bouldertech/proc/on_entered(datum/source, atom/movable/atom_movable) + SIGNAL_HANDLER + INVOKE_ASYNC(src, PROC_REF(accept_boulder), atom_movable) + +/** + * Looks for a boost to the machine's efficiency, and applies it if found. + * Applied more on the chemistry integration but can be used for other things if desired. + */ +/obj/machinery/bouldertech/proc/check_for_boosts() + refining_efficiency = initial(refining_efficiency) //Reset refining efficiency to 100%. + +/** + * Checks if a custom_material is in a list of processable materials in the machine. + * @param list/custom_material A list of materials, presumably taken from a boulder. If a material that this machine can process is in this list, it will return true, inclusively. + */ +/obj/machinery/bouldertech/proc/check_for_processable_materials(list/boulder_mats) + for(var/material as anything in boulder_mats) + if(is_type_in_list(material, processable_materials)) + return TRUE + return FALSE + +///Beacon to launch a new mining setup when activated. For testing and speed! +/obj/item/boulder_beacon + name = "boulder beacon" + desc = "N.T. approved boulder beacon, toss it down and you will have a full bouldertech mining station." + icon = 'icons/obj/objects.dmi' + icon_state = "floor_beacon" + /// Number of activations left on this beacon. Uses will be removed as the beacon is used and each triggers a different machine to be spawned from it. + var/uses = 3 + +/obj/item/boulder_beacon/attack_self() + loc.visible_message(span_warning("\The [src] begins to beep loudly!")) + addtimer(CALLBACK(src, PROC_REF(launch_payload)), 1 SECONDS) + +/** + * Spawns a new bouldertech machine from the beacon, then removes a use from the beacon. + * Use one spawns a BRM teleporter, then a refinery, and lastly a smelter. + */ +/obj/item/boulder_beacon/proc/launch_payload() + playsound(src, SFX_SPARKS, 80, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) + switch(uses) + if(3) + new /obj/machinery/bouldertech/brm(drop_location()) + if(2) + new /obj/machinery/bouldertech/refinery(drop_location()) + if(1) + new /obj/machinery/bouldertech/refinery/smelter(drop_location()) + qdel(src) + uses-- diff --git a/monkestation/code/modules/factory_type_beat/processing/brm.dm b/monkestation/code/modules/factory_type_beat/processing/brm.dm new file mode 100644 index 000000000000..2791bd39c8cb --- /dev/null +++ b/monkestation/code/modules/factory_type_beat/processing/brm.dm @@ -0,0 +1,201 @@ +#define MANUAL_TELEPORT_SOUND 'sound/machines/mining/manual_teleport.ogg' +#define AUTO_TELEPORT_SOUND 'sound/machines/mining/auto_teleport.ogg' + +/datum/wires/brm + holder_type = /obj/machinery/bouldertech/brm + proper_name = "Boulder Retrieval Matrix" + +/datum/wires/brm/New(atom/holder) + add_duds(1) + return ..() + +/datum/wires/brm/on_pulse(wire) + var/obj/machinery/bouldertech/brm/brm_holder = holder + if(brm_holder.panel_open) + return + brm_holder.toggle_auto_on() + +/obj/machinery/bouldertech/brm + name = "boulder retrieval matrix" + desc = "A teleportation matrix used to retrieve boulders excavated by mining NODEs from ore vents." + icon_state = "brm" + circuit = /obj/item/circuitboard/machine/brm + usage_sound = MANUAL_TELEPORT_SOUND + processing_flags = START_PROCESSING_MANUALLY + boulders_held_max = 2 + /// Are we trying to actively collect boulders automatically? + var/toggled_on = FALSE + /// How long does it take to collect a boulder? + var/teleportation_time = 1.5 SECONDS + /// Cooldown used for left click teleportation. + COOLDOWN_DECLARE(manual_teleport_cooldown) + +/obj/machinery/bouldertech/brm/Initialize(mapload) + . = ..() + set_wires(new /datum/wires/brm(src)) + +/obj/machinery/bouldertech/brm/Destroy() + QDEL_NULL(wires) + return ..() + +/obj/machinery/bouldertech/brm/attack_hand(mob/living/user, list/modifiers) + . = ..() + if(!handle_teleport_conditions(user)) + return + pre_collect_boulder() + + COOLDOWN_START(src, manual_teleport_cooldown, teleportation_time) + +/obj/machinery/bouldertech/brm/attack_robot(mob/user) + if(!handle_teleport_conditions(user)) + return + pre_collect_boulder() + + COOLDOWN_START(src, manual_teleport_cooldown, teleportation_time) + +/obj/machinery/bouldertech/brm/attackby(obj/item/attacking_item, mob/user, params) + if(is_wire_tool(attacking_item) && panel_open) + wires.interact(user) + return TRUE + return ..() + +/obj/machinery/bouldertech/brm/attack_hand_secondary(mob/user, list/modifiers) + . = ..() + if(. == SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN) + return + if(!anchored) + balloon_alert(user, "anchor first!") + return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN + toggle_auto_on(user) + return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN + +/obj/machinery/bouldertech/brm/attack_robot_secondary(mob/user, list/modifiers) + . = ..() + if(. == SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN) + return + if(!anchored) + balloon_alert(user, "anchor first!") + return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN + toggle_auto_on(user) + return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN + +/obj/machinery/bouldertech/brm/process() + if(SSore_generation.available_boulders.len < 1) + say("No boulders to collect. Entering idle mode.") + toggled_on = FALSE + update_appearance(UPDATE_ICON_STATE) + return PROCESS_KILL + for(var/i in 1 to boulders_processing_max) + if(pre_collect_boulder()) + continue + toggled_on = FALSE + update_appearance(UPDATE_ICON_STATE) + return PROCESS_KILL + for(var/obj/item/boulder/ground_rocks in loc.contents) + boulders_contained += ground_rocks + if(boulders_contained.len < boulders_held_max) + continue + toggled_on = FALSE + boulders_contained.Cut() + update_appearance(UPDATE_ICON_STATE) + return PROCESS_KILL + +/obj/machinery/bouldertech/brm/add_context(atom/source, list/context, obj/item/held_item, mob/user) + . = ..() + context[SCREENTIP_CONTEXT_LMB] = "Teleport single boulder" + context[SCREENTIP_CONTEXT_RMB] = "Toggle automatic boulder retrieval" + return CONTEXTUAL_SCREENTIP_SET + +/obj/machinery/bouldertech/brm/examine(mob/user) + . = ..() + . += span_notice("The small screen reads there are [span_boldnotice("[SSore_generation.available_boulders.len] boulders")] available to teleport.") + +/obj/machinery/bouldertech/brm/RefreshParts() + . = ..() + var/scanner_stack = 0 + var/laser_stack = 0 + for(var/datum/stock_part/scanning_module/scanner in component_parts) + scanner_stack += scanner.tier + boulders_processing_max = scanner_stack + for(var/datum/stock_part/micro_laser/laser in component_parts) + laser_stack += laser.tier + boulders_held_max = laser_stack + 1 + +/obj/machinery/bouldertech/brm/update_icon_state() + if(toggled_on && !panel_open) + icon_state = "[initial(icon_state)]-toggled" + return + return ..() + +/** + * Handles qualifiers for enabling teleportation of boulders. + * Returns TRUE if the teleportation can proceed, FALSE otherwise. + */ +/obj/machinery/bouldertech/brm/proc/handle_teleport_conditions(mob/user) + if(!COOLDOWN_FINISHED(src, manual_teleport_cooldown)) + return FALSE + if(panel_open) + balloon_alert(user, "close panel first!") + return FALSE + playsound(src, MANUAL_TELEPORT_SOUND, 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) + return TRUE + +/** + * Begins to collect a boulder from the available boulders list in SSore_generation. + * Boulders must not be processed by another BRM or machine, and must be in the available boulders list. + * A selected boulder is picked randomly. + * The actual movement is then handled by collect_boulder() after a timed callback. + */ +/obj/machinery/bouldertech/brm/proc/pre_collect_boulder() + if(!length(SSore_generation.available_boulders)) + playsound(loc, 'sound/machines/synth_no.ogg', 30 , TRUE) + balloon_alert_to_viewers("no boulders to collect!") + return FALSE //Nothing to collect + var/obj/item/boulder/random_boulder = pick(SSore_generation.available_boulders) + if(random_boulder.processed_by) + return FALSE + + random_boulder.processed_by = src + random_boulder.Shake(duration = 1.5 SECONDS) + SSore_generation.available_boulders -= random_boulder + addtimer(CALLBACK(src, PROC_REF(collect_boulder), random_boulder), 1.5 SECONDS) + return TRUE + +/** + * Collects a boulder from the available boulders list in SSore_generation. + * Handles the movement of the boulder as well as visual effects on the BRM. + * @param obj/item/boulder/random_boulder The boulder to collect. + */ +/obj/machinery/bouldertech/brm/proc/collect_boulder(obj/item/boulder/random_boulder) + flick("brm-flash", src) + if(QDELETED(random_boulder)) + playsound(loc, 'sound/machines/synth_no.ogg', 30 , TRUE) + balloon_alert_to_viewers("target lost!") + return FALSE + playsound(src, AUTO_TELEPORT_SOUND, 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) + random_boulder.forceMove(drop_location()) + random_boulder.processed_by = null + random_boulder.pixel_x = rand(-2, 2) + random_boulder.pixel_y = rand(-2, 2) + balloon_alert_to_viewers("boulder appears!") + random_boulder.visible_message(span_warning("[random_boulder] suddenly appears!")) + use_power(BASE_MACHINE_ACTIVE_CONSUMPTION * 0.1) + return TRUE + +/** + * Toggles automatic boulder retrieval on. + * Adjusts the teleportation sound, icon state, and begins processing. + * @param mob/user The user who toggled the BRM. + */ +/obj/machinery/bouldertech/brm/proc/toggle_auto_on(mob/user) + if(panel_open) + if(user) + balloon_alert(user, "close panel first!") + return + toggled_on = TRUE + START_PROCESSING(SSmachines, src) + update_appearance(UPDATE_ICON_STATE) + usage_sound = AUTO_TELEPORT_SOUND + +#undef MANUAL_TELEPORT_SOUND +#undef AUTO_TELEPORT_SOUND diff --git a/monkestation/code/modules/factory_type_beat/processing/checmial_washer.dm b/monkestation/code/modules/factory_type_beat/processing/checmial_washer.dm new file mode 100644 index 000000000000..230ba5fd34f5 --- /dev/null +++ b/monkestation/code/modules/factory_type_beat/processing/checmial_washer.dm @@ -0,0 +1,137 @@ +/obj/machinery/bouldertech/chemical_washer + name = "chemical washer" + desc = "Crushes clumps of ore into dirty dust which needs to be enriched." + icon_state = "washer" + allows_boulders = FALSE + holds_minerals = TRUE + process_string = "Water, Dirty Slurry" + processable_materials = list( + /datum/material/iron, + /datum/material/titanium, + /datum/material/silver, + /datum/material/gold, + /datum/material/uranium, + /datum/material/mythril, + /datum/material/adamantine, + /datum/material/runite, + /datum/material/glass, + /datum/material/plasma, + /datum/material/diamond, + /datum/material/bluespace, + /datum/material/bananium, + /datum/material/plastic, + ) + var/maximum_volume = 1000 + var/water_per_use = 100 + +/obj/machinery/bouldertech/chemical_washer/Initialize(mapload) + . = ..() + create_reagents(maximum_volume, TRANSPARENT) + AddComponent(/datum/component/plumbing/chemical_washer) + AddComponent(/datum/component/plumbing/chemical_washer_water) + +/obj/machinery/bouldertech/chemical_washer/process() + if(!anchored) + return + if(reagents.total_volume < water_per_use) + return + process_slurry() + + +/obj/machinery/bouldertech/chemical_washer/proc/process_slurry() + var/processed = FALSE + for(var/datum/reagent/processing/dirty_slurry/slurry as anything in reagents.reagent_list) + if(!istype(slurry)) + continue + + if(!slurry.data["materials"]) + continue + var/list/slurry_data = slurry.data + var/slurry_volume = slurry.volume + + reagents.remove_all_type(slurry.type, slurry.volume) + reagents.add_reagent(/datum/reagent/processing/clean_slurry, slurry_volume, slurry_data) + processed = TRUE + + + if(processed) + reagents.remove_all_type(/datum/reagent/water, water_per_use) + + playsound(loc, 'sound/weapons/drill.ogg', 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) + update_boulder_count() + +/datum/component/plumbing/chemical_washer + demand_connects = WEST + supply_connects = EAST + +/datum/component/plumbing/chemical_washer/send_request(dir) + var/atom/movable/host = parent + + var/slurry_amount = host.reagents.get_reagent_amount(/datum/reagent/processing/dirty_slurry) + process_request(amount = max(500 - slurry_amount, 0), reagent = /datum/reagent/processing/dirty_slurry, dir = dir) + +///check who can give us what we want, and how many each of them will give us +/datum/component/plumbing/chemical_washer/process_request(amount = MACHINE_REAGENT_TRANSFER, reagent, dir) + //find the duct to take from + var/datum/ductnet/net + if(!ducts.Find(num2text(dir))) + return + net = ducts[num2text(dir)] + + var/atom/movable/host = parent + + var/datum/reagent/processing/requested_reagent + + for(var/datum/reagent/listed as anything in host.reagents.reagent_list) + if(istype(reagent, /datum/reagent/processing/clean_slurry)) + return + + for(var/datum/reagent/listed as anything in host.reagents.reagent_list) + if(!reagent) + break + if(reagent == listed.type) + requested_reagent = listed + break + //find all valid suppliers in the duct + var/list/valid_suppliers = list() + for(var/datum/component/plumbing/supplier as anything in net.suppliers) + var/failed = FALSE + if(requested_reagent) + var/atom/movable/supplier_host = supplier.parent + for(var/datum/reagent/supplier_listed as anything in supplier_host.reagents.reagent_list) + if(supplier_listed.type != reagent) + continue + if(supplier_listed.data["materials"] != requested_reagent.data["materials"]) + failed = TRUE + break + var/material = supplier_listed.data["materials"] + var/quantity = supplier_listed.data["materials"][material] + if(quantity != requested_reagent.data["materials"][material]) + failed = TRUE + break + if(failed) + continue + if(supplier.can_give(amount, reagent, net)) + valid_suppliers += supplier + var/suppliersLeft = valid_suppliers.len + if(!suppliersLeft) + return + + //take an equal amount from each supplier + var/currentRequest + var/target_volume = reagents.total_volume + amount + for(var/datum/component/plumbing/give as anything in valid_suppliers) + currentRequest = (target_volume - reagents.total_volume) / suppliersLeft + give.transfer_to(src, currentRequest, reagent, net) + suppliersLeft-- + +/datum/component/plumbing/chemical_washer_water + demand_connects = SOUTH + demand_color = COLOR_BLUE + + ducting_layer = SECOND_DUCT_LAYER + +/datum/component/plumbing/chemical_washer_water/send_request(dir) + var/atom/movable/host = parent + var/water_amount = host.reagents.get_reagent_amount(/datum/reagent/water) + process_request(amount = max(500 - water_amount, 0), reagent = /datum/reagent/water, dir = dir) diff --git a/monkestation/code/modules/factory_type_beat/processing/chemical_injector.dm b/monkestation/code/modules/factory_type_beat/processing/chemical_injector.dm new file mode 100644 index 000000000000..c193c02e516c --- /dev/null +++ b/monkestation/code/modules/factory_type_beat/processing/chemical_injector.dm @@ -0,0 +1,165 @@ +/obj/machinery/bouldertech/chemical_injector + name = "chemical injector" + desc = "Crushes shards when infused with brine." + icon_state = "chemical_injection" + allows_boulders = FALSE + holds_minerals = TRUE + process_string = "Brine" + processable_materials = list( + /datum/material/iron, + /datum/material/titanium, + /datum/material/silver, + /datum/material/gold, + /datum/material/uranium, + /datum/material/mythril, + /datum/material/adamantine, + /datum/material/runite, + /datum/material/glass, + /datum/material/plasma, + /datum/material/diamond, + /datum/material/bluespace, + /datum/material/bananium, + /datum/material/plastic, + ) + var/maximum_volume = 1000 + var/brine_per_use = 25 + var/crystal_inside = FALSE + +/obj/machinery/bouldertech/chemical_injector/update_icon_state() + . = ..() + if(crystal_inside) + icon_state = "chemical_injection-inject" + else + icon_state = "chemical_injection" + +/obj/machinery/bouldertech/chemical_injector/update_overlays() + . = ..() + if(crystal_inside) + . += mutable_appearance(icon, "chemical_injection-crystal") + +/obj/machinery/bouldertech/chemical_injector/Initialize(mapload) + . = ..() + create_reagents(maximum_volume, TRANSPARENT) + AddComponent(/datum/component/plumbing/chemical_injector_brine) + +/obj/machinery/bouldertech/chemical_injector/process() + if(!anchored) + return PROCESS_KILL + + if(next_allowed_process > world.time) + return + + if(reagents.total_volume < brine_per_use) + return + + if(crystal_inside) + return + + var/stop_processing_check = FALSE + var/boulders_concurrent = boulders_processing_max ///How many boulders can we touch this process() call + for(var/obj/item/potential_boulder as anything in boulders_contained) + + if(istype(potential_boulder, /obj/item/processing/amalgam)) + next_allowed_process = world.time + 30 SECONDS + visible_message(span_danger("The machine gets clogged with [potential_boulder]! Disabling it for 30 Seconds.")) + + if(QDELETED(potential_boulder)) + boulders_contained -= potential_boulder + break + if(boulders_concurrent <= 0) + break //Try again next time + + if(!istype(potential_boulder, /obj/item/boulder)) + crystal_inside = TRUE + update_appearance() + addtimer(CALLBACK(src, PROC_REF(process_crystal), potential_boulder), 2.6 SECONDS) + continue + + var/obj/item/boulder/boulder = potential_boulder + if(boulder.durability < 0) + CRASH("\The [src] had a boulder with negative durability!") + if(!check_for_processable_materials(boulder.custom_materials)) //Checks for any new materials we can process. + boulders_concurrent-- //We count skipped boulders + remove_boulder(boulder) + continue + boulders_concurrent-- + boulder.durability-- //One less durability to the processed boulder. + if(COOLDOWN_FINISHED(src, sound_cooldown)) + COOLDOWN_START(src, sound_cooldown, 1.5 SECONDS) + playsound(loc, usage_sound, 29, FALSE, SHORT_RANGE_SOUND_EXTRARANGE) //This can get annoying. One play per process() call. + stop_processing_check = TRUE + if(boulder.durability <= 0) + export_shard(boulder) //Crack that bouwlder open! + continue + if(!stop_processing_check) + playsound(src.loc, 'sound/machines/ping.ogg', 50, FALSE) + return PROCESS_KILL + + +/obj/machinery/bouldertech/chemical_injector/proc/process_crystal(obj/item/processing/crystals/clump) + for(var/datum/material/material as anything in clump.custom_materials) + var/quantity = clump.custom_materials[material] + var/obj/item/processing/shards/dust = new(get_turf(src)) + dust.custom_materials = list() + dust.custom_materials += material + dust.custom_materials[material] = quantity + dust.set_colors() + dust.forceMove(get_step(src, export_side)) + + crystal_inside = FALSE + reagents.remove_all(brine_per_use) + qdel(clump) + playsound(loc, 'sound/weapons/drill.ogg', 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) + update_boulder_count() + +/obj/machinery/bouldertech/chemical_injector/CanAllowThrough(atom/movable/mover, border_dir) + if(!anchored) + return FALSE + if(boulders_contained.len >= boulders_held_max) + return FALSE + if(istype(mover, /obj/item/processing/crystals)) + return TRUE + if(istype(mover, /obj/item/processing/amalgam)) + return TRUE + return ..() + +/obj/machinery/bouldertech/chemical_injector/return_extras() + var/list/boulders_contained = list() + for(var/obj/item/processing/crystals/boulder in contents) + boulders_contained += boulder + for(var/obj/item/processing/amalgam/amalgam in contents) + boulders_contained += amalgam + return boulders_contained + +/obj/machinery/bouldertech/chemical_injector/check_extras(obj/item/item) + if(istype(item, /obj/item/processing/crystals)) + return TRUE + if(istype(item, /obj/item/processing/amalgam)) + return TRUE + return FALSE + +/obj/machinery/bouldertech/chemical_injector/proc/export_shard(obj/item/boulder/boulder) + for(var/datum/material/material as anything in boulder.custom_materials) + var/quantity = boulder.custom_materials[material] + for(var/i = 1 to 4) + var/obj/item/processing/shards/dust = new(get_turf(src)) + dust.custom_materials = list() + dust.custom_materials += material + dust.custom_materials[material] = quantity + dust.set_colors() + dust.forceMove(get_step(src, export_side)) + + reagents.remove_all(brine_per_use) + qdel(boulder) + playsound(loc, 'sound/weapons/drill.ogg', 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) + update_boulder_count() + + +/datum/component/plumbing/chemical_injector_brine + demand_connects = SOUTH + demand_color = COLOR_YELLOW + + ducting_layer = SECOND_DUCT_LAYER + +/datum/component/plumbing/chemical_injector_brine/send_request(dir) + process_request(amount = MACHINE_REAGENT_TRANSFER, reagent = /datum/reagent/brine, dir = dir) diff --git a/monkestation/code/modules/factory_type_beat/processing/crusher.dm b/monkestation/code/modules/factory_type_beat/processing/crusher.dm new file mode 100644 index 000000000000..3cffe8985509 --- /dev/null +++ b/monkestation/code/modules/factory_type_beat/processing/crusher.dm @@ -0,0 +1,72 @@ +/obj/machinery/bouldertech/crusher + name = "crusher" + desc = "Crushes clumps of ore into dirty dust which needs to be enriched." + icon_state = "crusher" + allows_boulders = FALSE + holds_minerals = TRUE + process_string = "Clumps" + processable_materials = list( + /datum/material/iron, + /datum/material/titanium, + /datum/material/silver, + /datum/material/gold, + /datum/material/uranium, + /datum/material/mythril, + /datum/material/adamantine, + /datum/material/runite, + /datum/material/glass, + /datum/material/plasma, + /datum/material/diamond, + /datum/material/bluespace, + /datum/material/bananium, + /datum/material/plastic, + ) + +/obj/machinery/bouldertech/crusher/process() + if(!anchored) + return PROCESS_KILL + var/boulders_concurrent = boulders_processing_max ///How many boulders can we touch this process() call + for(var/obj/item/potential_boulder as anything in boulders_contained) + if(QDELETED(potential_boulder)) + boulders_contained -= potential_boulder + break + if(boulders_concurrent <= 0) + break //Try again next time + + if(!istype(potential_boulder, /obj/item/boulder)) + process_clump(potential_boulder) + continue + +/obj/machinery/bouldertech/crusher/proc/process_clump(obj/item/processing/clumps/clump) + for(var/datum/material/material as anything in clump.custom_materials) + var/quantity = clump.custom_materials[material] + var/obj/item/processing/dirty_dust/dust = new(get_turf(src)) + dust.custom_materials = list() + dust.custom_materials += material + dust.custom_materials[material] = quantity + dust.set_colors() + dust.forceMove(get_step(src, export_side)) + + qdel(clump) + playsound(loc, 'sound/weapons/drill.ogg', 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) + update_boulder_count() + +/obj/machinery/bouldertech/crusher/CanAllowThrough(atom/movable/mover, border_dir) + if(!anchored) + return FALSE + if(boulders_contained.len >= boulders_held_max) + return FALSE + if(istype(mover, /obj/item/processing/clumps)) + return TRUE + return ..() + +/obj/machinery/bouldertech/crusher/return_extras() + var/list/boulders_contained = list() + for(var/obj/item/processing/clumps/boulder in contents) + boulders_contained += boulder + return boulders_contained + +/obj/machinery/bouldertech/crusher/check_extras(obj/item/item) + if(istype(item, /obj/item/processing/clumps)) + return TRUE + return FALSE diff --git a/monkestation/code/modules/factory_type_beat/processing/crystalizer.dm b/monkestation/code/modules/factory_type_beat/processing/crystalizer.dm new file mode 100644 index 000000000000..d1ee831350d1 --- /dev/null +++ b/monkestation/code/modules/factory_type_beat/processing/crystalizer.dm @@ -0,0 +1,140 @@ +/obj/machinery/bouldertech/crystalizer + name = "crystalizer" + desc = "Crushes clumps of ore into dirty dust which needs to be enriched." + icon_state = "crystalizer" + allows_boulders = FALSE + holds_minerals = TRUE + process_string = "Clean Slurry" + processable_materials = list( + /datum/material/iron, + /datum/material/titanium, + /datum/material/silver, + /datum/material/gold, + /datum/material/uranium, + /datum/material/mythril, + /datum/material/adamantine, + /datum/material/runite, + /datum/material/glass, + /datum/material/plasma, + /datum/material/diamond, + /datum/material/bluespace, + /datum/material/bananium, + /datum/material/plastic, + ) + var/maximum_volume = 50 + var/crystalized_reagent = 50 + var/processes_left = 3 + var/crystal_in_progress = FALSE + +/obj/machinery/bouldertech/crystalizer/Initialize(mapload) + . = ..() + create_reagents(maximum_volume, TRANSPARENT) + AddComponent(/datum/component/plumbing/material_crystalizer) + +/obj/machinery/bouldertech/crystalizer/update_overlays() + . = ..() + . += mutable_appearance(icon, "crystalizer-glass", layer + 0.2, src) + + if(crystal_in_progress) + . += mutable_appearance(icon, "crystalizer-crystal", layer, src) + . += mutable_appearance(icon, "crystalizer-[processes_left]") + +/obj/machinery/bouldertech/crystalizer/process() + if(!anchored) + return + if(reagents.total_volume < crystalized_reagent) + crystal_in_progress = FALSE + return + crystal_in_progress = TRUE + if(processes_left > 0) + processes_left-- + update_appearance() + return + + processes_left = 3 + process_slurry() + reagents.remove_all_type(/datum/reagent/processing/clean_slurry, crystalized_reagent) + crystal_in_progress = FALSE + update_appearance() + + +/obj/machinery/bouldertech/crystalizer/proc/process_slurry() + for(var/datum/reagent/processing/clean_slurry/slurry as anything in reagents.reagent_list) + if(!istype(slurry)) + continue + if(!slurry.data["materials"]) + continue + for(var/item in slurry.data["materials"]) + var/material = item + var/quantity = slurry.data["materials"][material] + var/obj/item/processing/crystals/dust = new(get_turf(src)) + dust.custom_materials = list() + dust.custom_materials += material + dust.custom_materials[material] = quantity + dust.set_colors() + dust.forceMove(get_step(src, export_side)) + if(prob(15)) + new /obj/item/processing/amalgam(get_step(src, export_side)) + + playsound(loc, 'sound/weapons/drill.ogg', 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) + update_boulder_count() + +/datum/component/plumbing/material_crystalizer + demand_connects = WEST + +/datum/component/plumbing/material_crystalizer/send_request(dir) + var/atom/movable/host = parent + var/reagents_left = host.reagents.maximum_volume - host.reagents.total_volume + process_request(amount = reagents_left, reagent = /datum/reagent/processing/clean_slurry, dir = dir) + +///check who can give us what we want, and how many each of them will give us +/datum/component/plumbing/material_crystalizer/process_request(amount = MACHINE_REAGENT_TRANSFER, reagent, dir) + //find the duct to take from + var/datum/ductnet/net + if(!ducts.Find(num2text(dir))) + return + net = ducts[num2text(dir)] + + var/atom/movable/host = parent + + var/datum/reagent/processing/requested_reagent + + for(var/datum/reagent/listed as anything in host.reagents.reagent_list) + if(!reagent) + break + if(reagent == listed.type) + requested_reagent = listed + break + + //find all valid suppliers in the duct + var/list/valid_suppliers = list() + for(var/datum/component/plumbing/supplier as anything in net.suppliers) + var/failed = FALSE + if(requested_reagent) + var/atom/movable/supplier_host = supplier.parent + for(var/datum/reagent/supplier_listed as anything in supplier_host.reagents.reagent_list) + if(supplier_listed.type != reagent) + continue + if(supplier_listed.data["materials"] != requested_reagent.data["materials"]) + failed = TRUE + break + var/material = supplier_listed.data["materials"] + var/quantity = supplier_listed.data["materials"][material] + if(quantity != requested_reagent.data["materials"][material]) + failed = TRUE + break + if(failed) + continue + if(supplier.can_give(amount, reagent, net)) + valid_suppliers += supplier + var/suppliersLeft = valid_suppliers.len + if(!suppliersLeft) + return + + //take an equal amount from each supplier + var/currentRequest + var/target_volume = reagents.total_volume + amount + for(var/datum/component/plumbing/give as anything in valid_suppliers) + currentRequest = (target_volume - reagents.total_volume) / suppliersLeft + give.transfer_to(src, currentRequest, reagent, net) + suppliersLeft-- diff --git a/monkestation/code/modules/factory_type_beat/processing/dissolution_chamber.dm b/monkestation/code/modules/factory_type_beat/processing/dissolution_chamber.dm new file mode 100644 index 000000000000..2f6e6c357790 --- /dev/null +++ b/monkestation/code/modules/factory_type_beat/processing/dissolution_chamber.dm @@ -0,0 +1,96 @@ +/obj/machinery/bouldertech/dissolution_chamber + name = "dissolution chamber" + desc = "Crushes shards when infused with brine." + icon_state = "dissolution" + holds_minerals = TRUE + process_string = "Sulfuric Acid" + processable_materials = list( + /datum/material/iron, + /datum/material/titanium, + /datum/material/silver, + /datum/material/gold, + /datum/material/uranium, + /datum/material/mythril, + /datum/material/adamantine, + /datum/material/runite, + /datum/material/glass, + /datum/material/plasma, + /datum/material/diamond, + /datum/material/bluespace, + /datum/material/bananium, + /datum/material/plastic, + ) + var/maximum_volume = 3000 + var/acid_per_use = 100 + +/obj/machinery/bouldertech/dissolution_chamber/Initialize(mapload) + . = ..() + create_reagents(maximum_volume, TRANSPARENT) + AddComponent(/datum/component/plumbing/dissolution_chamber) + AddComponent(/datum/component/plumbing/dissolution_chamber_output) + +/obj/machinery/bouldertech/dissolution_chamber/process() + if(!anchored) + return PROCESS_KILL + + + if(reagents.total_volume < acid_per_use) + return + + var/stop_processing_check = FALSE + var/boulders_concurrent = boulders_processing_max ///How many boulders can we touch this process() call + for(var/obj/item/potential_boulder as anything in boulders_contained) + if(QDELETED(potential_boulder)) + boulders_contained -= potential_boulder + break + if(boulders_concurrent <= 0) + break //Try again next time + + var/obj/item/boulder/boulder = potential_boulder + if(boulder.durability < 0) + CRASH("\The [src] had a boulder with negative durability!") + if(!check_for_processable_materials(boulder.custom_materials)) //Checks for any new materials we can process. + boulders_concurrent-- //We count skipped boulders + remove_boulder(boulder) + continue + boulders_concurrent-- + boulder.durability-- //One less durability to the processed boulder. + if(COOLDOWN_FINISHED(src, sound_cooldown)) + COOLDOWN_START(src, sound_cooldown, 1.5 SECONDS) + playsound(loc, usage_sound, 29, FALSE, SHORT_RANGE_SOUND_EXTRARANGE) //This can get annoying. One play per process() call. + stop_processing_check = TRUE + if(boulder.durability <= 0) + export_slurry(boulder) //Crack that bouwlder open! + reagents.remove_all_type(/datum/reagent/toxin/acid, acid_per_use) + continue + if(!stop_processing_check) + playsound(src.loc, 'sound/machines/ping.ogg', 50, FALSE) + return PROCESS_KILL + +/obj/machinery/bouldertech/dissolution_chamber/proc/export_slurry(obj/item/boulder/boulder) + for(var/datum/material/material as anything in boulder.custom_materials) + var/list/data = list() + data |= material + data[material] = boulder.custom_materials[material] + var/list/material_data = list() + material_data += "materials" + material_data["materials"] = data + reagents.add_reagent(/datum/reagent/processing/dirty_slurry, 250, material_data) + + qdel(boulder) + playsound(loc, 'sound/weapons/drill.ogg', 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) + update_boulder_count() + +/datum/component/plumbing/dissolution_chamber + demand_connects = SOUTH + demand_color = COLOR_YELLOW + + ducting_layer = SECOND_DUCT_LAYER + +/datum/component/plumbing/dissolution_chamber/send_request(dir) + var/atom/movable/host = parent + var/reagents_left = host.reagents.get_reagent_amount(/datum/reagent/toxin/acid) + process_request(amount = max(2500 - reagents_left, 0), reagent = /datum/reagent/toxin/acid, dir = dir) + +/datum/component/plumbing/dissolution_chamber_output + supply_connects = EAST diff --git a/monkestation/code/modules/factory_type_beat/processing/enricher.dm b/monkestation/code/modules/factory_type_beat/processing/enricher.dm new file mode 100644 index 000000000000..7bc80bdb2e97 --- /dev/null +++ b/monkestation/code/modules/factory_type_beat/processing/enricher.dm @@ -0,0 +1,105 @@ +/obj/machinery/bouldertech/enricher + name = "enrichment chamber" + desc = "enriches boulders into dust which can then de smelted at a smelter for double the materials." + icon_state = "enricher" + holds_minerals = TRUE + process_string = "Dirty Dust" + processable_materials = list( + /datum/material/iron, + /datum/material/titanium, + /datum/material/silver, + /datum/material/gold, + /datum/material/uranium, + /datum/material/mythril, + /datum/material/adamantine, + /datum/material/runite, + /datum/material/glass, + /datum/material/plasma, + /datum/material/diamond, + /datum/material/bluespace, + /datum/material/bananium, + /datum/material/plastic, + ) + +/obj/machinery/bouldertech/enricher/process() + if(!anchored) + return PROCESS_KILL + var/stop_processing_check = FALSE + var/boulders_concurrent = boulders_processing_max ///How many boulders can we touch this process() call + for(var/obj/item/potential_boulder as anything in boulders_contained) + if(QDELETED(potential_boulder)) + boulders_contained -= potential_boulder + break + if(boulders_concurrent <= 0) + break //Try again next time + + if(!istype(potential_boulder, /obj/item/boulder)) + process_dirty_dust(potential_boulder) + continue + + var/obj/item/boulder/boulder = potential_boulder + if(boulder.durability < 0) + CRASH("\The [src] had a boulder with negative durability!") + if(!check_for_processable_materials(boulder.custom_materials)) //Checks for any new materials we can process. + boulders_concurrent-- //We count skipped boulders + remove_boulder(boulder) + continue + boulders_concurrent-- + boulder.durability-- //One less durability to the processed boulder. + if(COOLDOWN_FINISHED(src, sound_cooldown)) + COOLDOWN_START(src, sound_cooldown, 1.5 SECONDS) + playsound(loc, usage_sound, 29, FALSE, SHORT_RANGE_SOUND_EXTRARANGE) //This can get annoying. One play per process() call. + stop_processing_check = TRUE + if(boulder.durability <= 0) + export_dust(boulder) //Crack that bouwlder open! + continue + if(!stop_processing_check) + playsound(src.loc, 'sound/machines/ping.ogg', 50, FALSE) + return PROCESS_KILL + +/obj/machinery/bouldertech/enricher/proc/export_dust(obj/item/boulder/boulder) + for(var/datum/material/material as anything in boulder.custom_materials) + var/quantity = boulder.custom_materials[material] + for(var/i = 1 to 2) + var/obj/item/processing/refined_dust/dust = new(get_turf(src)) + dust.custom_materials = list() + dust.custom_materials += material + dust.custom_materials[material] = quantity + dust.set_colors() + dust.forceMove(get_step(src, export_side)) + qdel(boulder) + playsound(loc, 'sound/weapons/drill.ogg', 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) + update_boulder_count() + +/obj/machinery/bouldertech/enricher/proc/process_dirty_dust(obj/item/processing/dirty_dust/dirty_dust) + for(var/datum/material/material as anything in dirty_dust.custom_materials) + var/quantity = dirty_dust.custom_materials[material] + var/obj/item/processing/refined_dust/dust = new(get_turf(src)) + dust.custom_materials = list() + dust.custom_materials += material + dust.custom_materials[material] = quantity + dust.set_colors() + dust.forceMove(get_step(src, export_side)) + qdel(dirty_dust) + playsound(loc, 'sound/weapons/drill.ogg', 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) + update_boulder_count() + +/obj/machinery/bouldertech/enricher/CanAllowThrough(atom/movable/mover, border_dir) + if(!anchored) + return FALSE + if(boulders_contained.len >= boulders_held_max) + return FALSE + if(istype(mover, /obj/item/processing/dirty_dust)) + return TRUE + return ..() + +/obj/machinery/bouldertech/enricher/return_extras() + var/list/boulders_contained = list() + for(var/obj/item/processing/dirty_dust/boulder in contents) + boulders_contained += boulder + return boulders_contained + +/obj/machinery/bouldertech/enricher/check_extras(obj/item/item) + if(istype(item, /obj/item/processing/dirty_dust)) + return TRUE + return FALSE diff --git a/monkestation/code/modules/factory_type_beat/processing/holding_types.dm b/monkestation/code/modules/factory_type_beat/processing/holding_types.dm new file mode 100644 index 000000000000..2f5b06312397 --- /dev/null +++ b/monkestation/code/modules/factory_type_beat/processing/holding_types.dm @@ -0,0 +1,59 @@ +/obj/item/processing + name = "generic" + desc = "oopsie" + icon = 'monkestation/code/modules/factory_type_beat/icons/processing.dmi' + icon_state = "dust" + +/obj/item/processing/proc/set_colors() + for(var/datum/material/material as anything in custom_materials) + color = material.greyscale_colors + alpha = material.alpha + +/obj/item/processing/refined_dust + name = "refined dust" + desc = "After being enriched it has turned into some dust." + +/obj/item/processing/dirty_dust + name = "dirty dust" + desc = "After crushing some clumps we are left with this." + icon = 'monkestation/icons/obj/items/drugs.dmi' + icon_state = "crack" + +/obj/item/processing/clumps + name = "ore clumps" + desc = "After being purified we are left with some clumps of ore." + icon_state = "clump" + +/obj/item/processing/shards + name = "ore shards" + desc = "After being filled with chemicals we are left with some shards of ores." + icon_state = "shard" + +/obj/item/processing/crystals + name = "ore crystals" + desc = "After crystalizing some clean slurry we have crystals." + icon_state = "crystal" + +/datum/reagent/processing + name = "Generic Processing Reagent" + data = list("materials" = list()) + +/datum/reagent/processing/dirty_slurry + name = "Dirty Slurry" + +/datum/reagent/processing/clean_slurry + name = "Clean Slurry" + +/datum/reagent/brine + name = "Brine" + + +/obj/item/processing/amalgam + name = "ore amalgam" + desc = "Pretty useless and jams up your processing." + icon_state = "dust" + +/obj/item/processing/ruined_shard + name = "ruined shard" + desc = "Pretty useless and jams up your processing." + icon_state = "dust" diff --git a/monkestation/code/modules/factory_type_beat/processing/purification_chamber.dm b/monkestation/code/modules/factory_type_beat/processing/purification_chamber.dm new file mode 100644 index 000000000000..13e577032420 --- /dev/null +++ b/monkestation/code/modules/factory_type_beat/processing/purification_chamber.dm @@ -0,0 +1,167 @@ +#define REQUIRED_OXYGEN_MOLES 25 +/obj/machinery/bouldertech/purification_chamber + name = "purification chamber" + desc = "Uses a large amount of oxygen to purify ores into clumps." + icon_state = "purification_chamber" + holds_minerals = TRUE + process_string = "Shards" + processable_materials = list( + /datum/material/iron, + /datum/material/titanium, + /datum/material/silver, + /datum/material/gold, + /datum/material/uranium, + /datum/material/mythril, + /datum/material/adamantine, + /datum/material/runite, + /datum/material/glass, + /datum/material/plasma, + /datum/material/diamond, + /datum/material/bluespace, + /datum/material/bananium, + /datum/material/plastic, + ) + + var/oxygen_moles = 0 + var/obj/machinery/portable_atmospherics/purification_input/oxygen_input + +/obj/machinery/bouldertech/purification_chamber/AltClick(mob/user) + . = ..() + if(oxygen_input) + oxygen_input.disconnect() + QDEL_NULL(oxygen_input) + + var/side = tgui_input_list(user, "Choose a side to try and deploy the tank on", "[name]", list("North", "South")) + if(!side) + return + + var/direction = NORTH + if(side == "South") + direction = SOUTH + + if(!(locate(/obj/machinery/atmospherics/components/unary/portables_connector) in get_step(src, direction))) + return + + oxygen_input = new(get_step(src, direction)) + var/obj/machinery/atmospherics/components/unary/portables_connector/possible_port = locate(/obj/machinery/atmospherics/components/unary/portables_connector) in oxygen_input.loc + if(!oxygen_input.connect(possible_port)) + QDEL_NULL(oxygen_input) + +/obj/machinery/bouldertech/purification_chamber/process() + if(!anchored) + return PROCESS_KILL + + if(oxygen_input) + oxygen_input.air_contents.assert_gas(/datum/gas/oxygen, oxygen_input.air_contents) + oxygen_moles = oxygen_input.air_contents.gases[/datum/gas/oxygen][MOLES] + + if(oxygen_moles < REQUIRED_OXYGEN_MOLES) + return + + var/stop_processing_check = FALSE + var/boulders_concurrent = boulders_processing_max ///How many boulders can we touch this process() call + for(var/obj/item/potential_boulder as anything in boulders_contained) + if(oxygen_input) + oxygen_input.air_contents.remove_specific(/datum/gas/oxygen, REQUIRED_OXYGEN_MOLES) + + if(QDELETED(potential_boulder)) + boulders_contained -= potential_boulder + break + if(boulders_concurrent <= 0) + break //Try again next time + + if(!istype(potential_boulder, /obj/item/boulder)) + process_shard(potential_boulder) + continue + + var/obj/item/boulder/boulder = potential_boulder + if(boulder.durability < 0) + CRASH("\The [src] had a boulder with negative durability!") + if(!check_for_processable_materials(boulder.custom_materials)) //Checks for any new materials we can process. + boulders_concurrent-- //We count skipped boulders + remove_boulder(boulder) + continue + boulders_concurrent-- + boulder.durability-- //One less durability to the processed boulder. + if(COOLDOWN_FINISHED(src, sound_cooldown)) + COOLDOWN_START(src, sound_cooldown, 1.5 SECONDS) + playsound(loc, usage_sound, 29, FALSE, SHORT_RANGE_SOUND_EXTRARANGE) //This can get annoying. One play per process() call. + stop_processing_check = TRUE + if(boulder.durability <= 0) + export_clump(boulder) //Crack that bouwlder open! + continue + if(!stop_processing_check) + playsound(src.loc, 'sound/machines/ping.ogg', 50, FALSE) + return PROCESS_KILL + + +/obj/machinery/bouldertech/purification_chamber/proc/process_shard(obj/item/processing/shards/shard) + for(var/datum/material/material as anything in shard.custom_materials) + var/quantity = shard.custom_materials[material] + var/obj/item/processing/clumps/dust = new(get_turf(src)) + dust.custom_materials = list() + dust.custom_materials += material + dust.custom_materials[material] = quantity + dust.set_colors() + dust.forceMove(get_step(src, export_side)) + + qdel(shard) + playsound(loc, 'sound/weapons/drill.ogg', 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) + update_boulder_count() + +/obj/machinery/bouldertech/purification_chamber/proc/export_clump(obj/item/boulder/boulder) + for(var/datum/material/material as anything in boulder.custom_materials) + var/quantity = boulder.custom_materials[material] + for(var/i = 1 to 3) + var/obj/item/processing/clumps/dust = new(get_turf(src)) + dust.custom_materials = list() + dust.custom_materials += material + dust.custom_materials[material] = quantity + dust.set_colors() + dust.forceMove(get_step(src, export_side)) + + qdel(boulder) + playsound(loc, 'sound/weapons/drill.ogg', 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) + update_boulder_count() + +/obj/machinery/bouldertech/purification_chamber/CanAllowThrough(atom/movable/mover, border_dir) + if(!anchored) + return FALSE + if(boulders_contained.len >= boulders_held_max) + return FALSE + if(istype(mover, /obj/item/processing/shards)) + return TRUE + return ..() + +/obj/machinery/bouldertech/purification_chamber/return_extras() + var/list/boulders_contained = list() + for(var/obj/item/processing/shards/boulder in contents) + boulders_contained += boulder + return boulders_contained + +/obj/machinery/bouldertech/purification_chamber/check_extras(obj/item/item) + if(istype(item, /obj/item/processing/shards)) + return TRUE + return FALSE + +#undef REQUIRED_OXYGEN_MOLES + +/obj/machinery/portable_atmospherics/purification_input + name = "external purification oxygen tank" + icon = 'monkestation/code/modules/factory_type_beat/icons/mining_machines.dmi' + icon_state = "air_pump" + pressure_resistance = 7 * ONE_ATMOSPHERE + volume = 2000 + density = TRUE + max_integrity = 300 + integrity_failure = 0.4 + armor_type = /datum/armor/portable_atmospherics_canister + + +/obj/machinery/portable_atmospherics/purification_input/Initialize(mapload) + . = ..() + AddElement(/datum/element/atmos_sensitive, mapload) + AddElement(/datum/element/volatile_gas_storage) + AddComponent(/datum/component/gas_leaker, leak_rate=0.01) + + SSair.start_processing_machine(src) diff --git a/monkestation/code/modules/factory_type_beat/processing/refinery.dm b/monkestation/code/modules/factory_type_beat/processing/refinery.dm new file mode 100644 index 000000000000..0908d7f21dab --- /dev/null +++ b/monkestation/code/modules/factory_type_beat/processing/refinery.dm @@ -0,0 +1,175 @@ +/** + * Your new favorite industrial waste magnet! + * Accepts boulders and produces sheets of non-metalic materials. + * Can be upgraded with stock parts or through chemical inputs. + * When upgraded, it can hold more boulders and process more at once. + * + * Chemical inputs can be used to boost the refinery's efficiency, but produces industrial waste, which eats through the station and is generally difficult to store. + */ + +/obj/machinery/bouldertech/refinery + name = "boulder refinery" + desc = "BR for short. Accepts boulders and refines non-metallic ores into sheets using internal chemicals. Can be upgraded with stock parts or through chemical inputs." + icon_state = "stacker" + holds_minerals = TRUE + processable_materials = list( + /datum/material/glass, + /datum/material/plasma, + /datum/material/diamond, + /datum/material/bluespace, + /datum/material/bananium, + /datum/material/plastic, + ) + circuit = /obj/item/circuitboard/machine/refinery + usage_sound = 'sound/machines/mining/refinery.ogg' + holds_mining_points = TRUE + +/// okay so var that holds mining points to claim +/// add total of pts from minerals mined in parent proc +/// then, little mini UI showing points to collect? + +/obj/machinery/bouldertech/refinery/RefreshParts() + . = ..() + var/manipulator_stack = 0 + var/matter_bin_stack = 0 + for(var/datum/stock_part/manipulator/servo in component_parts) + manipulator_stack += servo.tier - 1 + boulders_processing_max = clamp(manipulator_stack, 1, 6) + for(var/datum/stock_part/matter_bin/bin in component_parts) + matter_bin_stack += bin.tier + boulders_held_max = matter_bin_stack + + +/obj/machinery/bouldertech/refinery/add_context(atom/source, list/context, obj/item/held_item, mob/user) + . = ..() + if(istype(held_item, /obj/item/boulder)) + context[SCREENTIP_CONTEXT_LMB] = "Insert boulder" + if(istype(held_item, /obj/item/card/id) && points_held > 0) + context[SCREENTIP_CONTEXT_LMB] = "Claim mining points" + context[SCREENTIP_CONTEXT_RMB] = "Remove boulder" + return CONTEXTUAL_SCREENTIP_SET + + +/** + * Your other new favorite industrial waste magnet! + * Accepts boulders and produces sheets of metalic materials. + * Can be upgraded with stock parts or through chemical inputs. + * When upgraded, it can hold more boulders and process more at once. + * + * Chemical inputs can be used to boost the refinery's efficiency, but produces industrial waste, which eats through the station and is generally difficult to store. + */ +/obj/machinery/bouldertech/refinery/smelter + name = "boulder smelter" + desc = "BS for short. Accept boulders and refines metallic ores into sheets. Can be upgraded with stock parts or through gas inputs." + icon_state = "smelter" + processable_materials = list( + /datum/material/iron, + /datum/material/titanium, + /datum/material/silver, + /datum/material/gold, + /datum/material/uranium, + /datum/material/mythril, + /datum/material/adamantine, + /datum/material/runite, + ) + light_system = OVERLAY_LIGHT + light_outer_range = 1 + light_power = 2 + light_color = "#ffaf55" + light_on = FALSE + circuit = /obj/item/circuitboard/machine/smelter + usage_sound = 'sound/machines/mining/smelter.ogg' + +/obj/machinery/bouldertech/refinery/smelter/RefreshParts() + . = ..() + light_power = boulders_processing_max + +/obj/machinery/bouldertech/refinery/smelter/accept_boulder(obj/item/boulder/new_boulder) + . = ..() + if(.) + set_light_on(TRUE) + return TRUE + + +/obj/machinery/bouldertech/refinery/smelter/process() + . = ..() + if(. == PROCESS_KILL) + set_light_on(FALSE) + +/obj/machinery/bouldertech/refinery/process() + if(!anchored) + return PROCESS_KILL + var/stop_processing_check = FALSE + var/boulders_concurrent = boulders_processing_max ///How many boulders can we touch this process() call + for(var/obj/item/potential_boulder as anything in boulders_contained) + if(QDELETED(potential_boulder)) + boulders_contained -= potential_boulder + break + if(boulders_concurrent <= 0) + break //Try again next time + + if(istype(potential_boulder, /obj/item/processing/refined_dust)) + refine_dust(potential_boulder) + + if(!istype(potential_boulder, /obj/item/boulder) && !istype(potential_boulder, /obj/item/processing/refined_dust)) + potential_boulder.forceMove(drop_location()) + CRASH("\The [src] had a non-boulder in it's boulders contained!") + + var/obj/item/boulder/boulder = potential_boulder + if(boulder.durability < 0) + CRASH("\The [src] had a boulder with negative durability!") + if(!check_for_processable_materials(boulder.custom_materials)) //Checks for any new materials we can process. + boulders_concurrent-- //We count skipped boulders + remove_boulder(boulder) + continue + boulders_concurrent-- + boulder.durability-- //One less durability to the processed boulder. + if(COOLDOWN_FINISHED(src, sound_cooldown)) + COOLDOWN_START(src, sound_cooldown, 1.5 SECONDS) + playsound(loc, usage_sound, 29, FALSE, SHORT_RANGE_SOUND_EXTRARANGE) //This can get annoying. One play per process() call. + stop_processing_check = TRUE + if(boulder.durability <= 0) + breakdown_boulder(boulder) //Crack that bouwlder open! + continue + if(!stop_processing_check) + playsound(src.loc, 'sound/machines/ping.ogg', 50, FALSE) + return PROCESS_KILL + +/obj/machinery/bouldertech/refinery/proc/refine_dust(obj/item/processing/refined_dust/dust) + use_power(BASE_MACHINE_ACTIVE_CONSUMPTION) + var/list/processable_ores = list() + for(var/datum/material/possible_mat as anything in dust.custom_materials) + if(!is_type_in_list(possible_mat, processable_materials)) + continue + var/quantity = dust.custom_materials[possible_mat] + points_held = round((points_held + (quantity * possible_mat.points_per_unit * MINING_POINT_MACHINE_MULTIPLIER))) // put point total here into machine + processable_ores += possible_mat + processable_ores[possible_mat] = quantity + dust.custom_materials -= possible_mat //Remove it from the boulder now that it's tracked + + var/obj/item/boulder/disposable_boulder = new (src) + disposable_boulder.custom_materials = processable_ores + silo_materials.mat_container.insert_item(disposable_boulder, refining_efficiency) + qdel(dust) + playsound(loc, 'sound/weapons/drill.ogg', 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) + update_boulder_count() + +/obj/machinery/bouldertech/refinery/CanAllowThrough(atom/movable/mover, border_dir) + if(!anchored) + return FALSE + if(boulders_contained.len >= boulders_held_max) + return FALSE + if(istype(mover, /obj/item/processing/refined_dust)) + return TRUE + return ..() + +/obj/machinery/bouldertech/refinery/return_extras() + var/list/boulders_contained = list() + for(var/obj/item/processing/refined_dust/boulder in contents) + boulders_contained += boulder + return boulders_contained + +/obj/machinery/bouldertech/refinery/check_extras(obj/item/item) + if(istype(item, /obj/item/processing/refined_dust)) + return TRUE + return FALSE diff --git a/monkestation/code/modules/factory_type_beat/readme.md b/monkestation/code/modules/factory_type_beat/readme.md new file mode 100644 index 000000000000..6c08a3c4a8fc --- /dev/null +++ b/monkestation/code/modules/factory_type_beat/readme.md @@ -0,0 +1 @@ +This also contains the base arcmining stuff in the modular folder as its gonna get real messy diff --git a/monkestation/code/modules/factory_type_beat/ss_ore_gen.dm b/monkestation/code/modules/factory_type_beat/ss_ore_gen.dm new file mode 100644 index 000000000000..54ca83428730 --- /dev/null +++ b/monkestation/code/modules/factory_type_beat/ss_ore_gen.dm @@ -0,0 +1,94 @@ + +SUBSYSTEM_DEF(ore_generation) + name = "Ore Generation" + wait = 60 SECONDS + init_order = INIT_ORDER_DEFAULT + runlevels = RUNLEVEL_GAME + + /// All ore vents that are currently producing boulders. + var/list/obj/structure/ore_vent/processed_vents = list() + /// All the ore vents that are currently in the game, not just the ones that are producing boulders. + var/list/obj/structure/ore_vent/possible_vents = list() + /// All the boulders that have been produced by ore vents to be pulled by BRM machines. + var/list/obj/item/boulder/available_boulders = list() + /** + * Associated list of minerals to be associated with our ore vents. + * Generally Should be empty by the time initialize ends on lavaland. + * Each key value is the number of vents that will have this ore as a unique possible choice. + */ + var/static/list/ore_vent_minerals_default = list( + /datum/material/iron = 13, + /datum/material/glass = 12, + /datum/material/plasma = 9, + /datum/material/titanium = 6, + /datum/material/silver = 5, + /datum/material/gold = 5, + /datum/material/diamond = 3, + /datum/material/uranium = 3, + /datum/material/bluespace = 3, + ) + /** + * A list of all the minerals that are being mined by ore vents. We reset this list every time cave generation is done. + * Generally Should be empty by the time initialize ends on lavaland. + * Each key value is the number of vents that will have this ore as a unique possible choice. + * If we call cave_generation more than once, we copy a list from the lists in lists/ores_spawned.dm + */ + var/list/ore_vent_minerals = list() + + /// A tracker of how many of each ore vent size we have in the game. Useful for tracking purposes. + var/list/ore_vent_sizes = list( + LARGE_VENT_TYPE = 0, + MEDIUM_VENT_TYPE = 0, + SMALL_VENT_TYPE = 0, + ) + /// Ores spawned by proximity to an ore vent. Useful for logging purposes. + var/list/post_ore_random = list( + "1" = 0, + "2" = 0, + "3" = 0, + "4" = 0, + "5" = 0, + ) + /// Ores spawned randomly on the map without proximity to an ore vent. Useful for logging purposes. + var/list/post_ore_manual = list( + "1" = 0, + "2" = 0, + "3" = 0, + "4" = 0, + "5" = 0, + ) + +/datum/controller/subsystem/ore_generation/Initialize() + //Basically, we're going to round robin through the list of ore vents and assign a mineral to them until complete. + while(length(ore_vent_minerals) > 0) //Keep looping if there's more to assign + var/stallbreaker = 0 + for(var/obj/structure/ore_vent/vent as anything in possible_vents) + if(length(ore_vent_minerals) <= 0) //But break early if there's none left. + break + if(vent.unique_vent) + continue //Ya'll already got your minerals. + if(length(difflist(first = ore_vent_minerals, second = vent.mineral_breakdown, skiprep = 1))) + vent.generate_mineral_breakdown(new_minerals = 1, map_loading = TRUE) + else + stallbreaker++ + if(stallbreaker >= length(possible_vents)) + break //We've done all we can here. break inner loop + continue + if(stallbreaker >= length(possible_vents)) + break //We've done all we can here. break outer loop + + return SS_INIT_SUCCESS + +/datum/controller/subsystem/ore_generation/fire(resumed) + available_boulders.Cut() // reset upon new fire. + for(var/obj/structure/ore_vent/current_vent as anything in processed_vents) + + var/local_vent_count = 0 + for(var/obj/item/boulder/old_rock in current_vent.loc) + available_boulders += old_rock + local_vent_count++ + + if(local_vent_count >= MAX_BOULDERS_PER_VENT) + continue //We don't want to be accountable for literally hundreds of unprocessed boulders for no reason. + + available_boulders += current_vent.produce_boulder() diff --git a/monkestation/code/modules/factory_type_beat/technodes.dm b/monkestation/code/modules/factory_type_beat/technodes.dm new file mode 100644 index 000000000000..27557f460ed2 --- /dev/null +++ b/monkestation/code/modules/factory_type_beat/technodes.dm @@ -0,0 +1,18 @@ +/datum/techweb_node/ore_processing + id = "ore_processing_nodes" + display_name = "Ore Processing Nodes" + description = "Contains all of the ore processing designs." + design_ids = list( + "brine_chamber", + "purification_chamber", + "enricher", + "crusher", + "crystalizer", + "chemical_injector", + "chemical_washer", + "dissolution_chamber", + ) + research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 5000000000000000) // God save you + hidden = TRUE + show_on_wiki = FALSE + starting_node = TRUE diff --git a/monkestation/code/modules/factory_type_beat/yummy.dm b/monkestation/code/modules/factory_type_beat/yummy.dm new file mode 100644 index 000000000000..248f1507b34f --- /dev/null +++ b/monkestation/code/modules/factory_type_beat/yummy.dm @@ -0,0 +1,17 @@ +/obj/item/organ/internal/cyberimp/chest/gyro + name = "Gyrotron-3000" + desc = "Blood sweat and tears went into this bad boy." + encode_info = AUGMENT_NO_REQ + icon_state = "sandy" + actions_types = list(/datum/action/item_action/organ_action/sandy) + icon = 'monkestation/code/modules/cybernetics/icons/implants.dmi' + + /// The bodypart overlay datum we should apply to whatever mob we are put into + visual_implant = TRUE + bodypart_overlay = /datum/bodypart_overlay/simple/gyro + + +/datum/bodypart_overlay/simple/gyro + icon = 'monkestation/code/modules/factory_type_beat/icons/mining_machines.dmi' + icon_state = "gyrotron-3000" + layers = EXTERNAL_FRONT diff --git a/monkestation/code/modules/ghost_critters/ghost_critter_mobs/donator_mobs.dm b/monkestation/code/modules/ghost_critters/ghost_critter_mobs/donator_mobs.dm index d655ba9db7f9..0c852b29ef40 100644 --- a/monkestation/code/modules/ghost_critters/ghost_critter_mobs/donator_mobs.dm +++ b/monkestation/code/modules/ghost_critters/ghost_critter_mobs/donator_mobs.dm @@ -1,4 +1,4 @@ -/mob/living/basic/var/list/ckeywhitelist = list() +/mob/living/basic/var/list/ckeywhitelist /client/proc/return_donator_mobs() var/list/mobs = list( diff --git a/monkestation/code/modules/loadouts/items/neck.dm b/monkestation/code/modules/loadouts/items/neck.dm index 983b4245e2a8..99825e818760 100644 --- a/monkestation/code/modules/loadouts/items/neck.dm +++ b/monkestation/code/modules/loadouts/items/neck.dm @@ -289,12 +289,12 @@ GLOBAL_LIST_INIT(loadout_necks, generate_loadout_items(/datum/loadout_item/neck) restricted_roles = list(JOB_HEAD_OF_SECURITY) requires_purchase = FALSE -/* + /datum/loadout_item/neck/mantle_bs name = "Blueshield's Mantle" item_path = /obj/item/clothing/neck/mantle/bsmantle restricted_roles = list(JOB_BLUESHIELD) -*/ + /datum/loadout_item/neck/mantle_cap name = "Captain's Mantle" item_path = /obj/item/clothing/neck/mantle/capmantle diff --git a/monkestation/code/modules/mech_comp/objects/flush.dm b/monkestation/code/modules/mech_comp/objects/flush.dm index 649208b3810a..8aa0672df51f 100644 --- a/monkestation/code/modules/mech_comp/objects/flush.dm +++ b/monkestation/code/modules/mech_comp/objects/flush.dm @@ -27,6 +27,11 @@ trunk_check() if(!trunk || !COOLDOWN_FINISHED(src, flush_cd) || !input?.cmd) return + + if(QDELETED(trunk)) + trunk = null + return + var/count = 0 for(var/atom/movable/listed_movable in src.loc) if(listed_movable.anchored) diff --git a/monkestation/code/modules/mech_comp/objects/messages/button.dm b/monkestation/code/modules/mech_comp/objects/messages/button.dm index 2d6b169339d7..9dac64079b44 100644 --- a/monkestation/code/modules/mech_comp/objects/messages/button.dm +++ b/monkestation/code/modules/mech_comp/objects/messages/button.dm @@ -21,6 +21,8 @@ if(!user.dropItemToGround(src)) return + if(!user.CanReach(target)) + return forceMove(target) if(isclosedturf(target)) icon_up = "comp_switch" diff --git a/monkestation/code/modules/mob/dead/new_player/new_player.dm b/monkestation/code/modules/mob/dead/new_player/new_player.dm index 5f6d6cb8d5c0..ff657817d278 100644 --- a/monkestation/code/modules/mob/dead/new_player/new_player.dm +++ b/monkestation/code/modules/mob/dead/new_player/new_player.dm @@ -1,3 +1,8 @@ /mob/dead/new_player /// What is our temp assignment, used for round start antag calculation var/datum/job/temp_assignment + +/mob/dead/new_player/Destroy() + . = ..() + if(temp_assignment) + temp_assignment = null diff --git a/monkestation/code/modules/patches_if_they_were_cool/_base_patch_changes.dm b/monkestation/code/modules/patches_if_they_were_cool/_base_patch_changes.dm index 2271f350f103..0d831130c7d9 100644 --- a/monkestation/code/modules/patches_if_they_were_cool/_base_patch_changes.dm +++ b/monkestation/code/modules/patches_if_they_were_cool/_base_patch_changes.dm @@ -17,8 +17,9 @@ if(!isliving(target)) return - if(!do_after(user, CHEM_INTERACT_DELAY(0.1 SECONDS, user), target)) - return + if(target != user) + if(!do_after(user, CHEM_INTERACT_DELAY(3 SECONDS, user), target)) + return var/list/parameters = params2list(params) if(!LAZYACCESS(parameters, ICON_X) || !LAZYACCESS(parameters, ICON_Y)) @@ -62,8 +63,9 @@ /obj/item/reagent_containers/pill/patch/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) . = ..() - if(!. && prob(15) && isliving(hit_atom)) - stick(hit_atom,rand(-7,7),rand(-7,7)) + if(!. && prob(10) && isliving(hit_atom)) + stick(hit_atom, throwingdatum.thrower, rand(-7,7), rand(-7,7)) + to_chat(attached, span_bolddanger("[src] has stuck to you.")) attached.balloon_alert_to_viewers("[src] lands on its sticky side!") ///Signal handler for COMSIG_LIVING_IGNITED, deletes this patch, if it is flammable diff --git a/monkestation/code/modules/physics/physics_component.dm b/monkestation/code/modules/physics/physics_component.dm index 185718e92802..c36ea828065d 100644 --- a/monkestation/code/modules/physics/physics_component.dm +++ b/monkestation/code/modules/physics/physics_component.dm @@ -64,6 +64,8 @@ var/datum/callback/bounce_callback /// If we have this callback, it gets invoked when stopping movement var/datum/callback/stop_callback + /// If we have this callback, it gets invoked when bumping on another atom + var/datum/callback/bump_callback /** * The cached animate_movement of the parent @@ -94,6 +96,7 @@ bounce_spin_clockwise = 0, bounce_sound, bounce_callback, + bump_callback, stop_callback, ) if(!ismovable(parent)) @@ -118,6 +121,7 @@ src.bounce_spin_clockwise = bounce_spin_clockwise src.bounce_sound = bounce_sound src.bounce_callback = bounce_callback + src.bump_callback = bump_callback src.stop_callback = stop_callback set_angle(angle) @@ -128,6 +132,7 @@ return ..() /datum/component/movable_physics/RegisterWithParent() + RegisterSignal(parent, COMSIG_MOVABLE_NEWTONIAN_MOVE, PROC_REF(on_newtonian_move)) RegisterSignal(parent, COMSIG_MOVABLE_BUMP, PROC_REF(on_bump)) if(isitem(parent)) RegisterSignal(parent, COMSIG_ITEM_PICKUP, PROC_REF(on_item_pickup)) @@ -158,22 +163,28 @@ //this code basically only makes sense if we only move at most a single tile per tick, it is absolutely fucked otherwise while(tick_amount > 0) tick_amount-- + //we need to know if we have gravity right now to apply friction and such, yeah + var/has_gravity = moving_atom.has_gravity() + moving_atom.pixel_x = round(moving_atom.pixel_x + (horizontal_velocity * sin(angle)), MOVABLE_PHYSICS_PRECISION) moving_atom.pixel_y = round(moving_atom.pixel_y + (horizontal_velocity * cos(angle)), MOVABLE_PHYSICS_PRECISION) - moving_atom.pixel_z = round(max(z_floor, moving_atom.pixel_z + vertical_velocity), MOVABLE_PHYSICS_PRECISION) + moving_atom.pixel_z = round(clamp(moving_atom.pixel_z + vertical_velocity, z_floor, world.icon_size), MOVABLE_PHYSICS_PRECISION) moving_atom.adjust_visual_angle(round(visual_angle_velocity, 1)) - horizontal_velocity = max(0, horizontal_velocity - horizontal_friction) - // we are not on the floor, apply friction - if(moving_atom.pixel_z > z_floor) - vertical_velocity -= vertical_friction - // we are on the floor, try to bounce if we have any vertical velocity - else if(moving_atom.pixel_z <= z_floor && vertical_velocity) - z_floor_bounce(moving_atom) - - visual_angle_velocity = max(0, visual_angle_velocity - visual_angle_friction) + if(has_gravity) + visual_angle_velocity = max(0, visual_angle_velocity - visual_angle_friction) + horizontal_velocity = max(0, horizontal_velocity - horizontal_friction) + // we are not on the floor, apply friction + if(moving_atom.pixel_z > z_floor) + vertical_velocity -= vertical_friction + // we are on the floor, try to bounce if we have any vertical velocity + else if(moving_atom.pixel_z <= z_floor && vertical_velocity) + z_floor_bounce(moving_atom) + // z_floor_bounce could have deleted us + if(QDELETED(src)) + return var/move_direction = NONE var/effective_pixel_x = moving_atom.pixel_x - moving_atom.base_pixel_x @@ -257,6 +268,12 @@ /datum/component/movable_physics/proc/set_angle(new_angle) angle = SIMPLIFY_DEGREES(new_angle) +/// We do not EVER want newtonian movement while handling movement ourselves, so block it! +/datum/component/movable_physics/proc/on_newtonian_move(atom/movable/source, direction, start_delay) + SIGNAL_HANDLER + + return COMPONENT_MOVABLE_NEWTONIAN_BLOCK + /// Proc for bouncing, aka object reached z_floor on pixel_z and needs a dose of Newton's third law /datum/component/movable_physics/proc/z_floor_bounce(atom/movable/moving_atom) moving_atom.pixel_z = round(z_floor, MOVABLE_PHYSICS_PRECISION) @@ -276,6 +293,8 @@ var/incidence = GET_ANGLE_OF_INCIDENCE(face_angle, angle + 180) var/new_angle = SIMPLIFY_DEGREES(face_angle + incidence) set_angle(new_angle) + if(bump_callback) + bump_callback.Invoke(bumped_atom) if(!visual_angle_velocity) return incidence = GET_ANGLE_OF_INCIDENCE(face_angle, source.visual_angle + 180) diff --git a/monkestation/code/modules/pollution/pollution_emitter_element.dm b/monkestation/code/modules/pollution/pollution_emitter_element.dm index 69e5ea083da4..d886bd391709 100644 --- a/monkestation/code/modules/pollution/pollution_emitter_element.dm +++ b/monkestation/code/modules/pollution/pollution_emitter_element.dm @@ -35,4 +35,4 @@ PROCESSING_SUBSYSTEM_DEF(pollution_emitters) return PROCESS_KILL for(var/atom/affected_atom as anything in affected) var/turf/my_turf = get_turf(affected_atom) - my_turf.pollute_turf(pollutant_type, pollutant_amount) + my_turf?.pollute_turf(pollutant_type, pollutant_amount) diff --git a/monkestation/code/modules/reagents/chemistry/reagents/other_reagents.dm b/monkestation/code/modules/reagents/chemistry/reagents/other_reagents.dm index 6fd26f35b908..2862da172fb7 100644 --- a/monkestation/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/monkestation/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -9,8 +9,8 @@ /datum/reagent/acetone_oxide/expose_mob(mob/living/exposed_mob, methods=TOUCH, reac_volume)//Splashing people kills people! . = ..() if(methods & TOUCH | VAPOR | INGEST) - exposed_mob.adjustFireLoss(((reac_volume * 2) / 1.65)) - exposed_mob.adjust_fire_stacks((reac_volume / 5)) + exposed_mob.adjustFireLoss(min((reac_volume * 0.5) / 1.65, 25)) + exposed_mob.adjust_fire_stacks(round(reac_volume / 50)) /datum/reagent/acetone_oxide/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired) // Old acetone oxide didn't have a metabolism effect! . = ..() @@ -58,7 +58,7 @@ /datum/reagent/hydrogen_peroxide/expose_mob(mob/living/exposed_mob, methods=TOUCH, reac_volume)//Splashing people with h2o2 can burn them ! . = ..() if(methods & TOUCH) - exposed_mob.adjustFireLoss(((reac_volume * 2) / 3)) + exposed_mob.adjustFireLoss(min((reac_volume * 0.5) / 3, 25)) /datum/reagent/hydrogen_peroxide/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired) // Old h2o2 didn't have a metabolizing effect either! . = ..() diff --git a/monkestation/code/modules/smithing/ipcs/species.dm b/monkestation/code/modules/smithing/ipcs/species.dm index 101eef01e94f..00af82672889 100644 --- a/monkestation/code/modules/smithing/ipcs/species.dm +++ b/monkestation/code/modules/smithing/ipcs/species.dm @@ -22,7 +22,6 @@ TRAIT_LIMBATTACHMENT, TRAIT_LITERATE, TRAIT_REVIVES_BY_HEALING, - TRAIT_NOCRITDAMAGE, // We do our own handling of crit damage. TRAIT_NO_DNA_COPY, ) @@ -71,6 +70,7 @@ BODY_ZONE_R_LEG = /obj/item/bodypart/leg/right/robot/ipc, ) + brutemod = 1.5 coldmod = 1.2 heatmod = 2 // TWO TIMES DAMAGE FROM BEING TOO HOT?! WHAT?! No wonder lava is literal instant death for us. siemens_coeff = 1.4 // Not more because some shocks will outright crit you, which is very unfun diff --git a/monkestation/code/modules/smithing/oozelings/species.dm b/monkestation/code/modules/smithing/oozelings/species.dm index b71c429b98de..ad0e7ada02dc 100644 --- a/monkestation/code/modules/smithing/oozelings/species.dm +++ b/monkestation/code/modules/smithing/oozelings/species.dm @@ -105,6 +105,7 @@ if(core_signal) core_signal.Remove(C) ..() + C.blood_volume = BLOOD_VOLUME_SAFE /datum/species/oozeling/on_species_gain(mob/living/carbon/C, datum/species/old_species) ..() diff --git a/monkestation/code/modules/storytellers/converted_events/solo/bloodcult.dm b/monkestation/code/modules/storytellers/converted_events/solo/bloodcult.dm index 700957dff6c6..cbf469a3fb3c 100644 --- a/monkestation/code/modules/storytellers/converted_events/solo/bloodcult.dm +++ b/monkestation/code/modules/storytellers/converted_events/solo/bloodcult.dm @@ -8,6 +8,7 @@ restricted_roles = list( JOB_AI, JOB_CAPTAIN, + JOB_BLUESHIELD, JOB_CHAPLAIN, JOB_CYBORG, JOB_DETECTIVE, diff --git a/monkestation/code/modules/storytellers/converted_events/solo/bloodsuckers.dm b/monkestation/code/modules/storytellers/converted_events/solo/bloodsuckers.dm index 1bdf4c177a0a..30ec0ef49fbf 100644 --- a/monkestation/code/modules/storytellers/converted_events/solo/bloodsuckers.dm +++ b/monkestation/code/modules/storytellers/converted_events/solo/bloodsuckers.dm @@ -4,6 +4,7 @@ antag_datum = /datum/antagonist/bloodsucker protected_roles = list( JOB_CAPTAIN, + JOB_BLUESHIELD, JOB_HEAD_OF_PERSONNEL, JOB_CHIEF_ENGINEER, JOB_CHIEF_MEDICAL_OFFICER, diff --git a/monkestation/code/modules/storytellers/converted_events/solo/brother.dm b/monkestation/code/modules/storytellers/converted_events/solo/brother.dm index a2413bc3e608..90a6f492aba0 100644 --- a/monkestation/code/modules/storytellers/converted_events/solo/brother.dm +++ b/monkestation/code/modules/storytellers/converted_events/solo/brother.dm @@ -5,6 +5,7 @@ tags = list(TAG_COMBAT, TAG_TEAM_ANTAG) protected_roles = list( JOB_CAPTAIN, + JOB_BLUESHIELD, JOB_HEAD_OF_PERSONNEL, JOB_CHIEF_ENGINEER, JOB_CHIEF_MEDICAL_OFFICER, diff --git a/monkestation/code/modules/storytellers/converted_events/solo/changeling.dm b/monkestation/code/modules/storytellers/converted_events/solo/changeling.dm index 39e9d605a7e4..f198a7b2e85b 100644 --- a/monkestation/code/modules/storytellers/converted_events/solo/changeling.dm +++ b/monkestation/code/modules/storytellers/converted_events/solo/changeling.dm @@ -4,6 +4,7 @@ antag_datum = /datum/antagonist/changeling protected_roles = list( JOB_CAPTAIN, + JOB_BLUESHIELD, JOB_HEAD_OF_PERSONNEL, JOB_CHIEF_ENGINEER, JOB_CHIEF_MEDICAL_OFFICER, diff --git a/monkestation/code/modules/storytellers/converted_events/solo/clockwork_cult.dm b/monkestation/code/modules/storytellers/converted_events/solo/clockwork_cult.dm index 3f7475364bc1..d61c09ddfe94 100644 --- a/monkestation/code/modules/storytellers/converted_events/solo/clockwork_cult.dm +++ b/monkestation/code/modules/storytellers/converted_events/solo/clockwork_cult.dm @@ -8,6 +8,7 @@ restricted_roles = list( JOB_AI, JOB_CAPTAIN, + JOB_BLUESHIELD, JOB_CHAPLAIN, JOB_CYBORG, JOB_DETECTIVE, diff --git a/monkestation/code/modules/storytellers/converted_events/solo/clown_operative.dm b/monkestation/code/modules/storytellers/converted_events/solo/clown_operative.dm index dc86d98cb9b9..65950c93feca 100644 --- a/monkestation/code/modules/storytellers/converted_events/solo/clown_operative.dm +++ b/monkestation/code/modules/storytellers/converted_events/solo/clown_operative.dm @@ -8,6 +8,7 @@ restricted_roles = list( JOB_AI, JOB_CAPTAIN, + JOB_BLUESHIELD, JOB_CHIEF_ENGINEER, JOB_CHIEF_MEDICAL_OFFICER, JOB_CYBORG, diff --git a/monkestation/code/modules/storytellers/converted_events/solo/ghosts/nuclear_operative_ghost.dm b/monkestation/code/modules/storytellers/converted_events/solo/ghosts/nuclear_operative_ghost.dm index e9271d387ba0..54ed3b23756c 100644 --- a/monkestation/code/modules/storytellers/converted_events/solo/ghosts/nuclear_operative_ghost.dm +++ b/monkestation/code/modules/storytellers/converted_events/solo/ghosts/nuclear_operative_ghost.dm @@ -34,7 +34,7 @@ // I give up, just there should be enough heads with 35 players... min_players = 35 earliest_start = 60 MINUTES - weight = 4 + weight = 3 max_occurrences = 1 prompted_picking = TRUE diff --git a/monkestation/code/modules/storytellers/converted_events/solo/heretic.dm b/monkestation/code/modules/storytellers/converted_events/solo/heretic.dm index 726b1a809bbf..9050bbdf1941 100644 --- a/monkestation/code/modules/storytellers/converted_events/solo/heretic.dm +++ b/monkestation/code/modules/storytellers/converted_events/solo/heretic.dm @@ -4,6 +4,7 @@ antag_datum = /datum/antagonist/heretic protected_roles = list( JOB_CAPTAIN, + JOB_BLUESHIELD, JOB_HEAD_OF_PERSONNEL, JOB_CHIEF_ENGINEER, JOB_CHIEF_MEDICAL_OFFICER, diff --git a/monkestation/code/modules/storytellers/converted_events/solo/monsterhunter.dm b/monkestation/code/modules/storytellers/converted_events/solo/monsterhunter.dm index 52f7647ae515..01441f7a84b5 100644 --- a/monkestation/code/modules/storytellers/converted_events/solo/monsterhunter.dm +++ b/monkestation/code/modules/storytellers/converted_events/solo/monsterhunter.dm @@ -8,6 +8,7 @@ antag_datum = /datum/antagonist/monsterhunter protected_roles = list( JOB_CAPTAIN, + JOB_BLUESHIELD, JOB_HEAD_OF_PERSONNEL, JOB_CHIEF_ENGINEER, JOB_CHIEF_MEDICAL_OFFICER, diff --git a/monkestation/code/modules/storytellers/converted_events/solo/nuclear_operative.dm b/monkestation/code/modules/storytellers/converted_events/solo/nuclear_operative.dm index f2a5a12a3e14..54685b4f4871 100644 --- a/monkestation/code/modules/storytellers/converted_events/solo/nuclear_operative.dm +++ b/monkestation/code/modules/storytellers/converted_events/solo/nuclear_operative.dm @@ -8,6 +8,7 @@ restricted_roles = list( JOB_AI, JOB_CAPTAIN, + JOB_BLUESHIELD, JOB_CHIEF_ENGINEER, JOB_CHIEF_MEDICAL_OFFICER, JOB_CYBORG, diff --git a/monkestation/code/modules/storytellers/converted_events/solo/obsessed.dm b/monkestation/code/modules/storytellers/converted_events/solo/obsessed.dm index bfb3b8294c2e..deb7b8b1e792 100644 --- a/monkestation/code/modules/storytellers/converted_events/solo/obsessed.dm +++ b/monkestation/code/modules/storytellers/converted_events/solo/obsessed.dm @@ -5,6 +5,7 @@ typepath = /datum/round_event/antagonist/solo/obsessed restricted_roles = list( JOB_CAPTAIN, + JOB_BLUESHIELD, JOB_HEAD_OF_PERSONNEL, JOB_CHIEF_ENGINEER, JOB_CHIEF_MEDICAL_OFFICER, diff --git a/monkestation/code/modules/storytellers/converted_events/solo/revolutionary.dm b/monkestation/code/modules/storytellers/converted_events/solo/revolutionary.dm index eb8fce9f4aeb..9d9b08303e61 100644 --- a/monkestation/code/modules/storytellers/converted_events/solo/revolutionary.dm +++ b/monkestation/code/modules/storytellers/converted_events/solo/revolutionary.dm @@ -8,6 +8,7 @@ restricted_roles = list( JOB_AI, JOB_CAPTAIN, + JOB_BLUESHIELD, JOB_CHIEF_ENGINEER, JOB_CHIEF_MEDICAL_OFFICER, JOB_CYBORG, diff --git a/monkestation/code/modules/storytellers/converted_events/solo/traitor.dm b/monkestation/code/modules/storytellers/converted_events/solo/traitor.dm index 58ed6dd76653..ede797b7be16 100644 --- a/monkestation/code/modules/storytellers/converted_events/solo/traitor.dm +++ b/monkestation/code/modules/storytellers/converted_events/solo/traitor.dm @@ -4,6 +4,7 @@ antag_datum = /datum/antagonist/traitor/infiltrator protected_roles = list( JOB_CAPTAIN, + JOB_BLUESHIELD, JOB_HEAD_OF_PERSONNEL, JOB_CHIEF_ENGINEER, JOB_CHIEF_MEDICAL_OFFICER, diff --git a/monkestation/code/modules/storytellers/converted_events/solo/wizard.dm b/monkestation/code/modules/storytellers/converted_events/solo/wizard.dm index 70e042c70f47..b0426a0191c8 100644 --- a/monkestation/code/modules/storytellers/converted_events/solo/wizard.dm +++ b/monkestation/code/modules/storytellers/converted_events/solo/wizard.dm @@ -7,6 +7,7 @@ shared_occurence_type = SHARED_HIGH_THREAT restricted_roles = list( JOB_CAPTAIN, + JOB_BLUESHIELD, JOB_HEAD_OF_SECURITY, ) // Just to be sure that a wizard getting picked won't ever imply a Captain or HoS not getting drafted maximum_antags = 1 diff --git a/monkestation/code/modules/trading/unusual_effects/animation_housing/__spawning_component.dm b/monkestation/code/modules/trading/unusual_effects/animation_housing/__spawning_component.dm index 9ccf5603098c..a7d1df45c69a 100644 --- a/monkestation/code/modules/trading/unusual_effects/animation_housing/__spawning_component.dm +++ b/monkestation/code/modules/trading/unusual_effects/animation_housing/__spawning_component.dm @@ -6,6 +6,8 @@ mouse_opacity = MOUSE_OPACITY_TRANSPARENT icon = 'monkestation/code/modules/trading/icons/particles.dmi' icon_state = "none" + underlays = null + overlays = null /datum/component/particle_spewer var/atom/source_object @@ -117,7 +119,8 @@ for(var/i = 0 to burstees) //create and assign particle its stuff - var/obj/effect/abstract/particle/spawned = new(get_turf(source_object)) + var/obj/effect/abstract/particle/spawned + spawned = new(get_turf(source_object)) if(offsets) spawned.pixel_x = offset_x spawned.pixel_y = offset_y diff --git a/monkestation/code/modules/trading/unusual_effects/animation_housing/money.dm b/monkestation/code/modules/trading/unusual_effects/animation_housing/money.dm new file mode 100644 index 000000000000..baacfb56682b --- /dev/null +++ b/monkestation/code/modules/trading/unusual_effects/animation_housing/money.dm @@ -0,0 +1,38 @@ +/datum/component/particle_spewer/cash + unusual_description = "cashflow" + icon_file = 'icons/obj/economy.dmi' + particle_state = "spacecash1" + burst_amount = 1 + duration = 2 SECONDS + random_bursts = TRUE + spawn_interval = 6 SECONDS + +/datum/component/particle_spewer/cash/animate_particle(obj/effect/abstract/particle/spawned) + var/chance = rand(1, 10) + switch(chance) + if(1 to 2) + spawned.icon_state = "spacecash1" + if(3 to 4) + spawned.icon_state = "spacecash10" + if(5 to 6) + spawned.icon_state = "spacecash50" + else + spawned.icon_state = "spacecash20" + + if(prob(65)) + spawned.layer = LOW_ITEM_LAYER + spawned.pixel_x += rand(-12, 12) + spawned.pixel_y += rand(-5, 5) + . = ..() + +/datum/component/particle_spewer/cash/adjust_animate_steps() + animate_holder.add_animation_step(list(transform = matrix(0.5, 0.5, MATRIX_SCALE), alpha = 125, time = 0)) + + animate_holder.add_animation_step(list(transform = "RANDOM", time = 2 SECONDS, pixel_y = "RANDOM", pixel_x = "RANDOM", easing = LINEAR_EASING)) + + animate_holder.set_random_var(2, "transform", list(-90, 90)) + animate_holder.set_random_var(2, "pixel_x", list(-16, 16)) + animate_holder.set_random_var(2, "pixel_y", list(-16, 16)) + animate_holder.set_transform_type(2, MATRIX_ROTATE) + + animate_holder.add_animation_step(list(alpha = 25, time = 1.5 SECONDS)) diff --git a/monkestation/code/modules/virology/disease/plague_rat/event.dm b/monkestation/code/modules/virology/disease/plague_rat/event.dm index 6217eb8d8d10..9ed00b05632a 100644 --- a/monkestation/code/modules/virology/disease/plague_rat/event.dm +++ b/monkestation/code/modules/virology/disease/plague_rat/event.dm @@ -1,11 +1,11 @@ /datum/round_event_control/plague_rat name = "Spawn Plague Rats" typepath = /datum/round_event/ghost_role/plague_rat - weight = 7 + weight = 1 max_occurrences = 1 track = EVENT_TRACK_MAJOR min_players = 30 //monke edit: 20 to 30 - earliest_start = 30 MINUTES //monke edit: 20 to 60 + earliest_start = 55 MINUTES //monke edit: 20 to 60 //dynamic_should_hijack = TRUE category = EVENT_CATEGORY_ENTITIES description = "Spawns a horde of plague rats." diff --git a/monkestation/code/modules/virology/disease/plague_rat/plague_rat.dm b/monkestation/code/modules/virology/disease/plague_rat/plague_rat.dm index 4375985d7f24..74f945c91f25 100644 --- a/monkestation/code/modules/virology/disease/plague_rat/plague_rat.dm +++ b/monkestation/code/modules/virology/disease/plague_rat/plague_rat.dm @@ -6,9 +6,17 @@ icon_living = "mouse_plague" icon_dead = "mouse_plague_dead" + maxHealth = 30 + health = 30 + melee_damage_lower = 4 melee_damage_upper = 7 chooses_bodycolor = FALSE + pass_flags = PASSTABLE|PASSGRILLE|PASSMOB|PASSDOORS + +/mob/living/basic/mouse/plague/Initialize(mapload, tame, new_body_color) + . = ..() + add_movespeed_modifier(/datum/movespeed_modifier/plague_rat) /mob/living/basic/mouse/plague/attack_hand(mob/living/carbon/human/user, list/modifiers) @@ -29,3 +37,6 @@ /mob/living/basic/mouse/attackby(obj/item/attacking_item, mob/living/user, params) . = ..() attacking_item.disease_contact(src, BODY_ZONE_CHEST) + +/datum/movespeed_modifier/plague_rat + multiplicative_slowdown = 0.5 diff --git a/monkestation/code/modules/virology/disease/symptom_cracker/cracker_puzzle.dm b/monkestation/code/modules/virology/disease/symptom_cracker/cracker_puzzle.dm index f5d0d7108999..0c62231805fe 100644 --- a/monkestation/code/modules/virology/disease/symptom_cracker/cracker_puzzle.dm +++ b/monkestation/code/modules/virology/disease/symptom_cracker/cracker_puzzle.dm @@ -17,6 +17,8 @@ var/datum/parent + var/list/plotted_points = list() + /datum/cracker_puzzle/New(grid_size = 5, difficulty = 1, datum/parent) src.grid_size = grid_size src.difficulty = difficulty @@ -47,37 +49,23 @@ var/sequence_length = 4 + difficulty - var/last_sequence_spot = null - var/last_vertical_sequence_spot = null + var/last_sequence_spot = rand(1, grid_size) + var/last_vertical_sequence_spot = rand(1, grid_size) var/vertical = FALSE for(var/i = 1 to sequence_length) if(vertical) - var/vertical_spot = rand(1, grid_size) - var/list/horizontal_cut = grid[vertical_spot] - sequence += horizontal_cut[last_vertical_sequence_spot] - var/horizontal_choice = rand(1, grid_size) - last_sequence_spot = horizontal_choice - - vertical = FALSE - + var/vertical_spot = rand(1, grid_size) // Random row (y-coordinate) + var/list/horizontal_cut_vert = grid[vertical_spot] // Get the row corresponding to vertical_spot + sequence += horizontal_cut_vert[last_sequence_spot] // Use the last x-coordinate to select the letter + last_vertical_sequence_spot = vertical_spot // Update the y-coordinate + plotted_points += "[last_sequence_spot], [last_vertical_sequence_spot]" // Log the coordinate pair + vertical = FALSE // Switch to horizontal for the next iteration else - if(!last_sequence_spot) - ///grabs the horizontal slice of the grid - var/horizontal_spot = rand(1, grid_size) - var/list/horizontal_cut = grid[horizontal_spot] - - last_sequence_spot = horizontal_spot //sets the last slice position - - var/vertical_spot = rand(1, grid_size)// we randomize the selection inside the slice - sequence += horizontal_cut[vertical_spot] - last_vertical_sequence_spot = vertical_spot //set the last vertical spot to this - else - var/list/choices = grid[last_sequence_spot] - var/grid_selection = rand(1, grid_size) - last_vertical_sequence_spot = grid_selection - sequence += choices[grid_selection] - - vertical = TRUE + var/horizontal_spot = rand(1, grid_size) // Random column (x-coordinate) + sequence += grid[last_vertical_sequence_spot][horizontal_spot] // Access the column in the current row + last_sequence_spot = horizontal_spot // Update the x-coordinate + plotted_points += "[last_sequence_spot], [last_vertical_sequence_spot]" // Log the coordinate pair + vertical = TRUE // Switch to vertical for the next iteration /datum/cracker_puzzle/proc/check_press(x, y) diff --git a/monkestation/code/modules/virology/disease/symptom_varients/base.dm b/monkestation/code/modules/virology/disease/symptom_varients/base.dm index 88e3615cef15..8a431f328336 100644 --- a/monkestation/code/modules/virology/disease/symptom_varients/base.dm +++ b/monkestation/code/modules/virology/disease/symptom_varients/base.dm @@ -46,5 +46,5 @@ COOLDOWN_START(src, host_cooldown, cooldown_time) /datum/symptom_varient/proc/Copy(datum/symptom/new_symp) - var/datum/symptom_varient/new_varient = new (new_symp) + var/datum/symptom_varient/new_varient = new new_symp return new_varient diff --git a/monkestation/code/modules/virology/disease/symtoms/restricted/stage3.dm b/monkestation/code/modules/virology/disease/symtoms/restricted/stage3.dm index 1fd8e9e54005..ebdd77b0cc58 100644 --- a/monkestation/code/modules/virology/disease/symtoms/restricted/stage3.dm +++ b/monkestation/code/modules/virology/disease/symtoms/restricted/stage3.dm @@ -45,7 +45,7 @@ if(prob(1)) mob.emote("drool") if(prob(1.5)) - mob.adjustCloneLoss(1, FALSE) + mob.adjustToxLoss(1, FALSE) if(prob(1)) to_chat(mob, span_danger("Your skin feels strange.")) @@ -56,7 +56,7 @@ mob.emote("drool") if(prob(2.5)) mob.adjustOrganLoss(ORGAN_SLOT_BRAIN, 1, 170) - mob.adjustCloneLoss(2, FALSE) + mob.adjustToxLoss(2, FALSE) if(prob(7.5)) mob.adjust_stutter(6 SECONDS) if(5) @@ -67,5 +67,5 @@ if(prob(2.5)) to_chat(mob, span_danger("Your skin starts degrading!")) if(prob(5)) - mob.adjustCloneLoss(5, FALSE) + mob.adjustToxLoss(5, FALSE) mob.adjustOrganLoss(ORGAN_SLOT_BRAIN, 2, 170) diff --git a/monkestation/code/modules/virology/disease/symtoms/stage2.dm b/monkestation/code/modules/virology/disease/symtoms/stage2.dm index 95136fc53d52..e00750ca7466 100644 --- a/monkestation/code/modules/virology/disease/symtoms/stage2.dm +++ b/monkestation/code/modules/virology/disease/symtoms/stage2.dm @@ -368,8 +368,8 @@ /datum/symptom/famine/activate(mob/living/mob) if(ishuman(mob)) var/mob/living/carbon/human/victim = mob - if(ispodperson(victim)) - victim.adjustCloneLoss(5 * multiplier) //Plantmen take a LOT of damag + if(ispodperson(victim)) //Plantmen take a LOT of damage + victim.adjustToxLoss(5 * multiplier) for(var/obj/item/food/grown/crop in range(2 * multiplier,mob)) crop.visible_message(span_warning("\The [crop] rots at an alarming rate!")) diff --git a/monkestation/code/modules/virology/disease/symtoms/stage3.dm b/monkestation/code/modules/virology/disease/symtoms/stage3.dm index 0086dbeb9853..05379d006233 100644 --- a/monkestation/code/modules/virology/disease/symtoms/stage3.dm +++ b/monkestation/code/modules/virology/disease/symtoms/stage3.dm @@ -65,7 +65,7 @@ GLOBAL_LIST_INIT(disease_hivemind_users, list()) var/mob/living/carbon/human/H = mob H.adjustOrganLoss(ORGAN_SLOT_BRAIN, 5, 50) else - mob.setCloneLoss(50) + mob.setToxLoss(50) /datum/symptom/hallucinations name = "Hallucinational Syndrome" @@ -451,8 +451,12 @@ GLOBAL_LIST_INIT(disease_hivemind_users, list()) desc = "Causes the infected to oversynthesize stem cells engineered towards organ generation, causing damage to the host's organs in the process. Said generated organs are expelled from the body upon completion." stage = 3 badness = EFFECT_DANGER_HARMFUL + COOLDOWN_DECLARE(organ_cooldown) /datum/symptom/teratoma/activate(mob/living/carbon/mob) + if(!COOLDOWN_FINISHED(src, organ_cooldown)) + return + COOLDOWN_START(src, organ_cooldown, 2 MINUTES) var/fail_counter = 0 var/not_passed = TRUE var/obj/item/organ/spawned_organ diff --git a/monkestation/code/modules/virology/disease/symtoms/stage4.dm b/monkestation/code/modules/virology/disease/symtoms/stage4.dm index b607c9384a1a..94354c3a3425 100644 --- a/monkestation/code/modules/virology/disease/symtoms/stage4.dm +++ b/monkestation/code/modules/virology/disease/symtoms/stage4.dm @@ -68,9 +68,9 @@ /datum/symptom/dna/activate(mob/living/carbon/mob) mob.bodytemperature = max(mob.bodytemperature, 350) - scramble_dna(mob, TRUE, TRUE, TRUE, rand(15, 45)) - if(mob.cloneloss <= 50) - mob.adjustCloneLoss(10) + scramble_dna(mob, TRUE, TRUE, TRUE, rand(15,45)) + if(mob.toxloss <= 50) + mob.adjustToxLoss(10) /datum/symptom/immortal name = "Longevity Syndrome" @@ -92,8 +92,8 @@ total_healed += heal_amt * 0.2 else total_healed += (heal_amt - current_health) * 0.2 - mob.heal_overall_damage(brute = heal_amt, burn = heal_amt, updating_health = FALSE) - mob.adjustCloneLoss(-heal_amt, updating_health = TRUE) + mob.heal_overall_damage(brute = heal_amt, burn = heal_amt) + mob.adjustToxLoss(-heal_amt) /datum/symptom/immortal/deactivate(mob/living/carbon/mob) if(ishuman(mob)) @@ -147,16 +147,28 @@ stage = 4 max_multiplier = 7 badness = EFFECT_DANGER_HARMFUL - var/spawn_type= /mob/living/basic/spider/growing/spiderling/guard - var/spawn_name="spiderling" + var/list/spawn_types= list(/mob/living/basic/spider/growing/spiderling/guard = 10) + ///what gets added based on multiplier NOT INCLUSIVE OF PREVIOUS TIERS + var/list/multipler_unlocks = list() /datum/symptom/spawn/activate(mob/living/carbon/mob) - playsound(mob.loc, 'sound/effects/splat.ogg', vol = 50, vary = TRUE) + check_unlocks() + playsound(mob.loc, 'sound/effects/splat.ogg', 50, 1) + var/atom/spawn_type = pick_weight(spawn_types) + var/spawn_name = initial(spawn_type.name) var/mob/living/spawned_mob = new spawn_type(get_turf(mob)) mob.emote("me", 1, "vomits up a live [spawn_name]!") if(multiplier < 4) addtimer(CALLBACK(src, PROC_REF(kill_mob), spawned_mob), 1 MINUTES) +/datum/symptom/spawn/proc/check_unlocks() + spawn_types = initial(spawn_types) + var/text_multi = num2text(round(multiplier)) + + if(!(text_multi in multipler_unlocks)) + return + spawn_types += multipler_unlocks[text_multi] + /datum/symptom/spawn/proc/kill_mob(mob/living/basic/mob) mob.visible_message(span_warning("The [mob] falls apart!"), span_warning("You fall apart")) mob.death() @@ -166,8 +178,13 @@ desc = "Converts the infected's stomach to begin producing creatures of the blattid variety." stage = 4 badness = EFFECT_DANGER_HINDRANCE - spawn_type = /mob/living/basic/cockroach - spawn_name = "cockroach" + spawn_types = list(/mob/living/basic/cockroach = 10) + multipler_unlocks = list( + "4" = list(/mob/living/basic/cockroach/glockroach = 3), + "5" = list(/mob/living/basic/cockroach/glockroach = 4), + "6" = list(/mob/living/basic/cockroach/glockroach = 5, /mob/living/basic/cockroach/glockroach/mobroach = 3), + "7" = list(/mob/living/basic/cockroach/glockroach = 5, /mob/living/basic/cockroach/glockroach/mobroach = 3, /mob/living/basic/cockroach/hauberoach = 3), + ) /datum/symptom/gregarious name = "Gregarious Impetus" diff --git a/monkestation/code/modules/virology/items/_base_item_additions.dm b/monkestation/code/modules/virology/items/_base_item_additions.dm index cfe80ba21362..6722945f79bc 100644 --- a/monkestation/code/modules/virology/items/_base_item_additions.dm +++ b/monkestation/code/modules/virology/items/_base_item_additions.dm @@ -5,7 +5,7 @@ GLOBAL_LIST_INIT(infected_items, list()) //how sterile an item is, not used for much atm var/sterility = 0 /obj/item - var/list/viruses = list() + var/list/viruses /obj/item/attack_hand(mob/user, list/modifiers) . = ..() diff --git a/monkestation/code/modules/virology/items/antibodyscanner.dm b/monkestation/code/modules/virology/items/antibodyscanner.dm index ec67fb48c823..8222f5bf49ee 100644 --- a/monkestation/code/modules/virology/items/antibodyscanner.dm +++ b/monkestation/code/modules/virology/items/antibodyscanner.dm @@ -154,4 +154,9 @@ var/obj/effect/abstract/blank/scan/scanline = new vis_contents += scanline - addtimer(CALLBACK(src, GLOBAL_PROC_REF(qdel), scanline), 2 SECONDS) + addtimer(CALLBACK(src, PROC_REF(remove), scanline), 2 SECONDS) + +/atom/movable/proc/remove(atom/scanline) + vis_contents -= scanline + qdel(scanline) + diff --git a/monkestation/code/modules/virology/items/extrapolator.dm b/monkestation/code/modules/virology/items/extrapolator.dm index a210c43137e4..84d7513bbbc5 100644 --- a/monkestation/code/modules/virology/items/extrapolator.dm +++ b/monkestation/code/modules/virology/items/extrapolator.dm @@ -74,18 +74,19 @@ . = ..() if(!proximity_flag && !scan) return - if(isliving(target)) + if(isliving(target) && target != usr) user_data = WEAKREF(target) if(scanner) if(!scan) if(length(stored_varient_types)) try_disease_modification(user, target) - switch(target.extrapolator_act(user, src, scan)) - if(FALSE) - if(scan) - to_chat(user, "the extrapolator fails to return any data") - if(TRUE) - to_chat(user, span_notice("You store [target]'s blood sample in [src].")) + else + switch(target.extrapolator_act(user, src, scan)) + if(FALSE) + if(scan) + to_chat(user, "the extrapolator fails to return any data") + if(TRUE) + to_chat(user, span_notice("You store [target]'s blood sample in [src].")) else to_chat(user, "the extrapolator has no scanner installed") diff --git a/monkestation/code/modules/virology/living/mouse.dm b/monkestation/code/modules/virology/living/mouse.dm index 71ba38f520bc..e1bea9307313 100644 --- a/monkestation/code/modules/virology/living/mouse.dm +++ b/monkestation/code/modules/virology/living/mouse.dm @@ -1,11 +1,15 @@ /mob/living/basic/mouse - var/disease_chance = 50 + var/disease_chance = 25 + var/diseased = TRUE + +/mob/living/basic/mouse/ratking + diseased = FALSE /mob/living/basic/mouse/Initialize(mapload, tame, new_body_color) . = ..() immune_system = new(src) - if(prob(disease_chance)) + if(prob(disease_chance) && diseased) var/virus_choice = pick(subtypesof(/datum/disease/advanced)- typesof(/datum/disease/advanced/premade)) var/list/anti = list( ANTIGEN_BLOOD = 2, @@ -23,6 +27,7 @@ ) var/datum/disease/advanced/disease = new virus_choice disease.makerandom(list(50,90),list(10,100),anti,bad,src) + disease.spread_flags &= ~DISEASE_SPREAD_AIRBORNE diseases = list() diseases += disease disease.after_add() diff --git a/monkestation/code/modules/virology/reagents/_stage_mutations.dm b/monkestation/code/modules/virology/reagents/_stage_mutations.dm index f09d300f7d55..685b44a1ff5f 100644 --- a/monkestation/code/modules/virology/reagents/_stage_mutations.dm +++ b/monkestation/code/modules/virology/reagents/_stage_mutations.dm @@ -24,12 +24,12 @@ dish.info = "OUTDATED : [dish.info]" dish.update_appearance() -/datum/reagent/toxin/plasma/plasmavirusfood/stage_disease_incubate(datum/disease/disease, list/symptoms, obj/machinery/disease2/incubator/machine) +/datum/reagent/toxin/plasma/plasmavirusfood/stage_disease_incubate(atom/movable/parent, datum/disease/disease, list/symptoms, obj/machinery/disease2/incubator/machine) disease.log += "
[ROUND_TIME()] Symptom Multiplier Increase (Virus Rations)" for(var/datum/symptom/symptom as anything in symptoms) symptom.multiplier_tweak(0.1) -/datum/reagent/medicine/antipathogenic/spaceacillin/stage_disease_incubate(datum/disease/disease, list/symptoms, obj/machinery/disease2/incubator/machine) +/datum/reagent/medicine/antipathogenic/spaceacillin/stage_disease_incubate(atom/movable/parent, datum/disease/disease, list/symptoms, obj/machinery/disease2/incubator/machine) disease.log += "
[ROUND_TIME()] Symptom Multiplier Decrease (Spaceacillin)" for(var/datum/symptom/symptom as anything in symptoms) symptom.multiplier_tweak(-0.1) diff --git a/monkestation/code/modules/virology/reagents/incubation.dm b/monkestation/code/modules/virology/reagents/incubation.dm index 362afc864361..da7ffb86fbde 100644 --- a/monkestation/code/modules/virology/reagents/incubation.dm +++ b/monkestation/code/modules/virology/reagents/incubation.dm @@ -1,7 +1,7 @@ /datum/reagent/proc/disease_incubate(atom/movable/parent, datum/disease/disease, obj/machinery/disease2/incubator/machine) return -/datum/reagent/proc/stage_disease_incubate(datum/disease/disease, list/symptoms, obj/machinery/disease2/incubator/machine) +/datum/reagent/proc/stage_disease_incubate(atom/movable/parent, datum/disease/disease, list/symptoms, obj/machinery/disease2/incubator/machine) return diff --git a/monkestation/gunning_ing/recoil.dm b/monkestation/gunning_ing/recoil.dm new file mode 100644 index 000000000000..907a7a677f18 --- /dev/null +++ b/monkestation/gunning_ing/recoil.dm @@ -0,0 +1,22 @@ +/obj/item/gun + ///a multiplier of the duration the recoil takes to go back to normal view, this is (recoil*recoil_backtime_multiplier)+1 + var/recoil_backtime_multiplier = 2 + ///this is how much deviation the gun recoil can have, recoil pushes the screen towards the reverse angle you shot + some deviation which this is the max. + var/recoil_deviation = 22.5 + +/obj/item/gun/ballistic + recoil = 1 +///Makes a recoil-like animation on the mob camera. +/proc/recoil_camera(mob/M, duration, backtime_duration, strength, angle) + if(!M || !M.client) + return + var/client/sufferer = M.client + strength *= world.icon_size + var/oldx = sufferer.pixel_x + var/oldy = sufferer.pixel_y + + //get pixels to move the camera in an angle + var/mpx = sin(angle) * strength + var/mpy = cos(angle) * strength + animate(sufferer, pixel_x = oldx+mpx, pixel_y = oldy+mpy, time = duration, flags = ANIMATION_RELATIVE) + animate(pixel_x = oldx, pixel_y = oldy, time = backtime_duration, easing = BACK_EASING) diff --git a/sound/attributions.txt b/sound/attributions.txt index 4bdcd008aa17..aaafecc9316b 100644 --- a/sound/attributions.txt +++ b/sound/attributions.txt @@ -122,3 +122,19 @@ https://freesound.org/people/vmgraw/sounds/235610/ vmgraw's "Distant Whistle" (CC 0) https://freesound.org/people/giddster/sounds/414480/ + +rock_break.ogg is taken from Bertsz's Rock Destroy from Freesound.org, CC0: +https://freesound.org/people/Bertsz/sounds/524312/ + +sonar-ping.ogg and radar-ping is taken and modified from SamsterBirdies' Sonar Ping from Freesound.org, CC0: +https://freesound.org/people/SamsterBirdies/sounds/539957/ + +manual_teleport.ogg is taken from Quetzakol's teleport from Freesound.org, CC0: +https://freesound.org/people/Quetzakol/sounds/520743/ + +auto_teleport.ogg is taken from Steaq's A teleportation from Freesound.org, CC0: +https://freesound.org/people/steaq/sounds/560124/ + +refinery.ogg, smelter.ogg, and wooping_teleport.ogg are all original works by ArcaneMusic, +with smelter.ogg using samples from rock_break alongside original sound effects from a warrior electric drill, +where refinery and wooping_teleport are modifications of that same electric drill recording. diff --git a/sound/effects/rock_break.ogg b/sound/effects/rock_break.ogg new file mode 100644 index 0000000000000000000000000000000000000000..09f6b1d5d33c450631c2c9bec8c83f3f845a342c GIT binary patch literal 51959 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 literal 0 HcmV?d00001 diff --git a/sound/machines/mining/auto_teleport.ogg b/sound/machines/mining/auto_teleport.ogg new file mode 100644 index 0000000000000000000000000000000000000000..a8fe669e8657cdbcfc94baa5e28e1b2016c7cbb1 GIT binary patch literal 28340 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 SAe8N+5dW!$vFsjh(EkArPym7e literal 0 HcmV?d00001 diff --git a/sound/machines/mining/manual_teleport.ogg b/sound/machines/mining/manual_teleport.ogg new file mode 100644 index 0000000000000000000000000000000000000000..b011ef91e65af910607250f982dd8feee205b96d GIT binary patch literal 35578 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È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 literal 0 HcmV?d00001 diff --git a/sound/machines/mining/refinery.ogg b/sound/machines/mining/refinery.ogg new file mode 100644 index 0000000000000000000000000000000000000000..fdae21f9a30102ae02b60aa40ae66ed9de76f938 GIT binary patch literal 56108 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

  • #sTeM7YvE7wMStA^InCGSWVtzQ@f~ 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 literal 0 HcmV?d00001 diff --git a/sound/machines/mining/smelter.ogg b/sound/machines/mining/smelter.ogg new file mode 100644 index 0000000000000000000000000000000000000000..b1d65f3bd2034d964a60d1fc70e3d752f0a55fb4 GIT binary patch literal 62364 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 z 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%0A`=^9`MGOxWk7(*@%*`1bf$rlh^z~vi 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 LN!?Om{bmgSR5x@_ literal 0 HcmV?d00001 diff --git a/sound/machines/radar-ping.ogg b/sound/machines/radar-ping.ogg new file mode 100644 index 0000000000000000000000000000000000000000..d6fd0000d1a5e78a0f22fbf35fc90c9588e9c5e4 GIT binary patch literal 32548 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 literal 0 HcmV?d00001 diff --git a/sound/machines/sonar-ping.ogg b/sound/machines/sonar-ping.ogg new file mode 100644 index 0000000000000000000000000000000000000000..c69d43520958dba612a28ae4452227c7eab070bb GIT binary patch literal 32532 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 G(EkUC3UGY@ literal 0 HcmV?d00001 diff --git a/tgstation.dme b/tgstation.dme index 7d63f0cf86bd..7140b7485cc9 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -158,6 +158,7 @@ #include "code\__DEFINES\melee.dm" #include "code\__DEFINES\memory_defines.dm" #include "code\__DEFINES\mergers.dm" +#include "code\__DEFINES\mining.dm" #include "code\__DEFINES\mob_spawn.dm" #include "code\__DEFINES\mobfactions.dm" #include "code\__DEFINES\mobs.dm" @@ -406,7 +407,9 @@ #include "code\__DEFINES\~monkestation\blackboard.dm" #include "code\__DEFINES\~monkestation\blueshift.dm" #include "code\__DEFINES\~monkestation\botany.dm" +#include "code\__DEFINES\~monkestation\cargo.dm" #include "code\__DEFINES\~monkestation\chat.dm" +#include "code\__DEFINES\~monkestation\chewin.dm" #include "code\__DEFINES\~monkestation\clock_cult.dm" #include "code\__DEFINES\~monkestation\colors.dm" #include "code\__DEFINES\~monkestation\combat.dm" @@ -439,6 +442,7 @@ #include "code\__DEFINES\~monkestation\oozeling.dm" #include "code\__DEFINES\~monkestation\optfor.dm" #include "code\__DEFINES\~monkestation\overwatch.dm" +#include "code\__DEFINES\~monkestation\pain.dm" #include "code\__DEFINES\~monkestation\particles.dm" #include "code\__DEFINES\~monkestation\physics.dm" #include "code\__DEFINES\~monkestation\power.dm" @@ -612,6 +616,7 @@ #include "code\_globalvars\lists\mobs.dm" #include "code\_globalvars\lists\names.dm" #include "code\_globalvars\lists\objects.dm" +#include "code\_globalvars\lists\ores_spawned.dm" #include "code\_globalvars\lists\poll_ignore.dm" #include "code\_globalvars\lists\quirks.dm" #include "code\_globalvars\lists\rtd.dm" @@ -5947,6 +5952,12 @@ #include "monkestation\code\game\turfs\open\water.dm" #include "monkestation\code\game\turfs\open\floor\misc_floor.dm" #include "monkestation\code\modules\_paperwork\paper_premade.dm" +#include "monkestation\code\modules\a_ship_in_need_of_breaking\area.dm" +#include "monkestation\code\modules\a_ship_in_need_of_breaking\scrap.dm" +#include "monkestation\code\modules\a_ship_in_need_of_breaking\machines\console.dm" +#include "monkestation\code\modules\a_ship_in_need_of_breaking\machines\recycler.dm" +#include "monkestation\code\modules\a_ship_in_need_of_breaking\ships\_base_ship.dm" +#include "monkestation\code\modules\a_ship_in_need_of_breaking\ships\robotics.dm" #include "monkestation\code\modules\abberant_organs\organ_process.dm" #include "monkestation\code\modules\abberant_organs\components\abberant_organ.dm" #include "monkestation\code\modules\abberant_organs\custom_organs\drunkards_liver.dm" @@ -6169,22 +6180,6 @@ #include "monkestation\code\modules\antagonists\heretic\knowledge\sacrifice_knowledge\sacrifice_buff.dm" #include "monkestation\code\modules\antagonists\nukeop\nukeop.dm" #include "monkestation\code\modules\antagonists\nukeop\equipment\nuclear_bomb\bee_nuke.dm" -#include "monkestation\code\modules\antagonists\slasher\__base_slasher_additions.dm" -#include "monkestation\code\modules\antagonists\slasher\ghost_role.dm" -#include "monkestation\code\modules\antagonists\slasher\slasher_datum.dm" -#include "monkestation\code\modules\antagonists\slasher\slasher_punishment.dm" -#include "monkestation\code\modules\antagonists\slasher\abilities\_slasher_base.dm" -#include "monkestation\code\modules\antagonists\slasher\abilities\blood_walk.dm" -#include "monkestation\code\modules\antagonists\slasher\abilities\incorporealize.dm" -#include "monkestation\code\modules\antagonists\slasher\abilities\recall_machette.dm" -#include "monkestation\code\modules\antagonists\slasher\abilities\slasher_regenerate.dm" -#include "monkestation\code\modules\antagonists\slasher\abilities\soul_steal.dm" -#include "monkestation\code\modules\antagonists\slasher\abilities\stalk_target.dm" -#include "monkestation\code\modules\antagonists\slasher\abilities\terror_screech.dm" -#include "monkestation\code\modules\antagonists\slasher\components\team_monitor.dm" -#include "monkestation\code\modules\antagonists\slasher\slasher_outfit\slasher_footwear.dm" -#include "monkestation\code\modules\antagonists\slasher\slasher_outfit\slasher_headgear.dm" -#include "monkestation\code\modules\antagonists\slasher\slasher_outfit\slasher_middlewear.dm" #include "monkestation\code\modules\antagonists\space_ninja\space_ninja.dm" #include "monkestation\code\modules\antagonists\traitor\traitor_objective.dm" #include "monkestation\code\modules\antagonists\traitor\uplink_handler.dm" @@ -6283,6 +6278,22 @@ #include "monkestation\code\modules\ballpit\ballpit.dm" #include "monkestation\code\modules\bitrunners\code\ability_disks.dm" #include "monkestation\code\modules\bitrunners\code\combat_gear_disks.dm" +#include "monkestation\code\modules\blood_for_the_blood_gods\fly_away.dm" +#include "monkestation\code\modules\blood_for_the_blood_gods\particle.dm" +#include "monkestation\code\modules\blood_for_the_blood_gods\slasher\__base_slasher_additions.dm" +#include "monkestation\code\modules\blood_for_the_blood_gods\slasher\ghost_role.dm" +#include "monkestation\code\modules\blood_for_the_blood_gods\slasher\slasher_datum.dm" +#include "monkestation\code\modules\blood_for_the_blood_gods\slasher\abilities\_slasher_base.dm" +#include "monkestation\code\modules\blood_for_the_blood_gods\slasher\abilities\blood_walk.dm" +#include "monkestation\code\modules\blood_for_the_blood_gods\slasher\abilities\envelope_darkness.dm" +#include "monkestation\code\modules\blood_for_the_blood_gods\slasher\abilities\recall_machette.dm" +#include "monkestation\code\modules\blood_for_the_blood_gods\slasher\abilities\slasher_regenerate.dm" +#include "monkestation\code\modules\blood_for_the_blood_gods\slasher\abilities\soul_steal.dm" +#include "monkestation\code\modules\blood_for_the_blood_gods\slasher\abilities\stalk_target.dm" +#include "monkestation\code\modules\blood_for_the_blood_gods\slasher\abilities\terror_screech.dm" +#include "monkestation\code\modules\blood_for_the_blood_gods\slasher\components\see_as_something.dm" +#include "monkestation\code\modules\blood_for_the_blood_gods\slasher\components\team_monitor.dm" +#include "monkestation\code\modules\blood_for_the_blood_gods\slasher\slasher_outfit\slasher_clothing.dm" #include "monkestation\code\modules\bloodsuckers\bloodsucker_assets.dm" #include "monkestation\code\modules\bloodsuckers\bloodsucker\bloodsucker_conversion.dm" #include "monkestation\code\modules\bloodsuckers\bloodsucker\bloodsucker_datum.dm" @@ -6365,6 +6376,18 @@ #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\blueshield\areas.dm" +#include "monkestation\code\modules\blueshield\closet.dm" +#include "monkestation\code\modules\blueshield\clothing.dm" +#include "monkestation\code\modules\blueshield\gun.dm" +#include "monkestation\code\modules\blueshield\job.dm" +#include "monkestation\code\modules\blueshield\landmarks.dm" +#include "monkestation\code\modules\blueshield\radio.dm" +#include "monkestation\code\modules\blueshield\trim.dm" +#include "monkestation\code\modules\blueshield\devices\crew_monitor.dm" +#include "monkestation\code\modules\blueshield\devices\sensor.dm" +#include "monkestation\code\modules\blueshield\modsuit\suit.dm" +#include "monkestation\code\modules\blueshield\modsuit\theme.dm" #include "monkestation\code\modules\blueshift\shuttles.dm" #include "monkestation\code\modules\blueshift\appliances\colony.dm" #include "monkestation\code\modules\blueshift\appliances\multi_charger.dm" @@ -6400,7 +6423,6 @@ #include "monkestation\code\modules\blueshift\cargo\deforest.dm" #include "monkestation\code\modules\blueshift\cargo\flatpacks.dm" #include "monkestation\code\modules\blueshift\cargo\specialist_armor.dm" -#include "monkestation\code\modules\blueshift\clothing\blueshield.dm" #include "monkestation\code\modules\blueshift\clothing\dogginos.dm" #include "monkestation\code\modules\blueshift\clothing\kahraman.dm" #include "monkestation\code\modules\blueshift\clothing\nova_armorsuit.dm" @@ -6633,11 +6655,89 @@ #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\brewin_and_chewin\cargo_exports.dm" +#include "monkestation\code\modules\brewin_and_chewin\uniqueness.dm" +#include "monkestation\code\modules\brewin_and_chewin\brewing\bottler.dm" +#include "monkestation\code\modules\brewin_and_chewin\brewing\bottles.dm" +#include "monkestation\code\modules\brewin_and_chewin\brewing\designs.dm" +#include "monkestation\code\modules\brewin_and_chewin\brewing\fermintation_keg.dm" +#include "monkestation\code\modules\brewin_and_chewin\brewing\reagents.dm" +#include "monkestation\code\modules\brewin_and_chewin\brewing\recipe_card.dm" +#include "monkestation\code\modules\brewin_and_chewin\brewing\recipes\_base.dm" +#include "monkestation\code\modules\brewin_and_chewin\brewing\recipes\beers.dm" +#include "monkestation\code\modules\brewin_and_chewin\brewing\recipes\custom.dm" +#include "monkestation\code\modules\brewin_and_chewin\brewing\recipes\liquors.dm" +#include "monkestation\code\modules\brewin_and_chewin\brewing\recipes\meads.dm" +#include "monkestation\code\modules\brewin_and_chewin\brewing\recipes\misc.dm" +#include "monkestation\code\modules\brewin_and_chewin\brewing\recipes\rums.dm" +#include "monkestation\code\modules\brewin_and_chewin\brewing\recipes\vinegars.dm" +#include "monkestation\code\modules\brewin_and_chewin\brewing\recipes\wines.dm" +#include "monkestation\code\modules\brewin_and_chewin\chewing\cooking_containers.dm" +#include "monkestation\code\modules\brewin_and_chewin\chewing\food_additons.dm" +#include "monkestation\code\modules\brewin_and_chewin\chewing\fryer_overhaul.dm" +#include "monkestation\code\modules\brewin_and_chewin\chewing\global_creation.dm" +#include "monkestation\code\modules\brewin_and_chewin\chewing\items.dm" +#include "monkestation\code\modules\brewin_and_chewin\chewing\oven_overrides.dm" +#include "monkestation\code\modules\brewin_and_chewin\chewing\recipe.dm" +#include "monkestation\code\modules\brewin_and_chewin\chewing\tracker.dm" +#include "monkestation\code\modules\brewin_and_chewin\chewing\food_effects\food_posioning.dm" +#include "monkestation\code\modules\brewin_and_chewin\chewing\recipe_steps\_base.dm" +#include "monkestation\code\modules\brewin_and_chewin\chewing\recipe_steps\add_item.dm" +#include "monkestation\code\modules\brewin_and_chewin\chewing\recipe_steps\add_produce.dm" +#include "monkestation\code\modules\brewin_and_chewin\chewing\recipe_steps\add_produce_choice.dm" +#include "monkestation\code\modules\brewin_and_chewin\chewing\recipe_steps\add_reagent.dm" +#include "monkestation\code\modules\brewin_and_chewin\chewing\recipe_steps\add_reagent_choice.dm" +#include "monkestation\code\modules\brewin_and_chewin\chewing\recipe_steps\recipe_start.dm" +#include "monkestation\code\modules\brewin_and_chewin\chewing\recipe_steps\use_fryer.dm" +#include "monkestation\code\modules\brewin_and_chewin\chewing\recipe_steps\use_grill.dm" +#include "monkestation\code\modules\brewin_and_chewin\chewing\recipe_steps\use_item.dm" +#include "monkestation\code\modules\brewin_and_chewin\chewing\recipe_steps\use_oven.dm" +#include "monkestation\code\modules\brewin_and_chewin\chewing\recipe_steps\use_stove.dm" +#include "monkestation\code\modules\brewin_and_chewin\chewing\recipe_steps\use_tool.dm" +#include "monkestation\code\modules\brewin_and_chewin\chewing\recipes\black_eggs.dm" +#include "monkestation\code\modules\brewin_and_chewin\chewing\recipes\example_recipe.dm" +#include "monkestation\code\modules\brewin_and_chewin\chewing\recipes\french_fries.dm" +#include "monkestation\code\modules\brewin_and_chewin\chewing\recipes\fried_blood_sausage.dm" +#include "monkestation\code\modules\brewin_and_chewin\chewing\recipes\fried_rice.dm" +#include "monkestation\code\modules\brewin_and_chewin\chewing\recipes\katsu_curry.dm" +#include "monkestation\code\modules\brewin_and_chewin\chewing\recipes\kimchi.dm" +#include "monkestation\code\modules\brewin_and_chewin\chewing\recipes\lizard_dumplings.dm" +#include "monkestation\code\modules\brewin_and_chewin\chewing\recipes\oven_bread.dm" +#include "monkestation\code\modules\brewin_and_chewin\chewing\recipes\recipe_crafting_helper_generator.dm" +#include "monkestation\code\modules\brewin_and_chewin\chewing\recipes\sandwhich_test.dm" #include "monkestation\code\modules\buckshotroulette\projectiles\ammunition\ballistic\shotgun.dm" #include "monkestation\code\modules\buckshotroulette\projectiles\boxes_magazines\internal\shotgun.dm" #include "monkestation\code\modules\buckshotroulette\projectiles\guns\ballistic\shotgun.dm" #include "monkestation\code\modules\bunny_wizard\outfits.dm" #include "monkestation\code\modules\bunny_wizard\wizard_items.dm" +#include "monkestation\code\modules\can_spessmen_feel_pain\subsystem.dm" +#include "monkestation\code\modules\can_spessmen_feel_pain\components\make_item_slow.dm" +#include "monkestation\code\modules\can_spessmen_feel_pain\elements\temperature_pack.dm" +#include "monkestation\code\modules\can_spessmen_feel_pain\pain\_base.dm" +#include "monkestation\code\modules\can_spessmen_feel_pain\pain\bodyparts.dm" +#include "monkestation\code\modules\can_spessmen_feel_pain\pain\effects.dm" +#include "monkestation\code\modules\can_spessmen_feel_pain\pain\helpers.dm" +#include "monkestation\code\modules\can_spessmen_feel_pain\pain\item_helpers.dm" +#include "monkestation\code\modules\can_spessmen_feel_pain\pain\modifiers.dm" +#include "monkestation\code\modules\can_spessmen_feel_pain\pain\pain_assistance_tools.dm" +#include "monkestation\code\modules\can_spessmen_feel_pain\pain\pain_goodies.dm" +#include "monkestation\code\modules\can_spessmen_feel_pain\pain\preferences.dm" +#include "monkestation\code\modules\can_spessmen_feel_pain\pain\shock.dm" +#include "monkestation\code\modules\can_spessmen_feel_pain\pain\species.dm" +#include "monkestation\code\modules\can_spessmen_feel_pain\pain\traits.dm" +#include "monkestation\code\modules\can_spessmen_feel_pain\pain\causes\generic.dm" +#include "monkestation\code\modules\can_spessmen_feel_pain\pain\causes\opiods.dm" +#include "monkestation\code\modules\can_spessmen_feel_pain\pain\causes\surgery.dm" +#include "monkestation\code\modules\can_spessmen_feel_pain\pain\reagents\modified_reagents.dm" +#include "monkestation\code\modules\can_spessmen_feel_pain\pain\reagents\painkiller_related.dm" +#include "monkestation\code\modules\can_spessmen_feel_pain\pain\reagents\painkillers.dm" +#include "monkestation\code\modules\can_spessmen_feel_pain\pain\status_effects\anesthetics.dm" +#include "monkestation\code\modules\can_spessmen_feel_pain\pain\status_effects\fire_pain.dm" +#include "monkestation\code\modules\can_spessmen_feel_pain\pain\status_effects\low_blood_pressure.dm" +#include "monkestation\code\modules\can_spessmen_feel_pain\pain\status_effects\min_pain.dm" +#include "monkestation\code\modules\can_spessmen_feel_pain\pain\status_effects\pain_limp.dm" +#include "monkestation\code\modules\can_spessmen_feel_pain\pain\status_effects\sharp_pain.dm" +#include "monkestation\code\modules\can_spessmen_feel_pain\pain\status_effects\temp_pack.dm" #include "monkestation\code\modules\cargo\bounties\pathology.dm" #include "monkestation\code\modules\cargo\crates\costumes_toys.dm" #include "monkestation\code\modules\cargo\crates\emergency.dm" @@ -6836,6 +6936,41 @@ #include "monkestation\code\modules\events\summon_wizard_event.dm" #include "monkestation\code\modules\events\ghost_role\drifting_contractor.dm" #include "monkestation\code\modules\events\wizard\summon_gifts.dm" +#include "monkestation\code\modules\factory_type_beat\boulder.dm" +#include "monkestation\code\modules\factory_type_beat\circuits.dm" +#include "monkestation\code\modules\factory_type_beat\debug.dm" +#include "monkestation\code\modules\factory_type_beat\designs.dm" +#include "monkestation\code\modules\factory_type_beat\effects.dm" +#include "monkestation\code\modules\factory_type_beat\flatpacks.dm" +#include "monkestation\code\modules\factory_type_beat\map_templates.dm" +#include "monkestation\code\modules\factory_type_beat\ore_vent.dm" +#include "monkestation\code\modules\factory_type_beat\ss_ore_gen.dm" +#include "monkestation\code\modules\factory_type_beat\technodes.dm" +#include "monkestation\code\modules\factory_type_beat\yummy.dm" +#include "monkestation\code\modules\factory_type_beat\ai_behaviours\latch_onto.dm" +#include "monkestation\code\modules\factory_type_beat\machinery\assembler.dm" +#include "monkestation\code\modules\factory_type_beat\machinery\brine_chamber.dm" +#include "monkestation\code\modules\factory_type_beat\machinery\grabber.dm" +#include "monkestation\code\modules\factory_type_beat\machinery\splitter.dm" +#include "monkestation\code\modules\factory_type_beat\machinery\test_boulder_spawner.dm" +#include "monkestation\code\modules\factory_type_beat\machinery\atmos_chem\chemical_infuser.dm" +#include "monkestation\code\modules\factory_type_beat\machinery\atmos_chem\pressurized_reaction_chamber.dm" +#include "monkestation\code\modules\factory_type_beat\machinery\atmos_chem\chemical_infuser_recipes\_base.dm" +#include "monkestation\code\modules\factory_type_beat\machinery\atmos_chem\chemical_infuser_recipes\sulfur.dm" +#include "monkestation\code\modules\factory_type_beat\machinery\atmos_chem\pressurised_reactions\_base.dm" +#include "monkestation\code\modules\factory_type_beat\machinery\atmos_chem\pressurised_reactions\sulfur.dm" +#include "monkestation\code\modules\factory_type_beat\mobs\node_drone.dm" +#include "monkestation\code\modules\factory_type_beat\processing\bouldertech.dm" +#include "monkestation\code\modules\factory_type_beat\processing\brm.dm" +#include "monkestation\code\modules\factory_type_beat\processing\checmial_washer.dm" +#include "monkestation\code\modules\factory_type_beat\processing\chemical_injector.dm" +#include "monkestation\code\modules\factory_type_beat\processing\crusher.dm" +#include "monkestation\code\modules\factory_type_beat\processing\crystalizer.dm" +#include "monkestation\code\modules\factory_type_beat\processing\dissolution_chamber.dm" +#include "monkestation\code\modules\factory_type_beat\processing\enricher.dm" +#include "monkestation\code\modules\factory_type_beat\processing\holding_types.dm" +#include "monkestation\code\modules\factory_type_beat\processing\purification_chamber.dm" +#include "monkestation\code\modules\factory_type_beat\processing\refinery.dm" #include "monkestation\code\modules\flavor_text\flavor_examine.dm" #include "monkestation\code\modules\flavor_text\flavor_helpers.dm" #include "monkestation\code\modules\flavor_text\flavor_hrefs.dm" @@ -6900,7 +7035,6 @@ #include "monkestation\code\modules\job_xp\milestones\botany_milestones.dm" #include "monkestation\code\modules\job_xp\preferences\base_preferences.dm" #include "monkestation\code\modules\job_xp\preferences\xp_handlers.dm" -#include "monkestation\code\modules\jobs\job_types\blueshield.dm" #include "monkestation\code\modules\jobs\job_types\brig_physician.dm" #include "monkestation\code\modules\jobs\job_types\candysalesman.dm" #include "monkestation\code\modules\jobs\job_types\chaplain.dm" @@ -7719,6 +7853,7 @@ #include "monkestation\code\modules\trading\unusual_effects\animation_housing\fire.dm" #include "monkestation\code\modules\trading\unusual_effects\animation_housing\galaxies.dm" #include "monkestation\code\modules\trading\unusual_effects\animation_housing\holy_steps.dm" +#include "monkestation\code\modules\trading\unusual_effects\animation_housing\money.dm" #include "monkestation\code\modules\trading\unusual_effects\animation_housing\music.dm" #include "monkestation\code\modules\trading\unusual_effects\animation_housing\rain.dm" #include "monkestation\code\modules\trading\unusual_effects\animation_housing\shooting_stars.dm" @@ -7878,4 +8013,5 @@ #include "monkestation\code\random_rooms\engines\kilostation.dm" #include "monkestation\code\random_rooms\engines\metastation.dm" #include "monkestation\code\random_rooms\engines\tramstation.dm" +#include "monkestation\gunning_ing\recoil.dm" // END_INCLUDE diff --git a/tgui/packages/tgui/components/Collapsible.jsx b/tgui/packages/tgui/components/Collapsible.jsx index 7d59a11417cc..944b517b57f8 100644 --- a/tgui/packages/tgui/components/Collapsible.jsx +++ b/tgui/packages/tgui/components/Collapsible.jsx @@ -20,7 +20,14 @@ export class Collapsible extends Component { render() { const { props } = this; const { open } = this.state; - const { children, color = 'default', title, buttons, ...rest } = props; + const { + children, + color = 'default', + title, + buttons, + contentStyle, + ...rest + } = props; return (
    @@ -39,7 +46,11 @@ export class Collapsible extends Component {
    {buttons}
    )}
    - {open && {children}} + {open && ( + + {children} + + )}
    ); } diff --git a/tgui/packages/tgui/components/ImageButton.js b/tgui/packages/tgui/components/ImageButton.js new file mode 100644 index 000000000000..2b7258497fa6 --- /dev/null +++ b/tgui/packages/tgui/components/ImageButton.js @@ -0,0 +1,234 @@ +/** + * @file + * @copyright 2024 Aylong (https://github.com/AyIong) + * @license MIT + */ + +import { resolveAsset } from '../assets'; +import { classes, pureComponentHooks } from 'common/react'; +import { computeBoxClassName, computeBoxProps } from './Box'; +import { Icon } from './Icon'; +import { Tooltip } from './Tooltip'; + +export const ImageButton = (props) => { + const { + className, + asset, + color, + title, + vertical, + content, + selected, + disabled, + disabledContent, + image, + imageUrl, + imageAsset, + imageSize, + tooltip, + tooltipPosition, + ellipsis, + children, + onClick, + ...rest + } = props; + rest.onClick = (e) => { + if (!disabled && onClick) { + onClick(e); + } + }; + let buttonContent = ( +
    +
    + {asset ? ( +
    + ) : ( + + )} +
    + {content && + (vertical ? ( +
    + {disabled && disabledContent ? disabledContent : content} +
    + ) : ( +
    + {title && ( +
    + {title} +
    +
    + )} +
    + {content} +
    +
    + ))} +
    + ); + + if (tooltip) { + buttonContent = ( + + {buttonContent} + + ); + } + + return ( +
    + {buttonContent} + {children} +
    + ); +}; + +ImageButton.defaultHooks = pureComponentHooks; + +/** + * That's VERY fucking expensive thing! + * Use it only in places, where it really needed. + * Otherwise, the window opening time may increase by a third! + * Most of the blame is on Icon. + * Maybe it's also because I'm a bit crooked. + * (с) Aylong + */ +export const ImageButtonItem = (props) => { + const { + className, + color, + content, + horizontal, + selected, + disabled, + disabledContent, + tooltip, + tooltipPosition, + icon, + iconColor, + iconPosition, + iconRotation, + iconSize, + onClick, + children, + ...rest + } = props; + rest.onClick = (e) => { + if (!disabled && onClick) { + onClick(e); + } + }; + let itemContent = ( +
    +
    +
    + {icon && (iconPosition === 'top' || iconPosition === 'left') && ( + + )} +
    + {disabled && disabledContent ? disabledContent : content} + {children} +
    + {icon && !(iconPosition === 'top' || iconPosition === 'left') && ( + + )} +
    +
    +
    + ); + if (tooltip) { + itemContent = ( + + {itemContent} + + ); + } + + return itemContent; +}; + +ImageButton.Item = ImageButtonItem; diff --git a/tgui/packages/tgui/components/index.jsx b/tgui/packages/tgui/components/index.jsx index fefd280a590c..95780c83b46e 100644 --- a/tgui/packages/tgui/components/index.jsx +++ b/tgui/packages/tgui/components/index.jsx @@ -22,6 +22,7 @@ export { Flex } from './Flex'; export { FitText } from './FitText'; export { Grid } from './Grid'; export { Icon } from './Icon'; +export { ImageButton } from './ImageButton'; export { InfinitePlane } from './InfinitePlane'; export { Interactive } from './Interactive'; export { Input } from './Input'; diff --git a/tgui/packages/tgui/interfaces/BigManipulator.tsx b/tgui/packages/tgui/interfaces/BigManipulator.tsx new file mode 100644 index 000000000000..6a5501b56647 --- /dev/null +++ b/tgui/packages/tgui/interfaces/BigManipulator.tsx @@ -0,0 +1,30 @@ +import { BooleanLike } from 'common/react'; + +import { useBackend } from '../backend'; +import { Button, Section, Stack } from '../components'; +import { Window } from '../layouts'; + +type ManipulatorData = { + active: BooleanLike; +}; + +export const BigManipulator = (props) => { + const { data, act } = useBackend(); + const { active } = data; + return ( + + +
    + +
    +
    +
    + ); +}; diff --git a/tgui/packages/tgui/interfaces/CrewConsoleNovaBlueshield.jsx b/tgui/packages/tgui/interfaces/CrewConsoleNovaBlueshield.jsx new file mode 100644 index 000000000000..a939e3a4d076 --- /dev/null +++ b/tgui/packages/tgui/interfaces/CrewConsoleNovaBlueshield.jsx @@ -0,0 +1,201 @@ +// THIS IS A NOVA SECTOR UI FILE +import { sortBy } from 'common/collections'; + +import { useBackend } from '../backend'; +import { Box, Button, Icon, Section, Table } from '../components'; +import { COLORS } from '../constants'; +import { Window } from '../layouts'; + +const HEALTH_COLOR_BY_LEVEL = [ + '#17d568', + '#c4cf2d', + '#e67e22', + '#ed5100', + '#e74c3c', + '#801308', +]; +const HEALTH_ICON_BY_LEVEL = [ + 'heart', + 'heart', + 'heart', + 'heart', + 'heartbeat', + 'skull', +]; +const jobIsHead = (jobId) => jobId % 10 === 0; + +const jobToColor = (jobId) => { + if (jobId === 0) { + return COLORS.department.captain; + } + if (jobId >= 10 && jobId < 20) { + return COLORS.department.security; + } + if (jobId >= 20 && jobId < 30) { + return COLORS.department.medbay; + } + if (jobId >= 30 && jobId < 40) { + return COLORS.department.science; + } + if (jobId >= 40 && jobId < 50) { + return COLORS.department.engineering; + } + if (jobId >= 50 && jobId < 60) { + return COLORS.department.cargo; + } + if (jobId >= 60 && jobId < 80) { + return COLORS.department.service; + } + if (jobId >= 200 && jobId < 240) { + return COLORS.department.centcom; + } + return COLORS.department.other; +}; + +const healthToAttribute = (oxy, tox, burn, brute, attributeList) => { + const healthSum = oxy + tox + burn + brute; + const level = Math.min(Math.max(Math.ceil(healthSum / 50), 0), 5); + // 200 Default Health, Sum Divided by 50, 6 Health States + return attributeList[level]; +}; + +const HealthStat = (props) => { + const { type, value } = props; + return ( + + {value} + + ); +}; + +// all of this just to change the name +export const CrewConsoleNovaBlueshield = () => { + return ( + + +
    + +
    +
    +
    + ); +}; + +const CrewTable = (props) => { + const { act, data } = useBackend(); + const sensors = sortBy((s) => s.ijob)(data.sensors ?? []); + return ( + + + + Name + + + Status + + + Vitals + + + Position + + + {sensors.map((sensor) => ( + + ))} +
    + ); +}; + +const CrewTableEntry = (props) => { + const { act, data } = useBackend(); + const { link_allowed } = data; + const { sensor_data } = props; + const { + name, + assignment, + ijob, + is_robot, + life_status, + oxydam, + toxdam, + burndam, + brutedam, + area, + can_track, + } = sensor_data; + + return ( + + + {name} + {assignment !== undefined ? ` (${assignment})` : ''} + + + {is_robot ? : ''} + + + {oxydam !== undefined && life_status ? ( + + ) : life_status ? ( + + ) : ( + + )} + + + {oxydam !== undefined ? ( + + + {'/'} + + {'/'} + + {'/'} + + + ) : life_status ? ( + 'Alive' + ) : ( + 'Dead' + )} + + + {area !== undefined ? ( + area + ) : ( + + )} + + {!!link_allowed && ( + +
  • q<7#Vv0Ax-oa{JwsQC2?7Lo2r! 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