From 2c578ca683c1f69e42883bd11ddd169f48eaa144 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Thu, 24 Oct 2019 18:01:46 +0200 Subject: [PATCH 001/123] Ports move force and move resist, movement/pushing/pulling tweaks & co. --- .../lavaland_surface_ash_walker1.dmm | 2 +- _maps/RandomZLevels/VR/snowdin_VR.dmm | 6 +- _maps/RandomZLevels/caves.dmm | 16 +-- _maps/RandomZLevels/snowdin.dmm | 6 +- code/__DEFINES/misc.dm | 24 ---- code/__DEFINES/move_force.dm | 20 ++++ code/__DEFINES/time.dm | 24 ++++ code/__HELPERS/unsorted.dm | 2 +- code/controllers/subsystem/throwing.dm | 1 + code/datums/components/spawner.dm | 49 ++++++++ code/datums/martial/cqc.dm | 2 +- code/datums/martial/psychotic_brawl.dm | 2 +- code/datums/martial/sleeping_carp.dm | 2 +- code/game/atoms.dm | 2 +- code/game/atoms_movable.dm | 52 +++++--- .../game/gamemodes/clown_ops/clown_weapons.dm | 4 +- code/game/machinery/doors/door.dm | 1 + code/game/machinery/shieldgen.dm | 3 + .../game/mecha/equipment/tools/other_tools.dm | 4 +- code/game/mecha/equipment/weapons/weapons.dm | 2 +- code/game/mecha/mecha_defense.dm | 4 +- code/game/objects/effects/effects.dm | 1 + code/game/objects/items.dm | 18 +-- code/game/objects/items/dice.dm | 2 +- code/game/objects/items/handcuffs.dm | 4 +- code/game/objects/items/melee/misc.dm | 8 +- code/game/objects/items/singularityhammer.dm | 6 +- code/game/objects/items/stacks/bscrystal.dm | 2 +- code/game/objects/items/stacks/stack.dm | 2 +- code/game/objects/items/stunbaton.dm | 2 +- code/game/objects/items/theft_tools.dm | 2 +- code/game/objects/items/toys.dm | 8 +- code/game/objects/obj_defense.dm | 13 +- code/game/objects/objs.dm | 2 +- .../objects/structures/ghost_role_spawners.dm | 2 + code/game/objects/structures/grille.dm | 2 +- .../lavaland}/necropolis_tendril.dm | 64 +++++----- code/game/objects/structures/spawner.dm | 75 ++++++++++++ .../turfs/simulated/floor/plating/asteroid.dm | 8 +- code/game/turfs/simulated/lava.dm | 2 +- code/game/turfs/simulated/wall/misc_walls.dm | 2 +- .../clock_weapons/ratvarian_spear.dm | 8 +- code/modules/antagonists/cult/cult_items.dm | 18 +-- code/modules/antagonists/revenant/revenant.dm | 4 +- code/modules/assembly/infrared.dm | 2 +- code/modules/assembly/mousetrap.dm | 4 +- .../environmental/LINDA_turf_tile.dm | 3 +- .../atmospherics/machinery/atmosmachinery.dm | 1 + code/modules/events/immovable_rod.dm | 3 + code/modules/flufftext/Hallucination.dm | 4 +- code/modules/food_and_drinks/drinks/drinks.dm | 4 +- .../food_and_drinks/drinks/drinks/bottle.dm | 6 +- .../food_and_drinks/food/snacks_egg.dm | 2 +- .../food_and_drinks/food/snacks_other.dm | 4 +- .../food_and_drinks/food/snacks_pie.dm | 2 +- code/modules/food_and_drinks/pizzabox.dm | 2 +- code/modules/holiday/halloween/jacqueen.dm | 2 +- code/modules/holodeck/items.dm | 4 +- code/modules/hydroponics/grown.dm | 2 +- code/modules/hydroponics/growninedible.dm | 2 +- code/modules/mining/fulton.dm | 3 +- code/modules/mining/ores_coins.dm | 2 +- code/modules/mob/camera/camera.dm | 3 +- code/modules/mob/dead/dead.dm | 1 + .../modules/mob/dead/new_player/new_player.dm | 4 +- code/modules/mob/dead/observer/observer.dm | 5 - .../mob/living/carbon/alien/alien_defense.dm | 2 +- .../carbon/alien/humanoid/caste/hunter.dm | 16 +-- .../mob/living/carbon/alien/larva/larva.dm | 2 +- .../living/carbon/alien/special/facehugger.dm | 2 +- code/modules/mob/living/carbon/carbon.dm | 20 ++-- .../mob/living/carbon/carbon_defense.dm | 2 +- .../mob/living/carbon/human/human_defense.dm | 2 +- .../mob/living/carbon/monkey/combat.dm | 2 +- code/modules/mob/living/living.dm | 56 +++++---- code/modules/mob/living/living_defense.dm | 6 +- code/modules/mob/living/silicon/ai/ai.dm | 11 +- code/modules/mob/living/silicon/ai/death.dm | 2 +- .../mob/living/silicon/pai/pai_shell.dm | 2 +- .../mob/living/simple_animal/bot/honkbot.dm | 2 +- .../mob/living/simple_animal/bot/mulebot.dm | 4 +- .../mob/living/simple_animal/bot/secbot.dm | 2 +- .../mob/living/simple_animal/constructs.dm | 2 +- .../simple_animal/guardian/types/charger.dm | 14 +-- .../simple_animal/hostile/jungle/leaper.dm | 2 +- .../simple_animal/hostile/jungle/mook.dm | 2 +- .../simple_animal/hostile/jungle/seedling.dm | 2 +- .../hostile/megafauna/bubblegum.dm | 6 +- .../hostile/megafauna/megafauna.dm | 4 +- .../hostile/megafauna/swarmer.dm | 1 - .../hostile/mining_mobs/goliath.dm | 8 +- .../hostile/mining_mobs/hivelord.dm | 10 +- .../hostile/mining_mobs/mining_mobs.dm | 2 +- .../living/simple_animal/hostile/mushroom.dm | 2 +- .../simple_animal/hostile/netherworld.dm | 23 ++-- .../living/simple_animal/hostile/statue.dm | 5 +- .../mob/living/simple_animal/simple_animal.dm | 2 +- .../mob/living/simple_animal/slime/slime.dm | 4 +- .../mob/living/simple_animal/spawner.dm | 113 ------------------ code/modules/mob/mob_movement.dm | 3 +- code/modules/ninja/energy_katana.dm | 2 +- code/modules/paperwork/paperplane.dm | 2 +- code/modules/power/gravitygenerator.dm | 1 + code/modules/power/lighting.dm | 2 +- .../power/singularity/containment_field.dm | 1 + .../power/singularity/field_generator.dm | 2 + code/modules/power/singularity/singularity.dm | 1 + .../mapGenerators/lavaland.dm | 6 +- .../projectiles/ammunition/_ammunition.dm | 2 +- code/modules/reagents/reagent_containers.dm | 4 +- code/modules/recycling/disposal/bin.dm | 2 +- .../ruins/objects_and_mobs/ash_walker_den.dm | 33 ++--- code/modules/shuttle/on_move.dm | 2 +- code/modules/spells/spell_types/conjure.dm | 2 +- code/modules/spells/spell_types/wizard.dm | 2 +- code/modules/surgery/bodyparts/bodyparts.dm | 2 +- code/modules/unit_tests/_unit_tests.dm | 1 + code/modules/unit_tests/anchored_mobs.dm | 9 ++ .../living/silicon/robot/dogborg_equipment.dm | 16 +-- .../projectiles/guns/ballistic/spinfusor.dm | 6 +- tgstation.dme | 6 +- 121 files changed, 553 insertions(+), 437 deletions(-) create mode 100644 code/__DEFINES/move_force.dm create mode 100644 code/datums/components/spawner.dm rename code/{modules/mob/living/simple_animal/hostile/mining_mobs => game/objects/structures/lavaland}/necropolis_tendril.dm (71%) create mode 100644 code/game/objects/structures/spawner.dm delete mode 100644 code/modules/mob/living/simple_animal/spawner.dm create mode 100644 code/modules/unit_tests/anchored_mobs.dm diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_ash_walker1.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_ash_walker1.dmm index ed5b07168f..1b4b6a5d43 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_ash_walker1.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_ash_walker1.dmm @@ -266,7 +266,7 @@ /turf/open/indestructible/boss, /area/ruin/unpowered/ash_walkers) "aH" = ( -/mob/living/simple_animal/hostile/spawner/lavaland/ash_walker, +/obj/structure/lavaland/ash_walker, /turf/open/lava/smooth{ initial_gas_mix = "o2=14;n2=23;TEMP=300" }, diff --git a/_maps/RandomZLevels/VR/snowdin_VR.dmm b/_maps/RandomZLevels/VR/snowdin_VR.dmm index 8f6eda450c..0e67b7227c 100644 --- a/_maps/RandomZLevels/VR/snowdin_VR.dmm +++ b/_maps/RandomZLevels/VR/snowdin_VR.dmm @@ -3669,7 +3669,7 @@ /area/awaymission/snowdin/cave/cavern) "im" = ( /obj/effect/decal/cleanable/blood/old, -/mob/living/simple_animal/hostile/spawner/nether{ +/obj/structure/spawner/nether{ max_mobs = 5 }, /turf/open/floor/engine/cult{ @@ -8272,7 +8272,7 @@ /turf/open/floor/engine/cult, /area/awaymission/snowdin/post/cavern2) "sb" = ( -/mob/living/simple_animal/hostile/spawner/nether{ +/obj/structure/spawner/nether{ max_mobs = 4; name = "weak netherworld link" }, @@ -10173,7 +10173,7 @@ /obj/structure/cable/yellow{ icon_state = "2-8" }, -/mob/living/simple_animal/hostile/spawner/nether{ +/obj/structure/spawner/nether{ max_mobs = 4; name = "weak netherworld link" }, diff --git a/_maps/RandomZLevels/caves.dmm b/_maps/RandomZLevels/caves.dmm index a25808d933..66ab3e60a8 100644 --- a/_maps/RandomZLevels/caves.dmm +++ b/_maps/RandomZLevels/caves.dmm @@ -103,7 +103,7 @@ }, /area/awaymission/caves/BMP_asteroid/level_four) "at" = ( -/mob/living/simple_animal/hostile/spawner/skeleton, +/obj/structure/spawner/skeleton, /turf/open/floor/plating/asteroid/basalt/lava{ initial_gas_mix = "n2=23;o2=14" }, @@ -164,7 +164,7 @@ }, /area/awaymission/caves/BMP_asteroid/level_four) "aB" = ( -/mob/living/simple_animal/hostile/spawner/skeleton, +/obj/structure/spawner/skeleton, /turf/open/floor/engine/cult{ initial_gas_mix = "n2=23;o2=14" }, @@ -374,7 +374,7 @@ }, /area/awaymission/caves/BMP_asteroid/level_three) "be" = ( -/mob/living/simple_animal/hostile/spawner/mining/goliath, +/obj/structure/spawner/mining/goliath, /turf/open/floor/plating/asteroid/basalt{ initial_gas_mix = "n2=23;o2=14" }, @@ -504,7 +504,7 @@ /area/awaymission/caves/BMP_asteroid/level_three) "bw" = ( /obj/effect/decal/cleanable/blood, -/mob/living/simple_animal/hostile/spawner/skeleton, +/obj/structure/spawner/skeleton, /turf/open/floor/engine/cult{ initial_gas_mix = "n2=23;o2=14" }, @@ -930,7 +930,7 @@ /turf/closed/wall, /area/awaymission/caves/BMP_asteroid/level_two) "cL" = ( -/mob/living/simple_animal/hostile/spawner/mining/basilisk, +/obj/structure/spawner/mining/basilisk, /turf/open/floor/plating/asteroid/basalt{ initial_gas_mix = "n2=23;o2=14" }, @@ -1644,7 +1644,7 @@ /turf/open/floor/plasteel, /area/awaymission/caves/listeningpost) "fb" = ( -/mob/living/simple_animal/hostile/spawner/mining/hivelord, +/obj/structure/spawner/mining/hivelord, /turf/open/floor/plating/asteroid/basalt{ initial_gas_mix = "n2=23;o2=14" }, @@ -2133,7 +2133,7 @@ /turf/open/floor/plasteel/recharge_floor, /area/awaymission/caves/BMP_asteroid) "gD" = ( -/mob/living/simple_animal/hostile/spawner/mining/hivelord, +/obj/structure/spawner/mining/hivelord, /turf/open/floor/plating/asteroid/basalt{ initial_gas_mix = "n2=23;o2=14" }, @@ -2206,7 +2206,7 @@ }, /area/awaymission/caves/BMP_asteroid) "gQ" = ( -/mob/living/simple_animal/hostile/spawner/mining/basilisk, +/obj/structure/spawner/mining/basilisk, /turf/open/floor/plating/asteroid/basalt{ initial_gas_mix = "n2=23;o2=14" }, diff --git a/_maps/RandomZLevels/snowdin.dmm b/_maps/RandomZLevels/snowdin.dmm index 525c8fcf7b..13171fddcc 100644 --- a/_maps/RandomZLevels/snowdin.dmm +++ b/_maps/RandomZLevels/snowdin.dmm @@ -3664,7 +3664,7 @@ /area/awaymission/snowdin/cave/cavern) "im" = ( /obj/effect/decal/cleanable/blood/old, -/mob/living/simple_animal/hostile/spawner/nether{ +/obj/structure/spawner/nether{ max_mobs = 5 }, /turf/open/floor/engine/cult{ @@ -8327,7 +8327,7 @@ /turf/open/floor/engine/cult, /area/awaymission/snowdin/post/cavern2) "sb" = ( -/mob/living/simple_animal/hostile/spawner/nether{ +/obj/structure/spawner/nether{ max_mobs = 4; name = "weak netherworld link" }, @@ -10237,7 +10237,7 @@ /obj/structure/cable/yellow{ icon_state = "2-8" }, -/mob/living/simple_animal/hostile/spawner/nether{ +/obj/structure/spawner/nether{ max_mobs = 4; name = "weak netherworld link" }, diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm index bccf1f28dd..5ca0c99a63 100644 --- a/code/__DEFINES/misc.dm +++ b/code/__DEFINES/misc.dm @@ -25,30 +25,6 @@ Will print: "/mob/living/carbon/human/death" (you can optionally embed it in a s #define NOT_IMPLEMENTED "NOT_IMPLEMENTED" -#define MIDNIGHT_ROLLOVER 864000 //number of deciseconds in a day - -#define JANUARY 1 -#define FEBRUARY 2 -#define MARCH 3 -#define APRIL 4 -#define MAY 5 -#define JUNE 6 -#define JULY 7 -#define AUGUST 8 -#define SEPTEMBER 9 -#define OCTOBER 10 -#define NOVEMBER 11 -#define DECEMBER 12 - -//Select holiday names -- If you test for a holiday in the code, make the holiday's name a define and test for that instead -#define NEW_YEAR "New Year" -#define VALENTINES "Valentine's Day" -#define APRIL_FOOLS "April Fool's Day" -#define EASTER "Easter" -#define HALLOWEEN "Halloween" -#define CHRISTMAS "Christmas" -#define FESTIVE_SEASON "Festive Season" - //Human Overlays Indexes///////// //LOTS OF CIT CHANGES HERE. BE CAREFUL WHEN UPSTREAM ADDS MORE LAYERS #define MUTATIONS_LAYER 31 //mutations. Tk headglows, cold resistance glow, etc diff --git a/code/__DEFINES/move_force.dm b/code/__DEFINES/move_force.dm new file mode 100644 index 0000000000..ec31388c72 --- /dev/null +++ b/code/__DEFINES/move_force.dm @@ -0,0 +1,20 @@ +//Defaults +#define MOVE_FORCE_DEFAULT 1000 +#define MOVE_RESIST_DEFAULT 1000 +#define PULL_FORCE_DEFAULT 1000 + +//Factors/modifiers +#define MOVE_FORCE_PULL_RATIO 1 //Same move force to pull objects +#define MOVE_FORCE_PUSH_RATIO 1 //Same move force to normally push +#define MOVE_FORCE_FORCEPUSH_RATIO 2 //2x move force to forcefully push +#define MOVE_FORCE_CRUSH_RATIO 3 //3x move force to do things like crush objects +#define MOVE_FORCE_THROW_RATIO 1 //Same force throw as resist to throw objects + +#define MOVE_FORCE_OVERPOWERING (MOVE_FORCE_DEFAULT * MOVE_FORCE_CRUSH_RATIO * 10) +#define MOVE_FORCE_EXTREMELY_STRONG (MOVE_FORCE_DEFAULT * MOVE_FORCE_CRUSH_RATIO * 3) +#define MOVE_FORCE_VERY_STRONG ((MOVE_FORCE_DEFAULT * MOVE_FORCE_CRUSH_RATIO) - 1) +#define MOVE_FORCE_STRONG (MOVE_FORCE_DEFAULT * 2) +#define MOVE_FORCE_NORMAL MOVE_FORCE_DEFAULT +#define MOVE_FORCE_WEAK (MOVE_FORCE_DEFAULT / 2) +#define MOVE_FORCE_VERY_WEAK ((MOVE_FORCE_DEFAULT / MOVE_FORCE_CRUSH_RATIO) + 1) +#define MOVE_FORCE_EXTREMELY_WEAK (MOVE_FORCE_DEFAULT / (MOVE_FORCE_CRUSH_RATIO * 3)) \ No newline at end of file diff --git a/code/__DEFINES/time.dm b/code/__DEFINES/time.dm index f13f13510b..e1fff1879e 100644 --- a/code/__DEFINES/time.dm +++ b/code/__DEFINES/time.dm @@ -1,3 +1,27 @@ +#define MIDNIGHT_ROLLOVER 864000 //number of deciseconds in a day + +#define JANUARY 1 +#define FEBRUARY 2 +#define MARCH 3 +#define APRIL 4 +#define MAY 5 +#define JUNE 6 +#define JULY 7 +#define AUGUST 8 +#define SEPTEMBER 9 +#define OCTOBER 10 +#define NOVEMBER 11 +#define DECEMBER 12 + +//Select holiday names -- If you test for a holiday in the code, make the holiday's name a define and test for that instead +#define NEW_YEAR "New Year" +#define VALENTINES "Valentine's Day" +#define APRIL_FOOLS "April Fool's Day" +#define EASTER "Easter" +#define HALLOWEEN "Halloween" +#define CHRISTMAS "Christmas" +#define FESTIVE_SEASON "Festive Season" + /* Days of the week to make it easier to reference them. diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index 3c8d62ce3a..da74045418 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -1291,7 +1291,7 @@ GLOBAL_DATUM_INIT(dview_mob, /mob/dview, new) invisibility = 101 density = FALSE see_in_dark = 1e6 - anchored = TRUE + move_resist = INFINITY var/ready_to_die = FALSE /mob/dview/Initialize() //Properly prevents this mob from gaining huds or joining any global lists diff --git a/code/controllers/subsystem/throwing.dm b/code/controllers/subsystem/throwing.dm index 77ad712b99..bf79cbda34 100644 --- a/code/controllers/subsystem/throwing.dm +++ b/code/controllers/subsystem/throwing.dm @@ -54,6 +54,7 @@ SUBSYSTEM_DEF(throwing) var/dist_y var/dx var/dy + var/force = MOVE_FORCE_DEFAULT var/pure_diagonal var/diagonal_error var/datum/callback/callback diff --git a/code/datums/components/spawner.dm b/code/datums/components/spawner.dm new file mode 100644 index 0000000000..dc46603b1e --- /dev/null +++ b/code/datums/components/spawner.dm @@ -0,0 +1,49 @@ +/datum/component/spawner + var/mob_types = list(/mob/living/simple_animal/hostile/carp) + var/spawn_time = 300 //30 seconds default + var/list/spawned_mobs = list() + var/spawn_delay = 0 + var/max_mobs = 5 + var/spawn_text = "emerges from" + var/list/faction = list("mining") + +/datum/component/spawner/Initialize(_mob_types, _spawn_time, _faction, _spawn_text, _max_mobs) + if(_spawn_time) + spawn_time=_spawn_time + if(_mob_types) + mob_types=_mob_types + if(_faction) + faction=_faction + if(_spawn_text) + spawn_text=_spawn_text + if(_max_mobs) + max_mobs=_max_mobs + + RegisterSignal(parent, list(COMSIG_PARENT_QDELETED), .proc/stop_spawning) + START_PROCESSING(SSprocessing, src) + +/datum/component/spawner/process() + try_spawn_mob() + + +/datum/component/spawner/proc/stop_spawning(force, hint) + STOP_PROCESSING(SSprocessing, src) + for(var/mob/living/simple_animal/L in spawned_mobs) + if(L.nest == src) + L.nest = null + spawned_mobs = null + +/datum/component/spawner/proc/try_spawn_mob() + var/atom/P = parent + if(spawned_mobs.len >= max_mobs) + return 0 + if(spawn_delay > world.time) + return 0 + spawn_delay = world.time + spawn_time + var/chosen_mob_type = pick(mob_types) + var/mob/living/simple_animal/L = new chosen_mob_type(P.loc) + L.flags_1 |= (P.flags_1 & ADMIN_SPAWNED_1) + spawned_mobs += L + L.nest = src + L.faction = src.faction + P.visible_message("[L] [spawn_text] [P].") \ No newline at end of file diff --git a/code/datums/martial/cqc.dm b/code/datums/martial/cqc.dm index c7644997ee..390122bc81 100644 --- a/code/datums/martial/cqc.dm +++ b/code/datums/martial/cqc.dm @@ -127,7 +127,7 @@ if(A.grab_state >= GRAB_AGGRESSIVE) D.grabbedby(A, 1) else - A.start_pulling(D, 1) + A.start_pulling(D, supress_message = TRUE) if(A.pulling) D.stop_pulling() log_combat(A, D, "grabbed", addition="aggressively") diff --git a/code/datums/martial/psychotic_brawl.dm b/code/datums/martial/psychotic_brawl.dm index 34301516dc..50e3f7d334 100644 --- a/code/datums/martial/psychotic_brawl.dm +++ b/code/datums/martial/psychotic_brawl.dm @@ -25,7 +25,7 @@ if(A.grab_state >= GRAB_AGGRESSIVE) D.grabbedby(A, 1) else - A.start_pulling(D, 1) + A.start_pulling(D, supress_message = TRUE) if(A.pulling) D.drop_all_held_items() D.stop_pulling() diff --git a/code/datums/martial/sleeping_carp.dm b/code/datums/martial/sleeping_carp.dm index 801e8c8c7a..933d96b179 100644 --- a/code/datums/martial/sleeping_carp.dm +++ b/code/datums/martial/sleeping_carp.dm @@ -108,7 +108,7 @@ if(A.grab_state >= GRAB_AGGRESSIVE) D.grabbedby(A, 1) else - A.start_pulling(D, 1) + A.start_pulling(D, supress_message = TRUE) if(A.pulling) D.drop_all_held_items() D.stop_pulling() diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 7c9dc3f4fe..e41b0986cb 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -313,7 +313,7 @@ SEND_SIGNAL(src, COMSIG_ATOM_FIRE_ACT, exposed_temperature, exposed_volume) return -/atom/proc/hitby(atom/movable/AM, skipcatch, hitpush, blocked) +/atom/proc/hitby(atom/movable/AM, skipcatch, hitpush, blocked, datum/thrownthing/throwingdatum) if(density && !has_gravity(AM)) //thrown stuff bounces off dense stuff in no grav, unless the thrown stuff ends up inside what it hit(embedding, bola, etc...). addtimer(CALLBACK(src, .proc/hitby_react, AM), 2) diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index 83762240bc..61cea6945e 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -3,6 +3,9 @@ var/last_move = null var/last_move_time = 0 var/anchored = FALSE + var/move_resist = MOVE_RESIST_DEFAULT + var/move_force = MOVE_FORCE_DEFAULT + var/pull_force = PULL_FORCE_DEFAULT var/datum/thrownthing/throwing = null var/throw_speed = 2 //How many tiles to move per ds when being thrown. Float values are fully supported var/throw_range = 7 @@ -71,20 +74,20 @@ return FALSE return ..() -/atom/movable/proc/start_pulling(atom/movable/AM,gs) +/atom/movable/proc/start_pulling(atom/movable/AM, state, force = move_force, supress_message = FALSE) if(QDELETED(AM)) return FALSE - if(!(AM.can_be_pulled(src))) + if(!(AM.can_be_pulled(src, state, force))) return FALSE // If we're pulling something then drop what we're currently pulling and pull this instead. if(pulling) - if(gs==0) + if(state == 0) stop_pulling() return FALSE // Are we trying to pull something we are already pulling? Then enter grab cycle and end. if(AM == pulling) - grab_state = gs + grab_state = state if(istype(AM,/mob/living)) var/mob/living/AMob = AM AMob.grabbedby(src) @@ -95,11 +98,12 @@ AM.pulledby.stop_pulling() //an object can't be pulled by two mobs at once. pulling = AM AM.pulledby = src - grab_state = gs + grab_state = state if(ismob(AM)) var/mob/M = AM log_combat(src, M, "grabbed", addition="passive grab") - visible_message("[src] has grabbed [M] passively!") + if(!supress_message) + visible_message("[src] has grabbed [M] passively!") return TRUE /atom/movable/proc/stop_pulling() @@ -461,17 +465,19 @@ /atom/movable/proc/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) set waitfor = 0 SEND_SIGNAL(src, COMSIG_MOVABLE_IMPACT, hit_atom, throwingdatum) - return hit_atom.hitby(src) + return hit_atom.hitby(src, throwingdatum=throwingdatum) -/atom/movable/hitby(atom/movable/AM, skipcatch, hitpush = TRUE, blocked) - if(!anchored && hitpush) +/atom/movable/hitby(atom/movable/AM, skipcatch, hitpush = TRUE, blocked, datum/thrownthing/throwingdatum) + if(!anchored && hitpush && (!throwingdatum || (throwingdatum.force >= (move_resist * MOVE_FORCE_PUSH_RATIO)))) step(src, AM.dir) ..() -/atom/movable/proc/safe_throw_at(atom/target, range, speed, mob/thrower, spin=TRUE, diagonals_first = FALSE, var/datum/callback/callback) - return throw_at(target, range, speed, thrower, spin, diagonals_first, callback) +/atom/movable/proc/safe_throw_at(atom/target, range, speed, mob/thrower, spin = TRUE, diagonals_first = FALSE, datum/callback/callback, force = INFINITY) + if((force < (move_resist * MOVE_FORCE_THROW_RATIO)) || (move_resist == INFINITY)) + return + return throw_at(target, range, speed, thrower, spin, diagonals_first, callback, force) -/atom/movable/proc/throw_at(atom/target, range, speed, mob/thrower, spin=TRUE, diagonals_first = FALSE, var/datum/callback/callback) //If this returns FALSE then callback will not be called. +/atom/movable/proc/throw_at(atom/target, range, speed, mob/thrower, spin = TRUE, diagonals_first = FALSE, datum/callback/callback, force = INFINITY) //If this returns FALSE then callback will not be called. . = FALSE if (!target || speed <= 0) return @@ -517,6 +523,7 @@ TT.speed = speed TT.thrower = thrower TT.diagonals_first = diagonals_first + TT.force = force TT.callback = callback var/dist_x = abs(target.x - src.x) @@ -565,6 +572,22 @@ return 0 return 1 +/atom/movable/proc/force_pushed(atom/movable/pusher, force = MOVE_FORCE_DEFAULT, direction) + return FALSE + +/atom/movable/proc/force_push(atom/movable/AM, force = move_force, direction, silent = FALSE) + . = AM.force_pushed(src, force, direction) + if(!silent && .) + visible_message("[src] forcefully pushes against [AM]!", "You forcefully push against [AM]!") + +/atom/movable/proc/move_crush(atom/movable/AM, force = move_force, direction, silent = FALSE) + . = AM.move_crushed(src, force, direction) + if(!silent && .) + visible_message("[src] crushes past [AM]!", "You crush [AM]!") + +/atom/movable/proc/move_crushed(atom/movable/pusher, force = MOVE_FORCE_DEFAULT, direction) + return FALSE + /atom/movable/CanPass(atom/movable/mover, turf/target) if(mover in buckled_mobs) return 1 @@ -784,14 +807,15 @@ /atom/movable/proc/get_cell() return -/atom/movable/proc/can_be_pulled(user) +/atom/movable/proc/can_be_pulled(user, grab_state, force) if(src == user || !isturf(loc)) return FALSE if(anchored || throwing) return FALSE + if(force < (move_resist * MOVE_FORCE_PULL_RATIO)) + return FALSE return TRUE - /obj/item/proc/do_pickup_animation(atom/target) set waitfor = FALSE if(!istype(loc, /turf)) diff --git a/code/game/gamemodes/clown_ops/clown_weapons.dm b/code/game/gamemodes/clown_ops/clown_weapons.dm index 9d1a3b650c..60ae5685ec 100644 --- a/code/game/gamemodes/clown_ops/clown_weapons.dm +++ b/code/game/gamemodes/clown_ops/clown_weapons.dm @@ -145,9 +145,9 @@ C.throw_mode_on() //so they can catch it on the return. return ..() -/obj/item/shield/energy/bananium/throw_impact(atom/hit_atom) +/obj/item/shield/energy/bananium/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) if(active) - var/caught = hit_atom.hitby(src, 0, 0) + var/caught = hit_atom.hitby(src, FALSE, FALSE, throwingdatum=throwingdatum) if(iscarbon(hit_atom) && !caught)//if they are a carbon and they didn't catch it GET_COMPONENT(slipper, /datum/component/slippery) slipper.Slip(hit_atom) diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index a2da7de29a..15b3c66c8b 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -5,6 +5,7 @@ icon_state = "door1" opacity = 1 density = TRUE + move_resist = MOVE_FORCE_VERY_STRONG layer = OPEN_DOOR_LAYER power_channel = ENVIRON max_integrity = 350 diff --git a/code/game/machinery/shieldgen.dm b/code/game/machinery/shieldgen.dm index fc6577a4f1..16016b8e18 100644 --- a/code/game/machinery/shieldgen.dm +++ b/code/game/machinery/shieldgen.dm @@ -4,6 +4,7 @@ icon = 'icons/effects/effects.dmi' icon_state = "shield-old" density = TRUE + move_resist = INFINITY opacity = 0 anchored = TRUE resistance_flags = LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF @@ -93,6 +94,7 @@ /obj/machinery/shieldgen/proc/shields_up() active = TRUE update_icon() + move_resist = INFINITY for(var/turf/target_tile in range(shield_range, src)) if(isspaceturf(target_tile) && !(locate(/obj/structure/emergency_shield) in target_tile)) @@ -101,6 +103,7 @@ /obj/machinery/shieldgen/proc/shields_down() active = FALSE + move_resist = initial(move_resist) update_icon() QDEL_LIST(deployed_shields) diff --git a/code/game/mecha/equipment/tools/other_tools.dm b/code/game/mecha/equipment/tools/other_tools.dm index a8ba9850ff..07ecdec508 100644 --- a/code/game/mecha/equipment/tools/other_tools.dm +++ b/code/game/mecha/equipment/tools/other_tools.dm @@ -84,7 +84,7 @@ switch(mode) if(1) if(!locked) - if(!istype(target) || target.anchored) + if(!istype(target) || target.anchored || target.move_resist >= MOVE_FORCE_EXTREMELY_STRON) occupant_message("Unable to lock on [target]") return locked = target @@ -110,7 +110,7 @@ else atoms = orange(3, target) for(var/atom/movable/A in atoms) - if(A.anchored) + if(A.anchored || A.move_resist >= MOVE_FORCE_EXTREMELY_STRONG) continue spawn(0) var/iter = 5-get_dist(A,target) diff --git a/code/game/mecha/equipment/weapons/weapons.dm b/code/game/mecha/equipment/weapons/weapons.dm index 9f8f3ef742..5d4d0e5899 100644 --- a/code/game/mecha/equipment/weapons/weapons.dm +++ b/code/game/mecha/equipment/weapons/weapons.dm @@ -436,7 +436,7 @@ throwforce = 35 icon_state = "punching_glove" -/obj/item/punching_glove/throw_impact(atom/hit_atom) +/obj/item/punching_glove/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) if(!..()) if(ismovableatom(hit_atom)) var/atom/movable/AM = hit_atom diff --git a/code/game/mecha/mecha_defense.dm b/code/game/mecha/mecha_defense.dm index 62a62b569d..90cd5df79c 100644 --- a/code/game/mecha/mecha_defense.dm +++ b/code/game/mecha/mecha_defense.dm @@ -108,8 +108,8 @@ /obj/mecha/attack_tk() return -/obj/mecha/hitby(atom/movable/A as mob|obj) //wrapper - log_message("Hit by [A].", color="red") +/obj/mecha/hitby(atom/movable/AM, skipcatch, hitpush, blocked, datum/thrownthing/throwingdatum) //wrapper + log_message("Hit by [AM].", color="red") . = ..() diff --git a/code/game/objects/effects/effects.dm b/code/game/objects/effects/effects.dm index 410923fe25..ccde9c2254 100644 --- a/code/game/objects/effects/effects.dm +++ b/code/game/objects/effects/effects.dm @@ -4,6 +4,7 @@ /obj/effect icon = 'icons/effects/effects.dmi' resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF | FREEZE_PROOF + move_resist = INFINITY obj_flags = 0 /obj/effect/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, attack_dir) diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 6a706fede9..542c3249ac 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -544,21 +544,21 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) else return -/obj/item/throw_impact(atom/A, datum/thrownthing/throwingdatum) - if(A && !QDELETED(A)) - SEND_SIGNAL(src, COMSIG_MOVABLE_IMPACT, A, throwingdatum) - if(is_hot() && isliving(A)) - var/mob/living/L = A +/obj/item/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) + if(hit_atom && !QDELETED(hit_atom)) + SEND_SIGNAL(src, COMSIG_MOVABLE_IMPACT, hit_atom, throwingdatum) + if(is_hot() && isliving(hit_atom)) + var/mob/living/L = hit_atom L.IgniteMob() var/itempush = 1 if(w_class < 4) itempush = 0 //too light to push anything - return A.hitby(src, 0, itempush) + return hit_atom.hitby(src, 0, itempush, throwingdatum=throwingdatum) -/obj/item/throw_at(atom/target, range, speed, mob/thrower, spin=1, diagonals_first = 0, datum/callback/callback) +/obj/item/throw_at(atom/target, range, speed, mob/thrower, spin=1, diagonals_first = 0, datum/callback/callback, force) thrownby = thrower callback = CALLBACK(src, .proc/after_throw, callback) //replace their callback with our own - . = ..(target, range, speed, thrower, spin, diagonals_first, callback) + . = ..(target, range, speed, thrower, spin, diagonals_first, callback, force) /obj/item/proc/after_throw(datum/callback/callback) if (callback) //call the original callback @@ -649,7 +649,7 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) else . = "" -/obj/item/hitby(atom/movable/AM) +/obj/item/hitby(atom/movable/AM, skipcatch, hitpush, blocked, datum/thrownthing/throwingdatum) return /obj/item/attack_hulk(mob/living/carbon/human/user) diff --git a/code/game/objects/items/dice.dm b/code/game/objects/items/dice.dm index cb0d4ec4ac..c6af6246bf 100644 --- a/code/game/objects/items/dice.dm +++ b/code/game/objects/items/dice.dm @@ -160,7 +160,7 @@ /obj/item/dice/attack_self(mob/user) diceroll(user) -/obj/item/dice/throw_impact(atom/target) +/obj/item/dice/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) diceroll(thrownby) . = ..() diff --git a/code/game/objects/items/handcuffs.dm b/code/game/objects/items/handcuffs.dm index 246dd77684..d27ab8231b 100644 --- a/code/game/objects/items/handcuffs.dm +++ b/code/game/objects/items/handcuffs.dm @@ -340,7 +340,7 @@ return playsound(src.loc,'sound/weapons/bolathrow.ogg', 75, 1) -/obj/item/restraints/legcuffs/bola/throw_impact(atom/hit_atom) +/obj/item/restraints/legcuffs/bola/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) if(..() || !iscarbon(hit_atom))//if it gets caught or the target can't be cuffed, return//abort var/mob/living/carbon/C = hit_atom @@ -368,7 +368,7 @@ w_class = WEIGHT_CLASS_SMALL breakouttime = 60 -/obj/item/restraints/legcuffs/bola/energy/throw_impact(atom/hit_atom) +/obj/item/restraints/legcuffs/bola/energy/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) if(iscarbon(hit_atom)) var/obj/item/restraints/legcuffs/beartrap/B = new /obj/item/restraints/legcuffs/beartrap/energy/cyborg(get_turf(hit_atom)) B.Crossed(hit_atom) diff --git a/code/game/objects/items/melee/misc.dm b/code/game/objects/items/melee/misc.dm index 10b84917bb..7494eb8e1c 100644 --- a/code/game/objects/items/melee/misc.dm +++ b/code/game/objects/items/melee/misc.dm @@ -332,13 +332,13 @@ if(proximity_flag) consume_everything(target) -/obj/item/melee/supermatter_sword/throw_impact(target) +/obj/item/melee/supermatter_sword/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) ..() - if(ismob(target)) - var/mob/M + if(ismob(hit_atom)) + var/mob/M = hit_atom if(src.loc == M) M.dropItemToGround(src) - consume_everything(target) + consume_everything(hit_atom) /obj/item/melee/supermatter_sword/pickup(user) ..() diff --git a/code/game/objects/items/singularityhammer.dm b/code/game/objects/items/singularityhammer.dm index b6559c9091..1c20fcfacc 100644 --- a/code/game/objects/items/singularityhammer.dm +++ b/code/game/objects/items/singularityhammer.dm @@ -105,10 +105,10 @@ playsound(src.loc, "sparks", 50, 1) shock(M) -/obj/item/twohanded/mjollnir/throw_impact(atom/target) +/obj/item/twohanded/mjollnir/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) . = ..() - if(isliving(target)) - shock(target) + if(isliving(hit_atom)) + shock(hit_atom) /obj/item/twohanded/mjollnir/update_icon() //Currently only here to fuck with the on-mob icons. icon_state = "mjollnir[wielded]" diff --git a/code/game/objects/items/stacks/bscrystal.dm b/code/game/objects/items/stacks/bscrystal.dm index 49a735af9c..2d494ca186 100644 --- a/code/game/objects/items/stacks/bscrystal.dm +++ b/code/game/objects/items/stacks/bscrystal.dm @@ -35,7 +35,7 @@ /obj/item/stack/ore/bluespace_crystal/proc/blink_mob(mob/living/L) do_teleport(L, get_turf(L), blink_range, asoundin = 'sound/effects/phasein.ogg', channel = TELEPORT_CHANNEL_BLUESPACE) -/obj/item/stack/ore/bluespace_crystal/throw_impact(atom/hit_atom) +/obj/item/stack/ore/bluespace_crystal/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) if(!..()) // not caught in mid-air visible_message("[src] fizzles and disappears upon impact!") var/turf/T = get_turf(hit_atom) diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm index 155d1f1643..ea9440830d 100644 --- a/code/game/objects/items/stacks/stack.dm +++ b/code/game/objects/items/stacks/stack.dm @@ -335,7 +335,7 @@ merge(o) . = ..() -/obj/item/stack/hitby(atom/movable/AM, skip, hitpush) +/obj/item/stack/hitby(atom/movable/AM, skipcatch, hitpush, blocked, datum/thrownthing/throwingdatum) if(istype(AM, merge_type)) merge(AM) . = ..() diff --git a/code/game/objects/items/stunbaton.dm b/code/game/objects/items/stunbaton.dm index bfe630ba01..81956f147c 100644 --- a/code/game/objects/items/stunbaton.dm +++ b/code/game/objects/items/stunbaton.dm @@ -40,7 +40,7 @@ cell = new preload_cell_type(src) update_icon() -/obj/item/melee/baton/throw_impact(atom/hit_atom) +/obj/item/melee/baton/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) ..() //Only mob/living types have stun handling if(status && prob(throw_hit_chance) && iscarbon(hit_atom)) diff --git a/code/game/objects/items/theft_tools.dm b/code/game/objects/items/theft_tools.dm index b99be7e988..243787dcb4 100644 --- a/code/game/objects/items/theft_tools.dm +++ b/code/game/objects/items/theft_tools.dm @@ -235,7 +235,7 @@ if(proximity && ismovableatom(O) && O != sliver) Consume(O, user) -/obj/item/hemostat/supermatter/throw_impact(atom/hit_atom) // no instakill supermatter javelins +/obj/item/hemostat/supermatter/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) // no instakill supermatter javelins if(sliver) sliver.forceMove(loc) to_chat(usr, "\The [sliver] falls out of \the [src] as you throw them.") diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index 46fabea8b0..2e4c45fa96 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -84,7 +84,7 @@ else return ..() -/obj/item/toy/balloon/throw_impact(atom/hit_atom) +/obj/item/toy/balloon/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) if(!..()) //was it caught by a mob? balloon_burst(hit_atom) @@ -384,7 +384,7 @@ /obj/item/toy/snappop/fire_act(exposed_temperature, exposed_volume) pop_burst() -/obj/item/toy/snappop/throw_impact(atom/hit_atom) +/obj/item/toy/snappop/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) if(!..()) pop_burst() @@ -1006,7 +1006,7 @@ icon_state = "minimeteor" w_class = WEIGHT_CLASS_SMALL -/obj/item/toy/minimeteor/throw_impact(atom/hit_atom) +/obj/item/toy/minimeteor/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) if(!..()) playsound(src, 'sound/effects/meteorimpact.ogg', 40, 1) for(var/mob/M in urange(10, src)) @@ -1055,7 +1055,7 @@ if(user.dropItemToGround(src)) throw_at(target, throw_range, throw_speed) -/obj/item/toy/snowball/throw_impact(atom/hit_atom) +/obj/item/toy/snowball/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) if(!..()) playsound(src, 'sound/effects/pop.ogg', 20, 1) qdel(src) diff --git a/code/game/objects/obj_defense.dm b/code/game/objects/obj_defense.dm index 70a05a8d40..2d99f0e073 100644 --- a/code/game/objects/obj_defense.dm +++ b/code/game/objects/obj_defense.dm @@ -46,7 +46,7 @@ if(BURN) playsound(src.loc, 'sound/items/welder.ogg', 100, 1) -/obj/hitby(atom/movable/AM) +/obj/hitby(atom/movable/AM, skipcatch, hitpush, blocked, datum/thrownthing/throwingdatum) ..() var/throwdamage = AM.throwforce if(isobj(AM)) @@ -126,6 +126,17 @@ if(. && !play_soundeffect) playsound(src, 'sound/effects/meteorimpact.ogg', 100, 1) +/obj/force_pushed(atom/movable/pusher, force = MOVE_FORCE_DEFAULT, direction) + return TRUE + +/obj/move_crushed(atom/movable/pusher, force = MOVE_FORCE_DEFAULT, direction) + collision_damage(pusher, force, direction) + return TRUE + +/obj/proc/collision_damage(atom/movable/pusher, force = MOVE_FORCE_DEFAULT, direction) + var/amt = max(0, ((force - (move_resist * MOVE_FORCE_CRUSH_RATIO)) / (move_resist * MOVE_FORCE_CRUSH_RATIO)) * 10) + take_damage(amt, BRUTE) + /obj/attack_slime(mob/living/simple_animal/slime/user) if(!user.is_adult) return diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm index 6dd8a43130..cd19ceda50 100644 --- a/code/game/objects/objs.dm +++ b/code/game/objects/objs.dm @@ -80,7 +80,7 @@ SEND_SIGNAL(src, COMSIG_OBJ_SETANCHORED, anchorvalue) anchored = anchorvalue -/obj/throw_at(atom/target, range, speed, mob/thrower, spin=1, diagonals_first = 0, datum/callback/callback) +/obj/throw_at(atom/target, range, speed, mob/thrower, spin=1, diagonals_first = 0, datum/callback/callback, force) ..() if(obj_flags & FROZEN) visible_message("[src] shatters into a million pieces!") diff --git a/code/game/objects/structures/ghost_role_spawners.dm b/code/game/objects/structures/ghost_role_spawners.dm index b820e93c7b..e71a2720ae 100644 --- a/code/game/objects/structures/ghost_role_spawners.dm +++ b/code/game/objects/structures/ghost_role_spawners.dm @@ -44,6 +44,7 @@ roundstart = FALSE death = FALSE anchored = FALSE + move_resist = MOVE_FORCE_NORMAL density = FALSE flavour_text = "You are an ash walker. Your tribe worships the Necropolis. The wastes are sacred ground, its monsters a blessed bounty. You would never leave its beautiful expanse. \ You have seen lights in the distance... they foreshadow the arrival of outsiders that seek to tear apart the Necropolis and its domain. Fresh sacrifices for your nest." @@ -118,6 +119,7 @@ roundstart = FALSE death = FALSE anchored = FALSE + move_resist = MOVE_FORCE_NORMAL density = FALSE var/has_owner = FALSE var/can_transfer = TRUE //if golems can switch bodies to this new shell diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm index 00d1690d86..460059ffbf 100644 --- a/code/game/objects/structures/grille.dm +++ b/code/game/objects/structures/grille.dm @@ -258,7 +258,7 @@ take_damage(1, BURN, 0, 0) ..() -/obj/structure/grille/hitby(AM as mob|obj) +/obj/structure/grille/hitby(atom/movable/AM, skipcatch, hitpush, blocked, datum/thrownthing/throwingdatum) if(isobj(AM)) if(prob(50) && anchored && !broken) var/obj/O = AM diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/necropolis_tendril.dm b/code/game/objects/structures/lavaland/necropolis_tendril.dm similarity index 71% rename from code/modules/mob/living/simple_animal/hostile/mining_mobs/necropolis_tendril.dm rename to code/game/objects/structures/lavaland/necropolis_tendril.dm index e3c81b2639..b1e9a81087 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/necropolis_tendril.dm +++ b/code/game/objects/structures/lavaland/necropolis_tendril.dm @@ -1,39 +1,32 @@ //Necropolis Tendrils, which spawn lavaland monsters and break into a chasm when killed -/obj/effect/light_emitter/tendril - set_luminosity = 4 - set_cap = 2.5 - light_color = LIGHT_COLOR_LAVA - -/mob/living/simple_animal/hostile/spawner/lavaland +/obj/structure/spawner/lavaland name = "necropolis tendril" desc = "A vile tendril of corruption, originating deep underground. Terrible monsters are pouring out of it." + icon = 'icons/mob/nest.dmi' icon_state = "tendril" - icon_living = "tendril" - icon_dead = "tendril" + faction = list("mining") - weather_immunities = list("lava","ash") - health = 250 - maxHealth = 250 max_mobs = 3 - spawn_time = 300 //30 seconds default + max_integrity = 250 mob_types = list(/mob/living/simple_animal/hostile/asteroid/basilisk/watcher/tendril) - spawn_text = "emerges from" - atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 5, "min_n2" = 0, "max_n2" = 0) - minbodytemp = 0 - maxbodytemp = INFINITY - loot = list(/obj/effect/collapse, /obj/structure/closet/crate/necropolis/tendril) - del_on_death = 1 + + move_resist=INFINITY // just killing it tears a massive hole in the ground, let's not move it + anchored = TRUE + resistance_flags = FIRE_PROOF | LAVA_PROOF + var/gps = null var/obj/effect/light_emitter/tendril/emitted_light -/mob/living/simple_animal/hostile/spawner/lavaland/goliath + +/obj/structure/spawner/lavaland/goliath mob_types = list(/mob/living/simple_animal/hostile/asteroid/goliath/beast/tendril) -/mob/living/simple_animal/hostile/spawner/lavaland/legion +/obj/structure/spawner/lavaland/legion mob_types = list(/mob/living/simple_animal/hostile/asteroid/hivelord/legion/tendril) -/mob/living/simple_animal/hostile/spawner/lavaland/Initialize() +GLOBAL_LIST_INIT(tendrils, list()) +/obj/structure/spawner/lavaland/Initialize() . = ..() emitted_light = new(loc) for(var/F in RANGE_TURFS(1, src)) @@ -41,18 +34,19 @@ var/turf/closed/mineral/M = F M.ScrapeAway(null, CHANGETURF_IGNORE_AIR) gps = new /obj/item/gps/internal(src) + GLOB.tendrils += src -/mob/living/simple_animal/hostile/spawner/lavaland/Destroy() - QDEL_NULL(emitted_light) - QDEL_NULL(gps) +/obj/structure/spawner/lavaland/deconstruct(disassembled) + new /obj/effect/collapse(loc) + new /obj/structure/closet/crate/necropolis/tendril(loc) return ..() -/mob/living/simple_animal/hostile/spawner/lavaland/death() + +/obj/structure/spawner/lavaland/Destroy() var/last_tendril = TRUE - for(var/mob/living/simple_animal/hostile/spawner/lavaland/other in GLOB.mob_living_list) - if(other != src) - last_tendril = FALSE - break + if(GLOB.tendrils.len>1) + last_tendril = FALSE + if(last_tendril && !(flags_1 & ADMIN_SPAWNED_1)) if(SSmedals.hub_enabled) for(var/mob/living/L in view(7,src)) @@ -60,7 +54,15 @@ continue SSmedals.UnlockMedal("[BOSS_MEDAL_TENDRIL] [ALL_KILL_MEDAL]", L.client) SSmedals.SetScore(TENDRIL_CLEAR_SCORE, L.client, 1) - ..() + GLOB.tendrils -= src + QDEL_NULL(emitted_light) + QDEL_NULL(gps) + return ..() + +/obj/effect/light_emitter/tendril + set_luminosity = 4 + set_cap = 2.5 + light_color = LIGHT_COLOR_LAVA /obj/effect/collapse name = "collapsing necropolis tendril" @@ -92,4 +94,4 @@ for(var/turf/T in range(2,src)) if(!T.density) T.TerraformTurf(/turf/open/chasm/lavaland, /turf/open/chasm/lavaland) - qdel(src) + qdel(src) \ No newline at end of file diff --git a/code/game/objects/structures/spawner.dm b/code/game/objects/structures/spawner.dm new file mode 100644 index 0000000000..e67ef7af60 --- /dev/null +++ b/code/game/objects/structures/spawner.dm @@ -0,0 +1,75 @@ +/obj/structure/spawner + name = "monster nest" + icon = 'icons/mob/animal.dmi' + icon_state = "hole" + max_integrity = 100 + + move_resist = MOVE_FORCE_EXTREMELY_STRONG + anchored = TRUE + density = TRUE + + var/max_mobs = 5 + var/spawn_time = 300 //30 seconds default + var/mob_types = list(/mob/living/simple_animal/hostile/carp) + var/spawn_text = "emerges from" + var/faction = list("hostile") + +/obj/structure/spawner/Initialize() + . = ..() + AddComponent(/datum/component/spawner, mob_types, spawn_time, faction, spawn_text, max_mobs) + +/obj/structure/spawner/syndicate + name = "warp beacon" + icon = 'icons/obj/device.dmi' + icon_state = "syndbeacon" + spawn_text = "warps in from" + mob_types = list(/mob/living/simple_animal/hostile/syndicate/ranged) + faction = list(ROLE_SYNDICATE) + +/obj/structure/spawner/skeleton + name = "bone pit" + desc = "A pit full of bones, and some still seem to be moving..." + icon_state = "hole" + icon = 'icons/mob/nest.dmi' + max_integrity = 150 + max_mobs = 15 + spawn_time = 150 + mob_types = list(/mob/living/simple_animal/hostile/skeleton) + spawn_text = "climbs out of" + faction = list("skeleton") + +/obj/structure/spawner/mining + name = "monster den" + desc = "A hole dug into the ground, harboring all kinds of monsters found within most caves or mining asteroids." + icon_state = "hole" + max_integrity = 200 + max_mobs = 3 + icon = 'icons/mob/nest.dmi' + spawn_text = "crawls out of" + mob_types = list(/mob/living/simple_animal/hostile/asteroid/goldgrub, /mob/living/simple_animal/hostile/asteroid/goliath, /mob/living/simple_animal/hostile/asteroid/hivelord, /mob/living/simple_animal/hostile/asteroid/basilisk, /mob/living/simple_animal/hostile/asteroid/fugu) + faction = list("mining") + +/obj/structure/spawner/mining/goldgrub + name = "goldgrub den" + desc = "A den housing a nest of goldgrubs, annoying but arguably much better than anything else you'll find in a nest." + mob_types = list(/mob/living/simple_animal/hostile/asteroid/goldgrub) + +/obj/structure/spawner/mining/goliath + name = "goliath den" + desc = "A den housing a nest of goliaths, oh god why?" + mob_types = list(/mob/living/simple_animal/hostile/asteroid/goliath) + +/obj/structure/spawner/mining/hivelord + name = "hivelord den" + desc = "A den housing a nest of hivelords." + mob_types = list(/mob/living/simple_animal/hostile/asteroid/hivelord) + +/obj/structure/spawner/mining/basilisk + name = "basilisk den" + desc = "A den housing a nest of basilisks, bring a coat." + mob_types = list(/mob/living/simple_animal/hostile/asteroid/basilisk) + +/obj/structure/spawner/mining/wumborian + name = "wumborian fugu den" + desc = "A den housing a nest of wumborian fugus, how do they all even fit in there?" + mob_types = list(/mob/living/simple_animal/hostile/asteroid/fugu) \ No newline at end of file diff --git a/code/game/turfs/simulated/floor/plating/asteroid.dm b/code/game/turfs/simulated/floor/plating/asteroid.dm index d9966ee55c..d46c2363e3 100644 --- a/code/game/turfs/simulated/floor/plating/asteroid.dm +++ b/code/game/turfs/simulated/floor/plating/asteroid.dm @@ -155,9 +155,9 @@ has_data = TRUE /turf/open/floor/plating/asteroid/airless/cave/volcanic - mob_spawn_list = list(/mob/living/simple_animal/hostile/asteroid/goliath/beast/random = 50, /mob/living/simple_animal/hostile/spawner/lavaland/goliath = 3, \ - /mob/living/simple_animal/hostile/asteroid/basilisk/watcher/random = 40, /mob/living/simple_animal/hostile/spawner/lavaland = 2, \ - /mob/living/simple_animal/hostile/asteroid/hivelord/legion/random = 30, /mob/living/simple_animal/hostile/spawner/lavaland/legion = 3, \ + mob_spawn_list = list(/mob/living/simple_animal/hostile/asteroid/goliath/beast/random = 50, /obj/structure/spawner/lavaland/goliath = 3, \ + /mob/living/simple_animal/hostile/asteroid/basilisk/watcher/random = 40, /obj/structure/spawner/lavaland = 2, \ + /mob/living/simple_animal/hostile/asteroid/hivelord/legion/random = 30, /obj/structure/spawner/lavaland/legion = 3, \ SPAWN_MEGAFAUNA = 6, /mob/living/simple_animal/hostile/asteroid/goldgrub = 10) data_having_type = /turf/open/floor/plating/asteroid/airless/cave/volcanic/has_data @@ -278,7 +278,7 @@ return //if there's a megafauna within standard view don't spawn anything at all if(ispath(randumb, /mob/living/simple_animal/hostile/asteroid) || istype(H, /mob/living/simple_animal/hostile/asteroid)) return //if the random is a standard mob, avoid spawning if there's another one within 12 tiles - if((ispath(randumb, /mob/living/simple_animal/hostile/spawner/lavaland) || istype(H, /mob/living/simple_animal/hostile/spawner/lavaland)) && get_dist(src, H) <= 2) + if((ispath(randumb, /obj/structure/spawner/lavaland) || istype(H, /obj/structure/spawner/lavaland)) && get_dist(src, H) <= 2) return //prevents tendrils spawning in each other's collapse range new randumb(T) diff --git a/code/game/turfs/simulated/lava.dm b/code/game/turfs/simulated/lava.dm index e24736ecf3..6a5a8aee3c 100644 --- a/code/game/turfs/simulated/lava.dm +++ b/code/game/turfs/simulated/lava.dm @@ -36,7 +36,7 @@ if(burn_stuff(AM)) START_PROCESSING(SSobj, src) -/turf/open/lava/hitby(atom/movable/AM) +/turf/open/lava/hitby(atom/movable/AM, skipcatch, hitpush, blocked, datum/thrownthing/throwingdatum) if(burn_stuff(AM)) START_PROCESSING(SSobj, src) diff --git a/code/game/turfs/simulated/wall/misc_walls.dm b/code/game/turfs/simulated/wall/misc_walls.dm index 8b63d60939..d445be91cb 100644 --- a/code/game/turfs/simulated/wall/misc_walls.dm +++ b/code/game/turfs/simulated/wall/misc_walls.dm @@ -25,7 +25,7 @@ if(stored_pulling) stored_pulling.setDir(get_dir(stored_pulling.loc, newloc)) stored_pulling.forceMove(src) - H.start_pulling(stored_pulling, TRUE) + H.start_pulling(stored_pulling, supress_message = TRUE) /turf/closed/wall/mineral/cult/ratvar_act() . = ..() diff --git a/code/modules/antagonists/clockcult/clock_items/clock_weapons/ratvarian_spear.dm b/code/modules/antagonists/clockcult/clock_items/clock_weapons/ratvarian_spear.dm index 3ad6684725..a004714e5e 100644 --- a/code/modules/antagonists/clockcult/clock_items/clock_weapons/ratvarian_spear.dm +++ b/code/modules/antagonists/clockcult/clock_items/clock_weapons/ratvarian_spear.dm @@ -45,10 +45,10 @@ bonus_damage *= 3 //total 30 damage on cultists, 50 with ratvar GLOB.clockwork_vitality += target.adjustFireLoss(bonus_damage) //adds the damage done to existing vitality -/obj/item/clockwork/weapon/ratvarian_spear/throw_impact(atom/target) - var/turf/T = get_turf(target) - if(isliving(target)) - var/mob/living/L = target +/obj/item/clockwork/weapon/ratvarian_spear/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) + var/turf/T = get_turf(hit_atom) + if(isliving(hit_atom)) + var/mob/living/L = hit_atom if(is_servant_of_ratvar(L)) if(L.put_in_active_hand(src)) L.visible_message("[L] catches [src] out of the air!") diff --git a/code/modules/antagonists/cult/cult_items.dm b/code/modules/antagonists/cult/cult_items.dm index 10759afcd0..445e4c9302 100644 --- a/code/modules/antagonists/cult/cult_items.dm +++ b/code/modules/antagonists/cult/cult_items.dm @@ -264,7 +264,7 @@ to_chat(user, "The bola seems to take on a life of its own!") throw_impact(user) -/obj/item/restraints/legcuffs/bola/cult/throw_impact(atom/hit_atom) +/obj/item/restraints/legcuffs/bola/cult/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) if(iscultist(hit_atom)) return . = ..() @@ -689,10 +689,10 @@ /obj/item/twohanded/cult_spear/update_icon() icon_state = "bloodspear[wielded]" -/obj/item/twohanded/cult_spear/throw_impact(atom/target) - var/turf/T = get_turf(target) - if(isliving(target)) - var/mob/living/L = target +/obj/item/twohanded/cult_spear/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) + var/turf/T = get_turf(hit_atom) + if(isliving(hit_atom)) + var/mob/living/L = hit_atom if(iscultist(L)) playsound(src, 'sound/weapons/throwtap.ogg', 50) if(L.put_in_active_hand(src)) @@ -983,11 +983,11 @@ return TRUE return FALSE -/obj/item/shield/mirror/throw_impact(atom/target, throwingdatum) - var/turf/T = get_turf(target) +/obj/item/shield/mirror/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) + var/turf/T = get_turf(hit_atom) var/datum/thrownthing/D = throwingdatum - if(isliving(target)) - var/mob/living/L = target + if(isliving(hit_atom)) + var/mob/living/L = hit_atom if(iscultist(L)) playsound(src, 'sound/weapons/throwtap.ogg', 50) if(L.put_in_active_hand(src)) diff --git a/code/modules/antagonists/revenant/revenant.dm b/code/modules/antagonists/revenant/revenant.dm index f380fa68e9..66eab69f39 100644 --- a/code/modules/antagonists/revenant/revenant.dm +++ b/code/modules/antagonists/revenant/revenant.dm @@ -43,7 +43,7 @@ wander = FALSE density = FALSE movement_type = FLYING - anchored = TRUE + move_resist = MOVE_FORCE_OVERPOWERING mob_size = MOB_SIZE_TINY pass_flags = PASSTABLE | PASSGRILLE | PASSMOB speed = 1 @@ -360,7 +360,7 @@ user.dropItemToGround(src) scatter() -/obj/item/ectoplasm/revenant/throw_impact(atom/hit_atom) +/obj/item/ectoplasm/revenant/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) ..() if(inert) return diff --git a/code/modules/assembly/infrared.dm b/code/modules/assembly/infrared.dm index 07f31a6678..e9855bce46 100644 --- a/code/modules/assembly/infrared.dm +++ b/code/modules/assembly/infrared.dm @@ -142,7 +142,7 @@ . = ..() olddir = dir -/obj/item/assembly/infra/throw_impact() +/obj/item/assembly/infra/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) . = ..() if(!olddir) return diff --git a/code/modules/assembly/mousetrap.dm b/code/modules/assembly/mousetrap.dm index a2a9fb0105..9889a9e2c6 100644 --- a/code/modules/assembly/mousetrap.dm +++ b/code/modules/assembly/mousetrap.dm @@ -130,10 +130,10 @@ return FALSE -/obj/item/assembly/mousetrap/hitby(A as mob|obj) +/obj/item/assembly/mousetrap/hitby(atom/hit_atom, skipcatch = FALSE, hitpush = TRUE, blocked = FALSE, datum/thrownthing/throwingdatum) if(!armed) return ..() - visible_message("[src] is triggered by [A].") + visible_message("[src] is triggered by [hit_atom].") triggered(null) diff --git a/code/modules/atmospherics/environmental/LINDA_turf_tile.dm b/code/modules/atmospherics/environmental/LINDA_turf_tile.dm index ea555c9489..3967fc39b5 100644 --- a/code/modules/atmospherics/environmental/LINDA_turf_tile.dm +++ b/code/modules/atmospherics/environmental/LINDA_turf_tile.dm @@ -266,12 +266,13 @@ /atom/movable/proc/experience_pressure_difference(pressure_difference, direction, pressure_resistance_prob_delta = 0) var/const/PROBABILITY_OFFSET = 25 var/const/PROBABILITY_BASE_PRECENT = 75 + var/max_force = sqrt(pressure_difference)*(MOVE_FORCE_DEFAULT / 5) set waitfor = 0 var/move_prob = 100 if (pressure_resistance > 0) move_prob = (pressure_difference/pressure_resistance*PROBABILITY_BASE_PRECENT)-PROBABILITY_OFFSET move_prob += pressure_resistance_prob_delta - if (move_prob > PROBABILITY_OFFSET && prob(move_prob)) + if (move_prob > PROBABILITY_OFFSET && prob(move_prob) && (move_resist != INFINITY) && (!anchored && (max_force >= (move_resist * MOVE_FORCE_PUSH_RATIO))) || (anchored && (max_force >= (move_resist * MOVE_FORCE_FORCEPUSH_RATIO)))) step(src, direction) last_high_pressure_movement_air_cycle = SSair.times_fired diff --git a/code/modules/atmospherics/machinery/atmosmachinery.dm b/code/modules/atmospherics/machinery/atmosmachinery.dm index 7d095869cb..c9b5eab18e 100644 --- a/code/modules/atmospherics/machinery/atmosmachinery.dm +++ b/code/modules/atmospherics/machinery/atmosmachinery.dm @@ -14,6 +14,7 @@ Pipelines + Other Objects -> Pipe network /obj/machinery/atmospherics anchored = TRUE + move_resist = INFINITY //Moving a connected machine without actually doing the normal (dis)connection things will probably cause a LOT of issues. idle_power_usage = 0 active_power_usage = 0 power_channel = ENVIRON diff --git a/code/modules/events/immovable_rod.dm b/code/modules/events/immovable_rod.dm index e041d566e9..27ca16fd3c 100644 --- a/code/modules/events/immovable_rod.dm +++ b/code/modules/events/immovable_rod.dm @@ -43,6 +43,9 @@ In my current plan for it, 'solid' will be defined as anything with density == 1 icon = 'icons/obj/objects.dmi' icon_state = "immrod" throwforce = 100 + move_force = INFINITY + move_resist = INFINITY + pull_force = INFINITY density = TRUE anchored = TRUE var/mob/living/wizard diff --git a/code/modules/flufftext/Hallucination.dm b/code/modules/flufftext/Hallucination.dm index bac2e0bb65..b9f355a8cc 100644 --- a/code/modules/flufftext/Hallucination.dm +++ b/code/modules/flufftext/Hallucination.dm @@ -213,9 +213,9 @@ GLOBAL_LIST_INIT(hallucination_list, list( . = ..() name = "alien hunter ([rand(1, 1000)])" -/obj/effect/hallucination/simple/xeno/throw_impact(A) +/obj/effect/hallucination/simple/xeno/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) update_icon("alienh_pounce") - if(A == target && target.stat!=DEAD) + if(hit_atom == target && target.stat!=DEAD) target.Knockdown(100) target.visible_message("[target] flails around wildly.","[name] pounces on you!") diff --git a/code/modules/food_and_drinks/drinks/drinks.dm b/code/modules/food_and_drinks/drinks/drinks.dm index 7b1d8be85e..40489eba9b 100644 --- a/code/modules/food_and_drinks/drinks/drinks.dm +++ b/code/modules/food_and_drinks/drinks/drinks.dm @@ -101,10 +101,10 @@ to_chat(user, "You heat [name] with [I]!") ..() -/obj/item/reagent_containers/food/drinks/throw_impact(atom/target, datum/thrownthing/throwinfo) +/obj/item/reagent_containers/food/drinks/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) . = ..() if(!.) //if the bottle wasn't caught - smash(target, throwinfo.thrower, TRUE) + smash(hit_atom, throwingdatum?.thrower, TRUE) /obj/item/reagent_containers/food/drinks/proc/smash(atom/target, mob/thrower, ranged = FALSE) if(!isGlass) diff --git a/code/modules/food_and_drinks/drinks/drinks/bottle.dm b/code/modules/food_and_drinks/drinks/drinks/bottle.dm index e72b624ae5..16878bcf75 100644 --- a/code/modules/food_and_drinks/drinks/drinks/bottle.dm +++ b/code/modules/food_and_drinks/drinks/drinks/bottle.dm @@ -442,7 +442,7 @@ isGlass = FALSE return -/obj/item/reagent_containers/food/drinks/bottle/molotov/throw_impact(atom/target,datum/thrownthing/throwdata) +/obj/item/reagent_containers/food/drinks/bottle/molotov/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) var/firestarter = 0 for(var/datum/reagent/R in reagents.reagent_list) for(var/A in accelerants) @@ -450,8 +450,8 @@ firestarter = 1 break if(firestarter && active) - target.fire_act() - new /obj/effect/hotspot(get_turf(target)) + hit_atom.fire_act() + new /obj/effect/hotspot(get_turf(hit_atom)) ..() /obj/item/reagent_containers/food/drinks/bottle/molotov/attackby(obj/item/I, mob/user, params) diff --git a/code/modules/food_and_drinks/food/snacks_egg.dm b/code/modules/food_and_drinks/food/snacks_egg.dm index 510783479e..fdc02c96e4 100644 --- a/code/modules/food_and_drinks/food/snacks_egg.dm +++ b/code/modules/food_and_drinks/food/snacks_egg.dm @@ -31,7 +31,7 @@ var/color = mix_color_from_reagents(reagents.reagent_list) add_atom_colour(color, FIXED_COLOUR_PRIORITY) -/obj/item/reagent_containers/food/snacks/egg/throw_impact(atom/hit_atom) +/obj/item/reagent_containers/food/snacks/egg/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) if(!..()) //was it caught by a mob? var/turf/T = get_turf(hit_atom) new/obj/effect/decal/cleanable/egg_smudge(T) diff --git a/code/modules/food_and_drinks/food/snacks_other.dm b/code/modules/food_and_drinks/food/snacks_other.dm index ad0824dd79..3a60e991a9 100644 --- a/code/modules/food_and_drinks/food/snacks_other.dm +++ b/code/modules/food_and_drinks/food/snacks_other.dm @@ -439,8 +439,8 @@ head.color = C add_overlay(head) -/obj/item/reagent_containers/food/snacks/lollipop/throw_impact(atom/A) - ..(A) +/obj/item/reagent_containers/food/snacks/lollipop/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) + ..(hit_atom) throw_speed = 1 throwforce = 0 diff --git a/code/modules/food_and_drinks/food/snacks_pie.dm b/code/modules/food_and_drinks/food/snacks_pie.dm index bc66d353e1..f32ebbb3a0 100644 --- a/code/modules/food_and_drinks/food/snacks_pie.dm +++ b/code/modules/food_and_drinks/food/snacks_pie.dm @@ -29,7 +29,7 @@ foodtype = GRAIN | DAIRY | SUGAR var/stunning = TRUE -/obj/item/reagent_containers/food/snacks/pie/cream/throw_impact(atom/hit_atom) +/obj/item/reagent_containers/food/snacks/pie/cream/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) . = ..() if(!.) //if we're not being caught splat(hit_atom) diff --git a/code/modules/food_and_drinks/pizzabox.dm b/code/modules/food_and_drinks/pizzabox.dm index d608a73560..58f7985291 100644 --- a/code/modules/food_and_drinks/pizzabox.dm +++ b/code/modules/food_and_drinks/pizzabox.dm @@ -231,7 +231,7 @@ if(boxes.len >= 3 && prob(25 * boxes.len)) disperse_pizzas() -/obj/item/pizzabox/throw_impact(atom/movable/AM) +/obj/item/pizzabox/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) if(boxes.len >= 2 && prob(20 * boxes.len)) disperse_pizzas() diff --git a/code/modules/holiday/halloween/jacqueen.dm b/code/modules/holiday/halloween/jacqueen.dm index b2f69df2e4..b033755650 100644 --- a/code/modules/holiday/halloween/jacqueen.dm +++ b/code/modules/holiday/halloween/jacqueen.dm @@ -422,7 +422,7 @@ reagents.add_reagent(R, 30) name = "[R] Potion" -/obj/item/reagent_containers/potion_container/throw_impact(atom/target) +/obj/item/reagent_containers/potion_container/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) ..() sleep(20) var/datum/effect_system/smoke_spread/chem/s = new() diff --git a/code/modules/holodeck/items.dm b/code/modules/holodeck/items.dm index 5c143f7a25..54c940dfbc 100644 --- a/code/modules/holodeck/items.dm +++ b/code/modules/holodeck/items.dm @@ -80,7 +80,7 @@ item_state = "dodgeball" desc = "Used for playing the most violent and degrading of childhood games." -/obj/item/toy/beach_ball/holoball/dodgeball/throw_impact(atom/hit_atom) +/obj/item/toy/beach_ball/holoball/dodgeball/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) ..() if((ishuman(hit_atom))) var/mob/living/carbon/M = hit_atom @@ -123,7 +123,7 @@ else ..() -/obj/structure/holohoop/hitby(atom/movable/AM) +/obj/structure/holohoop/hitby(atom/movable/AM, skipcatch, hitpush, blocked, datum/thrownthing/throwingdatum) if (isitem(AM) && !istype(AM,/obj/item/projectile)) if(prob(50)) AM.forceMove(get_turf(src)) diff --git a/code/modules/hydroponics/grown.dm b/code/modules/hydroponics/grown.dm index 096c7b5b2b..5cc7fcc57a 100644 --- a/code/modules/hydroponics/grown.dm +++ b/code/modules/hydroponics/grown.dm @@ -91,7 +91,7 @@ squash(user) ..() -/obj/item/reagent_containers/food/snacks/grown/throw_impact(atom/hit_atom) +/obj/item/reagent_containers/food/snacks/grown/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) if(!..()) //was it caught by a mob? if(seed) for(var/datum/plant_gene/trait/T in seed.genes) diff --git a/code/modules/hydroponics/growninedible.dm b/code/modules/hydroponics/growninedible.dm index c0e3beaf79..3ef6c1472f 100644 --- a/code/modules/hydroponics/growninedible.dm +++ b/code/modules/hydroponics/growninedible.dm @@ -48,7 +48,7 @@ return 1 return 0 -/obj/item/grown/throw_impact(atom/hit_atom) +/obj/item/grown/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) if(!..()) //was it caught by a mob? if(seed) for(var/datum/plant_gene/trait/T in seed.genes) diff --git a/code/modules/mining/fulton.dm b/code/modules/mining/fulton.dm index f97d3612a8..af8860c02b 100644 --- a/code/modules/mining/fulton.dm +++ b/code/modules/mining/fulton.dm @@ -11,6 +11,7 @@ GLOBAL_LIST_EMPTY(total_extraction_beacons) var/uses_left = 3 var/can_use_indoors var/safe_for_living_creatures = 1 + var/max_force_fulton = MOVE_FORCE_STRONG /obj/item/extraction_pack/examine() . = ..() @@ -57,7 +58,7 @@ GLOBAL_LIST_EMPTY(total_extraction_beacons) return if(!isturf(A.loc)) // no extracting stuff inside other stuff return - if(A.anchored) + if(A.anchored || (A.move_resist > max_force_fulton)) return to_chat(user, "You start attaching the pack to [A]...") if(do_after(user,50,target=A)) diff --git a/code/modules/mining/ores_coins.dm b/code/modules/mining/ores_coins.dm index 69361e8685..1ce735b0b8 100644 --- a/code/modules/mining/ores_coins.dm +++ b/code/modules/mining/ores_coins.dm @@ -99,7 +99,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\ recipes = GLOB.sand_recipes . = ..() -/obj/item/stack/ore/glass/throw_impact(atom/hit_atom) +/obj/item/stack/ore/glass/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) if(..() || !ishuman(hit_atom)) return var/mob/living/carbon/human/C = hit_atom diff --git a/code/modules/mob/camera/camera.dm b/code/modules/mob/camera/camera.dm index ee89167f29..dffaf9e4e7 100644 --- a/code/modules/mob/camera/camera.dm +++ b/code/modules/mob/camera/camera.dm @@ -3,7 +3,8 @@ /mob/camera name = "camera mob" density = FALSE - anchored = TRUE + move_force = INFINITY + move_resist = INFINITY status_flags = GODMODE // You can't damage it. mouse_opacity = MOUSE_OPACITY_TRANSPARENT see_in_dark = 7 diff --git a/code/modules/mob/dead/dead.dm b/code/modules/mob/dead/dead.dm index 35dbe0828f..213a6fd6db 100644 --- a/code/modules/mob/dead/dead.dm +++ b/code/modules/mob/dead/dead.dm @@ -4,6 +4,7 @@ INITIALIZE_IMMEDIATE(/mob/dead) /mob/dead sight = SEE_TURFS | SEE_MOBS | SEE_OBJS | SEE_SELF + move_resist = INFINITY throwforce = 0 /mob/dead/Initialize() diff --git a/code/modules/mob/dead/new_player/new_player.dm b/code/modules/mob/dead/new_player/new_player.dm index 591fc650b4..54c09184a3 100644 --- a/code/modules/mob/dead/new_player/new_player.dm +++ b/code/modules/mob/dead/new_player/new_player.dm @@ -12,8 +12,6 @@ stat = DEAD canmove = FALSE - anchored = TRUE // don't get pushed around - var/mob/living/new_character //for instant transfer once the round is set up //Used to make sure someone doesn't get spammed with messages if they're ineligible for roles @@ -151,7 +149,7 @@ message_admins(msg) to_chat(usr, "The round is either not ready, or has already finished...") return - + if(!GLOB.enter_allowed) to_chat(usr, "There is an administrative lock on entering the game!") return diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index d599d55886..e6a57f3180 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -12,7 +12,6 @@ GLOBAL_VAR_INIT(observer_default_invisibility, INVISIBILITY_OBSERVER) stat = DEAD density = FALSE canmove = 0 - anchored = TRUE // don't get pushed around see_invisible = SEE_INVISIBLE_OBSERVER see_in_dark = 100 invisibility = INVISIBILITY_OBSERVER @@ -619,10 +618,6 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp to_chat(src, "This creature is too powerful for you to possess!") return 0 - if(istype (target, /mob/living/simple_animal/hostile/spawner)) - to_chat(src, "This isn't really a creature, now is it!") - return 0 - if(!can_reenter_round) to_chat(src, "You are unable to re-enter the round.") return FALSE diff --git a/code/modules/mob/living/carbon/alien/alien_defense.dm b/code/modules/mob/living/carbon/alien/alien_defense.dm index b9e27c0637..daffca106f 100644 --- a/code/modules/mob/living/carbon/alien/alien_defense.dm +++ b/code/modules/mob/living/carbon/alien/alien_defense.dm @@ -5,7 +5,7 @@ /mob/living/carbon/alien/get_ear_protection() return 2 //no ears -/mob/living/carbon/alien/hitby(atom/movable/AM, skipcatch, hitpush) +/mob/living/carbon/alien/hitby(atom/movable/AM, skipcatch, hitpush, blocked, datum/thrownthing/throwingdatum) ..(AM, skipcatch = TRUE, hitpush = FALSE) diff --git a/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm b/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm index fe682b5c99..c75718e65c 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm @@ -54,18 +54,18 @@ weather_immunities -= "lava" update_icons() -/mob/living/carbon/alien/humanoid/hunter/throw_impact(atom/A) +/mob/living/carbon/alien/humanoid/hunter/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) if(!leaping) return ..() pounce_cooldown = world.time + pounce_cooldown_time - if(A) - if(isliving(A)) - var/mob/living/L = A + if(hit_atom) + if(isliving(hit_atom)) + var/mob/living/L = hit_atom var/blocked = FALSE - if(ishuman(A)) - var/mob/living/carbon/human/H = A + if(ishuman(hit_atom)) + var/mob/living/carbon/human/H = hit_atom if(H.check_shields(src, 0, "the [name]", attack_type = LEAP_ATTACK)) blocked = TRUE if(!blocked) @@ -77,8 +77,8 @@ Knockdown(40, 1, 1) toggle_leap(0) - else if(A.density && !A.CanPass(src)) - visible_message("[src] smashes into [A]!", "[src] smashes into [A]!") + else if(hit_atom.density && !hit_atom.CanPass(src)) + visible_message("[src] smashes into [hit_atom]!", "[src] smashes into [hit_atom]!") Knockdown(40, 1, 1) if(leaping) diff --git a/code/modules/mob/living/carbon/alien/larva/larva.dm b/code/modules/mob/living/carbon/alien/larva/larva.dm index e1e079cbae..3b150a2264 100644 --- a/code/modules/mob/living/carbon/alien/larva/larva.dm +++ b/code/modules/mob/living/carbon/alien/larva/larva.dm @@ -57,7 +57,7 @@ /mob/living/carbon/alien/larva/toggle_throw_mode() return -/mob/living/carbon/alien/larva/start_pulling() +/mob/living/carbon/alien/larva/start_pulling(atom/movable/AM, state, force = move_force, supress_message = FALSE) return /mob/living/carbon/alien/larva/stripPanelUnequip(obj/item/what, mob/who) diff --git a/code/modules/mob/living/carbon/alien/special/facehugger.dm b/code/modules/mob/living/carbon/alien/special/facehugger.dm index e66d70f492..6b04233464 100644 --- a/code/modules/mob/living/carbon/alien/special/facehugger.dm +++ b/code/modules/mob/living/carbon/alien/special/facehugger.dm @@ -115,7 +115,7 @@ if(icon_state == "[initial(icon_state)]_thrown") icon_state = "[initial(icon_state)]" -/obj/item/clothing/mask/facehugger/throw_impact(atom/hit_atom) +/obj/item/clothing/mask/facehugger/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) ..() if(stat == CONSCIOUS) icon_state = "[initial(icon_state)]" diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 263edf42c2..a81545fbe5 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -94,15 +94,13 @@ return 1 return ..() -/mob/living/carbon/throw_impact(atom/hit_atom, throwingdatum) +/mob/living/carbon/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) . = ..() var/hurt = TRUE - if(istype(throwingdatum, /datum/thrownthing)) - var/datum/thrownthing/D = throwingdatum - if(iscyborg(D.thrower)) - var/mob/living/silicon/robot/R = D.thrower - if(!R.emagged) - hurt = FALSE + if(throwingdatum?.thrower && iscyborg(throwingdatum.thrower)) + var/mob/living/silicon/robot/R = throwingdatum.thrower + if(!R.emagged) + hurt = FALSE if(hit_atom.density && isturf(hit_atom)) if(hurt) Knockdown(20) @@ -160,7 +158,7 @@ //END OF CIT CHANGES var/atom/movable/thrown_thing - var/obj/item/I = src.get_active_held_item() + var/obj/item/I = get_active_held_item() if(!I) if(pulling && isliving(pulling) && grab_state >= GRAB_AGGRESSIVE) @@ -188,11 +186,11 @@ if(thrown_thing) visible_message("[src] has thrown [thrown_thing].") - src.log_message("has thrown [thrown_thing]", LOG_ATTACK) + log_message("has thrown [thrown_thing]", LOG_ATTACK) do_attack_animation(target, no_effect = 1) playsound(loc, 'sound/weapons/punchmiss.ogg', 50, 1, -1) newtonian_move(get_dir(target, src)) - thrown_thing.throw_at(target, thrown_thing.throw_range, thrown_thing.throw_speed, src) + thrown_thing.safe_throw_at(target, thrown_thing.throw_range, thrown_thing.throw_speed, src, null, null, null, move_force) /mob/living/carbon/restrained(ignore_grab) . = (handcuffed || (!ignore_grab && pulledby && pulledby.grab_state >= GRAB_AGGRESSIVE)) @@ -448,7 +446,7 @@ I.throw_at(target,I.throw_range,I.throw_speed,src) if(61 to 90) //throw it down to the floor var/turf/target = get_turf(loc) - I.throw_at(target,I.throw_range,I.throw_speed,src) + I.safe_throw_at(target,I.throw_range,I.throw_speed,src, force = move_force) /mob/living/carbon/Stat() ..() diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm index bc64c8303b..626923a003 100644 --- a/code/modules/mob/living/carbon/carbon_defense.dm +++ b/code/modules/mob/living/carbon/carbon_defense.dm @@ -58,7 +58,7 @@ return return TRUE -/mob/living/carbon/hitby(atom/movable/AM, skipcatch, hitpush = TRUE, blocked = FALSE) +/mob/living/carbon/hitby(atom/movable/AM, skipcatch, hitpush = TRUE, blocked = FALSE, datum/thrownthing/throwingdatum) if(!skipcatch) //ugly, but easy if(can_catch_item()) if(istype(AM, /obj/item)) diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index a44779e05e..3333459dca 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -124,7 +124,7 @@ return TRUE return FALSE -/mob/living/carbon/human/hitby(atom/movable/AM, skipcatch = FALSE, hitpush = TRUE, blocked = FALSE) +/mob/living/carbon/human/hitby(atom/movable/AM, skipcatch = FALSE, hitpush = TRUE, blocked = FALSE, datum/thrownthing/throwingdatum) if(dna && dna.species) var/spec_return = dna.species.spec_hitby(AM, src) if(spec_return) diff --git a/code/modules/mob/living/carbon/monkey/combat.dm b/code/modules/mob/living/carbon/monkey/combat.dm index 25bc243f07..180c638448 100644 --- a/code/modules/mob/living/carbon/monkey/combat.dm +++ b/code/modules/mob/living/carbon/monkey/combat.dm @@ -384,7 +384,7 @@ retaliate(Proj.firer) ..() -/mob/living/carbon/monkey/hitby(atom/movable/AM, skipcatch = FALSE, hitpush = TRUE, blocked = FALSE) +/mob/living/carbon/monkey/hitby(atom/movable/AM, skipcatch = FALSE, hitpush = TRUE, blocked = FALSE, datum/thrownthing/throwingdatum) if(istype(AM, /obj/item)) var/obj/item/I = AM if(I.throwforce < src.health && I.thrownby && ishuman(I.thrownby)) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 812733ebe2..5afd2adace 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -59,7 +59,7 @@ return if(ismovableatom(A)) var/atom/movable/AM = A - if(PushAM(AM)) + if(PushAM(AM, move_force)) return /mob/living/Bumped(atom/movable/AM) @@ -202,33 +202,43 @@ return //Called when we want to push an atom/movable -/mob/living/proc/PushAM(atom/movable/AM) +/mob/living/proc/PushAM(atom/movable/AM, force = move_force) if(now_pushing) - return 1 + return TRUE if(moving_diagonally)// no pushing during diagonal moves. - return 1 + return TRUE if(!client && (mob_size < MOB_SIZE_SMALL)) return - if(!AM.anchored) - now_pushing = 1 - var/t = get_dir(src, AM) - if (istype(AM, /obj/structure/window)) - var/obj/structure/window/W = AM - if(W.fulltile) - for(var/obj/structure/window/win in get_step(W,t)) - now_pushing = 0 - return - if(pulling == AM) - stop_pulling() - var/current_dir - if(isliving(AM)) - current_dir = AM.dir - step(AM, t) - if(current_dir) - AM.setDir(current_dir) - now_pushing = 0 + now_pushing = TRUE + var/t = get_dir(src, AM) + var/push_anchored = FALSE + if((AM.move_resist * MOVE_FORCE_CRUSH_RATIO) <= force) + if(move_crush(AM, move_force, t)) + push_anchored = TRUE + if((AM.move_resist * MOVE_FORCE_FORCEPUSH_RATIO) <= force) //trigger move_crush and/or force_push regardless of if we can push it normally + if(force_push(AM, move_force, t, push_anchored)) + push_anchored = TRUE + if((AM.anchored && !push_anchored) || (force < (AM.move_resist * MOVE_FORCE_PUSH_RATIO))) + now_pushing = FALSE + return + if (istype(AM, /obj/structure/window)) + var/obj/structure/window/W = AM + if(W.fulltile) + for(var/obj/structure/window/win in get_step(W,t)) + now_pushing = FALSE + return + if(pulling == AM) + stop_pulling() + var/current_dir + if(isliving(AM)) + current_dir = AM.dir + if(step(AM, t)) + step(src, t) + if(current_dir) + AM.setDir(current_dir) + now_pushing = FALSE -/mob/living/start_pulling(atom/movable/AM, supress_message = 0) +/mob/living/start_pulling(atom/movable/AM, state, force = pull_force, supress_message = FALSE) if(!AM || !src) return FALSE if(!(AM.can_be_pulled(src))) diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index 9d04f288cd..fe35f1bf57 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -55,7 +55,7 @@ else return 0 -/mob/living/hitby(atom/movable/AM, skipcatch, hitpush = TRUE, blocked = FALSE) +/mob/living/hitby(atom/movable/AM, skipcatch, hitpush = TRUE, blocked = FALSE, datum/thrownthing/throwingdatum) if(istype(AM, /obj/item)) var/obj/item/I = AM var/zone = ran_zone(BODY_ZONE_CHEST, 65)//Hits a random part of the body, geared towards the chest @@ -120,7 +120,7 @@ adjust_fire_stacks(3) IgniteMob() -/mob/living/proc/grabbedby(mob/living/carbon/user, supress_message = 0) +/mob/living/proc/grabbedby(mob/living/carbon/user, supress_message = FALSE) if(user == anchored || !isturf(user.loc)) return FALSE @@ -146,7 +146,7 @@ return FALSE if(!user.pulling || user.pulling != src) - user.start_pulling(src, supress_message) + user.start_pulling(src, supress_message = supress_message) return if(!(status_flags & CANPUSH) || HAS_TRAIT(src, TRAIT_PUSHIMMUNE)) diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index 1b1eb1a805..551d9f4a99 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -16,7 +16,7 @@ name = "AI" icon = 'icons/mob/ai.dmi' icon_state = "ai" - anchored = TRUE + move_resist = MOVE_FORCE_VERY_STRONG density = TRUE canmove = FALSE status_flags = CANSTUN|CANPUSH @@ -318,9 +318,14 @@ return // stop if(incapacitated()) return - anchored = !anchored // Toggles the anchor + var/is_anchored = FALSE + if(move_resist == MOVE_FORCE_VERY_STRONG) + move_resist = MOVE_FORCE_VERY_STRONG + else + is_anchored = TRUE + move_resist = MOVE_FORCE_NORMAL - to_chat(src, "You are now [anchored ? "" : "un"]anchored.") + to_chat(src, "You are now [is_anchored ? "" : "un"]anchored.") // the message in the [] will change depending whether or not the AI is anchored /mob/living/silicon/ai/update_canmove() //If the AI dies, mobs won't go through it anymore diff --git a/code/modules/mob/living/silicon/ai/death.dm b/code/modules/mob/living/silicon/ai/death.dm index 301d2bd218..319d94611b 100644 --- a/code/modules/mob/living/silicon/ai/death.dm +++ b/code/modules/mob/living/silicon/ai/death.dm @@ -14,7 +14,7 @@ cameraFollow = null - anchored = FALSE //unbolt floorbolts + move_resist = MOVE_FORCE_NORMAL update_canmove() if(eyeobj) eyeobj.setLoc(get_turf(src)) diff --git a/code/modules/mob/living/silicon/pai/pai_shell.dm b/code/modules/mob/living/silicon/pai/pai_shell.dm index 164a3e7389..ecb80961cb 100644 --- a/code/modules/mob/living/silicon/pai/pai_shell.dm +++ b/code/modules/mob/living/silicon/pai/pai_shell.dm @@ -99,7 +99,7 @@ if(loc != card) visible_message("[src] [rest? "lays down for a moment..." : "perks up from the ground"]") -/mob/living/silicon/pai/start_pulling(atom/movable/AM) +/mob/living/silicon/pai/start_pulling(atom/movable/AM, state, force = move_force, supress_message = FALSE) return FALSE /mob/living/silicon/pai/proc/toggle_integrated_light() diff --git a/code/modules/mob/living/simple_animal/bot/honkbot.dm b/code/modules/mob/living/simple_animal/bot/honkbot.dm index 1c19cd82a1..62667c0e58 100644 --- a/code/modules/mob/living/simple_animal/bot/honkbot.dm +++ b/code/modules/mob/living/simple_animal/bot/honkbot.dm @@ -155,7 +155,7 @@ Maintenance panel panel is [open ? "opened" : "closed"]"}, bike_horn(A) -/mob/living/simple_animal/bot/honkbot/hitby(atom/movable/AM, skipcatch = 0, hitpush = 1, blocked = 0) +/mob/living/simple_animal/bot/honkbot/hitby(atom/movable/AM, skipcatch = FALSE, hitpush = TRUE, blocked = FALSE, datum/thrownthing/throwingdatum) if(istype(AM, /obj/item)) playsound(src, honksound, 50, TRUE, -1) var/obj/item/I = AM diff --git a/code/modules/mob/living/simple_animal/bot/mulebot.dm b/code/modules/mob/living/simple_animal/bot/mulebot.dm index 1bc7493684..66bfd64a7d 100644 --- a/code/modules/mob/living/simple_animal/bot/mulebot.dm +++ b/code/modules/mob/living/simple_animal/bot/mulebot.dm @@ -13,8 +13,8 @@ desc = "A Multiple Utility Load Effector bot." icon_state = "mulebot0" density = TRUE - anchored = TRUE - animate_movement=1 + move_resist = MOVE_FORCE_STRONG + animate_movement = 1 health = 50 maxHealth = 50 damage_coeff = list(BRUTE = 0.5, BURN = 0.7, TOX = 0, CLONE = 0, STAMINA = 0, OXY = 0) diff --git a/code/modules/mob/living/simple_animal/bot/secbot.dm b/code/modules/mob/living/simple_animal/bot/secbot.dm index f22139ac22..fe02339403 100644 --- a/code/modules/mob/living/simple_animal/bot/secbot.dm +++ b/code/modules/mob/living/simple_animal/bot/secbot.dm @@ -221,7 +221,7 @@ Auto Patrol: []"}, ..() -/mob/living/simple_animal/bot/secbot/hitby(atom/movable/AM, skipcatch = FALSE, hitpush = TRUE, blocked = FALSE) +/mob/living/simple_animal/bot/secbot/hitby(atom/movable/AM, skipcatch = FALSE, hitpush = TRUE, blocked = FALSE, datum/thrownthing/throwingdatum) if(istype(AM, /obj/item)) var/obj/item/I = AM if(I.throwforce < src.health && I.thrownby && ishuman(I.thrownby)) diff --git a/code/modules/mob/living/simple_animal/constructs.dm b/code/modules/mob/living/simple_animal/constructs.dm index 3cc8822d02..ea7f5fe5ae 100644 --- a/code/modules/mob/living/simple_animal/constructs.dm +++ b/code/modules/mob/living/simple_animal/constructs.dm @@ -338,7 +338,7 @@ stored_pulling.forceMove(loc) forceMove(AM) if(stored_pulling) - start_pulling(stored_pulling, TRUE) //drag anything we're pulling through the wall with us by magic + start_pulling(stored_pulling, supress_message = TRUE) //drag anything we're pulling through the wall with us by magic /mob/living/simple_animal/hostile/construct/harvester/AttackingTarget() if(iscarbon(target)) diff --git a/code/modules/mob/living/simple_animal/guardian/types/charger.dm b/code/modules/mob/living/simple_animal/guardian/types/charger.dm index 3ece5d4e27..184da11d02 100644 --- a/code/modules/mob/living/simple_animal/guardian/types/charger.dm +++ b/code/modules/mob/living/simple_animal/guardian/types/charger.dm @@ -44,18 +44,18 @@ if(!charging) ..() -/mob/living/simple_animal/hostile/guardian/charger/throw_impact(atom/A) +/mob/living/simple_animal/hostile/guardian/charger/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) if(!charging) return ..() - else if(A) - if(isliving(A) && A != summoner) - var/mob/living/L = A + else if(hit_atom) + if(isliving(hit_atom) && hit_atom != summoner) + var/mob/living/L = hit_atom var/blocked = FALSE - if(hasmatchingsummoner(A)) //if the summoner matches don't hurt them + if(hasmatchingsummoner(hit_atom)) //if the summoner matches don't hurt them blocked = TRUE - if(ishuman(A)) - var/mob/living/carbon/human/H = A + if(ishuman(hit_atom)) + var/mob/living/carbon/human/H = hit_atom if(H.check_shields(src, 90, "[name]", attack_type = THROWN_PROJECTILE_ATTACK)) blocked = TRUE if(!blocked) diff --git a/code/modules/mob/living/simple_animal/hostile/jungle/leaper.dm b/code/modules/mob/living/simple_animal/hostile/jungle/leaper.dm index d1e8f1f49e..72ae49eb0d 100644 --- a/code/modules/mob/living/simple_animal/hostile/jungle/leaper.dm +++ b/code/modules/mob/living/simple_animal/hostile/jungle/leaper.dm @@ -249,7 +249,7 @@ /mob/living/simple_animal/hostile/jungle/leaper/Goto() return -/mob/living/simple_animal/hostile/jungle/leaper/throw_impact() +/mob/living/simple_animal/hostile/jungle/leaper/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) return /mob/living/simple_animal/hostile/jungle/leaper/update_icons() diff --git a/code/modules/mob/living/simple_animal/hostile/jungle/mook.dm b/code/modules/mob/living/simple_animal/hostile/jungle/mook.dm index 29f48c7295..b786637592 100644 --- a/code/modules/mob/living/simple_animal/hostile/jungle/mook.dm +++ b/code/modules/mob/living/simple_animal/hostile/jungle/mook.dm @@ -147,7 +147,7 @@ update_icons() Goto(target, move_to_delay, minimum_distance) -/mob/living/simple_animal/hostile/jungle/mook/throw_impact(atom/hit_atom, throwingdatum) +/mob/living/simple_animal/hostile/jungle/mook/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) . = ..() if(isliving(hit_atom) && attack_state == MOOK_ATTACK_ACTIVE) var/mob/living/L = hit_atom diff --git a/code/modules/mob/living/simple_animal/hostile/jungle/seedling.dm b/code/modules/mob/living/simple_animal/hostile/jungle/seedling.dm index 1a894734d8..8a1cfb7125 100644 --- a/code/modules/mob/living/simple_animal/hostile/jungle/seedling.dm +++ b/code/modules/mob/living/simple_animal/hostile/jungle/seedling.dm @@ -29,7 +29,7 @@ projectilesound = 'sound/weapons/pierce.ogg' robust_searching = TRUE stat_attack = UNCONSCIOUS - anchored = TRUE + move_resist = MOVE_FORCE_EXTREMELY_STRONG var/combatant_state = SEEDLING_STATE_NEUTRAL var/obj/seedling_weakpoint/weak_point var/mob/living/beam_debuff_target diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm index 45745bd84e..83abde2fca 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm @@ -158,12 +158,12 @@ Difficulty: Hard DestroySurroundings() ..() -/mob/living/simple_animal/hostile/megafauna/bubblegum/throw_impact(atom/A) +/mob/living/simple_animal/hostile/megafauna/bubblegum/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) if(!charging) return ..() - else if(isliving(A)) - var/mob/living/L = A + else if(isliving(hit_atom)) + var/mob/living/L = hit_atom L.visible_message("[src] slams into [L]!", "[src] slams into you!") L.apply_damage(40, BRUTE) playsound(get_turf(L), 'sound/effects/meteorimpact.ogg', 100, 1) diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm index d62f59cdd7..2ac8dd80c0 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm @@ -21,7 +21,9 @@ maxbodytemp = INFINITY vision_range = 4 aggro_vision_range = 15 - anchored = TRUE + move_force = MOVE_FORCE_OVERPOWERING + move_resist = MOVE_FORCE_OVERPOWERING + pull_force = MOVE_FORCE_OVERPOWERING mob_size = MOB_SIZE_LARGE layer = LARGE_MOB_LAYER //Looks weird with them slipping under mineral walls and cameras and shit otherwise mouse_opacity = MOUSE_OPACITY_OPAQUE // Easier to click on in melee, they're giant targets anyway diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/swarmer.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/swarmer.dm index 786d7a9775..c7d90f9556 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/swarmer.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/swarmer.dm @@ -54,7 +54,6 @@ GLOBAL_LIST_INIT(AISwarmerCapsByType, list(/mob/living/simple_animal/hostile/swa weather_immunities = list("lava","ash") stop_automated_movement = TRUE wander = FALSE - anchored = TRUE layer = BELOW_MOB_LAYER AIStatus = AI_OFF var/swarmer_spawn_cooldown = 0 diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/goliath.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/goliath.dm index 15f2a0a834..c17e98a7db 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/goliath.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/goliath.dm @@ -27,7 +27,9 @@ throw_message = "does nothing to the rocky hide of the" vision_range = 4 aggro_vision_range = 7 - anchored = TRUE //Stays anchored until death as to be unpullable + move_force = MOVE_FORCE_VERY_STRONG + move_resist = MOVE_FORCE_VERY_STRONG + pull_force = MOVE_FORCE_VERY_STRONG var/pre_attack = 0 var/pre_attack_icon = "Goliath_preattack" loot = list(/obj/item/stack/sheet/animalhide/goliath_hide) @@ -51,7 +53,9 @@ . = 1 /mob/living/simple_animal/hostile/asteroid/goliath/death(gibbed) - anchored = FALSE + move_force = MOVE_FORCE_DEFAULT + move_resist = MOVE_RESIST_DEFAULT + pull_force = PULL_FORCE_DEFAULT ..(gibbed) /mob/living/simple_animal/hostile/asteroid/goliath/OpenFire() diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm index 82f85766c2..9e398ce0da 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm @@ -217,7 +217,7 @@ can_infest_dead = TRUE //Legion that spawns Legions -/mob/living/simple_animal/hostile/spawner/legion +/mob/living/simple_animal/hostile/big_legion name = "legion" desc = "One of many." icon = 'icons/mob/lavaland/64x64megafauna.dmi' @@ -226,10 +226,6 @@ icon_dead = "legion" health = 450 maxHealth = 450 - max_mobs = 3 - spawn_time = 200 - spawn_text = "peels itself off from" - mob_types = list(/mob/living/simple_animal/hostile/asteroid/hivelord/legion) melee_damage_lower = 20 melee_damage_upper = 20 anchored = FALSE @@ -252,6 +248,10 @@ see_in_dark = 8 lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE +/mob/living/simple_animal/hostile/big_legion/Initialize() + .=..() + AddComponent(/datum/component/spawner, list(/mob/living/simple_animal/hostile/asteroid/hivelord/legion), 200, faction, "peels itself off from", 3) + //Tendril-spawned Legion remains, the charred skeletons of those whose bodies sank into laval or fell into chasms. /obj/effect/mob_spawn/human/corpse/charredskeleton name = "charred skeletal remains" diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/mining_mobs.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/mining_mobs.dm index 05dec578bd..c040931979 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/mining_mobs.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/mining_mobs.dm @@ -45,7 +45,7 @@ visible_message("[P] has a reduced effect on [src]!") ..() -/mob/living/simple_animal/hostile/asteroid/hitby(atom/movable/AM)//No floor tiling them to death, wiseguy +/mob/living/simple_animal/hostile/asteroid/hitby(atom/movable/AM, skipcatch = FALSE, hitpush = TRUE, blocked = FALSE, datum/thrownthing/throwingdatum)//No floor tiling them to death, wiseguy if(istype(AM, /obj/item)) var/obj/item/T = AM if(!stat) diff --git a/code/modules/mob/living/simple_animal/hostile/mushroom.dm b/code/modules/mob/living/simple_animal/hostile/mushroom.dm index dbaa8ab5fa..67a2282abc 100644 --- a/code/modules/mob/living/simple_animal/hostile/mushroom.dm +++ b/code/modules/mob/living/simple_animal/hostile/mushroom.dm @@ -170,7 +170,7 @@ if(M.a_intent == INTENT_HARM) Bruise() -/mob/living/simple_animal/hostile/mushroom/hitby(atom/movable/AM) +/mob/living/simple_animal/hostile/mushroom/hitby(atom/movable/AM, skipcatch = FALSE, hitpush = TRUE, blocked = FALSE, datum/thrownthing/throwingdatum) ..() if(istype(AM, /obj/item)) var/obj/item/T = AM diff --git a/code/modules/mob/living/simple_animal/hostile/netherworld.dm b/code/modules/mob/living/simple_animal/hostile/netherworld.dm index 8210fd6490..d144ad272b 100644 --- a/code/modules/mob/living/simple_animal/hostile/netherworld.dm +++ b/code/modules/mob/living/simple_animal/hostile/netherworld.dm @@ -65,33 +65,30 @@ attacktext = "punches" deathmessage = "falls apart into a fine dust." -/mob/living/simple_animal/hostile/spawner/nether +/obj/structure/spawner/nether name = "netherworld link" desc = "A direct link to another dimension full of creatures not very happy to see you. Entering the link would be a very bad idea." icon_state = "nether" - icon_living = "nether" - health = 50 - maxHealth = 50 + max_integrity = 50 spawn_time = 600 //1 minute max_mobs = 15 - mob_biotypes = list(MOB_INORGANIC) icon = 'icons/mob/nest.dmi' spawn_text = "crawls through" mob_types = list(/mob/living/simple_animal/hostile/netherworld/migo, /mob/living/simple_animal/hostile/netherworld, /mob/living/simple_animal/hostile/netherworld/blankbody) - atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) faction = list("nether") - deathmessage = "shatters into oblivion." - del_on_death = TRUE -/mob/living/simple_animal/hostile/spawner/nether/attack_hand(mob/user) +/obj/structure/spawner/nether/Initialize() + .=..() + START_PROCESSING(SSprocessing, src) + +/obj/structure/spawner/nether/attack_hand(mob/user) user.visible_message("[user] is violently pulled into the link!", \ "Touching the portal, you are quickly pulled through into a world of unimaginable horror!") contents.Add(user) -/mob/living/simple_animal/hostile/spawner/nether/Life() - ..() - var/list/C = src.get_contents() - for(var/mob/living/M in C) + +/obj/structure/spawner/nether/process() + for(var/mob/living/M in contents) if(M) playsound(src, 'sound/magic/demon_consume.ogg', 50, 1) M.adjustBruteLoss(60) diff --git a/code/modules/mob/living/simple_animal/hostile/statue.dm b/code/modules/mob/living/simple_animal/hostile/statue.dm index 804989e71e..f38d77cd90 100644 --- a/code/modules/mob/living/simple_animal/hostile/statue.dm +++ b/code/modules/mob/living/simple_animal/hostile/statue.dm @@ -43,7 +43,10 @@ search_objects = 1 // So that it can see through walls sight = SEE_SELF|SEE_MOBS|SEE_OBJS|SEE_TURFS - anchored = TRUE + + move_force = MOVE_FORCE_EXTREMELY_STRONG + move_resist = MOVE_FORCE_EXTREMELY_STRONG + pull_force = MOVE_FORCE_EXTREMELY_STRONG var/cannot_be_seen = 1 var/mob/living/creator = null diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 1f81899d8a..3f72022d24 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -65,7 +65,7 @@ var/buffed = 0 //In the event that you want to have a buffing effect on the mob, but don't want it to stack with other effects, any outside force that applies a buff to a simple mob should at least set this to 1, so we have something to check against var/gold_core_spawnable = NO_SPAWN //If the mob can be spawned with a gold slime core. HOSTILE_SPAWN are spawned with plasma, FRIENDLY_SPAWN are spawned with blood - var/mob/living/simple_animal/hostile/spawner/nest + var/datum/component/spawner/nest var/sentience_type = SENTIENCE_ORGANIC // Sentience type, for slime potions diff --git a/code/modules/mob/living/simple_animal/slime/slime.dm b/code/modules/mob/living/simple_animal/slime/slime.dm index 2001c61e12..655933a0bd 100644 --- a/code/modules/mob/living/simple_animal/slime/slime.dm +++ b/code/modules/mob/living/simple_animal/slime/slime.dm @@ -61,7 +61,7 @@ var/mood = "" // To show its face var/mutator_used = FALSE //So you can't shove a dozen mutators into a single slime var/force_stasis = FALSE - + do_footstep = TRUE var/static/regex/slime_name_regex = new("\\w+ (baby|adult) slime \\(\\d+\\)") @@ -245,7 +245,7 @@ /mob/living/simple_animal/slime/doUnEquip(obj/item/W) return -/mob/living/simple_animal/slime/start_pulling(atom/movable/AM) +/mob/living/simple_animal/slime/start_pulling(atom/movable/AM, state, force = move_force, supress_message = FALSE) return /mob/living/simple_animal/slime/attack_ui(slot) diff --git a/code/modules/mob/living/simple_animal/spawner.dm b/code/modules/mob/living/simple_animal/spawner.dm deleted file mode 100644 index 0b97a940e4..0000000000 --- a/code/modules/mob/living/simple_animal/spawner.dm +++ /dev/null @@ -1,113 +0,0 @@ -/mob/living/simple_animal/hostile/spawner - name = "monster nest" - icon = 'icons/mob/animal.dmi' - health = 100 - maxHealth = 100 - gender = NEUTER - var/list/spawned_mobs = list() - var/max_mobs = 5 - var/spawn_delay = 0 - var/spawn_time = 300 //30 seconds default - var/mob_types = list(/mob/living/simple_animal/hostile/carp) - var/spawn_text = "emerges from" - status_flags = 0 - anchored = TRUE - AIStatus = AI_OFF - a_intent = INTENT_HARM - stop_automated_movement = 1 - wander = 0 - atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 5, "min_n2" = 0, "max_n2" = 0) - minbodytemp = 0 - maxbodytemp = 350 - layer = BELOW_MOB_LAYER - sentience_type = SENTIENCE_BOSS - - -/mob/living/simple_animal/hostile/spawner/Destroy() - for(var/mob/living/simple_animal/L in spawned_mobs) - if(L.nest == src) - L.nest = null - spawned_mobs = null - return ..() - -/mob/living/simple_animal/hostile/spawner/Life() - . = ..() - if(!.) // dead - return - spawn_mob() - -/mob/living/simple_animal/hostile/spawner/proc/spawn_mob() - if(spawned_mobs.len >= max_mobs) - return 0 - if(spawn_delay > world.time) - return 0 - spawn_delay = world.time + spawn_time - var/chosen_mob_type = pick(mob_types) - var/mob/living/simple_animal/L = new chosen_mob_type(src.loc) - L.flags_1 |= (flags_1 & ADMIN_SPAWNED_1) //If we were admin spawned, lets have our children count as that as well. - spawned_mobs += L - L.nest = src - L.faction = src.faction - visible_message("[L] [spawn_text] [src].") - -/mob/living/simple_animal/hostile/spawner/syndicate - name = "warp beacon" - icon = 'icons/obj/device.dmi' - icon_state = "syndbeacon" - spawn_text = "warps in from" - mob_types = list(/mob/living/simple_animal/hostile/syndicate/ranged) - faction = list(ROLE_SYNDICATE) - -/mob/living/simple_animal/hostile/spawner/skeleton - name = "bone pit" - desc = "A pit full of bones, and some still seem to be moving..." - icon_state = "hole" - icon_living = "hole" - icon = 'icons/mob/nest.dmi' - health = 150 - maxHealth = 150 - max_mobs = 15 - spawn_time = 150 - mob_types = list(/mob/living/simple_animal/hostile/skeleton) - spawn_text = "climbs out of" - atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) - faction = list("skeleton") - -/mob/living/simple_animal/hostile/spawner/mining - name = "monster den" - desc = "A hole dug into the ground, harboring all kinds of monsters found within most caves or mining asteroids." - icon_state = "hole" - icon_living = "hole" - health = 200 - maxHealth = 200 - max_mobs = 3 - icon = 'icons/mob/nest.dmi' - spawn_text = "crawls out of" - mob_types = list(/mob/living/simple_animal/hostile/asteroid/goldgrub, /mob/living/simple_animal/hostile/asteroid/goliath, /mob/living/simple_animal/hostile/asteroid/hivelord, /mob/living/simple_animal/hostile/asteroid/basilisk, /mob/living/simple_animal/hostile/asteroid/fugu) - atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) - faction = list("mining") - -/mob/living/simple_animal/hostile/spawner/mining/goldgrub - name = "goldgrub den" - desc = "A den housing a nest of goldgrubs, annoying but arguably much better than anything else you'll find in a nest." - mob_types = list(/mob/living/simple_animal/hostile/asteroid/goldgrub) - -/mob/living/simple_animal/hostile/spawner/mining/goliath - name = "goliath den" - desc = "A den housing a nest of goliaths, oh god why?" - mob_types = list(/mob/living/simple_animal/hostile/asteroid/goliath) - -/mob/living/simple_animal/hostile/spawner/mining/hivelord - name = "hivelord den" - desc = "A den housing a nest of hivelords." - mob_types = list(/mob/living/simple_animal/hostile/asteroid/hivelord) - -/mob/living/simple_animal/hostile/spawner/mining/basilisk - name = "basilisk den" - desc = "A den housing a nest of basilisks, bring a coat." - mob_types = list(/mob/living/simple_animal/hostile/asteroid/basilisk) - -/mob/living/simple_animal/hostile/spawner/mining/wumborian - name = "wumborian fugu den" - desc = "A den housing a nest of wumborian fugus, how do they all even fit in there?" - mob_types = list(/mob/living/simple_animal/hostile/asteroid/fugu) diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm index 82e2b11f8e..85d8f94deb 100644 --- a/code/modules/mob/mob_movement.dm +++ b/code/modules/mob/mob_movement.dm @@ -108,8 +108,7 @@ if((direct & (direct - 1)) && mob.loc == n) //moved diagonally successfully add_delay *= 2 - if(mob.loc != oldloc) - move_delay += add_delay + move_delay += add_delay if(.) // If mob is null here, we deserve the runtime if(mob.throwing) mob.throwing.finalize(FALSE) diff --git a/code/modules/ninja/energy_katana.dm b/code/modules/ninja/energy_katana.dm index 97c41faf12..e6d53d914f 100644 --- a/code/modules/ninja/energy_katana.dm +++ b/code/modules/ninja/energy_katana.dm @@ -56,7 +56,7 @@ //If we hit the Ninja who owns this Katana, they catch it. //Works for if the Ninja throws it or it throws itself or someone tries //To throw it at the ninja -/obj/item/energy_katana/throw_impact(atom/hit_atom) +/obj/item/energy_katana/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) if(ishuman(hit_atom)) var/mob/living/carbon/human/H = hit_atom if(istype(H.wear_suit, /obj/item/clothing/suit/space/space_ninja)) diff --git a/code/modules/paperwork/paperplane.dm b/code/modules/paperwork/paperplane.dm index 4b08ccf608..a896eb9034 100644 --- a/code/modules/paperwork/paperplane.dm +++ b/code/modules/paperwork/paperplane.dm @@ -97,7 +97,7 @@ /obj/item/paperplane/throw_at(atom/target, range, speed, mob/thrower, spin=FALSE, diagonals_first = FALSE, datum/callback/callback) . = ..(target, range, speed, thrower, FALSE, diagonals_first, callback) -/obj/item/paperplane/throw_impact(atom/hit_atom) +/obj/item/paperplane/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) if(iscarbon(hit_atom)) var/mob/living/carbon/C = hit_atom if(C.can_catch_item(TRUE)) diff --git a/code/modules/power/gravitygenerator.dm b/code/modules/power/gravitygenerator.dm index 4d8cdaa778..6cedab99a4 100644 --- a/code/modules/power/gravitygenerator.dm +++ b/code/modules/power/gravitygenerator.dm @@ -23,6 +23,7 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne desc = "A device which produces a graviton field when set up." icon = 'icons/obj/machines/gravity_generator.dmi' density = TRUE + move_resist = INFINITY use_power = NO_POWER_USE resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF var/sprite_number = 0 diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index 8d99cbb485..f995993ea2 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -758,7 +758,7 @@ /obj/item/light/bulb/broken status = LIGHT_BROKEN -/obj/item/light/throw_impact(atom/hit_atom) +/obj/item/light/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) if(!..()) //not caught by a mob shatter() diff --git a/code/modules/power/singularity/containment_field.dm b/code/modules/power/singularity/containment_field.dm index 3b0f7e7f6f..491be4a83d 100644 --- a/code/modules/power/singularity/containment_field.dm +++ b/code/modules/power/singularity/containment_field.dm @@ -6,6 +6,7 @@ icon = 'icons/obj/singularity.dmi' icon_state = "Contain_F" density = FALSE + move_resist = INFINITY resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF use_power = NO_POWER_USE interaction_flags_atom = NONE diff --git a/code/modules/power/singularity/field_generator.dm b/code/modules/power/singularity/field_generator.dm index 6be89b43f4..cc6adb6b36 100644 --- a/code/modules/power/singularity/field_generator.dm +++ b/code/modules/power/singularity/field_generator.dm @@ -245,6 +245,7 @@ field_generator power level display if(state != FG_WELDED || !anchored) turn_off() return + move_resist = INFINITY spawn(1) setup_field(1) spawn(2) @@ -335,6 +336,7 @@ field_generator power level display message_admins("A singulo exists and a containment field has failed at [ADMIN_VERBOSEJMP(T)].") investigate_log("has failed whilst a singulo exists at [AREACOORD(T)].", INVESTIGATE_SINGULO) O.last_warning = world.time + move_resist = initial(move_resist) /obj/machinery/field/generator/shock(mob/living/user) if(fields.len) diff --git a/code/modules/power/singularity/singularity.dm b/code/modules/power/singularity/singularity.dm index 35710f8d61..dbd16b8c08 100644 --- a/code/modules/power/singularity/singularity.dm +++ b/code/modules/power/singularity/singularity.dm @@ -7,6 +7,7 @@ icon_state = "singularity_s1" anchored = TRUE density = TRUE + move_resist = INFINITY layer = MASSIVE_OBJ_LAYER light_range = 6 appearance_flags = 0 diff --git a/code/modules/procedural_mapping/mapGenerators/lavaland.dm b/code/modules/procedural_mapping/mapGenerators/lavaland.dm index e6d7b00e8d..9e50b3ae95 100644 --- a/code/modules/procedural_mapping/mapGenerators/lavaland.dm +++ b/code/modules/procedural_mapping/mapGenerators/lavaland.dm @@ -16,9 +16,9 @@ /datum/mapGeneratorModule/splatterLayer/lavalandTendrils spawnableTurfs = list() - spawnableAtoms = list(/mob/living/simple_animal/hostile/spawner/lavaland = 5, - /mob/living/simple_animal/hostile/spawner/lavaland/legion = 5, - /mob/living/simple_animal/hostile/spawner/lavaland/goliath = 5) + spawnableAtoms = list(/obj/structure/spawner/lavaland = 5, + /obj/structure/spawner/lavaland/legion = 5, + /obj/structure/spawner/lavaland/goliath = 5) /datum/mapGenerator/lavaland/ground_only modules = list(/datum/mapGeneratorModule/bottomLayer/lavaland_default) diff --git a/code/modules/projectiles/ammunition/_ammunition.dm b/code/modules/projectiles/ammunition/_ammunition.dm index 87fdbc65b0..2a7d61f268 100644 --- a/code/modules/projectiles/ammunition/_ammunition.dm +++ b/code/modules/projectiles/ammunition/_ammunition.dm @@ -65,7 +65,7 @@ else return ..() -/obj/item/ammo_casing/throw_impact(atom/A) +/obj/item/ammo_casing/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) if(heavy_metal) bounce_away(FALSE, NONE) . = ..() diff --git a/code/modules/reagents/reagent_containers.dm b/code/modules/reagents/reagent_containers.dm index b3f9591f64..26bbb20e6a 100644 --- a/code/modules/reagents/reagent_containers.dm +++ b/code/modules/reagents/reagent_containers.dm @@ -78,9 +78,9 @@ reagents.expose_temperature(exposed_temperature) ..() -/obj/item/reagent_containers/throw_impact(atom/target) +/obj/item/reagent_containers/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) . = ..() - SplashReagents(target, TRUE) + SplashReagents(hit_atom, TRUE) /obj/item/reagent_containers/proc/bartender_check(atom/target) . = FALSE diff --git a/code/modules/recycling/disposal/bin.dm b/code/modules/recycling/disposal/bin.dm index a4a6a7d473..7bddb46d50 100644 --- a/code/modules/recycling/disposal/bin.dm +++ b/code/modules/recycling/disposal/bin.dm @@ -355,7 +355,7 @@ ui.soft_update_fields() -/obj/machinery/disposal/bin/hitby(atom/movable/AM) +/obj/machinery/disposal/bin/hitby(atom/movable/AM, skipcatch = FALSE, hitpush = TRUE, blocked = FALSE, datum/thrownthing/throwingdatum) if(isitem(AM) && AM.CanEnterDisposals()) if(prob(75)) AM.forceMove(src) diff --git a/code/modules/ruins/objects_and_mobs/ash_walker_den.dm b/code/modules/ruins/objects_and_mobs/ash_walker_den.dm index 5425ddbdc4..2401fc63a0 100644 --- a/code/modules/ruins/objects_and_mobs/ash_walker_den.dm +++ b/code/modules/ruins/objects_and_mobs/ash_walker_den.dm @@ -1,26 +1,31 @@ #define ASH_WALKER_SPAWN_THRESHOLD 2 //The ash walker den consumes corpses or unconscious mobs to create ash walker eggs. For more info on those, check ghost_role_spawners.dm -/mob/living/simple_animal/hostile/spawner/lavaland/ash_walker +/obj/structure/lavaland/ash_walker name = "necropolis tendril nest" desc = "A vile tendril of corruption. It's surrounded by a nest of rapidly growing eggs..." + icon = 'icons/mob/nest.dmi' icon_state = "ash_walker_nest" - icon_living = "ash_walker_nest" - icon_dead = "ash_walker_nest" - faction = list("ashwalker") - health = 200 - maxHealth = 200 - loot = list(/obj/effect/collapse) + move_resist=INFINITY // just killing it tears a massive hole in the ground, let's not move it + anchored = TRUE + density = TRUE + resistance_flags = FIRE_PROOF | LAVA_PROOF + max_integrity = 200 + var/faction = list("ashwalker") var/meat_counter = 6 -/mob/living/simple_animal/hostile/spawner/lavaland/ash_walker/death() +/obj/structure/lavaland/ash_walker/Initialize() + .=..() + START_PROCESSING(SSprocessing, src) + +/obj/structure/lavaland/ash_walker/deconstruct(disassembled) new /obj/item/assembly/signaler/anomaly (get_step(loc, pick(GLOB.alldirs))) - return ..() + new /obj/effect/collapse(loc) -/mob/living/simple_animal/hostile/spawner/lavaland/ash_walker/Life() +/obj/structure/lavaland/ash_walker/process() consume() - return ..() + spawn_mob() -/mob/living/simple_animal/hostile/spawner/lavaland/ash_walker/proc/consume() +/obj/structure/lavaland/ash_walker/proc/consume() for(var/mob/living/H in view(src, 1)) //Only for corpse right next to/on same tile if(H.stat) visible_message("Serrated tendrils eagerly pull [H] to [src], tearing the body apart as its blood seeps over the eggs.") @@ -33,9 +38,9 @@ else meat_counter++ H.gib() - adjustHealth(-maxHealth * 0.05)//restores 5% hp of tendril + obj_integrity = min(obj_integrity + max_integrity*0.05,max_integrity)//restores 5% hp of tendril -/mob/living/simple_animal/hostile/spawner/lavaland/ash_walker/spawn_mob() +/obj/structure/lavaland/ash_walker/proc/spawn_mob() if(meat_counter >= ASH_WALKER_SPAWN_THRESHOLD) new /obj/effect/mob_spawn/human/ash_walker(get_step(loc, pick(GLOB.alldirs))) visible_message("One of the eggs swells to an unnatural size and tumbles free. It's ready to hatch!") diff --git a/code/modules/shuttle/on_move.dm b/code/modules/shuttle/on_move.dm index dd2d7483e3..91243e04b7 100644 --- a/code/modules/shuttle/on_move.dm +++ b/code/modules/shuttle/on_move.dm @@ -131,7 +131,7 @@ All ShuttleMove procs go here var/range = throw_force * 10 range = CEILING(rand(range-(range*0.1), range+(range*0.1)), 10)/10 var/speed = range/5 - throw_at(target, range, speed) + safe_throw_at(target, range, speed) ///////////////////////////////////////////////////////////////////////////////////// diff --git a/code/modules/spells/spell_types/conjure.dm b/code/modules/spells/spell_types/conjure.dm index 3ebded7487..2b7be7b4d7 100644 --- a/code/modules/spells/spell_types/conjure.dm +++ b/code/modules/spells/spell_types/conjure.dm @@ -63,7 +63,7 @@ clothes_req = FALSE charge_max = 600 cooldown_min = 200 - summon_type = list(/mob/living/simple_animal/hostile/spawner/nether) + summon_type = list(/obj/structure/spawner/nether) summon_amt = 1 range = 1 cast_sound = 'sound/weapons/marauder.ogg' diff --git a/code/modules/spells/spell_types/wizard.dm b/code/modules/spells/spell_types/wizard.dm index c4d2c34a71..005a52a382 100644 --- a/code/modules/spells/spell_types/wizard.dm +++ b/code/modules/spells/spell_types/wizard.dm @@ -363,7 +363,7 @@ icon_state = "snappop" w_class = WEIGHT_CLASS_TINY -/obj/item/spellpacket/lightningbolt/throw_impact(atom/hit_atom) +/obj/item/spellpacket/lightningbolt/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) if(!..()) if(isliving(hit_atom)) var/mob/living/M = hit_atom diff --git a/code/modules/surgery/bodyparts/bodyparts.dm b/code/modules/surgery/bodyparts/bodyparts.dm index dffb7bf355..52261eac4e 100644 --- a/code/modules/surgery/bodyparts/bodyparts.dm +++ b/code/modules/surgery/bodyparts/bodyparts.dm @@ -116,7 +116,7 @@ else return ..() -/obj/item/bodypart/throw_impact(atom/hit_atom) +/obj/item/bodypart/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) ..() if(status != BODYPART_ROBOTIC) playsound(get_turf(src), 'sound/misc/splort.ogg', 50, 1, -1) diff --git a/code/modules/unit_tests/_unit_tests.dm b/code/modules/unit_tests/_unit_tests.dm index 8da5d7c113..66f3d4f544 100644 --- a/code/modules/unit_tests/_unit_tests.dm +++ b/code/modules/unit_tests/_unit_tests.dm @@ -2,6 +2,7 @@ //Keep this sorted alphabetically #ifdef UNIT_TESTS +#include "anchored_mobs.dm" #include "reagent_id_typos.dm" #include "reagent_recipe_collisions.dm" #include "spawn_humans.dm" diff --git a/code/modules/unit_tests/anchored_mobs.dm b/code/modules/unit_tests/anchored_mobs.dm new file mode 100644 index 0000000000..5324179bb7 --- /dev/null +++ b/code/modules/unit_tests/anchored_mobs.dm @@ -0,0 +1,9 @@ +/datum/unit_test/anchored_mobs/Run() + var/list/L = list() + for(var/i in typesof(/mob)) + var/mob/M = i + if(initial(M.anchored)) + L += "[i]" + if(!L.len) + return //passed! + Fail("The following mobs are defined as anchored. This is incompatible with the new move force/resist system and needs to be revised.: [L.Join(" ")]") \ No newline at end of file diff --git a/modular_citadel/code/modules/mob/living/silicon/robot/dogborg_equipment.dm b/modular_citadel/code/modules/mob/living/silicon/robot/dogborg_equipment.dm index de3f43f8ee..adecad7885 100644 --- a/modular_citadel/code/modules/mob/living/silicon/robot/dogborg_equipment.dm +++ b/modular_citadel/code/modules/mob/living/silicon/robot/dogborg_equipment.dm @@ -351,17 +351,17 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm ! cell.use(750) //Less than a stunbaton since stunbatons hit everytime. weather_immunities -= "lava" -/mob/living/silicon/robot/throw_impact(atom/A) +/mob/living/silicon/robot/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) if(!leaping) return ..() - if(A) - if(isliving(A)) - var/mob/living/L = A + if(hit_atom) + if(isliving(hit_atom)) + var/mob/living/L = hit_atom var/blocked = 0 - if(ishuman(A)) - var/mob/living/carbon/human/H = A + if(ishuman(hit_atom)) + var/mob/living/carbon/human/H = hit_atom if(H.check_shields(0, "the [name]", src, attack_type = LEAP_ATTACK)) blocked = 1 if(!blocked) @@ -377,8 +377,8 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm ! pounce_cooldown = !pounce_cooldown spawn(pounce_cooldown_time) //3s by default pounce_cooldown = !pounce_cooldown - else if(A.density && !A.CanPass(src)) - visible_message("[src] smashes into [A]!", "You smash into [A]!") + else if(hit_atom.density && !hit_atom.CanPass(src)) + visible_message("[src] smashes into [hit_atom]!", "You smash into [hit_atom]!") playsound(src, 'sound/items/trayhit1.ogg', 50, 1) Knockdown(15, 1, 1) diff --git a/modular_citadel/code/modules/projectiles/guns/ballistic/spinfusor.dm b/modular_citadel/code/modules/projectiles/guns/ballistic/spinfusor.dm index d16df6b285..5c4775a1e1 100644 --- a/modular_citadel/code/modules/projectiles/guns/ballistic/spinfusor.dm +++ b/modular_citadel/code/modules/projectiles/guns/ballistic/spinfusor.dm @@ -22,11 +22,11 @@ throwforce = 15 //still deadly when thrown throw_speed = 3 -/obj/item/ammo_casing/caseless/spinfusor/throw_impact(atom/target) //disks detonate when thrown +/obj/item/ammo_casing/caseless/spinfusor/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) //disks detonate when thrown if(!..()) // not caught in mid-air visible_message("[src] detonates!") - playsound(src.loc, "sparks", 50, 1) - explosion(target, -1, -1, 1, 1, -1) + playsound(loc, "sparks", 50, 1) + explosion(hit_atom, -1, -1, 1, 1, -1) qdel(src) return 1 diff --git a/tgstation.dme b/tgstation.dme index 702f34f80c..d1e526d6ea 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -68,6 +68,7 @@ #include "code\__DEFINES\misc.dm" #include "code\__DEFINES\mobs.dm" #include "code\__DEFINES\monkeys.dm" +#include "code\__DEFINES\move_force.dm" #include "code\__DEFINES\movespeed_modification.dm" #include "code\__DEFINES\nanites.dm" #include "code\__DEFINES\networks.dm" @@ -377,6 +378,7 @@ #include "code\datums\components\rotation.dm" #include "code\datums\components\signal_redirect.dm" #include "code\datums\components\slippery.dm" +#include "code\datums\components\spawner.dm" #include "code\datums\components\spooky.dm" #include "code\datums\components\squeak.dm" #include "code\datums\components\stationloving.dm" @@ -1022,6 +1024,7 @@ #include "code\game\objects\structures\reflector.dm" #include "code\game\objects\structures\safe.dm" #include "code\game\objects\structures\showcase.dm" +#include "code\game\objects\structures\spawner.dm" #include "code\game\objects\structures\spirit_board.dm" #include "code\game\objects\structures\statues.dm" #include "code\game\objects\structures\table_frames.dm" @@ -1063,6 +1066,7 @@ #include "code\game\objects\structures\crates_lockers\crates\large.dm" #include "code\game\objects\structures\crates_lockers\crates\secure.dm" #include "code\game\objects\structures\crates_lockers\crates\wooden.dm" +#include "code\game\objects\structures\lavaland\necropolis_tendril.dm" #include "code\game\objects\structures\signs\_signs.dm" #include "code\game\objects\structures\signs\signs_departments.dm" #include "code\game\objects\structures\signs\signs_maps.dm" @@ -2171,7 +2175,6 @@ #include "code\modules\mob\living\simple_animal\simple_animal.dm" #include "code\modules\mob\living\simple_animal\simple_animal_vr.dm" #include "code\modules\mob\living\simple_animal\simplemob_vore_values.dm" -#include "code\modules\mob\living\simple_animal\spawner.dm" #include "code\modules\mob\living\simple_animal\status_procs.dm" #include "code\modules\mob\living\simple_animal\bot\bot.dm" #include "code\modules\mob\living\simple_animal\bot\cleanbot.dm" @@ -2275,7 +2278,6 @@ #include "code\modules\mob\living\simple_animal\hostile\mining_mobs\gutlunch.dm" #include "code\modules\mob\living\simple_animal\hostile\mining_mobs\hivelord.dm" #include "code\modules\mob\living\simple_animal\hostile\mining_mobs\mining_mobs.dm" -#include "code\modules\mob\living\simple_animal\hostile\mining_mobs\necropolis_tendril.dm" #include "code\modules\mob\living\simple_animal\hostile\retaliate\bat.dm" #include "code\modules\mob\living\simple_animal\hostile\retaliate\clown.dm" #include "code\modules\mob\living\simple_animal\hostile\retaliate\frog.dm" From a5c95f20b644355c4649ab0bbc9dd5a4d1a5e369 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Thu, 24 Oct 2019 19:58:32 +0200 Subject: [PATCH 002/123] typo. --- code/game/mecha/equipment/tools/other_tools.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/mecha/equipment/tools/other_tools.dm b/code/game/mecha/equipment/tools/other_tools.dm index 07ecdec508..fdb620cc67 100644 --- a/code/game/mecha/equipment/tools/other_tools.dm +++ b/code/game/mecha/equipment/tools/other_tools.dm @@ -84,7 +84,7 @@ switch(mode) if(1) if(!locked) - if(!istype(target) || target.anchored || target.move_resist >= MOVE_FORCE_EXTREMELY_STRON) + if(!istype(target) || target.anchored || target.move_resist >= MOVE_FORCE_EXTREMELY_STRONG) occupant_message("Unable to lock on [target]") return locked = target From b29fc9aa5865cf1786f7b7ee38e2fc711f9fefdf Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Thu, 24 Oct 2019 20:44:29 +0200 Subject: [PATCH 003/123] fermis code looks very 2k17, sad. --- code/modules/holiday/halloween/halloween.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/holiday/halloween/halloween.dm b/code/modules/holiday/halloween/halloween.dm index 5635994a7a..151bb26076 100644 --- a/code/modules/holiday/halloween/halloween.dm +++ b/code/modules/holiday/halloween/halloween.dm @@ -132,7 +132,7 @@ speak_emote = list("howls") emote_hear = list("wails","screeches") density = FALSE - anchored = TRUE + move_resist = MOVE_FORCE_OVERPOWERING incorporeal_move = 1 layer = 4 var/timer = 0 From b3ef41a10ff6064b5cf368c84067877310384b98 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Wed, 30 Oct 2019 14:02:17 +0100 Subject: [PATCH 004/123] Fixing living being unable to pull anything. --- code/modules/mob/living/living.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index df3366187d..5389f1b099 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -241,7 +241,7 @@ /mob/living/start_pulling(atom/movable/AM, state, force = pull_force, supress_message = FALSE) if(!AM || !src) return FALSE - if(!(AM.can_be_pulled(src))) + if(!(AM.can_be_pulled(src, state, force))) return FALSE if(throwing || incapacitated()) return FALSE From 27af7b271f4f999cfd56ffbf240a7d642be3d36f Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Fri, 6 Dec 2019 20:12:30 +0100 Subject: [PATCH 005/123] qdeleted to qdeleting --- code/datums/components/spawner.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/datums/components/spawner.dm b/code/datums/components/spawner.dm index dc46603b1e..fe86b60375 100644 --- a/code/datums/components/spawner.dm +++ b/code/datums/components/spawner.dm @@ -19,7 +19,7 @@ if(_max_mobs) max_mobs=_max_mobs - RegisterSignal(parent, list(COMSIG_PARENT_QDELETED), .proc/stop_spawning) + RegisterSignal(parent, list(COMSIG_PARENT_QDELETING), .proc/stop_spawning) START_PROCESSING(SSprocessing, src) /datum/component/spawner/process() From f83d1c4763b251f2d8d52635f8cf13a0428cf1a7 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Sat, 7 Dec 2019 10:53:10 +0100 Subject: [PATCH 006/123] Made kevlar and armor padding accessories inconspicious and examine-proof. --- code/__DEFINES/inventory.dm | 1 + code/modules/clothing/under/_under.dm | 3 +++ code/modules/clothing/under/accessories.dm | 3 +++ code/modules/mob/living/carbon/human/examine.dm | 2 +- code/modules/uplink/uplink_items.dm | 6 +++--- 5 files changed, 11 insertions(+), 4 deletions(-) diff --git a/code/__DEFINES/inventory.dm b/code/__DEFINES/inventory.dm index f5ea8d835f..98ba432e52 100644 --- a/code/__DEFINES/inventory.dm +++ b/code/__DEFINES/inventory.dm @@ -110,6 +110,7 @@ #define HIDENECK (1<<10) #define HIDETAUR (1<<11) //gotta hide that snowflake #define HIDESNOUT (1<<12) //or do we actually hide our snoots +#define HIDEACCESSORY (1<<13) //hides the jumpsuit accessory. //bitflags for clothing coverage - also used for limbs #define HEAD (1<<0) diff --git a/code/modules/clothing/under/_under.dm b/code/modules/clothing/under/_under.dm index bb5f909521..508fece53b 100644 --- a/code/modules/clothing/under/_under.dm +++ b/code/modules/clothing/under/_under.dm @@ -102,6 +102,9 @@ if(user && notifyAttach) to_chat(user, "You attach [I] to [src].") + if((flags_inv & HIDEACCESSORY) || (A.flags_inv & HIDEACCESSORY)) + return TRUE + var/accessory_color = attached_accessory.item_color if(!accessory_color) accessory_color = attached_accessory.icon_state diff --git a/code/modules/clothing/under/accessories.dm b/code/modules/clothing/under/accessories.dm index 0a0499b5f9..50038a03ac 100644 --- a/code/modules/clothing/under/accessories.dm +++ b/code/modules/clothing/under/accessories.dm @@ -373,6 +373,7 @@ icon_state = "padding" item_color = "nothing" armor = list("melee" = 15, "bullet" = 10, "laser" = 0, "energy" = 0, "bomb" = 5, "bio" = 0, "rad" = 0, "fire" = -20, "acid" = 45) + flags_inv = HIDEACCESSORY //hidden from indiscrete mob examines. /obj/item/clothing/accessory/kevlar name = "kevlar sheets" @@ -380,6 +381,7 @@ icon_state = "padding" item_color = "nothing" armor = list("melee" = 10, "bullet" = 20, "laser" = 0, "energy" = 0, "bomb" = 10, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 25) + flags_inv = HIDEACCESSORY /obj/item/clothing/accessory/plastics name = "underling plastic sheet" @@ -387,6 +389,7 @@ icon_state = "plastics" item_color = "nothing" armor = list("melee" = 0, "bullet" = 0, "laser" = 20, "energy" = 10, "bomb" = 0, "bio" = 30, "rad" = 0, "fire" = 0, "acid" = -40) + flags_inv = HIDEACCESSORY ///////////////////// //Pokadots On Pants// diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 04ec0454f8..01f452df56 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -34,7 +34,7 @@ var/accessory_msg if(istype(w_uniform, /obj/item/clothing/under)) var/obj/item/clothing/under/U = w_uniform - if(U.attached_accessory) + if(U.attached_accessory && !(U.attached_accessory.flags_inv & HIDEACCESSORY) && !(U.flags_inv & HIDEACCESSORY)) accessory_msg += " with [icon2html(U.attached_accessory, user)] \a [U.attached_accessory]" . += "[t_He] [t_is] wearing [w_uniform.get_examine_string(user)][accessory_msg]." diff --git a/code/modules/uplink/uplink_items.dm b/code/modules/uplink/uplink_items.dm index cf663e353f..a6110f3464 100644 --- a/code/modules/uplink/uplink_items.dm +++ b/code/modules/uplink/uplink_items.dm @@ -1332,21 +1332,21 @@ datum/uplink_item/stealthy_weapons/taeclowndo_shoes /datum/uplink_item/suits/padding name = "Soft Padding" - desc = "Padding to add to a jumpsuit to help against melee and bullets." + desc = "Inconspicious padding worn underneath jumpsuits to protect the user against melee and bullets." item = /obj/item/clothing/accessory/padding cost = 2 exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) /datum/uplink_item/suits/kevlar name = "Kevlar sheets" - desc = "Kevlar sheets to add to jumpsuit to help against bullets and melee." + desc = "Inconspicious kevlar sheets worn underneath jumpsuits to protect the user against bullets and melee." item = /obj/item/clothing/accessory/kevlar cost = 2 exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) /datum/uplink_item/suits/plastic name = "Plastic sheet" - desc = "Plastic body sheet to add to a jumpsuit to help against laser and energy harm." + desc = "Inconspicious plastic body sheet worn underneath jumpsuits to protect the user against laser and energy beams." item = /obj/item/clothing/accessory/plastics cost = 2 exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) From 160e8c1ec5863d4d5c6ae0f7fba096bbc18e0163 Mon Sep 17 00:00:00 2001 From: Seris02 Date: Fri, 27 Dec 2019 23:21:40 +0800 Subject: [PATCH 007/123] stunglasses --- code/datums/action.dm | 3 ++ code/modules/clothing/glasses/_glasses.dm | 30 +++++++++++++++++++ .../crafting/recipes/recipes_clothing.dm | 10 +++++++ 3 files changed, 43 insertions(+) diff --git a/code/datums/action.dm b/code/datums/action.dm index 77aa729eb1..44a0e0c7ba 100644 --- a/code/datums/action.dm +++ b/code/datums/action.dm @@ -533,6 +533,9 @@ cooldown = world.time owner.playsound_local(box, 'sound/misc/box_deploy.ogg', 50, TRUE) +/datum/action/item_action/flash + name = "Flash" + //Preset for spells /datum/action/spell_action check_flags = 0 diff --git a/code/modules/clothing/glasses/_glasses.dm b/code/modules/clothing/glasses/_glasses.dm index 206165a495..db5f79dfaf 100644 --- a/code/modules/clothing/glasses/_glasses.dm +++ b/code/modules/clothing/glasses/_glasses.dm @@ -247,6 +247,36 @@ throwforce = 12 glass_colour_type = /datum/client_colour/glass_colour/red +/obj/item/clothing/glasses/sunglasses/stunglasses + name = "stunglasses" + desc = "Sunglasses with inbuilt flashes. Made for those who prefer to walk around in style, who needs clumsy flashes anyway?" + actions_types = list(/datum/action/item_action/flash) + var/obj/item/assembly/flash/installed + +/obj/item/clothing/glasses/sunglasses/stunglasses/Initialize() + ..() + if (!installed) + installed = new(src) + +/obj/item/clothing/glasses/sunglasses/stunglasses/ui_action_click(mob/user) + if (installed && !installed.crit_fail) + installed.attack_self(user) + else + to_chat(user, "Install a new flash in [src]!") + + +/obj/item/clothing/glasses/sunglasses/stunglasses/attackby(obj/item/W,mob/user) + if (istype(W,/obj/item/screwdriver)) + if (installed) + installed.forceMove(get_turf(src)) + to_chat(user, "You remove [installed] from [src].") + installed = null + if (istype(W,/obj/item/assembly/flash)) + if (!installed) + W.forceMove(src) + to_chat(user, "You install [W] into [src].") + installed = W + /obj/item/clothing/glasses/welding name = "welding goggles" desc = "Protects the eyes from welders; approved by the mad scientist association." diff --git a/code/modules/crafting/recipes/recipes_clothing.dm b/code/modules/crafting/recipes/recipes_clothing.dm index 4f06a44811..088cf30196 100644 --- a/code/modules/crafting/recipes/recipes_clothing.dm +++ b/code/modules/crafting/recipes/recipes_clothing.dm @@ -87,6 +87,16 @@ reqs = list(/obj/item/clothing/glasses/sunglasses/reagent = 1) category = CAT_CLOTHING +/datum/crafting_recipe/stunglasses + name = "Stunglasses" + result = /obj/item/clothing/glasses/sunglasses/stunglasses + time = 60 + tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER) + reqs = list(/obj/item/assembly/flash = 1, + /obj/item/clothing/glasses/sunglasses = 1, + /obj/item/stack/cable_coil = 5) + category = CAT_CLOTHING + /datum/crafting_recipe/ghostsheet name = "Ghost Sheet" result = /obj/item/clothing/suit/ghost_sheet From 1d449fcd129a98a0259821ae372f7268478643e1 Mon Sep 17 00:00:00 2001 From: Seris02 Date: Sun, 29 Dec 2019 19:46:47 +0800 Subject: [PATCH 008/123] changes --- code/modules/clothing/glasses/_glasses.dm | 4 ++-- code/modules/crafting/recipes/recipes_clothing.dm | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/code/modules/clothing/glasses/_glasses.dm b/code/modules/clothing/glasses/_glasses.dm index db5f79dfaf..330e10db0e 100644 --- a/code/modules/clothing/glasses/_glasses.dm +++ b/code/modules/clothing/glasses/_glasses.dm @@ -254,7 +254,7 @@ var/obj/item/assembly/flash/installed /obj/item/clothing/glasses/sunglasses/stunglasses/Initialize() - ..() + . = ..() if (!installed) installed = new(src) @@ -264,7 +264,6 @@ else to_chat(user, "Install a new flash in [src]!") - /obj/item/clothing/glasses/sunglasses/stunglasses/attackby(obj/item/W,mob/user) if (istype(W,/obj/item/screwdriver)) if (installed) @@ -276,6 +275,7 @@ W.forceMove(src) to_chat(user, "You install [W] into [src].") installed = W + . = ..() /obj/item/clothing/glasses/welding name = "welding goggles" diff --git a/code/modules/crafting/recipes/recipes_clothing.dm b/code/modules/crafting/recipes/recipes_clothing.dm index 088cf30196..83e82654a2 100644 --- a/code/modules/crafting/recipes/recipes_clothing.dm +++ b/code/modules/crafting/recipes/recipes_clothing.dm @@ -86,7 +86,7 @@ tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER) reqs = list(/obj/item/clothing/glasses/sunglasses/reagent = 1) category = CAT_CLOTHING - +/* //Kevinz doesn't want it as a recipe for now, leaving it in if anything ever changes to let it in /datum/crafting_recipe/stunglasses name = "Stunglasses" result = /obj/item/clothing/glasses/sunglasses/stunglasses @@ -96,7 +96,7 @@ /obj/item/clothing/glasses/sunglasses = 1, /obj/item/stack/cable_coil = 5) category = CAT_CLOTHING - +*/ /datum/crafting_recipe/ghostsheet name = "Ghost Sheet" result = /obj/item/clothing/suit/ghost_sheet From 9ea99d4c810bf11a158e4f360e14585a1f58909b Mon Sep 17 00:00:00 2001 From: deathride58 Date: Sun, 29 Dec 2019 20:01:21 -0500 Subject: [PATCH 009/123] nerfs limb stamcrit by doubling the base limb stam regen, making limbs regen stam at double the rate when disabled, and adding stam multiplier mechanics to limb stamloss --- code/modules/surgery/bodyparts/bodyparts.dm | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/code/modules/surgery/bodyparts/bodyparts.dm b/code/modules/surgery/bodyparts/bodyparts.dm index a1b74942e0..f04cb0c602 100644 --- a/code/modules/surgery/bodyparts/bodyparts.dm +++ b/code/modules/surgery/bodyparts/bodyparts.dm @@ -29,6 +29,7 @@ var/burn_dam = 0 var/stamina_dam = 0 var/max_stamina_damage = 0 + var/incoming_stam_mult = 1 //Multiplier for incoming staminaloss, decreases when taking staminaloss when the limb is disabled, resets back to 1 when limb is no longer disabled. var/max_damage = 0 var/stam_heal_tick = 0 //per Life(). Defaults to 0 due to citadel changes @@ -141,7 +142,7 @@ //Return TRUE to get whatever mob this is in to update health. /obj/item/bodypart/proc/on_life() if(stam_heal_tick && stamina_dam > DAMAGE_PRECISION) //DO NOT update health here, it'll be done in the carbon's life. - if(heal_damage(brute = 0, burn = 0, stamina = stam_heal_tick, only_robotic = FALSE, only_organic = FALSE, updating_health = FALSE)) + if(heal_damage(brute = 0, burn = 0, stamina = (stam_heal_tick * (disabled ? 2 : 1)), only_robotic = FALSE, only_organic = FALSE, updating_health = FALSE)) . |= BODYPART_LIFE_UPDATE_HEALTH //Applies brute and burn damage to the organ. Returns 1 if the damage-icon states changed at all. @@ -153,7 +154,7 @@ var/dmg_mlt = CONFIG_GET(number/damage_multiplier) brute = round(max(brute * dmg_mlt, 0),DAMAGE_PRECISION) burn = round(max(burn * dmg_mlt, 0),DAMAGE_PRECISION) - stamina = round(max(stamina * dmg_mlt, 0),DAMAGE_PRECISION) + stamina = round(max((stamina * dmg_mlt) * incoming_stam_mult, 0),DAMAGE_PRECISION) brute = max(0, brute - brute_reduction) burn = max(0, burn - burn_reduction) //No stamina scaling.. for now.. @@ -184,6 +185,9 @@ var/available_damage = max_damage - current_damage stamina_dam += round(CLAMP(stamina, 0, min(max_stamina_damage - stamina_dam, available_damage)), DAMAGE_PRECISION) + if(disabled && stamina > 10) + incoming_stam_mult = max(0.01, incoming_stam_mult/(stamina*0.1)) + if(owner && updating_health) owner.updatehealth() if(stamina > DAMAGE_PRECISION) @@ -253,6 +257,8 @@ owner.update_health_hud() //update the healthdoll owner.update_body() owner.update_canmove() + if(!disabled) + incoming_stam_mult = 1 return TRUE //Updates an organ's brute/burn states for use by update_damage_overlays() @@ -646,7 +652,7 @@ held_index = 1 px_x = -6 px_y = 0 - stam_heal_tick = 2 + stam_heal_tick = 4 /obj/item/bodypart/l_arm/is_disabled() if(HAS_TRAIT(owner, TRAIT_PARALYSIS_L_ARM)) @@ -706,7 +712,7 @@ held_index = 2 px_x = 6 px_y = 0 - stam_heal_tick = 2 + stam_heal_tick = 4 max_stamina_damage = 50 /obj/item/bodypart/r_arm/is_disabled() @@ -766,7 +772,7 @@ body_damage_coeff = 0.75 px_x = -2 px_y = 12 - stam_heal_tick = 2 + stam_heal_tick = 4 max_stamina_damage = 50 var/blood_state = BLOOD_STATE_NOT_BLOODY var/list/bloody_legs = list(BLOOD_STATE_BLOOD = 0, BLOOD_STATE_OIL = 0, BLOOD_STATE_NOT_BLOODY = 0) @@ -827,7 +833,7 @@ px_x = 2 px_y = 12 max_stamina_damage = 50 - stam_heal_tick = 2 + stam_heal_tick = 4 var/blood_state = BLOOD_STATE_NOT_BLOODY var/list/bloody_legs = list(BLOOD_STATE_BLOOD = 0, BLOOD_STATE_OIL = 0, BLOOD_STATE_NOT_BLOODY = 0) From 7e7a11a5c88d822f2c995d76c1fbc07127deef62 Mon Sep 17 00:00:00 2001 From: CameronWoof Date: Thu, 2 Jan 2020 13:07:05 -0800 Subject: [PATCH 010/123] lizard tails for humans and anthromorphs --- .../new_player/sprite_accessories/tails.dm | 80 +++++++++++++++++++ 1 file changed, 80 insertions(+) diff --git a/code/modules/mob/dead/new_player/sprite_accessories/tails.dm b/code/modules/mob/dead/new_player/sprite_accessories/tails.dm index 33b174afa4..dac91b5445 100644 --- a/code/modules/mob/dead/new_player/sprite_accessories/tails.dm +++ b/code/modules/mob/dead/new_player/sprite_accessories/tails.dm @@ -370,6 +370,22 @@ color_src = MATRIXED icon = 'modular_citadel/icons/mob/mam_tails.dmi' +/datum/sprite_accessory/tails/human/smooth + name = "Smooth" + icon_state = "smooth" + +/datum/sprite_accessory/tails_animated/human/smooth + name = "Smooth" + icon_state = "smooth" + +/datum/sprite_accessory/tails/human/spikes + name = "Spikes" + icon_state = "spikes" + +/datum/sprite_accessory/tails_animated/human/spikes + name = "Spikes" + icon_state = "spikes" + /datum/sprite_accessory/tails/human/shark name = "Shark" icon_state = "shark" @@ -438,6 +454,22 @@ color_src = MATRIXED icon = 'modular_citadel/icons/mob/mam_tails.dmi' +/datum/sprite_accessory/tails/human/dtiger + name = "Dark Tiger" + icon_state = "dtiger" + +/datum/sprite_accessory/tails_animated/human/dtiger + name = "Dark Tiger" + icon_state = "dtiger" + +/datum/sprite_accessory/tails/human/ltiger + name = "Light Tiger" + icon_state = "ltiger" + +/datum/sprite_accessory/tails_animated/human/ltiger + name = "Light Tiger" + icon_state = "ltiger" + /datum/sprite_accessory/tails/human/wolf name = "Wolf" icon_state = "wolf" @@ -693,6 +725,30 @@ datum/sprite_accessory/mam_tails/insect name = "Skunk" icon_state = "skunk" +/datum/sprite_accessory/mam_tails/smooth + name = "Smooth" + icon_state = "smooth" + color_src = MUTCOLORS + icon = 'icons/mob/mutant_bodyparts.dmi' + +/datum/sprite_accessory/mam_tails_animated/smooth + name = "Smooth" + icon_state = "smooth" + color_src = MUTCOLORS + icon = 'icons/mob/mutant_bodyparts.dmi' + +/datum/sprite_accessory/mam_tails_animated/spikes + name = "Spikes" + icon_state = "spikes" + color_src = MUTCOLORS + icon = 'icons/mob/mutant_bodyparts.dmi' + +/datum/sprite_accessory/mam_tails/spikes + name = "Spikes" + icon_state = "spikes" + color_src = MUTCOLORS + icon = 'icons/mob/mutant_bodyparts.dmi' + /datum/sprite_accessory/mam_tails/shark name = "Shark" icon_state = "shark" @@ -741,6 +797,30 @@ datum/sprite_accessory/mam_tails/insect name = "Tiger" icon_state = "tiger" +/datum/sprite_accessory/mam_tails/dtiger + name = "Dark Tiger" + icon_state = "dtiger" + color_src = MUTCOLORS + icon = 'icons/mob/mutant_bodyparts.dmi' + +/datum/sprite_accessory/mam_tails_animated/dtiger + name = "Dark Tiger" + icon_state = "dtiger" + color_src = MUTCOLORS + icon = 'icons/mob/mutant_bodyparts.dmi' + +/datum/sprite_accessory/mam_tails/ltiger + name = "Light Tiger" + icon_state = "ltiger" + color_src = MUTCOLORS + icon = 'icons/mob/mutant_bodyparts.dmi' + +/datum/sprite_accessory/mam_tails_animated/ltiger + name = "Light Tiger" + icon_state = "ltiger" + color_src = MUTCOLORS + icon = 'icons/mob/mutant_bodyparts.dmi' + /datum/sprite_accessory/mam_tails/wolf name = "Wolf" icon_state = "wolf" From ab23a934fc92746225b61e29ca3b00a0991e8eae Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Sun, 5 Jan 2020 15:01:12 -0800 Subject: [PATCH 011/123] Update beams.dm --- code/modules/projectiles/projectile/beams.dm | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/code/modules/projectiles/projectile/beams.dm b/code/modules/projectiles/projectile/beams.dm index be73e22e6d..49c4beefab 100644 --- a/code/modules/projectiles/projectile/beams.dm +++ b/code/modules/projectiles/projectile/beams.dm @@ -117,8 +117,11 @@ impact_effect_type = /obj/effect/temp_visual/impact_effect/green_laser light_color = LIGHT_COLOR_GREEN -/obj/item/projectile/beam/emitter/singularity_pull() - return //don't want the emitters to miss +/obj/item/projectile/beam/emitter/hitscan + hitscan = TRUE + muzzle_effect_type = /obj/effect/temp_visual/impact_effect/emitter + tracer_effect_type = /obj/effect/temp_visual/tracer_effect/emitter + impact_effect_type = /obj/effect/temp_visual/impact_effect/emitter /obj/item/projectile/beam/lasertag name = "laser tag beam" @@ -207,4 +210,4 @@ . = ..() if(isopenturf(target) || istype(target, /turf/closed/indestructible))//shrunk floors wouldnt do anything except look weird, i-walls shouldnt be bypassable return - target.AddComponent(/datum/component/shrink, shrink_time) \ No newline at end of file + target.AddComponent(/datum/component/shrink, shrink_time) From 198b1d5bd4ee7d667d7ae1c04756d4de59329156 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Sun, 5 Jan 2020 15:01:58 -0800 Subject: [PATCH 012/123] Update emitter.dm --- code/modules/power/singularity/emitter.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/power/singularity/emitter.dm b/code/modules/power/singularity/emitter.dm index 71a8565d26..1be201f2b8 100644 --- a/code/modules/power/singularity/emitter.dm +++ b/code/modules/power/singularity/emitter.dm @@ -30,7 +30,7 @@ var/locked = FALSE var/allow_switch_interact = TRUE - var/projectile_type = /obj/item/projectile/beam/emitter + var/projectile_type = /obj/item/projectile/beam/emitter/hitscan var/projectile_sound = 'sound/weapons/emitter.ogg' var/datum/effect_system/spark_spread/sparks From eea8d353b6d34301cb2865afee9496f73bbb8bc2 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Sun, 5 Jan 2020 15:03:14 -0800 Subject: [PATCH 013/123] Update tracer.dm --- .../objects/effects/temporary_visuals/projectiles/tracer.dm | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/code/game/objects/effects/temporary_visuals/projectiles/tracer.dm b/code/game/objects/effects/temporary_visuals/projectiles/tracer.dm index 0cd4589d4c..bd2c6c6e87 100644 --- a/code/game/objects/effects/temporary_visuals/projectiles/tracer.dm +++ b/code/game/objects/effects/temporary_visuals/projectiles/tracer.dm @@ -70,3 +70,7 @@ /obj/effect/projectile/tracer/laser/wavemotion name = "particle trail" icon_state = "tracer_wavemotion" + +/obj/effect/projectile/tracer/laser/emitter + name = "emitter beam" + icon_state = "emitter" From 6e1e1aac3ecea55aaf0cc1329a6658c75cacd387 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Sun, 5 Jan 2020 15:03:42 -0800 Subject: [PATCH 014/123] Update impact.dm --- .../objects/effects/temporary_visuals/projectiles/impact.dm | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/code/game/objects/effects/temporary_visuals/projectiles/impact.dm b/code/game/objects/effects/temporary_visuals/projectiles/impact.dm index 0360c4ccc2..a98c40d4fc 100644 --- a/code/game/objects/effects/temporary_visuals/projectiles/impact.dm +++ b/code/game/objects/effects/temporary_visuals/projectiles/impact.dm @@ -39,4 +39,8 @@ /obj/effect/projectile/impact/laser/wavemotion name = "particle impact" - icon_state = "impact_wavemotion" \ No newline at end of file + icon_state = "impact_wavemotion" + +/obj/effect/projectile/impact/laser/emitter + name = "emitter impact" + icon_state = "impact_emitter" From 07885a399a68ca21697a8c5666c077a7d4d7a55b Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Sun, 5 Jan 2020 15:04:13 -0800 Subject: [PATCH 015/123] Update muzzle.dm --- .../objects/effects/temporary_visuals/projectiles/muzzle.dm | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/code/game/objects/effects/temporary_visuals/projectiles/muzzle.dm b/code/game/objects/effects/temporary_visuals/projectiles/muzzle.dm index cbd4b21d39..a7ff399734 100644 --- a/code/game/objects/effects/temporary_visuals/projectiles/muzzle.dm +++ b/code/game/objects/effects/temporary_visuals/projectiles/muzzle.dm @@ -31,4 +31,8 @@ /obj/effect/projectile/muzzle/laser/wavemotion name = "particle backblast" - icon_state = "muzzle_wavemotion" \ No newline at end of file + icon_state = "muzzle_wavemotion" + +/obj/effect/projectile/muzzle/laser/emitter + name = "emitter flash" + icon_state = "muzzle_emitter" From f26c02801a1f14a2dd4667160bebf2e66a4a711c Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Sun, 5 Jan 2020 15:04:51 -0800 Subject: [PATCH 016/123] Update beams.dm --- code/modules/projectiles/projectile/beams.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/modules/projectiles/projectile/beams.dm b/code/modules/projectiles/projectile/beams.dm index 49c4beefab..0a2e44213b 100644 --- a/code/modules/projectiles/projectile/beams.dm +++ b/code/modules/projectiles/projectile/beams.dm @@ -119,9 +119,9 @@ /obj/item/projectile/beam/emitter/hitscan hitscan = TRUE - muzzle_effect_type = /obj/effect/temp_visual/impact_effect/emitter - tracer_effect_type = /obj/effect/temp_visual/tracer_effect/emitter - impact_effect_type = /obj/effect/temp_visual/impact_effect/emitter + muzzle_effect_type = /obj/effect/projectile/muzzle/laser/emitter + tracer_effect_type = /obj/effect/projectile/tracer/laser/emitter + impact_effect_type = /obj/effect/projectile/impact/laser/emitter /obj/item/projectile/beam/lasertag name = "laser tag beam" From aca8c33149cdd930567729faf851a2c9afb048c3 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Sun, 5 Jan 2020 15:08:12 -0800 Subject: [PATCH 017/123] Update beams.dm --- code/modules/projectiles/projectile/beams.dm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/code/modules/projectiles/projectile/beams.dm b/code/modules/projectiles/projectile/beams.dm index 0a2e44213b..1c5291732e 100644 --- a/code/modules/projectiles/projectile/beams.dm +++ b/code/modules/projectiles/projectile/beams.dm @@ -117,6 +117,9 @@ impact_effect_type = /obj/effect/temp_visual/impact_effect/green_laser light_color = LIGHT_COLOR_GREEN +/obj/item/projectile/beam/emitter/singularity_pull() + return + /obj/item/projectile/beam/emitter/hitscan hitscan = TRUE muzzle_effect_type = /obj/effect/projectile/muzzle/laser/emitter From 39461e2806a576ad91c7cf18b0cb12e6575c74f6 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Sun, 5 Jan 2020 15:16:04 -0800 Subject: [PATCH 018/123] Update beams.dm --- code/modules/projectiles/projectile/beams.dm | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/code/modules/projectiles/projectile/beams.dm b/code/modules/projectiles/projectile/beams.dm index 1c5291732e..89a9079454 100644 --- a/code/modules/projectiles/projectile/beams.dm +++ b/code/modules/projectiles/projectile/beams.dm @@ -122,9 +122,10 @@ /obj/item/projectile/beam/emitter/hitscan hitscan = TRUE - muzzle_effect_type = /obj/effect/projectile/muzzle/laser/emitter - tracer_effect_type = /obj/effect/projectile/tracer/laser/emitter - impact_effect_type = /obj/effect/projectile/impact/laser/emitter + muzzle_type = /obj/effect/projectile/muzzle/laser/emitter + tracer_type = /obj/effect/projectile/tracer/laser/emitter + impact_type = /obj/effect/projectile/impact/laser/emitter + impact_effect_type = null /obj/item/projectile/beam/lasertag name = "laser tag beam" From 5975f4c17d4ea91cbc60ea1f4e2dde3b1136b957 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Tue, 7 Jan 2020 02:12:47 -0800 Subject: [PATCH 019/123] Update observer.dm --- code/modules/mob/dead/observer/observer.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index f1c4316c65..50c3b9508a 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -261,8 +261,9 @@ Transfer_mind is there to check if mob is being deleted/not going to have a body Works together with spawning an observer, noted above. */ -/mob/proc/ghostize(can_reenter_corpse = TRUE, special = FALSE, penalize = FALSE) +/mob/proc/ghostize(can_reenter_corpse = TRUE, special = FALSE, penalize = FALSE, voluntary = FALSE) penalize = suiciding || penalize // suicide squad. + voluntary_ghosted = voluntary if(!key || cmptext(copytext(key,1,2),"@") || (SEND_SIGNAL(src, COMSIG_MOB_GHOSTIZE, can_reenter_corpse, special, penalize) & COMPONENT_BLOCK_GHOSTING)) return //mob has no key, is an aghost or some component hijacked. stop_sound_channel(CHANNEL_HEARTBEAT) //Stop heartbeat sounds because You Are A Ghost Now From b9260a62dfaec6b6eade14b1a71f47e8243fd301 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Tue, 7 Jan 2020 02:16:52 -0800 Subject: [PATCH 020/123] Update observer.dm --- code/modules/mob/dead/observer/observer.dm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index 50c3b9508a..1e95062b10 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -287,9 +287,6 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp set name = "Ghost" set desc = "Relinquish your life and enter the land of the dead." - if(SEND_SIGNAL(src, COMSIG_MOB_GHOSTIZE, (stat == DEAD) ? TRUE : FALSE, FALSE) & COMPONENT_BLOCK_GHOSTING) - return - var/penalty = CONFIG_GET(number/suicide_reenter_round_timer) MINUTES var/roundstart_quit_limit = CONFIG_GET(number/roundstart_suicide_time_limit) MINUTES if(world.time < roundstart_quit_limit) @@ -297,6 +294,9 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp if(penalty + world.realtime - SSshuttle.realtimeofstart > SSshuttle.auto_call + SSshuttle.emergencyCallTime + SSshuttle.emergencyDockTime + SSshuttle.emergencyEscapeTime) penalty = CANT_REENTER_ROUND + if(SEND_SIGNAL(src, COMSIG_MOB_GHOSTIZE, (stat == DEAD) ? TRUE : FALSE, FALSE, penalize, (stat == DEAD)? TRUE : FALSE) & COMPONENT_BLOCK_GHOSTING) + return + if(stat != DEAD) succumb() if(stat == DEAD) @@ -309,7 +309,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp var/obj/machinery/cryopod/C = loc C.despawn_occupant() else - ghostize(0, penalize = TRUE) //0 parameter is so we can never re-enter our body, "Charlie, you can never come baaaack~" :3 + ghostize(0, penalize = TRUE, voluntary = TRUE) //0 parameter is so we can never re-enter our body, "Charlie, you can never come baaaack~" :3 suicide_log(TRUE) /mob/camera/verb/ghost() From 91c8bb2e95d8e233dd7023f345622747f1412c87 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Tue, 7 Jan 2020 02:17:56 -0800 Subject: [PATCH 021/123] Update experiment.dm --- code/modules/antagonists/abductor/machinery/experiment.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/antagonists/abductor/machinery/experiment.dm b/code/modules/antagonists/abductor/machinery/experiment.dm index 10581e7bbb..b5233606cf 100644 --- a/code/modules/antagonists/abductor/machinery/experiment.dm +++ b/code/modules/antagonists/abductor/machinery/experiment.dm @@ -174,7 +174,7 @@ if(!GlandTest) say("Experimental dissection not detected!") return "No glands detected!" - if(H.mind != null && H.ckey != null) + if(H.mind != null && (H.voluntary_ghosted || (H.ckey != null))) LAZYINITLIST(abductee_minds) LAZYADD(history, H) LAZYADD(abductee_minds, H.mind) From 8a29c5a7a92878e8445294b0f809168df636fac3 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Tue, 7 Jan 2020 02:20:44 -0800 Subject: [PATCH 022/123] Update mob_defines.dm --- code/modules/mob/mob_defines.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index c7365210ab..bcfafa1cb1 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -119,3 +119,5 @@ var/registered_z var/mob/audiovisual_redirect //Mob to redirect messages, speech, and sounds to + + var/voluntary_ghosted = FALSE //whether or not they voluntarily ghosted. From 5f7f1b09f3641ebd03db70183b447b4b425ad0f0 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Tue, 7 Jan 2020 02:41:05 -0800 Subject: [PATCH 023/123] Update observer.dm --- code/modules/mob/dead/observer/observer.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index 1e95062b10..91f2180489 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -294,7 +294,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp if(penalty + world.realtime - SSshuttle.realtimeofstart > SSshuttle.auto_call + SSshuttle.emergencyCallTime + SSshuttle.emergencyDockTime + SSshuttle.emergencyEscapeTime) penalty = CANT_REENTER_ROUND - if(SEND_SIGNAL(src, COMSIG_MOB_GHOSTIZE, (stat == DEAD) ? TRUE : FALSE, FALSE, penalize, (stat == DEAD)? TRUE : FALSE) & COMPONENT_BLOCK_GHOSTING) + if(SEND_SIGNAL(src, COMSIG_MOB_GHOSTIZE, (stat == DEAD) ? TRUE : FALSE, FALSE, (stat == DEAD)? penalty : 0, (stat == DEAD)? TRUE : FALSE) & COMPONENT_BLOCK_GHOSTING) return if(stat != DEAD) From 080cb7489365a668363a7a9ecd28e11d6e0a688f Mon Sep 17 00:00:00 2001 From: Hatterhat Date: Fri, 10 Jan 2020 22:56:11 -0600 Subject: [PATCH 024/123] tgstation 40920 tweaked and tested for cit --- code/datums/status_effects/debuffs.dm | 2 +- code/game/machinery/autolathe.dm | 8 ++++++- code/game/machinery/cell_charger.dm | 2 ++ code/game/machinery/cloning.dm | 5 ++++ code/game/machinery/computer/teleporter.dm | 6 ++--- code/game/machinery/dna_scanner.dm | 7 ++++++ code/game/machinery/harvester.dm | 6 +++-- code/game/machinery/hologram.dm | 5 ++++ code/game/machinery/launch_pad.dm | 5 ++++ code/game/machinery/limbgrower.dm | 7 +++++- code/game/machinery/recharger.dm | 5 ++++ code/game/machinery/rechargestation.dm | 7 ++++++ code/game/machinery/recycler.dm | 7 +++--- code/game/machinery/spaceheater.dm | 2 ++ code/game/machinery/teleporter.dm | 24 +++++++++++++++---- code/game/mecha/mech_bay.dm | 5 ++++ code/game/mecha/mech_fabricator.dm | 5 ++++ .../objects/items/devices/laserpointer.dm | 8 +++++++ .../components/unary_devices/cryo.dm | 5 ++++ .../kitchen_machinery/deep_fryer.dm | 4 +++- .../kitchen_machinery/gibber.dm | 8 +++++++ .../kitchen_machinery/monkeyrecycler.dm | 8 +++++-- .../kitchen_machinery/processor.dm | 5 ++++ .../kitchen_machinery/smartfridge.dm | 5 ++++ code/modules/hydroponics/biogenerator.dm | 6 +++++ code/modules/hydroponics/hydroponics.dm | 5 ++++ code/modules/hydroponics/seed_extractor.dm | 5 ++++ code/modules/power/port_gen.dm | 2 ++ code/modules/power/rtg.dm | 5 ++++ code/modules/power/singularity/emitter.dm | 5 ++++ code/modules/power/tesla/coil.dm | 5 ++++ code/modules/power/turbine.dm | 10 ++++++++ .../chemistry/machinery/chem_heater.dm | 5 ++++ code/modules/research/experimentor.dm | 5 ++++ .../modules/research/machinery/_production.dm | 6 +++++ .../research/nanites/nanite_chamber.dm | 5 ++++ 36 files changed, 196 insertions(+), 19 deletions(-) diff --git a/code/datums/status_effects/debuffs.dm b/code/datums/status_effects/debuffs.dm index 036d8193fb..e3d351c80c 100644 --- a/code/datums/status_effects/debuffs.dm +++ b/code/datums/status_effects/debuffs.dm @@ -613,7 +613,7 @@ if(do_after(mob_viewer, 35, null, mob_viewer)) if(isliving(mob_viewer)) var/mob/living/L = mob_viewer - to_chat(mob_viewer, "You succesfuly remove the durathread strand.") + to_chat(mob_viewer, "You successfully remove the durathread strand.") L.remove_status_effect(STATUS_EFFECT_CHOKINGSTRAND) diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm index bdb90c4c97..eaa5f44e0b 100644 --- a/code/game/machinery/autolathe.dm +++ b/code/game/machinery/autolathe.dm @@ -220,6 +220,12 @@ T -= M.rating*0.2 prod_coeff = min(1,max(0,T)) // Coeff going 1 -> 0,8 -> 0,6 -> 0,4 +/obj/machinery/autolathe/examine(mob/user) + . += ..() + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) + if(in_range(user, src) || isobserver(user)) + . += "The status display reads: Storing up to [materials.max_amount] material units.
Material consumption at [prod_coeff*100]%.
" + /obj/machinery/autolathe/proc/main_win(mob/user) var/dat = "

Autolathe Menu:


" dat += materials_printout() @@ -380,4 +386,4 @@ //Called when the object is constructed by an autolathe //Has a reference to the autolathe so you can do !!FUN!! things with hacked lathes /obj/item/proc/autolathe_crafted(obj/machinery/autolathe/A) - return \ No newline at end of file + return diff --git a/code/game/machinery/cell_charger.dm b/code/game/machinery/cell_charger.dm index 1c0635fd3d..1be5a40070 100644 --- a/code/game/machinery/cell_charger.dm +++ b/code/game/machinery/cell_charger.dm @@ -28,6 +28,8 @@ . += "There's [charging ? "a" : "no"] cell in the charger." if(charging) . += "Current charge: [round(charging.percent(), 1)]%." + if(in_range(user, src) || isobserver(user)) + to_chat(user, "The status display reads: Charge rate at [charge_rate]J per cycle.") /obj/machinery/cell_charger/attackby(obj/item/W, mob/user, params) if(istype(W, /obj/item/stock_parts/cell) && !panel_open) diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm index 97b260f3bf..cdbafbc3e9 100644 --- a/code/game/machinery/cloning.dm +++ b/code/game/machinery/cloning.dm @@ -102,8 +102,13 @@ /obj/machinery/clonepod/examine(mob/user) . = ..() var/mob/living/mob_occupant = occupant + . += "The linking device can be scanned with a multitool." if(mess) . += "It's filled with blood and viscera. You swear you can see it moving..." + if(in_range(user, src) || isobserver(user)) + to_chat(user, "The status display reads: Speed [speed_coeff*50]%.
Predicted amount of cellular damage: [100-heal_level]%.") + if(efficiency > 5) + to_chat(user, "Pod has been upgraded to support autoprocessing.") if(is_operational() && mob_occupant) if(mob_occupant.stat != DEAD) . += "Current clone cycle is [round(get_completion())]% complete." diff --git a/code/game/machinery/computer/teleporter.dm b/code/game/machinery/computer/teleporter.dm index 21fb70c38c..c52cf29660 100644 --- a/code/game/machinery/computer/teleporter.dm +++ b/code/game/machinery/computer/teleporter.dm @@ -44,7 +44,7 @@ data += "Current target: [(!target) ? "None" : "[get_area(target)] [(regime_set != "Gate") ? "" : "Teleporter"]"]
" if(calibrating) data += "Calibration: In Progress" - else if(power_station.teleporter_hub.calibrated || power_station.teleporter_hub.accurate >= 3) + else if(power_station.teleporter_hub.calibrated || power_station.efficiency >= 3) data += "Calibration: Optimal" else data += "Calibration: Sub-Optimal" @@ -84,14 +84,14 @@ if(!target) say("Error: No target set to calibrate to.") return - if(power_station.teleporter_hub.calibrated || power_station.teleporter_hub.accurate >= 3) + if(power_station.teleporter_hub.calibrated || power_station.efficiency >= 3) say("Hub is already calibrated!") return say("Processing hub calibration to target...") calibrating = 1 power_station.update_icon() - spawn(50 * (3 - power_station.teleporter_hub.accurate)) //Better parts mean faster calibration + spawn(50 * (3 - power_station.efficiency)) //Better parts mean faster calibration calibrating = 0 if(check_hub_connection()) power_station.teleporter_hub.calibrated = 1 diff --git a/code/game/machinery/dna_scanner.dm b/code/game/machinery/dna_scanner.dm index f62dceff6c..648e9f5e71 100644 --- a/code/game/machinery/dna_scanner.dm +++ b/code/game/machinery/dna_scanner.dm @@ -27,6 +27,13 @@ for(var/obj/item/stock_parts/micro_laser/P in component_parts) damage_coeff = P.rating +/obj/machinery/dna_scannernew/examine(mob/user) + ..() + if(in_range(user, src) || isobserver(user)) + to_chat(user, "The status display reads: Radiation pulse accuracy increased by factor [precision_coeff**2].
Radiation pulse damage decreased by factor [damage_coeff**2].") + if(scan_level >= 3) + to_chat(user, "Scanner has been upgraded to support autoprocessing.") + /obj/machinery/dna_scannernew/update_icon() //no power or maintenance diff --git a/code/game/machinery/harvester.dm b/code/game/machinery/harvester.dm index e1f9824524..40e898e29c 100644 --- a/code/game/machinery/harvester.dm +++ b/code/game/machinery/harvester.dm @@ -129,7 +129,7 @@ /obj/machinery/harvester/proc/end_harvesting() harvesting = FALSE open_machine() - say("Subject has been succesfuly harvested.") + say("Subject has been successfully harvested.") playsound(src, 'sound/machines/microwave/microwave-end.ogg', 100, 0) /obj/machinery/harvester/screwdriver_act(mob/living/user, obj/item/I) @@ -191,4 +191,6 @@ if(state_open) . += "[src] must be closed before harvesting." else if(!harvesting) - . += "Alt-click [src] to start harvesting." \ No newline at end of file + . += "Alt-click [src] to start harvesting." + if(in_range(user, src) || isobserver(user)) + to_chat(user, "The status display reads: Harvest speed at [interval*0.1] seconds per organ.") diff --git a/code/game/machinery/hologram.dm b/code/game/machinery/hologram.dm index b1783ba940..d48a71ce46 100644 --- a/code/game/machinery/hologram.dm +++ b/code/game/machinery/hologram.dm @@ -143,6 +143,11 @@ GLOBAL_LIST_EMPTY(network_holopads) holograph_range += 1 * B.rating holo_range = holograph_range +/obj/machinery/holopad/examine(mob/user) + ..() + if(in_range(user, src) || isobserver(user)) + to_chat(user, "The status display reads: Current projection range: [holo_range] units.") + /obj/machinery/holopad/attackby(obj/item/P, mob/user, params) if(default_deconstruction_screwdriver(user, "holopad_open", "holopad0", P)) return diff --git a/code/game/machinery/launch_pad.dm b/code/game/machinery/launch_pad.dm index 5418dcdb97..4a51a7b0c5 100644 --- a/code/game/machinery/launch_pad.dm +++ b/code/game/machinery/launch_pad.dm @@ -23,6 +23,11 @@ E += M.rating*15 range = E +/obj/machinery/launchpad/examine(mob/user) + ..() + if(in_range(user, src) || isobserver(user)) + to_chat(user, "The status display reads: Maximum range: [range] units.") + /obj/machinery/launchpad/attackby(obj/item/I, mob/user, params) if(stationary) if(default_deconstruction_screwdriver(user, "lpad-idle-o", "lpad-idle", I)) diff --git a/code/game/machinery/limbgrower.dm b/code/game/machinery/limbgrower.dm index bf9400219b..9c2bd0744b 100644 --- a/code/game/machinery/limbgrower.dm +++ b/code/game/machinery/limbgrower.dm @@ -144,7 +144,7 @@ // Set this limb up using the specias name and body zone limb.icon_state = "[selected_category]_[limb.body_zone]" limb.name = "\improper synthetic [selected_category] [parse_zone(limb.body_zone)]" - limb.desc = "A synthetic [selected_category] limb that will morph on its first use in surgery. This one is for the [parse_zone(limb.body_zone)]" + limb.desc = "A synthetic [selected_category] limb that will morph on its first use in surgery. This one is for the [parse_zone(limb.body_zone)]." limb.species_id = selected_category limb.update_icon_dropped() @@ -158,6 +158,11 @@ T -= M.rating*0.2 prod_coeff = min(1,max(0,T)) // Coeff going 1 -> 0,8 -> 0,6 -> 0,4 +/obj/machinery/limbgrower/examine(mob/user) + ..() + if(in_range(user, src) || isobserver(user)) + to_chat(user, "The status display reads: Storing up to [reagents.maximum_volume]u of synthflesh.
Synthflesh consumption at [prod_coeff*100]%.") + /obj/machinery/limbgrower/proc/main_win(mob/user) var/dat = "

Limb Grower Menu:


" dat += "Chemical Storage" diff --git a/code/game/machinery/recharger.dm b/code/game/machinery/recharger.dm index 927608d3d5..fcfdcc44bb 100755 --- a/code/game/machinery/recharger.dm +++ b/code/game/machinery/recharger.dm @@ -23,6 +23,11 @@ for(var/obj/item/stock_parts/capacitor/C in component_parts) recharge_coeff = C.rating +/obj/machinery/recharger/examine(mob/user) + ..() + if(in_range(user, src) || isobserver(user)) + to_chat(user, "The status display reads: Recharging [recharge_coeff*10]% cell charge per cycle.") + /obj/machinery/recharger/proc/setCharging(new_charging) charging = new_charging if (new_charging) diff --git a/code/game/machinery/rechargestation.dm b/code/game/machinery/rechargestation.dm index c0f563d44d..fa438b518b 100644 --- a/code/game/machinery/rechargestation.dm +++ b/code/game/machinery/rechargestation.dm @@ -50,6 +50,13 @@ for(var/obj/item/stock_parts/cell/C in component_parts) recharge_speed *= C.maxcharge / 10000 +/obj/machinery/recharge_station/examine(mob/user) + ..() + if(in_range(user, src) || isobserver(user)) + to_chat(user, "The status display reads: Recharging [recharge_speed]J per cycle.") + if(repairs) + to_chat(user, "[src] has been upgraded to support automatic repairs.") + /obj/machinery/recharge_station/process() if(!is_operational()) return diff --git a/code/game/machinery/recycler.dm b/code/game/machinery/recycler.dm index c8beeb8c83..b7c4d8f5d6 100644 --- a/code/game/machinery/recycler.dm +++ b/code/game/machinery/recycler.dm @@ -41,9 +41,10 @@ /obj/machinery/recycler/examine(mob/user) . = ..() - . += "The power light is [(stat & NOPOWER) ? "off" : "on"]." - . += "The safety-mode light is [safety_mode ? "on" : "off"]." - . += "The safety-sensors status light is [obj_flags & EMAGGED ? "off" : "on"]." + . += "Reclaiming [amount_produced]% of materials salvaged." + . += {"The power light is [(stat & NOPOWER) ? "off" : "on"]. + The safety-mode light is [safety_mode ? "on" : "off"]. + The safety-sensors status light is [obj_flags & EMAGGED ? "off" : "on"]."} /obj/machinery/recycler/power_change() ..() diff --git a/code/game/machinery/spaceheater.dm b/code/game/machinery/spaceheater.dm index 984a911d32..968ff69e66 100644 --- a/code/game/machinery/spaceheater.dm +++ b/code/game/machinery/spaceheater.dm @@ -52,6 +52,8 @@ . += "The charge meter reads [cell ? round(cell.percent(), 1) : 0]%." else . += "There is no power cell installed." + if(in_range(user, src) || isobserver(user)) + to_chat(user, "The status display reads: Temperature range at [settableTemperatureRange]°C.
Heating power at [heatingPower*0.001]kJ.
Power consumption at [(efficiency*-0.0025)+150]%.") //100%, 75%, 50%, 25% /obj/machinery/space_heater/update_icon() if(on) diff --git a/code/game/machinery/teleporter.dm b/code/game/machinery/teleporter.dm index ae71a0b844..3a52e652d3 100644 --- a/code/game/machinery/teleporter.dm +++ b/code/game/machinery/teleporter.dm @@ -11,7 +11,7 @@ idle_power_usage = 10 active_power_usage = 2000 circuit = /obj/item/circuitboard/machine/teleporter_hub - var/accurate = FALSE + var/accuracy = 0 var/obj/machinery/teleport/station/power_station var/calibrated //Calibration prevents mutation @@ -29,7 +29,12 @@ var/A = 0 for(var/obj/item/stock_parts/matter_bin/M in component_parts) A += M.rating - accurate = A + accuracy = A + +/obj/machinery/teleport/hub/examine(mob/user) + ..() + if(in_range(user, src) || isobserver(user)) + to_chat(user, "The status display reads: Probability of malfunction decreased by [(accuracy*25)-25]%.") /obj/machinery/teleport/hub/proc/link_power_station() if(power_station) @@ -69,13 +74,13 @@ if(do_teleport(M, com.target, channel = TELEPORT_CHANNEL_BLUESPACE)) use_power(5000) - if(!calibrated && iscarbon(M) && prob(30 - ((accurate) * 10))) //oh dear a problem + if(!calibrated && iscarbon(M) && prob(30 - ((accuracy) * 10))) //oh dear a problem var/mob/living/carbon/C = M if(C.dna?.species && C.dna.species.id != "fly" && !HAS_TRAIT(C, TRAIT_RADIMMUNE)) to_chat(C, "You hear a buzzing in your ears.") C.set_species(/datum/species/fly) log_game("[C] ([key_name(C)]) was turned into a fly person") - C.apply_effect((rand(120 - accurate * 40, 180 - accurate * 60)), EFFECT_IRRADIATE, 0) + C.apply_effect((rand(120 - accuracy * 40, 180 - accuracy * 60)), EFFECT_IRRADIATE, 0) calibrated = FALSE return @@ -102,7 +107,7 @@ /obj/machinery/teleport/station - name = "station" + name = "teleporter station" desc = "The power control station for a bluespace teleporter. Used for toggling power, and can activate a test-fire to prevent malfunctions." icon_state = "controller" use_power = IDLE_POWER_USE @@ -125,6 +130,15 @@ E += C.rating efficiency = E - 1 +/obj/machinery/teleport/station/examine(mob/user) + ..() + if(!panel_open) + to_chat(user, "The panel is screwed in, obstructing the linking device and wiring panel.") + else + to_chat(user, "The linking device is now able to be scanned with a multitool.
The wiring can be connected to a nearby console and hub with a pair of wirecutters.
") + if(in_range(user, src) || isobserver(user)) + to_chat(user, "The status display reads: This station can be linked to [efficiency] other station(s).") + /obj/machinery/teleport/station/proc/link_console_and_hub() for(var/direction in GLOB.cardinals) teleporter_hub = locate(/obj/machinery/teleport/hub, get_step(src, direction)) diff --git a/code/game/mecha/mech_bay.dm b/code/game/mecha/mech_bay.dm index bc8a675085..9903fa00b1 100644 --- a/code/game/mecha/mech_bay.dm +++ b/code/game/mecha/mech_bay.dm @@ -36,6 +36,11 @@ MC += C.rating max_charge = MC * 25 +/obj/machinery/mech_bay_recharge_port/examine(mob/user) + ..() + if(in_range(user, src) || isobserver(user)) + to_chat(user, "The status display reads: Base recharge rate at [max_charge]J per cycle.") + /obj/machinery/mech_bay_recharge_port/process() if(stat & NOPOWER || !recharge_console) return diff --git a/code/game/mecha/mech_fabricator.dm b/code/game/mecha/mech_fabricator.dm index 417fefce6e..eaaef75501 100644 --- a/code/game/mecha/mech_fabricator.dm +++ b/code/game/mecha/mech_fabricator.dm @@ -62,6 +62,11 @@ T += Ml.rating time_coeff = round(initial(time_coeff) - (initial(time_coeff)*(T))/5,0.01) +/obj/machinery/mecha_part_fabricator/examine(mob/user) + ..() + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) + if(in_range(user, src) || isobserver(user)) + to_chat(user, "The status display reads: Storing up to [materials.max_amount] material units.
Material consumption at [component_coeff*100]%.
Build time reduced by [100-time_coeff*100]%.") /obj/machinery/mecha_part_fabricator/emag_act() . = ..() diff --git a/code/game/objects/items/devices/laserpointer.dm b/code/game/objects/items/devices/laserpointer.dm index 1654ecde41..1f79614da2 100644 --- a/code/game/objects/items/devices/laserpointer.dm +++ b/code/game/objects/items/devices/laserpointer.dm @@ -56,6 +56,14 @@ else return ..() +/obj/item/laser_pointer/examine(mob/user) + ..() + if(in_range(user, src) || isobserver(user)) + if(!diode) + to_chat(user, "The diode is missing.") + else + to_chat(user, "A class [diode.rating] laser diode is installed. It is screwed in place.") + /obj/item/laser_pointer/afterattack(atom/target, mob/living/user, flag, params) . = ..() laser_act(target, user, params) diff --git a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm index 0a54503be5..291eb40507 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm @@ -57,6 +57,11 @@ heat_capacity = initial(heat_capacity) / C conduction_coefficient = initial(conduction_coefficient) * C +/obj/machinery/atmospherics/components/unary/cryo_cell/examine(mob/user) //this is leaving out everything but efficiency since they follow the same idea of "better matter bin, better results" + ..() + if(in_range(user, src) || isobserver(user)) + to_chat(user, "The status display reads: Efficiency at [efficiency*100]%.") + /obj/machinery/atmospherics/components/unary/cryo_cell/Destroy() QDEL_NULL(radio) QDEL_NULL(beaker) diff --git a/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm b/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm index 27ee54815f..253dfcd728 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm @@ -66,10 +66,12 @@ God bless America. oil_use = initial(oil_use) - (oil_efficiency * 0.0095) fry_speed = oil_efficiency -/obj/machinery/deepfryer/examine() +/obj/machinery/deepfryer/examine(mob/user) . = ..() if(frying) . += "You can make out \a [frying] in the oil." + if(in_range(user, src) || isobserver(user)) + to_chat(user, "The status display reads: Frying at [fry_speed*100]% speed.
Using [oil_use*10] units of oil per second.") /obj/machinery/deepfryer/attackby(obj/item/I, mob/user) if(istype(I, /obj/item/reagent_containers/pill)) diff --git a/code/modules/food_and_drinks/kitchen_machinery/gibber.dm b/code/modules/food_and_drinks/kitchen_machinery/gibber.dm index e5c5a4f933..1369341d40 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/gibber.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/gibber.dm @@ -30,6 +30,14 @@ if(M.rating >= 2) ignore_clothing = TRUE +/obj/machinery/gibber/examine(mob/user) + ..() + if(in_range(user, src) || isobserver(user)) + to_chat(user, "The status display reads: Outputting [meat_produced] meat slab(s) after [gibtime*0.1] seconds of processing.") + for(var/obj/item/stock_parts/manipulator/M in component_parts) + if(M.rating >= 2) + to_chat(user, "Gibber has been upgraded to process inorganic materials.") + /obj/machinery/gibber/update_icon() cut_overlays() if (dirty) diff --git a/code/modules/food_and_drinks/kitchen_machinery/monkeyrecycler.dm b/code/modules/food_and_drinks/kitchen_machinery/monkeyrecycler.dm index c25cb2288f..27c0376f63 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/monkeyrecycler.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/monkeyrecycler.dm @@ -1,6 +1,6 @@ /obj/machinery/monkey_recycler name = "monkey recycler" - desc = "A machine used for recycling dead monkeys into monkey cubes. It currently produces 1 cube for every 5 monkeys inserted." // except it literally never does + desc = "A machine used for recycling dead monkeys into monkey cubes." // except it literally never does icon = 'icons/obj/kitchen.dmi' icon_state = "grinder" layer = BELOW_OBJ_LAYER @@ -22,7 +22,11 @@ cubes_made = M.rating cube_production = cubes_made required_grind = req_grind - src.desc = "A machine used for recycling dead monkeys into monkey cubes. It currently produces [cubes_made] cube(s) for every [required_grind] monkey(s) inserted." + +/obj/machinery/monkey_recycler/examine(mob/user) + ..() + if(in_range(user, src) || isobserver(user)) + to_chat(user, "The status display reads: Producing [cube_production] cube(s) for every [required_grind] monkey(s) inserted.") /obj/machinery/monkey_recycler/attackby(obj/item/O, mob/user, params) if(default_deconstruction_screwdriver(user, "grinder_open", "grinder", O)) diff --git a/code/modules/food_and_drinks/kitchen_machinery/processor.dm b/code/modules/food_and_drinks/kitchen_machinery/processor.dm index 35ce25bbaf..ae16b9cb66 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/processor.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/processor.dm @@ -21,6 +21,11 @@ for(var/obj/item/stock_parts/manipulator/M in component_parts) rating_speed = M.rating +/obj/machinery/processor/examine(mob/user) + ..() + if(in_range(user, src) || isobserver(user)) + to_chat(user, "The status display reads: Outputting [rating_amount] item(s) at [rating_speed*100]% speed.") + /obj/machinery/processor/proc/process_food(datum/food_processor_process/recipe, atom/movable/what) if (recipe.output && loc && !QDELETED(src)) for(var/i = 0, i < rating_amount, i++) diff --git a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm index 893a53ede7..d259b39b31 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm @@ -33,6 +33,11 @@ for(var/obj/item/stock_parts/matter_bin/B in component_parts) max_n_of_items = 1500 * B.rating +/obj/machinery/smartfridge/examine(mob/user) + ..() + if(in_range(user, src) || isobserver(user)) + to_chat(user, "The status display reads: This unit can hold a maximum of [max_n_of_items] items.") + /obj/machinery/smartfridge/power_change() ..() update_icon() diff --git a/code/modules/hydroponics/biogenerator.dm b/code/modules/hydroponics/biogenerator.dm index ac750a0492..0d19c4d6cc 100644 --- a/code/modules/hydroponics/biogenerator.dm +++ b/code/modules/hydroponics/biogenerator.dm @@ -52,6 +52,12 @@ productivity = P max_items = max_storage + +/obj/machinery/biogenerator/examine(mob/user) + ..() + if(in_range(user, src) || isobserver(user)) + to_chat(user, "The status display reads: Productivity at [productivity*100]%.
Matter consumption reduced by [(efficiency*25)-25]%.
Machine can hold up to [max_items] pieces of produce.") + /obj/machinery/biogenerator/on_reagent_change(changetype) //When the reagents change, change the icon as well. update_icon() diff --git a/code/modules/hydroponics/hydroponics.dm b/code/modules/hydroponics/hydroponics.dm index 0b6834c408..2bbb781a03 100644 --- a/code/modules/hydroponics/hydroponics.dm +++ b/code/modules/hydroponics/hydroponics.dm @@ -46,6 +46,11 @@ maxwater = tmp_capacity * 50 // Up to 300 maxnutri = tmp_capacity * 5 // Up to 30 +/obj/machinery/hydroponics/constructable/examine(mob/user) + ..() + if(in_range(user, src) || isobserver(user)) + to_chat(user, "The status display reads: Tray efficiency at [rating*100]%.") + /obj/machinery/hydroponics/Destroy() if(myseed) qdel(myseed) diff --git a/code/modules/hydroponics/seed_extractor.dm b/code/modules/hydroponics/seed_extractor.dm index d9bea64411..226b73c455 100644 --- a/code/modules/hydroponics/seed_extractor.dm +++ b/code/modules/hydroponics/seed_extractor.dm @@ -56,6 +56,11 @@ for(var/obj/item/stock_parts/manipulator/M in component_parts) seed_multiplier = M.rating +/obj/machinery/seed_extractor/examine(mob/user) + ..() + if(in_range(user, src) || isobserver(user)) + to_chat(user, "The status display reads: Extracting [seed_multiplier] seed(s) per piece of produce.
Machine can store up to [max_seeds]% seeds.") + /obj/machinery/seed_extractor/attackby(obj/item/O, mob/user, params) if(default_deconstruction_screwdriver(user, "sextractor_open", "sextractor", O)) diff --git a/code/modules/power/port_gen.dm b/code/modules/power/port_gen.dm index a9cd97c331..31a6caf077 100644 --- a/code/modules/power/port_gen.dm +++ b/code/modules/power/port_gen.dm @@ -103,6 +103,8 @@ . += "The generator has [sheets] units of [sheet_name] fuel left, producing [power_gen] per cycle." if(crit_fail) . += "The generator seems to have broken down." + if(in_range(user, src) || isobserver(user)) + to_chat(user, "The status display reads: Fuel efficiency increased by [(consumption*100)-100]%.") /obj/machinery/power/port_gen/pacman/HasFuel() if(sheets >= 1 / (time_per_sheet / power_output) - sheet_left) diff --git a/code/modules/power/rtg.dm b/code/modules/power/rtg.dm index 9dca8f3124..21095944dd 100644 --- a/code/modules/power/rtg.dm +++ b/code/modules/power/rtg.dm @@ -36,6 +36,11 @@ power_gen = initial(power_gen) * part_level +/obj/machinery/power/rtg/examine(mob/user) + ..() + if(in_range(user, src) || isobserver(user)) + to_chat(user, "The status display reads: Power generation now at [power_gen*0.001]kW.") + /obj/machinery/power/rtg/attackby(obj/item/I, mob/user, params) if(default_deconstruction_screwdriver(user, "[initial(icon_state)]-open", initial(icon_state), I)) return diff --git a/code/modules/power/singularity/emitter.dm b/code/modules/power/singularity/emitter.dm index 71a8565d26..7bd5fd0110 100644 --- a/code/modules/power/singularity/emitter.dm +++ b/code/modules/power/singularity/emitter.dm @@ -68,6 +68,11 @@ sparks.attach(src) sparks.set_up(1, TRUE, src) +/obj/machinery/power/emitter/examine(mob/user) + ..() + if(in_range(user, src) || isobserver(user)) + to_chat(user, "The status display reads: Emitting one beam each [fire_delay*0.1] seconds.
Power consumption at [active_power_usage]W.") + /obj/machinery/power/emitter/ComponentInitialize() . = ..() AddComponent(/datum/component/empprotection, EMP_PROTECT_SELF | EMP_PROTECT_WIRES) diff --git a/code/modules/power/tesla/coil.dm b/code/modules/power/tesla/coil.dm index 2265f806a5..8d2b81e48a 100644 --- a/code/modules/power/tesla/coil.dm +++ b/code/modules/power/tesla/coil.dm @@ -36,6 +36,11 @@ zap_cooldown -= (C.rating * 20) input_power_multiplier = power_multiplier +/obj/machinery/power/tesla_coil/examine(mob/user) + ..() + if(in_range(user, src) || isobserver(user)) + to_chat(user, "The status display reads: Power generation at [input_power_multiplier*100]%.
Shock interval at [zap_cooldown*0.1] seconds.") + /obj/machinery/power/tesla_coil/on_construction() if(anchored) connect_to_network() diff --git a/code/modules/power/turbine.dm b/code/modules/power/turbine.dm index 85ee7589b9..8487d72afb 100644 --- a/code/modules/power/turbine.dm +++ b/code/modules/power/turbine.dm @@ -94,6 +94,11 @@ E += M.rating efficiency = E / 6 +/obj/machinery/power/compressor/examine(mob/user) + ..() + if(in_range(user, src) || isobserver(user)) + to_chat(user, "The status display reads: Efficiency at [efficiency*100]%.") + /obj/machinery/power/compressor/attackby(obj/item/I, mob/user, params) if(default_deconstruction_screwdriver(user, initial(icon_state), initial(icon_state), I)) return @@ -176,6 +181,11 @@ P += C.rating productivity = P / 6 +/obj/machinery/power/turbine/examine(mob/user) + ..() + if(in_range(user, src) || isobserver(user)) + to_chat(user, "The status display reads: Productivity at [productivity*100]%.") + /obj/machinery/power/turbine/locate_machinery() if(compressor) return diff --git a/code/modules/reagents/chemistry/machinery/chem_heater.dm b/code/modules/reagents/chemistry/machinery/chem_heater.dm index b4f14c69a7..6d6b21bf74 100644 --- a/code/modules/reagents/chemistry/machinery/chem_heater.dm +++ b/code/modules/reagents/chemistry/machinery/chem_heater.dm @@ -52,6 +52,11 @@ for(var/obj/item/stock_parts/micro_laser/M in component_parts) heater_coefficient *= M.rating +/obj/machinery/chem_heater/examine(mob/user) + ..() + if(in_range(user, src) || isobserver(user)) + to_chat(user, "The status display reads: Heating reagents at [heater_coefficient*1000]% speed.") + /obj/machinery/chem_heater/process() ..() if(stat & NOPOWER) diff --git a/code/modules/research/experimentor.dm b/code/modules/research/experimentor.dm index b25ee9bb2d..152f292564 100644 --- a/code/modules/research/experimentor.dm +++ b/code/modules/research/experimentor.dm @@ -82,6 +82,11 @@ for(var/obj/item/stock_parts/micro_laser/M in component_parts) badThingCoeff += M.rating +/obj/machinery/reagentgrinder/examine(mob/user) + ..() + if(in_range(user, src) || isobserver(user)) + to_chat(user, "The status display reads: Grinding reagents at [speed*100]%.") + /obj/machinery/rnd/experimentor/proc/checkCircumstances(obj/item/O) //snowflake check to only take "made" bombs if(istype(O, /obj/item/transfer_valve)) diff --git a/code/modules/research/machinery/_production.dm b/code/modules/research/machinery/_production.dm index 9ba45fb1a3..44c56835fa 100644 --- a/code/modules/research/machinery/_production.dm +++ b/code/modules/research/machinery/_production.dm @@ -73,6 +73,12 @@ total_rating = max(1, total_rating) efficiency_coeff = total_rating +/obj/machinery/rnd/production/examine(mob/user) + . = ..() + var/datum/component/remote_materials/materials = GetComponent(/datum/component/remote_materials) + if(in_range(user, src) || isobserver(user)) + . += "The status display reads: Storing up to [materials.local_size] material units locally.
Material usage efficiency at [efficiency_coeff*50]%.
" + //we eject the materials upon deconstruction. /obj/machinery/rnd/production/on_deconstruction() for(var/obj/item/reagent_containers/glass/G in component_parts) diff --git a/code/modules/research/nanites/nanite_chamber.dm b/code/modules/research/nanites/nanite_chamber.dm index 1fc2633989..90ee9ddf9f 100644 --- a/code/modules/research/nanites/nanite_chamber.dm +++ b/code/modules/research/nanites/nanite_chamber.dm @@ -29,6 +29,11 @@ for(var/obj/item/stock_parts/scanning_module/P in component_parts) scan_level += P.rating +/obj/machinery/nanite_chamber/examine(mob/user) + ..() + if(in_range(user, src) || isobserver(user)) + to_chat(user, "The status display reads: Scanning module has been upgraded to level [scan_level].") + /obj/machinery/nanite_chamber/proc/set_busy(status, message, working_icon) busy = status busy_message = message From bb0d012d7a0ff970c60868c0bbb70c012847812d Mon Sep 17 00:00:00 2001 From: Putnam Date: Sun, 12 Jan 2020 16:08:49 -0800 Subject: [PATCH 025/123] well that works --- code/datums/elements/dusts_on_catatonia.dm | 25 +++++++++++++++++++ .../objects/structures/ghost_role_spawners.dm | 1 + tgstation.dme | 1 + 3 files changed, 27 insertions(+) create mode 100644 code/datums/elements/dusts_on_catatonia.dm diff --git a/code/datums/elements/dusts_on_catatonia.dm b/code/datums/elements/dusts_on_catatonia.dm new file mode 100644 index 0000000000..2922bdf80b --- /dev/null +++ b/code/datums/elements/dusts_on_catatonia.dm @@ -0,0 +1,25 @@ +/datum/element/dusts_on_catatonia + element_flags = ELEMENT_DETACH + var/list/mob/attached_mobs = list() + +/datum/element/dusts_on_catatonia/Attach(datum/target,penalize = FALSE) + . = ..() + if(!ismob(target)) + return ELEMENT_INCOMPATIBLE + var/mob/M = target + if(!(M in attached_mobs)) + attached_mobs += M + START_PROCESSING(SSprocessing,src) + +/datum/element/dusts_on_catatonia/Detach(mob/M) + . = ..() + if(M in attached_mobs) + attached_mobs -= M + if(!attached_mobs.len) + STOP_PROCESSING(SSprocessing,src) + +/datum/element/dusts_on_catatonia/process() + for(var/mob/M in attached_mobs) + if(!M.key && !M.get_ghost()) + M.dust(force = TRUE) + Detach(M) diff --git a/code/game/objects/structures/ghost_role_spawners.dm b/code/game/objects/structures/ghost_role_spawners.dm index 705ca9a884..9c0cc844f9 100644 --- a/code/game/objects/structures/ghost_role_spawners.dm +++ b/code/game/objects/structures/ghost_role_spawners.dm @@ -627,6 +627,7 @@ SSjob.equip_loadout(null, new_spawn, FALSE) SSquirks.AssignQuirks(new_spawn, new_spawn.client, TRUE, TRUE, null, FALSE, new_spawn) new_spawn.AddElement(/datum/element/ghost_role_eligibility) + new_spawn.AddElement(/datum/element/dusts_on_catatonia) ADD_TRAIT(new_spawn, TRAIT_SIXTHSENSE, GHOSTROLE_TRAIT) ADD_TRAIT(new_spawn,TRAIT_EXEMPT_HEALTH_EVENTS,GHOSTROLE_TRAIT) to_chat(new_spawn,"You maybe sharing your cafe with some ninja-captured individuals, so make sure to only interact with the ghosts you hear as a ghost!") diff --git a/tgstation.dme b/tgstation.dme index 33a4251dd7..79bc3b58a1 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -469,6 +469,7 @@ #include "code\datums\diseases\advance\symptoms\youth.dm" #include "code\datums\elements\_element.dm" #include "code\datums\elements\cleaning.dm" +#include "code\datums\elements\dusts_on_catatonia.dm" #include "code\datums\elements\earhealing.dm" #include "code\datums\elements\ghost_role_eligibility.dm" #include "code\datums\helper_datums\events.dm" From 6197920101aad834a80619245d000cc71acfb721 Mon Sep 17 00:00:00 2001 From: Putnam Date: Sun, 12 Jan 2020 23:40:28 -0800 Subject: [PATCH 026/123] fixed unnecessary typecheck --- code/datums/elements/dusts_on_catatonia.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/datums/elements/dusts_on_catatonia.dm b/code/datums/elements/dusts_on_catatonia.dm index 2922bdf80b..f5ca5722c4 100644 --- a/code/datums/elements/dusts_on_catatonia.dm +++ b/code/datums/elements/dusts_on_catatonia.dm @@ -19,7 +19,8 @@ STOP_PROCESSING(SSprocessing,src) /datum/element/dusts_on_catatonia/process() - for(var/mob/M in attached_mobs) + for(var/m in attached_mobs) + var/mob/M = m if(!M.key && !M.get_ghost()) M.dust(force = TRUE) Detach(M) From 4d4f3b32b30d542c9f8a0823bead51623163db9d Mon Sep 17 00:00:00 2001 From: Persi Date: Thu, 16 Jan 2020 22:59:19 -0500 Subject: [PATCH 027/123] Making forcefield projectors less stupid --- code/game/objects/items/devices/forcefieldprojector.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/objects/items/devices/forcefieldprojector.dm b/code/game/objects/items/devices/forcefieldprojector.dm index df17a51c1b..905428ae1f 100644 --- a/code/game/objects/items/devices/forcefieldprojector.dm +++ b/code/game/objects/items/devices/forcefieldprojector.dm @@ -1,6 +1,6 @@ /obj/item/forcefield_projector name = "forcefield projector" - desc = "An experimental device that can create several forcefields at a distance." + desc = "An experimental device that can create several forcefields at a short distance." icon = 'icons/obj/device.dmi' icon_state = "signmaker_forcefield" slot_flags = ITEM_SLOT_BELT @@ -14,7 +14,7 @@ var/shield_integrity = 250 var/max_fields = 3 var/list/current_fields - var/field_distance_limit = 7 + var/field_distance_limit = 2 /obj/item/forcefield_projector/afterattack(atom/target, mob/user, proximity_flag) . = ..() From 300fdb431c9840006796bfc2cf2f337912dce3bd Mon Sep 17 00:00:00 2001 From: Artur Date: Fri, 17 Jan 2020 19:46:27 +0100 Subject: [PATCH 028/123] 0 clue if itll even work. Cowabunga it is. --- code/modules/admin/topic.dm | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 88d4105124..a15ae74218 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -907,12 +907,16 @@ dat += "Alien" else dat += "Alien" - //Gang if(jobban_isbanned(M, ROLE_GANG) || isbanned_dept) dat += "Gang" else dat += "Gang" + //Bloodsucker + if(jobban_isbanned(M, ROLE_BLOODSUCKER) || isbanned_dept) + dat += "Bloodsucker" + else + dat += "Bloodsucker" //Other Roles (black) From 2fe23b67dbdd2d4e95ace083605dbaf7a59f318f Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Sat, 18 Jan 2020 03:37:30 +0100 Subject: [PATCH 029/123] fug --- code/modules/uplink/uplink_items/uplink_clothing.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/uplink/uplink_items/uplink_clothing.dm b/code/modules/uplink/uplink_items/uplink_clothing.dm index 2f8391c637..3a3c53288a 100644 --- a/code/modules/uplink/uplink_items/uplink_clothing.dm +++ b/code/modules/uplink/uplink_items/uplink_clothing.dm @@ -29,14 +29,14 @@ exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) /datum/uplink_item/suits/kevlar - name = "Kevlar sheets" + name = "Kevlar Padding" desc = "An inconspicious kevlar padding meant to be worn underneath jumpsuits, will cushion the wearer from ballistic harm." item = /obj/item/clothing/accessory/kevlar cost = 2 exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) /datum/uplink_item/suits/plastic - name = "Plastic sheet" + name = "Ablative Padding" desc = "An inconspicious ablative padding meant to be worn underneath jumpsuits, will cushion the wearer from energy lasers harm." item = /obj/item/clothing/accessory/plastics cost = 2 From 54a2b32f4241d40fd1989fa1db1c0f895322bbaa Mon Sep 17 00:00:00 2001 From: chefferz Date: Fri, 17 Jan 2020 23:55:44 -0500 Subject: [PATCH 030/123] Update console.dm --- code/modules/antagonists/abductor/machinery/console.dm | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/code/modules/antagonists/abductor/machinery/console.dm b/code/modules/antagonists/abductor/machinery/console.dm index 47294bc766..b8d5b1bf6d 100644 --- a/code/modules/antagonists/abductor/machinery/console.dm +++ b/code/modules/antagonists/abductor/machinery/console.dm @@ -46,7 +46,6 @@ dat += "Advanced Baton (2 Credits)
" dat += "Mental Interface Device (2 Credits)
" dat += "Reagent Synthesizer (2 Credits)
" - dat += "Shrink Ray Blaster (2 Credits)
" dat += "Agent Helmet (1 Credit)
" dat += "Agent Vest (1 Credit)
" dat += "Radio Silencer (1 Credit)
" @@ -119,8 +118,6 @@ Dispense(/obj/item/abductor_machine_beacon/chem_dispenser,cost=2) if("tongue") Dispense(/obj/item/organ/tongue/abductor) - if("shrink_ray") - Dispense(/obj/item/gun/energy/shrink_ray,cost=2) updateUsrDialog() /obj/machinery/abductor/console/proc/TeleporterRetrieve() @@ -245,4 +242,4 @@ new item(drop_location) else - say("Insufficent data!") \ No newline at end of file + say("Insufficent data!") From c612462b8c8ff179e5d5fa1ff006fac709facc39 Mon Sep 17 00:00:00 2001 From: Putnam Date: Sat, 18 Jan 2020 03:39:27 -0800 Subject: [PATCH 031/123] some demodularization + new eligibility stuff --- .../datums/elements/ghost_role_eligibility.dm | 2 + code/modules/admin/admin.dm | 40 +++++++++-- code/modules/admin/topic.dm | 69 ++++++++++++++++++- modular_citadel/code/modules/admin/admin.dm | 39 ----------- modular_citadel/code/modules/admin/topic.dm | 59 ---------------- tgstation.dme | 2 - 6 files changed, 106 insertions(+), 105 deletions(-) delete mode 100644 modular_citadel/code/modules/admin/admin.dm delete mode 100644 modular_citadel/code/modules/admin/topic.dm diff --git a/code/datums/elements/ghost_role_eligibility.dm b/code/datums/elements/ghost_role_eligibility.dm index 8ecb579bc8..e57aaddd5a 100644 --- a/code/datums/elements/ghost_role_eligibility.dm +++ b/code/datums/elements/ghost_role_eligibility.dm @@ -22,6 +22,8 @@ if(!(M.ckey in timeouts)) timeouts += M.ckey timeouts[M.ckey] = 0 + else if(timeouts[M.ckey] == CANT_REENTER_ROUND) + return timeouts[M.ckey] = max(timeouts[M.ckey],penalty) /datum/element/ghost_role_eligibility/Detach(mob/M) diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index 88e68158ed..372902e8d6 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -185,7 +185,6 @@ body += "Shade" body += "
" - if (M.client) body += "

" body += "Other actions:" body += "
" @@ -194,9 +193,9 @@ body += "Thunderdome 2 | " body += "Thunderdome Admin | " body += "Thunderdome Observer | " - - body += usr.client.citaPPoptions(M) // CITADEL - + body += "Make mentor | " + body += "Remove mentor" + body += "Allow reentering round" body += "
" body += "" @@ -1009,3 +1008,36 @@ "Admin login: [key_name(src)]") if(string) message_admins("[string]") + +/client/proc/cmd_admin_man_up(mob/M in GLOB.mob_list) + set category = "Special Verbs" + set name = "Man Up" + + if(!M) + return + if(!check_rights(R_ADMIN)) + return + + to_chat(M, "Man up, and deal with it.
Move on.") + M.playsound_local(M, 'sound/voice/manup.ogg', 50, FALSE, pressure_affected = FALSE) + + log_admin("Man up: [key_name(usr)] told [key_name(M)] to man up") + var/message = "[key_name_admin(usr)] told [key_name_admin(M)] to man up." + message_admins(message) + admin_ticket_log(M, message) + SSblackbox.record_feedback("tally", "admin_verb", 1, "Man Up") + +/client/proc/cmd_admin_man_up_global() + set category = "Special Verbs" + set name = "Man Up Global" + + if(!check_rights(R_ADMIN)) + return + + to_chat(world, "Man up, and deal with it.
Move on.") + for(var/mob/M in GLOB.player_list) + M.playsound_local(M, 'sound/voice/manup.ogg', 50, FALSE, pressure_affected = FALSE) + + log_admin("Man up global: [key_name(usr)] told everybody to man up") + message_admins("[key_name_admin(usr)] told everybody to man up.") + SSblackbox.record_feedback("tally", "admin_verb", 1, "Man Up Global") diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 88d4105124..119c214d6b 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -22,7 +22,10 @@ if(!CheckAdminHref(href, href_list)) return - citaTopic(href, href_list) //CITADEL EDIT, MENTORS + if(href_list["makementor"]) + makeMentor(href_list["makementor"]) + else if(href_list["removementor"]) + removeMentor(href_list["removementor"]) if(href_list["ahelp"]) if(!check_rights(R_ADMIN, TRUE)) @@ -1715,6 +1718,16 @@ log_admin("[key_name(usr)] forced [key_name(M)] to say: [speech]") message_admins("[key_name_admin(usr)] forced [key_name_admin(M)] to say: [speech]") + else if(href_list["makeeligible"]) + if(!check_rights(R_ADMIN)) + return + var/mob/M = locate(href_list["eligible"]) + if(!ismob(M)) + to_chat(usr, "this can only be used on instances of type /mob.") + var/datum/element/ghost_role_eligibility/eli = SSdcs.GetElement(/datum/element/ghost_role_eligibility) + if(M.ckey in eli.timeouts) + eli.timeouts -= M.ckey + else if(href_list["sendtoprison"]) if(!check_rights(R_ADMIN)) return @@ -2846,3 +2859,57 @@ dat += {"Random (default)
"} dat += {"Now: [GLOB.secret_force_mode]"} usr << browse(dat, "window=f_secret") + +/datum/admins/proc/makeMentor(ckey) + if(!usr.client) + return + if (!check_rights(0)) + return + if(!ckey) + return + var/client/C = GLOB.directory[ckey] + if(C) + if(check_rights_for(C, R_ADMIN,0)) + to_chat(usr, "The client chosen is an admin! Cannot mentorize.") + return + if(SSdbcore.Connect()) + var/datum/DBQuery/query_get_mentor = SSdbcore.NewQuery("SELECT id FROM [format_table_name("mentor")] WHERE ckey = '[ckey]'") + if(query_get_mentor.NextRow()) + to_chat(usr, "[ckey] is already a mentor.") + return + var/datum/DBQuery/query_add_mentor = SSdbcore.NewQuery("INSERT INTO `[format_table_name("mentor")]` (`id`, `ckey`) VALUES (null, '[ckey]')") + if(!query_add_mentor.warn_execute()) + return + var/datum/DBQuery/query_add_admin_log = SSdbcore.NewQuery("INSERT INTO `[format_table_name("admin_log")]` (`id` ,`datetime` ,`adminckey` ,`adminip` ,`log` ) VALUES (NULL , NOW( ) , '[usr.ckey]', '[usr.client.address]', 'Added new mentor [ckey]');") + if(!query_add_admin_log.warn_execute()) + return + else + to_chat(usr, "Failed to establish database connection. The changes will last only for the current round.") + new /datum/mentors(ckey) + to_chat(usr, "New mentor added.") + +/datum/admins/proc/removeMentor(ckey) + if(!usr.client) + return + if (!check_rights(0)) + return + if(!ckey) + return + var/client/C = GLOB.directory[ckey] + if(C) + if(check_rights_for(C, R_ADMIN,0)) + to_chat(usr, "The client chosen is an admin, not a mentor! Cannot de-mentorize.") + return + C.remove_mentor_verbs() + C.mentor_datum = null + GLOB.mentors -= C + if(SSdbcore.Connect()) + var/datum/DBQuery/query_remove_mentor = SSdbcore.NewQuery("DELETE FROM [format_table_name("mentor")] WHERE ckey = '[ckey]'") + if(!query_remove_mentor.warn_execute()) + return + var/datum/DBQuery/query_add_admin_log = SSdbcore.NewQuery("INSERT INTO `[format_table_name("admin_log")]` (`id` ,`datetime` ,`adminckey` ,`adminip` ,`log` ) VALUES (NULL , NOW( ) , '[usr.ckey]', '[usr.client.address]', 'Removed mentor [ckey]');") + if(!query_add_admin_log.warn_execute()) + return + else + to_chat(usr, "Failed to establish database connection. The changes will last only for the current round.") + to_chat(usr, "Mentor removed.") diff --git a/modular_citadel/code/modules/admin/admin.dm b/modular_citadel/code/modules/admin/admin.dm deleted file mode 100644 index 529d0c79ec..0000000000 --- a/modular_citadel/code/modules/admin/admin.dm +++ /dev/null @@ -1,39 +0,0 @@ -/client/proc/citaPPoptions(mob/M) // why is this client and not /datum/admins? noone knows, in PP src == client, instead of holder. wtf. - var/body = "
" - if(M.client) - body += "Make mentor | " - body += "Remove mentor" - return body - -/client/proc/cmd_admin_man_up(mob/M in GLOB.mob_list) - set category = "Special Verbs" - set name = "Man Up" - - if(!M) - return - if(!check_rights(R_ADMIN)) - return - - to_chat(M, "Man up, and deal with it.
Move on.") - M.playsound_local(M, 'sound/voice/manup.ogg', 50, FALSE, pressure_affected = FALSE) - - log_admin("Man up: [key_name(usr)] told [key_name(M)] to man up") - var/message = "[key_name_admin(usr)] told [key_name_admin(M)] to man up." - message_admins(message) - admin_ticket_log(M, message) - SSblackbox.record_feedback("tally", "admin_verb", 1, "Man Up") - -/client/proc/cmd_admin_man_up_global() - set category = "Special Verbs" - set name = "Man Up Global" - - if(!check_rights(R_ADMIN)) - return - - to_chat(world, "Man up, and deal with it.
Move on.") - for(var/mob/M in GLOB.player_list) - M.playsound_local(M, 'sound/voice/manup.ogg', 50, FALSE, pressure_affected = FALSE) - - log_admin("Man up global: [key_name(usr)] told everybody to man up") - message_admins("[key_name_admin(usr)] told everybody to man up.") - SSblackbox.record_feedback("tally", "admin_verb", 1, "Man Up Global") diff --git a/modular_citadel/code/modules/admin/topic.dm b/modular_citadel/code/modules/admin/topic.dm deleted file mode 100644 index 26bc902bef..0000000000 --- a/modular_citadel/code/modules/admin/topic.dm +++ /dev/null @@ -1,59 +0,0 @@ -/datum/admins/proc/citaTopic(href, href_list) - if(href_list["makementor"]) - makeMentor(href_list["makementor"]) - else if(href_list["removementor"]) - removeMentor(href_list["removementor"]) - -/datum/admins/proc/makeMentor(ckey) - if(!usr.client) - return - if (!check_rights(0)) - return - if(!ckey) - return - var/client/C = GLOB.directory[ckey] - if(C) - if(check_rights_for(C, R_ADMIN,0)) - to_chat(usr, "The client chosen is an admin! Cannot mentorize.") - return - if(SSdbcore.Connect()) - var/datum/DBQuery/query_get_mentor = SSdbcore.NewQuery("SELECT id FROM [format_table_name("mentor")] WHERE ckey = '[ckey]'") - if(query_get_mentor.NextRow()) - to_chat(usr, "[ckey] is already a mentor.") - return - var/datum/DBQuery/query_add_mentor = SSdbcore.NewQuery("INSERT INTO `[format_table_name("mentor")]` (`id`, `ckey`) VALUES (null, '[ckey]')") - if(!query_add_mentor.warn_execute()) - return - var/datum/DBQuery/query_add_admin_log = SSdbcore.NewQuery("INSERT INTO `[format_table_name("admin_log")]` (`id` ,`datetime` ,`adminckey` ,`adminip` ,`log` ) VALUES (NULL , NOW( ) , '[usr.ckey]', '[usr.client.address]', 'Added new mentor [ckey]');") - if(!query_add_admin_log.warn_execute()) - return - else - to_chat(usr, "Failed to establish database connection. The changes will last only for the current round.") - new /datum/mentors(ckey) - to_chat(usr, "New mentor added.") - -/datum/admins/proc/removeMentor(ckey) - if(!usr.client) - return - if (!check_rights(0)) - return - if(!ckey) - return - var/client/C = GLOB.directory[ckey] - if(C) - if(check_rights_for(C, R_ADMIN,0)) - to_chat(usr, "The client chosen is an admin, not a mentor! Cannot de-mentorize.") - return - C.remove_mentor_verbs() - C.mentor_datum = null - GLOB.mentors -= C - if(SSdbcore.Connect()) - var/datum/DBQuery/query_remove_mentor = SSdbcore.NewQuery("DELETE FROM [format_table_name("mentor")] WHERE ckey = '[ckey]'") - if(!query_remove_mentor.warn_execute()) - return - var/datum/DBQuery/query_add_admin_log = SSdbcore.NewQuery("INSERT INTO `[format_table_name("admin_log")]` (`id` ,`datetime` ,`adminckey` ,`adminip` ,`log` ) VALUES (NULL , NOW( ) , '[usr.ckey]', '[usr.client.address]', 'Removed mentor [ckey]');") - if(!query_add_admin_log.warn_execute()) - return - else - to_chat(usr, "Failed to establish database connection. The changes will last only for the current round.") - to_chat(usr, "Mentor removed.") \ No newline at end of file diff --git a/tgstation.dme b/tgstation.dme index 1893edc33d..f90156d466 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -3091,11 +3091,9 @@ #include "modular_citadel\code\game\machinery\wishgranter.dm" #include "modular_citadel\code\game\objects\cit_screenshake.dm" #include "modular_citadel\code\game\objects\effects\temporary_visuals\souldeath.dm" -#include "modular_citadel\code\modules\admin\admin.dm" #include "modular_citadel\code\modules\admin\chat_commands.dm" #include "modular_citadel\code\modules\admin\holder2.dm" #include "modular_citadel\code\modules\admin\secrets.dm" -#include "modular_citadel\code\modules\admin\topic.dm" #include "modular_citadel\code\modules\arousal\arousal.dm" #include "modular_citadel\code\modules\arousal\genitals.dm" #include "modular_citadel\code\modules\arousal\genitals_sprite_accessories.dm" From 81cd277db2b75b0123aec0caf229459947dc783e Mon Sep 17 00:00:00 2001 From: Putnam Date: Sat, 18 Jan 2020 03:47:40 -0800 Subject: [PATCH 032/123] Made metabolic synthesis stop if not fed --- code/modules/research/nanites/nanite_programs/utility.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/research/nanites/nanite_programs/utility.dm b/code/modules/research/nanites/nanite_programs/utility.dm index 3db482d989..3a7778cdf1 100644 --- a/code/modules/research/nanites/nanite_programs/utility.dm +++ b/code/modules/research/nanites/nanite_programs/utility.dm @@ -206,7 +206,7 @@ if(!iscarbon(host_mob)) return FALSE var/mob/living/carbon/C = host_mob - if(C.nutrition <= NUTRITION_LEVEL_STARVING) + if(C.nutrition <= NUTRITION_LEVEL_FED) return FALSE return ..() From 82b65f13f4a51f7ca222ee12845de6a2173f6fc7 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Sat, 18 Jan 2020 18:23:54 +0100 Subject: [PATCH 033/123] RPD anti-ventcrawler escapist sanity check. --- code/game/objects/items/RPD.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/game/objects/items/RPD.dm b/code/game/objects/items/RPD.dm index 141f7e510a..45f3275d6a 100644 --- a/code/game/objects/items/RPD.dm +++ b/code/game/objects/items/RPD.dm @@ -326,7 +326,8 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list( playsound(get_turf(src), 'sound/effects/pop.ogg', 50, 0) /obj/item/pipe_dispenser/pre_attack(atom/A, mob/user) - if(!user.IsAdvancedToolUser() || istype(A, /turf/open/space/transit)) + var/turf/T = get_turf(A) + if(!user.IsAdvancedToolUser() || !A || istype(T, /turf/open/space/transit) || isindestructiblewall(T)) return ..() //So that changing the menu settings doesn't affect the pipes already being built. From 47b031dad262ce9d95fc58f5d2f304ed1fe37225 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Sat, 18 Jan 2020 18:40:13 +0100 Subject: [PATCH 034/123] Update. --- code/game/objects/items/RPD.dm | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/code/game/objects/items/RPD.dm b/code/game/objects/items/RPD.dm index 45f3275d6a..f2413d1680 100644 --- a/code/game/objects/items/RPD.dm +++ b/code/game/objects/items/RPD.dm @@ -327,7 +327,7 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list( /obj/item/pipe_dispenser/pre_attack(atom/A, mob/user) var/turf/T = get_turf(A) - if(!user.IsAdvancedToolUser() || !A || istype(T, /turf/open/space/transit) || isindestructiblewall(T)) + if(!user.IsAdvancedToolUser() || !T || istype(T, /turf/open/space/transit) || isindestructiblewall(T)) return ..() //So that changing the menu settings doesn't affect the pipes already being built. @@ -374,12 +374,16 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list( if(ATMOS_CATEGORY) //Making pipes if(!can_make_pipe) return ..() + A = T + if(is_type_in_typecache(recipe, ventcrawl_machinery) && isclosedturf(A)) //wall escapism sanity check. + to_chat(user, "[src]'s error light flickers; there's something in the way!") + return playsound(get_turf(src), 'sound/machines/click.ogg', 50, 1) if (recipe.type == /datum/pipe_info/meter) to_chat(user, "You start building a meter...") if(do_after(user, atmos_build_speed, target = A)) activate() - var/obj/item/pipe_meter/PM = new /obj/item/pipe_meter(get_turf(A)) + var/obj/item/pipe_meter/PM = new /obj/item/pipe_meter(A) PM.setAttachLayer(piping_layer) if(mode&WRENCH_MODE) PM.wrench_act(user, src) @@ -389,7 +393,7 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list( activate() var/obj/machinery/atmospherics/path = queued_p_type var/pipe_item_type = initial(path.construction_type) || /obj/item/pipe - var/obj/item/pipe/P = new pipe_item_type(get_turf(A), queued_p_type, queued_p_dir) + var/obj/item/pipe/P = new pipe_item_type(A, queued_p_type, queued_p_dir) if(queued_p_flipped && istype(P, /obj/item/pipe/trinary/flippable)) var/obj/item/pipe/trinary/flippable/F = P @@ -406,7 +410,7 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list( if(DISPOSALS_CATEGORY) //Making disposals pipes if(!can_make_pipe) return ..() - A = get_turf(A) + A = T if(isclosedturf(A)) to_chat(user, "[src]'s error light flickers; there's something in the way!") return @@ -431,7 +435,7 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list( if(TRANSIT_CATEGORY) //Making transit tubes if(!can_make_pipe) return ..() - A = get_turf(A) + A = T if(isclosedturf(A)) to_chat(user, "[src]'s error light flickers; there's something in the way!") return From a2e1c8ecf1bc80c256ce00bd8685a30115ce7ca0 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Sat, 18 Jan 2020 18:45:20 +0100 Subject: [PATCH 035/123] GLOB. --- code/game/objects/items/RPD.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/RPD.dm b/code/game/objects/items/RPD.dm index f2413d1680..839cd99b12 100644 --- a/code/game/objects/items/RPD.dm +++ b/code/game/objects/items/RPD.dm @@ -375,7 +375,7 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list( if(!can_make_pipe) return ..() A = T - if(is_type_in_typecache(recipe, ventcrawl_machinery) && isclosedturf(A)) //wall escapism sanity check. + if(is_type_in_typecache(recipe, GLOB.ventcrawl_machinery) && isclosedturf(A)) //wall escapism sanity check. to_chat(user, "[src]'s error light flickers; there's something in the way!") return playsound(get_turf(src), 'sound/machines/click.ogg', 50, 1) From ca7bdf5f8864aaa3efb540a5c3fa74040ab55e69 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Sat, 18 Jan 2020 22:06:14 +0100 Subject: [PATCH 036/123] clockwork cuirass now compatible with snakes. The original author is very lazy. --- .../clockcult/clock_items/clockwork_armor.dm | 1 + icons/mob/taur_naga.dmi | Bin 115705 -> 118192 bytes 2 files changed, 1 insertion(+) diff --git a/code/modules/antagonists/clockcult/clock_items/clockwork_armor.dm b/code/modules/antagonists/clockcult/clock_items/clockwork_armor.dm index e01156ba44..5bc04173b9 100644 --- a/code/modules/antagonists/clockcult/clock_items/clockwork_armor.dm +++ b/code/modules/antagonists/clockcult/clock_items/clockwork_armor.dm @@ -70,6 +70,7 @@ resistance_flags = FIRE_PROOF | ACID_PROOF armor = list("melee" = 60, "bullet" = 70, "laser" = -25, "energy" = 0, "bomb" = 60, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100) allowed = list(/obj/item/clockwork, /obj/item/clothing/glasses/wraith_spectacles, /obj/item/clothing/glasses/judicial_visor, /obj/item/mmi/posibrain/soul_vessel, /obj/item/reagent_containers/food/drinks/bottle/holyoil) + mutantrace_variation = STYLE_DIGITIGRADE|STYLE_SNEK_TAURIC /obj/item/clothing/suit/armor/clockwork/Initialize() . = ..() diff --git a/icons/mob/taur_naga.dmi b/icons/mob/taur_naga.dmi index 7214ec7073125527fc731005aa8a1e4c567ef4d6..479fa5c83ac52ce41d53c6a42768477d2455588e 100644 GIT binary patch delta 19412 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 delta 16905 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 From 072eca6ec018d08347d2a5dd917f7f46bcda80a6 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Sat, 18 Jan 2020 23:01:00 +0100 Subject: [PATCH 037/123] fixes and more PRs --- code/__DEFINES/traits.dm | 2 ++ code/datums/helper_datums/teleport.dm | 2 +- code/modules/mob/living/silicon/ai/ai.dm | 11 +++++++---- .../simple_animal/hostile/megafauna/megafauna.dm | 1 + 4 files changed, 11 insertions(+), 5 deletions(-) diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index e48eea451d..033636017d 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -173,6 +173,7 @@ #define TRAIT_AUTO_CATCH_ITEM "auto_catch_item" #define TRAIT_CLOWN_MENTALITY "clown_mentality" // The future is now, clownman. #define TRAIT_FREESPRINT "free_sprinting" +#define TRAIT_NO_TELEPORT "no-teleport" //you just can't #define TRAIT_NO_ALCOHOL "alcohol_intolerance" // common trait sources @@ -234,4 +235,5 @@ #define NUKEOP_ANTAGONIST "nukeop-antagonist" #define MADE_UNCLONEABLE "made-uncloneable" #define NUKEOP_TRAIT "nuke-op" +#define MEGAFAUNA_TRAIT "megafauna" #define DEATHSQUAD_TRAIT "deathsquad" diff --git a/code/datums/helper_datums/teleport.dm b/code/datums/helper_datums/teleport.dm index 1c2ce851fe..6b0981665d 100644 --- a/code/datums/helper_datums/teleport.dm +++ b/code/datums/helper_datums/teleport.dm @@ -66,7 +66,7 @@ var/area/A = get_area(curturf) var/area/B = get_area(destturf) - if(!forced && (A.noteleport || B.noteleport)) + if(!forced && (HAS_TRAIT(teleatom, TRAIT_NO_TELEPORT) || A.noteleport || B.noteleport)) return FALSE if(SEND_SIGNAL(destturf, COMSIG_ATOM_INTERCEPT_TELEPORT, channel, curturf, destturf)) diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index 54548962eb..33cbdb7cc9 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -16,7 +16,7 @@ name = "AI" icon = 'icons/mob/ai.dmi' icon_state = "ai" - move_resist = MOVE_FORCE_VERY_STRONG + move_resist = MOVE_FORCE_OVERPOWERING density = TRUE canmove = FALSE status_flags = CANSTUN|CANPUSH @@ -101,6 +101,7 @@ new/obj/structure/AIcore/deactivated(loc) //New empty terminal. return INITIALIZE_HINT_QDEL //Delete AI. + ADD_TRAIT(src, TRAIT_NO_TELEPORT, src) if(L && istype(L, /datum/ai_laws)) laws = L laws.associate(src) @@ -312,11 +313,13 @@ if(incapacitated()) return var/is_anchored = FALSE - if(move_resist == MOVE_FORCE_VERY_STRONG) - move_resist = MOVE_FORCE_VERY_STRONG + if(move_resist == MOVE_FORCE_OVERPOWERING) + move_resist = MOVE_FORCE_NORMAL else is_anchored = TRUE - move_resist = MOVE_FORCE_NORMAL + move_resist = MOVE_FORCE_OVERPOWERING + REMOVE_TRAIT(src, TRAIT_NO_TELEPORT, src) + ADD_TRAIT(src, TRAIT_NO_TELEPORT, src) to_chat(src, "You are now [is_anchored ? "" : "un"]anchored.") // the message in the [] will change depending whether or not the AI is anchored diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm index db35fc95c9..d7c52efe1d 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm @@ -39,6 +39,7 @@ /mob/living/simple_animal/hostile/megafauna/Initialize(mapload) . = ..() apply_status_effect(STATUS_EFFECT_CRUSHERDAMAGETRACKING) + ADD_TRAIT(src, TRAIT_NO_TELEPORT, MEGAFAUNA_TRAIT) /mob/living/simple_animal/hostile/megafauna/Destroy() QDEL_NULL(internal) From 5084146400927e40a106f532a4734bb7009d5044 Mon Sep 17 00:00:00 2001 From: r4d6 Date: Sat, 18 Jan 2020 18:46:22 -0500 Subject: [PATCH 038/123] Port --- code/__DEFINES/atmospherics.dm | 12 + code/game/machinery/constructable_frame.dm | 6 +- code/game/machinery/pipe/construction.dm | 6 +- .../circuitboards/machine_circuitboards.dm | 15 +- .../atmospherics/machinery/atmosmachinery.dm | 72 ++- .../binary_devices/binary_devices.dm | 18 +- .../components/binary_devices/dp_vent_pump.dm | 152 +++---- .../components/binary_devices/passive_gate.dm | 31 +- .../components/binary_devices/pump.dm | 77 ++-- .../components/binary_devices/valve.dm | 140 +++--- .../components/binary_devices/volume_pump.dm | 79 ++-- .../machinery/components/components_base.dm | 53 ++- .../components/trinary_devices/filter.dm | 194 +++++---- .../components/trinary_devices/mixer.dm | 135 +++--- .../unary_devices/heat_exchanger.dm | 20 +- .../unary_devices/outlet_injector.dm | 131 +++--- .../components/unary_devices/passive_vent.dm | 4 +- .../unary_devices/portables_connector.dm | 64 +-- .../components/unary_devices/tank.dm | 25 +- .../components/unary_devices/thermomachine.dm | 9 +- .../components/unary_devices/vent_pump.dm | 307 +++++++------ .../components/unary_devices/vent_scrubber.dm | 48 +- .../atmospherics/machinery/other/meter.dm | 5 +- .../machinery/pipes/heat_exchange/he_pipes.dm | 1 - .../machinery/pipes/heat_exchange/junction.dm | 34 +- .../machinery/pipes/heat_exchange/manifold.dm | 78 +--- .../pipes/heat_exchange/manifold4w.dm | 48 ++ .../machinery/pipes/heat_exchange/simple.dm | 44 +- .../machinery/pipes/layermanifold.dm | 53 ++- .../atmospherics/machinery/pipes/manifold.dm | 409 +----------------- .../machinery/pipes/manifold4w.dm | 398 +---------------- .../atmospherics/machinery/pipes/mapping.dm | 65 +++ .../atmospherics/machinery/pipes/pipes.dm | 15 +- .../atmospherics/machinery/pipes/simple.dm | 391 +---------------- .../components/binary_devices.dmi | Bin 37683 -> 41056 bytes .../atmospherics/components/thermomachine.dmi | Bin 23517 -> 5138 bytes .../components/trinary_devices.dmi | Bin 40611 -> 42943 bytes .../atmospherics/components/unary_devices.dmi | Bin 105390 -> 100865 bytes icons/obj/atmospherics/pipes/he-junction.dmi | Bin 0 -> 1878 bytes icons/obj/atmospherics/pipes/he-manifold.dmi | Bin 0 -> 1443 bytes icons/obj/atmospherics/pipes/he-simple.dmi | Bin 0 -> 3844 bytes icons/obj/atmospherics/pipes/heat.dmi | Bin 10819 -> 0 bytes icons/obj/atmospherics/pipes/junction.dmi | Bin 3276 -> 0 bytes icons/obj/atmospherics/pipes/manifold.dmi | Bin 14484 -> 2721 bytes icons/obj/atmospherics/pipes/meter.dmi | Bin 886 -> 716 bytes icons/obj/atmospherics/pipes/pipe_item.dmi | Bin 29946 -> 27655 bytes .../obj/atmospherics/pipes/pressure_tank.dmi | Bin 8611 -> 14599 bytes icons/obj/atmospherics/pipes/simple.dmi | Bin 16600 -> 6021 bytes 48 files changed, 1057 insertions(+), 2082 deletions(-) create mode 100644 code/modules/atmospherics/machinery/pipes/heat_exchange/manifold4w.dm create mode 100644 code/modules/atmospherics/machinery/pipes/mapping.dm create mode 100644 icons/obj/atmospherics/pipes/he-junction.dmi create mode 100644 icons/obj/atmospherics/pipes/he-manifold.dmi create mode 100644 icons/obj/atmospherics/pipes/he-simple.dmi delete mode 100644 icons/obj/atmospherics/pipes/heat.dmi delete mode 100644 icons/obj/atmospherics/pipes/junction.dmi diff --git a/code/__DEFINES/atmospherics.dm b/code/__DEFINES/atmospherics.dm index 456582c6a5..28554dbd99 100644 --- a/code/__DEFINES/atmospherics.dm +++ b/code/__DEFINES/atmospherics.dm @@ -254,6 +254,18 @@ #define PIPING_CARDINAL_AUTONORMALIZE (1<<3) //north/south east/west doesn't matter, auto normalize on build. //HELPERS +#define PIPING_LAYER_SHIFT(T, PipingLayer) \ + if(T.dir & NORTH || T.dir & SOUTH) { \ + T.pixel_x = (PipingLayer - PIPING_LAYER_DEFAULT) * PIPING_LAYER_P_X;\ + } \ + if(T.dir & WEST || T.dir & EAST) { \ + T.pixel_y = (PipingLayer - PIPING_LAYER_DEFAULT) * PIPING_LAYER_P_Y;\ + } + +#define PIPING_LAYER_DOUBLE_SHIFT(T, PipingLayer) \ + T.pixel_x = (PipingLayer - PIPING_LAYER_DEFAULT) * PIPING_LAYER_P_X;\ + T.pixel_y = (PipingLayer - PIPING_LAYER_DEFAULT) * PIPING_LAYER_P_Y; + #define THERMAL_ENERGY(gas) (gas.temperature * gas.heat_capacity()) #define QUANTIZE(variable) (round(variable,0.0000001))/*I feel the need to document what happens here. Basically this is used to catch most rounding errors, however it's previous value made it so that once gases got hot enough, most procedures wouldnt occur due to the fact that the mole counts would get rounded away. Thus, we lowered it a few orders of magnititude */ diff --git a/code/game/machinery/constructable_frame.dm b/code/game/machinery/constructable_frame.dm index 96487915dd..a238c4a451 100644 --- a/code/game/machinery/constructable_frame.dm +++ b/code/game/machinery/constructable_frame.dm @@ -181,6 +181,9 @@ if(component_check) P.play_tool_sound(src) var/obj/machinery/new_machine = new circuit.build_path(loc) + if(new_machine.circuit) + QDEL_NULL(new_machine.circuit) + new_machine.circuit = circuit new_machine.setAnchored(anchored) new_machine.on_construction() for(var/obj/O in new_machine.component_parts) @@ -189,9 +192,6 @@ for(var/obj/O in src) O.moveToNullspace() new_machine.component_parts += O - if(new_machine.circuit) - QDEL_NULL(new_machine.circuit) - new_machine.circuit = circuit circuit.moveToNullspace() new_machine.RefreshParts() qdel(src) diff --git a/code/game/machinery/pipe/construction.dm b/code/game/machinery/pipe/construction.dm index b8c537a4fc..937e3909b0 100644 --- a/code/game/machinery/pipe/construction.dm +++ b/code/game/machinery/pipe/construction.dm @@ -75,8 +75,7 @@ Buildable meters new_layer = PIPING_LAYER_DEFAULT piping_layer = new_layer - pixel_x += (piping_layer - PIPING_LAYER_DEFAULT) * PIPING_LAYER_P_X - pixel_y += (piping_layer - PIPING_LAYER_DEFAULT) * PIPING_LAYER_P_Y + PIPING_LAYER_SHIFT(src, piping_layer) layer = initial(layer) + ((piping_layer - PIPING_LAYER_DEFAULT) * PIPING_LAYER_LCHANGE) /obj/item/pipe/proc/update() @@ -232,5 +231,4 @@ Buildable meters /obj/item/pipe_meter/proc/setAttachLayer(new_layer = PIPING_LAYER_DEFAULT) piping_layer = new_layer - pixel_x = (new_layer - PIPING_LAYER_DEFAULT) * PIPING_LAYER_P_X - pixel_y = (new_layer - PIPING_LAYER_DEFAULT) * PIPING_LAYER_P_Y + PIPING_LAYER_DOUBLE_SHIFT(src, piping_layer) diff --git a/code/game/objects/items/circuitboards/machine_circuitboards.dm b/code/game/objects/items/circuitboards/machine_circuitboards.dm index 3e4a8743da..5621a946bb 100644 --- a/code/game/objects/items/circuitboards/machine_circuitboards.dm +++ b/code/game/objects/items/circuitboards/machine_circuitboards.dm @@ -308,6 +308,7 @@ /obj/item/circuitboard/machine/thermomachine name = "Thermomachine (Machine Board)" desc = "You can use a screwdriver to switch between heater and freezer." + var/pipe_layer = PIPING_LAYER_DEFAULT req_components = list( /obj/item/stock_parts/matter_bin = 2, /obj/item/stock_parts/micro_laser = 2, @@ -342,8 +343,18 @@ build_path = initial(new_type.build_path) I.play_tool_sound(src) to_chat(user, "You change the circuitboard setting to \"[new_setting]\".") - else - return ..() + return + + if(I.tool_behaviour == TOOL_MULTITOOL) + pipe_layer = (pipe_layer >= PIPING_LAYER_MAX) ? PIPING_LAYER_MIN : (pipe_layer + 1) + to_chat(user, "You change the circuitboard to layer [pipe_layer].") + return + + . = ..() + +/obj/item/circuitboard/machine/thermomachine/examine() + . = ..() + . += "It is set to layer [pipe_layer]." /obj/item/circuitboard/machine/thermomachine/heater name = "Heater (Machine Board)" diff --git a/code/modules/atmospherics/machinery/atmosmachinery.dm b/code/modules/atmospherics/machinery/atmosmachinery.dm index 0450e7e8dd..e4e6274662 100644 --- a/code/modules/atmospherics/machinery/atmosmachinery.dm +++ b/code/modules/atmospherics/machinery/atmosmachinery.dm @@ -1,14 +1,12 @@ -/* -Quick overview: +// Quick overview: +// +// Pipes combine to form pipelines +// Pipelines and other atmospheric objects combine to form pipe_networks +// Note: A single pipe_network represents a completely open space +// +// Pipes -> Pipelines +// Pipelines + Other Objects -> Pipe network -Pipes combine to form pipelines -Pipelines and other atmospheric objects combine to form pipe_networks - Note: A single pipe_network represents a completely open space - -Pipes -> Pipelines -Pipelines + Other Objects -> Pipe network - -*/ #define PIPE_VISIBLE_LEVEL 2 #define PIPE_HIDDEN_LEVEL 1 @@ -100,13 +98,14 @@ Pipelines + Other Objects -> Pipe network return node_connects /obj/machinery/atmospherics/proc/normalize_cardinal_directions() - if(dir==SOUTH) - setDir(NORTH) - else if(dir==WEST) - setDir(EAST) + switch(dir) + if(SOUTH) + setDir(NORTH) + if(WEST) + setDir(EAST) //this is called just after the air controller sets up turfs -/obj/machinery/atmospherics/proc/atmosinit(var/list/node_connects) +/obj/machinery/atmospherics/proc/atmosinit(list/node_connects) if(!node_connects) //for pipes where order of nodes doesn't matter node_connects = getNodeConnects() @@ -118,12 +117,8 @@ Pipelines + Other Objects -> Pipe network update_icon() /obj/machinery/atmospherics/proc/setPipingLayer(new_layer) - if(pipe_flags & PIPING_DEFAULT_LAYER_ONLY) - new_layer = PIPING_LAYER_DEFAULT - piping_layer = new_layer - pixel_x = (piping_layer - PIPING_LAYER_DEFAULT) * PIPING_LAYER_P_X - pixel_y = (piping_layer - PIPING_LAYER_DEFAULT) * PIPING_LAYER_P_Y - layer = initial(layer) + ((piping_layer - PIPING_LAYER_DEFAULT) * PIPING_LAYER_LCHANGE) + piping_layer = (pipe_flags & PIPING_DEFAULT_LAYER_ONLY) ? PIPING_LAYER_DEFAULT : new_layer + update_icon() /obj/machinery/atmospherics/proc/can_be_node(obj/machinery/atmospherics/target, iteration) return connection_check(target, piping_layer) @@ -175,9 +170,6 @@ Pipelines + Other Objects -> Pipe network nodes[nodes.Find(reference)] = null update_icon() -/obj/machinery/atmospherics/update_icon() - return - /obj/machinery/atmospherics/attackby(obj/item/W, mob/user, params) if(istype(W, /obj/item/pipe)) //lets you autodrop var/obj/item/pipe/pipe = W @@ -234,15 +226,13 @@ Pipelines + Other Objects -> Pipe network var/datum/gas_mixture/env_air = loc.return_air() pressures = int_air.return_pressure() - env_air.return_pressure() - var/fuck_you_dir = get_dir(src, user) // Because fuck you... - if(!fuck_you_dir) - fuck_you_dir = pick(GLOB.cardinals) - var/turf/target = get_edge_target_turf(user, fuck_you_dir) - var/range = pressures/250 - var/speed = range/5 - user.visible_message("[user] is sent flying by pressure!","The pressure sends you flying!") - user.throw_at(target, range, speed) + + // if get_dir(src, user) is not 0, target is the edge_target_turf on that dir + // otherwise, edge_target_turf uses a random cardinal direction + // range is pressures / 250 + // speed is pressures / 1250 + user.throw_at(get_edge_target_turf(user, get_dir(src, user) || pick(GLOB.cardinals)), pressures / 250, pressures / 1250) /obj/machinery/atmospherics/deconstruct(disassembled = TRUE) if(!(flags_1 & NODECONSTRUCT_1)) @@ -268,17 +258,6 @@ Pipelines + Other Objects -> Pipe network pipe_overlay = . = pipeimages[identifier] = image(iconset, iconstate, dir = direction) pipe_overlay.color = col -/obj/machinery/atmospherics/proc/icon_addintact(var/obj/machinery/atmospherics/node) - var/image/img = getpipeimage('icons/obj/atmospherics/components/binary_devices.dmi', "pipe_intact", get_dir(src,node), node.pipe_color) - underlays += img - return img.dir - -/obj/machinery/atmospherics/proc/icon_addbroken(var/connected = FALSE) - var/unconnected = (~connected) & initialize_directions - for(var/direction in GLOB.cardinals) - if(unconnected & direction) - underlays += getpipeimage('icons/obj/atmospherics/components/binary_devices.dmi', "pipe_exposed", direction) - /obj/machinery/atmospherics/on_construction(obj_color, set_layer) if(can_unwrench) add_atom_colour(obj_color, FIXED_COLOUR_PRIORITY) @@ -319,7 +298,7 @@ Pipelines + Other Objects -> Pipe network if(target_move.can_crawl_through()) if(is_type_in_typecache(target_move, GLOB.ventcrawl_machinery)) user.forceMove(target_move.loc) //handle entering and so on. - user.visible_message("You hear something squeezing through the ducts...","You climb out the ventilation system.") + user.visible_message("You hear something squeezing through the ducts...", "You climb out the ventilation system.") else var/list/pipenetdiff = returnPipenets() ^ target_move.returnPipenets() if(pipenetdiff.len) @@ -331,7 +310,7 @@ Pipelines + Other Objects -> Pipe network playsound(src, 'sound/machines/ventcrawl.ogg', 50, 1, -3) else if(is_type_in_typecache(src, GLOB.ventcrawl_machinery) && can_crawl_through()) //if we move in a way the pipe can connect, but doesn't - or we're in a vent user.forceMove(loc) - user.visible_message("You hear something squeezing through the ducts...","You climb out the ventilation system.") + user.visible_message("You hear something squeezing through the ducts...", "You climb out the ventilation system.") user.canmove = FALSE addtimer(VARSET_CALLBACK(user, canmove, TRUE), 1) @@ -355,3 +334,6 @@ Pipelines + Other Objects -> Pipe network //Used for certain children of obj/machinery/atmospherics to not show pipe vision when mob is inside it. /obj/machinery/atmospherics/proc/can_see_pipes() return TRUE + +/obj/machinery/atmospherics/proc/update_layer() + layer = initial(layer) + (piping_layer - PIPING_LAYER_DEFAULT) * PIPING_LAYER_LCHANGE \ No newline at end of file diff --git a/code/modules/atmospherics/machinery/components/binary_devices/binary_devices.dm b/code/modules/atmospherics/machinery/components/binary_devices/binary_devices.dm index 486a57450b..45ccaf1e86 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/binary_devices.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/binary_devices.dm @@ -8,24 +8,14 @@ /obj/machinery/atmospherics/components/binary/SetInitDirections() switch(dir) - if(NORTH) + if(NORTH, SOUTH) initialize_directions = NORTH|SOUTH - if(SOUTH) - initialize_directions = NORTH|SOUTH - if(EAST) + if(EAST, WEST) initialize_directions = EAST|WEST - if(WEST) - initialize_directions = EAST|WEST -/* -Iconnery -*/ + /obj/machinery/atmospherics/components/binary/hide(intact) update_icon() - - ..(intact) -/* -Housekeeping and pipe network stuff -*/ + ..() /obj/machinery/atmospherics/components/binary/getNodeConnects() return list(turn(dir, 180), dir) diff --git a/code/modules/atmospherics/machinery/components/binary_devices/dp_vent_pump.dm b/code/modules/atmospherics/machinery/components/binary_devices/dp_vent_pump.dm index 9f38757a89..c4e9b1f200 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/dp_vent_pump.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/dp_vent_pump.dm @@ -1,13 +1,12 @@ -/* -Acts like a normal vent, but has an input AND output. -*/ +//Acts like a normal vent, but has an input AND output. + #define EXT_BOUND 1 #define INPUT_MIN 2 #define OUTPUT_MAX 4 /obj/machinery/atmospherics/components/binary/dp_vent_pump icon = 'icons/obj/atmospherics/components/unary_devices.dmi' //We reuse the normal vent icons! - icon_state = "dpvent_map" + icon_state = "dpvent_map-2" //node2 is output port //node1 is input port @@ -27,97 +26,26 @@ Acts like a normal vent, but has an input AND output. var/output_pressure_max = 0 var/pressure_checks = EXT_BOUND + //EXT_BOUND: Do not pass external_pressure_bound //INPUT_MIN: Do not pass input_pressure_min //OUTPUT_MAX: Do not pass output_pressure_max -/obj/machinery/atmospherics/components/binary/dp_vent_pump/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/binary/dp_vent_pump/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/binary/dp_vent_pump/on - on = TRUE - icon_state = "dpvent_map_on" - -/obj/machinery/atmospherics/components/binary/dp_vent_pump/on/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/binary/dp_vent_pump/on/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - /obj/machinery/atmospherics/components/binary/dp_vent_pump/Destroy() SSradio.remove_object(src, frequency) return ..() -/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume - name = "large dual-port air vent" - -/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_toxmix - id = INCINERATOR_TOXMIX_DP_VENTPUMP - frequency = FREQ_AIRLOCK_CONTROL - -/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_atmos - id = INCINERATOR_ATMOS_DP_VENTPUMP - frequency = FREQ_AIRLOCK_CONTROL - -/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_syndicatelava - id = INCINERATOR_SYNDICATELAVA_DP_VENTPUMP - frequency = FREQ_AIRLOCK_CONTROL - -/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/on - on = TRUE - icon_state = "dpvent_map_on" - -/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/on/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/on/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/New() - ..() - var/datum/gas_mixture/air1 = airs[1] - var/datum/gas_mixture/air2 = airs[2] - air1.volume = 1000 - air2.volume = 1000 - /obj/machinery/atmospherics/components/binary/dp_vent_pump/update_icon_nopipes() cut_overlays() if(showpipe) - add_overlay(getpipeimage('icons/obj/atmospherics/components/unary_devices.dmi', "dpvent_cap")) + var/image/cap = getpipeimage(icon, "dpvent_cap", dir) + PIPING_LAYER_SHIFT(cap, piping_layer) + add_overlay(cap) if(!on || !is_operational()) icon_state = "vent_off" - return - - if(pump_direction) - icon_state = "vent_out" else - icon_state = "vent_in" + icon_state = pump_direction ? "vent_out" : "vent_in" /obj/machinery/atmospherics/components/binary/dp_vent_pump/process_atmos() ..() @@ -248,6 +176,70 @@ Acts like a normal vent, but has an input AND output. broadcast_status() update_icon() +/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume + name = "large dual-port air vent" + +/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/New() + ..() + var/datum/gas_mixture/air1 = airs[1] + var/datum/gas_mixture/air2 = airs[2] + air1.volume = 1000 + air2.volume = 1000 + +// Mapping + +/obj/machinery/atmospherics/components/binary/dp_vent_pump/layer1 + piping_layer = 1 + icon_state = "dpvent_map-1" + +/obj/machinery/atmospherics/components/binary/dp_vent_pump/layer3 + piping_layer = 3 + icon_state = "dpvent_map-3" + +/obj/machinery/atmospherics/components/binary/dp_vent_pump/on + on = TRUE + icon_state = "dpvent_map_on-2" + +/obj/machinery/atmospherics/components/binary/dp_vent_pump/on/layer1 + piping_layer = 1 + icon_state = "dpvent_map_on-1" + +/obj/machinery/atmospherics/components/binary/dp_vent_pump/on/layer3 + piping_layer = 3 + icon_state = "dpvent_map_on-3" + +/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_toxmix + id = INCINERATOR_TOXMIX_DP_VENTPUMP + frequency = FREQ_AIRLOCK_CONTROL + +/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_atmos + id = INCINERATOR_ATMOS_DP_VENTPUMP + frequency = FREQ_AIRLOCK_CONTROL + +/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_syndicatelava + id = INCINERATOR_SYNDICATELAVA_DP_VENTPUMP + frequency = FREQ_AIRLOCK_CONTROL + +/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/layer1 + piping_layer = 1 + icon_state = "dpvent_map-1" + +/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/layer3 + piping_layer = 3 + icon_state = "dpvent_map-3" + +/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/on + on = TRUE + icon_state = "dpvent_map_on-2" + +/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/on/layer1 + piping_layer = 1 + icon_state = "dpvent_map_on-1" + +/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/on/layer3 + piping_layer = 3 + icon_state = "dpvent_map_on-3" + #undef EXT_BOUND #undef INPUT_MIN #undef OUTPUT_MAX diff --git a/code/modules/atmospherics/machinery/components/binary_devices/passive_gate.dm b/code/modules/atmospherics/machinery/components/binary_devices/passive_gate.dm index 329ef33637..02eb95acab 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/passive_gate.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/passive_gate.dm @@ -7,12 +7,13 @@ Passive gate is similar to the regular pump except: */ /obj/machinery/atmospherics/components/binary/passive_gate - icon_state = "passgate_map" + icon_state = "passgate_map-2" name = "passive gate" desc = "A one-way air valve that does not require power." can_unwrench = TRUE + shift_underlay_only = FALSE interaction_flags_machine = INTERACT_MACHINE_OFFLINE | INTERACT_MACHINE_WIRES_IF_OPEN | INTERACT_MACHINE_ALLOW_SILICON | INTERACT_MACHINE_OPEN_SILICON | INTERACT_MACHINE_SET_MACHINE @@ -25,27 +26,15 @@ Passive gate is similar to the regular pump except: construction_type = /obj/item/pipe/directional pipe_state = "passivegate" -/obj/machinery/atmospherics/components/binary/passive_gate/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/binary/passive_gate/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - /obj/machinery/atmospherics/components/binary/passive_gate/Destroy() SSradio.remove_object(src,frequency) return ..() /obj/machinery/atmospherics/components/binary/passive_gate/update_icon_nopipes() - if(!on) - icon_state = "passgate_off" - cut_overlays() - return - - add_overlay(getpipeimage('icons/obj/atmospherics/components/binary_devices.dmi', "passgate_on")) + cut_overlays() + icon_state = "passgate_off" + if(on) + add_overlay(getpipeimage(icon, "passgate_on")) /obj/machinery/atmospherics/components/binary/passive_gate/process_atmos() ..() @@ -176,3 +165,11 @@ Passive gate is similar to the regular pump except: if(. && on) to_chat(user, "You cannot unwrench [src], turn it off first!") return FALSE + +/obj/machinery/atmospherics/components/binary/passive_gate/layer1 + piping_layer = 1 + icon_state = "passgate_map-1" + +/obj/machinery/atmospherics/components/binary/passive_gate/layer3 + piping_layer = 3 + icon_state = "passgate_map-3" \ No newline at end of file diff --git a/code/modules/atmospherics/machinery/components/binary_devices/pump.dm b/code/modules/atmospherics/machinery/components/binary_devices/pump.dm index c05c3bb3c9..9e49953df5 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/pump.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/pump.dm @@ -1,23 +1,22 @@ -/* -Every cycle, the pump uses the air in air_in to try and make air_out the perfect pressure. - -node1, air1, network1 correspond to input -node2, air2, network2 correspond to output - -Thus, the two variables affect pump operation are set in New(): - air1.volume - This is the volume of gas available to the pump that may be transfered to the output - air2.volume - Higher quantities of this cause more air to be perfected later - but overall network volume is also increased as this increases... -*/ +// Every cycle, the pump uses the air in air_in to try and make air_out the perfect pressure. +// +// node1, air1, network1 correspond to input +// node2, air2, network2 correspond to output +// +// Thus, the two variables affect pump operation are set in New(): +// air1.volume +// This is the volume of gas available to the pump that may be transfered to the output +// air2.volume +// Higher quantities of this cause more air to be perfected later +// but overall network volume is also increased as this increases... /obj/machinery/atmospherics/components/binary/pump - icon_state = "pump_map" + icon_state = "pump_map-2" name = "gas pump" desc = "A pump that moves gas by pressure." can_unwrench = TRUE + shift_underlay_only = FALSE var/target_pressure = ONE_ATMOSPHERE @@ -54,30 +53,6 @@ Thus, the two variables affect pump operation are set in New(): message_admins("Pump, [src.name], was maximized by [ADMIN_LOOKUPFLW(usr)] at [ADMIN_COORDJMP(T)], [A]") return TRUE -/obj/machinery/atmospherics/components/binary/pump/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/binary/pump/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/binary/pump/on - on = TRUE - icon_state = "pump_on_map" - -/obj/machinery/atmospherics/components/binary/pump/on/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/binary/pump/on/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - /obj/machinery/atmospherics/components/binary/pump/Destroy() SSradio.remove_object(src,frequency) if(radio_connection) @@ -85,11 +60,7 @@ Thus, the two variables affect pump operation are set in New(): return ..() /obj/machinery/atmospherics/components/binary/pump/update_icon_nopipes() - if(!is_operational()) - icon_state = "pump_off" - return - - icon_state = "pump_[on?"on":"off"]" + icon_state = (on && is_operational()) ? "pump_on" : "pump_off" /obj/machinery/atmospherics/components/binary/pump/process_atmos() // ..() @@ -222,3 +193,23 @@ Thus, the two variables affect pump operation are set in New(): investigate_log("Pump, [src.name], was unwrenched by [key_name(usr)] at [x], [y], [z], [A]", INVESTIGATE_ATMOS) message_admins("Pump, [src.name], was unwrenched by [ADMIN_LOOKUPFLW(user)] at [A]") return TRUE + +/obj/machinery/atmospherics/components/binary/pump/layer1 + piping_layer = 1 + icon_state= "pump_map-1" + +/obj/machinery/atmospherics/components/binary/pump/layer3 + piping_layer = 3 + icon_state= "pump_map-3" + +/obj/machinery/atmospherics/components/binary/pump/on + on = TRUE + icon_state = "pump_on_map-2" + +/obj/machinery/atmospherics/components/binary/pump/on/layer1 + piping_layer = 1 + icon_state= "pump_on_map-1" + +/obj/machinery/atmospherics/components/binary/pump/on/layer3 + piping_layer = 3 + icon_state= "pump_on_map-3" \ No newline at end of file diff --git a/code/modules/atmospherics/machinery/components/binary_devices/valve.dm b/code/modules/atmospherics/machinery/components/binary_devices/valve.dm index f22ac62106..21ee79c2ea 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/valve.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/valve.dm @@ -3,12 +3,15 @@ It's like a regular ol' straight pipe, but you can turn it on and off. */ /obj/machinery/atmospherics/components/binary/valve - icon_state = "mvalve_map" + icon_state = "mvalve_map-2" name = "manual valve" desc = "A pipe with a valve that can be used to disable flow of gas through it." can_unwrench = TRUE - interaction_flags_machine = INTERACT_MACHINE_OFFLINE | INTERACT_MACHINE_OPEN //Intentionally no allow_silicon flag + shift_underlay_only = FALSE + + interaction_flags_machine = INTERACT_MACHINE_OFFLINE | INTERACT_MACHINE_OPEN //Intentionally no allow_silicon flag + pipe_flags = PIPING_CARDINAL_AUTONORMALIZE var/frequency = 0 var/id = null @@ -20,97 +23,90 @@ It's like a regular ol' straight pipe, but you can turn it on and off. var/switching = FALSE +/obj/machinery/atmospherics/components/binary/valve/update_icon_nopipes(animation = FALSE) + normalize_cardinal_directions() + if(animation) + flick("[valve_type]valve_[on][!on]", src) + icon_state = "[valve_type]valve_[on ? "on" : "off"]" + +/obj/machinery/atmospherics/components/binary/valve/proc/toggle() + if(on) + on = FALSE + update_icon_nopipes() + investigate_log("was closed by [usr ? key_name(usr) : "a remote signal"]", INVESTIGATE_ATMOS) + else + on = TRUE + update_icon_nopipes() + update_parents() + var/datum/pipeline/parent1 = parents[1] + parent1.reconcile_air() + investigate_log("was opened by [usr ? key_name(usr) : "a remote signal"]", INVESTIGATE_ATMOS) + +/obj/machinery/atmospherics/components/binary/valve/interact(mob/user) + add_fingerprint(usr) + if(switching) + return + update_icon_nopipes(TRUE) + switching = TRUE + addtimer(CALLBACK(src, .proc/finish_interact), 10) + +/obj/machinery/atmospherics/components/binary/valve/proc/finish_interact() + toggle() + switching = FALSE + +/obj/machinery/atmospherics/components/binary/valve/digital // can be controlled by AI + icon_state = "dvalve_map-2" + name = "digital valve" + desc = "A digitally controlled valve." + valve_type = "d" + pipe_state = "dvalve" + interaction_flags_machine = INTERACT_MACHINE_ALLOW_SILICON | INTERACT_MACHINE_OFFLINE | INTERACT_MACHINE_OPEN | INTERACT_MACHINE_OPEN_SILICON + +/obj/machinery/atmospherics/components/binary/valve/digital/update_icon_nopipes(animation) + if(!is_operational()) + normalize_cardinal_directions() + icon_state = "dvalve_nopower" + return + ..() + + /obj/machinery/atmospherics/components/binary/valve/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y + piping_layer = 1 + icon_state = "mvalve_map-1" /obj/machinery/atmospherics/components/binary/valve/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y + piping_layer = 3 + icon_state = "mvalve_map-3" /obj/machinery/atmospherics/components/binary/valve/on on = TRUE /obj/machinery/atmospherics/components/binary/valve/on/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y + piping_layer = 1 + icon_state = "mvalve_map-1" /obj/machinery/atmospherics/components/binary/valve/on/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/binary/valve/update_icon_nopipes(animation = 0) - normalize_dir() - if(animation) - flick("[valve_type]valve_[on][!on]",src) - icon_state = "[valve_type]valve_[on?"on":"off"]" - -/obj/machinery/atmospherics/components/binary/valve/proc/open() - on = TRUE - update_icon_nopipes() - update_parents() - var/datum/pipeline/parent1 = parents[1] - parent1.reconcile_air() - investigate_log("was opened by [usr ? key_name(usr) : "a remote signal"]", INVESTIGATE_ATMOS) - -/obj/machinery/atmospherics/components/binary/valve/proc/close() - on = FALSE - update_icon_nopipes() - investigate_log("was closed by [usr ? key_name(usr) : "a remote signal"]", INVESTIGATE_ATMOS) - -/obj/machinery/atmospherics/components/binary/valve/proc/normalize_dir() - if(dir==SOUTH) - setDir(NORTH) - else if(dir==WEST) - setDir(EAST) - -/obj/machinery/atmospherics/components/binary/valve/interact(mob/user) - add_fingerprint(usr) - update_icon_nopipes(1) - if(switching) - return - switching = TRUE - sleep(10) - if(on) - close() - else - open() - switching = FALSE - -/obj/machinery/atmospherics/components/binary/valve/digital // can be controlled by AI - name = "digital valve" - desc = "A digitally controlled valve." - icon_state = "dvalve_map" - valve_type = "d" - pipe_state = "dvalve" - interaction_flags_machine = INTERACT_MACHINE_ALLOW_SILICON | INTERACT_MACHINE_OFFLINE | INTERACT_MACHINE_OPEN | INTERACT_MACHINE_OPEN_SILICON + piping_layer = 3 + icon_state = "mvalve_map-3" /obj/machinery/atmospherics/components/binary/valve/digital/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y + piping_layer = 1 + icon_state = "dvalve_map-1" /obj/machinery/atmospherics/components/binary/valve/digital/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y + piping_layer = 3 + icon_state = "dvalve_map-3" /obj/machinery/atmospherics/components/binary/valve/digital/on on = TRUE /obj/machinery/atmospherics/components/binary/valve/digital/on/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y + piping_layer = 1 + icon_state = "dvalve_map-1" /obj/machinery/atmospherics/components/binary/valve/digital/on/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y + piping_layer = 3 + icon_state = "dvalve_map-3" /obj/machinery/atmospherics/components/binary/valve/digital/update_icon_nopipes(animation) if(!is_operational()) diff --git a/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm b/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm index e9fa52fd23..864e3eef5e 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm @@ -1,23 +1,22 @@ -/* -Every cycle, the pump uses the air in air_in to try and make air_out the perfect pressure. - -node1, air1, network1 correspond to input -node2, air2, network2 correspond to output - -Thus, the two variables affect pump operation are set in New(): - air1.volume - This is the volume of gas available to the pump that may be transfered to the output - air2.volume - Higher quantities of this cause more air to be perfected later - but overall network volume is also increased as this increases... -*/ +// Every cycle, the pump uses the air in air_in to try and make air_out the perfect pressure. +// +// node1, air1, network1 correspond to input +// node2, air2, network2 correspond to output +// +// Thus, the two variables affect pump operation are set in New(): +// air1.volume +// This is the volume of gas available to the pump that may be transfered to the output +// air2.volume +// Higher quantities of this cause more air to be perfected later +// but overall network volume is also increased as this increases... /obj/machinery/atmospherics/components/binary/volume_pump - icon_state = "volpump_map" + icon_state = "volpump_map-2" name = "volumetric gas pump" desc = "A pump that moves gas by volume." can_unwrench = TRUE + shift_underlay_only = FALSE var/transfer_rate = MAX_TRANSFER_RATE @@ -43,40 +42,12 @@ Thus, the two variables affect pump operation are set in New(): message_admins("Volume Pump, [src.name], turned [on ? "on" : "off"] by [ADMIN_LOOKUPFLW(usr)] at [ADMIN_COORDJMP(T)], [A]") return ..() -/obj/machinery/atmospherics/components/binary/volume_pump/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/binary/volume_pump/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - /obj/machinery/atmospherics/components/binary/volume_pump/Destroy() SSradio.remove_object(src,frequency) return ..() -/obj/machinery/atmospherics/components/binary/volume_pump/on - on = TRUE - icon_state = "volpump_on_map" - -/obj/machinery/atmospherics/components/binary/volume_pump/on/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/binary/volume_pump/on/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - /obj/machinery/atmospherics/components/binary/volume_pump/update_icon_nopipes() - if(!is_operational()) - icon_state = "volpump_off" - return - - icon_state = "volpump_[on?"on":"off"]" + icon_state = on && is_operational() ? "volpump_on" : "volpump_off" /obj/machinery/atmospherics/components/binary/volume_pump/process_atmos() // ..() @@ -208,3 +179,25 @@ Thus, the two variables affect pump operation are set in New(): investigate_log("Pump, [src.name], was unwrenched by [key_name(usr)] at [x], [y], [z], [A]", INVESTIGATE_ATMOS) message_admins("Pump, [src.name], was unwrenched by [ADMIN_LOOKUPFLW(user)] at [A]") return TRUE + +// Mapping + +/obj/machinery/atmospherics/components/binary/volume_pump/layer1 + piping_layer = 1 + icon_state = "volpump_map-1" + +/obj/machinery/atmospherics/components/binary/volume_pump/layer3 + piping_layer = 3 + icon_state = "volpump_map-3" + +/obj/machinery/atmospherics/components/binary/volume_pump/on + on = TRUE + icon_state = "volpump_on_map" + +/obj/machinery/atmospherics/components/binary/volume_pump/on/layer1 + piping_layer = 1 + icon_state = "volpump_map-1" + +/obj/machinery/atmospherics/components/binary/volume_pump/on/layer3 + piping_layer = 3 + icon_state = "volpump_map-3" \ No newline at end of file diff --git a/code/modules/atmospherics/machinery/components/components_base.dm b/code/modules/atmospherics/machinery/components/components_base.dm index e31d96a0c2..1f5cd8b150 100644 --- a/code/modules/atmospherics/machinery/components/components_base.dm +++ b/code/modules/atmospherics/machinery/components/components_base.dm @@ -1,11 +1,10 @@ -/* -So much of atmospherics.dm was used solely by components, so separating this makes things all a lot cleaner. -On top of that, now people can add component-speciic procs/vars if they want! -*/ +// So much of atmospherics.dm was used solely by components, so separating this makes things all a lot cleaner. +// On top of that, now people can add component-speciic procs/vars if they want! /obj/machinery/atmospherics/components var/welded = FALSE //Used on pumps and scrubbers var/showpipe = FALSE + var/shift_underlay_only = TRUE //Layering only shifts underlay? var/list/datum/pipeline/parents var/list/datum/gas_mixture/airs @@ -19,9 +18,8 @@ On top of that, now people can add component-speciic procs/vars if they want! var/datum/gas_mixture/A = new A.volume = 200 airs[i] = A -/* -Iconnery -*/ + +// Iconnery /obj/machinery/atmospherics/components/proc/update_icon_nopipes() return @@ -46,14 +44,29 @@ Iconnery for(var/i in 1 to device_type) //adds intact pieces if(nodes[i]) - connected |= icon_addintact(nodes[i]) + var/obj/machinery/atmospherics/node = nodes[i] + var/image/img = get_pipe_underlay("pipe_intact", get_dir(src, node), node.pipe_color) + underlays += img + connected |= img.dir - icon_addbroken(connected) //adds broken pieces + for(var/direction in GLOB.cardinals) + if((initialize_directions & direction) && !(connected & direction)) + underlays += get_pipe_underlay("pipe_exposed", direction) + if(!shift_underlay_only) + PIPING_LAYER_SHIFT(src, piping_layer) -/* -Pipenet stuff; housekeeping -*/ +/obj/machinery/atmospherics/components/proc/get_pipe_underlay(state, dir, color = null) + if(color) + . = getpipeimage('icons/obj/atmospherics/components/binary_devices.dmi', state, dir, color) + else + . = getpipeimage('icons/obj/atmospherics/components/binary_devices.dmi', state, dir) + + if(shift_underlay_only) + var/image/I = . + PIPING_LAYER_SHIFT(I, piping_layer) + +// Pipenet stuff; housekeeping /obj/machinery/atmospherics/components/nullifyNode(i) if(nodes[i]) @@ -129,9 +142,7 @@ Pipenet stuff; housekeeping return new_value return default_set -/* -Helpers -*/ +// Helpers /obj/machinery/atmospherics/components/proc/update_parents() for(var/i in 1 to device_type) @@ -146,9 +157,9 @@ Helpers for(var/i in 1 to device_type) . += returnPipenet(nodes[i]) -/* -UI Stuff -*/ + +// UI Stuff + /obj/machinery/atmospherics/components/ui_status(mob/user) if(allowed(user)) @@ -156,9 +167,9 @@ UI Stuff to_chat(user, "Access denied.") return UI_CLOSE -/* -Tool acts -*/ + +// Tool acts + /obj/machinery/atmospherics/components/analyzer_act(mob/living/user, obj/item/I) atmosanalyzer_scan(airs, user, src) \ No newline at end of file diff --git a/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm b/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm index adca444b10..22249d5fff 100644 --- a/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm +++ b/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm @@ -1,9 +1,12 @@ /obj/machinery/atmospherics/components/trinary/filter - name = "gas filter" icon_state = "filter_off" - desc = "Very useful for filtering gasses." density = FALSE + + name = "gas filter" + desc = "Very useful for filtering gasses." + can_unwrench = TRUE + var/transfer_rate = MAX_TRANSFER_RATE var/filter_type = null var/frequency = 0 @@ -38,38 +41,6 @@ message_admins("Filter, [src.name], was maximized by [ADMIN_LOOKUPFLW(usr)] at [ADMIN_COORDJMP(T)], [A]") return TRUE -/obj/machinery/atmospherics/components/trinary/filter/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/trinary/filter/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/trinary/filter/flipped - icon_state = "filter_off_f" - flipped = TRUE - -/obj/machinery/atmospherics/components/trinary/filter/flipped/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/trinary/filter/flipped/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -// These two filter types have critical_machine flagged to on and thus causes the area they are in to be exempt from the Grid Check event. - -/obj/machinery/atmospherics/components/trinary/filter/critical - critical_machine = TRUE - -/obj/machinery/atmospherics/components/trinary/filter/flipped/critical - critical_machine = TRUE - /obj/machinery/atmospherics/components/trinary/filter/proc/set_frequency(new_frequency) SSradio.remove_object(src, frequency) frequency = new_frequency @@ -80,62 +51,27 @@ SSradio.remove_object(src,frequency) return ..() -/obj/machinery/atmospherics/components/trinary/filter/atmos //Used for atmos waste loops - on = TRUE - icon_state = "filter_on" - -/obj/machinery/atmospherics/components/trinary/filter/atmos/n2 - name = "nitrogen filter" - filter_type = "n2" -/obj/machinery/atmospherics/components/trinary/filter/atmos/o2 - name = "oxygen filter" - filter_type = "o2" -/obj/machinery/atmospherics/components/trinary/filter/atmos/co2 - name = "carbon dioxide filter" - filter_type = "co2" -/obj/machinery/atmospherics/components/trinary/filter/atmos/n2o - name = "nitrous oxide filter" - filter_type = "n2o" -/obj/machinery/atmospherics/components/trinary/filter/atmos/plasma - name = "plasma filter" - filter_type = "plasma" - -/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped //This feels wrong, I know - icon_state = "filter_on_f" - flipped = TRUE - -/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/n2 - name = "nitrogen filter" - filter_type = "n2" -/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/o2 - name = "oxygen filter" - filter_type = "o2" -/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/co2 - name = "carbon dioxide filter" - filter_type = "co2" -/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/n2o - name = "nitrous oxide filter" - filter_type = "n2o" -/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/plasma - name = "plasma filter" - filter_type = "plasma" - /obj/machinery/atmospherics/components/trinary/filter/update_icon() cut_overlays() for(var/direction in GLOB.cardinals) - if(direction & initialize_directions) - var/obj/machinery/atmospherics/node = findConnecting(direction) - if(node) - add_overlay(getpipeimage('icons/obj/atmospherics/components/trinary_devices.dmi', "cap", direction, node.pipe_color)) - continue - add_overlay(getpipeimage('icons/obj/atmospherics/components/trinary_devices.dmi', "cap", direction)) - ..() + if(!(direction & initialize_directions)) + continue + var/obj/machinery/atmospherics/node = findConnecting(direction) + + var/image/cap + if(node) + cap = getpipeimage(icon, "cap", direction, node.pipe_color) + else + cap = getpipeimage(icon, "cap", direction) + + PIPING_LAYER_SHIFT(cap, piping_layer) + add_overlay(cap) + + return ..() /obj/machinery/atmospherics/components/trinary/filter/update_icon_nopipes() - if(on && nodes[1] && nodes[2] && nodes[3] && is_operational()) - icon_state = "filter_on[flipped?"_f":""]" - return - icon_state = "filter_off[flipped?"_f":""]" + var/on_state = on && nodes[1] && nodes[2] && nodes[3] && is_operational() + icon_state = "filter_[on_state ? "on" : "off"][flipped ? "_f" : ""]" /obj/machinery/atmospherics/components/trinary/filter/power_change() var/old_stat = stat @@ -258,3 +194,91 @@ if(. && on && is_operational()) to_chat(user, "You cannot unwrench [src], turn it off first!") return FALSE + +// Mapping + +/obj/machinery/atmospherics/components/trinary/filter/layer1 + piping_layer = 1 + icon_state = "filter_off_map-1" +/obj/machinery/atmospherics/components/trinary/filter/layer3 + piping_layer = 3 + icon_state = "filter_off_map-3" + +/obj/machinery/atmospherics/components/trinary/filter/on + on = TRUE + icon_state = "filter_on" + +/obj/machinery/atmospherics/components/trinary/filter/on/layer1 + piping_layer = 1 + icon_state = "filter_on_map-1" +/obj/machinery/atmospherics/components/trinary/filter/on/layer3 + piping_layer = 3 + icon_state = "filter_on_map-3" + +/obj/machinery/atmospherics/components/trinary/filter/flipped + icon_state = "filter_off_f" + flipped = TRUE + +/obj/machinery/atmospherics/components/trinary/filter/flipped/layer1 + piping_layer = 1 + icon_state = "filter_off_f_map-1" +/obj/machinery/atmospherics/components/trinary/filter/flipped/layer3 + piping_layer = 3 + icon_state = "filter_off_f_map-3" + +/obj/machinery/atmospherics/components/trinary/filter/flipped/on + on = TRUE + icon_state = "filter_on_f" + +/obj/machinery/atmospherics/components/trinary/filter/flipped/on/layer1 + piping_layer = 1 + icon_state = "filter_on_f_map-1" +/obj/machinery/atmospherics/components/trinary/filter/flipped/on/layer3 + piping_layer = 3 + icon_state = "filter_on_f_map-3" + +/obj/machinery/atmospherics/components/trinary/filter/atmos //Used for atmos waste loops + on = TRUE + icon_state = "filter_on" +/obj/machinery/atmospherics/components/trinary/filter/atmos/n2 + name = "nitrogen filter" + filter_type = "n2" +/obj/machinery/atmospherics/components/trinary/filter/atmos/o2 + name = "oxygen filter" + filter_type = "o2" +/obj/machinery/atmospherics/components/trinary/filter/atmos/co2 + name = "carbon dioxide filter" + filter_type = "co2" +/obj/machinery/atmospherics/components/trinary/filter/atmos/n2o + name = "nitrous oxide filter" + filter_type = "n2o" +/obj/machinery/atmospherics/components/trinary/filter/atmos/plasma + name = "plasma filter" + filter_type = "plasma" + +/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped //This feels wrong, I know + icon_state = "filter_on_f" + flipped = TRUE +/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/n2 + name = "nitrogen filter" + filter_type = "n2" +/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/o2 + name = "oxygen filter" + filter_type = "o2" +/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/co2 + name = "carbon dioxide filter" + filter_type = "co2" +/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/n2o + name = "nitrous oxide filter" + filter_type = "n2o" +/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/plasma + name = "plasma filter" + filter_type = "plasma" + +// These two filter types have critical_machine flagged to on and thus causes the area they are in to be exempt from the Grid Check event. + +/obj/machinery/atmospherics/components/trinary/filter/critical + critical_machine = TRUE + +/obj/machinery/atmospherics/components/trinary/filter/flipped/critical + critical_machine = TRUE \ No newline at end of file diff --git a/code/modules/atmospherics/machinery/components/trinary_devices/mixer.dm b/code/modules/atmospherics/machinery/components/trinary_devices/mixer.dm index 9646b78321..60db07bb75 100644 --- a/code/modules/atmospherics/machinery/components/trinary_devices/mixer.dm +++ b/code/modules/atmospherics/machinery/components/trinary_devices/mixer.dm @@ -3,9 +3,10 @@ density = FALSE name = "gas mixer" - can_unwrench = TRUE desc = "Very useful for mixing gasses." + can_unwrench = TRUE + var/target_pressure = ONE_ATMOSPHERE var/node1_concentration = 0.5 var/node2_concentration = 0.5 @@ -41,66 +42,28 @@ return TRUE //node 3 is the outlet, nodes 1 & 2 are intakes -/obj/machinery/atmospherics/components/trinary/mixer/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/trinary/mixer/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/trinary/mixer/flipped - icon_state = "mixer_off_f" - flipped = TRUE - -/obj/machinery/atmospherics/components/trinary/mixer/flipped/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/trinary/mixer/flipped/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/trinary/mixer/airmix //For standard airmix to distro - name = "air mixer" - icon_state = "mixer_on" - node1_concentration = N2STANDARD - node2_concentration = O2STANDARD - on = TRUE - target_pressure = MAX_OUTPUT_PRESSURE - -/obj/machinery/atmospherics/components/trinary/mixer/airmix/inverse - node1_concentration = O2STANDARD - node2_concentration = N2STANDARD - -/obj/machinery/atmospherics/components/trinary/mixer/airmix/flipped - icon_state = "mixer_on_f" - flipped = TRUE - -/obj/machinery/atmospherics/components/trinary/mixer/airmix/flipped/inverse - node1_concentration = O2STANDARD - node2_concentration = N2STANDARD /obj/machinery/atmospherics/components/trinary/mixer/update_icon() cut_overlays() for(var/direction in GLOB.cardinals) - if(direction & initialize_directions) - var/obj/machinery/atmospherics/node = findConnecting(direction) - if(node) - add_overlay(getpipeimage('icons/obj/atmospherics/components/trinary_devices.dmi', "cap", direction, node.pipe_color)) - continue - add_overlay(getpipeimage('icons/obj/atmospherics/components/trinary_devices.dmi', "cap", direction)) + if(!(direction & initialize_directions)) + continue + var/obj/machinery/atmospherics/node = findConnecting(direction) + + var/image/cap + if(node) + cap = getpipeimage(icon, "cap", direction, node.pipe_color) + else + cap = getpipeimage(icon, "cap", direction) + + PIPING_LAYER_SHIFT(cap, piping_layer) + add_overlay(cap) + return ..() /obj/machinery/atmospherics/components/trinary/mixer/update_icon_nopipes() - if(on && nodes[1] && nodes[2] && nodes[3] && is_operational()) - icon_state = "mixer_on[flipped?"_f":""]" - return - icon_state = "mixer_off[flipped?"_f":""]" + var/on_state = on && nodes[1] && nodes[2] && nodes[3] && is_operational() + icon_state = "mixer_[on_state ? "on" : "off"][flipped ? "_f" : ""]" /obj/machinery/atmospherics/components/trinary/mixer/power_change() var/old_stat = stat @@ -233,8 +196,70 @@ update_icon() -/obj/machinery/atmospherics/components/trinary/filter/can_unwrench(mob/user) +/obj/machinery/atmospherics/components/trinary/mixer/can_unwrench(mob/user) . = ..() if(. && on && is_operational()) to_chat(user, "You cannot unwrench [src], turn it off first!") return FALSE + +// mapping + +/obj/machinery/atmospherics/components/trinary/mixer/layer1 + piping_layer = 1 + icon_state = "mixer_off_map-1" +/obj/machinery/atmospherics/components/trinary/mixer/layer3 + piping_layer = 3 + icon_state = "mixer_off_map-3" + +/obj/machinery/atmospherics/components/trinary/mixer/on + on = TRUE + icon_state = "mixer_on" + +/obj/machinery/atmospherics/components/trinary/mixer/on/layer1 + piping_layer = 1 + icon_state = "mixer_on_map-1" +/obj/machinery/atmospherics/components/trinary/mixer/on/layer3 + piping_layer = 3 + icon_state = "mixer_on_map-3" + +/obj/machinery/atmospherics/components/trinary/mixer/flipped + icon_state = "mixer_off_f" + flipped = TRUE + +/obj/machinery/atmospherics/components/trinary/mixer/flipped/layer1 + piping_layer = 1 + icon_state = "mixer_off_f_map-1" +/obj/machinery/atmospherics/components/trinary/mixer/flipped/layer3 + piping_layer = 3 + icon_state = "mixer_off_f_map-3" + +/obj/machinery/atmospherics/components/trinary/mixer/flipped/on + on = TRUE + icon_state = "mixer_on_f" + +/obj/machinery/atmospherics/components/trinary/mixer/flipped/on/layer1 + piping_layer = 1 + icon_state = "mixer_on_f_map-1" +/obj/machinery/atmospherics/components/trinary/mixer/flipped/on/layer3 + piping_layer = 3 + icon_state = "mixer_on_f_map-3" + +/obj/machinery/atmospherics/components/trinary/mixer/airmix //For standard airmix to distro + name = "air mixer" + icon_state = "mixer_on" + node1_concentration = N2STANDARD + node2_concentration = O2STANDARD + target_pressure = MAX_OUTPUT_PRESSURE + on = TRUE + +/obj/machinery/atmospherics/components/trinary/mixer/airmix/inverse + node1_concentration = O2STANDARD + node2_concentration = N2STANDARD + +/obj/machinery/atmospherics/components/trinary/mixer/airmix/flipped + icon_state = "mixer_on_f" + flipped = TRUE + +/obj/machinery/atmospherics/components/trinary/mixer/airmix/flipped/inverse + node1_concentration = O2STANDARD + node2_concentration = N2STANDARD \ No newline at end of file diff --git a/code/modules/atmospherics/machinery/components/unary_devices/heat_exchanger.dm b/code/modules/atmospherics/machinery/components/unary_devices/heat_exchanger.dm index 66f9668bbf..a856ea1f3f 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/heat_exchanger.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/heat_exchanger.dm @@ -1,11 +1,12 @@ /obj/machinery/atmospherics/components/unary/heat_exchanger - icon_state = "he_intact" + icon_state = "he1" name = "heat exchanger" desc = "Exchanges heat between two input gases. Set up for fast heat transfer." can_unwrench = TRUE + shift_underlay_only = FALSE // not really used layer = LOW_OBJ_LAYER @@ -13,24 +14,23 @@ var/update_cycle pipe_state = "heunary" - + /obj/machinery/atmospherics/components/unary/heat_exchanger/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y + piping_layer = 1 + icon_state = "he_map-1" /obj/machinery/atmospherics/components/unary/heat_exchanger/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y + piping_layer = 3 + icon_state = "he_map-3" /obj/machinery/atmospherics/components/unary/heat_exchanger/update_icon() if(nodes[1]) - icon_state = "he_intact" + icon_state = "he1" var/obj/machinery/atmospherics/node = nodes[1] add_atom_colour(node.color, FIXED_COLOUR_PRIORITY) else - icon_state = "he_exposed" + icon_state = "he0" + PIPING_LAYER_SHIFT(src, piping_layer) /obj/machinery/atmospherics/components/unary/heat_exchanger/atmosinit() if(!partner) diff --git a/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm b/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm index b4c37a2140..87ab4fa643 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm @@ -1,9 +1,10 @@ /obj/machinery/atmospherics/components/unary/outlet_injector + icon_state = "inje_map-2" name = "air injector" desc = "Has a valve and pump attached to it." - icon_state = "inje_map" use_power = IDLE_POWER_USE can_unwrench = TRUE + shift_underlay_only = FALSE resistance_flags = FIRE_PROOF | UNACIDABLE | ACID_PROOF //really helpful in building gas chambers for xenomorphs var/injecting = 0 @@ -19,82 +20,20 @@ pipe_state = "injector" -/obj/machinery/atmospherics/components/unary/outlet_injector/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/unary/outlet_injector/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - /obj/machinery/atmospherics/components/unary/outlet_injector/Destroy() SSradio.remove_object(src,frequency) return ..() -/obj/machinery/atmospherics/components/unary/outlet_injector/atmos - frequency = FREQ_ATMOS_STORAGE - on = TRUE - volume_rate = 200 - -/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/atmos_waste - name = "atmos waste outlet injector" - id = ATMOS_GAS_MONITOR_WASTE_ATMOS -/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/engine_waste - name = "engine outlet injector" - id = ATMOS_GAS_MONITOR_WASTE_ENGINE -/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/toxin_input - name = "plasma tank input injector" - id = ATMOS_GAS_MONITOR_INPUT_TOX -/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/oxygen_input - name = "oxygen tank input injector" - id = ATMOS_GAS_MONITOR_INPUT_O2 -/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/nitrogen_input - name = "nitrogen tank input injector" - id = ATMOS_GAS_MONITOR_INPUT_N2 -/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/mix_input - name = "mix tank input injector" - id = ATMOS_GAS_MONITOR_INPUT_MIX -/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/nitrous_input - name = "nitrous oxide tank input injector" - id = ATMOS_GAS_MONITOR_INPUT_N2O -/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/air_input - name = "air mix tank input injector" - id = ATMOS_GAS_MONITOR_INPUT_AIR -/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/carbon_input - name = "carbon dioxide tank input injector" - id = ATMOS_GAS_MONITOR_INPUT_CO2 -/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/incinerator_input - name = "incinerator chamber input injector" - id = ATMOS_GAS_MONITOR_INPUT_INCINERATOR -/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/toxins_mixing_input - name = "toxins mixing input injector" - id = ATMOS_GAS_MONITOR_INPUT_TOXINS_LAB - -/obj/machinery/atmospherics/components/unary/outlet_injector/on - on = TRUE - -/obj/machinery/atmospherics/components/unary/outlet_injector/on/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/unary/outlet_injector/on/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - /obj/machinery/atmospherics/components/unary/outlet_injector/update_icon_nopipes() cut_overlays() if(showpipe) + // everything is already shifted so don't shift the cap add_overlay(getpipeimage(icon, "inje_cap", initialize_directions)) if(!nodes[1] || !on || !is_operational()) icon_state = "inje_off" - return - - icon_state = "inje_on" + else + icon_state = "inje_on" /obj/machinery/atmospherics/components/unary/outlet_injector/power_change() var/old_stat = stat @@ -243,3 +182,63 @@ if(. && on && is_operational()) to_chat(user, "You cannot unwrench [src], turn it off first!") return FALSE + +// mapping + +/obj/machinery/atmospherics/components/unary/outlet_injector/layer1 + piping_layer = 1 + icon_state = "inje_map-1" + +/obj/machinery/atmospherics/components/unary/outlet_injector/layer3 + piping_layer = 2 + icon_state = "inje_map-2" + +/obj/machinery/atmospherics/components/unary/outlet_injector/on + on = TRUE + +/obj/machinery/atmospherics/components/unary/outlet_injector/on/layer1 + piping_layer = 1 + icon_state = "inje_map-1" + +/obj/machinery/atmospherics/components/unary/outlet_injector/on/layer3 + piping_layer = 2 + icon_state = "inje_map-2" + +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos + frequency = FREQ_ATMOS_STORAGE + on = TRUE + volume_rate = 200 + +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/atmos_waste + name = "atmos waste outlet injector" + id = ATMOS_GAS_MONITOR_WASTE_ATMOS +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/engine_waste + name = "engine outlet injector" + id = ATMOS_GAS_MONITOR_WASTE_ENGINE +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/toxin_input + name = "plasma tank input injector" + id = ATMOS_GAS_MONITOR_INPUT_TOX +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/oxygen_input + name = "oxygen tank input injector" + id = ATMOS_GAS_MONITOR_INPUT_O2 +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/nitrogen_input + name = "nitrogen tank input injector" + id = ATMOS_GAS_MONITOR_INPUT_N2 +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/mix_input + name = "mix tank input injector" + id = ATMOS_GAS_MONITOR_INPUT_MIX +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/nitrous_input + name = "nitrous oxide tank input injector" + id = ATMOS_GAS_MONITOR_INPUT_N2O +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/air_input + name = "air mix tank input injector" + id = ATMOS_GAS_MONITOR_INPUT_AIR +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/carbon_input + name = "carbon dioxide tank input injector" + id = ATMOS_GAS_MONITOR_INPUT_CO2 +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/incinerator_input + name = "incinerator chamber input injector" + id = ATMOS_GAS_MONITOR_INPUT_INCINERATOR +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/toxins_mixing_input + name = "toxins mixing input injector" + id = ATMOS_GAS_MONITOR_INPUT_TOXINS_LAB \ No newline at end of file diff --git a/code/modules/atmospherics/machinery/components/unary_devices/passive_vent.dm b/code/modules/atmospherics/machinery/components/unary_devices/passive_vent.dm index 94d8959987..e4c44c45a4 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/passive_vent.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/passive_vent.dm @@ -47,9 +47,9 @@ return TRUE /obj/machinery/atmospherics/components/unary/passive_vent/layer1 - piping_layer = PIPING_LAYER_MIN + piping_layer = 1 icon_state = "passive_vent_map-1" /obj/machinery/atmospherics/components/unary/passive_vent/layer3 - piping_layer = PIPING_LAYER_MAX + piping_layer = 3 icon_state = "passive_vent_map-3" diff --git a/code/modules/atmospherics/machinery/components/unary_devices/portables_connector.dm b/code/modules/atmospherics/machinery/components/unary_devices/portables_connector.dm index c0e69a0c7d..de89cb0973 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/portables_connector.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/portables_connector.dm @@ -1,25 +1,16 @@ /obj/machinery/atmospherics/components/unary/portables_connector + icon_state = "connector_map-2" name = "connector port" desc = "For connecting portables devices related to atmospherics control." icon = 'icons/obj/atmospherics/components/unary_devices.dmi' - icon_state = "connector_map" //Only for mapping purposes, so mappers can see direction can_unwrench = TRUE - var/obj/machinery/portable_atmospherics/connected_device use_power = NO_POWER_USE level = 0 layer = GAS_FILTER_LAYER pipe_flags = PIPING_ONE_PER_TURF pipe_state = "connector" - -/obj/machinery/atmospherics/components/unary/portables_connector/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y -/obj/machinery/atmospherics/components/unary/portables_connector/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y + var/obj/machinery/portable_atmospherics/connected_device /obj/machinery/atmospherics/components/unary/portables_connector/New() ..() @@ -27,29 +18,23 @@ air_contents.volume = 0 -/obj/machinery/atmospherics/components/unary/portables_connector/visible - level = 2 - -/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/unary/portables_connector/process_atmos() - if(!connected_device) - return - update_parents() - /obj/machinery/atmospherics/components/unary/portables_connector/Destroy() if(connected_device) connected_device.disconnect() return ..() +/obj/machinery/atmospherics/components/unary/portables_connector/update_icon_nopipes() + icon_state = "connector" + if(showpipe) + var/image/cap = getpipeimage(icon, "connector_cap", initialize_directions) + PIPING_LAYER_SHIFT(cap, piping_layer) + add_overlay(cap) + +/obj/machinery/atmospherics/components/unary/portables_connector/process_atmos() + if(!connected_device) + return + update_parents() + /obj/machinery/atmospherics/components/unary/portables_connector/can_unwrench(mob/user) . = ..() if(. && connected_device) @@ -60,3 +45,24 @@ return connected_device.portableConnectorReturnAir() /obj/proc/portableConnectorReturnAir() + return + + +/obj/machinery/atmospherics/components/unary/portables_connector/layer1 + piping_layer = 1 + icon_state = "connector_map-1" + +/obj/machinery/atmospherics/components/unary/portables_connector/layer3 + piping_layer = 3 + icon_state = "connector_map-3" + +/obj/machinery/atmospherics/components/unary/portables_connector/visible + level = 2 + +/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer1 + piping_layer = 1 + icon_state = "connector_map-1" + +/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer3 + piping_layer = 3 + icon_state = "connector_map-3" \ No newline at end of file diff --git a/code/modules/atmospherics/machinery/components/unary_devices/tank.dm b/code/modules/atmospherics/machinery/components/unary_devices/tank.dm index 4dd2216b19..fa467da7fc 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/tank.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/tank.dm @@ -5,11 +5,11 @@ name = "pressure tank" desc = "A large vessel containing pressurized gas." max_integrity = 800 - var/volume = 10000 //in liters, 1 meters by 1 meters by 2 meters density = TRUE - var/gas_type = 0 layer = ABOVE_WINDOW_LAYER pipe_flags = PIPING_ONE_PER_TURF + var/volume = 10000 //in liters + var/gas_type = 0 /obj/machinery/atmospherics/components/unary/tank/New() ..() @@ -20,6 +20,17 @@ air_contents.gases[gas_type] = AIR_CONTENTS name = "[name] ([GLOB.meta_gas_names[gas_type]])" +/obj/machinery/atmospherics/components/unary/tank/air + icon_state = "grey" + name = "pressure tank (Air)" + +/obj/machinery/atmospherics/components/unary/tank/air/New() + ..() + var/datum/gas_mixture/air_contents = airs[1] + air_contents.assert_gases(/datum/gas/oxygen, /datum/gas/nitrogen) + air_contents.gases[/datum/gas/oxygen][MOLES] = AIR_CONTENTS * 0.2 + air_contents.gases[/datum/gas/nitrogen][MOLES] = AIR_CONTENTS * 0.8 + /obj/machinery/atmospherics/components/unary/tank/carbon_dioxide gas_type = /datum/gas/carbon_dioxide @@ -27,7 +38,6 @@ icon_state = "orange" gas_type = /datum/gas/plasma - /obj/machinery/atmospherics/components/unary/tank/oxygen icon_state = "blue" gas_type = /datum/gas/oxygen @@ -40,12 +50,3 @@ icon_state = "red_white" gas_type = /datum/gas/nitrous_oxide -/obj/machinery/atmospherics/components/unary/tank/air - icon_state = "grey" - name = "pressure tank (Air)" - -/obj/machinery/atmospherics/components/unary/tank/air/New() - ..() - var/datum/gas_mixture/air_contents = airs[1] - air_contents.gases[/datum/gas/oxygen] = AIR_CONTENTS * 0.2 - air_contents.gases[/datum/gas/nitrogen] = AIR_CONTENTS * 0.8 diff --git a/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm b/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm index 2e06e68709..a7a9e13e26 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm @@ -11,7 +11,7 @@ layer = OBJ_LAYER circuit = /obj/item/circuitboard/machine/thermomachine - pipe_flags = PIPING_ONE_PER_TURF | PIPING_DEFAULT_LAYER_ONLY + pipe_flags = PIPING_ONE_PER_TURF var/icon_state_off = "freezer" var/icon_state_on = "freezer_1" @@ -28,7 +28,10 @@ initialize_directions = dir /obj/machinery/atmospherics/components/unary/thermomachine/on_construction() - ..(dir,dir) + var/obj/item/circuitboard/machine/thermomachine/board = circuit + if(board) + piping_layer = board.pipe_layer + ..(dir, piping_layer) /obj/machinery/atmospherics/components/unary/thermomachine/RefreshParts() var/B @@ -37,12 +40,14 @@ heat_capacity = 5000 * ((B - 1) ** 2) /obj/machinery/atmospherics/components/unary/thermomachine/update_icon() + cut_overlays() if(panel_open) icon_state = icon_state_open else if(on && is_operational()) icon_state = icon_state_on else icon_state = icon_state_off + add_overlay(getpipeimage(icon, "pipe", dir, , piping_layer)) /obj/machinery/atmospherics/components/unary/thermomachine/update_icon_nopipes() cut_overlays() diff --git a/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm b/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm index 75f2a60f80..1143412358 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm @@ -6,9 +6,9 @@ #define RELEASING 1 /obj/machinery/atmospherics/components/unary/vent_pump + icon_state = "vent_map-2" name = "air vent" desc = "Has a valve and pump attached to it." - icon_state = "vent_map" use_power = IDLE_POWER_USE can_unwrench = TRUE welded = FALSE @@ -32,92 +32,6 @@ pipe_state = "uvent" -/obj/machinery/atmospherics/components/unary/vent_pump/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/unary/vent_pump/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/unary/vent_pump/on - on = TRUE - icon_state = "vent_map_on" - -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/unary/vent_pump/siphon - pump_direction = SIPHONING - pressure_checks = INT_BOUND - internal_pressure_bound = 4000 - external_pressure_bound = 0 - -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/on - on = TRUE - icon_state = "vent_map_siphon_on" - -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/on/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/on/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos - frequency = FREQ_ATMOS_STORAGE - on = TRUE - icon_state = "vent_map_siphon_on" - -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/toxin_output - name = "plasma tank output inlet" - id_tag = ATMOS_GAS_MONITOR_OUTPUT_TOX -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/oxygen_output - name = "oxygen tank output inlet" - id_tag = ATMOS_GAS_MONITOR_OUTPUT_O2 -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/nitrogen_output - name = "nitrogen tank output inlet" - id_tag = ATMOS_GAS_MONITOR_OUTPUT_N2 -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/mix_output - name = "mix tank output inlet" - id_tag = ATMOS_GAS_MONITOR_OUTPUT_MIX -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/nitrous_output - name = "nitrous oxide tank output inlet" - id_tag = ATMOS_GAS_MONITOR_OUTPUT_N2O -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/carbon_output - name = "carbon dioxide tank output inlet" - id_tag = ATMOS_GAS_MONITOR_OUTPUT_CO2 -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/incinerator_output - name = "incinerator chamber output inlet" - id_tag = ATMOS_GAS_MONITOR_OUTPUT_INCINERATOR - frequency = FREQ_ATMOS_CONTROL -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/toxins_mixing_output - name = "toxins mixing output inlet" - id_tag = ATMOS_GAS_MONITOR_OUTPUT_TOXINS_LAB - frequency = FREQ_ATMOS_CONTROL - /obj/machinery/atmospherics/components/unary/vent_pump/New() ..() if(!id_tag) @@ -133,82 +47,12 @@ radio_connection = null return ..() -/obj/machinery/atmospherics/components/unary/vent_pump/high_volume - name = "large air vent" - power_channel = EQUIP - -/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/on - on = TRUE - icon_state = "vent_map_on" - -/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/on/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/on/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon - pump_direction = SIPHONING - pressure_checks = INT_BOUND - internal_pressure_bound = 2000 - external_pressure_bound = 0 - -/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/on - on = TRUE - icon_state = "vent_map_siphon_on" - -/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/on/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/on/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/atmos - frequency = FREQ_ATMOS_STORAGE - on = TRUE - icon_state = "vent_map_siphon_on" - -/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/atmos/air_output - name = "air mix tank output inlet" - id_tag = ATMOS_GAS_MONITOR_OUTPUT_AIR - -/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/New() - ..() - var/datum/gas_mixture/air_contents = airs[1] - air_contents.volume = 1000 - /obj/machinery/atmospherics/components/unary/vent_pump/update_icon_nopipes() cut_overlays() if(showpipe) - add_overlay(getpipeimage(icon, "vent_cap", initialize_directions)) + var/image/cap = getpipeimage(icon, "vent_cap", initialize_directions) + PIPING_LAYER_SHIFT(cap, piping_layer) + add_overlay(cap) if(welded) icon_state = "vent_welded" @@ -445,6 +289,149 @@ pipe_vision_img.plane = ABOVE_HUD_PLANE playsound(loc, 'sound/weapons/bladeslice.ogg', 100, 1) +/obj/machinery/atmospherics/components/unary/vent_pump/high_volume + name = "large air vent" + power_channel = EQUIP + +/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/New() + ..() + var/datum/gas_mixture/air_contents = airs[1] + air_contents.volume = 1000 + +// mapping + +/obj/machinery/atmospherics/components/unary/vent_pump/layer1 + piping_layer = 1 + icon_state = "vent_map-1" + +/obj/machinery/atmospherics/components/unary/vent_pump/layer3 + piping_layer = 3 + icon_state = "vent_map-3" + +/obj/machinery/atmospherics/components/unary/vent_pump/on + on = TRUE + icon_state = "vent_map_on-2" + +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer1 + piping_layer = 1 + icon_state = "vent_map_on-1" + +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer3 + piping_layer = 3 + icon_state = "vent_map_on-3" + +/obj/machinery/atmospherics/components/unary/vent_pump/siphon + pump_direction = SIPHONING + pressure_checks = INT_BOUND + internal_pressure_bound = 4000 + external_pressure_bound = 0 + +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/layer1 + piping_layer = 1 + icon_state = "vent_map-1" + +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/layer3 + piping_layer = 3 + icon_state = "vent_map-3" + +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/on + on = TRUE + icon_state = "vent_map_siphon_on-2" + +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/on/layer1 + piping_layer = 1 + icon_state = "vent_map_siphon_on-1" + +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/on/layer3 + piping_layer = 3 + icon_state = "vent_map_siphon_on-3" + +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos + frequency = FREQ_ATMOS_STORAGE + on = TRUE + icon_state = "vent_map_siphon_on-2" + +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/toxin_output + name = "plasma tank output inlet" + id_tag = ATMOS_GAS_MONITOR_OUTPUT_TOX +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/oxygen_output + name = "oxygen tank output inlet" + id_tag = ATMOS_GAS_MONITOR_OUTPUT_O2 +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/nitrogen_output + name = "nitrogen tank output inlet" + id_tag = ATMOS_GAS_MONITOR_OUTPUT_N2 +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/mix_output + name = "mix tank output inlet" + id_tag = ATMOS_GAS_MONITOR_OUTPUT_MIX +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/nitrous_output + name = "nitrous oxide tank output inlet" + id_tag = ATMOS_GAS_MONITOR_OUTPUT_N2O +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/carbon_output + name = "carbon dioxide tank output inlet" + id_tag = ATMOS_GAS_MONITOR_OUTPUT_CO2 +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/incinerator_output + name = "incinerator chamber output inlet" + id_tag = ATMOS_GAS_MONITOR_OUTPUT_INCINERATOR + frequency = FREQ_ATMOS_CONTROL +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/toxins_mixing_output + name = "toxins mixing output inlet" + id_tag = ATMOS_GAS_MONITOR_OUTPUT_TOXINS_LAB + frequency = FREQ_ATMOS_CONTROL + +/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/layer1 + piping_layer = 1 + icon_state = "vent_map-1" + +/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/layer3 + piping_layer = 3 + icon_state = "map_vent-3" + +/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/on + on = TRUE + icon_state = "vent_map_on-2" + +/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/on/layer1 + piping_layer = 1 + icon_state = "vent_map_on-1" + +/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/on/layer3 + piping_layer = 3 + icon_state = "map_vent_on-3" + +/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon + pump_direction = SIPHONING + pressure_checks = INT_BOUND + internal_pressure_bound = 2000 + external_pressure_bound = 0 + +/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/layer1 + piping_layer = 1 + icon_state = "vent_map-1" + +/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/layer3 + piping_layer = 3 + icon_state = "map_vent-3" + +/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/on + on = TRUE + icon_state = "vent_map_siphon_on-2" + +/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/on/layer1 + piping_layer = 1 + icon_state = "vent_map_siphon_on-1" + +/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/on/layer3 + piping_layer = 3 + icon_state = "vent_map_siphon_on-3" + +/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/atmos + frequency = FREQ_ATMOS_STORAGE + on = TRUE + icon_state = "vent_map_siphon_on-2" + +/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/atmos/air_output + name = "air mix tank output inlet" + id_tag = ATMOS_GAS_MONITOR_OUTPUT_AIR #undef INT_BOUND #undef EXT_BOUND diff --git a/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm b/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm index 9c3d07c96a..ffcaa7cc04 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm @@ -2,9 +2,9 @@ #define SCRUBBING 1 /obj/machinery/atmospherics/components/unary/vent_scrubber + icon_state = "scrub_map-2" name = "air scrubber" desc = "Has a valve and pump attached to it." - icon_state = "scrub_map" use_power = IDLE_POWER_USE idle_power_usage = 10 active_power_usage = 60 @@ -28,16 +28,6 @@ pipe_state = "scrubber" -/obj/machinery/atmospherics/components/unary/vent_scrubber/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/unary/vent_scrubber/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - /obj/machinery/atmospherics/components/unary/vent_scrubber/New() ..() if(!id_tag) @@ -48,20 +38,6 @@ filter_types -= f filter_types += gas_id2path(f) -/obj/machinery/atmospherics/components/unary/vent_scrubber/on - on = TRUE - icon_state = "scrub_map_on" - -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - /obj/machinery/atmospherics/components/unary/vent_scrubber/Destroy() var/area/A = get_area(src) if (A) @@ -92,7 +68,9 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/update_icon_nopipes() cut_overlays() if(showpipe) - add_overlay(getpipeimage(icon, "scrub_cap", initialize_directions)) + var/image/cap = getpipeimage(icon, "scrub_cap", initialize_directions) + PIPING_LAYER_SHIFT(cap, piping_layer) + add_overlay(cap) if(welded) icon_state = "scrub_welded" @@ -322,7 +300,25 @@ pipe_vision_img.plane = ABOVE_HUD_PLANE playsound(loc, 'sound/weapons/bladeslice.ogg', 100, 1) +/obj/machinery/atmospherics/components/unary/vent_scrubber/layer1 + piping_layer = 1 + icon_state = "scrub_map-1" +/obj/machinery/atmospherics/components/unary/vent_scrubber/layer3 + piping_layer = 3 + icon_state = "scrub_map-3" + +/obj/machinery/atmospherics/components/unary/vent_scrubber/on + on = TRUE + icon_state = "scrub_map_on-2" + +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer1 + piping_layer = 1 + icon_state = "scrub_map_on-1" + +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3 + piping_layer = 3 + icon_state = "scrub_map_on-3" #undef SIPHONING #undef SCRUBBING diff --git a/code/modules/atmospherics/machinery/other/meter.dm b/code/modules/atmospherics/machinery/other/meter.dm index eb7d9534c1..fab70cc168 100644 --- a/code/modules/atmospherics/machinery/other/meter.dm +++ b/code/modules/atmospherics/machinery/other/meter.dm @@ -50,10 +50,9 @@ target = candidate setAttachLayer(candidate.piping_layer) -/obj/machinery/meter/proc/setAttachLayer(var/new_layer) +/obj/machinery/meter/proc/setAttachLayer(new_layer) target_layer = new_layer - pixel_x = (new_layer - PIPING_LAYER_DEFAULT) * PIPING_LAYER_P_X - pixel_y = (new_layer - PIPING_LAYER_DEFAULT) * PIPING_LAYER_P_Y + PIPING_LAYER_DOUBLE_SHIFT(src, target_layer) /obj/machinery/meter/process_atmos() if(!(target?.flags_1 & INITIALIZED_1)) diff --git a/code/modules/atmospherics/machinery/pipes/heat_exchange/he_pipes.dm b/code/modules/atmospherics/machinery/pipes/heat_exchange/he_pipes.dm index b087859a47..4da053d3c8 100644 --- a/code/modules/atmospherics/machinery/pipes/heat_exchange/he_pipes.dm +++ b/code/modules/atmospherics/machinery/pipes/heat_exchange/he_pipes.dm @@ -1,5 +1,4 @@ /obj/machinery/atmospherics/pipe/heat_exchanging - icon = 'icons/obj/atmospherics/pipes/heat.dmi' level = 2 var/minimum_temperature_difference = 20 var/thermal_conductivity = WINDOW_HEAT_TRANSFER_COEFFICIENT diff --git a/code/modules/atmospherics/machinery/pipes/heat_exchange/junction.dm b/code/modules/atmospherics/machinery/pipes/heat_exchange/junction.dm index 606693ddda..695cb61f51 100644 --- a/code/modules/atmospherics/machinery/pipes/heat_exchange/junction.dm +++ b/code/modules/atmospherics/machinery/pipes/heat_exchange/junction.dm @@ -1,6 +1,6 @@ /obj/machinery/atmospherics/pipe/heat_exchanging/junction - icon = 'icons/obj/atmospherics/pipes/junction.dmi' - icon_state = "intact" + icon = 'icons/obj/atmospherics/pipes/he-junction.dmi' + icon_state = "pipe11-2" name = "junction" desc = "A one meter junction that connects regular and heat-exchanging pipe." @@ -15,21 +15,11 @@ construction_type = /obj/item/pipe/directional pipe_state = "junction" -/obj/machinery/atmospherics/pipe/heat_exchanging/junction/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/heat_exchanging/junction/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - /obj/machinery/atmospherics/pipe/heat_exchanging/junction/SetInitDirections() switch(dir) - if(NORTH,SOUTH) + if(NORTH, SOUTH) initialize_directions = SOUTH|NORTH - if(EAST,WEST) + if(EAST, WEST) initialize_directions = WEST|EAST /obj/machinery/atmospherics/pipe/heat_exchanging/junction/getNodeConnects() @@ -37,5 +27,19 @@ /obj/machinery/atmospherics/pipe/heat_exchanging/junction/isConnectable(obj/machinery/atmospherics/target, given_layer, he_type_check) if(dir == get_dir(target, src)) - return ..(target, given_layer, FALSE) //we want a normal pipe instead + return ..(target, given_layer, FALSE) //we want a normal pipe instead return ..(target, given_layer, TRUE) + +/obj/machinery/atmospherics/pipe/heat_exchanging/junction/update_icon() + icon_state = "pipe[nodes[1] ? "1" : "0"][nodes[2] ? "1" : "0"]-[piping_layer]" + update_layer() + update_alpha() + + +/obj/machinery/atmospherics/pipe/heat_exchanging/junction/layer1 + piping_layer = 1 + icon_state = "pipe11-1" + +/obj/machinery/atmospherics/pipe/heat_exchanging/junction/layer3 + piping_layer = 3 + icon_state = "pipe11-3" \ No newline at end of file diff --git a/code/modules/atmospherics/machinery/pipes/heat_exchange/manifold.dm b/code/modules/atmospherics/machinery/pipes/heat_exchange/manifold.dm index 6689905cf7..e8704b4c40 100644 --- a/code/modules/atmospherics/machinery/pipes/heat_exchange/manifold.dm +++ b/code/modules/atmospherics/machinery/pipes/heat_exchange/manifold.dm @@ -1,4 +1,4 @@ -//3-way manifold +//3-Way Manifold /obj/machinery/atmospherics/pipe/heat_exchanging/manifold icon_state = "manifold" @@ -13,74 +13,34 @@ construction_type = /obj/item/pipe/trinary pipe_state = "he_manifold" -/obj/machinery/atmospherics/pipe/heat_exchanging/manifold/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y + var/mutable_appearance/center -/obj/machinery/atmospherics/pipe/heat_exchanging/manifold/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y +/obj/machinery/atmospherics/pipe/manifold/Initialize() + icon_state = "" + center = mutable_appearance(icon, "manifold_center") + return ..() /obj/machinery/atmospherics/pipe/heat_exchanging/manifold/SetInitDirections() - switch(dir) - if(NORTH) - initialize_directions = EAST|SOUTH|WEST - if(SOUTH) - initialize_directions = WEST|NORTH|EAST - if(EAST) - initialize_directions = SOUTH|WEST|NORTH - if(WEST) - initialize_directions = NORTH|EAST|SOUTH + initialize_directions = NORTH|SOUTH|EAST|WEST + initialize_directions &= ~dir /obj/machinery/atmospherics/pipe/heat_exchanging/manifold/update_icon() - var/invis = invisibility ? "-f" : "" - - icon_state = "manifold_center[invis]" - cut_overlays() + PIPING_LAYER_DOUBLE_SHIFT(center, piping_layer) + add_overlay(center) //Add non-broken pieces for(var/i in 1 to device_type) if(nodes[i]) - add_overlay(getpipeimage('icons/obj/atmospherics/pipes/heat.dmi', "manifold_intact[invis]", get_dir(src, nodes[i]))) + add_overlay( getpipeimage(icon, "pipe-[piping_layer]", get_dir(src, nodes[i])) ) -//4-way manifold -/obj/machinery/atmospherics/pipe/heat_exchanging/manifold4w - icon_state = "manifold4w" + update_layer() + update_alpha() - name = "4-way pipe manifold" - desc = "A manifold composed of heat-exchanging pipes." +/obj/machinery/atmospherics/pipe/heat_exchanging/manifold/layer1 + piping_layer = 1 + icon_state = "manifold-1" - initialize_directions = NORTH|SOUTH|EAST|WEST - - device_type = QUATERNARY - - construction_type = /obj/item/pipe/quaternary - pipe_state = "he_manifold4w" - -/obj/machinery/atmospherics/pipe/heat_exchanging/manifold4w/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/heat_exchanging/manifold4w/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/heat_exchanging/manifold4w/SetInitDirections() - initialize_directions = initial(initialize_directions) - -/obj/machinery/atmospherics/pipe/heat_exchanging/manifold4w/update_icon() - var/invis = invisibility ? "-f" : "" - - icon_state = "manifold4w_center[invis]" - - cut_overlays() - - //Add non-broken pieces - for(var/i in 1 to device_type) - if(nodes[i]) - add_overlay(getpipeimage('icons/obj/atmospherics/pipes/heat.dmi', "manifold_intact[invis]", get_dir(src, nodes[i]))) +/obj/machinery/atmospherics/pipe/heat_exchanging/manifold/layer3 + piping_layer = 3 + icon_state = "manifold-3" diff --git a/code/modules/atmospherics/machinery/pipes/heat_exchange/manifold4w.dm b/code/modules/atmospherics/machinery/pipes/heat_exchange/manifold4w.dm new file mode 100644 index 0000000000..88086e44e2 --- /dev/null +++ b/code/modules/atmospherics/machinery/pipes/heat_exchange/manifold4w.dm @@ -0,0 +1,48 @@ +//4-Way Manifold + +/obj/machinery/atmospherics/pipe/heat_exchanging/manifold4w + icon = 'icons/obj/atmospherics/pipes/he-manifold.dmi' + icon_state = "manifold4w-2" + + name = "4-way pipe manifold" + desc = "A manifold composed of heat-exchanging pipes." + + initialize_directions = NORTH|SOUTH|EAST|WEST + + device_type = QUATERNARY + + construction_type = /obj/item/pipe/quaternary + pipe_state = "he_manifold4w" + + var/mutable_appearance/center + +/obj/machinery/atmospherics/pipe/heat_exchanging/manifold4w/New() + icon_state = "" + center = mutable_appearance(icon, "manifold4w_center") + return ..() + +/obj/machinery/atmospherics/pipe/heat_exchanging/manifold4w/SetInitDirections() + initialize_directions = initial(initialize_directions) + +/obj/machinery/atmospherics/pipe/heat_exchanging/manifold4w/update_icon() + cut_overlays() + + PIPING_LAYER_DOUBLE_SHIFT(center, piping_layer) + add_overlay(center) + + //Add non-broken pieces + for(var/i in 1 to device_type) + if(nodes[i]) + add_overlay( getpipeimage(icon, "pipe-[piping_layer]", get_dir(src, nodes[i])) ) + + update_layer() + update_alpha() + + +/obj/machinery/atmospherics/pipe/heat_exchanging/manifold4w/layer1 + piping_layer = 1 + icon_state = "manifold4w-1" + +/obj/machinery/atmospherics/pipe/heat_exchanging/manifold4w/layer3 + piping_layer = 3 + icon_state = "manifold4w-3" diff --git a/code/modules/atmospherics/machinery/pipes/heat_exchange/simple.dm b/code/modules/atmospherics/machinery/pipes/heat_exchange/simple.dm index ad137a227d..3397e75314 100644 --- a/code/modules/atmospherics/machinery/pipes/heat_exchange/simple.dm +++ b/code/modules/atmospherics/machinery/pipes/heat_exchange/simple.dm @@ -1,46 +1,38 @@ /obj/machinery/atmospherics/pipe/heat_exchanging/simple - icon_state = "intact" + icon = 'icons/obj/atmospherics/pipes/he-simple.dmi' + icon_state = "pipe11-2" name = "pipe" desc = "A one meter section of heat-exchanging pipe." dir = SOUTH initialize_directions = SOUTH|NORTH + pipe_flags = PIPING_CARDINAL_AUTONORMALIZE device_type = BINARY construction_type = /obj/item/pipe/binary/bendable pipe_state = "he" -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - /obj/machinery/atmospherics/pipe/heat_exchanging/simple/SetInitDirections() if(dir in GLOB.diagonals) initialize_directions = dir + return switch(dir) - if(NORTH,SOUTH) + if(NORTH, SOUTH) initialize_directions = SOUTH|NORTH - if(EAST,WEST) - initialize_directions = WEST|EAST - -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/proc/normalize_dir() - if(dir==SOUTH) - setDir(NORTH) - else if(dir==WEST) - setDir(EAST) - -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/atmosinit() - normalize_dir() - ..() + if(EAST, WEST) + initialize_directions = EAST|WEST /obj/machinery/atmospherics/pipe/heat_exchanging/simple/update_icon() - normalize_dir() - ..() + icon_state = "pipe[nodes[1] ? "1" : "0"][nodes[2] ? "1" : "0"]-[piping_layer]" + update_layer() + update_alpha() + +/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer1 + piping_layer = 1 + icon_state = "pipe11-1" + +/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer3 + piping_layer = 3 + icon_state = "pipe11-3" \ No newline at end of file diff --git a/code/modules/atmospherics/machinery/pipes/layermanifold.dm b/code/modules/atmospherics/machinery/pipes/layermanifold.dm index acafc7436a..39e3313da2 100644 --- a/code/modules/atmospherics/machinery/pipes/layermanifold.dm +++ b/code/modules/atmospherics/machinery/pipes/layermanifold.dm @@ -1,5 +1,5 @@ /obj/machinery/atmospherics/pipe/layer_manifold - name = "pipe-layer manifold" + name = "layer adaptor" icon = 'icons/obj/atmospherics/pipes/manifold.dmi' icon_state = "manifoldlayer" desc = "A special pipe to bridge pipe layers with." @@ -9,14 +9,15 @@ piping_layer = PIPING_LAYER_DEFAULT device_type = 0 volume = 260 + construction_type = /obj/item/pipe/binary + pipe_state = "manifoldlayer" var/list/front_nodes var/list/back_nodes - construction_type = /obj/item/pipe/binary - pipe_state = "layer_manifold" /obj/machinery/atmospherics/pipe/layer_manifold/Initialize() front_nodes = list() back_nodes = list() + icon_state = "manifoldlayer_center" return ..() /obj/machinery/atmospherics/pipe/layer_manifold/Destroy() @@ -36,30 +37,36 @@ return front_nodes + back_nodes + nodes /obj/machinery/atmospherics/pipe/layer_manifold/update_icon() //HEAVILY WIP FOR UPDATE ICONS!! - layer = (initial(layer) + (PIPING_LAYER_MAX * PIPING_LAYER_LCHANGE)) //This is above everything else. - var/invis = invisibility ? "-f" : "" - icon_state = "[initial(icon_state)][invis]" cut_overlays() - for(var/obj/machinery/atmospherics/A in front_nodes) - add_attached_image(A) - for(var/obj/machinery/atmospherics/A in back_nodes) - add_attached_image(A) + layer = initial(layer) + (PIPING_LAYER_MAX * PIPING_LAYER_LCHANGE) //This is above everything else. -/obj/machinery/atmospherics/pipe/layer_manifold/proc/add_attached_image(obj/machinery/atmospherics/A) - var/invis = A.invisibility ? "-f" : "" + for(var/node in front_nodes) + add_attached_images(node) + for(var/node in back_nodes) + add_attached_images(node) + + update_alpha() + +/obj/machinery/atmospherics/pipe/layer_manifold/proc/add_attached_images(obj/machinery/atmospherics/A) + if(!A) + return if(istype(A, /obj/machinery/atmospherics/pipe/layer_manifold)) - for(var/i = PIPING_LAYER_MIN, i <= PIPING_LAYER_MAX, i++) - var/image/I = getpipeimage('icons/obj/atmospherics/pipes/manifold.dmi', "manifold_full_layer_long[invis]", get_dir(src, A), A.pipe_color) - I.pixel_x = (i - PIPING_LAYER_DEFAULT) * PIPING_LAYER_P_X - I.pixel_y = (i - PIPING_LAYER_DEFAULT) * PIPING_LAYER_P_Y - I.layer = layer - 0.01 - add_overlay(I) + for(var/i in PIPING_LAYER_MIN to PIPING_LAYER_MAX) + add_attached_image(get_dir(src, A), i) + return + add_attached_image(get_dir(src, A), A.piping_layer, A.pipe_color) + +/obj/machinery/atmospherics/pipe/layer_manifold/proc/add_attached_image(p_dir, p_layer, p_color = null) + var/image/I + + if(p_color) + I = getpipeimage(icon, "pipe", p_dir, p_color) else - var/image/I = getpipeimage('icons/obj/atmospherics/pipes/manifold.dmi', "manifold_full_layer_long[invis]", get_dir(src, A), A.pipe_color) - I.pixel_x = A.pixel_x - I.pixel_y = A.pixel_y - I.layer = layer - 0.01 - add_overlay(I) + I = getpipeimage(icon, "pipe", p_dir) + + I.layer = layer - 0.01 + PIPING_LAYER_SHIFT(I, p_layer) + add_overlay(I) /obj/machinery/atmospherics/pipe/layer_manifold/SetInitDirections() switch(dir) diff --git a/code/modules/atmospherics/machinery/pipes/manifold.dm b/code/modules/atmospherics/machinery/pipes/manifold.dm index b089ebfa0a..77452fd6fd 100644 --- a/code/modules/atmospherics/machinery/pipes/manifold.dm +++ b/code/modules/atmospherics/machinery/pipes/manifold.dm @@ -1,9 +1,8 @@ -/* -3-Way Manifold -*/ +//3-Way Manifold + /obj/machinery/atmospherics/pipe/manifold icon = 'icons/obj/atmospherics/pipes/manifold.dmi' - icon_state = "manifold" + icon_state = "manifold-2" name = "pipe manifold" desc = "A manifold composed of regular pipes." @@ -16,399 +15,25 @@ construction_type = /obj/item/pipe/trinary pipe_state = "manifold" + var/mutable_appearance/center + +/obj/machinery/atmospherics/pipe/manifold/Initialize() + icon_state = "" + center = mutable_appearance(icon, "manifold_center") + return ..() + /obj/machinery/atmospherics/pipe/manifold/SetInitDirections() - switch(dir) - if(NORTH) - initialize_directions = EAST|SOUTH|WEST - if(SOUTH) - initialize_directions = WEST|NORTH|EAST - if(EAST) - initialize_directions = SOUTH|WEST|NORTH - if(WEST) - initialize_directions = NORTH|EAST|SOUTH + initialize_directions = NORTH|SOUTH|EAST|WEST + initialize_directions &= ~dir /obj/machinery/atmospherics/pipe/manifold/update_icon() - var/invis = invisibility ? "-f" : "" - - icon_state = "manifold_center[invis]" - cut_overlays() + PIPING_LAYER_DOUBLE_SHIFT(center, piping_layer) + add_overlay(center) //Add non-broken pieces for(var/i in 1 to device_type) if(nodes[i]) - add_overlay(getpipeimage('icons/obj/atmospherics/pipes/manifold.dmi', "manifold_full[invis]", get_dir(src, nodes[i]))) - -//Colored pipes, use these for mapping -/obj/machinery/atmospherics/pipe/manifold/general - -/obj/machinery/atmospherics/pipe/manifold/general/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/manifold/general/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/general/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/general/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/manifold/general/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/general/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/scrubbers - name="scrubbers pipe" - pipe_color=rgb(255,0,0) - color=rgb(255,0,0) - -/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/supply - name="air supply pipe" - pipe_color=rgb(0,0,255) - color=rgb(0,0,255) - -/obj/machinery/atmospherics/pipe/manifold/supply/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/supply/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/supplymain - name="main air supply pipe" - pipe_color=rgb(130,43,255) - color=rgb(130,43,255) - -/obj/machinery/atmospherics/pipe/manifold/supplymain/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/manifold/supplymain/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/supplymain/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/supplymain/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/manifold/supplymain/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/supplymain/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/yellow - pipe_color=rgb(255,198,0) - color=rgb(255,198,0) - -/obj/machinery/atmospherics/pipe/manifold/yellow/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/manifold/yellow/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/yellow/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/yellow/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/manifold/yellow/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/yellow/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/cyan - pipe_color=rgb(0,255,249) - color=rgb(0,255,249) - -/obj/machinery/atmospherics/pipe/manifold/cyan/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/manifold/cyan/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/cyan/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/cyan/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/manifold/cyan/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/cyan/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/green - pipe_color=rgb(30,255,0) - color=rgb(30,255,0) - -/obj/machinery/atmospherics/pipe/manifold/green/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/manifold/green/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/green/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/green/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/manifold/green/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/green/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/orange - pipe_color=rgb(255,129,25) - color=rgb(255,129,25) - -/obj/machinery/atmospherics/pipe/manifold/orange/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/manifold/orange/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/orange/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/orange/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/manifold/orange/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/orange/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/purple - pipe_color=rgb(128,0,182) - color=rgb(128,0,182) - -/obj/machinery/atmospherics/pipe/manifold/purple/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/manifold/purple/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/purple/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/purple/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/manifold/purple/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/purple/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/dark - pipe_color=rgb(69,69,69) - color=rgb(69,69,69) - -/obj/machinery/atmospherics/pipe/manifold/dark/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/manifold/dark/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/dark/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/dark/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/manifold/dark/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/dark/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/violet - pipe_color=rgb(64,0,128) - color=rgb(64,0,128) - -/obj/machinery/atmospherics/pipe/manifold/violet/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/manifold/violet/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/violet/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/violet/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/manifold/violet/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/violet/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/brown - pipe_color=rgb(178,100,56) - color=rgb(178,100,56) - -/obj/machinery/atmospherics/pipe/manifold/brown/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/manifold/brown/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/brown/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/brown/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/manifold/brown/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/brown/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y + add_overlay( getpipeimage(icon, "pipe-[piping_layer]", get_dir(src, nodes[i])) ) + update_layer() + update_alpha() \ No newline at end of file diff --git a/code/modules/atmospherics/machinery/pipes/manifold4w.dm b/code/modules/atmospherics/machinery/pipes/manifold4w.dm index 5dc68f1609..1bcca8d5ae 100644 --- a/code/modules/atmospherics/machinery/pipes/manifold4w.dm +++ b/code/modules/atmospherics/machinery/pipes/manifold4w.dm @@ -1,9 +1,8 @@ -/* -4-way manifold -*/ +//4-Way Manifold + /obj/machinery/atmospherics/pipe/manifold4w icon = 'icons/obj/atmospherics/pipes/manifold.dmi' - icon_state = "manifold4w" + icon_state = "manifold4w-2" name = "4-way pipe manifold" desc = "A manifold composed of regular pipes." @@ -15,391 +14,24 @@ construction_type = /obj/item/pipe/quaternary pipe_state = "manifold4w" + var/mutable_appearance/center + +/obj/machinery/atmospherics/pipe/manifold4w/Initialize() + icon_state = "" + center = mutable_appearance(icon, "manifold4w_center") + return ..() + /obj/machinery/atmospherics/pipe/manifold4w/SetInitDirections() initialize_directions = initial(initialize_directions) /obj/machinery/atmospherics/pipe/manifold4w/update_icon() - var/invis = invisibility ? "-f" : "" - - icon_state = "manifold4w_center[invis]" - cut_overlays() + PIPING_LAYER_DOUBLE_SHIFT(center, piping_layer) + add_overlay(center) //Add non-broken pieces for(var/i in 1 to device_type) if(nodes[i]) - add_overlay(getpipeimage('icons/obj/atmospherics/pipes/manifold.dmi', "manifold_full[invis]", get_dir(src, nodes[i]))) - -//Colored pipes, use these for mapping -/obj/machinery/atmospherics/pipe/manifold4w/general - -/obj/machinery/atmospherics/pipe/manifold4w/general/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/manifold4w/general/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/general/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/general/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/manifold4w/general/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/general/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/scrubbers - name="scrubbers pipe" - pipe_color=rgb(255,0,0) - color=rgb(255,0,0) - -/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/supply - name="air supply pipe" - pipe_color=rgb(0,0,255) - color=rgb(0,0,255) - -/obj/machinery/atmospherics/pipe/manifold4w/supply/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/manifold4w/supply/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/supply/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/supplymain - name="main air supply pipe" - pipe_color=rgb(130,43,255) - color=rgb(130,43,255) - -/obj/machinery/atmospherics/pipe/manifold4w/supplymain/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/manifold4w/supplymain/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/supplymain/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/supplymain/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/manifold4w/supplymain/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/supplymain/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/yellow - pipe_color=rgb(255,198,0) - color=rgb(255,198,0) - -/obj/machinery/atmospherics/pipe/manifold4w/yellow/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/manifold4w/yellow/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/yellow/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/yellow/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/manifold4w/yellow/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/yellow/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/cyan - pipe_color=rgb(0,255,249) - color=rgb(0,255,249) - -/obj/machinery/atmospherics/pipe/manifold4w/cyan/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/manifold4w/cyan/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/cyan/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/cyan/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/manifold4w/cyan/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/cyan/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/green - pipe_color=rgb(30,255,0) - color=rgb(30,255,0) - -/obj/machinery/atmospherics/pipe/manifold4w/green/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/manifold4w/green/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/green/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/green/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/manifold4w/green/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/green/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/orange - pipe_color=rgb(255,129,25) - color=rgb(255,129,25) - -/obj/machinery/atmospherics/pipe/manifold4w/orange/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/manifold4w/orange/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/orange/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/orange/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/manifold4w/orange/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/orange/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/purple - pipe_color=rgb(128,0,182) - color=rgb(128,0,182) - -/obj/machinery/atmospherics/pipe/manifold4w/purple/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/manifold4w/purple/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/purple/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/purple/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/manifold4w/purple/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/purple/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/dark - pipe_color=rgb(69,69,69) - color=rgb(69,69,69) - -/obj/machinery/atmospherics/pipe/manifold4w/dark/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/manifold4w/dark/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/dark/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/dark/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/manifold4w/dark/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/dark/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/violet - pipe_color=rgb(64,0,128) - color=rgb(64,0,128) - -/obj/machinery/atmospherics/pipe/manifold4w/violet/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/manifold4w/violet/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/violet/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/violet/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/manifold4w/violet/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/violet/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/brown - pipe_color=rgb(178,100,56) - color=rgb(178,100,56) - -/obj/machinery/atmospherics/pipe/manifold4w/brown/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/manifold4w/brown/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/brown/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/brown/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/manifold4w/brown/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/brown/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y + add_overlay( getpipeimage(icon, "pipe-[piping_layer]", get_dir(src, nodes[i])) ) + update_layer() + update_alpha() \ No newline at end of file diff --git a/code/modules/atmospherics/machinery/pipes/mapping.dm b/code/modules/atmospherics/machinery/pipes/mapping.dm new file mode 100644 index 0000000000..c868d377ea --- /dev/null +++ b/code/modules/atmospherics/machinery/pipes/mapping.dm @@ -0,0 +1,65 @@ +//Colored pipes, use these for mapping + +#define HELPER_PARTIAL(Fulltype, Iconbase, Color) \ + ##Fulltype { \ + pipe_color = Color; \ + color = Color; \ + } \ + ##Fulltype/visible { \ + level = PIPE_VISIBLE_LEVEL; \ + layer = GAS_PIPE_VISIBLE_LAYER; \ + } \ + ##Fulltype/visible/layer1 { \ + piping_layer = 1; \ + icon_state = Iconbase + "-1"; \ + } \ + ##Fulltype/visible/layer3 { \ + piping_layer = 3; \ + icon_state = Iconbase + "-3"; \ + } \ + ##Fulltype/hidden { \ + level = PIPE_HIDDEN_LEVEL; \ + } \ + ##Fulltype/hidden/layer1 { \ + piping_layer = 1; \ + icon_state = Iconbase + "-1"; \ + } \ + ##Fulltype/hidden/layer3 { \ + piping_layer = 3; \ + icon_state = Iconbase + "-3"; \ + } + +#define HELPER_PARTIAL_NAMED(Fulltype, Iconbase, Name, Color) \ + HELPER_PARTIAL(Fulltype, Iconbase, Color) \ + ##Fulltype { \ + name = Name; \ + } + +#define HELPER(Type, Color) \ + HELPER_PARTIAL(/obj/machinery/atmospherics/pipe/simple/##Type, "pipe11", Color) \ + HELPER_PARTIAL(/obj/machinery/atmospherics/pipe/manifold/##Type, "manifold", Color) \ + HELPER_PARTIAL(/obj/machinery/atmospherics/pipe/manifold4w/##Type, "manifold4w", Color) + +#define HELPER_NAMED(Type, Name, Color) \ + HELPER_PARTIAL_NAMED(/obj/machinery/atmospherics/pipe/simple/##Type, "pipe11", Name, Color) \ + HELPER_PARTIAL_NAMED(/obj/machinery/atmospherics/pipe/manifold/##Type, "manifold", Name, Color) \ + HELPER_PARTIAL_NAMED(/obj/machinery/atmospherics/pipe/manifold4w/##Type, "manifold4w", Name, Color) + +HELPER(general, null) +HELPER(yellow, rgb(255, 198, 0)) +HELPER(cyan, rgb(0, 255, 249)) +HELPER(green, rgb(30, 255, 0)) +HELPER(orange, rgb(255, 129, 25)) +HELPER(purple, rgb(128, 0, 182)) +HELPER(dark, rgb(69, 69, 69)) +HELPER(brown, rgb(178, 100, 56)) +HELPER(violet, rgb(64, 0, 128)) + +HELPER_NAMED(scrubbers, "scrubbers pipe", rgb(255, 0, 0)) +HELPER_NAMED(supply, "air supply pipe", rgb(0, 0, 255)) +HELPER_NAMED(supplymain, "main air supply pipe", rgb(130, 43, 255)) + +#undef HELPER_NAMED +#undef HELPER +#undef HELPER_PARTIAL_NAMED +#undef HELPER_PARTIAL diff --git a/code/modules/atmospherics/machinery/pipes/pipes.dm b/code/modules/atmospherics/machinery/pipes/pipes.dm index 0879b30b13..1e513b846c 100644 --- a/code/modules/atmospherics/machinery/pipes/pipes.dm +++ b/code/modules/atmospherics/machinery/pipes/pipes.dm @@ -32,14 +32,6 @@ parent = new parent.build_pipeline(src) -/obj/machinery/atmospherics/pipe/update_icon() //overridden by manifolds - if(nodes[1] && nodes[2]) - icon_state = "intact[invisibility ? "-f" : "" ]" - else - var/have_node1 = nodes[1] ? TRUE : FALSE - var/have_node2 = nodes[2] ? TRUE : FALSE - icon_state = "exposed[have_node1][have_node2][invisibility ? "-f" : "" ]" - /obj/machinery/atmospherics/pipe/atmosinit() var/turf/T = loc // hide if turf is not intact hide(T.intact) @@ -93,6 +85,13 @@ qdel(meter) . = ..() +/obj/machinery/atmospherics/pipe/update_icon() + . = ..() + update_alpha() + +/obj/machinery/atmospherics/pipe/proc/update_alpha() + alpha = invisibility ? 64 : 255 + /obj/machinery/atmospherics/pipe/proc/update_node_icon() for(var/i in 1 to device_type) if(nodes[i]) diff --git a/code/modules/atmospherics/machinery/pipes/simple.dm b/code/modules/atmospherics/machinery/pipes/simple.dm index 7cab3c23dc..c3f62f16cb 100644 --- a/code/modules/atmospherics/machinery/pipes/simple.dm +++ b/code/modules/atmospherics/machinery/pipes/simple.dm @@ -1,11 +1,9 @@ -/* -Simple Pipe -The regular pipe you see everywhere, including bent ones. -*/ +// Simple Pipe +// The regular pipe you see everywhere, including bent ones. /obj/machinery/atmospherics/pipe/simple icon = 'icons/obj/atmospherics/pipes/simple.dmi' - icon_state = "intact" + icon_state = "pipe11-2" name = "pipe" desc = "A one meter section of regular pipe." @@ -20,385 +18,16 @@ The regular pipe you see everywhere, including bent ones. pipe_state = "simple" /obj/machinery/atmospherics/pipe/simple/SetInitDirections() - normalize_cardinal_directions() if(dir in GLOB.diagonals) initialize_directions = dir + return switch(dir) - if(NORTH,SOUTH) + if(NORTH, SOUTH) initialize_directions = SOUTH|NORTH - if(EAST,WEST) + if(EAST, WEST) initialize_directions = EAST|WEST -//Colored pipes, use these for mapping -/obj/machinery/atmospherics/pipe/simple/general - -/obj/machinery/atmospherics/pipe/simple/general/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/simple/general/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/general/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/general/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/simple/general/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/general/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/scrubbers - name="scrubbers pipe" - pipe_color=rgb(255,0,0) - color=rgb(255,0,0) - -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/supply - name="air supply pipe" - pipe_color=rgb(0,0,255) - color=rgb(0,0,255) - -/obj/machinery/atmospherics/pipe/simple/supply/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/simple/supply/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/supply/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/supply/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/supplymain - name="main air supply pipe" - pipe_color=rgb(130,43,255) - color=rgb(130,43,255) - -/obj/machinery/atmospherics/pipe/simple/supplymain/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/simple/supplymain/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/supplymain/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/supplymain/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/simple/supplymain/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/supplymain/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/yellow - pipe_color=rgb(255,198,0) - color=rgb(255,198,0) - -/obj/machinery/atmospherics/pipe/simple/yellow/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/simple/yellow/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/yellow/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/yellow/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/simple/yellow/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/yellow/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/cyan - pipe_color=rgb(0,255,249) - color=rgb(0,255,249) - -/obj/machinery/atmospherics/pipe/simple/cyan/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/simple/cyan/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/cyan/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/cyan/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/simple/cyan/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/cyan/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/green - pipe_color=rgb(30,255,0) - color=rgb(30,255,0) - -/obj/machinery/atmospherics/pipe/simple/green/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/simple/green/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/green/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/green/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/simple/green/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/green/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/orange - pipe_color=rgb(255,129,25) - color=rgb(255,129,25) - -/obj/machinery/atmospherics/pipe/simple/orange/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/simple/orange/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/orange/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/orange/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/simple/orange/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/orange/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/purple - pipe_color=rgb(128,0,182) - color=rgb(128,0,182) - -/obj/machinery/atmospherics/pipe/simple/purple/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/simple/purple/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/purple/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/purple/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/simple/purple/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/purple/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/dark - pipe_color=rgb(69,69,69) - color=rgb(69,69,69) - -/obj/machinery/atmospherics/pipe/simple/dark/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/simple/dark/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/dark/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/dark/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/simple/dark/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/dark/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/violet - pipe_color=rgb(64,0,128) - color=rgb(64,0,128) - -/obj/machinery/atmospherics/pipe/simple/violet/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/simple/violet/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/violet/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/violet/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/simple/violet/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/violet/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/brown - pipe_color=rgb(178,100,56) - color=rgb(178,100,56) - -/obj/machinery/atmospherics/pipe/simple/brown/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/simple/brown/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/brown/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/brown/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/simple/brown/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/brown/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y +/obj/machinery/atmospherics/pipe/simple/update_icon() + icon_state = "pipe[nodes[1] ? "1" : "0"][nodes[2] ? "1" : "0"]-[piping_layer]" + update_layer() + update_alpha() \ No newline at end of file diff --git a/icons/obj/atmospherics/components/binary_devices.dmi b/icons/obj/atmospherics/components/binary_devices.dmi index 9c6a1b6a1f0886b2acc4758e1e35700ce4908171..3b47dddffcfedf35b7c432a2daef2b7d842bc4f3 100644 GIT binary patch literal 41056 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 literal 37683 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%0AHz^0d=f8e!2@!l@jhmvA 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 W_6f7DrBa)G0R210+7((3VgCXXkygwA literal 23517 zcmeFZc{tR4|NlLfL|_w1hj4NoN-4=Z;ES5F5QX9&bMvn00cShFxw z=p0Vl?M+dNVV!L}T}NNz1JaFQ(l=q8H#QeoE)P8q`R2Liwv#OBWhX1YmCnli9KoaZ z#z6D-y10}YGc_mkUXgmuduv+7=S(E%D8;MIyEN?m2}~h19-&GVQ-a-O#)+>3M6}gJ z>kQOL&2iRH=asqA)mY8ltCy|dULO-jBe`m?UfoI`*M4NbT*ZUtg+R_ht|?vB_sv{t zaJs8MT(h%p>c5({F3g%idbVoa^pTnS(T^GDH9+R$%hhiX@~7Uud{bT-v@RB0ila z>sUJ1@^O3{L$8&2db9$M6}H}9+NyiyRTAj8+%ROW&V0o?dL(~&w5ljSpL?jpRMp@A zN;oy!Y}0*`^C)kJ85L=KSjj>(^3qt_jKaHHG)Rxg8EzGR1V&cu#@jAzL_3mC@Ad=7ktG!cKEu%-yg)_&&N&u4l>DAov$orWwRA-lx9 zGCzM$1b=(;+=q@tp3jW@ZnR?J;#%0Jx@bFA3yLt>W2%yp4?}1d5ae9K%p{7Z$+>9m zY)py4y*CQfMdDpzaEMbpS}*1haD3O);McD&he|D=mR$DukJA_EXd_}YbvYwWwYQNq zg~y${itCJ{X5;355HVUk+bf6nyu-cGz&f!$-EQFFA#$8iF!PP+f+Q7e%rAjKfhI;} zq{@XYL)__%9z{A-1WQH57k^$WlgKJq?sG4VB7{^wn3kTqxS6i-ynv0R#+tq|+KvbQ zX4Yh{3Ua&bi7xEAkx_f{1tXb0HN|gmp2Ta?($Z~Am*THqFf5iQzu!Bj$QPy?c|#z- zdGfVg=xnb>qvaV%$uAEzzcJ1|9BCKxit$M8C8AL~!W)rFqeZ8eB+#5-xNCS<;3o+t~O(&+NZs#UtN_jj)X345wzkc!|jU=pW_T5qAdf!WoLgv<~IQH!rQUdF~ zkN47-OM+hvR8^0vrwCkyEu0pP7ll7u4^bv3NyzWsC#*rAAbsV`5Z>!Z2|N$v3cl9| z+fxhwzVgW|G)p+BJ??(I7ttNOz^ry3KHFi}PQQ7w-KFty>NYeBS4=wJQ@D-|sQ>QR zO0%%?MmLgV0|N1iVsNX$(L!{scdT0<5hO&Owr*{av&+1uvATy$hmv5Sqq`Qy?dB{P zZ4I026|W;LZo*lDpSy(d#&ab}a?xFBB_;P|d^+3fj8_+GNbp*k78r&_%4$71%{YELZGx;<6iiEo)Q9(5%U?+;rqaIVPuZOdtyWv=i%oC)NRg3VA{gl;dqlKtm z9kR~r>CmH?oMiMif+NU~IJ$lMN&Yn_FR`h}b0;-@k+lWSiP=dlii%ol?4QG@6QKL)({-HMV} z98%w#Jqj-7eS}R8_pVNjN_xRvKa#U!Q-r7G6V4$T-ndWLT+R84_~5kHMGw6|1mn9z z86q$IVPfKz;nh5!u_M7r3HtoWHo^Wb%V_Ltfi4jRa&T#1Dr2T|Lu^OI;nMe#j@Z}) zY{j^|><#i&qB{d$7|4q@^!MM3-iG7Ne5`IwsPRMz(WE0nFmt1XfGVU=)GC*}gko)2 zMt+*XV;bUix5v7)aqSCBOW!|rBtnY)F_w269c8V??k=5Kl3aM2oRR{5oW@8wFgi#w z({keJW6a*ps@Bg^IJQV?halEzgbM*ZhR;uQxw>20`_iCD(sQ0h8@eyb??I5! zb|_T4EfUFUsYz;%UV!UqDh}X;J~~ijzhwGvt>JoW8vdibK>Hc zFQ;q;R5UeDTu$DY?dHu>%hTngrN9M2ScM4_d)XT&>j!zw}}eq0oeUz)Mw0w3o4 znlAx&TW)7hw$qR`(@5%`lz8}BkE)?HvJN+f36LW@dbFYcOdj1Z&Wk*U(<(Sj7!of> zFe!fID*4fRAfS6Vpu3j~tljkd4r*5a;I34mX*9Op-?`mQjXN<{mygP8KWuOtc2AJB zdM71RgKGKgi;3({msriVW1@*#5-;Z^=^Gku!1mrJo)fb`gMS{~y|7>f^4TgvsQ;eT zlXrfPK5{6`sAayV(Q<#J8m-mIkc93_xO2x*lkDiA&!w!a;hIt0iO=zyy0W)JiD0ni zVa=zv2afd}UK(73SjJ+V2}>vMb3moo>vpxD%U7^FgHq?`{}(bG@Cj3E^dMayf$b*zOv3&{!X)EVIH9pA?Yk z``DlV!gXp- z{5jzjSxhNZuDkIA2Tm(RhyIeV(wQ$PBW3mela<9Uwlm$5v$JI1XB6bWAo_I~%o`1) zOc6>RqykgU78y*)56aQPM5r*rkkkLT6ZPsYd1SHCR|mpTT;Vt|C| zMyRjvRJPuAbj%1y=pkPot4js%vEt5W{;#8>QUMrYfA3Z9ufsm3b1vYn{s?>M(~KM+ z(>zD>^u>!ub(g!olj4H9drw*b*@pGt!w>mdXyrBd@5ElJw8U5WxqBC*4?>t=k{2w*SN(5$x*8BTf_sMS)RB8?P(W|Qn4I*O0xC6{ZGTg zgMEGSZfl3hq4)6EIi!FbsFip2 zcehR%KA3fEoOKKm#F|sDVb-T#*3_hh9cR?~TH=jruhXMof25MLG+Gs>nIRriNP4)S z(HDb(>Ppi6^!c;fOea0H=m53=VHa6A`)pAz*K%YI@%x_)c<|(_O5!PbaOaALG z1J){>??**N#p}Ayemsr$-WE_!i@C;}cLO~UB4A$sB#KdJLt_w{LrVn>LLd1Xxn+AC znV+u$30Q2rc!&RrD12pusI#l<^AFeQ(Bvo!&cFmzcB;b8P!@8ISqy-a@osRqV2Z>cdU*h9;6dEYk|28)d= z$Oc6loadF&uLb0I`bOqnzw@+K4EY$7V_?6G)WH~22(!jnrE|ai{Mm}K`fub+vU%3l z{k>IfiTUWOFuv@cT1FjcnKTi+(wT1RtP>9S)F$NE!G0b;fUEJ__ovVyzj{8tsa!x~ z@cSSV{-E>Ayju7p%wHvoJ0lx&0|T6wSp|sRNlB_+xxFQ(kW&##Js5}!o6L(!+4az! z>3+Ngf8FEmIENs?!##cWGMw9tU`(L{i?C!OeekY0FNdZ5nP|n@(|@Z>Bqd`*oJIxA zYCScMys4_1izXE0s2b}Swi%%?`MXQus!Ff+4>ohSCE89G*FZXNt5)SYC|YrhR>3zT z@%^-$^pz`8UK^Z{Mb@AvU%#64-jFz3M|LGvkw5wQn>R_mGClbHy>|Vka+@yqHpFjX zg1fnEF(1G}XrArO#h5<2T{*|CG z_p{7#x1tt_9xAXi^I@??rS~`l2i#<=bPJP==40%W+A}h+)A1Zh$*C0%Xxs6?IhK@* z7CqfJqOH&0PfGi0uyDnXi>uR(JWOHf>)WUkXT=|l)%oo0ER7_Bf~HsV9iG>i?Z_7R zUL-#JqpaT=vJd;S-zMCU*830>v1Ihc>b# zf{2<%^x#JZ#(EQ6nVKzEac@o>8!VrnpMU!DWv6nv+qB9?D`BN4YwAmxRU6|Z;ZUz+ z%+9gnvD=`hauG)taNq|g;X|TKUFFrQjeGNWoCk5*u#SFy@Uv&^8tn563zk=nPxqTv z%`a-Zs1M5`{}cVuNKTmV&v6Ki&FgMQ5B|y1}vP&^1?>y@~12cqKj*3@0d2BXVlrOi* z-I2qPc!_&_+^ zMP^KMkiIkh5Vjym`ExW(JFK{2HiWIk_me?9>MtUhn9iSAS}l5>H&1SAsPErX4eRY; zo$A)p`*e62R6qkqE1jo2al&n3fa~rkS<~u{|B>p_B;LF)eygg*=4LP(n~2o=b+zX+ z7tdzDyZCnD|%LwHX>9a&hCxqp~&0GrlX>wqK!~`?UZ3J3WLL;DK;mgTG#gW z-`~CjgTdw(7tw~!UPP~wU@o8TrgH<$F+SJS1c3ww1{w=V#eKRv?J`mx2IxY$_wv^V zn?G+8j}U~{@oxhI&5NZ-s@%Enq#+B*zIjPNw9v%0U*o3r^zyoX^QMN2OR3Mw*5WXc z@ABK>;7#E-d%ESikw9dan3%MA1y!zF1gtBkr>8%WaAB=-9=pB#^=&9j@Z*J1b*dv)viS zZ|~4AFE2C81w4_h^I?o8g!K%sBd&nf{mxipr3>nniUs5-74s8cKa&zEpaW`hjME@h z;BjyjH>#YooP&?>g5oyh*@k+u%Oj%we@~&tA3ZjlymkPlSk@7rDf(Ephxj#qBdNhqhoq3=J8+4cgzO zxN!AAtBXNX14@tj;xKNXzkU1I9Cn;%*|2tXdaN*%Mk(j|_VQ?ZzGg<7{-H#9g=LTz zV9B7*{p5 zwzjJANqNjt!ms$JJpb6n8LM0Dw|135$oyk#6k}mw;d-=?kkHPDqL!E!p)GN!fcq?0 zydi!4{qGXE)F12KBh%pQMvURsm)5WW;BF8}K_o-Qq{QS9aR{gV(qgui)sds}W6zcK zt)Cvy8Ymr`{K+-#Tek91i;ER0`6qLF`f+I;@P$01@>rIDy%IjG^9b7pk*)kYk+lUo zgacmSJHh8G>h5>2A@j|Yl+2*9kVmC)Bs4Oto8@-rn7;QqIZfMc#D~?jpFML%2j;iu zsijYp4n<>f;v9o4*Fg*I{;u~2QQPfHp)^nOBd$x!DEIM->5Ms$^dO+xgL>L-FJC;` zF=uN0>^{@ee~FTWkE=i%VcVT9_9TD7OOYpGwwD=iUvokSeLMteyjS$<6$8XeQ}fOn zmWmkgUZ>Y3^Br_ev&;>pJ;lGX)cqIQ<4V#c`|@MFba;eElgG$U3(Wq5`p_LYqR*`o>-p%t+*R_c!gSB!u69_WxK!CbTvr)LNSZ~|wBkSH{Dy|;>hb%q1Q%O%gp_0W=r zoU9@x)|)we;A3-$E=;#jKZR(e;cf3+OSwQVIXh{J4JfIx(-V?Zl}_k?78}pjQw7aB z?cY{a{l4p@z+G2+df?(W(eC00p)}*Ooa?@sJv~}lSuzw&wc%{}m6byxL)~q!-o;Ko zhUM{IyvW5GCnCg@TUBthGyJSP`})o*s@MLaX=U*rSi^)EfbRRTf7+px!z%o)y1KQ|Gg~y*g6C zGcq)kf2`xD#_45lOobG^d|7=u>bjm@h(=z$p9qXkw~#JEi5N7U%SAQSl_`j9DUzn0 zDkqY^6&uHbS69CA#j;$nrQ>J2HQg5TJqpT#htI`WKwP&!S%^WY55MQZcmIQ=L+VJ6 z_G}s<47Yk9O}@xlpwTA@fUm4>ORxY$3qC_h#*8?p8y`h*OwIC4#H##LZ8YAU&#G>? zr6SKFdfO)^o=TYHBu%9wsVtMMDPPl&og0|5h@wA96`rPXxQTuT3v*Bu`_78m6}w>* zAcyejU6!N*{gXa_>$6u#*RST+dcz<);|Y&Do&}Q7e@m2Z%js&2zjVu&yDBN6vlC|S zfbgZwJ>1!`Kwgu-!)+s6UEq`=lGO2jN-vlr5}BH>QLR7fzc%u~oz+BF)2XCmVuA+p z2k!7#C|6;6n#&n5M#|4!@|#p_08)XbhbmmuH&*O`@!cJ5t8|KO+)=L_`=Z)?6#i7y zP?0xLe_vu(iWjNrFg9&&{EE4K^3G)n+?~$f$b=ps6P&RTeSbFZv!~PuXqIxG{`+Y; z+G`!{5l3qZ%4xUcIX-{>JbsKSD=Q0EIXJa1auq^p^##I5Z+mN!4*PS17lT#>IBqhQ z%AA>Kp*~7ZN<2LtLfD-iT#AxuUbUt$I7yn?#k-^qt8X^g~bBvmtBpFLOlXoM5@D> z%tQO!n4QP#ubq!yn_Z7i`ThBhCpN!(2RbD3N~cpXDhsQt?d1Zu%b0?Yh#LYb*RD|j zMZuYPt@7?jb7%4e<2vsWqbIrxF_D^sfLb)|F*7kio|cvhEppAp*XlKPo#pH9W%-2; zxbR?Gx_I$oJ$`pl{+^bW@DuY016T)8DWIZQpMMu6)TpMXcM3h*Jq>K7VzauGREwa~ z!NcbMC)B7F>x8&2W(BP*71vV=<4ZBpSCbJmwQ+*{p}G<5{Kz# z1nNS-xSW(P&#p=7FMRYD)%fZ5K)<0XsDo>jqh5TF&-<{_QS0a$_~Gaiq9eUc1&F|u zx1upjUOgH!$jyNZ#_d#%`zf=GG@volMtijUNic|LEZB~o^Oc#m=>?7fV)ScU_jiut zK5-JFqEC}HwihyA5Zj(VfEPjnL5-t`SvdAL!?^E|&Xm`pM;fC`@;OU<0*6KG8yOuB zuFdE6`l&B`f9j?dkEDNfazqm`IWuIpIN6>S7i%Poi%xu9Z&(e~M$bVA-d_=2J_OkT zQ1HF&@d6W|t@D+Mbx8kYSdf}bb>P9Q6uyure>eQ&$HTf`;z6?K34eq1BFPR4;mtdE zE?HM*=bHz_IA!TujffpCLNpz!JH0W6k`bKCtr|lU45w z$swq_%4Il0X>O#1IgJADF)jI}vKzqJc71t&fBzoLKN~dvKoHb}ogaE0m(Ua`I>#Pb zC3Q`PwVC^3FZu`uu4q9b6hw z--usUT{lXHMJiR$@&8L!Oy!AS)auSLR|~%Durl;`+>M6Xq|Q!SArc=iWyxU)nGn-Q zlgi{Q?UR560JqSEwb$O^@bg`jf};LP7S2 z3j=3S>+PT*8@x~k<2%j7bdEJHQG;{-A6*rawXcq)L<^SoJ9*Z5bU=T+dGjWE5qEbQ ziJ6K5?%^euaT({a+Sadc9sRH~smI%XwFoSYRTphdO-H{cdaBId^O3kOAN>6J`ISxq zy;Ey@5!+j1Ls-yVFjWX{-|18|Z{;G>d73P%%pibH6b0 z0QQK7YQ<$DXYjC?m{^(fnDiLrxX#Z6O*G+&gK)*wKPX70)8Nohic8{bl2*2i)XK7& zm6erN!bg3a&=tJM7(rne5Dr6bc_WZV;7~9b%mEI|OW+vA`7fV==uyNav~i9W{}LIEOHaYp_;&yQ<7AH=K|NzT(}%lfC~1VOFeFeR|@CHq}q? z5&Ik^|3)AD>EqPgdA!KTuUFKdc6~laJ@{;Np%FzzK;f5B5X>kF|B&VZ9GeQSDM9B) z5m2A+PWYc8E@&q@!Y_4qfU(S_7Gq(Ha|wr!+I&<1JGaHFQbIAQFEG!yaOhrbgC4l) zU#y=w#44Z+uC!Dg;~&wGi%5LYY_H|dzXY&OCJ0x3$Ju!nRJ=s*3u8O$EBXrL z*}hX00L~PMJAD<+rxk_Ut`RWpP~tT_0gbPo0nVNSo_QA3z?pOxB0%HvlAgbM6$_S_ z@6-5))dVf>L{Cr8=snhPUz4)iM-*};E_zEyf#u52Oy#cvVn>rMuvwbn1zWud5dD zWnUz13=O%ny^l@GkR^F{4({xDRw6M@;G67tUth3p=V*b)^J9Iuv=)R$I&=pMkkjX; zA0NwhJ_PRd(nE`mGDWr0C`9kk42T`dG5@@z0H;2jh`KR@n2dF1ZsUs=x_ z0-Aith5TmX8jrZm*`I!RKPh3bK-&>7FjcqgVogk3E%SW8o9iz@nk}a3KXe#({Sh=> z#F|$g=4kt5=jS3okxq*mAE7%&sF}+q`Ec2Kt|v>R8E!;)b0*tQXbIAx)MK$I2_jq1tL^ChY zocvRo*_aruOoikOPf>@psPV~id_(_MW7i+yeu}gv+KBhjYitu+9}(mIh~Qax#{n>K z-Yddv>Ui(%aaIjmyaM0rf7_bEEzDnMNJ?J+EYVmfw>Nq6x;-vWJ@v8);Ikslgv}_7 zP~LHGgo2%1Mn;AhK|K}_uU?r|{b4)M*)dCdJ}N*2eJxsw|6gH9deT6#DNNgC6WJ_u z@E`;Z%d7{+oLZRf*rZxVuSMYJvu;VT)29<*dG!h|N;xv)-#)U%F+VG=&(zG2K(Aa` zeSH_}?%Z~p^AttyN8f@0pA8r+X`1F(7zP$7J1n>R$nHFKn*XuKNXKD8@w;End9RKy zqblsQ%YP?l?t|paL6k(fBN*DP7<1ChiBaQWncLO;Sgj&jljYT8lML0NbwoX+--E(i73B^ zY>G_eiW6$e-d)RUwN`g3x7#KM{vK>DF`F?dA^OZwNUmbTC<+ySDoT~=$fD? zbK6t5@@ZyxioTwy<7G)nQhB>MuN85)qSyDEwZ$jNc=;$SB<@FEyCDDj$}Ul?1+>QL z95)!!Dc3zVT3P0lk+Zs=;3Tnq9sQ1tH|8@5hyIXa-1~D?d zocPe}X=O`2A19U0o?GR+8;g^YVII^+3_ijt9B? z#+RT$18HFrmxqO&z9FfMKS<#Ky?hb=F<8%NS9SH{rAWN=16VU(#?K#yx}g` zunmd~`^U$7CR@TsD*Pq-8yiQZ;VlnOSQ%cfKZV~~aVEYGQC3#|mTb(;GqLlRAWl`= zo;yE?;P^zBo#;wMZDaLLCsR8##v*4?*|WglXMH-f)DP5#0U%+ELnUZDF`K08xl+c* zhAX+#(7?<2_=q75Jz=Kzt2=rY7TSu6B*5swieI}BKCq6ETOgH;vPqwHTIMPelgOJU zwC0_f5JJnYFag<2S%BZ~&;yy~v6P z;G%=^GEYu0QNeQI=aZUTDJgBvCCR_&h#JO?bRYyBKvMeOgln2LzW*gd&AtCJmYVJA z157d-o1BIQ>8bV`XgfBzbRJeDZgmS1#|C|so{?c(?K+t|c4sHB{z@{<1AEcV#=yNV zZyW}nz@8Ka91TxWJIT`%d`TYh!|u`M8EYc?r%GWIMZ(H2$<>XSPRSVbfoozbQE()9 zWc~Nm*GK)oiBJzl36kj&!KS!EPqor%6Nm#oL;Gl+Aj5s`X~QZ@k$?_!kLUoc|_jq|Btu6qu7d{wild$t%GMq(FvG3J5Ga~r323v%iWRn+D_)G2Jkh9it6SD)!RgQ_?5Q_M zyL9~NWLM03hS2xCeMkJ}dIjy%D+M3s(EX^du>D6?8xvO{KNv1fxnuJ-ea_eMTyZ}k zC_-X#(*gk)*?~Y4Nw7eDP507Z!4rg&mAjkygWP2Io4xz16p}vB!ZK+ivu+cU)*shF z+er|hD(fiLe*9sONT_t*A;=jt9{MmpM@MXcoFPe(Nc(sfvk~khIT_Z&bhJ7xzojimf{1z>yu1MOmaA`iT2kegO~U1uXc z;YNDd0%e8)utNp}8Bz-~M6ri90kese)K$u=35%X{xc7rki=KXc{J2%!(-mf}7U9Rb z?z@`~L&e4+4(a9+p69zo8;d?SaXFk!V3)(MSv6vX2vHUHA#>jQ+Ks4L4$jZ~sq16g7Q_q>KcSek86 zR5m2(pMYCZH&2v>SrE1I%SSe!)s5HSLa$HS({eK`9Pi!NMip;m)k^jHb?e`8L=OZi7Ta8=!QV zm6hVj>Ug6ci#6N*sxqhiK730&N>E)3@td7%C7c8vDR2~xo7RQY4zT3^u9^7H$t9I+ zta8{7!p%nnpK;6)h@JMn0UAw1SXhHPo{6?G{^o-U^n~N3?tgUT<=1QK>!Zo1+1%WG z{j@lGzQmMS_8wjE%F2Hr{NOK|_W!gKyAJI{@G2J$(qBETvsPyr(3H@J!ZZ(?;v=gs zg=V?WUo`wSvkJJ|B}vKom?7T0>e*67Ca%*Y0-;2YHnGFEl|x%Bxf6eRQ-Z+z>l4)s zTKhtBvoYW_qIYi010>xpr*S63++HjSWmXyuc(6A$RB>9n+oR-ZYn=52c?cKZKE?Wed6!HksuZXj^^f6D*w%jTd9B%2>OVnkp_v`{7ybag5(pvxG2(I zJ4vT6ycf~)T$g{!jV&Vg`}F&eZ+gZN_nyZ8_;JVONI3A{gGL?J@oDEE4=>#fPC6#? z+BFjQGx?g1Fl`jujWS|Au{Ie_LP~t!ZS@^|f8AkQnRU{qJoM$G`|JZv_(pz{$k^95 z%5UeQi#C^**vDnWlusN6upX~+HK}nngJl4+0L_(y89o0ey~Od(62Ycq;2@^|jf0r( zgag5W*X}bg5Pb%zfdi}!cRonfnwpsS?r&|nPXi2mOZZ6;mof~%zDMoTparX~t>qOI z%&)2%zOu8swFs%-{^}@ykLhb5pD~}Zi;EEOAg86FqZpw^%y~^s&5r^q`V+`QKMxG7^1?qnakj14S~3FzEJ7RLTNazVjojY$rec%( zm_1haC;3Z-ymhu1t#UES5ef!jXpMTAlA+9mSi-k{FxqzTIJk;p(<&{ACgLQJ^mLS- zcG1{ROe?r0{0OyL(Aby_w$;d}D6~_8AywYA#h3IROm8RYe5a_Ui;`N=TJFI^e}Fjp zd{5kQ)4`Jjkck@Wh+WBKD``&n^{h}^n(yB`602mH0}Jlly_>mlHSf^%#TcJ@rkyGI zEE|r;3Pou@T&B?L)wzJkY7)gJD=6r)gSzX69kZ+oF{UW09t9xSm z*YPx4D_T{)AsNg$5S5;tYK{8z=@WUd%UG3i;UAf$Xh->foKW*#KMYB8oEmwC^+2rR z{bjD$O8?AC-vL?at&$RBXwp$?Vx21clk}(Oxdi1QzTEp6@s6%(r~9UMcZ>5JRPeTM zMB%e*1S>kivK!{IUW#KlhNl~G0XOOZch@%tqdZT^F$E)kwHU{}S{Ku%VSL2@o@lkR z1>Qs-j{^CM)Z>3@9ZkbHOpw^$sGV;s%q;(^c7On%j7u57J(xOxj*)*AG9>j9Q(t81 z>B-qKCT1){pNj%m>@#z(IKJHcQB3^}4h2M)Ow*7ktQo#iGY2WB9I5e`i{6005rtO$ z5hMDmO$bzq_VqL-sR8zl4jyuL@`nnW)KvGSH zbHMP`}R7>-i%Q$FgT~%8eUZ(ckxI7qZ6PrF3`#* zy*1WCt!HYwczV&+YWNlyvdPm;`u8JRhQhxJ%neJ6?IBqT^&F=IY{n`P|>NEIX#j5E&E(JJ(P{n`l<4A^~Bmpo+B ze*%{h{tv>XpV`TS6qliaftv_JPJTXF8q5!Eo1_bjQrZa8AS7zk$ivO)B2?CcEO^yr zlq|On!8Iuy+A@xHI7^pr)8F5J6(p%4sIeM7F#P+GS6{B_rzHsdK0?n~BxGW#5P2tv z^-u)nhakjGw3Q32)UC?ZLJ67jvto3~e7EfF$@R$Z-Me=~$53T+=wd9Z>@j&C9|_cG zS%}9fvbQ<%*f|k?67m*EUbX)_Vo<_WrtI(BaX*%c_$Wd+jztY4##3JVgM9GsIJES^ zZ~)ygH$ic>(brGxFqcB_3zNp`zmH*GN>X$wn-YXe0CEhXEG}VHbQ;DP<0+$Y;j`JNhLfTm;HfFj2KVQurbz@HG;4IXSR5XK6zG+CvJ`OT; zT4IYbz%G$F8JjIPF;I^71TgU?Co3bkPtf>Gg?AlwI{FZjAd{_!kX8q7f;^& zMnN3_1@#)?$lvPNoB;6`a9@m8O6`sdjd)wJiLv4C58OEMOhb1IH9z+hC!XgO=WkQv z&KzFU!MRq%_nS!>;Q*7eGc!=~e;)ckE&%VzkgR($ZcmMqi;ai%dv+)66G;q+H27bT z^z`=L7}bi}=_Mr+j+OBrKaeaJS38>tNc;xZ6H!WOo@w&3pg_I8r&m)`h4b=usjKVam_^F1g?7A zx&;YtY-}t}%~buNg%xzk6@~iz8ih#4*o_fay?L{?yI4xHASLzgmhe6-^3ObU{ofjV ze;d9X-99k!@OLFiJ#MIu!yrgE}}DpcE@L^>fHVuoZP?wX5)r&+7Q4 zHgN%qpwT&P8-2N4FbR<5M;>V=;Plb6uX} zgc~7CgL`3qo@qz6e*Mku)?=Y+E+$LP?zB;@`jX7s(T9I|^uY41u4dxnvg^s5bg}Ez zO&WRf{(7VswcH0FGirR-&jS}VdwphRhSkrj`s6R}^4hAM3Ie9`ZjO z^vEO{dr(N=4>x`Tnd<|1;8*kF9u2KsmtEp?iNJE|BaFW`9|an|#XuE*mWp58bVvWn}mne)=m* z`8WEar7Hc^x4)mo!u9K>Tj=0AzFGj#40+*rM>l5~khWG(DA#?N2Sp1@UbPYZFEA6) z1gJ?mV)Q@}bbLkl9A}8=BNx4cXIV$iZ$Y#E8IWjSKYf;Efd>2iR45IpBKt0wt<_lU zGz)OuG{HS{WdfP8&}m7Ty`>5(N-a)WscDk>!>IIloa!E7=X!uBwBS(Ic%(rSUjb*B zH}AbLCGopkLj(P>(>m$KzB;gL{K=h{LDRU64Y-jqa~i;>asiM8bz^332lJjOf@aeB z#6WI%v=RPEi<}?+hnUTO2tC@_lVR6QOkgssb_D#s75^nNh~np+w9l^0w$tm+Q;lM5En12!HjyHYR>% zEkHmsaSHU8FJHbSAR9cQVy0yFFfO*+6I=J3$icN z|5E6@li+}U3GLRRCRgZtP179m!s|zBUOb>PaH1PX_;k_D;CjIe+M^?!^2D6tp_+;T zH-?tJ`aj9?Lq?6A_6{VLyEVLBPsk|qu^UIBKcZJe!gt<-$+O+vd(oa>S0p$>&t+*P zYH+Xn%52xBtDiZ8`J5&K34rf;pYzx=W+j(DcZ&^CcJ*n^O#nr7OidlxN8UJ`YMp|+ z3=7VHxv(E&YskH?t3;TI?{H2e`MOXgq4gD9Bn>V!1sB5gE|N{V*Bt1>eT$$7i7S-K z*2lppv3+Fo#Kbu?{{@P;*nyD|3VATnqrLjAqo%?x&BE-2wW$q6+2ATU>l2AMuvy(? z278f#b)%mI?t`nXaU)(T!6F*NI7+xZj5KZ%+FgYT5$)~=^(fChEfRzoP``Zs{Kc_+ z_D4k&n{PUF(r&#fV5=JK{_x?^m*^2OdW6AIUfxIA!g?I}POrH~VwAcRe@ zPzwU-644koxw52#;dJl1Wjp6VQILkp9dwA@+|SV4y+a1wD0lr7e3vTb{Y&G=a&5Ep zsE=n{J<1(ggkKaEPA0E(T(N{Tephe&&X|r!h0rToYV8Q!kYrXyCqK8gIC*TaNrPKh zkAl_6zcACNm80v2y?r0k>1&X_(JM_PUlE1Jv$~R!t%AXQN^(X=c820{Ku2mohY%CdYy$oJ^M{pxpg|X zksjYfT$K#b!J8AphE2t(2P2n@xMY~xRz0S-t;=6nl25rwbR@ki=m< z+hY;qen*l2WdaeE>K%s*Qk_EvUX>y#mm4Zh)dy`b*vW5jS!{42g9EM{ATgl6!HFwM z!(I>>);P0Zv0Nqccdx<_uf3g)h>6X3ldUWscN284I9m1mTV^OAU(VmEuU<}jv$r0d zeDLwA2R*}XXEevhp9H|M_SGq>@YAfUZ8PpCV^qLe1|vmaRv5^n?T;l4O$jtC)Kw9$pn--~e$b827^BVoq^!G)S87eL09$fdmr7I{jJ6)eZ%6pziF!n0X%-JTHh| zzq|E#U_e(zRn@`S*%s9p7`u*I2slj`X{kzWUHb7Oy*5!RmTY%#{aypeZV5|V(To|M zW@nE0Hna{-dSI4FoY9zCMIjL>DGY%1D}rtT*eFXQ4WpNSU8q0Cn>eX9aQRD_V)Q;y z{nn6aqPDhxSP|zm)L)e2)CBPDl!TeA0fsFnme#q9?-^={M&4UA%SQkTz#110=AbG9 zu^zCzq&MVc@|}j;EtmR&alG4y2z;&Vp-;h?03c!X<>^huVx(Rn9XR6RRBTIz8W`hMxPCc`!89rp{N71& z(z_hL{xa%auRp2ag$pghls%bJE#Yhd^4GjAY4ym5WO2gabRPh9j)Q6Z(KaIkgBXs| z6UC~WnnC#8uIe#oaIC>YOQuSq#B0CS?qgg%sr^==TiqD0wn5gVy^5NR>}g?H{11Uo zIvcCjB~sOb>zC4vn$T-lMvL#7nmN%@DjNkn@O7p}c5LhvV;!D8(uGH!Jyf4}zY>`uPO++tVpu z=MJE7IPHqZ`GMiMC0)>hDYtISWD4+2ZgvTwHwU#z(iZF~TP8jg>H)4sr8&4X+SkE} z9Slc`&!OKo&G2D{P&M8lIjy&0Ck!vne+jSIOUv*0mVCkKil-T32)sq6xb}Y0n1{8s zZe#*4Ua4HCYaIF{if0g|yDj@#&JM0=ZEI(?I}u`^Zc8{st#n`L7gtEy%-eBf}(j)n!#=K$~3zsU%g0&;Xv){wC1cJK zf~j5N3fJjw3NqHd0@L;R4$l{*3G++V<~Cdwfy<^-QEV&*nQid-XW>jm0R6XPRy`Y| z37eCn6n&jwP%=G#hCY`!vO)47gR@mGI_7P8nayj5bg*CW^Ya5B zo3tB1d4fvebN8_cPW)My`gb=#WuUf4 zM^fW*+IMh7!%Yl0d*-gwk*CvRJ|npIr$oiYb+2EKuX<6&rF`Aq#l>#4(h0ZREg`~o zCM{+VGvXufcW*Y$j(Hk6h`o#-40k~tY>gT%6F#MlcdDwH@*U15Y85Oil!mv+jC}3% zSB=v(HfRMk=3w^Ru=r*NkOumfBP^{OPNnhqSu&9i0F@w2)uv{aqC<>Yh`%$ogJT)Z^kP=|`9dEhCn3BK&<^)HKe z1Rd-r>Pq)ngQ>OfM?ZWEN;yhQL;j`R?kf^ThXGUR2dA8WXk6S8RN^P zLlUzp2gCxj}XR>qHlG_Ls0stnb-A~_jKs#l?{YXT)nCJv_SJ=C#i?* zKByBaDk@7uXV^)HWi)y3_zgiABaiW>O_wUGgK;JeuET1$fu?<$?|@s2$UAUwsz#ll z9vS&SfuGOP^2l99WeymLVB%B5a>%Sb>^Tj)A8cL{FU8mn1!p8`o_%-~93)igsXb1i z`>PW5frb8p_n1d5{9W@TZ+a;m*IuN~6EfS&_tRi&)nCiJoX4OJCG+CHce2ak^v zvG(CL%;s1vSX)#f%5}#em1H;-VCxfi@M6~5X`D79drD{C4Sy#|@2u|iWJ*^_U3Jrr>y@uwR%DeWEo5a) zY$aAnlKk3Jj(i_IAY<`roYkO@t$jr@vF^J>T+Gg;K<<4J7y8!m!iz$_DiK!;i$@;u z8M4*%Gqaqb`3~;WZ6^{sa>wHAihpl6RVcdH=xC5*>+{M2Cm5}*9jrBb(a82`_A@cM z=H{U70_{wh*P@|eskx?yM}^rFpfe)>RcBn8F|EIOEoc%0cH!CH6wI6~an;+mZfg@) z&kgdl&!KG|<}#6$-G~P0mOsrJWNb)7u7V+s(=04`;DnaIy=@}bi6)|RgOpAuUyiIfijn>5-^54UV{sjjv*e` zn&DR@oFHkHT6)uOv>ny?;I^JdXPW7H;BO5A78*cBM`lni^cg}k%pIhXDm+@5 zG{B`g6*S!6&%Uw~2QDx@f8^rr)(I5#!7mAbUy7jZBJivd5-LiyuQYyMvJk-U>z845 zdmd{9C;oWTAilW3w{t-T^<&9l%a30aDafi#vzKwzt0{a042d4%U1QeIIff;u?<;lW=?1Mu_ zZi7(gH2_ z#L^lp-L$576-=$f(lnbFc$6QL%);nh+pyySA7N)5Nwi81Z{%f5j?m=bgWU7~Rmiz` zLz%{L+;vH<$P89%urWf%j4|b!*_>?A$SvtME*Uh4iipN#iFPS+iCD~}(7G0lT*?%= z3?Yq6h}m2!Q4P~LY-47Bwst$G)1Lhg-uImMdEU?SeZIdBiIh)D22SGn7gBN`k?PYk zbae8fmwiG>ejsTAiXkKti)ZdL|1L>$We7LBG(O1s^7~v|ku6x$)2}n9dKH>7d70U( zgYmh=eU5G>LG9851DlhYhjMe#QBn+~-2As%OAVA$)306e_B96A72;GpsEV3Z=(i(` zGEV^uk=p)-IaEn%2i@U9t!Rn@M0IYpYa?Dxn+UR2${D6)TP@M2I6DN%Gt5jLS@%a9 zC(xqR9Wlh)PcmsSDIJ4OZ0z%zUPpv9jnm8R_$8`{LAJLt4Ks|6(Tw#{4by>H9u@a9 zUU^z9a54t&zPg6TGJqHCe>b5F99ZQN_=f)#Scsm8pkX~T$-m=a#eVL?%z!3TLD0B^N# zm}mK}jjaP6@)k9f^!-H*D0v<^z~G(wb~_(eOlRiQ#wFD&MfW3vJhX%A zH_dqPeXUL`20p8E8U}HoA9w;m!D8sNTj-{Yc`>3(<5FKK9(Pa_^gchE{0NgIGMje; z&5yUTv5;HU_@}sSci`}vo3*uB5KZy{%3HI4*M_3Xeoxn0epxSJ&W>o6~mF_2lB?;~$lkYg?Mzkxgs1kVJXW z1>^M@A%49$W`kNsZKrrrX`F&3HW&r-(h*#!DCpxjcQ;1+`S~SsJiZsb6K6gZIv9Lh zQY+DfmxUpZT~&%oWn7({_DQo99u7!Fj*xElu_t$hBx<>EZ(}YMUTYBEmc34MFK6)H~YLF>9y! z_2_2KW*{W$N=sY#jbo8d47<`Pxkv1aVhMXG7d|}?yH09pwCPZDyqCbrB*@`~zQ1bR znP>JmA1-CVOS!*aGpn+sva+Y(!8JIMFyA+ro^6wfEgdh9P1JgPmlqtdav8`94g0Cu zoy|`Se!F+10nswc-@7FL;tRMUCTvXUf3p8nWAMT}B+C5bh8)I6G~qaZbfG9u z=gaJ-fM~KcKsKF$YX2PGEF$ZwFc0fHx>17q3`fvC0%^cr7DlMNmHzQLa;iCq)c=92 zTYhiVEf|+zgD>0mDY+pl-)7}cX}TF-WPZl3O)IqHR6RfacZzit6&K^7+mK^*(29mJ z)@EVhh6FTWuo&S(gfST-Jf5s!fyIh}uURIRXd)Hh*q{&xY0k*VNHN~Gm=)Jp<7!B+A#`+;sv^u(C~0JXl0-gqdqALoREosFxqO@Z9N?f`%W%wh?&%ka2MQYJd)`wDz}GEiYqNJ}rL||=UjQB8s{jB1 diff --git a/icons/obj/atmospherics/components/trinary_devices.dmi b/icons/obj/atmospherics/components/trinary_devices.dmi index 6c96035c4a7e7e0ac6cb577f71a02e6ae0abbbd3..5a6a62649ecd53181abb5814a3a6daeb5151d57e 100644 GIT binary patch literal 42943 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 literal 40611 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 D0o6wbNF0=;Om5-N_aO&Xhc*)^NWY&lre~) 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 diff --git a/icons/obj/atmospherics/components/unary_devices.dmi b/icons/obj/atmospherics/components/unary_devices.dmi index 3f09e991563b6bce765349654ef7a3db6fa30f31..39be809a53e28fa7d04114904669ab2716e2defa 100644 GIT binary patch literal 100865 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 z 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 literal 105390 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 J#kzKP{|A`+Df0jT diff --git a/icons/obj/atmospherics/pipes/he-junction.dmi b/icons/obj/atmospherics/pipes/he-junction.dmi new file mode 100644 index 0000000000000000000000000000000000000000..b1ff675e3aa4deed5de32888021100d33f495262 GIT binary patch literal 1878 zcmV-c2dVgpP)R9dQ5v00DGTPE!Ct=GbNc005PGR9JLGWpiV4X>fFDZ*Bkp zc$`yKaB_9`^iy#0_2eo`Eh^5;&r`5fFwryM;w;ZhDainGjE%TBGg33tGfE(w;*!LY zR3KBSAhRIV&`{S&eW*aSN0000J2NklKmPd19{y6mn>PsXoPIbuZxEo~!;g7Aa=^!edZ-6n z+%zxly}IIUKd}bbC)9hq*_;AsH=3W4fpT+NAOuIQZ zVID5`^~eE7_i;El18=(kTwUCYJRWmG>(I^1aD+_>UT9D9%+hmj)!$*0RWR&I+o2K1?1FW9XkQQWVFcY4Dz_uO6$=9 z0!&LQ%BXu9-4BI;b-$~Nq$75EFoj55U`G&03bP92m$NS0g9HC)jafUz{@@S z+JKlTh>rAuUx4vjq;sAIh=m^uKoOO*02EO<13(#-BLV&8(C-M9i_HY40Zl-EG1S}< zDi_%dOmtWt-l22>p>nBD5S6QL9dFxleDQ`vK7`7NJuG|F<{>cRB2-RXhb7>C`SGkr z`3fr6_VDxVWYk?r<>(-_*5NcCZ)X2iMdipK1$(HYa%7N#>rhAK$RGu`QXTK0@=c^4 zS^^dg9*#7ofO(gOW2q@%eh!ZoDnK&d#O|r56#0PdAO!*Td&mh=rhuFvWeLa&QkHIb?a{c?CysZY3d@zJqc!EGSnB~PXoNYZ^vbTO}Xxe0tV(Va`H_Bz%j7lk(F=C z05N@V_mGos$^bEa5WLy|5Y-0{58L_X7}5i1#+R)RhB{>An~(6s4~;$;JZ$HiKGoZw zSfLMwtK0czTB8bm5cRO6a$C9{JnYv8(K<}1T%3?N>abrQL|bV>bdo8T{fQO&ApUCv zOeU4Wv-azQXrvK($kqqZSej5dP93uKL29(fAAoM9Ho8P+bU!=+kd8Db0MfCvCQW+4 z#%NJpuBVMMdjWnuKp=}`-`cZ=s`IY>){b>>IzT%QS)J1outDWifT%v`KfzQ^1&Hc{ zz-J3UTp#owVJfEr#Pq?623P^2`k?=@P|pg$o_-j!n^GSP&y(tdSw!mY!iYZTf0O8g zQb0}}ngS*zp{-QE9u)+{`=Ne4Dh!B58vS}y7!Zx6`t_&?AU0a)*P|kUm{I!Rcr@^& zLxTdBkv@1wCH^Xfwb2J3F-Sd!Y!O4*c8v7F+X)_$`rsLLs9ujM1k|rb6#{bf!Olnn zn!$QhA)tOest{16xW52-fL&=`YF$EzhRW%cm){CFVx6+Nf3Oqq5hvY;Z16Dfkj^*l z<+^6RX|4~_`6gQ*4A#~MQ7Xp=9FqZup$}qI4hAIl4{p!e)(0^v2Ln?32ZifVz1XFR%@ZxVp?q!JjU82Kgz*qBtR^+8s?NdS_QN|1-Fd=vAi1mx5q zFW*ecmrN>M`TuIrU(fn~HU86u|E~s*rLufeIH?4U7P4JKX6hN&egR-jn$-GW=YwP? z-Rn`=X0!6@n*$0Li|YX!R89rhzaF&{uzx*jAE07AYP6eV|6m7|D^0k6P)_Aa6Yd`r zQ@P4P>Ha|}m8;4V?jICWxx}Kj6zWi`57MnP(FcQvdVR1V1OZ>d=77mB!vbNC1kAy?@XOkiCD<43OSGc*0UIaKBFZ;3fAJF@=VHkZy QZ~y=R07*qoM6N<$f(wCS9RL6T literal 0 HcmV?d00001 diff --git a/icons/obj/atmospherics/pipes/he-manifold.dmi b/icons/obj/atmospherics/pipes/he-manifold.dmi new file mode 100644 index 0000000000000000000000000000000000000000..bf062ae5b91d387caba55a52b8c576d36f5e6300 GIT binary patch literal 1443 zcmV;U1zh@xP)V=-0C=2J zR&a84_w-Y6@%7{?OD!tS%+FJ>RWQ*r;NmRLOex6#a*U0*I5Sc+(=$pSoZ^zil2jm5 zDK{}MGc7+SMb}V?i!&v&s2HS^i!-e#F*g;&HpHUThZ3C_mQfy0J^%z{)RLK&=#a0r8y;S6161y?^8aC!g$0@aymxcW5k000D% zNkl0_m~q@jHXHNp7$7|FCi-OpNRuwu zjFX=3^_6bl_I3;qo9iLI9&wG2*6kEri4z`i1J%Ur$;(#u|=?=gb~ zEQx2O$D!|YfL#>`l0%dphmOheK<~PS8*#1l2>Ko~IFuPb=XKJU7~s&BeALuQ z4|VX(0QL!B}=?z^YIxGrJ401$PL4tie-W7uBDU_B(p8Gz#N0f+Fh44l?9k~XxvE|PuKeh*hj z#2~KGaDU*WqGPbccHdzl$NW89;}O8FGCt7$;9&ti{0p(2VE|PM_JP+)8t)GxgXCN^ zc_-CSP-hVg_A`5+O;aC)lU;@ZP>NV)`o1j#piPq~TH@I>;{%{|u~7E?*(uP857InX zbU0n-7^G?)OMN$&-xdJu4?rg4InVCFej^Uf4Hh%VYY{PG%m^}A)467RkXBQA&Vf&$ z4?=*%4wER#Lye9a5LF5l5dpx| zo`tSOln=o9{|*pKE>k^|>I$kUjw1VA>!M%QRVWXJ17w*z8UWX#GXPiwfO}j`9YD4} zcsphH69DCZT^ImxoYhYema1tO`8CgsANb0r4zNhtLr9! zKaTe&50Fgxu|H_C%Ng+hXYp@*&>ux59}LL@fkAa9^H%mjbuBv0pthQ_Cgef&dcc~* zpc_E+!G#Q(7Jb$VJ{V&K2GjcN3N3mv4-ykb)ej)p^#J1UXuSY$KSejTcwTam#S@>4 z>~aS9jC#0DABZ-6AlmeSXsi!LNe`C6Jc{fExL(P1>!2TJ@D2dQJh+^}v=+O3vwMT> xI)7v`#-6)!E%koP;(hmRHj6q6cr6o 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 literal 0 HcmV?d00001 diff --git a/icons/obj/atmospherics/pipes/heat.dmi b/icons/obj/atmospherics/pipes/heat.dmi deleted file mode 100644 index 132d11c3ab45b56086b2638915047d29cdf7a989..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10819 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 diff --git a/icons/obj/atmospherics/pipes/junction.dmi b/icons/obj/atmospherics/pipes/junction.dmi deleted file mode 100644 index f3ff732c56ca265aad07dd6462f7fc17fd6f7930..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3276 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 rEOqI;ej<1&c1hYuL?{%hprC-m;gpq?6%`fV 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 VZ>`w9WYYiu002ovPDHLkV1igx6h8m} delta 754 zcmV(?20RJ-p{{X4%W^b0mcFZh`YR9qRr9f8*mgP9c!@3yguu)1w|Ph!OaIA9HqrdCKdT z>5|p2)3t>jFBl@}3^?bq8Pe3B5r+FOWw_@GxMu-!8E}ORmGrh1SRbKVHUqbUF0DXr z{d-zp|A}1)Lhl*B@7MpqHfsGvX1$d#-^`hBrvU%}0002&qJ1Qk>gtDb`Fx;r+hoIh zpl{=9%Y2}zd;Ib?o4V6~ir!|O`G7QoQhkg2opGn-8C0)8#()2aUZ}vbbY6jF*{`c_ zgEh9%u3uCeUSxf@3guR!^JcBs%mDxZ0001h7TQNb@sU#dP|kcn+n6#jABf&&Q+HZ8 zACP#P_2vUR-QgO#xB}7)s#l^G8DUL%BQvWm}{|0J_Fh zjQ}2xN78$g`uC+t_3H)D(A&(dUn>BY%b>)+FRfoI0P__nPiS`f_oemg1z@=X*0)jX kFEZ<`g!N_)006)sU$$vs$}-vt?f?J)07*qoM6N<$f&$EG4FCWD diff --git a/icons/obj/atmospherics/pipes/pipe_item.dmi b/icons/obj/atmospherics/pipes/pipe_item.dmi index c16e4c1bbbf9ef4fd75c096ea9352626194505d0..7d6d559a46737e2b34ba725e9673b34eb70690bb 100644 GIT binary patch literal 27655 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 HF7*Ea-Rf~; diff --git a/icons/obj/atmospherics/pipes/pressure_tank.dmi b/icons/obj/atmospherics/pipes/pressure_tank.dmi index 75471113d8a77da2e46129c972a2dfb555d5a31c..95103015cfd67515e81ee259cbd72a0f2379b1f0 100644 GIT binary patch literal 14599 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 Date: Sat, 18 Jan 2020 18:46:48 -0500 Subject: [PATCH 039/123] Forgot includes --- tgstation.dme | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tgstation.dme b/tgstation.dme index 1c7d5112e7..c6709a51c3 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -1493,11 +1493,13 @@ #include "code\modules\atmospherics\machinery\pipes\layermanifold.dm" #include "code\modules\atmospherics\machinery\pipes\manifold.dm" #include "code\modules\atmospherics\machinery\pipes\manifold4w.dm" +#include "code\modules\atmospherics\machinery\pipes\mapping.dm" #include "code\modules\atmospherics\machinery\pipes\pipes.dm" #include "code\modules\atmospherics\machinery\pipes\simple.dm" #include "code\modules\atmospherics\machinery\pipes\heat_exchange\he_pipes.dm" #include "code\modules\atmospherics\machinery\pipes\heat_exchange\junction.dm" #include "code\modules\atmospherics\machinery\pipes\heat_exchange\manifold.dm" +#include "code\modules\atmospherics\machinery\pipes\heat_exchange\manifold4w.dm" #include "code\modules\atmospherics\machinery\pipes\heat_exchange\simple.dm" #include "code\modules\atmospherics\machinery\portable\canister.dm" #include "code\modules\atmospherics\machinery\portable\portable_atmospherics.dm" From ae5e87d49298d40cce0fa2c50431a8e5a339f3c3 Mon Sep 17 00:00:00 2001 From: r4d6 Date: Sat, 18 Jan 2020 19:12:00 -0500 Subject: [PATCH 040/123] Apparently TG has more code than us --- .../machinery/components/binary_devices/valve.dm | 9 +-------- .../machinery/components/unary_devices/tank.dm | 5 ++--- 2 files changed, 3 insertions(+), 11 deletions(-) diff --git a/code/modules/atmospherics/machinery/components/binary_devices/valve.dm b/code/modules/atmospherics/machinery/components/binary_devices/valve.dm index 21ee79c2ea..43cb658210 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/valve.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/valve.dm @@ -106,11 +106,4 @@ It's like a regular ol' straight pipe, but you can turn it on and off. /obj/machinery/atmospherics/components/binary/valve/digital/on/layer3 piping_layer = 3 - icon_state = "dvalve_map-3" - -/obj/machinery/atmospherics/components/binary/valve/digital/update_icon_nopipes(animation) - if(!is_operational()) - normalize_dir() - icon_state = "dvalve_nopower" - return - ..() + icon_state = "dvalve_map-3" \ No newline at end of file diff --git a/code/modules/atmospherics/machinery/components/unary_devices/tank.dm b/code/modules/atmospherics/machinery/components/unary_devices/tank.dm index fa467da7fc..c1bd59f49b 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/tank.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/tank.dm @@ -27,9 +27,8 @@ /obj/machinery/atmospherics/components/unary/tank/air/New() ..() var/datum/gas_mixture/air_contents = airs[1] - air_contents.assert_gases(/datum/gas/oxygen, /datum/gas/nitrogen) - air_contents.gases[/datum/gas/oxygen][MOLES] = AIR_CONTENTS * 0.2 - air_contents.gases[/datum/gas/nitrogen][MOLES] = AIR_CONTENTS * 0.8 + air_contents.gases[/datum/gas/oxygen] = AIR_CONTENTS * 0.2 + air_contents.gases[/datum/gas/nitrogen] = AIR_CONTENTS * 0.8 /obj/machinery/atmospherics/components/unary/tank/carbon_dioxide gas_type = /datum/gas/carbon_dioxide From 1eec1b11ddd449cf7e0f77f049d834102cbbd38b Mon Sep 17 00:00:00 2001 From: r4d6 <50276533+r4d6@users.noreply.github.com> Date: Sat, 18 Jan 2020 20:00:07 -0500 Subject: [PATCH 041/123] Update passive_vent.dm --- .../components/unary_devices/passive_vent.dm | 52 +++++++++++++------ 1 file changed, 35 insertions(+), 17 deletions(-) diff --git a/code/modules/atmospherics/machinery/components/unary_devices/passive_vent.dm b/code/modules/atmospherics/machinery/components/unary_devices/passive_vent.dm index 94d8959987..e01632c379 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/passive_vent.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/passive_vent.dm @@ -20,28 +20,46 @@ /obj/machinery/atmospherics/components/unary/passive_vent/process_atmos() ..() - var/datum/gas_mixture/environment = loc.return_air() - var/environment_pressure = environment.return_pressure() - var/pressure_delta = abs(environment_pressure - airs[1].return_pressure()) + var/active = FALSE - if((environment.temperature || airs[1].temperature) && pressure_delta > 0.5) - if(environment_pressure < airs[1].return_pressure()) - var/air_temperature = (environment.temperature > 0) ? environment.temperature : airs[1].temperature - var/transfer_moles = (pressure_delta * environment.volume) / (air_temperature * R_IDEAL_GAS_EQUATION) - var/datum/gas_mixture/removed = airs[1].remove(transfer_moles) - loc.assume_air(removed) - air_update_turf() + var/datum/gas_mixture/external = loc.return_air() + var/datum/gas_mixture/internal = airs[1] + var/external_pressure = external.return_pressure() + var/internal_pressure = internal.return_pressure() + var/pressure_delta = abs(external_pressure - internal_pressure) + + if(pressure_delta > 0.5) + if(external_pressure < internal_pressure) + var/air_temperature = (external.temperature > 0) ? external.temperature : internal.temperature + var/transfer_moles = (pressure_delta * external.volume) / (air_temperature * R_IDEAL_GAS_EQUATION) + var/datum/gas_mixture/removed = internal.remove(transfer_moles) + external.merge(removed) else - var/air_temperature = (airs[1].temperature > 0) ? airs[1].temperature : environment.temperature - var/output_volume = airs[1].volume - var/transfer_moles = (pressure_delta * output_volume) / (air_temperature * R_IDEAL_GAS_EQUATION) - transfer_moles = min(transfer_moles, environment.total_moles()*airs[1].volume/environment.volume) - var/datum/gas_mixture/removed = loc.remove_air(transfer_moles) + var/air_temperature = (internal.temperature > 0) ? internal.temperature : external.temperature + var/transfer_moles = (pressure_delta * internal.volume) / (air_temperature * R_IDEAL_GAS_EQUATION) + transfer_moles = min(transfer_moles, external.total_moles() * internal.volume / external.volume) + var/datum/gas_mixture/removed = external.remove(transfer_moles) if(isnull(removed)) return airs[1].merge(removed) - air_update_turf() - update_parents() + internal.merge(removed) + + active = TRUE + + if(abs(external.temperature - internal.temperature) > MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER) + var/external_heat_capacity = external.heat_capacity() + var/internal_heat_capacity = internal.heat_capacity() + var/combined_heat_capacity = external_heat_capacity + internal_heat_capacity + if(combined_heat_capacity) + var/temperature = (internal.temperature * internal_heat_capacity + external.temperature * external_heat_capacity) / combined_heat_capacity + external.temperature = temperature + internal.temperature = temperature + + active = TRUE + + if(active) + air_update_turf() + update_parents() /obj/machinery/atmospherics/components/unary/passive_vent/can_crawl_through() return TRUE From bc18ba314a8b351db8fbea87a2eec789350b5042 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Sat, 18 Jan 2020 19:21:47 -0700 Subject: [PATCH 042/123] Update PDA.dm --- code/game/objects/items/devices/PDA/PDA.dm | 50 +++++++++++++++++----- 1 file changed, 39 insertions(+), 11 deletions(-) diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index c0b510111f..4c01467239 100644 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -92,6 +92,8 @@ GLOBAL_LIST_EMPTY(PDAs) var/overlays_y_offset = 0 var/underline_flag = TRUE //flag for underline + + var/list/blocked_pdas /obj/item/pda/suicide_act(mob/living/carbon/user) var/deathMessage = msg_input(user) @@ -387,7 +389,10 @@ GLOBAL_LIST_EMPTY(PDAs) for (var/obj/item/pda/P in sortNames(get_viewable_pdas())) if (P == src) continue - dat += "
  • (BLOCKED - CLICK TO UNBLOCK) [P.owner]" + else + dat += "
  • [P]" if(cartridge) dat += cartridge.message_special(P) dat += "
  • " @@ -645,6 +650,12 @@ GLOBAL_LIST_EMPTY(PDAs) if("MessageAll") send_to_all(U) + + if("block") + block(usr, locate(href_list["block"])) + + if("unblock") + unblock(usr, href_list["unblock"]) if("cart") if(cartridge) @@ -744,9 +755,18 @@ GLOBAL_LIST_EMPTY(PDAs) message += "\nSent from my PDA" // Send the signal var/list/string_targets = list() - for (var/obj/item/pda/P in targets) - if (P.owner && P.ownjob) // != src is checked by the UI + var/blocked = 0 + var/list/string_blocked + for(var/obj/item/pda/P in targets) + if(owner in P.blocked_pdas) + blocked++ + LAZYADD(string_blocked, P.owner) + continue + if(P.owner && P.ownjob) // != src is checked by the UI string_targets += "[P.owner] ([P.ownjob])" + if(string_blocked) + string_blocked = english_list(string_blocked) + to_chat(user, "[icon2html(src, user)] The following PDAs have blocked your message: [string_blocked].") for (var/obj/machinery/computer/message_monitor/M in targets) // In case of "Reply" to a message from a console, this will make the // message be logged successfully. If the console is impersonating @@ -779,12 +799,13 @@ GLOBAL_LIST_EMPTY(PDAs) tnote += "→ To [target_text]:
    [signal.format_message()]
    " // Show it to ghosts var/ghost_message = "[owner] PDA Message --> [target_text]: [signal.format_message(TRUE)]" - for(var/mob/M in GLOB.player_list) - if(isobserver(M) && M.client && (M.client.prefs.chat_toggles & CHAT_GHOSTPDA)) - to_chat(M, "[FOLLOW_LINK(M, user)] [ghost_message]") + if(length(string_targets)) + for(var/mob/M in GLOB.player_list) + if(isobserver(M) && M.client && (M.client.prefs.chat_toggles & CHAT_GHOSTPDA)) + to_chat(M, "[FOLLOW_LINK(M, user)] [ghost_message]") + to_chat(user, "Message sent to [target_text]: \"[emoji_message]\"") // Log in the talk log - user.log_talk(message, LOG_PDA, tag="PDA: [initial(name)] to [target_text]") - to_chat(user, "Message sent to [target_text]: \"[emoji_message]\"") + user.log_talk(message, LOG_PDA, tag="PDA: [initial(name)] to [target_text] (BLOCKED:[string_blocked])") if (!silent) playsound(src, 'sound/machines/terminal_success.ogg', 15, 1) // Reset the photo @@ -794,8 +815,7 @@ GLOBAL_LIST_EMPTY(PDAs) last_everyone = world.time /obj/item/pda/proc/receive_message(datum/signal/subspace/pda/signal) - tnote += "← From [signal.data["name"]] ([signal.data["job"]]):
    [signal.format_message()]
    " - + tnote += "← From [signal.data["name"]] ([signal.data["job"]]): (BLOCK)
    [signal.format_message()]
    " if (!silent) playsound(src, 'sound/machines/twobeep.ogg', 50, 1) audible_message("[icon2html(src, hearers(src))] *[ttone]*", null, 3) @@ -827,6 +847,14 @@ GLOBAL_LIST_EMPTY(PDAs) /obj/item/pda/proc/create_message(mob/living/U, obj/item/pda/P) send_message(U,list(P)) +/obj/item/pda/proc/block(mob/user, obj/item/pda/P) + to_chat(user, "[icon2html(src, user)] [P.owner] blocked from messages.") + LAZYOR(blocked_pdas, P.owner) + +/obj/item/pda/proc/unblock(mob/user, unblock_target) + to_chat(user, "[icon2html(src, user)] [unblock_target] unblocked from messages.") + LAZYREMOVE(blocked_pdas, unblock_target) + /obj/item/pda/AltClick(mob/user) . = ..() if(id) @@ -1172,4 +1200,4 @@ GLOBAL_LIST_EMPTY(PDAs) #undef PDA_OVERLAY_ID #undef PDA_OVERLAY_ITEM #undef PDA_OVERLAY_LIGHT -#undef PDA_OVERLAY_PAI \ No newline at end of file +#undef PDA_OVERLAY_PAI From 7b8cb0dbfc8cef7e773dd7b11063d4b5983eb364 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Sat, 18 Jan 2020 19:33:22 -0700 Subject: [PATCH 043/123] Update PDA.dm --- code/game/objects/items/devices/PDA/PDA.dm | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index 4c01467239..2a8333ff78 100644 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -652,10 +652,10 @@ GLOBAL_LIST_EMPTY(PDAs) send_to_all(U) if("block") - block(usr, locate(href_list["block"])) + block_pda(usr, locate(href_list["block"])) if("unblock") - unblock(usr, href_list["unblock"]) + unblock_pda(usr, href_list["unblock"]) if("cart") if(cartridge) @@ -755,7 +755,6 @@ GLOBAL_LIST_EMPTY(PDAs) message += "\nSent from my PDA" // Send the signal var/list/string_targets = list() - var/blocked = 0 var/list/string_blocked for(var/obj/item/pda/P in targets) if(owner in P.blocked_pdas) @@ -847,11 +846,11 @@ GLOBAL_LIST_EMPTY(PDAs) /obj/item/pda/proc/create_message(mob/living/U, obj/item/pda/P) send_message(U,list(P)) -/obj/item/pda/proc/block(mob/user, obj/item/pda/P) +/obj/item/pda/proc/block_pda(mob/user, obj/item/pda/P) to_chat(user, "[icon2html(src, user)] [P.owner] blocked from messages.") LAZYOR(blocked_pdas, P.owner) -/obj/item/pda/proc/unblock(mob/user, unblock_target) +/obj/item/pda/proc/unblock_pda(mob/user, unblock_target) to_chat(user, "[icon2html(src, user)] [unblock_target] unblocked from messages.") LAZYREMOVE(blocked_pdas, unblock_target) From 9619a6bf5d3e2b60672941e20a82995ebc329ef3 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Sat, 18 Jan 2020 19:37:12 -0700 Subject: [PATCH 044/123] Update PDA.dm --- code/game/objects/items/devices/PDA/PDA.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index 2a8333ff78..e145e2c967 100644 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -847,7 +847,7 @@ GLOBAL_LIST_EMPTY(PDAs) send_message(U,list(P)) /obj/item/pda/proc/block_pda(mob/user, obj/item/pda/P) - to_chat(user, "[icon2html(src, user)] [P.owner] blocked from messages.") + to_chat(user, "[icon2html(src, user)] [P.owner] blocked from messages. Use "Messenger" function PDA list to unblock.") LAZYOR(blocked_pdas, P.owner) /obj/item/pda/proc/unblock_pda(mob/user, unblock_target) From bd30b449191164b0eb500867deca858fdd5b8d92 Mon Sep 17 00:00:00 2001 From: Winter Flare <7543955+Owai-Seek@users.noreply.github.com> Date: Sat, 18 Jan 2020 21:59:03 -0500 Subject: [PATCH 045/123] Bounty Reorganisation and Rebalance Reorganises several bounties. Rebalances or Buffs Skateboard, Stunprod, Shady Jims, Gas Mask, Soup, Ice Cream Sandwiches, Popcorn, Onion Rings, Night Vision Goggles, Tool Belts, possibly others. Moves: Khinkali to Chef Bounties Super Bite to Chef Bounties Poppy Pretzels to Chef Bounties Adds: Fiesta Skewer Bounty Pneumatic Cannon Bounty BBQ Ribs Bounty Add's Trillby's Toy Sword Bounty Fix: Shady Jims were unobtainable, they are now obtainable. --- code/modules/cargo/bounties/assistant.dm | 19 +- code/modules/cargo/bounties/botany.dm | 272 ++++++++++++---------- code/modules/cargo/bounties/chef.dm | 36 +-- code/modules/cargo/bounties/gardencook.dm | 32 ++- code/modules/cargo/bounties/medical.dm | 2 +- code/modules/cargo/bounties/science.dm | 6 +- code/modules/cargo/bounties/silly.dm | 15 +- code/modules/vending/cigarette.dm | 3 +- 8 files changed, 228 insertions(+), 157 deletions(-) diff --git a/code/modules/cargo/bounties/assistant.dm b/code/modules/cargo/bounties/assistant.dm index 9e26cd25fc..84d3fd3626 100644 --- a/code/modules/cargo/bounties/assistant.dm +++ b/code/modules/cargo/bounties/assistant.dm @@ -10,13 +10,13 @@ /datum/bounty/item/assistant/skateboard name = "Skateboard" description = "Nanotrasen has determined walking to be wasteful. Ship a skateboard to CentCom to speed operations up." - reward = 750 // the tony hawk + reward = 800 // the tony hawk wanted_types = list(/obj/vehicle/ridden/scooter/skateboard) /datum/bounty/item/assistant/stunprod name = "Stunprod" description = "CentCom demands a stunprod to use against dissidents. Craft one, then ship it." - reward = 800 + reward = 950 wanted_types = list(/obj/item/melee/baton/cattleprod) /datum/bounty/item/assistant/soap @@ -126,7 +126,7 @@ /datum/bounty/item/assistant/shadyjims name = "Shady Jim's" description = "There's an irate officer at CentCom demanding that he receive a box of Shady Jim's cigarettes. Please ship one. He's starting to make threats." - reward = 750 + reward = 1150 wanted_types = list(/obj/item/storage/fancy/cigarettes/cigpack_shadyjims) /datum/bounty/item/assistant/potted_plants @@ -208,15 +208,22 @@ wanted_types = list(/obj/item/shield/makeshift) /datum/bounty/item/assistant/toolbelts - name = "Tool Belts" + name = "Tool Belts" //Made it 4 so you can't just buy one set of toolbelts to finish the bounty. description = "These things always seem to go missing. Ship us a few to help us restock." reward = 1350 - required_count = 3 + required_count = 5 wanted_types = list(/obj/item/storage/belt/utility) /datum/bounty/item/assistant/gasmasks name = "Gas Masks" description = "The good news is that we have more miasma than we'll ever need. The bad news is, somone opened the release valve on the canisters. Ship us some gas masks!" - reward = 1100 + reward = 1250 required_count = 4 wanted_types = list(/obj/item/clothing/mask/gas) + +/datum/bounty/item/assistant/pneumatic_cannon + name = "Pneumatic Cannons" + description = "Have you ever launched a tennis ball, newspaper, or ***** at someones head from across the room? No? We haven't either. Help us rectify this." + reward = "2000" + required_count = 2 + wanted_types = list(/obj/item/pneumatic_cannon/ghetto) \ No newline at end of file diff --git a/code/modules/cargo/bounties/botany.dm b/code/modules/cargo/bounties/botany.dm index 98d7765002..43ce48503e 100644 --- a/code/modules/cargo/bounties/botany.dm +++ b/code/modules/cargo/bounties/botany.dm @@ -10,22 +10,23 @@ reward += multiplier * 1000 required_count = rand(5, 10) +//Easy Stuff (1200) + /datum/bounty/item/botany/ambrosia_vulgaris name = "Ambrosia Vulgaris Leaves" wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/ambrosia/vulgaris) foodtype = "stew" -/datum/bounty/item/botany/ambrosia_gaia - name = "Ambrosia Gaia Leaves" - wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/ambrosia/gaia) - multiplier = 4 - foodtype = "stew" +/datum/bounty/item/botany/pineapples + name = "Pineapples" + wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/pineapple) + bonus_desc = "Not for human consumption." + foodtype = "ashtray" -/datum/bounty/item/botany/apple_golden - name = "Golden Apples" - wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/apple/gold) - multiplier = 4 - foodtype = "dessert" +/datum/bounty/item/botany/tomato + name = "Tomatoes" + wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/tomato) + exclude_types = list(/obj/item/reagent_containers/food/snacks/grown/tomato/blue) /datum/bounty/item/botany/banana name = "Bananas" @@ -33,6 +34,66 @@ exclude_types = list(/obj/item/reagent_containers/food/snacks/grown/banana/bluespace) foodtype = "banana split" +/datum/bounty/item/botany/coconuts + name = "Coconuts" + wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/coconut) + +/datum/bounty/item/botany/wheat + name = "Wheat Grains" + wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/wheat) + +/datum/bounty/item/botany/rice + name = "Rice Grains" + wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/rice) + +/datum/bounty/item/botany/chili + name = "Chili Peppers" + wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/chili) + +/datum/bounty/item/botany/citrus_lime + name = "Limes" + wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/citrus/lime) + foodtype = "sorbet" + +/datum/bounty/item/botany/citrus_lemon + name = "Lemons" + wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/citrus/lemon) + foodtype = "sorbet" + +/datum/bounty/item/botany/citrus_oranges + name = "Oranges" + wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/citrus/orange) + bonus_desc = "Do not ship lemons or limes." //I vanted orahnge! + foodtype = "sorbet" + +/datum/bounty/item/botany/eggplant + name = "Eggplants" + wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/eggplant) + bonus_desc = "Not to be confused with egg-plants." + +/datum/bounty/item/botany/watermelon + name = "Watermelons" + wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/watermelon) + foodtype = "dessert" + +/datum/bounty/item/botany/glowshroom + name = "Glowshrooms" + wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/mushroom/glowshroom) + exclude_types = list(/obj/item/reagent_containers/food/snacks/grown/mushroom/glowshroom/glowcap, /obj/item/reagent_containers/food/snacks/grown/mushroom/glowshroom/shadowshroom) + foodtype = "omelet" + +//Medium Stuff (2400) + +/datum/bounty/item/botany/moonflower + name = "Moonflowers" + wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/moonflower) + multiplier = 2 + +/datum/bounty/item/botany/novaflower + name = "Novaflowers" + wanted_types = list(/obj/item/grown/novaflower) + multiplier = 2 + /datum/bounty/item/botany/banana_bluespace name = "Bluespace Bananas" wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/banana/bluespace) @@ -44,6 +105,16 @@ wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/koibeans) multiplier = 2 +/datum/bounty/item/botany/coffee_robusta + name = "Coffee Robusta Beans" + wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/coffee/robusta) + multiplier = 2 + +/datum/bounty/item/botany/steelcaps + name = "Steelcap Logs" + wanted_types = list(/obj/item/grown/log/steel) + multiplier = 2 + /datum/bounty/item/botany/berries_death name = "Death Berries" wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/berries/death) @@ -57,6 +128,78 @@ multiplier = 2 foodtype = "sorbet" +/datum/bounty/item/botany/chili + name = "Ice Chili Peppers" + wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/icepepper) + multiplier = 2 + +/datum/bounty/item/botany/chili + name = "Ghost Chili Peppers" + wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/ghost_chili) + multiplier = 2 + +/datum/bounty/item/botany/eggplant_eggy + name = "Egg-plants" + wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/shell/eggy) + bonus_desc = "Not to be confused with eggplants." + multiplier = 2 + +/datum/bounty/item/botany/watermelon_holy + name = "Holy Melons" + wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/holymelon) + multiplier = 2 + foodtype = "dessert" + +/datum/bounty/item/botany/glowshroom_cap + name = "Glowcaps" + wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/mushroom/glowshroom/glowcap) + multiplier = 2 + foodtype = "omelet" + +/datum/bounty/item/botany/glowshroom_shadow + name = "Shadowshrooms" + wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/mushroom/glowshroom/shadowshroom) + multiplier = 2 + foodtype = "omelet" + +/datum/bounty/item/botany/nettles_death + name = "Death Nettles" + wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/nettle/death) + multiplier = 2 + bonus_desc = "Wear protection when handling them." + foodtype = "cheese" + +//Harder Stuff (3600-7200) + +// /datum/bounty/item/botany/kudzu +// name = "Kudzu Pods" +// wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/kudzupod) +// bonus_desc = "Store in a dry, dark place." +// multiplier = 4 + +/datum/bounty/item/botany/bungopit + name = "Bungo Pits" + wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/bungopit) + bonus_desc = "Heartbreaker." + multiplier = 4 + +/datum/bounty/item/botany/ambrosia_gaia + name = "Ambrosia Gaia Leaves" + wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/ambrosia/gaia) + multiplier = 4 + foodtype = "stew" + +/datum/bounty/item/botany/apple_golden + name = "Golden Apples" + wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/apple/gold) + multiplier = 4 + foodtype = "dessert" + +/datum/bounty/item/botany/tomato_bluespace + name = "Bluespace Tomatoes" + wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/tomato/blue/bluespace) + multiplier = 4 + /datum/bounty/item/botany/cannabis name = "Cannabis Leaves" wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/cannabis) @@ -84,111 +227,4 @@ wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/cannabis/ultimate) multiplier = 6 bonus_desc = "Under no circumstances mention this shipment to security." - foodtype = "\"meal\"" - -/datum/bounty/item/botany/wheat - name = "Wheat Grains" - wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/wheat) - -/datum/bounty/item/botany/rice - name = "Rice Grains" - wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/rice) - -/datum/bounty/item/botany/chili - name = "Chili Peppers" - wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/chili) - -/datum/bounty/item/botany/chili - name = "Ice Chili Peppers" - wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/icepepper) - multiplier = 2 - -/datum/bounty/item/botany/chili - name = "Ghost Chili Peppers" - wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/ghost_chili) - multiplier = 2 - -/datum/bounty/item/botany/citrus_lime - name = "Limes" - wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/citrus/lime) - foodtype = "sorbet" - -/datum/bounty/item/botany/citrus_lemon - name = "Lemons" - wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/citrus/lemon) - foodtype = "sorbet" - -/datum/bounty/item/botany/citrus_oranges - name = "Oranges" - wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/citrus/orange) - bonus_desc = "Do not ship lemons or limes." //I vanted orahnge! - foodtype = "sorbet" - -/datum/bounty/item/botany/eggplant - name = "Eggplants" - wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/eggplant) - bonus_desc = "Not to be confused with egg-plants." - -/datum/bounty/item/botany/eggplant_eggy - name = "Egg-plants" - wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/shell/eggy) - bonus_desc = "Not to be confused with eggplants." - multiplier = 2 - -// /datum/bounty/item/botany/kudzu -// name = "Kudzu Pods" -// wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/kudzupod) -// bonus_desc = "Store in a dry, dark place." -// multiplier = 4 - -/datum/bounty/item/botany/watermelon - name = "Watermelons" - wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/watermelon) - foodtype = "dessert" - -/datum/bounty/item/botany/watermelon_holy - name = "Holy Melons" - wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/holymelon) - multiplier = 2 - foodtype = "dessert" - -/datum/bounty/item/botany/glowshroom - name = "Glowshrooms" - wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/mushroom/glowshroom) - exclude_types = list(/obj/item/reagent_containers/food/snacks/grown/mushroom/glowshroom/glowcap, /obj/item/reagent_containers/food/snacks/grown/mushroom/glowshroom/shadowshroom) - foodtype = "omelet" - -/datum/bounty/item/botany/glowshroom_cap - name = "Glowcaps" - wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/mushroom/glowshroom/glowcap) - multiplier = 2 - foodtype = "omelet" - -/datum/bounty/item/botany/glowshroom_shadow - name = "Shadowshrooms" - wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/mushroom/glowshroom/shadowshroom) - multiplier = 2 - foodtype = "omelet" - -/datum/bounty/item/botany/nettles_death - name = "Death Nettles" - wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/nettle/death) - multiplier = 2 - bonus_desc = "Wear protection when handling them." - foodtype = "cheese" - -/datum/bounty/item/botany/pineapples - name = "Pineapples" - wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/pineapple) - bonus_desc = "Not for human consumption." - foodtype = "ashtray" - -/datum/bounty/item/botany/tomato - name = "Tomatoes" - wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/tomato) - exclude_types = list(/obj/item/reagent_containers/food/snacks/grown/tomato/blue) - -/datum/bounty/item/botany/tomato_bluespace - name = "Bluespace Tomatoes" - wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/tomato/blue/bluespace) - multiplier = 4 + foodtype = "\"meal\"" \ No newline at end of file diff --git a/code/modules/cargo/bounties/chef.dm b/code/modules/cargo/bounties/chef.dm index 64e1710461..7f7f0b86e2 100644 --- a/code/modules/cargo/bounties/chef.dm +++ b/code/modules/cargo/bounties/chef.dm @@ -2,16 +2,17 @@ /datum/bounty/item/chef/soup name = "Soup" - description = "To quell the homeless uprising, Nanotrasen will be serving soup to all underpaid workers. Ship any type of soup." - reward = 700 - required_count = 3 + description = "To quell the homeless uprising, Nanotrasen will be serving soup to all underpaid workers. Ship any type of soup. Do NOT ship bowls of water." + reward = 1200 + required_count = 4 wanted_types = list(/obj/item/reagent_containers/food/snacks/soup) + exclude_types = list(/obj/item/reagent_containers/food/snacks/soup/wish) /datum/bounty/item/chef/icecreamsandwich name = "Ice Cream Sandwiches" description = "Upper management has been screaming non-stop for ice cream. Please send some." - reward = 800 - required_count = 3 + reward = 1200 + required_count = 5 wanted_types = list(/obj/item/reagent_containers/food/snacks/icecreamsandwich) /datum/bounty/item/chef/bread @@ -26,6 +27,13 @@ reward = 3142 wanted_types = list(/obj/item/reagent_containers/food/snacks/pie) +/datum/bounty/item/gardencook/khinkali + name = "Khinkali" + description = "Requesting -some khinki stuff- for a private staff party at Centcom." + reward = 2400 + required_count = 6 + wanted_types = list(/obj/item/reagent_containers/food/snacks/khinkali) + /datum/bounty/item/chef/salad name = "Salad or Rice Bowls" description = "CentCom management is going on a health binge. Your order is to ship salad or rice bowls." @@ -33,18 +41,6 @@ required_count = 3 wanted_types = list(/obj/item/reagent_containers/food/snacks/salad) -/datum/bounty/item/chef/superbite - name = "Super Bite Burger" - description = "Commander Tubbs thinks he can set a competitive eating world record. All he needs is a super bite burger shipped to him." - reward = 1800 - wanted_types = list(/obj/item/reagent_containers/food/snacks/burger/superbite) - -/datum/bounty/item/chef/poppypretzel - name = "Poppy Pretzel" - description = "Central Command needs a reason to fire their HR head. Send over a poppy pretzel to force a failed drug test." - reward = 3000 - wanted_types = list(/obj/item/reagent_containers/food/snacks/poppypretzel) - // /datum/bounty/item/chef/cubancarp // name = "Cuban Carp" // description = "To celebrate the birth of Castro XXVII, ship one cuban carp to CentCom." @@ -135,3 +131,9 @@ reward = 1200 required_count = 6 wanted_types = list(/obj/item/reagent_containers/food/snacks/sugarcookie) + +/datum/bounty/item/chef/bbqribs + description = "There's a debate around command as to weather or not ribs should be considered finger food, and we need a few delicious racks to process." + reward = 2250 + required_count = 3 + wanted_types = list(/obj/item/reagent_containers/food/snacks/bbqribs) \ No newline at end of file diff --git a/code/modules/cargo/bounties/gardencook.dm b/code/modules/cargo/bounties/gardencook.dm index b73cc2f9f8..6fdd9b2a3f 100644 --- a/code/modules/cargo/bounties/gardencook.dm +++ b/code/modules/cargo/bounties/gardencook.dm @@ -1,7 +1,7 @@ /datum/bounty/item/chef/birthday_cake name = "Birthday Cake" description = "Nanotrasen's birthday is coming up! Ship them a birthday cake to celebrate!" - reward = 1000 + reward = 1800 wanted_types = list(/obj/item/reagent_containers/food/snacks/store/cake/birthday, /obj/item/reagent_containers/food/snacks/cakeslice/birthday) /datum/bounty/item/gardencook/carrotfries @@ -21,24 +21,17 @@ /datum/bounty/item/gardencook/popcorn name = "Popcorn Bags" description = "Upper management wants to host a movie night. Ship bags of popcorn for the occasion." - reward = 800 + reward = 1200 required_count = 3 wanted_types = list(/obj/item/reagent_containers/food/snacks/popcorn) /datum/bounty/item/gardencook/onionrings name = "Onion Rings" description = "Nanotrasen is remembering Saturn day. Ship onion rings to show the station's support." - reward = 800 + reward = 1200 required_count = 3 wanted_types = list(/obj/item/reagent_containers/food/snacks/onionrings) -/datum/bounty/item/gardencook/khinkali - name = "Khinkali" - description = "Requesting -some khinki stuff- for a private staff party at Centcom" - reward = 2400 - required_count = 6 - wanted_types = list(/obj/item/reagent_containers/food/snacks/khinkali) - /datum/bounty/item/gardencook/bakedbeans name = "Beans" description = "Management wants to make sure we have a fallback shelter to rely on. Prepare some beans to stock it with." @@ -51,3 +44,22 @@ description = "Something sticky, something fun, ship us a honeybun." reward = 3500 wanted_types = list(/obj/item/reagent_containers/food/snacks/honeybun) + +/datum/bounty/item/chef/superbite + name = "Super Bite Burger" //Salt, Pepper, Boiled Egg, 5 Steak, 4 Tomato, 3 Cheese, Bacon, and a Bun. Should be more than 1800. + description = "Commander Tubbs thinks he can set a competitive eating world record. All he needs is a super bite burger shipped to him." + reward = 2750 + wanted_types = list(/obj/item/reagent_containers/food/snacks/burger/superbite) + +/datum/bounty/item/chef/poppypretzel + name = "Poppy Pretzel" + description = "Central Command needs a reason to fire their HR head. Send over a poppy pretzel to force a failed drug test." + reward = 1800 + wanted_types = list(/obj/item/reagent_containers/food/snacks/poppypretzel) + +/datum/bounty/item/chef/fiestaskewer + name = "Fiesta Skewer" + description = "Apparently people are putting vegetables on kebabs now. Central Command has taken an interest in this turn of events and would like to know more." + reward = 2600 + required_count = 3 + wanted_types = list(/obj/item/reagent_containers/food/snacks/kebab/fiesta) \ No newline at end of file diff --git a/code/modules/cargo/bounties/medical.dm b/code/modules/cargo/bounties/medical.dm index 22964e1fb7..7afc0d8786 100644 --- a/code/modules/cargo/bounties/medical.dm +++ b/code/modules/cargo/bounties/medical.dm @@ -121,7 +121,7 @@ /datum/bounty/item/medical/defibrillator name = "New defibillators" - description = "After years of storge are defibrillator units have become more liabilities then we want. Please send us some new ones to replace these old ones." + description = "After years of storge our defib units have become liabilities. Please send us some new ones." reward = 2250 required_count = 5 wanted_types = list(/obj/item/defibrillator) diff --git a/code/modules/cargo/bounties/science.dm b/code/modules/cargo/bounties/science.dm index 6102d8d685..c543872565 100644 --- a/code/modules/cargo/bounties/science.dm +++ b/code/modules/cargo/bounties/science.dm @@ -25,7 +25,7 @@ /datum/bounty/item/science/nightvision_goggles name = "Night Vision Goggles" description = "An electrical storm has busted all the lights at CentCom. While management is waiting for replacements, perhaps some night vision goggles can be shipped?" - reward = 1000 + reward = 1250 wanted_types = list(/obj/item/clothing/glasses/night, /obj/item/clothing/glasses/meson/night, /obj/item/clothing/glasses/hud/health/night, /obj/item/clothing/glasses/hud/security/night, /obj/item/clothing/glasses/hud/diagnostic/night) /datum/bounty/item/science/experimental_welding_tool @@ -55,7 +55,7 @@ /datum/bounty/item/science/advanced_mop name = "Advanced Mop" - description = "Excuse me. I'd like to request $17 for a push broom rebristling. Either that, or an advanced mop." + description = "Excuse me. I'd like to request 17 credits for a push broom rebristling. Either that, or an advanced mop." reward = 3000 wanted_types = list(/obj/item/mop/advanced) @@ -108,7 +108,7 @@ wanted_types = list(/obj/item/stock_parts/micro_laser/quadultra) /datum/bounty/item/science/fakecrystals - name = "synthetic bluespace crystals" + name = "Synthetic Bluespace Crystals" description = "Don't, uh, tell anyone, but one of our BSA arrays might have had a little... accident. Send us some bluespace crystals so we can recalibrate it before anyone realizes. The whole set uses artificial bluespace crystals, so we need and not any other type of bluespace crystals..." reward = 8000 required_count = 5 diff --git a/code/modules/cargo/bounties/silly.dm b/code/modules/cargo/bounties/silly.dm index b88ec9f192..4add4e86e7 100644 --- a/code/modules/cargo/bounties/silly.dm +++ b/code/modules/cargo/bounties/silly.dm @@ -51,4 +51,17 @@ name = "Strange Object" description = "Nanotrasen has taken an interest in strange objects. Find one in maint, and ship it off to CentCom right away." reward = 1000 - wanted_types = list(/obj/item/relic) \ No newline at end of file + wanted_types = list(/obj/item/relic) + +/datum/bounty/item/silly/coconut_bong + name = "Coconut Bong" + description = "Duuuude, what if we like, carved out a coconut, and smoked some stuff in it. It'd be like, coconut flavored maaaaaan." + reward = 2750 + wanted_types = list(obj/item/bong/coconut) + +/datum/bounty/item/silly/toy_swords + name = "Toy Swords" + description = "Nanotrasen has secured a contract in a reenactment of a famous movie, but we only have lethal energy based swords. Send us some convincing replicas so we save on medical costs." + reward = 1200 + required_count = 3 + wanted_types = list(/obj/item/toy/sword, /obj/item/toy/sword/cx) \ No newline at end of file diff --git a/code/modules/vending/cigarette.dm b/code/modules/vending/cigarette.dm index ce5f0bf03a..b3c544bbfa 100644 --- a/code/modules/vending/cigarette.dm +++ b/code/modules/vending/cigarette.dm @@ -13,7 +13,8 @@ /obj/item/lighter/greyscale = 4, /obj/item/storage/fancy/rollingpapers = 5) contraband = list(/obj/item/lighter = 3, - /obj/item/clothing/mask/vape = 5) + /obj/item/clothing/mask/vape = 5, + /obj/item/storage/fancy/cigarettes/cigpack_shadyjims = 3) premium = list(/obj/item/storage/fancy/cigarettes/cigpack_robustgold = 3, /obj/item/storage/fancy/cigarettes/cigars = 1, /obj/item/storage/fancy/cigarettes/cigars/havana = 1, From 2b3f00ed1edcafee052e3fab33451a70f7992fdf Mon Sep 17 00:00:00 2001 From: r4d6 Date: Sat, 18 Jan 2020 22:16:43 -0500 Subject: [PATCH 046/123] Fix Freezer overlay bug --- code/modules/atmospherics/machinery/atmosmachinery.dm | 5 +++-- .../machinery/components/binary_devices/dp_vent_pump.dm | 3 +-- .../atmospherics/machinery/components/components_base.dm | 8 ++------ .../machinery/components/trinary_devices/filter.dm | 5 ++--- .../machinery/components/trinary_devices/mixer.dm | 5 ++--- .../machinery/components/unary_devices/passive_vent.dm | 2 +- .../components/unary_devices/portables_connector.dm | 3 +-- .../machinery/components/unary_devices/thermomachine.dm | 2 ++ .../machinery/components/unary_devices/vent_pump.dm | 3 +-- .../machinery/components/unary_devices/vent_scrubber.dm | 3 +-- .../modules/atmospherics/machinery/pipes/layermanifold.dm | 4 ++-- 11 files changed, 18 insertions(+), 25 deletions(-) diff --git a/code/modules/atmospherics/machinery/atmosmachinery.dm b/code/modules/atmospherics/machinery/atmosmachinery.dm index e4e6274662..c533117951 100644 --- a/code/modules/atmospherics/machinery/atmosmachinery.dm +++ b/code/modules/atmospherics/machinery/atmosmachinery.dm @@ -244,19 +244,20 @@ transfer_fingerprints_to(stored) ..() -/obj/machinery/atmospherics/proc/getpipeimage(iconset, iconstate, direction, col=rgb(255,255,255)) +/obj/machinery/atmospherics/proc/getpipeimage(iconset, iconstate, direction, col=rgb(255,255,255), piping_layer=2) //Add identifiers for the iconset if(iconsetids[iconset] == null) iconsetids[iconset] = num2text(iconsetids.len + 1) //Generate a unique identifier for this image combination - var/identifier = iconsetids[iconset] + "_[iconstate]_[direction]_[col]" + var/identifier = iconsetids[iconset] + "_[iconstate]_[direction]_[col]_[piping_layer]" if((!(. = pipeimages[identifier]))) var/image/pipe_overlay pipe_overlay = . = pipeimages[identifier] = image(iconset, iconstate, dir = direction) pipe_overlay.color = col + PIPING_LAYER_SHIFT(pipe_overlay, piping_layer) /obj/machinery/atmospherics/on_construction(obj_color, set_layer) if(can_unwrench) diff --git a/code/modules/atmospherics/machinery/components/binary_devices/dp_vent_pump.dm b/code/modules/atmospherics/machinery/components/binary_devices/dp_vent_pump.dm index c4e9b1f200..9238b8602b 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/dp_vent_pump.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/dp_vent_pump.dm @@ -38,8 +38,7 @@ /obj/machinery/atmospherics/components/binary/dp_vent_pump/update_icon_nopipes() cut_overlays() if(showpipe) - var/image/cap = getpipeimage(icon, "dpvent_cap", dir) - PIPING_LAYER_SHIFT(cap, piping_layer) + var/image/cap = getpipeimage(icon, "dpvent_cap", dir, piping_layer = piping_layer) add_overlay(cap) if(!on || !is_operational()) diff --git a/code/modules/atmospherics/machinery/components/components_base.dm b/code/modules/atmospherics/machinery/components/components_base.dm index 1f5cd8b150..ff2a655aac 100644 --- a/code/modules/atmospherics/machinery/components/components_base.dm +++ b/code/modules/atmospherics/machinery/components/components_base.dm @@ -58,13 +58,9 @@ /obj/machinery/atmospherics/components/proc/get_pipe_underlay(state, dir, color = null) if(color) - . = getpipeimage('icons/obj/atmospherics/components/binary_devices.dmi', state, dir, color) + . = getpipeimage('icons/obj/atmospherics/components/binary_devices.dmi', state, dir, color, piping_layer = shift_underlay_only ? piping_layer : 2) else - . = getpipeimage('icons/obj/atmospherics/components/binary_devices.dmi', state, dir) - - if(shift_underlay_only) - var/image/I = . - PIPING_LAYER_SHIFT(I, piping_layer) + . = getpipeimage('icons/obj/atmospherics/components/binary_devices.dmi', state, dir, piping_layer = shift_underlay_only ? piping_layer : 2) // Pipenet stuff; housekeeping diff --git a/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm b/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm index 22249d5fff..2fd1bdc121 100644 --- a/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm +++ b/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm @@ -60,11 +60,10 @@ var/image/cap if(node) - cap = getpipeimage(icon, "cap", direction, node.pipe_color) + cap = getpipeimage(icon, "cap", direction, node.pipe_color, piping_layer = piping_layer) else - cap = getpipeimage(icon, "cap", direction) + cap = getpipeimage(icon, "cap", direction, piping_layer = piping_layer) - PIPING_LAYER_SHIFT(cap, piping_layer) add_overlay(cap) return ..() diff --git a/code/modules/atmospherics/machinery/components/trinary_devices/mixer.dm b/code/modules/atmospherics/machinery/components/trinary_devices/mixer.dm index 60db07bb75..8c7d82d549 100644 --- a/code/modules/atmospherics/machinery/components/trinary_devices/mixer.dm +++ b/code/modules/atmospherics/machinery/components/trinary_devices/mixer.dm @@ -52,11 +52,10 @@ var/image/cap if(node) - cap = getpipeimage(icon, "cap", direction, node.pipe_color) + cap = getpipeimage(icon, "cap", direction, node.pipe_color, piping_layer = piping_layer) else - cap = getpipeimage(icon, "cap", direction) + cap = getpipeimage(icon, "cap", direction, piping_layer = piping_layer) - PIPING_LAYER_SHIFT(cap, piping_layer) add_overlay(cap) return ..() diff --git a/code/modules/atmospherics/machinery/components/unary_devices/passive_vent.dm b/code/modules/atmospherics/machinery/components/unary_devices/passive_vent.dm index e4c44c45a4..6f8386374e 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/passive_vent.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/passive_vent.dm @@ -13,7 +13,7 @@ /obj/machinery/atmospherics/components/unary/passive_vent/update_icon_nopipes() cut_overlays() if(showpipe) - var/image/cap = getpipeimage(icon, "vent_cap", initialize_directions) + var/image/cap = getpipeimage(icon, "vent_cap", initialize_directions, piping_layer = piping_layer) add_overlay(cap) icon_state = "passive_vent" diff --git a/code/modules/atmospherics/machinery/components/unary_devices/portables_connector.dm b/code/modules/atmospherics/machinery/components/unary_devices/portables_connector.dm index de89cb0973..81ca14a828 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/portables_connector.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/portables_connector.dm @@ -26,8 +26,7 @@ /obj/machinery/atmospherics/components/unary/portables_connector/update_icon_nopipes() icon_state = "connector" if(showpipe) - var/image/cap = getpipeimage(icon, "connector_cap", initialize_directions) - PIPING_LAYER_SHIFT(cap, piping_layer) + var/image/cap = getpipeimage(icon, "connector_cap", initialize_directions, piping_layer = piping_layer) add_overlay(cap) /obj/machinery/atmospherics/components/unary/portables_connector/process_atmos() diff --git a/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm b/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm index a7a9e13e26..c69c4c47b0 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm @@ -41,12 +41,14 @@ /obj/machinery/atmospherics/components/unary/thermomachine/update_icon() cut_overlays() + if(panel_open) icon_state = icon_state_open else if(on && is_operational()) icon_state = icon_state_on else icon_state = icon_state_off + add_overlay(getpipeimage(icon, "pipe", dir, , piping_layer)) /obj/machinery/atmospherics/components/unary/thermomachine/update_icon_nopipes() diff --git a/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm b/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm index 1143412358..3cbf1b4d0e 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm @@ -50,8 +50,7 @@ /obj/machinery/atmospherics/components/unary/vent_pump/update_icon_nopipes() cut_overlays() if(showpipe) - var/image/cap = getpipeimage(icon, "vent_cap", initialize_directions) - PIPING_LAYER_SHIFT(cap, piping_layer) + var/image/cap = getpipeimage(icon, "vent_cap", initialize_directions, piping_layer = piping_layer) add_overlay(cap) if(welded) diff --git a/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm b/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm index ffcaa7cc04..22cd9d7fca 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm @@ -68,8 +68,7 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/update_icon_nopipes() cut_overlays() if(showpipe) - var/image/cap = getpipeimage(icon, "scrub_cap", initialize_directions) - PIPING_LAYER_SHIFT(cap, piping_layer) + var/image/cap = getpipeimage(icon, "scrub_cap", initialize_directions, piping_layer = piping_layer) add_overlay(cap) if(welded) diff --git a/code/modules/atmospherics/machinery/pipes/layermanifold.dm b/code/modules/atmospherics/machinery/pipes/layermanifold.dm index 39e3313da2..b98098584f 100644 --- a/code/modules/atmospherics/machinery/pipes/layermanifold.dm +++ b/code/modules/atmospherics/machinery/pipes/layermanifold.dm @@ -60,9 +60,9 @@ var/image/I if(p_color) - I = getpipeimage(icon, "pipe", p_dir, p_color) + I = getpipeimage(icon, "pipe", p_dir, p_color, piping_layer = piping_layer) else - I = getpipeimage(icon, "pipe", p_dir) + I = getpipeimage(icon, "pipe", p_dir, piping_layer = piping_layer) I.layer = layer - 0.01 PIPING_LAYER_SHIFT(I, p_layer) From 703fe9399a2acbf4e645972299d99ea204fc1455 Mon Sep 17 00:00:00 2001 From: Winter Flare <7543955+Owai-Seek@users.noreply.github.com> Date: Sat, 18 Jan 2020 22:29:21 -0500 Subject: [PATCH 047/123] Some more balance and a fix. --- code/modules/cargo/bounties/engineering.dm | 8 ++++---- code/modules/cargo/bounties/silly.dm | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/code/modules/cargo/bounties/engineering.dm b/code/modules/cargo/bounties/engineering.dm index 1f16788c4d..99e6aa2bdc 100644 --- a/code/modules/cargo/bounties/engineering.dm +++ b/code/modules/cargo/bounties/engineering.dm @@ -40,14 +40,14 @@ /datum/bounty/item/engineering/microwave name = "Microwaves" description = "Due to a shortage of microwaves, our chefs are incapable of keeping up with our sheer volume of orders. We need at least three microwaves to keep up with our crew's dietary habits." - reward = 1000 + reward = 2000 required_count = 3 wanted_types = list(/obj/machinery/microwave) /datum/bounty/item/engineering/hydroponicstrays name = "Hydroponics Tray" description = "The garden has become a hot spot of late, they need a few more hydroponics tray to grow more flowers." - reward = 1500 + reward = 2500 required_count = 5 wanted_types = list(/obj/machinery/hydroponics) @@ -75,14 +75,14 @@ /datum/bounty/item/engineering/arcadetrail name = "Orion Trail Arcade Games" description = "The staff have nothing to do when off-work. Can you send us some Orion Trail games to play?" - reward = 1500 + reward = 2500 required_count = 5 wanted_types = list(/obj/machinery/computer/arcade/orion_trail) /datum/bounty/item/engineering/arcadebattle name = "Battle Arcade Games" description = "The staff have nothing to do when off-work. Can you send us some Battle Arcade games to play?" - reward = 1500 + reward = 2500 required_count = 5 wanted_types = list(/obj/machinery/computer/arcade/battle) diff --git a/code/modules/cargo/bounties/silly.dm b/code/modules/cargo/bounties/silly.dm index 4add4e86e7..f790126cf2 100644 --- a/code/modules/cargo/bounties/silly.dm +++ b/code/modules/cargo/bounties/silly.dm @@ -57,7 +57,7 @@ name = "Coconut Bong" description = "Duuuude, what if we like, carved out a coconut, and smoked some stuff in it. It'd be like, coconut flavored maaaaaan." reward = 2750 - wanted_types = list(obj/item/bong/coconut) + wanted_types = list(/obj/item/bong/coconut) /datum/bounty/item/silly/toy_swords name = "Toy Swords" From 5d4732ed30ddc901f72bd354714a45a76027f2f4 Mon Sep 17 00:00:00 2001 From: Winter Flare <7543955+Owai-Seek@users.noreply.github.com> Date: Sat, 18 Jan 2020 22:36:20 -0500 Subject: [PATCH 048/123] Update assistant.dm --- code/modules/cargo/bounties/assistant.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/cargo/bounties/assistant.dm b/code/modules/cargo/bounties/assistant.dm index 84d3fd3626..2e53d29001 100644 --- a/code/modules/cargo/bounties/assistant.dm +++ b/code/modules/cargo/bounties/assistant.dm @@ -208,7 +208,7 @@ wanted_types = list(/obj/item/shield/makeshift) /datum/bounty/item/assistant/toolbelts - name = "Tool Belts" //Made it 4 so you can't just buy one set of toolbelts to finish the bounty. + name = "Tool Belts" //Made it 5 so you can't just buy one set of toolbelts to finish the bounty. description = "These things always seem to go missing. Ship us a few to help us restock." reward = 1350 required_count = 5 @@ -226,4 +226,4 @@ description = "Have you ever launched a tennis ball, newspaper, or ***** at someones head from across the room? No? We haven't either. Help us rectify this." reward = "2000" required_count = 2 - wanted_types = list(/obj/item/pneumatic_cannon/ghetto) \ No newline at end of file + wanted_types = list(/obj/item/pneumatic_cannon/ghetto) From 72e2961972842823531d487400a869a0765370b5 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Sat, 18 Jan 2020 21:34:24 -0700 Subject: [PATCH 049/123] Update PDA.dm --- code/game/objects/items/devices/PDA/PDA.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index e145e2c967..e6a46983c1 100644 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -847,7 +847,7 @@ GLOBAL_LIST_EMPTY(PDAs) send_message(U,list(P)) /obj/item/pda/proc/block_pda(mob/user, obj/item/pda/P) - to_chat(user, "[icon2html(src, user)] [P.owner] blocked from messages. Use "Messenger" function PDA list to unblock.") + to_chat(user, "[icon2html(src, user)] [P.owner] blocked from messages. Use the messenger PDA list to unblock.") LAZYOR(blocked_pdas, P.owner) /obj/item/pda/proc/unblock_pda(mob/user, unblock_target) From 590d71ddc111c0e3eb02f54559fce3851c000de4 Mon Sep 17 00:00:00 2001 From: Hatterhat Date: Sat, 18 Jan 2020 23:35:52 -0600 Subject: [PATCH 050/123] hey ghom i fixed it i think --- code/game/machinery/cell_charger.dm | 2 +- code/game/machinery/cloning.dm | 2 +- code/game/machinery/dna_scanner.dm | 6 +++--- code/game/machinery/doors/firedoor.dm | 2 +- code/game/machinery/harvester.dm | 2 +- code/game/machinery/hologram.dm | 4 ++-- code/game/machinery/launch_pad.dm | 4 ++-- code/game/machinery/limbgrower.dm | 4 ++-- code/game/machinery/recharger.dm | 18 +++++++++++++++--- code/game/machinery/rechargestation.dm | 4 ++-- code/game/machinery/spaceheater.dm | 2 +- code/game/machinery/teleporter.dm | 12 ++++++------ code/game/mecha/mech_bay.dm | 4 ++-- code/game/mecha/mech_fabricator.dm | 4 ++-- .../game/objects/items/devices/laserpointer.dm | 6 +++--- .../machinery/components/unary_devices/cryo.dm | 4 ++-- .../kitchen_machinery/deep_fryer.dm | 2 +- .../kitchen_machinery/gibber.dm | 6 +++--- .../kitchen_machinery/monkeyrecycler.dm | 4 ++-- .../kitchen_machinery/processor.dm | 4 ++-- .../kitchen_machinery/smartfridge.dm | 4 ++-- code/modules/hydroponics/biogenerator.dm | 4 ++-- code/modules/hydroponics/hydroponics.dm | 4 ++-- code/modules/hydroponics/seed_extractor.dm | 4 ++-- code/modules/power/port_gen.dm | 2 +- code/modules/power/rtg.dm | 4 ++-- code/modules/power/singularity/emitter.dm | 4 ++-- code/modules/power/tesla/coil.dm | 4 ++-- code/modules/power/turbine.dm | 8 ++++---- .../chemistry/machinery/chem_dispenser.dm | 4 +++- .../chemistry/machinery/chem_heater.dm | 4 ++-- code/modules/research/experimentor.dm | 6 +++--- code/modules/research/machinery/_production.dm | 2 +- .../modules/research/nanites/nanite_chamber.dm | 4 ++-- 34 files changed, 84 insertions(+), 70 deletions(-) diff --git a/code/game/machinery/cell_charger.dm b/code/game/machinery/cell_charger.dm index 2c3a6fa18b..fc6cac785a 100644 --- a/code/game/machinery/cell_charger.dm +++ b/code/game/machinery/cell_charger.dm @@ -29,7 +29,7 @@ if(charging) . += "Current charge: [round(charging.percent(), 1)]%." if(in_range(user, src) || isobserver(user)) - to_chat(user, "The status display reads: Charge rate at [charge_rate]J per cycle.") + . += "The status display reads: Charge rate at [charge_rate]J per cycle." /obj/machinery/cell_charger/attackby(obj/item/W, mob/user, params) if(istype(W, /obj/item/stock_parts/cell) && !panel_open) diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm index ba5c4c9998..711b221c54 100644 --- a/code/game/machinery/cloning.dm +++ b/code/game/machinery/cloning.dm @@ -106,7 +106,7 @@ if(mess) . += "It's filled with blood and viscera. You swear you can see it moving..." if(in_range(user, src) || isobserver(user)) - to_chat(user, "The status display reads: Speed [speed_coeff*50]%.
    Predicted amount of cellular damage: [100-heal_level]%.") + . += "The status display reads: Cloning speed at [speed_coeff*50]%.
    Predicted amount of cellular damage: [100-heal_level]%.
    " if(efficiency > 5) to_chat(user, "Pod has been upgraded to support autoprocessing.") if(is_operational() && mob_occupant) diff --git a/code/game/machinery/dna_scanner.dm b/code/game/machinery/dna_scanner.dm index 648e9f5e71..cff2e361bd 100644 --- a/code/game/machinery/dna_scanner.dm +++ b/code/game/machinery/dna_scanner.dm @@ -28,11 +28,11 @@ damage_coeff = P.rating /obj/machinery/dna_scannernew/examine(mob/user) - ..() + . = ..() if(in_range(user, src) || isobserver(user)) - to_chat(user, "The status display reads: Radiation pulse accuracy increased by factor [precision_coeff**2].
    Radiation pulse damage decreased by factor [damage_coeff**2].") + . += "The status display reads: Radiation pulse accuracy increased by factor [precision_coeff**2].
    Radiation pulse damage decreased by factor [damage_coeff**2].
    " if(scan_level >= 3) - to_chat(user, "Scanner has been upgraded to support autoprocessing.") + . += "Scanner has been upgraded to support autoprocessing." /obj/machinery/dna_scannernew/update_icon() diff --git a/code/game/machinery/doors/firedoor.dm b/code/game/machinery/doors/firedoor.dm index 0429db5792..f5bf8c8a1b 100644 --- a/code/game/machinery/doors/firedoor.dm +++ b/code/game/machinery/doors/firedoor.dm @@ -32,7 +32,7 @@ CalculateAffectingAreas() /obj/machinery/door/firedoor/examine(mob/user) - ..() + . = ..() if(!density) . += "It is open, but could be pried closed." else if(!welded) diff --git a/code/game/machinery/harvester.dm b/code/game/machinery/harvester.dm index 40e898e29c..40430b37b7 100644 --- a/code/game/machinery/harvester.dm +++ b/code/game/machinery/harvester.dm @@ -193,4 +193,4 @@ else if(!harvesting) . += "Alt-click [src] to start harvesting." if(in_range(user, src) || isobserver(user)) - to_chat(user, "The status display reads: Harvest speed at [interval*0.1] seconds per organ.") + . += "The status display reads: Harvest speed at [interval*0.1] seconds per organ." diff --git a/code/game/machinery/hologram.dm b/code/game/machinery/hologram.dm index 53a75445c0..f3e446c686 100644 --- a/code/game/machinery/hologram.dm +++ b/code/game/machinery/hologram.dm @@ -144,9 +144,9 @@ GLOBAL_LIST_EMPTY(network_holopads) holo_range = holograph_range /obj/machinery/holopad/examine(mob/user) - ..() + . = ..() if(in_range(user, src) || isobserver(user)) - to_chat(user, "The status display reads: Current projection range: [holo_range] units.") + . += "The status display reads: Current projection range: [holo_range] units." /obj/machinery/holopad/attackby(obj/item/P, mob/user, params) if(default_deconstruction_screwdriver(user, "holopad_open", "holopad0", P)) diff --git a/code/game/machinery/launch_pad.dm b/code/game/machinery/launch_pad.dm index 4a51a7b0c5..b4a9584368 100644 --- a/code/game/machinery/launch_pad.dm +++ b/code/game/machinery/launch_pad.dm @@ -24,9 +24,9 @@ range = E /obj/machinery/launchpad/examine(mob/user) - ..() + . = ..() if(in_range(user, src) || isobserver(user)) - to_chat(user, "The status display reads: Maximum range: [range] units.") + . += "The status display reads: Maximum range: [range] units." /obj/machinery/launchpad/attackby(obj/item/I, mob/user, params) if(stationary) diff --git a/code/game/machinery/limbgrower.dm b/code/game/machinery/limbgrower.dm index 9c2bd0744b..28afea817b 100644 --- a/code/game/machinery/limbgrower.dm +++ b/code/game/machinery/limbgrower.dm @@ -159,9 +159,9 @@ prod_coeff = min(1,max(0,T)) // Coeff going 1 -> 0,8 -> 0,6 -> 0,4 /obj/machinery/limbgrower/examine(mob/user) - ..() + . = ..() if(in_range(user, src) || isobserver(user)) - to_chat(user, "The status display reads: Storing up to [reagents.maximum_volume]u of synthflesh.
    Synthflesh consumption at [prod_coeff*100]%.") + . += "The status display reads: Storing up to [reagents.maximum_volume]u of synthflesh.
    Synthflesh consumption at [prod_coeff*100]%." /obj/machinery/limbgrower/proc/main_win(mob/user) var/dat = "

    Limb Grower Menu:


    " diff --git a/code/game/machinery/recharger.dm b/code/game/machinery/recharger.dm index 373fb4df37..2211397f3e 100755 --- a/code/game/machinery/recharger.dm +++ b/code/game/machinery/recharger.dm @@ -24,9 +24,21 @@ recharge_coeff = C.rating /obj/machinery/recharger/examine(mob/user) - ..() - if(in_range(user, src) || isobserver(user)) - to_chat(user, "The status display reads: Recharging [recharge_coeff*10]% cell charge per cycle.") + . = ..() + if(!in_range(user, src) && !issilicon(user) && !isobserver(user)) + . += "You're too far away to examine [src]'s contents and display!" + return + + if(charging) + . += {"\The [src] contains: + - \A [charging]."} + + if(!(stat & (NOPOWER|BROKEN))) + . += "The status display reads:" + . += "- Recharging [recharge_coeff*10]% cell charge per cycle." + if(charging) + var/obj/item/stock_parts/cell/C = charging.get_cell() + . += "- \The [charging]'s cell is at [C.percent()]%." /obj/machinery/recharger/proc/setCharging(new_charging) charging = new_charging diff --git a/code/game/machinery/rechargestation.dm b/code/game/machinery/rechargestation.dm index 9667386790..374c0c71b9 100644 --- a/code/game/machinery/rechargestation.dm +++ b/code/game/machinery/rechargestation.dm @@ -51,9 +51,9 @@ recharge_speed *= C.maxcharge / 10000 /obj/machinery/recharge_station/examine(mob/user) - ..() + . = ..() if(in_range(user, src) || isobserver(user)) - to_chat(user, "The status display reads: Recharging [recharge_speed]J per cycle.") + . += "The status display reads: Recharging [recharge_speed]J per cycle." if(repairs) to_chat(user, "[src] has been upgraded to support automatic repairs.") diff --git a/code/game/machinery/spaceheater.dm b/code/game/machinery/spaceheater.dm index 968ff69e66..6eca52aa0e 100644 --- a/code/game/machinery/spaceheater.dm +++ b/code/game/machinery/spaceheater.dm @@ -53,7 +53,7 @@ else . += "There is no power cell installed." if(in_range(user, src) || isobserver(user)) - to_chat(user, "The status display reads: Temperature range at [settableTemperatureRange]°C.
    Heating power at [heatingPower*0.001]kJ.
    Power consumption at [(efficiency*-0.0025)+150]%.") //100%, 75%, 50%, 25% + . += "The status display reads: Temperature range at [settableTemperatureRange]°C.
    Heating power at [heatingPower*0.001]kJ.
    Power consumption at [(efficiency*-0.0025)+150]%." //100%, 75%, 50%, 25% /obj/machinery/space_heater/update_icon() if(on) diff --git a/code/game/machinery/teleporter.dm b/code/game/machinery/teleporter.dm index 3a52e652d3..3cc71df0f1 100644 --- a/code/game/machinery/teleporter.dm +++ b/code/game/machinery/teleporter.dm @@ -32,9 +32,9 @@ accuracy = A /obj/machinery/teleport/hub/examine(mob/user) - ..() + . = ..() if(in_range(user, src) || isobserver(user)) - to_chat(user, "The status display reads: Probability of malfunction decreased by [(accuracy*25)-25]%.") + . += "The status display reads: Probability of malfunction decreased by [(accuracy*25)-25]%." /obj/machinery/teleport/hub/proc/link_power_station() if(power_station) @@ -131,13 +131,13 @@ efficiency = E - 1 /obj/machinery/teleport/station/examine(mob/user) - ..() + . = ..() if(!panel_open) - to_chat(user, "The panel is screwed in, obstructing the linking device and wiring panel.") + . += "The panel is screwed in, obstructing the linking device and wiring panel." else - to_chat(user, "The linking device is now able to be scanned with a multitool.
    The wiring can be connected to a nearby console and hub with a pair of wirecutters.
    ") + . += "The linking device is now able to be scanned with a multitool.
    The wiring can be connected to a nearby console and hub with a pair of wirecutters.
    " if(in_range(user, src) || isobserver(user)) - to_chat(user, "The status display reads: This station can be linked to [efficiency] other station(s).") + . += "The status display reads: This station can be linked to [efficiency] other station(s)." /obj/machinery/teleport/station/proc/link_console_and_hub() for(var/direction in GLOB.cardinals) diff --git a/code/game/mecha/mech_bay.dm b/code/game/mecha/mech_bay.dm index 9903fa00b1..90f037c279 100644 --- a/code/game/mecha/mech_bay.dm +++ b/code/game/mecha/mech_bay.dm @@ -37,9 +37,9 @@ max_charge = MC * 25 /obj/machinery/mech_bay_recharge_port/examine(mob/user) - ..() + . = ..() if(in_range(user, src) || isobserver(user)) - to_chat(user, "The status display reads: Base recharge rate at [max_charge]J per cycle.") + . += "The status display reads: Base recharge rate at [max_charge]J per cycle." /obj/machinery/mech_bay_recharge_port/process() if(stat & NOPOWER || !recharge_console) diff --git a/code/game/mecha/mech_fabricator.dm b/code/game/mecha/mech_fabricator.dm index 2e95894361..98e4eb4258 100644 --- a/code/game/mecha/mech_fabricator.dm +++ b/code/game/mecha/mech_fabricator.dm @@ -63,10 +63,10 @@ time_coeff = round(initial(time_coeff) - (initial(time_coeff)*(T))/5,0.01) /obj/machinery/mecha_part_fabricator/examine(mob/user) - ..() + . = ..() var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) if(in_range(user, src) || isobserver(user)) - to_chat(user, "The status display reads: Storing up to [materials.max_amount] material units.
    Material consumption at [component_coeff*100]%.
    Build time reduced by [100-time_coeff*100]%.") + . += "The status display reads: Storing up to [materials.max_amount] material units.
    Material consumption at [component_coeff*100]%.
    Build time reduced by [100-time_coeff*100]%.
    " /obj/machinery/mecha_part_fabricator/emag_act() . = ..() diff --git a/code/game/objects/items/devices/laserpointer.dm b/code/game/objects/items/devices/laserpointer.dm index 51485e4925..1f2f1ddda2 100644 --- a/code/game/objects/items/devices/laserpointer.dm +++ b/code/game/objects/items/devices/laserpointer.dm @@ -57,12 +57,12 @@ return ..() /obj/item/laser_pointer/examine(mob/user) - ..() + . = ..() if(in_range(user, src) || isobserver(user)) if(!diode) - to_chat(user, "The diode is missing.") + . += "The diode is missing." else - to_chat(user, "A class [diode.rating] laser diode is installed. It is screwed in place.") + . += "A class [diode.rating] laser diode is installed. It is screwed in place." /obj/item/laser_pointer/afterattack(atom/target, mob/living/user, flag, params) . = ..() diff --git a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm index 0eabc652c4..539b5ce57a 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm @@ -58,9 +58,9 @@ conduction_coefficient = initial(conduction_coefficient) * C /obj/machinery/atmospherics/components/unary/cryo_cell/examine(mob/user) //this is leaving out everything but efficiency since they follow the same idea of "better matter bin, better results" - ..() + . = ..() if(in_range(user, src) || isobserver(user)) - to_chat(user, "The status display reads: Efficiency at [efficiency*100]%.") + . += "The status display reads: Efficiency at [efficiency*100]%." /obj/machinery/atmospherics/components/unary/cryo_cell/Destroy() QDEL_NULL(radio) diff --git a/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm b/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm index 253dfcd728..f3b8e466f3 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm @@ -71,7 +71,7 @@ God bless America. if(frying) . += "You can make out \a [frying] in the oil." if(in_range(user, src) || isobserver(user)) - to_chat(user, "The status display reads: Frying at [fry_speed*100]% speed.
    Using [oil_use*10] units of oil per second.") + . += "The status display reads: Frying at [fry_speed*100]% speed.
    Using [oil_use*10] units of oil per second.
    " /obj/machinery/deepfryer/attackby(obj/item/I, mob/user) if(istype(I, /obj/item/reagent_containers/pill)) diff --git a/code/modules/food_and_drinks/kitchen_machinery/gibber.dm b/code/modules/food_and_drinks/kitchen_machinery/gibber.dm index 1369341d40..4406491f10 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/gibber.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/gibber.dm @@ -31,12 +31,12 @@ ignore_clothing = TRUE /obj/machinery/gibber/examine(mob/user) - ..() + . = ..() if(in_range(user, src) || isobserver(user)) - to_chat(user, "The status display reads: Outputting [meat_produced] meat slab(s) after [gibtime*0.1] seconds of processing.") + . += "The status display reads: Outputting [meat_produced] meat slab(s) after [gibtime*0.1] seconds of processing." for(var/obj/item/stock_parts/manipulator/M in component_parts) if(M.rating >= 2) - to_chat(user, "Gibber has been upgraded to process inorganic materials.") + . += "Gibber has been upgraded to process inorganic materials." /obj/machinery/gibber/update_icon() cut_overlays() diff --git a/code/modules/food_and_drinks/kitchen_machinery/monkeyrecycler.dm b/code/modules/food_and_drinks/kitchen_machinery/monkeyrecycler.dm index 27c0376f63..3d7341308b 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/monkeyrecycler.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/monkeyrecycler.dm @@ -24,9 +24,9 @@ required_grind = req_grind /obj/machinery/monkey_recycler/examine(mob/user) - ..() + . = ..() if(in_range(user, src) || isobserver(user)) - to_chat(user, "The status display reads: Producing [cube_production] cube(s) for every [required_grind] monkey(s) inserted.") + . += "The status display reads: Producing [cube_production] cubes for every monkey inserted." /obj/machinery/monkey_recycler/attackby(obj/item/O, mob/user, params) if(default_deconstruction_screwdriver(user, "grinder_open", "grinder", O)) diff --git a/code/modules/food_and_drinks/kitchen_machinery/processor.dm b/code/modules/food_and_drinks/kitchen_machinery/processor.dm index ae16b9cb66..b81c127523 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/processor.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/processor.dm @@ -22,9 +22,9 @@ rating_speed = M.rating /obj/machinery/processor/examine(mob/user) - ..() + . = ..() if(in_range(user, src) || isobserver(user)) - to_chat(user, "The status display reads: Outputting [rating_amount] item(s) at [rating_speed*100]% speed.") + . += "The status display reads: Outputting [rating_amount] item(s) at [rating_speed*100]% speed." /obj/machinery/processor/proc/process_food(datum/food_processor_process/recipe, atom/movable/what) if (recipe.output && loc && !QDELETED(src)) diff --git a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm index d259b39b31..7619f68448 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm @@ -34,9 +34,9 @@ max_n_of_items = 1500 * B.rating /obj/machinery/smartfridge/examine(mob/user) - ..() + . = ..() if(in_range(user, src) || isobserver(user)) - to_chat(user, "The status display reads: This unit can hold a maximum of [max_n_of_items] items.") + . += "The status display reads: This unit can hold a maximum of [max_n_of_items] items." /obj/machinery/smartfridge/power_change() ..() diff --git a/code/modules/hydroponics/biogenerator.dm b/code/modules/hydroponics/biogenerator.dm index 3acff55d38..2376010408 100644 --- a/code/modules/hydroponics/biogenerator.dm +++ b/code/modules/hydroponics/biogenerator.dm @@ -54,9 +54,9 @@ /obj/machinery/biogenerator/examine(mob/user) - ..() + . = ..() if(in_range(user, src) || isobserver(user)) - to_chat(user, "The status display reads: Productivity at [productivity*100]%.
    Matter consumption reduced by [(efficiency*25)-25]%.
    Machine can hold up to [max_items] pieces of produce.") + . += "The status display reads: Productivity at [productivity*100]%.
    Matter consumption reduced by [(efficiency*25)-25]%.
    Machine can hold up to [max_items] pieces of produce.
    " /obj/machinery/biogenerator/on_reagent_change(changetype) //When the reagents change, change the icon as well. update_icon() diff --git a/code/modules/hydroponics/hydroponics.dm b/code/modules/hydroponics/hydroponics.dm index 0d53d5eb76..f122f7cc4a 100644 --- a/code/modules/hydroponics/hydroponics.dm +++ b/code/modules/hydroponics/hydroponics.dm @@ -47,9 +47,9 @@ maxnutri = tmp_capacity * 5 // Up to 30 /obj/machinery/hydroponics/constructable/examine(mob/user) - ..() + . = ..() if(in_range(user, src) || isobserver(user)) - to_chat(user, "The status display reads: Tray efficiency at [rating*100]%.") + . += "The status display reads: Tray efficiency at [rating*100]%." /obj/machinery/hydroponics/Destroy() if(myseed) diff --git a/code/modules/hydroponics/seed_extractor.dm b/code/modules/hydroponics/seed_extractor.dm index f4ca3e95c6..617b980654 100644 --- a/code/modules/hydroponics/seed_extractor.dm +++ b/code/modules/hydroponics/seed_extractor.dm @@ -57,9 +57,9 @@ seed_multiplier = M.rating /obj/machinery/seed_extractor/examine(mob/user) - ..() + . = ..() if(in_range(user, src) || isobserver(user)) - to_chat(user, "The status display reads: Extracting [seed_multiplier] seed(s) per piece of produce.
    Machine can store up to [max_seeds]% seeds.") + . += "The status display reads: Extracting [seed_multiplier] seed(s) per piece of produce.
    Machine can store up to [max_seeds]% seeds.
    " /obj/machinery/seed_extractor/attackby(obj/item/O, mob/user, params) diff --git a/code/modules/power/port_gen.dm b/code/modules/power/port_gen.dm index ce219656d7..3a6a98d681 100644 --- a/code/modules/power/port_gen.dm +++ b/code/modules/power/port_gen.dm @@ -104,7 +104,7 @@ if(crit_fail) . += "The generator seems to have broken down." if(in_range(user, src) || isobserver(user)) - to_chat(user, "The status display reads: Fuel efficiency increased by [(consumption*100)-100]%.") + . += "The status display reads: Fuel efficiency increased by [(consumption*100)-100]%." /obj/machinery/power/port_gen/pacman/HasFuel() if(sheets >= 1 / (time_per_sheet / power_output) - sheet_left) diff --git a/code/modules/power/rtg.dm b/code/modules/power/rtg.dm index 21095944dd..fd97ea52ba 100644 --- a/code/modules/power/rtg.dm +++ b/code/modules/power/rtg.dm @@ -37,9 +37,9 @@ power_gen = initial(power_gen) * part_level /obj/machinery/power/rtg/examine(mob/user) - ..() + . = ..() if(in_range(user, src) || isobserver(user)) - to_chat(user, "The status display reads: Power generation now at [power_gen*0.001]kW.") + . += "The status display reads: Power generation now at [power_gen*0.001]kW." /obj/machinery/power/rtg/attackby(obj/item/I, mob/user, params) if(default_deconstruction_screwdriver(user, "[initial(icon_state)]-open", initial(icon_state), I)) diff --git a/code/modules/power/singularity/emitter.dm b/code/modules/power/singularity/emitter.dm index 7f0e6f23f0..d8b0ede3a2 100644 --- a/code/modules/power/singularity/emitter.dm +++ b/code/modules/power/singularity/emitter.dm @@ -69,9 +69,9 @@ sparks.set_up(1, TRUE, src) /obj/machinery/power/emitter/examine(mob/user) - ..() + . = ..() if(in_range(user, src) || isobserver(user)) - to_chat(user, "The status display reads: Emitting one beam each [fire_delay*0.1] seconds.
    Power consumption at [active_power_usage]W.") + . += "The status display reads: Emitting one beam each [fire_delay*0.1] seconds.
    Power consumption at [active_power_usage]W.
    " /obj/machinery/power/emitter/ComponentInitialize() . = ..() diff --git a/code/modules/power/tesla/coil.dm b/code/modules/power/tesla/coil.dm index 8d2b81e48a..e29ffa865e 100644 --- a/code/modules/power/tesla/coil.dm +++ b/code/modules/power/tesla/coil.dm @@ -37,9 +37,9 @@ input_power_multiplier = power_multiplier /obj/machinery/power/tesla_coil/examine(mob/user) - ..() + . = ..() if(in_range(user, src) || isobserver(user)) - to_chat(user, "The status display reads: Power generation at [input_power_multiplier*100]%.
    Shock interval at [zap_cooldown*0.1] seconds.") + . += "The status display reads: Power generation at [input_power_multiplier*100]%.
    Shock interval at [zap_cooldown*0.1] seconds.
    " /obj/machinery/power/tesla_coil/on_construction() if(anchored) diff --git a/code/modules/power/turbine.dm b/code/modules/power/turbine.dm index 8487d72afb..423aaae3f9 100644 --- a/code/modules/power/turbine.dm +++ b/code/modules/power/turbine.dm @@ -95,9 +95,9 @@ efficiency = E / 6 /obj/machinery/power/compressor/examine(mob/user) - ..() + . = ..() if(in_range(user, src) || isobserver(user)) - to_chat(user, "The status display reads: Efficiency at [efficiency*100]%.") + . += "The status display reads: Efficiency at [efficiency*100]%." /obj/machinery/power/compressor/attackby(obj/item/I, mob/user, params) if(default_deconstruction_screwdriver(user, initial(icon_state), initial(icon_state), I)) @@ -182,9 +182,9 @@ productivity = P / 6 /obj/machinery/power/turbine/examine(mob/user) - ..() + . = ..() if(in_range(user, src) || isobserver(user)) - to_chat(user, "The status display reads: Productivity at [productivity*100]%.") + . += "The status display reads: Productivity at [productivity*100]%." /obj/machinery/power/turbine/locate_machinery() if(compressor) diff --git a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm index 424f2bce30..ce839f33d7 100644 --- a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm +++ b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm @@ -113,7 +113,9 @@ if(panel_open) . += "[src]'s maintenance hatch is open!" if(in_range(user, src) || isobserver(user)) - . += "The status display reads:
    Recharging [recharge_amount] power units per interval.
    Power efficiency increased by [(powerefficiency*1000)-100]%." + . += "The status display reads:\n\ + Recharging [recharge_amount] power units per interval.\n\ + Power efficiency increased by [round((powerefficiency*1000)-100, 1)]%." switch(macrotier) if(1) . += "Macro granularity at 5u." diff --git a/code/modules/reagents/chemistry/machinery/chem_heater.dm b/code/modules/reagents/chemistry/machinery/chem_heater.dm index 6d6b21bf74..f4014387c6 100644 --- a/code/modules/reagents/chemistry/machinery/chem_heater.dm +++ b/code/modules/reagents/chemistry/machinery/chem_heater.dm @@ -53,9 +53,9 @@ heater_coefficient *= M.rating /obj/machinery/chem_heater/examine(mob/user) - ..() + . = ..() if(in_range(user, src) || isobserver(user)) - to_chat(user, "The status display reads: Heating reagents at [heater_coefficient*1000]% speed.") + . += "The status display reads: Heating reagents at [heater_coefficient*1000]% speed." /obj/machinery/chem_heater/process() ..() diff --git a/code/modules/research/experimentor.dm b/code/modules/research/experimentor.dm index a418fc77a4..681195bcc3 100644 --- a/code/modules/research/experimentor.dm +++ b/code/modules/research/experimentor.dm @@ -82,10 +82,10 @@ for(var/obj/item/stock_parts/micro_laser/M in component_parts) badThingCoeff += M.rating -/obj/machinery/reagentgrinder/examine(mob/user) - ..() +/obj/machinery/rnd/experimentor/examine(mob/user) + . = ..() if(in_range(user, src) || isobserver(user)) - to_chat(user, "The status display reads: Grinding reagents at [speed*100]%.") + . += "The status display reads: Malfunction probability reduced by [badThingCoeff]%.
    Cooldown interval between experiments at [resetTime*0.1] seconds.
    " /obj/machinery/rnd/experimentor/proc/checkCircumstances(obj/item/O) //snowflake check to only take "made" bombs diff --git a/code/modules/research/machinery/_production.dm b/code/modules/research/machinery/_production.dm index 2fbe2ae7aa..659a83c703 100644 --- a/code/modules/research/machinery/_production.dm +++ b/code/modules/research/machinery/_production.dm @@ -77,7 +77,7 @@ . = ..() var/datum/component/remote_materials/materials = GetComponent(/datum/component/remote_materials) if(in_range(user, src) || isobserver(user)) - . += "The status display reads: Storing up to [materials.local_size] material units locally.
    Material usage efficiency at [efficiency_coeff*50]%.
    " + . += "The status display reads: Storing up to [materials.local_size] material units locally.
    Material usage efficiency at [efficiency_coeff*100]%.
    " //we eject the materials upon deconstruction. /obj/machinery/rnd/production/on_deconstruction() diff --git a/code/modules/research/nanites/nanite_chamber.dm b/code/modules/research/nanites/nanite_chamber.dm index 90ee9ddf9f..515231c24c 100644 --- a/code/modules/research/nanites/nanite_chamber.dm +++ b/code/modules/research/nanites/nanite_chamber.dm @@ -30,9 +30,9 @@ scan_level += P.rating /obj/machinery/nanite_chamber/examine(mob/user) - ..() + . = ..() if(in_range(user, src) || isobserver(user)) - to_chat(user, "The status display reads: Scanning module has been upgraded to level [scan_level].") + . += "The status display reads: Scanning module has been upgraded to level [scan_level]." /obj/machinery/nanite_chamber/proc/set_busy(status, message, working_icon) busy = status From 1bdb515592da0f1048393ad4f9eec809a668417e Mon Sep 17 00:00:00 2001 From: Putnam Date: Sun, 19 Jan 2020 03:44:45 -0800 Subject: [PATCH 051/123] made suicide a config flag --- code/controllers/configuration/entries/game_options.dm | 2 ++ code/modules/client/verbs/suicide.dm | 2 ++ config/game_options.txt | 3 +++ 3 files changed, 7 insertions(+) diff --git a/code/controllers/configuration/entries/game_options.dm b/code/controllers/configuration/entries/game_options.dm index aeca31ebd2..6efc9eab12 100644 --- a/code/controllers/configuration/entries/game_options.dm +++ b/code/controllers/configuration/entries/game_options.dm @@ -408,3 +408,5 @@ /datum/config_entry/number/dropped_modes config_entry_value = 3 + +/datum/config_entry/flag/suicide_allowed diff --git a/code/modules/client/verbs/suicide.dm b/code/modules/client/verbs/suicide.dm index 2e643cc05d..43f1c4c198 100644 --- a/code/modules/client/verbs/suicide.dm +++ b/code/modules/client/verbs/suicide.dm @@ -207,6 +207,8 @@ message_admins("[key_name(src)] (job: [src.job ? "[src.job]" : "None"]) [is_special_character(src) ? "(ANTAG!) " : ""][ghosting ? "ghosted" : "committed suicide"] at [AREACOORD(src)].") /mob/living/proc/canSuicide() + if(!CONFIG_GET(flag/suicide_allowed)) + return FALSE switch(stat) if(CONSCIOUS) return TRUE diff --git a/config/game_options.txt b/config/game_options.txt index b8b89de17c..9fc50fcd0f 100644 --- a/config/game_options.txt +++ b/config/game_options.txt @@ -597,3 +597,6 @@ MODETIER_VOTING ## Number of modes dropped by the modetier vote during mode selection, after vote. DROPPED_MODES 3 + +## Whether the suicide verb is allowed. +# SUICIDE_ALLOWED From cd47e81b18518107b795316a2e5b0d94e70f7850 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 19 Jan 2020 08:33:33 -0600 Subject: [PATCH 052/123] Automatic changelog generation for PR #10547 [ci skip] --- html/changelogs/AutoChangeLog-pr-10547.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-10547.yml diff --git a/html/changelogs/AutoChangeLog-pr-10547.yml b/html/changelogs/AutoChangeLog-pr-10547.yml new file mode 100644 index 0000000000..41d255e991 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10547.yml @@ -0,0 +1,4 @@ +author: "Putnam3145" +delete-after: True +changes: + - tweak: "Ghost dojo spawns will dust if their owner suicides or uses the \"ghost\" verb." From 95cddfed27e7797de51b4cc91cff81fc10e258b4 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 19 Jan 2020 09:35:50 -0600 Subject: [PATCH 053/123] Automatic changelog generation for PR #10307 [ci skip] --- html/changelogs/AutoChangeLog-pr-10307.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-10307.yml diff --git a/html/changelogs/AutoChangeLog-pr-10307.yml b/html/changelogs/AutoChangeLog-pr-10307.yml new file mode 100644 index 0000000000..279dbe2840 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10307.yml @@ -0,0 +1,4 @@ +author: "Seris02" +delete-after: True +changes: + - rscadd: "stunglasses" From ecaff2ffe8ac23d32decfc2371f471e46e9c8dfd Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 19 Jan 2020 09:37:42 -0600 Subject: [PATCH 054/123] Automatic changelog generation for PR #10520 [ci skip] --- html/changelogs/AutoChangeLog-pr-10520.yml | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-10520.yml diff --git a/html/changelogs/AutoChangeLog-pr-10520.yml b/html/changelogs/AutoChangeLog-pr-10520.yml new file mode 100644 index 0000000000..ae23c082d8 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10520.yml @@ -0,0 +1,7 @@ +author: "Denton, ported by Hatterhat" +delete-after: True +changes: + - tweak: "Most upgradeable machines now show their upgrade status when examined while standing right next to them." + - tweak: "Added examine messages to teleporter stations that hint at their multitool/wirecutter interactions." + - tweak: "Renamed teleporter stations from station to teleporter station." + - code_imp: "Changed the teleporter hub accurate var to accuracy; the old name misled people into thinking that it was a boolean." From 6725e996612625263d1133843deba25cccc35779 Mon Sep 17 00:00:00 2001 From: keronshb Date: Sun, 19 Jan 2020 14:26:16 -0500 Subject: [PATCH 055/123] icon fix pt1 icon fix pt1 --- icons/obj/device.dmi | Bin 51443 -> 45858 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/obj/device.dmi b/icons/obj/device.dmi index 71fceba8b4df1735833a78dad91efa252f0c487d..032b0c27ad3c75b57c6bfb9ee59e600f2a699e84 100644 GIT binary patch literal 45858 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
    t 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 From a4f35eed47f18b5099cc94dc90c793418a734a5e Mon Sep 17 00:00:00 2001 From: keronshb Date: Sun, 19 Jan 2020 14:33:41 -0500 Subject: [PATCH 056/123] This should fix the icon icon fix pt 2, I swear --- icons/obj/device.dmi | Bin 45858 -> 46295 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/obj/device.dmi b/icons/obj/device.dmi index 032b0c27ad3c75b57c6bfb9ee59e600f2a699e84..556bb0b5bec53a9dd8e887c65003785e983b4d91 100644 GIT binary patch delta 6216 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 NhMKl&xw3WW{{WcnDI@>@ delta 5776 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 Date: Sun, 19 Jan 2020 15:25:20 -0500 Subject: [PATCH 057/123] Reward Fix --- code/modules/cargo/bounties/assistant.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/cargo/bounties/assistant.dm b/code/modules/cargo/bounties/assistant.dm index 84d3fd3626..0db021ac42 100644 --- a/code/modules/cargo/bounties/assistant.dm +++ b/code/modules/cargo/bounties/assistant.dm @@ -224,6 +224,6 @@ /datum/bounty/item/assistant/pneumatic_cannon name = "Pneumatic Cannons" description = "Have you ever launched a tennis ball, newspaper, or ***** at someones head from across the room? No? We haven't either. Help us rectify this." - reward = "2000" + reward = 2000 required_count = 2 wanted_types = list(/obj/item/pneumatic_cannon/ghetto) \ No newline at end of file From 0b0a6429ea6fa6dd2b25cbb9247181f186406b95 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Sun, 19 Jan 2020 13:31:11 -0700 Subject: [PATCH 058/123] Update pyrotechnics.dm --- .../chemistry/recipes/pyrotechnics.dm | 122 +++++++++--------- 1 file changed, 61 insertions(+), 61 deletions(-) diff --git a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm index cb9636bf02..3930988380 100644 --- a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm +++ b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm @@ -5,7 +5,7 @@ var/modifier = 0 var/noexplosion = FALSE -/datum/chemical_reaction/reagent_explosion/on_reaction(datum/reagents/holder, created_volume, turf/override) +/datum/chemical_reaction/reagent_explosion/on_reaction(datum/reagents/holder, multiplier, turf/override) if(!noexplosion) var/turf/T = override || get_turf(holder.my_atom) var/inside_msg @@ -20,7 +20,7 @@ message_admins("Reagent explosion reaction occurred at [ADMIN_VERBOSEJMP(T)][inside_msg]. Last Fingerprint: [touch_msg].") log_game("Reagent explosion reaction occurred at [AREACOORD(T)]. Last Fingerprint: [lastkey ? lastkey : "N/A"]." ) var/datum/effect_system/reagents_explosion/e = new() - e.set_up(modifier + round(created_volume/strengthdiv, 1), T, 0, 0) + e.set_up(modifier + round(multiplier/strengthdiv, 1), T, 0, 0) e.start() holder.clear_reagents() @@ -32,10 +32,10 @@ required_reagents = list(/datum/reagent/glycerol = 1, /datum/reagent/toxin/acid/fluacid = 1, /datum/reagent/toxin/acid = 1) strengthdiv = 2 -/datum/chemical_reaction/reagent_explosion/nitroglycerin/on_reaction(datum/reagents/holder, created_volume) +/datum/chemical_reaction/reagent_explosion/nitroglycerin/on_reaction(datum/reagents/holder, multiplier) if(holder.has_reagent(/datum/reagent/stabilizing_agent)) return - holder.remove_reagent(/datum/reagent/nitroglycerin, created_volume*2) + holder.remove_reagent(/datum/reagent/nitroglycerin, multiplier*2) ..() /datum/chemical_reaction/reagent_explosion/nitroglycerin_explosion @@ -57,10 +57,10 @@ id = "holyboom" required_reagents = list(/datum/reagent/water/holywater = 1, /datum/reagent/potassium = 1) -/datum/chemical_reaction/reagent_explosion/potassium_explosion/holyboom/on_reaction(datum/reagents/holder, created_volume) +/datum/chemical_reaction/reagent_explosion/potassium_explosion/holyboom/on_reaction(datum/reagents/holder, multiplier) var/turf/T = get_turf(holder.my_atom) - if(created_volume >= 150) - playsound(get_turf(holder.my_atom), 'sound/effects/pray.ogg', 80, 0, round(created_volume/48)) + if(multiplier >= 150) + playsound(get_turf(holder.my_atom), 'sound/effects/pray.ogg', 80, 0, round(multiplier/48)) strengthdiv = 8 for(var/mob/living/simple_animal/revenant/R in get_hearers_in_view(7,get_turf(holder.my_atom))) var/deity @@ -73,13 +73,13 @@ R.reveal(100) R.adjustHealth(50) sleep(20) - for(var/mob/living/carbon/C in get_hearers_in_view(round(created_volume/48,1),get_turf(holder.my_atom))) + for(var/mob/living/carbon/C in get_hearers_in_view(round(multiplier/48,1),get_turf(holder.my_atom))) if(iscultist(C)) to_chat(C, "The divine explosion sears you!") C.Knockdown(40) C.adjust_fire_stacks(5) C.IgniteMob() - ..(holder, created_volume, T) + ..(holder, multiplier, T) /datum/chemical_reaction/blackpowder @@ -97,9 +97,9 @@ modifier = 1 mix_message = "Sparks start flying around the black powder!" -/datum/chemical_reaction/reagent_explosion/blackpowder_explosion/on_reaction(datum/reagents/holder, created_volume) +/datum/chemical_reaction/reagent_explosion/blackpowder_explosion/on_reaction(datum/reagents/holder, multiplier) var/turf/T = get_turf(holder.my_atom) - ..(holder, created_volume, T) + ..(holder, multiplier, T) /datum/chemical_reaction/thermite name = "Thermite" @@ -112,11 +112,11 @@ id = "emp_pulse" required_reagents = list(/datum/reagent/uranium = 1, /datum/reagent/iron = 1) // Yes, laugh, it's the best recipe I could think of that makes a little bit of sense -/datum/chemical_reaction/emp_pulse/on_reaction(datum/reagents/holder, created_volume) +/datum/chemical_reaction/emp_pulse/on_reaction(datum/reagents/holder, multiplier) var/location = get_turf(holder.my_atom) - // 100 created volume = 4 heavy range & 7 light range. A few tiles smaller than traitor EMP grandes. - // 200 created volume = 8 heavy range & 14 light range. 4 tiles larger than traitor EMP grenades. - empulse(location, round(created_volume / 12), round(created_volume / 7), 1) + // 100 multiplier = 4 heavy range & 7 light range. A few tiles smaller than traitor EMP grandes. + // 200 multiplier = 8 heavy range & 14 light range. 4 tiles larger than traitor EMP grenades. + empulse(location, round(multiplier / 12), round(multiplier / 7), 1) holder.clear_reagents() @@ -125,9 +125,9 @@ id = "beesplosion" required_reagents = list(/datum/reagent/consumable/honey = 1, /datum/reagent/medicine/strange_reagent = 1, /datum/reagent/radium = 1) -/datum/chemical_reaction/beesplosion/on_reaction(datum/reagents/holder, created_volume) +/datum/chemical_reaction/beesplosion/on_reaction(datum/reagents/holder, multiplier) var/location = holder.my_atom.drop_location() - if(created_volume < 5) + if(multiplier < 5) playsound(location,'sound/effects/sparks1.ogg', 100, TRUE) else playsound(location,'sound/creatures/bee.ogg', 100, TRUE) @@ -137,7 +137,7 @@ if(required_reagents[R.type]) continue beeagents += R - var/bee_amount = round(created_volume * 0.2) + var/bee_amount = round(multiplier * 0.2) for(var/i in 1 to bee_amount) var/mob/living/simple_animal/hostile/poison/bees/short/new_bee = new(location) if(LAZYLEN(beeagents)) @@ -157,7 +157,7 @@ required_reagents = list(/datum/reagent/chlorine = 1, /datum/reagent/fluorine = 3) required_temp = 424 -/datum/chemical_reaction/clf3/on_reaction(datum/reagents/holder, created_volume) +/datum/chemical_reaction/clf3/on_reaction(datum/reagents/holder, multiplier) var/turf/T = get_turf(holder.my_atom) for(var/turf/turf in range(1,T)) new /obj/effect/hotspot(turf) @@ -172,7 +172,7 @@ modifier = 1 mob_react = FALSE -/datum/chemical_reaction/reagent_explosion/methsplosion/on_reaction(datum/reagents/holder, created_volume) +/datum/chemical_reaction/reagent_explosion/methsplosion/on_reaction(datum/reagents/holder, multiplier) var/turf/T = get_turf(holder.my_atom) for(var/turf/turf in range(1,T)) new /obj/effect/hotspot(turf) @@ -190,12 +190,12 @@ results = list(/datum/reagent/sorium = 4) required_reagents = list(/datum/reagent/mercury = 1, /datum/reagent/oxygen = 1, /datum/reagent/nitrogen = 1, /datum/reagent/carbon = 1) -/datum/chemical_reaction/sorium/on_reaction(datum/reagents/holder, created_volume) +/datum/chemical_reaction/sorium/on_reaction(datum/reagents/holder, multiplier) if(holder.has_reagent(/datum/reagent/stabilizing_agent)) return - holder.remove_reagent(/datum/reagent/sorium, created_volume*4) + holder.remove_reagent(/datum/reagent/sorium, multiplier*4) var/turf/T = get_turf(holder.my_atom) - var/range = CLAMP(sqrt(created_volume*4), 1, 6) + var/range = CLAMP(sqrt(multiplier*4), 1, 6) goonchem_vortex(T, 1, range) /datum/chemical_reaction/sorium_vortex @@ -204,9 +204,9 @@ required_reagents = list(/datum/reagent/sorium = 1) required_temp = 474 -/datum/chemical_reaction/sorium_vortex/on_reaction(datum/reagents/holder, created_volume) +/datum/chemical_reaction/sorium_vortex/on_reaction(datum/reagents/holder, multiplier) var/turf/T = get_turf(holder.my_atom) - var/range = CLAMP(sqrt(created_volume), 1, 6) + var/range = CLAMP(sqrt(multiplier), 1, 6) goonchem_vortex(T, 1, range) /datum/chemical_reaction/liquid_dark_matter @@ -215,12 +215,12 @@ results = list(/datum/reagent/liquid_dark_matter = 3) required_reagents = list(/datum/reagent/stable_plasma = 1, /datum/reagent/radium = 1, /datum/reagent/carbon = 1) -/datum/chemical_reaction/liquid_dark_matter/on_reaction(datum/reagents/holder, created_volume) +/datum/chemical_reaction/liquid_dark_matter/on_reaction(datum/reagents/holder, multiplier) if(holder.has_reagent(/datum/reagent/stabilizing_agent)) return - holder.remove_reagent(/datum/reagent/liquid_dark_matter, created_volume*3) + holder.remove_reagent(/datum/reagent/liquid_dark_matter, multiplier*3) var/turf/T = get_turf(holder.my_atom) - var/range = CLAMP(sqrt(created_volume*3), 1, 6) + var/range = CLAMP(sqrt(multiplier*3), 1, 6) goonchem_vortex(T, 0, range) /datum/chemical_reaction/ldm_vortex @@ -229,9 +229,9 @@ required_reagents = list(/datum/reagent/liquid_dark_matter = 1) required_temp = 474 -/datum/chemical_reaction/ldm_vortex/on_reaction(datum/reagents/holder, created_volume) +/datum/chemical_reaction/ldm_vortex/on_reaction(datum/reagents/holder, multiplier) var/turf/T = get_turf(holder.my_atom) - var/range = CLAMP(sqrt(created_volume/2), 1, 6) + var/range = CLAMP(sqrt(multiplier/2), 1, 6) goonchem_vortex(T, 0, range) /datum/chemical_reaction/flash_powder @@ -240,12 +240,12 @@ results = list(/datum/reagent/flash_powder = 3) required_reagents = list(/datum/reagent/aluminium = 1, /datum/reagent/potassium = 1, /datum/reagent/sulfur = 1 ) -/datum/chemical_reaction/flash_powder/on_reaction(datum/reagents/holder, created_volume) +/datum/chemical_reaction/flash_powder/on_reaction(datum/reagents/holder, multiplier) if(holder.has_reagent(/datum/reagent/stabilizing_agent)) return var/location = get_turf(holder.my_atom) do_sparks(2, TRUE, location) - var/range = created_volume/3 + var/range = multiplier/3 if(isatom(holder.my_atom)) var/atom/A = holder.my_atom A.flash_lighting_fx(_range = (range + 2), _reset_lighting = FALSE) @@ -255,7 +255,7 @@ C.Knockdown(60) else C.Stun(100) - holder.remove_reagent(/datum/reagent/flash_powder, created_volume*3) + holder.remove_reagent(/datum/reagent/flash_powder, multiplier*3) /datum/chemical_reaction/flash_powder_flash name = "Flash powder activation" @@ -263,10 +263,10 @@ required_reagents = list(/datum/reagent/flash_powder = 1) required_temp = 374 -/datum/chemical_reaction/flash_powder_flash/on_reaction(datum/reagents/holder, created_volume) +/datum/chemical_reaction/flash_powder_flash/on_reaction(datum/reagents/holder, multiplier) var/location = get_turf(holder.my_atom) do_sparks(2, TRUE, location) - var/range = created_volume/10 + var/range = multiplier/10 if(isatom(holder.my_atom)) var/atom/A = holder.my_atom A.flash_lighting_fx(_range = (range + 2), _reset_lighting = FALSE) @@ -283,11 +283,11 @@ results = list(/datum/reagent/smoke_powder = 3) required_reagents = list(/datum/reagent/potassium = 1, /datum/reagent/consumable/sugar = 1, /datum/reagent/phosphorus = 1) -/datum/chemical_reaction/smoke_powder/on_reaction(datum/reagents/holder, created_volume) +/datum/chemical_reaction/smoke_powder/on_reaction(datum/reagents/holder, multiplier) if(holder.has_reagent(/datum/reagent/stabilizing_agent)) return - holder.remove_reagent(/datum/reagent/smoke_powder, created_volume*3) - var/smoke_radius = round(sqrt(created_volume * 1.5), 1) + holder.remove_reagent(/datum/reagent/smoke_powder, multiplier*3) + var/smoke_radius = round(sqrt(multiplier * 1.5), 1) var/location = get_turf(holder.my_atom) var/datum/effect_system/smoke_spread/chem/S = new S.attach(location) @@ -305,9 +305,9 @@ required_temp = 374 mob_react = FALSE -/datum/chemical_reaction/smoke_powder_smoke/on_reaction(datum/reagents/holder, created_volume) +/datum/chemical_reaction/smoke_powder_smoke/on_reaction(datum/reagents/holder, multiplier) var/location = get_turf(holder.my_atom) - var/smoke_radius = round(sqrt(created_volume / 2), 1) + var/smoke_radius = round(sqrt(multiplier / 2), 1) var/datum/effect_system/smoke_spread/chem/S = new S.attach(location) playsound(location, 'sound/effects/smoke.ogg', 50, 1, -3) @@ -323,13 +323,13 @@ results = list(/datum/reagent/sonic_powder = 3) required_reagents = list(/datum/reagent/oxygen = 1, /datum/reagent/consumable/space_cola = 1, /datum/reagent/phosphorus = 1) -/datum/chemical_reaction/sonic_powder/on_reaction(datum/reagents/holder, created_volume) +/datum/chemical_reaction/sonic_powder/on_reaction(datum/reagents/holder, multiplier) if(holder.has_reagent(/datum/reagent/stabilizing_agent)) return - holder.remove_reagent(/datum/reagent/sonic_powder, created_volume*3) + holder.remove_reagent(/datum/reagent/sonic_powder, multiplier*3) var/location = get_turf(holder.my_atom) playsound(location, 'sound/effects/bang.ogg', 25, 1) - for(var/mob/living/carbon/C in get_hearers_in_view(created_volume/3, location)) + for(var/mob/living/carbon/C in get_hearers_in_view(multiplier/3, location)) C.soundbang_act(1, 100, rand(0, 5)) /datum/chemical_reaction/sonic_powder_deafen @@ -338,10 +338,10 @@ required_reagents = list(/datum/reagent/sonic_powder = 1) required_temp = 374 -/datum/chemical_reaction/sonic_powder_deafen/on_reaction(datum/reagents/holder, created_volume) +/datum/chemical_reaction/sonic_powder_deafen/on_reaction(datum/reagents/holder, multiplier) var/location = get_turf(holder.my_atom) playsound(location, 'sound/effects/bang.ogg', 25, 1) - for(var/mob/living/carbon/C in get_hearers_in_view(created_volume/10, location)) + for(var/mob/living/carbon/C in get_hearers_in_view(multiplier/10, location)) C.soundbang_act(1, 100, rand(0, 5)) /datum/chemical_reaction/phlogiston @@ -350,12 +350,12 @@ results = list(/datum/reagent/phlogiston = 3) required_reagents = list(/datum/reagent/phosphorus = 1, /datum/reagent/toxin/acid = 1, /datum/reagent/stable_plasma = 1) -/datum/chemical_reaction/phlogiston/on_reaction(datum/reagents/holder, created_volume) +/datum/chemical_reaction/phlogiston/on_reaction(datum/reagents/holder, multiplier) if(holder.has_reagent(/datum/reagent/stabilizing_agent)) return var/turf/open/T = get_turf(holder.my_atom) if(istype(T)) - T.atmos_spawn_air("plasma=[created_volume];TEMP=1000") + T.atmos_spawn_air("plasma=[multiplier];TEMP=1000") holder.clear_reagents() return @@ -371,7 +371,7 @@ results = list(/datum/reagent/cryostylane = 3) required_reagents = list(/datum/reagent/water = 1, /datum/reagent/stable_plasma = 1, /datum/reagent/nitrogen = 1) -/datum/chemical_reaction/cryostylane/on_reaction(datum/reagents/holder, created_volume) +/datum/chemical_reaction/cryostylane/on_reaction(datum/reagents/holder, multiplier) holder.chem_temp = 20 // cools the fuck down return @@ -382,8 +382,8 @@ required_reagents = list(/datum/reagent/cryostylane = 1, /datum/reagent/oxygen = 1) mob_react = FALSE -/datum/chemical_reaction/cryostylane_oxygen/on_reaction(datum/reagents/holder, created_volume) - holder.chem_temp = max(holder.chem_temp - 10*created_volume,0) +/datum/chemical_reaction/cryostylane_oxygen/on_reaction(datum/reagents/holder, multiplier) + holder.chem_temp = max(holder.chem_temp - 10*multiplier,0) /datum/chemical_reaction/pyrosium_oxygen name = "ephemeral pyrosium reaction" @@ -392,8 +392,8 @@ required_reagents = list(/datum/reagent/pyrosium = 1, /datum/reagent/oxygen = 1) mob_react = FALSE -/datum/chemical_reaction/pyrosium_oxygen/on_reaction(datum/reagents/holder, created_volume) - holder.chem_temp += 10*created_volume +/datum/chemical_reaction/pyrosium_oxygen/on_reaction(datum/reagents/holder, multiplier) + holder.chem_temp += 10*multiplier /datum/chemical_reaction/pyrosium name = "pyrosium" @@ -401,7 +401,7 @@ results = list(/datum/reagent/pyrosium = 3) required_reagents = list(/datum/reagent/stable_plasma = 1, /datum/reagent/radium = 1, /datum/reagent/phosphorus = 1) -/datum/chemical_reaction/pyrosium/on_reaction(datum/reagents/holder, created_volume) +/datum/chemical_reaction/pyrosium/on_reaction(datum/reagents/holder, multiplier) holder.chem_temp = 20 // also cools the fuck down return @@ -431,20 +431,20 @@ mix_sound = 'sound/machines/defib_zap.ogg' var/tesla_flags = TESLA_MOB_DAMAGE | TESLA_OBJ_DAMAGE | TESLA_MOB_STUN -/datum/chemical_reaction/reagent_explosion/teslium_lightning/on_reaction(datum/reagents/holder, created_volume) - var/T1 = created_volume * 20 //100 units : Zap 3 times, with powers 2000/5000/12000. Tesla revolvers have a power of 10000 for comparison. - var/T2 = created_volume * 50 - var/T3 = created_volume * 120 +/datum/chemical_reaction/reagent_explosion/teslium_lightning/on_reaction(datum/reagents/holder, multiplier) + var/T1 = multiplier * 20 //100 units : Zap 3 times, with powers 2000/5000/12000. Tesla revolvers have a power of 10000 for comparison. + var/T2 = multiplier * 50 + var/T3 = multiplier * 120 sleep(5) - if(created_volume >= 75) + if(multiplier >= 75) tesla_zap(holder.my_atom, 7, T1, tesla_flags) playsound(holder.my_atom, 'sound/machines/defib_zap.ogg', 50, 1) sleep(15) - if(created_volume >= 40) + if(multiplier >= 40) tesla_zap(holder.my_atom, 7, T2, tesla_flags) playsound(holder.my_atom, 'sound/machines/defib_zap.ogg', 50, 1) sleep(15) - if(created_volume >= 10) //10 units minimum for lightning, 40 units for secondary blast, 75 units for tertiary blast. + if(multiplier >= 10) //10 units minimum for lightning, 40 units for secondary blast, 75 units for tertiary blast. tesla_zap(holder.my_atom, 7, T3, tesla_flags) playsound(holder.my_atom, 'sound/machines/defib_zap.ogg', 50, 1) ..() @@ -490,7 +490,7 @@ else return FALSE -/datum/chemical_reaction/reagent_explosion/lingblood/on_reaction(datum/reagents/holder, created_volume, specialreact) +/datum/chemical_reaction/reagent_explosion/lingblood/on_reaction(datum/reagents/holder, multiplier, specialreact) if(specialreact >= 10) return ..() else From 90fcedd1882fccac54366f461cfc02853c74bd48 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Sun, 19 Jan 2020 13:40:09 -0700 Subject: [PATCH 059/123] Update grenade.dm --- code/game/objects/items/grenades/grenade.dm | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/code/game/objects/items/grenades/grenade.dm b/code/game/objects/items/grenades/grenade.dm index 033ea9e791..1f8c04593a 100644 --- a/code/game/objects/items/grenades/grenade.dm +++ b/code/game/objects/items/grenades/grenade.dm @@ -1,4 +1,4 @@ -/obj/item/grenade + /obj/item/grenade name = "grenade" desc = "It has an adjustable timer." w_class = WEIGHT_CLASS_SMALL @@ -93,9 +93,8 @@ var/obj/item/I = loc I.grenade_prime_react(src) - -/obj/item/grenade/attackby(obj/item/W, mob/user, params) - if(istype(W, /obj/item/screwdriver)) +/obj/item/grenade/tool_act(mob/living/user, obj/item/I, tool_behaviour) + if(tool_behaviour == TOOL_SCREWDRIVER) switch(det_time) if ("1") det_time = 10 From 374f4f143e0dfd6374704c8f72c117395f883d8b Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Sun, 19 Jan 2020 13:45:16 -0700 Subject: [PATCH 060/123] Update PDA.dm --- code/game/objects/items/devices/PDA/PDA.dm | 1 - 1 file changed, 1 deletion(-) diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index e6a46983c1..a60f159952 100644 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -758,7 +758,6 @@ GLOBAL_LIST_EMPTY(PDAs) var/list/string_blocked for(var/obj/item/pda/P in targets) if(owner in P.blocked_pdas) - blocked++ LAZYADD(string_blocked, P.owner) continue if(P.owner && P.ownjob) // != src is checked by the UI From 92ead7e65d955f50c2dd877524515dc79b605e2f Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 19 Jan 2020 17:10:59 -0600 Subject: [PATCH 061/123] Automatic changelog generation for PR #9601 [ci skip] --- html/changelogs/AutoChangeLog-pr-9601.yml | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-9601.yml diff --git a/html/changelogs/AutoChangeLog-pr-9601.yml b/html/changelogs/AutoChangeLog-pr-9601.yml new file mode 100644 index 0000000000..c54279627f --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9601.yml @@ -0,0 +1,9 @@ +author: "Ghommie (original PRs by Kevinz000, ShivCalez, 4dplanner, Barhandar, 81Denton, zxaber, Fox-McCloud)" +delete-after: True +changes: + - rscadd: "All atom movables now have move force and move resist, and pull force An atom can only pull another atom if its pull force is stronger than that atom's move resist" + - rscadd: "Mobs with a higher move force than an atom's move resist will automatically try to force the atom out of its way. This might not always work, depending on how snowflakey code is. +experimental: As of right now, everything has a move force and resist of 100, and a pull force of 101. Things take (resist - force) damage when bumped into +experimental: Failing to move onto a tile will now still bump up your last move timer. However, successfully pushing something out of your way will result in you automatically moving into where it was." + - bugfix: "Bolted AIs can no longer be teleported by launchpads." + - balance: "Megafauna cannot teleport" From b1cd0f4edeab547a546767712d249d7bf08bda3a Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Sun, 19 Jan 2020 16:11:49 -0700 Subject: [PATCH 062/123] Update grenade.dm --- code/game/objects/items/grenades/grenade.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/grenades/grenade.dm b/code/game/objects/items/grenades/grenade.dm index 1f8c04593a..16a5e6d1d3 100644 --- a/code/game/objects/items/grenades/grenade.dm +++ b/code/game/objects/items/grenades/grenade.dm @@ -1,4 +1,4 @@ - /obj/item/grenade +/obj/item/grenade name = "grenade" desc = "It has an adjustable timer." w_class = WEIGHT_CLASS_SMALL From 705bb9c29ec1e3a184534aafcf521b4197f13991 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 19 Jan 2020 17:58:30 -0600 Subject: [PATCH 063/123] Automatic changelog generation for PR #10097 [ci skip] --- html/changelogs/AutoChangeLog-pr-10097.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-10097.yml diff --git a/html/changelogs/AutoChangeLog-pr-10097.yml b/html/changelogs/AutoChangeLog-pr-10097.yml new file mode 100644 index 0000000000..9b9a2c9a58 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10097.yml @@ -0,0 +1,4 @@ +author: "Ghommie" +delete-after: True +changes: + - tweak: "Attached kevlar/soft/plastic padding accessories are now stealthier and will no longer be displayed on mob examine." From ea088680e224d347c64633f32a7fe5848697eb2e Mon Sep 17 00:00:00 2001 From: keronshb Date: Sun, 19 Jan 2020 19:25:14 -0500 Subject: [PATCH 064/123] Fixed sprites This should be it, really --- icons/obj/device.dmi | Bin 46295 -> 52409 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/obj/device.dmi b/icons/obj/device.dmi index 556bb0b5bec53a9dd8e887c65003785e983b4d91..c5a6914cf40102c3e83717c369be24462c88ec55 100644 GIT binary patch literal 52409 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 literal 46295 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 k{xr` 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

    IoLCs_Nn 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 Z0jI)W4S9Z2MFN0dYARaFm5(e!{|_FgIsgCw From 16f9c1bf78b5ee183c33fe6e1aa8346005a3f219 Mon Sep 17 00:00:00 2001 From: Putnam Date: Sun, 19 Jan 2020 18:01:21 -0800 Subject: [PATCH 065/123] feedback, EORG allowed --- code/__HELPERS/roundend.dm | 2 +- code/modules/client/verbs/suicide.dm | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/code/__HELPERS/roundend.dm b/code/__HELPERS/roundend.dm index 49825bcb50..19ee2b2a5a 100644 --- a/code/__HELPERS/roundend.dm +++ b/code/__HELPERS/roundend.dm @@ -178,7 +178,7 @@ if(!C.credits) C.RollCredits() C.playtitlemusic(40) - + CONFIG_SET(flag/suicide_allowed,TRUE) // EORG suicides allowed var/popcount = gather_roundend_feedback() display_report(popcount) diff --git a/code/modules/client/verbs/suicide.dm b/code/modules/client/verbs/suicide.dm index 43f1c4c198..255a5a2eec 100644 --- a/code/modules/client/verbs/suicide.dm +++ b/code/modules/client/verbs/suicide.dm @@ -208,6 +208,7 @@ /mob/living/proc/canSuicide() if(!CONFIG_GET(flag/suicide_allowed)) + to_chat(src, "Suicide is not enabled in the config.") return FALSE switch(stat) if(CONSCIOUS) From 56e58e5c5ea40d810372eed49bd9849dbd5c7bbf Mon Sep 17 00:00:00 2001 From: Putnam3145 Date: Sun, 19 Jan 2020 18:14:33 -0800 Subject: [PATCH 066/123] whoops Co-Authored-By: Ghom <42542238+Ghommie@users.noreply.github.com> --- code/modules/admin/topic.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 119c214d6b..9c8081c046 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -1721,7 +1721,7 @@ else if(href_list["makeeligible"]) if(!check_rights(R_ADMIN)) return - var/mob/M = locate(href_list["eligible"]) + var/mob/M = locate(href_list["makeeligible"]) if(!ismob(M)) to_chat(usr, "this can only be used on instances of type /mob.") var/datum/element/ghost_role_eligibility/eli = SSdcs.GetElement(/datum/element/ghost_role_eligibility) From 194647a7f4dc83a3cc6eee0410d237bec680da60 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 19 Jan 2020 20:24:02 -0600 Subject: [PATCH 067/123] Automatic changelog generation for PR #10614 [ci skip] --- html/changelogs/AutoChangeLog-pr-10614.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-10614.yml diff --git a/html/changelogs/AutoChangeLog-pr-10614.yml b/html/changelogs/AutoChangeLog-pr-10614.yml new file mode 100644 index 0000000000..4c4d8bfdbd --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10614.yml @@ -0,0 +1,4 @@ +author: "Putnam3145" +delete-after: True +changes: + - config: "Added suicide to the config." From 8e30dd228215ef3a58aa76d214d23190bc627d91 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 19 Jan 2020 20:24:49 -0600 Subject: [PATCH 068/123] Automatic changelog generation for PR #10597 [ci skip] --- html/changelogs/AutoChangeLog-pr-10597.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-10597.yml diff --git a/html/changelogs/AutoChangeLog-pr-10597.yml b/html/changelogs/AutoChangeLog-pr-10597.yml new file mode 100644 index 0000000000..9f28c4f84c --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10597.yml @@ -0,0 +1,5 @@ +author: "Putnam3145" +delete-after: True +changes: + - code_imp: "demodularized player panel code, mostly" + - admin: "added ghost role eligibility delay removal to player panel" From afd848e45af45d11b70be11b2b8d9cb543ba2881 Mon Sep 17 00:00:00 2001 From: Seris02 Date: Mon, 20 Jan 2020 10:29:09 +0800 Subject: [PATCH 069/123] weh --- code/modules/cargo/packs/engineering.dm | 10 +-- code/modules/recycling/conveyor2.dm | 90 ++++++++++--------- .../autolathe_designs_construction.dm | 5 +- 3 files changed, 54 insertions(+), 51 deletions(-) diff --git a/code/modules/cargo/packs/engineering.dm b/code/modules/cargo/packs/engineering.dm index ea90255bce..8b958158e9 100644 --- a/code/modules/cargo/packs/engineering.dm +++ b/code/modules/cargo/packs/engineering.dm @@ -20,15 +20,9 @@ /datum/supply_pack/engineering/conveyor name = "Conveyor Assembly Crate" - desc = "Keep production moving along with six conveyor belts. Conveyor switch included. If you have any questions, check out the enclosed instruction book." + desc = "Keep production moving along with fifteen conveyor belts. Conveyor switch included. If you have any questions, check out the enclosed instruction book." cost = 750 - contains = list(/obj/item/conveyor_construct, - /obj/item/conveyor_construct, - /obj/item/conveyor_construct, - /obj/item/conveyor_construct, - /obj/item/conveyor_construct, - /obj/item/conveyor_construct, - /obj/item/conveyor_switch_construct, + contains = list(/obj/item/stack/conveyor/fifteen, /obj/item/paper/guides/conveyor) crate_name = "conveyor assembly crate" diff --git a/code/modules/recycling/conveyor2.dm b/code/modules/recycling/conveyor2.dm index 46ddb1e2ed..50d01ab7a3 100644 --- a/code/modules/recycling/conveyor2.dm +++ b/code/modules/recycling/conveyor2.dm @@ -149,8 +149,7 @@ GLOBAL_LIST_EMPTY(conveyors_by_id) "You struggle to pry up \the [src] with \the [I].") if(I.use_tool(src, user, 40, volume=40)) if(!(stat & BROKEN)) - var/obj/item/conveyor_construct/C = new/obj/item/conveyor_construct(src.loc) - C.id = id + var/obj/item/stack/conveyor/C = new /obj/item/stack/conveyor(loc, 1, TRUE, id) transfer_fingerprints_to(C) to_chat(user, "You remove the conveyor belt.") qdel(src) @@ -326,49 +325,15 @@ GLOBAL_LIST_EMPTY(conveyors_by_id) if((dir == NORTH) || (dir == WEST)) invert_icon = TRUE -// -// CONVEYOR CONSTRUCTION STARTS HERE -// - -/obj/item/conveyor_construct - icon = 'icons/obj/recycling.dmi' - icon_state = "conveyor_construct" - name = "conveyor belt assembly" - desc = "A conveyor belt assembly." - w_class = WEIGHT_CLASS_BULKY - var/id = "" //inherited by the belt - -/obj/item/conveyor_construct/attackby(obj/item/I, mob/user, params) - ..() - if(istype(I, /obj/item/conveyor_switch_construct)) - to_chat(user, "You link the switch to the conveyor belt assembly.") - var/obj/item/conveyor_switch_construct/C = I - id = C.id - -/obj/item/conveyor_construct/afterattack(atom/A, mob/user, proximity) - . = ..() - if(!proximity || user.stat || !isfloorturf(A) || istype(A, /area/shuttle)) - return - var/cdir = get_dir(A, user) - if(A == user.loc) - to_chat(user, "You cannot place a conveyor belt under yourself.") - return - var/obj/machinery/conveyor/C = new/obj/machinery/conveyor(A, cdir, id) - transfer_fingerprints_to(C) - qdel(src) - -/obj/item/conveyor_switch_construct - name = "conveyor switch assembly" - desc = "A conveyor control switch assembly." - icon = 'icons/obj/recycling.dmi' - icon_state = "switch-off" - w_class = WEIGHT_CLASS_BULKY - var/id = "" //inherited by the switch - /obj/item/conveyor_switch_construct/Initialize() . = ..() id = "[rand()]" //this couldn't possibly go wrong +/obj/item/conveyor_switch_construct/attack_self(mob/user) + for(var/obj/item/stack/conveyor/C in view()) + C.id = id + to_chat(user, "You have linked all nearby conveyor belt assemblies to this switch.") + /obj/item/conveyor_switch_construct/afterattack(atom/A, mob/user, proximity) . = ..() if(!proximity || user.stat || !isfloorturf(A) || istype(A, /area/shuttle)) @@ -385,6 +350,49 @@ GLOBAL_LIST_EMPTY(conveyors_by_id) transfer_fingerprints_to(NC) qdel(src) +/obj/item/stack/conveyor + name = "conveyor belt assembly" + desc = "A conveyor belt assembly." + icon = 'icons/obj/recycling.dmi' + icon_state = "conveyor_construct" + max_amount = 30 + singular_name = "conveyor belt" + w_class = WEIGHT_CLASS_BULKY + ///id for linking + var/id = "" + +/obj/item/stack/conveyor/Initialize(mapload, new_amount, merge = TRUE, _id) + . = ..() + id = _id + +/obj/item/stack/conveyor/afterattack(atom/A, mob/user, proximity) + . = ..() + if(!proximity || user.stat || !isfloorturf(A) || istype(A, /area/shuttle)) + return + var/cdir = get_dir(A, user) + if(A == user.loc) + to_chat(user, "You cannot place a conveyor belt under yourself!") + return + var/obj/machinery/conveyor/C = new/obj/machinery/conveyor(A, cdir, id) + transfer_fingerprints_to(C) + use(1) + +/obj/item/stack/conveyor/attackby(obj/item/I, mob/user, params) + ..() + if(istype(I, /obj/item/conveyor_switch_construct)) + to_chat(user, "You link the switch to the conveyor belt assembly.") + var/obj/item/conveyor_switch_construct/C = I + id = C.id + +/obj/item/stack/conveyor/update_weight() + return FALSE + +/obj/item/stack/conveyor/thirty + amount = 30 + +/obj/item/stack/conveyor/fifteen + amount = 15 + /obj/item/paper/guides/conveyor name = "paper- 'Nano-it-up U-build series, #9: Build your very own conveyor belt, in SPACE'" info = "

    Congratulations!

    You are now the proud owner of the best conveyor set available for space mail order! We at Nano-it-up know you love to prepare your own structures without wasting time, so we have devised a special streamlined assembly procedure that puts all other mail-order products to shame!

    Firstly, you need to link the conveyor switch assembly to each of the conveyor belt assemblies. After doing so, you simply need to install the belt assemblies onto the floor, et voila, belt built. Our special Nano-it-up smart switch will detected any linked assemblies as far as the eye can see! This convenience, you can only have it when you Nano-it-up. Stay nano!

    " diff --git a/code/modules/research/designs/autolathe_desings/autolathe_designs_construction.dm b/code/modules/research/designs/autolathe_desings/autolathe_designs_construction.dm index 1ae1d3813b..a4abd6e183 100644 --- a/code/modules/research/designs/autolathe_desings/autolathe_designs_construction.dm +++ b/code/modules/research/designs/autolathe_desings/autolathe_designs_construction.dm @@ -87,9 +87,10 @@ name = "Conveyor Belt" id = "conveyor_belt" build_type = AUTOLATHE - materials = list(MAT_METAL = 5000) - build_path = /obj/item/conveyor_construct + materials = list(MAT_METAL = 3000) + build_path = /obj/item/stack/conveyor category = list("initial", "Construction") + maxstack = 30 /datum/design/conveyor_switch name = "Conveyor Belt Switch" From 9b9c7c3018fe456e3760dc03e3d490d1924984a3 Mon Sep 17 00:00:00 2001 From: Hatterhat <31829017+Hatterhat@users.noreply.github.com> Date: Sun, 19 Jan 2020 20:37:31 -0600 Subject: [PATCH 070/123] exo nerf --- code/modules/mining/equipment/explorer_gear.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/mining/equipment/explorer_gear.dm b/code/modules/mining/equipment/explorer_gear.dm index bdca4bb7df..09bd774a6a 100644 --- a/code/modules/mining/equipment/explorer_gear.dm +++ b/code/modules/mining/equipment/explorer_gear.dm @@ -167,7 +167,7 @@ w_class = WEIGHT_CLASS_BULKY heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS hoodtype = /obj/item/clothing/head/hooded/explorer/exo - armor = list("melee" = 65, "bullet" = 5, "laser" = 5, "energy" = 5, "bomb" = 60, "bio" = 25, "rad" = 10, "fire" = 0, "acid" = 0) + armor = list("melee" = 55, "bullet" = 5, "laser" = 5, "energy" = 5, "bomb" = 40, "bio" = 25, "rad" = 10, "fire" = 0, "acid" = 0) resistance_flags = FIRE_PROOF | GOLIATH_RESISTANCE /obj/item/clothing/head/hooded/explorer/exo @@ -175,7 +175,7 @@ desc = "A robust helmet for fighting dangerous animals. Its design and material make it harder for a Goliath to keep their grip on the wearer." icon_state = "exo" item_state = "exo" - armor = list("melee" = 65, "bullet" = 5, "laser" = 5, "energy" = 5, "bomb" = 60, "bio" = 25, "rad" = 10, "fire" = 0, "acid" = 0) + armor = list("melee" = 55, "bullet" = 5, "laser" = 5, "energy" = 5, "bomb" = 40, "bio" = 25, "rad" = 10, "fire" = 0, "acid" = 0) resistance_flags = FIRE_PROOF | GOLIATH_RESISTANCE /obj/item/clothing/mask/gas/exo From c8b5c6e3cd7453cd2b25b51d6f5de4320780d989 Mon Sep 17 00:00:00 2001 From: Winter Flare <7543955+Owai-Seek@users.noreply.github.com> Date: Mon, 20 Jan 2020 00:22:24 -0500 Subject: [PATCH 071/123] Ghost Cafe Beautification Added Vendors Added Carpeting and Wood Made Botany, Dorms, and Kitchen/Bar slightly larger. Added Vendor Refills Added a ton of Janitorial Stuff Added a second set of showers. Added more trashcans. Added Ambrosia Gaia seeds. Added Bedsheet + Towel Bins Added one Slot Machine Scattered around some Coins --- _maps/map_files/generic/CentCom.dmm | 1133 ++++++++++++++++----------- 1 file changed, 674 insertions(+), 459 deletions(-) diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm index ee4288d7fc..7bcf3c1c5d 100644 --- a/_maps/map_files/generic/CentCom.dmm +++ b/_maps/map_files/generic/CentCom.dmm @@ -6775,18 +6775,8 @@ }, /turf/open/floor/plasteel/dark, /area/centcom/supplypod) -"pE" = ( -/obj/machinery/plantgenes/seedvault, -/obj/effect/turf_decal/tile/green{ - dir = 1 - }, -/obj/effect/turf_decal/tile/green, -/obj/effect/turf_decal/tile/green{ - dir = 4 - }, -/obj/effect/turf_decal/tile/green{ - dir = 8 - }, +"pF" = ( +/obj/structure/bedsheetbin/towel, /turf/open/indestructible/hotelwood, /area/centcom/holding) "pH" = ( @@ -6921,11 +6911,6 @@ }, /turf/open/floor/plasteel/dark, /area/centcom/ferry) -"pS" = ( -/obj/structure/table, -/obj/item/stack/packageWrap, -/turf/open/floor/plasteel/cafeteria, -/area/centcom/holding) "pU" = ( /obj/structure/sign/map/right{ pixel_y = -32 @@ -7906,6 +7891,18 @@ }, /turf/open/floor/plating, /area/syndicate_mothership) +"se" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/piano, +/turf/open/indestructible/hotelwood, +/area/centcom/holding) +"sh" = ( +/obj/structure/closet/secure_closet, +/obj/item/coin/silver, +/turf/open/indestructible/hotelwood, +/area/centcom/holding) "si" = ( /obj/structure/table/wood, /obj/item/reagent_containers/food/drinks/beer{ @@ -7922,6 +7919,14 @@ }, /turf/open/floor/plasteel, /area/syndicate_mothership) +"sj" = ( +/obj/machinery/vending/wallmed{ + name = "Emergency NanoMed"; + pixel_y = 28; + use_power = 0 + }, +/turf/open/floor/plasteel/white, +/area/centcom/holding) "sq" = ( /obj/machinery/computer/shuttle/white_ship{ dir = 4 @@ -8421,6 +8426,27 @@ }, /turf/open/floor/plasteel, /area/centcom/ferry) +"tw" = ( +/obj/structure/closet, +/obj/item/stack/tile/carpet/royalblue{ + amount = 24 + }, +/obj/item/stack/tile/carpet/green{ + amount = 24 + }, +/obj/item/stack/tile/carpet/purple{ + amount = 24 + }, +/obj/item/stack/tile/carpet/orange{ + amount = 24 + }, +/obj/item/stack/tile/wood{ + amount = 24 + }, +/obj/item/udder/gutlunch, +/obj/item/stack/sheet/mineral/wood/fifty, +/turf/open/indestructible/hotelwood, +/area/centcom/holding) "tx" = ( /obj/structure/table/wood, /obj/item/storage/pill_bottle/dice, @@ -8708,6 +8734,9 @@ /area/centcom/supplypod) "tZ" = ( /obj/structure/chair/wood/normal, +/obj/machinery/light{ + dir = 8 + }, /turf/open/indestructible/hotelwood, /area/centcom/holding) "uc" = ( @@ -8725,6 +8754,17 @@ /obj/item/storage/crayons, /turf/open/floor/plasteel/freezer, /area/syndicate_mothership) +"ue" = ( +/obj/structure/closet, +/obj/item/storage/backpack/duffelbag/med/surgery, +/obj/machinery/iv_drip, +/obj/item/roller, +/obj/item/storage/firstaid/regular, +/obj/item/reagent_containers/medspray/synthflesh, +/obj/item/reagent_containers/medspray/synthflesh, +/obj/item/reagent_containers/medspray/synthflesh, +/turf/open/floor/plasteel/white, +/area/centcom/holding) "uf" = ( /obj/effect/turf_decal/tile/brown{ dir = 8 @@ -8741,6 +8781,16 @@ }, /turf/open/floor/wood, /area/centcom/holding) +"ui" = ( +/obj/structure/closet/secure_closet/personal/cabinet{ + desc = "Swipe your ID on the closet to claim it. First come first serve, this one is wooden and fancy. Store your stuff here."; + name = "Personal ID-Locked Closet" + }, +/obj/item/reagent_containers/rag/towel, +/obj/item/reagent_containers/rag/towel, +/obj/item/reagent_containers/rag/towel, +/turf/open/floor/carpet/royalblue, +/area/centcom/holding) "uj" = ( /obj/item/clipboard, /obj/item/folder/red, @@ -9028,6 +9078,13 @@ /obj/effect/baseturf_helper/asteroid/snow, /turf/closed/indestructible/riveted, /area/syndicate_mothership) +"uK" = ( +/obj/machinery/door/airlock/wood{ + id_tag = "Ninja7"; + name = "Dorm 7" + }, +/turf/open/indestructible/hotelwood, +/area/centcom/holding) "uM" = ( /obj/structure/mirror{ pixel_x = -28 @@ -9713,13 +9770,6 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/centcom/supplypod/loading/three) -"wj" = ( -/obj/structure/closet/secure_closet/personal/cabinet{ - desc = "Swipe your ID on the closet to claim it. First come first serve, this one is wooden and fancy. Store your stuff here."; - name = "Personal ID-Locked Closet" - }, -/turf/open/floor/carpet/royalblue, -/area/centcom/holding) "wl" = ( /obj/structure/table/wood, /obj/item/paicard, @@ -10233,6 +10283,22 @@ }, /turf/open/floor/mineral/titanium/blue, /area/centcom/holding) +"xP" = ( +/obj/item/coin/silver, +/obj/item/coin/silver, +/obj/item/coin/silver, +/obj/item/coin/silver, +/obj/item/coin/silver, +/obj/item/coin/silver, +/obj/item/coin/silver, +/obj/item/coin/silver, +/obj/item/coin/silver, +/obj/item/coin/silver, +/obj/item/coin/silver, +/obj/item/coin/silver, +/obj/item/coin/silver, +/turf/open/indestructible/hotelwood, +/area/centcom/holding) "xQ" = ( /obj/effect/turf_decal/delivery, /obj/machinery/light, @@ -10360,6 +10426,12 @@ /obj/structure/chair, /turf/open/floor/mineral/titanium, /area/centcom/evac) +"yh" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel/freezer, +/area/centcom/holding) "yj" = ( /obj/machinery/door/airlock/centcom{ name = "CentCom Security"; @@ -10598,12 +10670,6 @@ /obj/effect/decal/cleanable/blood/splatter, /turf/open/floor/grass, /area/wizard_station) -"yM" = ( -/obj/structure/table/wood/bar, -/obj/structure/safe/floor, -/obj/item/seeds/cherry/bomb, -/turf/open/indestructible/hotelwood, -/area/centcom/holding) "yN" = ( /obj/structure/table/reinforced, /obj/item/paper/pamphlet/centcom/visitor_info, @@ -11563,22 +11629,6 @@ /obj/machinery/mech_bay_recharge_port, /turf/open/floor/plating, /area/syndicate_mothership) -"Bo" = ( -/obj/structure/table, -/obj/machinery/reagentgrinder, -/obj/item/reagent_containers/glass/beaker/large, -/obj/effect/turf_decal/tile/green{ - dir = 1 - }, -/obj/effect/turf_decal/tile/green, -/obj/effect/turf_decal/tile/green{ - dir = 4 - }, -/obj/effect/turf_decal/tile/green{ - dir = 8 - }, -/turf/open/indestructible/hotelwood, -/area/centcom/holding) "Bs" = ( /obj/structure/table/wood, /obj/machinery/computer/libraryconsole/bookmanagement, @@ -11905,6 +11955,10 @@ smooth = 1 }, /area/centcom/holding) +"BX" = ( +/obj/structure/bed/dogbed, +/turf/open/indestructible/hotelwood, +/area/centcom/holding) "BY" = ( /obj/item/toy/figure/syndie, /turf/open/floor/plating/asteroid/snow/airless, @@ -12040,6 +12094,25 @@ }, /turf/open/floor/engine/cult, /area/wizard_station) +"Ck" = ( +/obj/structure/table, +/obj/item/storage/backpack/duffelbag/med/surgery, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/centcom/holding) +"Cl" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/item/soap, +/obj/item/soap, +/obj/item/soap, +/obj/item/janiupgrade, +/obj/vehicle/ridden/janicart, +/turf/open/indestructible/hotelwood, +/area/centcom/holding) "Cp" = ( /obj/structure/statue/uranium/nuke, /turf/open/floor/plating/asteroid/snow/airless, @@ -13463,20 +13536,6 @@ /obj/item/instrument/guitar, /turf/open/indestructible/hotelwood, /area/centcom/holding) -"Fb" = ( -/obj/structure/piano, -/obj/machinery/light{ - dir = 8 - }, -/turf/open/indestructible/hotelwood, -/area/centcom/holding) -"Fc" = ( -/obj/structure/sign/barsign{ - pixel_y = 32 - }, -/obj/structure/chair/stool, -/turf/open/indestructible/hotelwood, -/area/centcom/holding) "Fg" = ( /obj/structure/flora/grass/brown, /obj/effect/light_emitter, @@ -13485,18 +13544,11 @@ "Fh" = ( /turf/open/floor/plasteel/cafeteria, /area/centcom/holding) -"Fi" = ( -/obj/structure/chair/wood/wings{ - dir = 3 - }, -/obj/machinery/light{ +"Fk" = ( +/obj/machinery/shower{ dir = 1 }, -/turf/open/indestructible/hotelwood, -/area/centcom/holding) -"Fj" = ( -/obj/machinery/vending/cigarette, -/turf/open/indestructible/hotelwood, +/turf/open/floor/plasteel/freezer, /area/centcom/holding) "Fm" = ( /obj/machinery/shower{ @@ -13641,6 +13693,10 @@ }, /turf/open/floor/plasteel/white, /area/tdome/tdomeobserve) +"FC" = ( +/obj/machinery/washing_machine, +/turf/open/floor/mineral/titanium/blue, +/area/centcom/holding) "FD" = ( /obj/machinery/shower{ dir = 4 @@ -13777,6 +13833,12 @@ }, /turf/open/floor/engine/cult, /area/wizard_station) +"FU" = ( +/obj/structure/sign/barsign{ + pixel_y = 32 + }, +/turf/open/indestructible/hotelwood, +/area/centcom/holding) "FW" = ( /obj/structure/window/reinforced{ dir = 1 @@ -13784,6 +13846,7 @@ /obj/structure/window/reinforced{ dir = 4 }, +/obj/structure/table/wood, /turf/open/indestructible/hotelwood, /area/centcom/holding) "FX" = ( @@ -14747,24 +14810,6 @@ /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/tdome/tdomeobserve) -"HQ" = ( -/obj/structure/sink/kitchen{ - desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; - name = "sink"; - pixel_y = 28 - }, -/obj/effect/turf_decal/tile/green{ - dir = 1 - }, -/obj/effect/turf_decal/tile/green, -/obj/effect/turf_decal/tile/green{ - dir = 4 - }, -/obj/effect/turf_decal/tile/green{ - dir = 8 - }, -/turf/open/indestructible/hotelwood, -/area/centcom/holding) "HR" = ( /obj/structure/sink{ dir = 4; @@ -15824,12 +15869,16 @@ }, /turf/open/floor/plasteel/dark, /area/tdome/tdomeadmin) +"Kd" = ( +/obj/structure/mopbucket, +/obj/item/mop, +/turf/open/indestructible/hotelwood, +/area/centcom/holding) "Kf" = ( /obj/structure/closet/secure_closet/personal/cabinet, -/obj/item/lighter, -/obj/item/stack/sheet/mineral/wood{ - amount = 10 - }, +/obj/item/reagent_containers/rag/towel, +/obj/item/reagent_containers/rag/towel, +/obj/item/reagent_containers/rag/towel, /turf/open/floor/carpet/red, /area/centcom/holding) "Kg" = ( @@ -16202,6 +16251,7 @@ /obj/structure/window/reinforced{ dir = 1 }, +/obj/structure/table/wood, /turf/open/indestructible/hotelwood, /area/centcom/holding) "KU" = ( @@ -16273,6 +16323,25 @@ }, /turf/open/floor/mineral/titanium/blue, /area/centcom/evac) +"Lj" = ( +/obj/structure/closet/crate, +/obj/item/vending_refill/autodrobe, +/obj/item/vending_refill/autodrobe, +/obj/item/vending_refill/boozeomat, +/obj/item/vending_refill/boozeomat, +/obj/item/vending_refill/cigarette, +/obj/item/vending_refill/cigarette, +/obj/item/vending_refill/clothing, +/obj/item/vending_refill/coffee, +/obj/item/vending_refill/coffee, +/obj/item/vending_refill/cola, +/obj/item/vending_refill/cola, +/obj/item/vending_refill/wallmed, +/obj/item/vending_refill/wallmed, +/obj/item/vending_refill/snack, +/obj/item/vending_refill/snack, +/turf/open/indestructible/hotelwood, +/area/centcom/holding) "Ln" = ( /obj/structure/toilet{ dir = 4 @@ -16285,6 +16354,12 @@ }, /turf/open/floor/mineral/titanium/blue, /area/centcom/evac) +"Lq" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/centcom/holding) "Ls" = ( /obj/docking_port/stationary{ dir = 4; @@ -16314,6 +16389,10 @@ }, /turf/open/floor/mineral/titanium/blue, /area/centcom/evac) +"Lz" = ( +/obj/machinery/vending/cola, +/turf/open/indestructible/hotelwood, +/area/centcom/holding) "LA" = ( /obj/structure/table, /obj/structure/bedsheetbin, @@ -16330,6 +16409,11 @@ /obj/item/storage/box/donkpockets, /turf/open/floor/mineral/titanium/blue, /area/centcom/evac) +"LD" = ( +/obj/structure/table, +/obj/item/storage/backpack/duffelbag/med/surgery, +/turf/open/floor/plasteel/white, +/area/centcom/holding) "LE" = ( /obj/structure/table, /obj/item/radio/off, @@ -16347,6 +16431,16 @@ }, /turf/open/floor/mineral/titanium/blue, /area/centcom/evac) +"LI" = ( +/obj/structure/mopbucket, +/obj/item/mop, +/obj/structure/sink/kitchen{ + desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; + name = "sink"; + pixel_y = 28 + }, +/turf/open/indestructible/hotelwood, +/area/centcom/holding) "LJ" = ( /obj/structure/table, /obj/item/radio/off, @@ -16555,6 +16649,13 @@ "Mm" = ( /turf/open/floor/grass, /area/centcom/holding) +"Mn" = ( +/obj/machinery/vending/cigarette, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/indestructible/hotelwood, +/area/centcom/holding) "Ms" = ( /obj/effect/mob_spawn/human/ghostcafe{ dir = 8 @@ -16570,22 +16671,6 @@ }, /turf/open/indestructible/boss/air, /area/centcom/holding) -"Mu" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/effect/turf_decal/tile/green{ - dir = 1 - }, -/obj/effect/turf_decal/tile/green, -/obj/effect/turf_decal/tile/green{ - dir = 4 - }, -/obj/effect/turf_decal/tile/green{ - dir = 8 - }, -/turf/open/indestructible/hotelwood, -/area/centcom/holding) "Mv" = ( /obj/structure/table/reinforced, /obj/item/storage/fancy/donut_box, @@ -16703,6 +16788,14 @@ /obj/effect/turf_decal/tile/brown, /turf/open/floor/plasteel, /area/centcom/supplypod/loading/two) +"Nb" = ( +/obj/structure/table, +/obj/item/storage/box/bodybags, +/obj/item/storage/box/bodybags, +/obj/item/storage/box/bodybags, +/obj/item/storage/box/bodybags, +/turf/open/floor/plasteel/white, +/area/centcom/holding) "Nc" = ( /obj/effect/turf_decal/tile/brown{ dir = 8 @@ -16723,6 +16816,10 @@ /obj/machinery/autoylathe, /turf/open/indestructible/hotelwood, /area/centcom/holding) +"Ng" = ( +/obj/structure/closet/crate/freezer/blood, +/turf/open/floor/plasteel/white, +/area/centcom/holding) "Ni" = ( /obj/structure/table/reinforced, /obj/item/clipboard, @@ -16749,40 +16846,14 @@ }, /turf/open/floor/plasteel, /area/tdome/tdomeobserve) -"Nm" = ( -/obj/structure/closet/crate, -/obj/item/vending_refill/autodrobe, -/obj/item/stack/sheet/paperframes/fifty, -/obj/item/stack/sheet/paperframes/fifty, -/obj/item/storage/fancy/candle_box, -/obj/item/storage/fancy/candle_box, -/obj/item/storage/fancy/candle_box, -/obj/item/storage/box/lights/mixed, -/turf/open/indestructible/hotelwood, -/area/centcom/holding) -"Nn" = ( -/obj/structure/closet/secure_closet/hydroponics{ - locked = 0 - }, -/obj/effect/turf_decal/tile/green{ - dir = 1 - }, -/obj/effect/turf_decal/tile/green, -/obj/effect/turf_decal/tile/green{ - dir = 4 - }, -/obj/effect/turf_decal/tile/green{ - dir = 8 - }, -/turf/open/indestructible/hotelwood, +"Nl" = ( +/obj/structure/table, +/obj/machinery/dish_drive, +/turf/open/floor/plasteel/cafeteria, /area/centcom/holding) "Nu" = ( /turf/open/floor/wood, /area/syndicate_mothership) -"Nv" = ( -/obj/structure/table, -/turf/open/floor/plasteel/cafeteria, -/area/centcom/holding) "Nw" = ( /obj/machinery/recharge_station, /turf/open/floor/plasteel/white, @@ -16796,15 +16867,11 @@ }, /turf/open/floor/plasteel, /area/centcom/supplypod/loading/two) -"ND" = ( -/obj/structure/closet, -/obj/item/storage/backpack/duffelbag/med/surgery, -/obj/machinery/iv_drip, -/obj/item/roller, -/obj/item/storage/firstaid/regular, -/obj/item/reagent_containers/medspray/synthflesh, -/obj/item/reagent_containers/medspray/synthflesh, -/obj/item/reagent_containers/medspray/synthflesh, +"NB" = ( +/obj/structure/table/wood/bar, +/obj/structure/safe/floor, +/obj/item/seeds/cherry/bomb, +/obj/item/key/janitor, /turf/open/indestructible/hotelwood, /area/centcom/holding) "NF" = ( @@ -16822,22 +16889,36 @@ }, /turf/open/floor/plasteel, /area/centcom/control) -"NJ" = ( -/obj/structure/table, -/obj/item/book/manual/hydroponics_pod_people, -/obj/item/seeds/pumpkin/blumpkin, -/obj/item/paper/guides/jobs/hydroponics, -/obj/effect/turf_decal/tile/green{ - dir = 1 +"NH" = ( +/obj/machinery/shower{ + pixel_y = 12 }, -/obj/effect/turf_decal/tile/green, -/obj/effect/turf_decal/tile/green{ +/turf/open/floor/plasteel/freezer, +/area/centcom/holding) +"NL" = ( +/obj/structure/bedsheetbin, +/turf/open/indestructible/hotelwood, +/area/centcom/holding) +"NM" = ( +/obj/structure/table/wood, +/obj/item/camera/detective{ + desc = "A polaroid camera with extra capacity for social media marketing."; + name = "Professional camera" + }, +/obj/item/camera_film, +/obj/item/paper_bin, +/obj/item/pen/fountain, +/turf/open/indestructible/hotelwood, +/area/centcom/holding) +"NR" = ( +/obj/structure/toilet{ dir = 4 }, -/obj/effect/turf_decal/tile/green{ - dir = 8 +/obj/structure/window/reinforced/tinted{ + icon_state = "twindow"; + dir = 1 }, -/turf/open/indestructible/hotelwood, +/turf/open/floor/plasteel/white, /area/centcom/holding) "NT" = ( /obj/structure/window/paperframe{ @@ -16933,6 +17014,7 @@ name = "Lock Control"; pixel_y = -28 }, +/mob/living/simple_animal/bot/cleanbot, /turf/open/floor/plasteel/white, /area/centcom/holding) "Or" = ( @@ -17027,10 +17109,6 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/plating, /area/syndicate_mothership) -"Pa" = ( -/obj/machinery/washing_machine, -/turf/open/floor/plasteel/white, -/area/centcom/holding) "Pg" = ( /obj/machinery/light{ dir = 1 @@ -17048,6 +17126,17 @@ }, /turf/open/indestructible/boss/air, /area/centcom/holding) +"Pm" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/window/reinforced/tinted{ + icon_state = "twindow"; + dir = 1 + }, +/obj/machinery/washing_machine, +/turf/open/floor/plasteel/white, +/area/centcom/holding) "Pn" = ( /turf/closed/indestructible/fakedoor{ name = "Equipment Storage" @@ -17059,12 +17148,6 @@ }, /turf/open/indestructible/boss/air, /area/centcom/holding) -"Pq" = ( -/obj/structure/urinal{ - pixel_y = 28 - }, -/turf/open/floor/plasteel/white, -/area/centcom/holding) "Pr" = ( /obj/structure/table, /obj/item/book/manual/chef_recipes, @@ -17088,12 +17171,6 @@ /obj/machinery/light/small, /turf/open/floor/wood, /area/syndicate_mothership) -"Px" = ( -/obj/structure/mineral_door/paperframe{ - name = "Arcade" - }, -/turf/open/floor/wood, -/area/centcom/holding) "PA" = ( /obj/structure/window/reinforced{ dir = 4 @@ -17158,6 +17235,17 @@ }, /turf/open/floor/plating, /area/syndicate_mothership) +"PR" = ( +/obj/structure/table/wood, +/obj/item/soap, +/obj/item/soap, +/obj/item/soap, +/obj/item/lightreplacer, +/obj/item/lightreplacer, +/obj/item/storage/bag/trash, +/obj/item/storage/bag/trash, +/turf/open/indestructible/hotelwood, +/area/centcom/holding) "PS" = ( /obj/machinery/computer/shuttle/syndicate/recall, /obj/effect/turf_decal/tile/bar, @@ -17221,6 +17309,27 @@ /obj/structure/table/wood, /turf/open/floor/engine/cult, /area/wizard_station) +"Qj" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/turf_decal/tile/green{ + dir = 1 + }, +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/green{ + dir = 4 + }, +/obj/effect/turf_decal/tile/green{ + dir = 8 + }, +/obj/machinery/chem_master/condimaster{ + desc = "Used to separate out liquids - useful for purifying botanical extracts. Also dispenses condiments."; + name = "BrewMaster 2199"; + pixel_x = -4 + }, +/turf/open/indestructible/hotelwood, +/area/centcom/holding) "Qk" = ( /obj/structure/flora/ausbushes/fullgrass, /obj/structure/flora/ausbushes/ppflowers, @@ -17283,30 +17392,6 @@ }, /turf/open/indestructible/hotelwood, /area/centcom/holding) -"QH" = ( -/obj/machinery/chem_master/condimaster{ - desc = "Used to separate out liquids - useful for purifying botanical extracts. Also dispenses condiments."; - name = "BrewMaster 2199"; - pixel_x = -4 - }, -/obj/effect/turf_decal/tile/green{ - dir = 1 - }, -/obj/effect/turf_decal/tile/green, -/obj/effect/turf_decal/tile/green{ - dir = 4 - }, -/obj/effect/turf_decal/tile/green{ - dir = 8 - }, -/turf/open/indestructible/hotelwood, -/area/centcom/holding) -"QI" = ( -/obj/structure/toilet{ - dir = 4 - }, -/turf/open/floor/plasteel/white, -/area/centcom/holding) "QK" = ( /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, @@ -17342,6 +17427,13 @@ /obj/item/storage/box/donkpockets, /turf/open/floor/plasteel/cafeteria, /area/syndicate_mothership) +"QS" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/computer/slot_machine, +/turf/open/indestructible/hotelwood, +/area/centcom/holding) "QT" = ( /obj/machinery/chem_dispenser/drinks, /turf/closed/indestructible{ @@ -17379,19 +17471,8 @@ }, /turf/open/floor/plating, /area/syndicate_mothership) -"Rd" = ( -/obj/machinery/light, -/obj/effect/turf_decal/tile/green{ - dir = 1 - }, -/obj/effect/turf_decal/tile/green, -/obj/effect/turf_decal/tile/green{ - dir = 4 - }, -/obj/effect/turf_decal/tile/green{ - dir = 8 - }, -/turf/open/indestructible/hotelwood, +"Rc" = ( +/turf/open/floor/plasteel/freezer, /area/centcom/holding) "Re" = ( /obj/structure/mineral_door/paperframe, @@ -17489,6 +17570,32 @@ }, /turf/open/floor/holofloor, /area/holodeck/rec_center/basketball) +"RG" = ( +/obj/structure/mirror{ + pixel_y = 28 + }, +/obj/structure/sink{ + dir = 1; + pixel_y = 25 + }, +/mob/living/simple_animal/bot/cleanbot, +/turf/open/floor/mineral/titanium/blue, +/area/centcom/holding) +"RK" = ( +/obj/machinery/plantgenes/seedvault, +/obj/effect/turf_decal/tile/green{ + dir = 1 + }, +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/green{ + dir = 4 + }, +/obj/effect/turf_decal/tile/green{ + dir = 8 + }, +/obj/structure/table, +/turf/open/indestructible/hotelwood, +/area/centcom/holding) "RO" = ( /obj/machinery/shower{ dir = 1 @@ -17675,18 +17782,6 @@ "ST" = ( /turf/open/floor/mineral/titanium/blue, /area/centcom/holding) -"SU" = ( -/obj/structure/table/wood, -/obj/item/camera/detective{ - desc = "A polaroid camera with extra capacity for social media marketing."; - name = "Professional camera" - }, -/obj/item/camera_film, -/obj/item/wallframe/newscaster, -/obj/item/paper_bin, -/obj/item/pen/fountain, -/turf/open/indestructible/hotelwood, -/area/centcom/holding) "SV" = ( /obj/effect/turf_decal/tile/bar, /obj/effect/turf_decal/tile/bar{ @@ -17720,10 +17815,6 @@ }, /turf/open/floor/wood, /area/centcom/holding) -"Tb" = ( -/obj/structure/closet/crate/freezer/blood, -/turf/open/indestructible/hotelwood, -/area/centcom/holding) "Tc" = ( /obj/machinery/button/door{ id = "Ninja2"; @@ -17742,6 +17833,26 @@ /obj/machinery/vending/cigarette/syndicate, /turf/open/floor/plasteel, /area/syndicate_mothership) +"Tl" = ( +/obj/structure/closet/secure_closet/hydroponics{ + locked = 0 + }, +/obj/effect/turf_decal/tile/green{ + dir = 1 + }, +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/green{ + dir = 4 + }, +/obj/effect/turf_decal/tile/green{ + dir = 8 + }, +/obj/item/seeds/ambrosia/gaia, +/obj/item/seeds/ambrosia/gaia, +/obj/item/seeds/pumpkin/blumpkin, +/obj/item/seeds/pumpkin/blumpkin, +/turf/open/indestructible/hotelwood, +/area/centcom/holding) "Tn" = ( /obj/structure/table/wood/fancy, /obj/item/candle/infinite{ @@ -17813,13 +17924,6 @@ }, /turf/open/floor/holofloor, /area/holodeck/rec_center/basketball) -"TK" = ( -/obj/structure/table/wood/bar, -/obj/structure/mirror{ - pixel_y = 28 - }, -/turf/open/indestructible/hotelwood, -/area/centcom/holding) "TM" = ( /mob/living/simple_animal/bot/medbot{ desc = "When engaged in combat, the vanquishing of thine enemy can be the warrior's only concern."; @@ -17829,6 +17933,12 @@ }, /turf/open/indestructible/hotelwood, /area/centcom/holding) +"TN" = ( +/obj/structure/table, +/obj/item/stack/packageWrap, +/obj/item/reagent_containers/glass/beaker, +/turf/open/floor/plasteel/cafeteria, +/area/centcom/holding) "TO" = ( /obj/effect/turf_decal/tile/bar, /obj/effect/turf_decal/tile/bar{ @@ -17849,10 +17959,6 @@ /obj/effect/landmark/holding_facility, /turf/open/indestructible/hotelwood, /area/centcom/holding) -"Uf" = ( -/obj/structure/closet/secure_closet, -/turf/open/indestructible/hotelwood, -/area/centcom/holding) "Ug" = ( /obj/machinery/door/poddoor/shuttledock{ checkdir = 1; @@ -17879,6 +17985,19 @@ }, /turf/open/floor/plasteel, /area/syndicate_mothership) +"Uk" = ( +/obj/structure/table/wood/bar, +/obj/structure/mirror{ + pixel_y = 28 + }, +/obj/item/lightreplacer, +/obj/item/lightreplacer, +/obj/item/lightreplacer, +/obj/item/storage/bag/trash, +/obj/item/storage/bag/trash, +/obj/item/storage/bag/trash, +/turf/open/indestructible/hotelwood, +/area/centcom/holding) "Ul" = ( /obj/structure/table, /obj/machinery/microwave{ @@ -17916,6 +18035,11 @@ /obj/effect/mapping_helpers/airlock/cyclelink_helper, /turf/open/floor/plasteel, /area/tdome/tdomeobserve) +"Uq" = ( +/obj/item/storage/box/bodybags, +/obj/item/storage/box/bodybags, +/turf/open/indestructible/hotelwood, +/area/centcom/holding) "Ur" = ( /turf/open/floor/carpet/royalblue, /area/centcom/holding) @@ -17949,6 +18073,9 @@ desc = "Swipe your ID on the closet to claim it. First come first serve, this one is wooden and fancy. Store your stuff here."; name = "Personal ID-Locked Closet" }, +/obj/item/coin/silver, +/obj/item/coin/silver, +/obj/item/coin/silver, /turf/open/indestructible/hotelwood, /area/centcom/holding) "UE" = ( @@ -17994,6 +18121,16 @@ }, /turf/open/floor/plasteel, /area/centcom/supplypod/loading/one) +"US" = ( +/obj/structure/closet/crate, +/obj/item/stack/sheet/paperframes/fifty, +/obj/item/stack/sheet/paperframes/fifty, +/obj/item/storage/fancy/candle_box, +/obj/item/storage/fancy/candle_box, +/obj/item/storage/fancy/candle_box, +/obj/item/storage/box/lights/mixed, +/turf/open/indestructible/hotelwood, +/area/centcom/holding) "UT" = ( /obj/structure/chair/wood/wings{ dir = 1 @@ -18194,6 +18331,13 @@ }, /turf/open/floor/plasteel, /area/centcom/evac) +"Wg" = ( +/obj/structure/bedsheetbin/towel, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/mineral/titanium/blue, +/area/centcom/holding) "Wi" = ( /obj/effect/turf_decal/tile/brown, /obj/effect/turf_decal/tile/brown{ @@ -18215,6 +18359,10 @@ /obj/machinery/door/airlock/wood, /turf/open/indestructible/hotelwood, /area/centcom/holding) +"Wn" = ( +/obj/structure/table/optable, +/turf/open/floor/plasteel/white, +/area/centcom/holding) "Wr" = ( /turf/open/floor/plasteel/dark, /area/centcom/supplypod) @@ -18416,6 +18564,23 @@ }, /turf/open/floor/plasteel, /area/centcom/ferry) +"XB" = ( +/obj/structure/table, +/obj/machinery/reagentgrinder, +/obj/item/reagent_containers/glass/beaker/large, +/obj/effect/turf_decal/tile/green{ + dir = 1 + }, +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/green{ + dir = 4 + }, +/obj/effect/turf_decal/tile/green{ + dir = 8 + }, +/obj/machinery/light, +/turf/open/indestructible/hotelwood, +/area/centcom/holding) "XD" = ( /obj/machinery/button/door{ id = "Ninja4"; @@ -18466,6 +18631,10 @@ }, /turf/open/floor/plating, /area/syndicate_mothership) +"XZ" = ( +/obj/structure/closet/crate/bin, +/turf/open/floor/plasteel/white, +/area/centcom/holding) "Ya" = ( /obj/machinery/button/door{ id = "Ninja1"; @@ -18476,6 +18645,26 @@ }, /turf/open/indestructible/hotelwood, /area/centcom/holding) +"Yb" = ( +/obj/structure/sink/kitchen{ + desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; + name = "sink"; + pixel_y = 28 + }, +/obj/effect/turf_decal/tile/green{ + dir = 1 + }, +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/green{ + dir = 4 + }, +/obj/effect/turf_decal/tile/green{ + dir = 8 + }, +/obj/item/paper/guides/jobs/hydroponics, +/obj/item/book/manual/hydroponics_pod_people, +/turf/open/indestructible/hotelwood, +/area/centcom/holding) "Yc" = ( /obj/effect/turf_decal/stripes/line, /turf/open/floor/plating, @@ -18555,6 +18744,19 @@ /obj/machinery/door/airlock/titanium, /turf/open/floor/mineral/titanium, /area/centcom/evac) +"Yz" = ( +/obj/structure/table, +/turf/open/floor/plasteel/white, +/area/centcom/holding) +"YI" = ( +/obj/structure/chair/wood/normal{ + dir = 1 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/indestructible/hotelwood, +/area/centcom/holding) "YJ" = ( /obj/item/reagent_containers/food/condiment/enzyme, /obj/item/reagent_containers/food/drinks/shaker, @@ -18580,10 +18782,11 @@ }, /turf/open/indestructible/hotelwood, /area/centcom/holding) -"YQ" = ( -/obj/structure/table, -/obj/item/reagent_containers/glass/beaker, -/turf/open/floor/plasteel/cafeteria, +"YP" = ( +/obj/machinery/sleeper{ + dir = 8 + }, +/turf/open/floor/plasteel/white, /area/centcom/holding) "YU" = ( /obj/structure/window/reinforced{ @@ -18636,6 +18839,10 @@ /obj/machinery/light, /turf/open/floor/plasteel/dark, /area/syndicate_mothership) +"Zt" = ( +/obj/structure/bedsheetbin/towel, +/turf/open/floor/plasteel/white, +/area/centcom/holding) "Zu" = ( /obj/machinery/vending/autodrobe/all_access{ extended_inventory = 1 @@ -18683,6 +18890,10 @@ }, /turf/open/floor/plating, /area/syndicate_mothership) +"ZI" = ( +/obj/machinery/vending/coffee, +/turf/open/indestructible/hotelwood, +/area/centcom/holding) "ZJ" = ( /obj/machinery/door/airlock/centcom{ name = "CentCom Security"; @@ -18717,6 +18928,10 @@ "ZQ" = ( /turf/open/floor/plasteel, /area/centcom/supplypod/loading/two) +"ZR" = ( +/obj/machinery/vending/snack, +/turf/open/indestructible/hotelwood, +/area/centcom/holding) "ZT" = ( /mob/living/simple_animal/cow, /turf/open/floor/grass, @@ -42833,8 +43048,6 @@ aa aa aa aa -aa -aa Nd Nd Nd @@ -42872,13 +43085,15 @@ Nd Nd Nd Nd -aa Nd Nd Nd Nd Nd -aa +Nd +Nd +Nd +Nd aa aa aa @@ -43090,19 +43305,19 @@ aa aa aa aa -aa -aa Nd -PO +SW PO PO Sw PO PO PO +PO Nd -QI -VA +NR +NR +Pm Op Nd Rm @@ -43116,27 +43331,27 @@ NT UV CV Sd -NT -Sd -Sd -Sd -Sd -Sd -Sd +Nd +Wg +Ln +Nd +NH +yh +Fk +Nd +sh Sd +BX +Nd +Lz +Yo +PR Nd VL Ww -Sd +Uq Nd aa -Nd -Uf -Sd -Sd -Nd -aa -aa aa aa aa @@ -43347,10 +43562,9 @@ aa aa aa aa -aa -aa Nd -HQ +Yb +PY PY PY PY @@ -43358,7 +43572,8 @@ PY PY PY Nd -Pq +ZW +ZW ZW ZW Za @@ -43373,26 +43588,26 @@ NT RQ Sd Sd -NT -Sd -Sd -Sd -Sd -Sd -Sd -Sd Nd -Gs -Sd -HH +RG +ST Nd -aa +NH +Rc +Fk Nd MJ Sd Sd Nd -aa +ZI +Sd +Ph +Nd +Gs +Sd +HH +Nd aa aa aa @@ -43604,18 +43819,18 @@ aa aa aa aa -aa -aa Nd -Mu -QH -Bo -vs -Rj -PI -Rd +Qj +PY +PY +PY +PY +PY +PY +XB Nd -Pa +SB +ZW ZW ZW Nd @@ -43630,26 +43845,26 @@ NT UV CV Sd -NT -Sd -MR -Sd -Sd -Sd -MR -Sd Nd -Sd -Sd -Sd +FC +ST Nd -aa +NH +Rc +Fk Nd ma Sd Sd Nd -aa +ZR +Sd +Sd +Nd +tw +Sd +Kd +Nd aa aa aa @@ -43861,19 +44076,19 @@ aa aa aa aa -aa -aa Nd +PI PY PY PY PY PY PY -PY +Rj Nd SB -ZW +Lq +Zt Nw Nd Sd @@ -43884,29 +44099,29 @@ Sd Tu Vu Nd -Gs +QS Sd Sd Nd Nd +Wl Nd Nd -Px -Nd -Nd -Nd -Nd -Nd -Ox -Nd -Nd +Wl Nd Nd Nd yS Nd Nd -aa +LI +Sd +Sd +Nd +Nd +Ox +Nd +Nd aa aa aa @@ -44118,16 +44333,16 @@ aa aa aa aa -aa -aa Nd -pE -NJ -SW +RK +PY +PY PY Um -Nn +Tl PY +vs +Nd Nd Nd Nd @@ -44146,18 +44361,19 @@ CV Sd NT Sd -Yo Sd Sd Sd -Yo +Sd Sd Nd Sd Sd +Sd Yo Sd Sd +Sd Yo Sd Sd @@ -44168,7 +44384,6 @@ aa aa aa aa -aa KK KN KS @@ -44375,8 +44590,6 @@ aa aa aa aa -aa -aa Nd Nd Nd @@ -44386,6 +44599,8 @@ Nd Nd py Nd +Nd +Yh Sd Yo Sd @@ -44408,7 +44623,6 @@ Sd Sd Sd Sd -Sd Qu Sd Sd @@ -44418,6 +44632,8 @@ Sd Sd Sd Sd +Sd +Sd Zu Nd aa @@ -44425,7 +44641,6 @@ aa aa aa aa -aa KH KH KS @@ -44632,18 +44847,18 @@ aa aa aa aa -aa -aa Nd -PL +Kd Sd Yo Sd Sd Sd Sd -Yh Sd +Sd +Sd +Nd Nd Nd Nd @@ -44663,7 +44878,6 @@ Sd MR Sd Sd -Sd MR Sd Nd @@ -44675,6 +44889,8 @@ Sd Sd Sd Sd +Sd +Sd PM Nd aa @@ -44683,7 +44899,6 @@ aa aa aa aa -aa KH KU Lb @@ -44889,8 +45104,6 @@ aa aa aa aa -aa -aa Nd Tq Sd @@ -44899,9 +45112,11 @@ YN Nd Vm Fh +Fh zV Nd Nd +se Fa KT Sd @@ -44928,6 +45143,7 @@ Nd Nd Nd Rq +Sd HH Nd Nd @@ -44939,7 +45155,6 @@ aa aa aa aa -aa KL KO KV @@ -45146,19 +45361,19 @@ aa aa aa aa -aa -aa Nd -Nf +tw Sd Rh Mm Nd MT Fh +Fh Yu Nd -Fb +ZI +CV Sd KT Sd @@ -45186,9 +45401,10 @@ SY Nd Sd Sd +Sd Nd SY -Ri +YI UD Nd aa @@ -45197,7 +45413,6 @@ aa aa aa aa -aa KH KW Lb @@ -45403,19 +45618,19 @@ aa aa aa aa -aa -aa Nd -Sd +ZR Sd Rh ZT Nd Pr Fh +Fh QW Nd -Fc +FU +Sd Sd KT Sd @@ -45437,16 +45652,17 @@ Sd Sd Sd Nd -Gs +Sd Sd Sd lS Sd Sd +Sd RP Sd Sd -HH +Sd Nd aa aa @@ -45454,7 +45670,6 @@ aa aa aa aa -aa KP KX Lb @@ -45660,8 +45875,6 @@ aa aa aa aa -aa -aa Nd Nd XL @@ -45670,9 +45883,11 @@ Nd Nd JE Fh -YQ +Fh +Vv Nd -MR +Sd +Sd Sd FW Sd @@ -45700,6 +45915,7 @@ Ya Nd Sd Sd +Sd Nd XD Sd @@ -45711,7 +45927,6 @@ aa aa aa aa -aa KH KY Lb @@ -45917,19 +46132,19 @@ aa aa aa aa -aa -aa Nd -yM +NB Sd Yo -Sd +PL Nd SG Fh -Vv -Nd -Nd +Fh +Fh +Wl +Sd +MR Sd FX Sd @@ -45957,6 +46172,7 @@ Nd Nd Sd Sd +Sd Nd Nd Nd @@ -45967,7 +46183,6 @@ aa aa aa aa -aa KM KO KV @@ -46174,18 +46389,18 @@ aa aa aa aa -aa -aa Nd OG Sd Sd -Sd +Tq Nd zX Fh -pS +Fh +TN Nd +Dl Nd Nd Nd @@ -46214,9 +46429,10 @@ SY Nd Sd Sd +Sd Nd SY -Ri +YI UD Nd aa @@ -46225,7 +46441,6 @@ aa aa aa aa -aa KH KU Lb @@ -46431,18 +46646,18 @@ aa aa aa aa -aa -aa Nd -TK -Sd +Uk Sd Sd +Nf Nd QA Fh -Nv +Fh +Nl ED +Sd Yo Yf UE @@ -46454,7 +46669,7 @@ Sd Sd Tn NT -Ro +Sd Ud Ud NT @@ -46465,23 +46680,23 @@ zT MM TM Nd -Gs +Sd Sd Sd uh Sd Sd +Sd zW Sd Sd -HH +Sd Nd aa aa aa aa aa -aa KH KH KS @@ -46688,19 +46903,19 @@ aa aa aa aa -aa -aa Nd YL Sd Sd -Sd +Lj Nd Xo Fh Fh +Fh py Sd +Sd SY UE Sd @@ -46711,7 +46926,7 @@ Sd Sd GY NT -Tw +Sd Ud Ud NT @@ -46728,6 +46943,7 @@ Tc Nd Sd Sd +Sd Nd AC Sd @@ -46738,7 +46954,6 @@ aa aa aa aa -aa KI KN KS @@ -46945,19 +47160,19 @@ aa aa aa aa -aa -aa Nd Xe Sd Sd -Sd +tw Nd TB Fh Fh +Fh BV Sd +Sd XT UE Sd @@ -46984,6 +47199,7 @@ Nd Nd Nd Rq +Sd HH Nd Nd @@ -46995,7 +47211,6 @@ aa aa aa aa -aa KJ KN KZ @@ -47202,19 +47417,19 @@ aa aa aa aa -aa -aa Nd -Gs +Cl Sd Sd Sd Nd Vz Fh +Fh YJ QT Sd +Sd SY UE Sd @@ -47242,6 +47457,7 @@ YO Nd Sd Sd +Sd Nd RX Xw @@ -47252,7 +47468,6 @@ aa aa aa aa -aa KK KN KQ @@ -47459,8 +47674,6 @@ aa aa aa aa -aa -aa Nd Bs Ri @@ -47470,8 +47683,10 @@ XL Fh Fh Fh +Fh XL Sd +Sd XX UE Sd @@ -47499,6 +47714,7 @@ Sd SZ Sd Sd +Sd Ws Sd Sd @@ -47509,7 +47725,6 @@ aa aa aa aa -aa KH KH KH @@ -47716,22 +47931,22 @@ aa aa aa aa -aa -aa Nd -SU +NM Sd MR -Nm +US Nd SN pV +pV Tr Nd -Fj +Mn +Ph Nd Nd -Fi +Rm Tn UT Hm @@ -47739,14 +47954,14 @@ Sd Sd GY NT -Sd +Tw Ms -Sd +Ro NT vt Mx -ND -Tb +Sd +Sd Uh tW Nd @@ -47755,11 +47970,12 @@ Of QF Nd Sd -sa +Sd +Sd Nd WN Ur -wj +ui Nd aa aa @@ -47792,7 +48008,6 @@ aa aa aa aa -aa "} (114,1,1) = {" aa @@ -47973,8 +48188,6 @@ aa aa aa aa -aa -aa Nd Nd Nd @@ -48004,6 +48217,8 @@ Nd Nd Nd Nd +Sd +Sd Nd Nd Nd @@ -48011,8 +48226,9 @@ Kf WV Sd Nd -Nd -Nd +sa +Sd +Sd Nd Sd zY @@ -48049,7 +48265,6 @@ aa aa aa aa -aa "} (115,1,1) = {" aa @@ -48256,20 +48471,21 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa +Nd +ue +VA +ZW +ZW +Ck +Nb Nd Nd Nd QC Nd -aa -aa +Nd +uK +Nd Nd QC Nd @@ -48306,7 +48522,6 @@ aa aa aa aa -aa "} (116,1,1) = {" aa @@ -48513,20 +48728,21 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa +Nd +sj +ZW +ZW +ZW +ZW +Yz Nd Ln ST ST Nd -aa -aa +NL +Sd +pF Nd ST ST @@ -48563,7 +48779,6 @@ aa aa aa aa -aa "} (117,1,1) = {" aa @@ -48770,20 +48985,21 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa +Nd +YP +Ng +XZ +Wn +ZW +LD Nd xO QN ZE Nd -aa -aa +NL +xP +pF Nd ZE QN @@ -48820,7 +49036,6 @@ aa aa aa aa -aa "} (118,1,1) = {" aa @@ -49027,26 +49242,26 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa Nd Nd Nd Nd Nd -aa -aa Nd Nd Nd Nd Nd -aa +Nd +Nd +Nd +Nd +Nd +Nd +Nd +Nd +Nd +Nd aa aa aa From 0b10b8cf89332e8cfc03f7a484c682fdb53397e4 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Sun, 19 Jan 2020 22:41:19 -0700 Subject: [PATCH 072/123] Update code/game/objects/items/devices/PDA/PDA.dm Co-Authored-By: Ghom <42542238+Ghommie@users.noreply.github.com> --- code/game/objects/items/devices/PDA/PDA.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index a60f159952..719ac150e6 100644 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -764,7 +764,7 @@ GLOBAL_LIST_EMPTY(PDAs) string_targets += "[P.owner] ([P.ownjob])" if(string_blocked) string_blocked = english_list(string_blocked) - to_chat(user, "[icon2html(src, user)] The following PDAs have blocked your message: [string_blocked].") + to_chat(user, "[icon2html(src, user)] The following recipients have blocked your message: [string_blocked].") for (var/obj/machinery/computer/message_monitor/M in targets) // In case of "Reply" to a message from a console, this will make the // message be logged successfully. If the console is impersonating From 28a2cc4a3db2be9c4d3f19f0120b56038f316182 Mon Sep 17 00:00:00 2001 From: Hatterhat Date: Sun, 19 Jan 2020 23:55:12 -0600 Subject: [PATCH 073/123] .357 AP printable from illegal ballistics --- code/modules/research/techweb/all_nodes.dm | 2 +- .../projectiles/boxes_magazines/external/pistol.dm | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/code/modules/research/techweb/all_nodes.dm b/code/modules/research/techweb/all_nodes.dm index 74f07e4ce3..2dc2e71dea 100644 --- a/code/modules/research/techweb/all_nodes.dm +++ b/code/modules/research/techweb/all_nodes.dm @@ -1117,7 +1117,7 @@ id = "advanced_illegal_ballistics" display_name = "Advanced Non-Standard Ballistics" description = "Ballistic ammunition for non-standard firearms. Usually the ones you don't have nor want to be involved with." - design_ids = list("10mm","10mmap","10mminc","10mmhp","sl357","pistolm9mm","m45","bolt_clip") + design_ids = list("10mm","10mmap","10mminc","10mmhp","sl357","sl357ap","pistolm9mm","m45","bolt_clip") prereq_ids = list("ballistic_weapons","syndicate_basic","explosive_weapons") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 25000) //This gives sec lethal mags/clips for guns from traitors, space, or anything in between. export_price = 7000 diff --git a/modular_citadel/code/modules/projectiles/boxes_magazines/external/pistol.dm b/modular_citadel/code/modules/projectiles/boxes_magazines/external/pistol.dm index 4ae3e5c488..dd45c0278a 100644 --- a/modular_citadel/code/modules/projectiles/boxes_magazines/external/pistol.dm +++ b/modular_citadel/code/modules/projectiles/boxes_magazines/external/pistol.dm @@ -78,3 +78,13 @@ build_path = /obj/item/ammo_box/a357 category = list("Ammo") departmental_flags = DEPARTMENTAL_FLAG_SECURITY + +/datum/design/sl357ap + name = "revolver speedloader (.357 AP)" + desc = "A revolver speedloader. Cuts through like a hot knife through butter." + id = "sl357ap" + build_type = PROTOLATHE + materials = list(MAT_METAL = 30000, MAT_TITANIUM = 45000) + build_path = /obj/item/ammo_box/a357/ap + category = list("Ammo") + departmental_flags = DEPARTMENTAL_FLAG_SECURITY From ecddef2f21c890ff50ffc6f5243fa7a2ddc01e30 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Sun, 19 Jan 2020 22:58:08 -0700 Subject: [PATCH 074/123] compile --- code/game/objects/items/devices/PDA/PDA.dm | 39 +++++++++++++--------- 1 file changed, 24 insertions(+), 15 deletions(-) diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index 719ac150e6..51b168b57d 100644 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -92,7 +92,7 @@ GLOBAL_LIST_EMPTY(PDAs) var/overlays_y_offset = 0 var/underline_flag = TRUE //flag for underline - + var/list/blocked_pdas /obj/item/pda/suicide_act(mob/living/carbon/user) @@ -390,7 +390,7 @@ GLOBAL_LIST_EMPTY(PDAs) if (P == src) continue if(P.owner in blocked_pdas) - dat += "
  • (BLOCKED - CLICK TO UNBLOCK) [P.owner]" + dat += "
  • (BLOCKED - CLICK TO UNBLOCK) [P.owner]" else dat += "
  • [P]" if(cartridge) @@ -650,12 +650,15 @@ GLOBAL_LIST_EMPTY(PDAs) if("MessageAll") send_to_all(U) - - if("block") - block_pda(usr, locate(href_list["block"])) - - if("unblock") - unblock_pda(usr, href_list["unblock"]) + + if("toggle_block") + toggle_blocking(usr, href_list["target"]) + + if("block_pda") + block_pda(usr, href_list["target"]) + + if("unblock_pda") + unblock_pda(usr, href_list["target"]) if("cart") if(cartridge) @@ -813,7 +816,7 @@ GLOBAL_LIST_EMPTY(PDAs) last_everyone = world.time /obj/item/pda/proc/receive_message(datum/signal/subspace/pda/signal) - tnote += "← From [signal.data["name"]] ([signal.data["job"]]): (BLOCK)
    [signal.format_message()]
    " + tnote += "← From [signal.data["name"]] ([signal.data["job"]]): (BLOCK/UNBLOCK)
    [signal.format_message()]
    " if (!silent) playsound(src, 'sound/machines/twobeep.ogg', 50, 1) audible_message("[icon2html(src, hearers(src))] *[ttone]*", null, 3) @@ -845,13 +848,19 @@ GLOBAL_LIST_EMPTY(PDAs) /obj/item/pda/proc/create_message(mob/living/U, obj/item/pda/P) send_message(U,list(P)) -/obj/item/pda/proc/block_pda(mob/user, obj/item/pda/P) - to_chat(user, "[icon2html(src, user)] [P.owner] blocked from messages. Use the messenger PDA list to unblock.") - LAZYOR(blocked_pdas, P.owner) +/obj/item/pda/proc/toggle_blocking(mob/user, target) + if(target in blocked_pdas) + unblock_pda(user, target) + else + block_pda(user, target) -/obj/item/pda/proc/unblock_pda(mob/user, unblock_target) - to_chat(user, "[icon2html(src, user)] [unblock_target] unblocked from messages.") - LAZYREMOVE(blocked_pdas, unblock_target) +/obj/item/pda/proc/block_pda(mob/user, target) + to_chat(user, "[icon2html(src, user)] [target] blocked from messages. Use the messenger PDA list to unblock.") + LAZYOR(blocked_pdas, target) + +/obj/item/pda/proc/unblock_pda(mob/user, target) + to_chat(user, "[icon2html(src, user)] [target] unblocked from messages.") + LAZYREMOVE(blocked_pdas, target) /obj/item/pda/AltClick(mob/user) . = ..() From 710eaa7fc0055150c2721c705b32ee25e56cdd71 Mon Sep 17 00:00:00 2001 From: Winter Flare <7543955+Owai-Seek@users.noreply.github.com> Date: Mon, 20 Jan 2020 01:06:02 -0500 Subject: [PATCH 075/123] Lighting + Carpet Locker fixes. --- _maps/map_files/generic/CentCom.dmm | 1076 ++++++++++++++------------- 1 file changed, 546 insertions(+), 530 deletions(-) diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm index 7bcf3c1c5d..5c5283823f 100644 --- a/_maps/map_files/generic/CentCom.dmm +++ b/_maps/map_files/generic/CentCom.dmm @@ -2238,6 +2238,17 @@ }, /turf/open/floor/plasteel, /area/tdome/arena_source) +"fR" = ( +/obj/structure/closet, +/obj/item/storage/backpack/duffelbag/med/surgery, +/obj/machinery/iv_drip, +/obj/item/roller, +/obj/item/storage/firstaid/regular, +/obj/item/reagent_containers/medspray/synthflesh, +/obj/item/reagent_containers/medspray/synthflesh, +/obj/item/reagent_containers/medspray/synthflesh, +/turf/open/floor/plasteel/white, +/area/centcom/holding) "fS" = ( /obj/effect/turf_decal/tile/red{ dir = 8 @@ -4338,6 +4349,25 @@ icon_state = "alien19" }, /area/abductor_ship) +"kR" = ( +/obj/structure/closet/crate, +/obj/item/vending_refill/autodrobe, +/obj/item/vending_refill/autodrobe, +/obj/item/vending_refill/boozeomat, +/obj/item/vending_refill/boozeomat, +/obj/item/vending_refill/cigarette, +/obj/item/vending_refill/cigarette, +/obj/item/vending_refill/clothing, +/obj/item/vending_refill/coffee, +/obj/item/vending_refill/coffee, +/obj/item/vending_refill/cola, +/obj/item/vending_refill/cola, +/obj/item/vending_refill/wallmed, +/obj/item/vending_refill/wallmed, +/obj/item/vending_refill/snack, +/obj/item/vending_refill/snack, +/turf/open/indestructible/hotelwood, +/area/centcom/holding) "kS" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -6775,9 +6805,11 @@ }, /turf/open/floor/plasteel/dark, /area/centcom/supplypod) -"pF" = ( -/obj/structure/bedsheetbin/towel, -/turf/open/indestructible/hotelwood, +"pB" = ( +/obj/machinery/shower{ + dir = 4 + }, +/turf/open/floor/plasteel/freezer, /area/centcom/holding) "pH" = ( /obj/structure/table/wood, @@ -7276,6 +7308,13 @@ "qE" = ( /turf/closed/indestructible/riveted/uranium, /area/wizard_station) +"qG" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/computer/slot_machine, +/turf/open/indestructible/hotelwood, +/area/centcom/holding) "qI" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/light{ @@ -7283,6 +7322,10 @@ }, /turf/open/floor/plating, /area/syndicate_mothership) +"qJ" = ( +/obj/structure/table, +/turf/open/floor/plasteel/white, +/area/centcom/holding) "qP" = ( /obj/structure/chair/comfy/brown{ color = "#596479"; @@ -7376,6 +7419,10 @@ }, /turf/open/floor/plasteel, /area/syndicate_mothership) +"re" = ( +/obj/structure/closet/crate/bin, +/turf/open/floor/plasteel/white, +/area/centcom/holding) "rf" = ( /obj/effect/turf_decal/tile/bar, /obj/effect/turf_decal/tile/bar{ @@ -7384,6 +7431,13 @@ /obj/machinery/vending/coffee, /turf/open/floor/plasteel, /area/syndicate_mothership) +"rg" = ( +/obj/machinery/door/airlock/wood{ + id_tag = "Ninja7"; + name = "Dorm 7" + }, +/turf/open/indestructible/hotelwood, +/area/centcom/holding) "rk" = ( /obj/structure/table/reinforced, /obj/item/book/manual/wiki/security_space_law, @@ -7876,6 +7930,10 @@ }, /turf/open/floor/engine/cult, /area/wizard_station) +"rY" = ( +/obj/structure/closet/crate/freezer/blood, +/turf/open/floor/plasteel/white, +/area/centcom/holding) "sa" = ( /obj/item/hilbertshotel/ghostdojo, /turf/open/indestructible/hotelwood, @@ -7891,18 +7949,6 @@ }, /turf/open/floor/plating, /area/syndicate_mothership) -"se" = ( -/obj/machinery/light{ - dir = 8 - }, -/obj/structure/piano, -/turf/open/indestructible/hotelwood, -/area/centcom/holding) -"sh" = ( -/obj/structure/closet/secure_closet, -/obj/item/coin/silver, -/turf/open/indestructible/hotelwood, -/area/centcom/holding) "si" = ( /obj/structure/table/wood, /obj/item/reagent_containers/food/drinks/beer{ @@ -7919,14 +7965,6 @@ }, /turf/open/floor/plasteel, /area/syndicate_mothership) -"sj" = ( -/obj/machinery/vending/wallmed{ - name = "Emergency NanoMed"; - pixel_y = 28; - use_power = 0 - }, -/turf/open/floor/plasteel/white, -/area/centcom/holding) "sq" = ( /obj/machinery/computer/shuttle/white_ship{ dir = 4 @@ -8360,6 +8398,21 @@ /obj/item/soap/syndie, /turf/open/floor/plasteel/freezer, /area/syndicate_mothership) +"ti" = ( +/obj/machinery/plantgenes/seedvault, +/obj/effect/turf_decal/tile/green{ + dir = 1 + }, +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/green{ + dir = 4 + }, +/obj/effect/turf_decal/tile/green{ + dir = 8 + }, +/obj/structure/table, +/turf/open/indestructible/hotelwood, +/area/centcom/holding) "tl" = ( /obj/effect/turf_decal/stripes/corner, /turf/open/floor/plating, @@ -8370,6 +8423,26 @@ }, /turf/open/floor/plating, /area/syndicate_mothership) +"tn" = ( +/obj/structure/closet/secure_closet/hydroponics{ + locked = 0 + }, +/obj/effect/turf_decal/tile/green{ + dir = 1 + }, +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/green{ + dir = 4 + }, +/obj/effect/turf_decal/tile/green{ + dir = 8 + }, +/obj/item/seeds/ambrosia/gaia, +/obj/item/seeds/ambrosia/gaia, +/obj/item/seeds/pumpkin/blumpkin, +/obj/item/seeds/pumpkin/blumpkin, +/turf/open/indestructible/hotelwood, +/area/centcom/holding) "to" = ( /obj/machinery/computer/shuttle/ferry{ dir = 4 @@ -8426,27 +8499,6 @@ }, /turf/open/floor/plasteel, /area/centcom/ferry) -"tw" = ( -/obj/structure/closet, -/obj/item/stack/tile/carpet/royalblue{ - amount = 24 - }, -/obj/item/stack/tile/carpet/green{ - amount = 24 - }, -/obj/item/stack/tile/carpet/purple{ - amount = 24 - }, -/obj/item/stack/tile/carpet/orange{ - amount = 24 - }, -/obj/item/stack/tile/wood{ - amount = 24 - }, -/obj/item/udder/gutlunch, -/obj/item/stack/sheet/mineral/wood/fifty, -/turf/open/indestructible/hotelwood, -/area/centcom/holding) "tx" = ( /obj/structure/table/wood, /obj/item/storage/pill_bottle/dice, @@ -8755,15 +8807,23 @@ /turf/open/floor/plasteel/freezer, /area/syndicate_mothership) "ue" = ( -/obj/structure/closet, -/obj/item/storage/backpack/duffelbag/med/surgery, -/obj/machinery/iv_drip, -/obj/item/roller, -/obj/item/storage/firstaid/regular, -/obj/item/reagent_containers/medspray/synthflesh, -/obj/item/reagent_containers/medspray/synthflesh, -/obj/item/reagent_containers/medspray/synthflesh, -/turf/open/floor/plasteel/white, +/obj/item/coin/silver, +/obj/item/coin/silver, +/obj/item/coin/silver, +/obj/item/coin/silver, +/obj/item/coin/silver, +/obj/item/coin/silver, +/obj/item/coin/silver, +/obj/item/coin/silver, +/obj/item/coin/silver, +/obj/item/coin/silver, +/obj/item/coin/silver, +/obj/item/coin/silver, +/obj/item/coin/silver, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/indestructible/hotelwood, /area/centcom/holding) "uf" = ( /obj/effect/turf_decal/tile/brown{ @@ -8781,16 +8841,6 @@ }, /turf/open/floor/wood, /area/centcom/holding) -"ui" = ( -/obj/structure/closet/secure_closet/personal/cabinet{ - desc = "Swipe your ID on the closet to claim it. First come first serve, this one is wooden and fancy. Store your stuff here."; - name = "Personal ID-Locked Closet" - }, -/obj/item/reagent_containers/rag/towel, -/obj/item/reagent_containers/rag/towel, -/obj/item/reagent_containers/rag/towel, -/turf/open/floor/carpet/royalblue, -/area/centcom/holding) "uj" = ( /obj/item/clipboard, /obj/item/folder/red, @@ -9078,13 +9128,6 @@ /obj/effect/baseturf_helper/asteroid/snow, /turf/closed/indestructible/riveted, /area/syndicate_mothership) -"uK" = ( -/obj/machinery/door/airlock/wood{ - id_tag = "Ninja7"; - name = "Dorm 7" - }, -/turf/open/indestructible/hotelwood, -/area/centcom/holding) "uM" = ( /obj/structure/mirror{ pixel_x = -28 @@ -9096,6 +9139,13 @@ }, /turf/open/floor/plasteel/freezer, /area/syndicate_mothership) +"uN" = ( +/obj/structure/bedsheetbin/towel, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/mineral/titanium/blue, +/area/centcom/holding) "uO" = ( /obj/machinery/door/airlock/centcom{ name = "Shuttle Control Office"; @@ -9366,6 +9416,10 @@ }, /turf/open/floor/plasteel, /area/centcom/supplypod) +"vp" = ( +/obj/machinery/vending/snack, +/turf/open/indestructible/hotelwood, +/area/centcom/holding) "vs" = ( /obj/machinery/vending/hydronutrients, /obj/effect/turf_decal/tile/green{ @@ -9766,6 +9820,16 @@ }, /turf/open/floor/carpet, /area/wizard_station) +"we" = ( +/obj/structure/closet/crate, +/obj/item/stack/sheet/paperframes/fifty, +/obj/item/stack/sheet/paperframes/fifty, +/obj/item/storage/fancy/candle_box, +/obj/item/storage/fancy/candle_box, +/obj/item/storage/fancy/candle_box, +/obj/item/storage/box/lights/mixed, +/turf/open/indestructible/hotelwood, +/area/centcom/holding) "wh" = ( /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, @@ -9788,6 +9852,27 @@ }, /turf/open/floor/plasteel, /area/syndicate_mothership) +"wn" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/turf_decal/tile/green{ + dir = 1 + }, +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/green{ + dir = 4 + }, +/obj/effect/turf_decal/tile/green{ + dir = 8 + }, +/obj/machinery/chem_master/condimaster{ + desc = "Used to separate out liquids - useful for purifying botanical extracts. Also dispenses condiments."; + name = "BrewMaster 2199"; + pixel_x = -4 + }, +/turf/open/indestructible/hotelwood, +/area/centcom/holding) "wp" = ( /turf/open/floor/plasteel/dark, /area/syndicate_mothership) @@ -10034,6 +10119,14 @@ /obj/item/toy/cards/deck, /turf/open/floor/carpet, /area/wizard_station) +"wR" = ( +/obj/structure/table, +/obj/item/storage/box/bodybags, +/obj/item/storage/box/bodybags, +/obj/item/storage/box/bodybags, +/obj/item/storage/box/bodybags, +/turf/open/floor/plasteel/white, +/area/centcom/holding) "wX" = ( /obj/effect/turf_decal/tile/bar, /obj/effect/turf_decal/tile/bar{ @@ -10283,22 +10376,6 @@ }, /turf/open/floor/mineral/titanium/blue, /area/centcom/holding) -"xP" = ( -/obj/item/coin/silver, -/obj/item/coin/silver, -/obj/item/coin/silver, -/obj/item/coin/silver, -/obj/item/coin/silver, -/obj/item/coin/silver, -/obj/item/coin/silver, -/obj/item/coin/silver, -/obj/item/coin/silver, -/obj/item/coin/silver, -/obj/item/coin/silver, -/obj/item/coin/silver, -/obj/item/coin/silver, -/turf/open/indestructible/hotelwood, -/area/centcom/holding) "xQ" = ( /obj/effect/turf_decal/delivery, /obj/machinery/light, @@ -10426,12 +10503,6 @@ /obj/structure/chair, /turf/open/floor/mineral/titanium, /area/centcom/evac) -"yh" = ( -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/plasteel/freezer, -/area/centcom/holding) "yj" = ( /obj/machinery/door/airlock/centcom{ name = "CentCom Security"; @@ -10445,6 +10516,12 @@ }, /turf/open/floor/plasteel, /area/centcom/control) +"yl" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/centcom/holding) "yn" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/sign/warning/vacuum, @@ -10670,6 +10747,10 @@ /obj/effect/decal/cleanable/blood/splatter, /turf/open/floor/grass, /area/wizard_station) +"yL" = ( +/obj/structure/table/optable, +/turf/open/floor/plasteel/white, +/area/centcom/holding) "yN" = ( /obj/structure/table/reinforced, /obj/item/paper/pamphlet/centcom/visitor_info, @@ -10922,6 +11003,11 @@ /obj/effect/turf_decal/stripes/line, /turf/open/floor/mineral/plastitanium/red, /area/syndicate_mothership) +"zt" = ( +/obj/item/storage/box/bodybags, +/obj/item/storage/box/bodybags, +/turf/open/indestructible/hotelwood, +/area/centcom/holding) "zu" = ( /obj/item/storage/box/drinkingglasses, /obj/item/reagent_containers/food/drinks/bottle/rum, @@ -11629,6 +11715,15 @@ /obj/machinery/mech_bay_recharge_port, /turf/open/floor/plating, /area/syndicate_mothership) +"Bm" = ( +/obj/structure/mopbucket, +/obj/item/mop, +/turf/open/indestructible/hotelwood, +/area/centcom/holding) +"Bq" = ( +/obj/structure/bedsheetbin/towel, +/turf/open/indestructible/hotelwood, +/area/centcom/holding) "Bs" = ( /obj/structure/table/wood, /obj/machinery/computer/libraryconsole/bookmanagement, @@ -11955,9 +12050,11 @@ smooth = 1 }, /area/centcom/holding) -"BX" = ( -/obj/structure/bed/dogbed, -/turf/open/indestructible/hotelwood, +"BW" = ( +/obj/machinery/shower{ + dir = 8 + }, +/turf/open/floor/plasteel/freezer, /area/centcom/holding) "BY" = ( /obj/item/toy/figure/syndie, @@ -12094,24 +12191,8 @@ }, /turf/open/floor/engine/cult, /area/wizard_station) -"Ck" = ( -/obj/structure/table, -/obj/item/storage/backpack/duffelbag/med/surgery, -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/plasteel/white, -/area/centcom/holding) -"Cl" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/item/soap, -/obj/item/soap, -/obj/item/soap, -/obj/item/janiupgrade, -/obj/vehicle/ridden/janicart, -/turf/open/indestructible/hotelwood, +"Cj" = ( +/turf/open/floor/plasteel/freezer, /area/centcom/holding) "Cp" = ( /obj/structure/statue/uranium/nuke, @@ -13544,12 +13625,6 @@ "Fh" = ( /turf/open/floor/plasteel/cafeteria, /area/centcom/holding) -"Fk" = ( -/obj/machinery/shower{ - dir = 1 - }, -/turf/open/floor/plasteel/freezer, -/area/centcom/holding) "Fm" = ( /obj/machinery/shower{ dir = 4 @@ -13693,9 +13768,12 @@ }, /turf/open/floor/plasteel/white, /area/tdome/tdomeobserve) -"FC" = ( -/obj/machinery/washing_machine, -/turf/open/floor/mineral/titanium/blue, +"FB" = ( +/obj/structure/table/wood/bar, +/obj/structure/safe/floor, +/obj/item/seeds/cherry/bomb, +/obj/item/key/janitor, +/turf/open/indestructible/hotelwood, /area/centcom/holding) "FD" = ( /obj/machinery/shower{ @@ -13834,10 +13912,14 @@ /turf/open/floor/engine/cult, /area/wizard_station) "FU" = ( -/obj/structure/sign/barsign{ - pixel_y = 32 +/obj/structure/toilet{ + dir = 4 }, -/turf/open/indestructible/hotelwood, +/obj/structure/window/reinforced/tinted{ + icon_state = "twindow"; + dir = 1 + }, +/turf/open/floor/plasteel/white, /area/centcom/holding) "FW" = ( /obj/structure/window/reinforced{ @@ -14023,6 +14105,17 @@ }, /turf/open/indestructible/hotelwood, /area/centcom/holding) +"Gt" = ( +/obj/structure/mirror{ + pixel_y = 28 + }, +/obj/structure/sink{ + dir = 1; + pixel_y = 25 + }, +/mob/living/simple_animal/bot/cleanbot, +/turf/open/floor/mineral/titanium/blue, +/area/centcom/holding) "Gu" = ( /obj/machinery/door/airlock/silver{ name = "Shower" @@ -14268,6 +14361,10 @@ }, /turf/open/floor/plasteel/dark, /area/tdome/tdomeobserve) +"GN" = ( +/obj/machinery/gibber, +/turf/open/floor/plasteel/cafeteria, +/area/centcom/holding) "GO" = ( /obj/structure/table/wood, /obj/structure/sign/plaques/golden{ @@ -15869,11 +15966,6 @@ }, /turf/open/floor/plasteel/dark, /area/tdome/tdomeadmin) -"Kd" = ( -/obj/structure/mopbucket, -/obj/item/mop, -/turf/open/indestructible/hotelwood, -/area/centcom/holding) "Kf" = ( /obj/structure/closet/secure_closet/personal/cabinet, /obj/item/reagent_containers/rag/towel, @@ -15916,6 +16008,17 @@ }, /turf/open/space/basic, /area/space) +"Kl" = ( +/obj/structure/table/wood, +/obj/item/soap, +/obj/item/soap, +/obj/item/soap, +/obj/item/lightreplacer, +/obj/item/lightreplacer, +/obj/item/storage/bag/trash, +/obj/item/storage/bag/trash, +/turf/open/indestructible/hotelwood, +/area/centcom/holding) "Kn" = ( /obj/structure/bookcase/random, /obj/effect/turf_decal/tile/neutral{ @@ -16323,25 +16426,6 @@ }, /turf/open/floor/mineral/titanium/blue, /area/centcom/evac) -"Lj" = ( -/obj/structure/closet/crate, -/obj/item/vending_refill/autodrobe, -/obj/item/vending_refill/autodrobe, -/obj/item/vending_refill/boozeomat, -/obj/item/vending_refill/boozeomat, -/obj/item/vending_refill/cigarette, -/obj/item/vending_refill/cigarette, -/obj/item/vending_refill/clothing, -/obj/item/vending_refill/coffee, -/obj/item/vending_refill/coffee, -/obj/item/vending_refill/cola, -/obj/item/vending_refill/cola, -/obj/item/vending_refill/wallmed, -/obj/item/vending_refill/wallmed, -/obj/item/vending_refill/snack, -/obj/item/vending_refill/snack, -/turf/open/indestructible/hotelwood, -/area/centcom/holding) "Ln" = ( /obj/structure/toilet{ dir = 4 @@ -16354,12 +16438,6 @@ }, /turf/open/floor/mineral/titanium/blue, /area/centcom/evac) -"Lq" = ( -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/plasteel/white, -/area/centcom/holding) "Ls" = ( /obj/docking_port/stationary{ dir = 4; @@ -16389,10 +16467,6 @@ }, /turf/open/floor/mineral/titanium/blue, /area/centcom/evac) -"Lz" = ( -/obj/machinery/vending/cola, -/turf/open/indestructible/hotelwood, -/area/centcom/holding) "LA" = ( /obj/structure/table, /obj/structure/bedsheetbin, @@ -16409,11 +16483,6 @@ /obj/item/storage/box/donkpockets, /turf/open/floor/mineral/titanium/blue, /area/centcom/evac) -"LD" = ( -/obj/structure/table, -/obj/item/storage/backpack/duffelbag/med/surgery, -/turf/open/floor/plasteel/white, -/area/centcom/holding) "LE" = ( /obj/structure/table, /obj/item/radio/off, @@ -16431,16 +16500,6 @@ }, /turf/open/floor/mineral/titanium/blue, /area/centcom/evac) -"LI" = ( -/obj/structure/mopbucket, -/obj/item/mop, -/obj/structure/sink/kitchen{ - desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; - name = "sink"; - pixel_y = 28 - }, -/turf/open/indestructible/hotelwood, -/area/centcom/holding) "LJ" = ( /obj/structure/table, /obj/item/radio/off, @@ -16649,12 +16708,12 @@ "Mm" = ( /turf/open/floor/grass, /area/centcom/holding) -"Mn" = ( -/obj/machinery/vending/cigarette, +"Mo" = ( +/obj/machinery/processor, /obj/machinery/light{ - dir = 4 + dir = 1 }, -/turf/open/indestructible/hotelwood, +/turf/open/floor/plasteel/cafeteria, /area/centcom/holding) "Ms" = ( /obj/effect/mob_spawn/human/ghostcafe{ @@ -16701,6 +16760,10 @@ }, /turf/open/floor/plating/asteroid/snow/airless, /area/syndicate_mothership) +"MA" = ( +/obj/structure/bedsheetbin/towel, +/turf/open/floor/plasteel/white, +/area/centcom/holding) "MB" = ( /turf/open/indestructible/binary, /area/fabric_of_reality) @@ -16777,10 +16840,6 @@ /obj/item/reagent_containers/food/condiment/enzyme, /turf/open/floor/plasteel/cafeteria, /area/syndicate_mothership) -"MT" = ( -/obj/machinery/processor, -/turf/open/floor/plasteel/cafeteria, -/area/centcom/holding) "MU" = ( /obj/effect/turf_decal/tile/brown{ dir = 8 @@ -16788,14 +16847,6 @@ /obj/effect/turf_decal/tile/brown, /turf/open/floor/plasteel, /area/centcom/supplypod/loading/two) -"Nb" = ( -/obj/structure/table, -/obj/item/storage/box/bodybags, -/obj/item/storage/box/bodybags, -/obj/item/storage/box/bodybags, -/obj/item/storage/box/bodybags, -/turf/open/floor/plasteel/white, -/area/centcom/holding) "Nc" = ( /obj/effect/turf_decal/tile/brown{ dir = 8 @@ -16816,10 +16867,6 @@ /obj/machinery/autoylathe, /turf/open/indestructible/hotelwood, /area/centcom/holding) -"Ng" = ( -/obj/structure/closet/crate/freezer/blood, -/turf/open/floor/plasteel/white, -/area/centcom/holding) "Ni" = ( /obj/structure/table/reinforced, /obj/item/clipboard, @@ -16846,11 +16893,6 @@ }, /turf/open/floor/plasteel, /area/tdome/tdomeobserve) -"Nl" = ( -/obj/structure/table, -/obj/machinery/dish_drive, -/turf/open/floor/plasteel/cafeteria, -/area/centcom/holding) "Nu" = ( /turf/open/floor/wood, /area/syndicate_mothership) @@ -16867,13 +16909,6 @@ }, /turf/open/floor/plasteel, /area/centcom/supplypod/loading/two) -"NB" = ( -/obj/structure/table/wood/bar, -/obj/structure/safe/floor, -/obj/item/seeds/cherry/bomb, -/obj/item/key/janitor, -/turf/open/indestructible/hotelwood, -/area/centcom/holding) "NF" = ( /obj/structure/ladder/unbreakable/binary, /turf/open/indestructible/airblock, @@ -16889,37 +16924,6 @@ }, /turf/open/floor/plasteel, /area/centcom/control) -"NH" = ( -/obj/machinery/shower{ - pixel_y = 12 - }, -/turf/open/floor/plasteel/freezer, -/area/centcom/holding) -"NL" = ( -/obj/structure/bedsheetbin, -/turf/open/indestructible/hotelwood, -/area/centcom/holding) -"NM" = ( -/obj/structure/table/wood, -/obj/item/camera/detective{ - desc = "A polaroid camera with extra capacity for social media marketing."; - name = "Professional camera" - }, -/obj/item/camera_film, -/obj/item/paper_bin, -/obj/item/pen/fountain, -/turf/open/indestructible/hotelwood, -/area/centcom/holding) -"NR" = ( -/obj/structure/toilet{ - dir = 4 - }, -/obj/structure/window/reinforced/tinted{ - icon_state = "twindow"; - dir = 1 - }, -/turf/open/floor/plasteel/white, -/area/centcom/holding) "NT" = ( /obj/structure/window/paperframe{ CanAtmosPass = 0 @@ -16944,6 +16948,36 @@ /obj/machinery/vending/cola/sodie, /turf/open/floor/plasteel, /area/syndicate_mothership) +"NX" = ( +/obj/structure/closet/secure_closet/personal/cabinet{ + desc = "Swipe your ID on the closet to claim it. First come first serve, this one is wooden and fancy. Store your stuff here."; + name = "Personal ID-Locked Closet" + }, +/obj/item/reagent_containers/rag/towel, +/obj/item/reagent_containers/rag/towel, +/obj/item/reagent_containers/rag/towel, +/turf/open/floor/carpet/royalblue, +/area/centcom/holding) +"NY" = ( +/obj/structure/sink/kitchen{ + desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; + name = "sink"; + pixel_y = 28 + }, +/obj/effect/turf_decal/tile/green{ + dir = 1 + }, +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/green{ + dir = 4 + }, +/obj/effect/turf_decal/tile/green{ + dir = 8 + }, +/obj/item/paper/guides/jobs/hydroponics, +/obj/item/book/manual/hydroponics_pod_people, +/turf/open/indestructible/hotelwood, +/area/centcom/holding) "Oa" = ( /obj/structure/table/wood, /turf/open/floor/wood, @@ -17003,6 +17037,13 @@ }, /turf/open/floor/plasteel, /area/centcom/supplypod/loading/three) +"On" = ( +/obj/machinery/vending/cigarette, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/indestructible/hotelwood, +/area/centcom/holding) "Op" = ( /obj/structure/sink{ dir = 8; @@ -17049,6 +17090,13 @@ }, /turf/open/floor/plasteel, /area/syndicate_mothership) +"OC" = ( +/obj/machinery/vending/autodrobe/all_access{ + extended_inventory = 1 + }, +/obj/machinery/light, +/turf/open/floor/wood, +/area/centcom/holding) "OE" = ( /obj/effect/turf_decal/tile/brown, /obj/effect/turf_decal/tile/brown{ @@ -17105,10 +17153,25 @@ }, /turf/open/floor/wood, /area/syndicate_mothership) +"OW" = ( +/obj/machinery/vending/coffee, +/turf/open/indestructible/hotelwood, +/area/centcom/holding) "OZ" = ( /obj/effect/turf_decal/delivery, /turf/open/floor/plating, /area/syndicate_mothership) +"Pc" = ( +/obj/structure/table/wood, +/obj/item/camera/detective{ + desc = "A polaroid camera with extra capacity for social media marketing."; + name = "Professional camera" + }, +/obj/item/camera_film, +/obj/item/paper_bin, +/obj/item/pen/fountain, +/turf/open/indestructible/hotelwood, +/area/centcom/holding) "Pg" = ( /obj/machinery/light{ dir = 1 @@ -17126,17 +17189,6 @@ }, /turf/open/indestructible/boss/air, /area/centcom/holding) -"Pm" = ( -/obj/machinery/light{ - dir = 8 - }, -/obj/structure/window/reinforced/tinted{ - icon_state = "twindow"; - dir = 1 - }, -/obj/machinery/washing_machine, -/turf/open/floor/plasteel/white, -/area/centcom/holding) "Pn" = ( /turf/closed/indestructible/fakedoor{ name = "Equipment Storage" @@ -17235,17 +17287,6 @@ }, /turf/open/floor/plating, /area/syndicate_mothership) -"PR" = ( -/obj/structure/table/wood, -/obj/item/soap, -/obj/item/soap, -/obj/item/soap, -/obj/item/lightreplacer, -/obj/item/lightreplacer, -/obj/item/storage/bag/trash, -/obj/item/storage/bag/trash, -/turf/open/indestructible/hotelwood, -/area/centcom/holding) "PS" = ( /obj/machinery/computer/shuttle/syndicate/recall, /obj/effect/turf_decal/tile/bar, @@ -17270,6 +17311,11 @@ /obj/effect/turf_decal/tile/green, /turf/open/floor/holofloor, /area/holodeck/rec_center/firingrange) +"PW" = ( +/obj/structure/closet/secure_closet, +/obj/item/coin/silver, +/turf/open/indestructible/hotelwood, +/area/centcom/holding) "PX" = ( /obj/machinery/computer/arcade/battle, /turf/open/indestructible/hotelwood, @@ -17301,35 +17347,37 @@ }, /turf/open/floor/mineral/titanium, /area/centcom/evac) +"Qc" = ( +/obj/structure/table/wood/bar, +/obj/structure/mirror{ + pixel_y = 28 + }, +/obj/item/lightreplacer, +/obj/item/lightreplacer, +/obj/item/lightreplacer, +/obj/item/storage/bag/trash, +/obj/item/storage/bag/trash, +/obj/item/storage/bag/trash, +/turf/open/indestructible/hotelwood, +/area/centcom/holding) "Qe" = ( /turf/open/ai_visible, /area/ai_multicam_room) +"Qf" = ( +/obj/machinery/sleeper{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/centcom/holding) +"Qh" = ( +/obj/machinery/light, +/turf/open/floor/plasteel/freezer, +/area/centcom/holding) "Qi" = ( /obj/item/paicard, /obj/structure/table/wood, /turf/open/floor/engine/cult, /area/wizard_station) -"Qj" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/effect/turf_decal/tile/green{ - dir = 1 - }, -/obj/effect/turf_decal/tile/green, -/obj/effect/turf_decal/tile/green{ - dir = 4 - }, -/obj/effect/turf_decal/tile/green{ - dir = 8 - }, -/obj/machinery/chem_master/condimaster{ - desc = "Used to separate out liquids - useful for purifying botanical extracts. Also dispenses condiments."; - name = "BrewMaster 2199"; - pixel_x = -4 - }, -/turf/open/indestructible/hotelwood, -/area/centcom/holding) "Qk" = ( /obj/structure/flora/ausbushes/fullgrass, /obj/structure/flora/ausbushes/ppflowers, @@ -17341,6 +17389,10 @@ /obj/singularity/wizard/mapped, /turf/open/indestructible/binary, /area/fabric_of_reality) +"Qn" = ( +/obj/machinery/vending/cola, +/turf/open/indestructible/hotelwood, +/area/centcom/holding) "Qo" = ( /turf/open/floor/mineral/plastitanium/red, /area/centcom/evac) @@ -17427,13 +17479,6 @@ /obj/item/storage/box/donkpockets, /turf/open/floor/plasteel/cafeteria, /area/syndicate_mothership) -"QS" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/machinery/computer/slot_machine, -/turf/open/indestructible/hotelwood, -/area/centcom/holding) "QT" = ( /obj/machinery/chem_dispenser/drinks, /turf/closed/indestructible{ @@ -17471,9 +17516,6 @@ }, /turf/open/floor/plating, /area/syndicate_mothership) -"Rc" = ( -/turf/open/floor/plasteel/freezer, -/area/centcom/holding) "Re" = ( /obj/structure/mineral_door/paperframe, /turf/open/floor/wood, @@ -17556,6 +17598,14 @@ /obj/structure/dresser, /turf/open/floor/carpet/royalblue, /area/centcom/holding) +"Rx" = ( +/obj/structure/table, +/obj/item/storage/backpack/duffelbag/med/surgery, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/centcom/holding) "Rz" = ( /obj/effect/turf_decal/loading_area, /turf/open/floor/plating, @@ -17570,32 +17620,6 @@ }, /turf/open/floor/holofloor, /area/holodeck/rec_center/basketball) -"RG" = ( -/obj/structure/mirror{ - pixel_y = 28 - }, -/obj/structure/sink{ - dir = 1; - pixel_y = 25 - }, -/mob/living/simple_animal/bot/cleanbot, -/turf/open/floor/mineral/titanium/blue, -/area/centcom/holding) -"RK" = ( -/obj/machinery/plantgenes/seedvault, -/obj/effect/turf_decal/tile/green{ - dir = 1 - }, -/obj/effect/turf_decal/tile/green, -/obj/effect/turf_decal/tile/green{ - dir = 4 - }, -/obj/effect/turf_decal/tile/green{ - dir = 8 - }, -/obj/structure/table, -/turf/open/indestructible/hotelwood, -/area/centcom/holding) "RO" = ( /obj/machinery/shower{ dir = 1 @@ -17695,6 +17719,12 @@ }, /turf/open/indestructible/hotelwood, /area/centcom/holding) +"St" = ( +/obj/structure/sign/barsign{ + pixel_y = 32 + }, +/turf/open/indestructible/hotelwood, +/area/centcom/holding) "Sw" = ( /obj/machinery/hydroponics/constructable, /obj/machinery/light{ @@ -17833,26 +17863,6 @@ /obj/machinery/vending/cigarette/syndicate, /turf/open/floor/plasteel, /area/syndicate_mothership) -"Tl" = ( -/obj/structure/closet/secure_closet/hydroponics{ - locked = 0 - }, -/obj/effect/turf_decal/tile/green{ - dir = 1 - }, -/obj/effect/turf_decal/tile/green, -/obj/effect/turf_decal/tile/green{ - dir = 4 - }, -/obj/effect/turf_decal/tile/green{ - dir = 8 - }, -/obj/item/seeds/ambrosia/gaia, -/obj/item/seeds/ambrosia/gaia, -/obj/item/seeds/pumpkin/blumpkin, -/obj/item/seeds/pumpkin/blumpkin, -/turf/open/indestructible/hotelwood, -/area/centcom/holding) "Tn" = ( /obj/structure/table/wood/fancy, /obj/item/candle/infinite{ @@ -17901,6 +17911,14 @@ /obj/item/clothing/head/helmet/space/plasmaman, /turf/open/indestructible/hotelwood, /area/centcom/holding) +"Tx" = ( +/obj/machinery/vending/wallmed{ + name = "Emergency NanoMed"; + pixel_y = 28; + use_power = 0 + }, +/turf/open/floor/plasteel/white, +/area/centcom/holding) "Tz" = ( /obj/effect/light_emitter, /turf/open/floor/plating/asteroid/snow/airless, @@ -17924,6 +17942,17 @@ }, /turf/open/floor/holofloor, /area/holodeck/rec_center/basketball) +"TL" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/item/soap, +/obj/item/soap, +/obj/item/soap, +/obj/item/janiupgrade, +/obj/vehicle/ridden/janicart, +/turf/open/indestructible/hotelwood, +/area/centcom/holding) "TM" = ( /mob/living/simple_animal/bot/medbot{ desc = "When engaged in combat, the vanquishing of thine enemy can be the warrior's only concern."; @@ -17933,12 +17962,6 @@ }, /turf/open/indestructible/hotelwood, /area/centcom/holding) -"TN" = ( -/obj/structure/table, -/obj/item/stack/packageWrap, -/obj/item/reagent_containers/glass/beaker, -/turf/open/floor/plasteel/cafeteria, -/area/centcom/holding) "TO" = ( /obj/effect/turf_decal/tile/bar, /obj/effect/turf_decal/tile/bar{ @@ -17986,16 +18009,20 @@ /turf/open/floor/plasteel, /area/syndicate_mothership) "Uk" = ( -/obj/structure/table/wood/bar, -/obj/structure/mirror{ - pixel_y = 28 +/obj/structure/table, +/obj/machinery/reagentgrinder, +/obj/item/reagent_containers/glass/beaker/large, +/obj/effect/turf_decal/tile/green{ + dir = 1 }, -/obj/item/lightreplacer, -/obj/item/lightreplacer, -/obj/item/lightreplacer, -/obj/item/storage/bag/trash, -/obj/item/storage/bag/trash, -/obj/item/storage/bag/trash, +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/green{ + dir = 4 + }, +/obj/effect/turf_decal/tile/green{ + dir = 8 + }, +/obj/machinery/light, /turf/open/indestructible/hotelwood, /area/centcom/holding) "Ul" = ( @@ -18035,11 +18062,6 @@ /obj/effect/mapping_helpers/airlock/cyclelink_helper, /turf/open/floor/plasteel, /area/tdome/tdomeobserve) -"Uq" = ( -/obj/item/storage/box/bodybags, -/obj/item/storage/box/bodybags, -/turf/open/indestructible/hotelwood, -/area/centcom/holding) "Ur" = ( /turf/open/floor/carpet/royalblue, /area/centcom/holding) @@ -18064,6 +18086,11 @@ /obj/effect/light_emitter, /turf/open/floor/plating/asteroid/snow/airless, /area/syndicate_mothership) +"UA" = ( +/obj/structure/table, +/obj/machinery/dish_drive, +/turf/open/floor/plasteel/cafeteria, +/area/centcom/holding) "UC" = ( /obj/machinery/vending/cola, /turf/open/floor/plasteel, @@ -18121,16 +18148,6 @@ }, /turf/open/floor/plasteel, /area/centcom/supplypod/loading/one) -"US" = ( -/obj/structure/closet/crate, -/obj/item/stack/sheet/paperframes/fifty, -/obj/item/stack/sheet/paperframes/fifty, -/obj/item/storage/fancy/candle_box, -/obj/item/storage/fancy/candle_box, -/obj/item/storage/fancy/candle_box, -/obj/item/storage/box/lights/mixed, -/turf/open/indestructible/hotelwood, -/area/centcom/holding) "UT" = ( /obj/structure/chair/wood/wings{ dir = 1 @@ -18198,13 +18215,6 @@ /obj/structure/window/reinforced/tinted, /turf/open/floor/plasteel/freezer, /area/syndicate_mothership) -"Vm" = ( -/obj/machinery/gibber, -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel/cafeteria, -/area/centcom/holding) "Vt" = ( /obj/item/paper/fluff/stations/centcom/disk_memo, /obj/structure/noticeboard{ @@ -18246,6 +18256,15 @@ }, /turf/open/space, /area/space) +"Vy" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/grass, +/area/centcom/holding) "Vz" = ( /obj/machinery/vending/wallmed{ name = "Emergency NanoMed"; @@ -18310,10 +18329,21 @@ }, /turf/open/floor/wood, /area/syndicate_mothership) +"VV" = ( +/obj/structure/table, +/obj/item/stack/packageWrap, +/obj/item/reagent_containers/glass/beaker, +/turf/open/floor/plasteel/cafeteria, +/area/centcom/holding) "VX" = ( /obj/effect/landmark/shuttle_import, /turf/open/space/basic, /area/space) +"VZ" = ( +/obj/structure/table, +/obj/item/storage/backpack/duffelbag/med/surgery, +/turf/open/floor/plasteel/white, +/area/centcom/holding) "Wb" = ( /obj/machinery/door/window/westleft, /turf/open/indestructible/boss/air, @@ -18331,13 +18361,6 @@ }, /turf/open/floor/plasteel, /area/centcom/evac) -"Wg" = ( -/obj/structure/bedsheetbin/towel, -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/mineral/titanium/blue, -/area/centcom/holding) "Wi" = ( /obj/effect/turf_decal/tile/brown, /obj/effect/turf_decal/tile/brown{ @@ -18359,10 +18382,6 @@ /obj/machinery/door/airlock/wood, /turf/open/indestructible/hotelwood, /area/centcom/holding) -"Wn" = ( -/obj/structure/table/optable, -/turf/open/floor/plasteel/white, -/area/centcom/holding) "Wr" = ( /turf/open/floor/plasteel/dark, /area/centcom/supplypod) @@ -18391,6 +18410,15 @@ }, /turf/open/floor/wood, /area/centcom/holding) +"WG" = ( +/obj/structure/chair/wood/normal{ + dir = 1 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/indestructible/hotelwood, +/area/centcom/holding) "WH" = ( /obj/structure/table/reinforced, /obj/item/reagent_containers/food/drinks/bottle/whiskey{ @@ -18469,6 +18497,16 @@ /obj/machinery/processor, /turf/open/floor/plasteel/cafeteria, /area/syndicate_mothership) +"Xb" = ( +/obj/structure/mopbucket, +/obj/item/mop, +/obj/structure/sink/kitchen{ + desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; + name = "sink"; + pixel_y = 28 + }, +/turf/open/indestructible/hotelwood, +/area/centcom/holding) "Xd" = ( /obj/structure/flora/ausbushes/fernybush, /obj/structure/flora/ausbushes/fullgrass, @@ -18564,21 +18602,11 @@ }, /turf/open/floor/plasteel, /area/centcom/ferry) -"XB" = ( -/obj/structure/table, -/obj/machinery/reagentgrinder, -/obj/item/reagent_containers/glass/beaker/large, -/obj/effect/turf_decal/tile/green{ - dir = 1 - }, -/obj/effect/turf_decal/tile/green, -/obj/effect/turf_decal/tile/green{ - dir = 4 - }, -/obj/effect/turf_decal/tile/green{ +"XA" = ( +/obj/machinery/light{ dir = 8 }, -/obj/machinery/light, +/obj/structure/piano, /turf/open/indestructible/hotelwood, /area/centcom/holding) "XD" = ( @@ -18631,10 +18659,6 @@ }, /turf/open/floor/plating, /area/syndicate_mothership) -"XZ" = ( -/obj/structure/closet/crate/bin, -/turf/open/floor/plasteel/white, -/area/centcom/holding) "Ya" = ( /obj/machinery/button/door{ id = "Ninja1"; @@ -18645,26 +18669,6 @@ }, /turf/open/indestructible/hotelwood, /area/centcom/holding) -"Yb" = ( -/obj/structure/sink/kitchen{ - desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; - name = "sink"; - pixel_y = 28 - }, -/obj/effect/turf_decal/tile/green{ - dir = 1 - }, -/obj/effect/turf_decal/tile/green, -/obj/effect/turf_decal/tile/green{ - dir = 4 - }, -/obj/effect/turf_decal/tile/green{ - dir = 8 - }, -/obj/item/paper/guides/jobs/hydroponics, -/obj/item/book/manual/hydroponics_pod_people, -/turf/open/indestructible/hotelwood, -/area/centcom/holding) "Yc" = ( /obj/effect/turf_decal/stripes/line, /turf/open/floor/plating, @@ -18704,6 +18708,10 @@ /obj/structure/dresser, /turf/open/floor/plasteel/dark, /area/syndicate_mothership) +"Yl" = ( +/obj/machinery/washing_machine, +/turf/open/floor/mineral/titanium/blue, +/area/centcom/holding) "Ym" = ( /obj/machinery/computer/arcade/orion_trail, /turf/open/indestructible/hotelwood, @@ -18744,19 +18752,6 @@ /obj/machinery/door/airlock/titanium, /turf/open/floor/mineral/titanium, /area/centcom/evac) -"Yz" = ( -/obj/structure/table, -/turf/open/floor/plasteel/white, -/area/centcom/holding) -"YI" = ( -/obj/structure/chair/wood/normal{ - dir = 1 - }, -/obj/machinery/light{ - dir = 8 - }, -/turf/open/indestructible/hotelwood, -/area/centcom/holding) "YJ" = ( /obj/item/reagent_containers/food/condiment/enzyme, /obj/item/reagent_containers/food/drinks/shaker, @@ -18782,12 +18777,6 @@ }, /turf/open/indestructible/hotelwood, /area/centcom/holding) -"YP" = ( -/obj/machinery/sleeper{ - dir = 8 - }, -/turf/open/floor/plasteel/white, -/area/centcom/holding) "YU" = ( /obj/structure/window/reinforced{ dir = 1 @@ -18805,6 +18794,30 @@ }, /turf/open/indestructible/hotelwood, /area/centcom/holding) +"YW" = ( +/obj/structure/bedsheetbin, +/turf/open/indestructible/hotelwood, +/area/centcom/holding) +"YX" = ( +/obj/structure/closet, +/obj/item/stack/sheet/mineral/wood/fifty, +/obj/item/stack/tile/wood{ + amount = 24 + }, +/obj/item/stack/tile/carpet/black/fifty, +/obj/item/stack/tile/carpet/blackred/fifty, +/obj/item/stack/tile/carpet/blue/fifty, +/obj/item/stack/tile/carpet/cyan/fifty, +/obj/item/stack/tile/carpet/fifty, +/obj/item/stack/tile/carpet/green/fifty, +/obj/item/stack/tile/carpet/monochrome/fifty, +/obj/item/stack/tile/carpet/orange/fifty, +/obj/item/stack/tile/carpet/purple/fifty, +/obj/item/stack/tile/carpet/red/fifty, +/obj/item/stack/tile/carpet/royalblack/fifty, +/obj/item/stack/tile/carpet/royalblue/fifty, +/turf/open/indestructible/hotelwood, +/area/centcom/holding) "Za" = ( /obj/machinery/door/airlock/wood{ id_tag = "lmrestroom" @@ -18835,19 +18848,26 @@ }, /turf/open/floor/plasteel, /area/centcom/supplypod) +"Zq" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/window/reinforced/tinted{ + icon_state = "twindow"; + dir = 1 + }, +/obj/machinery/washing_machine, +/turf/open/floor/plasteel/white, +/area/centcom/holding) "Zr" = ( /obj/machinery/light, /turf/open/floor/plasteel/dark, /area/syndicate_mothership) "Zt" = ( -/obj/structure/bedsheetbin/towel, -/turf/open/floor/plasteel/white, -/area/centcom/holding) -"Zu" = ( -/obj/machinery/vending/autodrobe/all_access{ - extended_inventory = 1 +/obj/machinery/light{ + dir = 1 }, -/turf/open/floor/wood, +/turf/open/floor/plasteel/freezer, /area/centcom/holding) "Zw" = ( /obj/structure/bed, @@ -18867,6 +18887,10 @@ /obj/effect/landmark/start/nukeop_leader, /turf/open/floor/wood, /area/syndicate_mothership) +"ZC" = ( +/obj/structure/bed/dogbed, +/turf/open/indestructible/hotelwood, +/area/centcom/holding) "ZE" = ( /obj/structure/sink{ dir = 4; @@ -18890,10 +18914,6 @@ }, /turf/open/floor/plating, /area/syndicate_mothership) -"ZI" = ( -/obj/machinery/vending/coffee, -/turf/open/indestructible/hotelwood, -/area/centcom/holding) "ZJ" = ( /obj/machinery/door/airlock/centcom{ name = "CentCom Security"; @@ -18928,10 +18948,6 @@ "ZQ" = ( /turf/open/floor/plasteel, /area/centcom/supplypod/loading/two) -"ZR" = ( -/obj/machinery/vending/snack, -/turf/open/indestructible/hotelwood, -/area/centcom/holding) "ZT" = ( /mob/living/simple_animal/cow, /turf/open/floor/grass, @@ -43315,9 +43331,9 @@ PO PO PO Nd -NR -NR -Pm +FU +FU +Zq Op Nd Rm @@ -43332,24 +43348,24 @@ UV CV Sd Nd -Wg +uN Ln Nd -NH -yh -Fk +pB +pB +pB Nd -sh +PW Sd -BX +ZC Nd -Lz +Qn Yo -PR +Kl Nd VL Ww -Uq +zt Nd aa aa @@ -43563,7 +43579,7 @@ aa aa aa Nd -Yb +NY PY PY PY @@ -43589,18 +43605,18 @@ RQ Sd Sd Nd -RG +Gt ST Nd -NH -Rc -Fk +Zt +Cj +Qh Nd MJ Sd Sd Nd -ZI +OW Sd Ph Nd @@ -43820,14 +43836,14 @@ aa aa aa Nd -Qj +wn PY PY PY PY PY PY -XB +Uk Nd SB ZW @@ -43846,24 +43862,24 @@ UV CV Sd Nd -FC +Yl ST Nd -NH -Rc -Fk +BW +Cj +BW Nd ma Sd Sd Nd -ZR +vp Sd Sd Nd -tw +YX Sd -Kd +Bm Nd aa aa @@ -44087,8 +44103,8 @@ PY Rj Nd SB -Lq -Zt +yl +MA Nw Nd Sd @@ -44099,7 +44115,7 @@ Sd Tu Vu Nd -QS +qG Sd Sd Nd @@ -44114,9 +44130,9 @@ Nd yS Nd Nd -LI -Sd +Xb Sd +HH Nd Nd Ox @@ -44334,12 +44350,12 @@ aa aa aa Nd -RK +ti PY PY PY Um -Tl +tn PY vs Nd @@ -44370,11 +44386,11 @@ Nd Sd Sd Sd -Yo Sd Sd Sd -Yo +Sd +Sd Sd Sd WE @@ -44634,7 +44650,7 @@ Sd Sd Sd Sd -Zu +OC Nd aa aa @@ -44848,7 +44864,7 @@ aa aa aa Nd -Kd +Bm Sd Yo Sd @@ -45110,13 +45126,13 @@ Sd MG YN Nd -Vm +GN Fh Fh zV Nd Nd -se +XA Fa KT Sd @@ -45362,17 +45378,17 @@ aa aa aa Nd -tw +YX Sd Rh Mm Nd -MT +Mo Fh Fh Yu Nd -ZI +OW CV Sd KT @@ -45404,7 +45420,7 @@ Sd Sd Nd SY -YI +WG UD Nd aa @@ -45619,9 +45635,9 @@ aa aa aa Nd -ZR +vp Sd -Rh +Vy ZT Nd Pr @@ -45629,7 +45645,7 @@ Fh Fh QW Nd -FU +St Sd Sd KT @@ -46133,7 +46149,7 @@ aa aa aa Nd -NB +FB Sd Yo PL @@ -46398,7 +46414,7 @@ Nd zX Fh Fh -TN +VV Nd Dl Nd @@ -46432,7 +46448,7 @@ Sd Sd Nd SY -YI +WG UD Nd aa @@ -46647,7 +46663,7 @@ aa aa aa Nd -Uk +Qc Sd Sd Nf @@ -46655,7 +46671,7 @@ Nd QA Fh Fh -Nl +UA ED Sd Yo @@ -46907,7 +46923,7 @@ Nd YL Sd Sd -Lj +kR Nd Xo Fh @@ -47164,7 +47180,7 @@ Nd Xe Sd Sd -tw +YX Nd TB Fh @@ -47418,7 +47434,7 @@ aa aa aa Nd -Cl +TL Sd Sd Sd @@ -47932,17 +47948,17 @@ aa aa aa Nd -NM +Pc Sd MR -US +we Nd SN pV pV Tr Nd -Mn +On Ph Nd Nd @@ -47975,7 +47991,7 @@ Sd Nd WN Ur -ui +NX Nd aa aa @@ -48472,19 +48488,19 @@ aa aa aa Nd -ue +fR VA ZW ZW -Ck -Nb +Rx +wR Nd Nd Nd QC Nd Nd -uK +rg Nd Nd QC @@ -48729,20 +48745,20 @@ aa aa aa Nd -sj +Tx ZW ZW ZW ZW -Yz +qJ Nd Ln ST ST Nd -NL +YW Sd -pF +Bq Nd ST ST @@ -48986,20 +49002,20 @@ aa aa aa Nd -YP -Ng -XZ -Wn +Qf +rY +re +yL ZW -LD +VZ Nd xO QN ZE Nd -NL -xP -pF +YW +ue +Bq Nd ZE QN From 0f4f07dc95b0046fa2383fbada29b6863d90ce8d Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Mon, 20 Jan 2020 00:11:05 -0600 Subject: [PATCH 076/123] Automatic changelog generation for PR #10346 [ci skip] --- html/changelogs/AutoChangeLog-pr-10346.yml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-10346.yml diff --git a/html/changelogs/AutoChangeLog-pr-10346.yml b/html/changelogs/AutoChangeLog-pr-10346.yml new file mode 100644 index 0000000000..3a0cd6dae4 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10346.yml @@ -0,0 +1,6 @@ +author: "Bhijn" +delete-after: True +changes: + - rscadd: "Limbs now regenerate their stamina faster while disabled" + - rscadd: "Limbs now have the same incoming stamina damage multiplier mechanics as spacemen, where the more staminaloss they take while disabled, the less staminaloss they'll take." + - balance: "Limbs have had their base stamina regen rate doubled to match the doubled stamina regen rate of standard spacemen." From 3828c603676a42663a451c82873cc7676b007991 Mon Sep 17 00:00:00 2001 From: Winter Flare <7543955+Owai-Seek@users.noreply.github.com> Date: Mon, 20 Jan 2020 02:07:33 -0500 Subject: [PATCH 077/123] Update CentCom.dmm Towel Bins into Bedsheet Bins --- _maps/map_files/generic/CentCom.dmm | 1074 +++++++++++++-------------- 1 file changed, 537 insertions(+), 537 deletions(-) diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm index 5c5283823f..a0467cde6c 100644 --- a/_maps/map_files/generic/CentCom.dmm +++ b/_maps/map_files/generic/CentCom.dmm @@ -2238,17 +2238,6 @@ }, /turf/open/floor/plasteel, /area/tdome/arena_source) -"fR" = ( -/obj/structure/closet, -/obj/item/storage/backpack/duffelbag/med/surgery, -/obj/machinery/iv_drip, -/obj/item/roller, -/obj/item/storage/firstaid/regular, -/obj/item/reagent_containers/medspray/synthflesh, -/obj/item/reagent_containers/medspray/synthflesh, -/obj/item/reagent_containers/medspray/synthflesh, -/turf/open/floor/plasteel/white, -/area/centcom/holding) "fS" = ( /obj/effect/turf_decal/tile/red{ dir = 8 @@ -2936,6 +2925,13 @@ /obj/machinery/capture_the_flag/red, /turf/open/floor/circuit/green/anim, /area/ctf) +"hH" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/computer/slot_machine, +/turf/open/indestructible/hotelwood, +/area/centcom/holding) "hI" = ( /obj/effect/turf_decal/stripes/line{ dir = 10 @@ -4349,25 +4345,6 @@ icon_state = "alien19" }, /area/abductor_ship) -"kR" = ( -/obj/structure/closet/crate, -/obj/item/vending_refill/autodrobe, -/obj/item/vending_refill/autodrobe, -/obj/item/vending_refill/boozeomat, -/obj/item/vending_refill/boozeomat, -/obj/item/vending_refill/cigarette, -/obj/item/vending_refill/cigarette, -/obj/item/vending_refill/clothing, -/obj/item/vending_refill/coffee, -/obj/item/vending_refill/coffee, -/obj/item/vending_refill/cola, -/obj/item/vending_refill/cola, -/obj/item/vending_refill/wallmed, -/obj/item/vending_refill/wallmed, -/obj/item/vending_refill/snack, -/obj/item/vending_refill/snack, -/turf/open/indestructible/hotelwood, -/area/centcom/holding) "kS" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -6790,6 +6767,14 @@ }, /turf/open/floor/plasteel/dark, /area/centcom/control) +"px" = ( +/obj/structure/table, +/obj/item/storage/backpack/duffelbag/med/surgery, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/centcom/holding) "py" = ( /obj/machinery/smartfridge, /turf/closed/indestructible{ @@ -6805,12 +6790,6 @@ }, /turf/open/floor/plasteel/dark, /area/centcom/supplypod) -"pB" = ( -/obj/machinery/shower{ - dir = 4 - }, -/turf/open/floor/plasteel/freezer, -/area/centcom/holding) "pH" = ( /obj/structure/table/wood, /obj/machinery/recharger, @@ -7308,13 +7287,6 @@ "qE" = ( /turf/closed/indestructible/riveted/uranium, /area/wizard_station) -"qG" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/machinery/computer/slot_machine, -/turf/open/indestructible/hotelwood, -/area/centcom/holding) "qI" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/light{ @@ -7322,10 +7294,6 @@ }, /turf/open/floor/plating, /area/syndicate_mothership) -"qJ" = ( -/obj/structure/table, -/turf/open/floor/plasteel/white, -/area/centcom/holding) "qP" = ( /obj/structure/chair/comfy/brown{ color = "#596479"; @@ -7419,10 +7387,6 @@ }, /turf/open/floor/plasteel, /area/syndicate_mothership) -"re" = ( -/obj/structure/closet/crate/bin, -/turf/open/floor/plasteel/white, -/area/centcom/holding) "rf" = ( /obj/effect/turf_decal/tile/bar, /obj/effect/turf_decal/tile/bar{ @@ -7431,13 +7395,6 @@ /obj/machinery/vending/coffee, /turf/open/floor/plasteel, /area/syndicate_mothership) -"rg" = ( -/obj/machinery/door/airlock/wood{ - id_tag = "Ninja7"; - name = "Dorm 7" - }, -/turf/open/indestructible/hotelwood, -/area/centcom/holding) "rk" = ( /obj/structure/table/reinforced, /obj/item/book/manual/wiki/security_space_law, @@ -7930,10 +7887,6 @@ }, /turf/open/floor/engine/cult, /area/wizard_station) -"rY" = ( -/obj/structure/closet/crate/freezer/blood, -/turf/open/floor/plasteel/white, -/area/centcom/holding) "sa" = ( /obj/item/hilbertshotel/ghostdojo, /turf/open/indestructible/hotelwood, @@ -7949,6 +7902,14 @@ }, /turf/open/floor/plating, /area/syndicate_mothership) +"sf" = ( +/obj/machinery/vending/wallmed{ + name = "Emergency NanoMed"; + pixel_y = 28; + use_power = 0 + }, +/turf/open/floor/plasteel/white, +/area/centcom/holding) "si" = ( /obj/structure/table/wood, /obj/item/reagent_containers/food/drinks/beer{ @@ -8398,21 +8359,6 @@ /obj/item/soap/syndie, /turf/open/floor/plasteel/freezer, /area/syndicate_mothership) -"ti" = ( -/obj/machinery/plantgenes/seedvault, -/obj/effect/turf_decal/tile/green{ - dir = 1 - }, -/obj/effect/turf_decal/tile/green, -/obj/effect/turf_decal/tile/green{ - dir = 4 - }, -/obj/effect/turf_decal/tile/green{ - dir = 8 - }, -/obj/structure/table, -/turf/open/indestructible/hotelwood, -/area/centcom/holding) "tl" = ( /obj/effect/turf_decal/stripes/corner, /turf/open/floor/plating, @@ -8423,26 +8369,6 @@ }, /turf/open/floor/plating, /area/syndicate_mothership) -"tn" = ( -/obj/structure/closet/secure_closet/hydroponics{ - locked = 0 - }, -/obj/effect/turf_decal/tile/green{ - dir = 1 - }, -/obj/effect/turf_decal/tile/green, -/obj/effect/turf_decal/tile/green{ - dir = 4 - }, -/obj/effect/turf_decal/tile/green{ - dir = 8 - }, -/obj/item/seeds/ambrosia/gaia, -/obj/item/seeds/ambrosia/gaia, -/obj/item/seeds/pumpkin/blumpkin, -/obj/item/seeds/pumpkin/blumpkin, -/turf/open/indestructible/hotelwood, -/area/centcom/holding) "to" = ( /obj/machinery/computer/shuttle/ferry{ dir = 4 @@ -8806,25 +8732,6 @@ /obj/item/storage/crayons, /turf/open/floor/plasteel/freezer, /area/syndicate_mothership) -"ue" = ( -/obj/item/coin/silver, -/obj/item/coin/silver, -/obj/item/coin/silver, -/obj/item/coin/silver, -/obj/item/coin/silver, -/obj/item/coin/silver, -/obj/item/coin/silver, -/obj/item/coin/silver, -/obj/item/coin/silver, -/obj/item/coin/silver, -/obj/item/coin/silver, -/obj/item/coin/silver, -/obj/item/coin/silver, -/obj/machinery/light/small{ - dir = 4 - }, -/turf/open/indestructible/hotelwood, -/area/centcom/holding) "uf" = ( /obj/effect/turf_decal/tile/brown{ dir = 8 @@ -9139,13 +9046,6 @@ }, /turf/open/floor/plasteel/freezer, /area/syndicate_mothership) -"uN" = ( -/obj/structure/bedsheetbin/towel, -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/mineral/titanium/blue, -/area/centcom/holding) "uO" = ( /obj/machinery/door/airlock/centcom{ name = "Shuttle Control Office"; @@ -9416,10 +9316,6 @@ }, /turf/open/floor/plasteel, /area/centcom/supplypod) -"vp" = ( -/obj/machinery/vending/snack, -/turf/open/indestructible/hotelwood, -/area/centcom/holding) "vs" = ( /obj/machinery/vending/hydronutrients, /obj/effect/turf_decal/tile/green{ @@ -9450,6 +9346,17 @@ }, /turf/open/floor/plasteel, /area/syndicate_mothership) +"vv" = ( +/obj/structure/closet, +/obj/item/storage/backpack/duffelbag/med/surgery, +/obj/machinery/iv_drip, +/obj/item/roller, +/obj/item/storage/firstaid/regular, +/obj/item/reagent_containers/medspray/synthflesh, +/obj/item/reagent_containers/medspray/synthflesh, +/obj/item/reagent_containers/medspray/synthflesh, +/turf/open/floor/plasteel/white, +/area/centcom/holding) "vw" = ( /obj/effect/turf_decal/tile/bar, /obj/effect/turf_decal/tile/bar{ @@ -9820,16 +9727,6 @@ }, /turf/open/floor/carpet, /area/wizard_station) -"we" = ( -/obj/structure/closet/crate, -/obj/item/stack/sheet/paperframes/fifty, -/obj/item/stack/sheet/paperframes/fifty, -/obj/item/storage/fancy/candle_box, -/obj/item/storage/fancy/candle_box, -/obj/item/storage/fancy/candle_box, -/obj/item/storage/box/lights/mixed, -/turf/open/indestructible/hotelwood, -/area/centcom/holding) "wh" = ( /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, @@ -9852,27 +9749,6 @@ }, /turf/open/floor/plasteel, /area/syndicate_mothership) -"wn" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/effect/turf_decal/tile/green{ - dir = 1 - }, -/obj/effect/turf_decal/tile/green, -/obj/effect/turf_decal/tile/green{ - dir = 4 - }, -/obj/effect/turf_decal/tile/green{ - dir = 8 - }, -/obj/machinery/chem_master/condimaster{ - desc = "Used to separate out liquids - useful for purifying botanical extracts. Also dispenses condiments."; - name = "BrewMaster 2199"; - pixel_x = -4 - }, -/turf/open/indestructible/hotelwood, -/area/centcom/holding) "wp" = ( /turf/open/floor/plasteel/dark, /area/syndicate_mothership) @@ -10119,14 +9995,6 @@ /obj/item/toy/cards/deck, /turf/open/floor/carpet, /area/wizard_station) -"wR" = ( -/obj/structure/table, -/obj/item/storage/box/bodybags, -/obj/item/storage/box/bodybags, -/obj/item/storage/box/bodybags, -/obj/item/storage/box/bodybags, -/turf/open/floor/plasteel/white, -/area/centcom/holding) "wX" = ( /obj/effect/turf_decal/tile/bar, /obj/effect/turf_decal/tile/bar{ @@ -10516,12 +10384,6 @@ }, /turf/open/floor/plasteel, /area/centcom/control) -"yl" = ( -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/plasteel/white, -/area/centcom/holding) "yn" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/sign/warning/vacuum, @@ -10747,10 +10609,6 @@ /obj/effect/decal/cleanable/blood/splatter, /turf/open/floor/grass, /area/wizard_station) -"yL" = ( -/obj/structure/table/optable, -/turf/open/floor/plasteel/white, -/area/centcom/holding) "yN" = ( /obj/structure/table/reinforced, /obj/item/paper/pamphlet/centcom/visitor_info, @@ -10787,6 +10645,15 @@ /obj/item/kitchen/rollingpin, /turf/open/floor/plasteel/cafeteria, /area/syndicate_mothership) +"yW" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/grass, +/area/centcom/holding) "yY" = ( /obj/structure/table/wood, /obj/item/storage/fancy/donut_box, @@ -11003,11 +10870,6 @@ /obj/effect/turf_decal/stripes/line, /turf/open/floor/mineral/plastitanium/red, /area/syndicate_mothership) -"zt" = ( -/obj/item/storage/box/bodybags, -/obj/item/storage/box/bodybags, -/turf/open/indestructible/hotelwood, -/area/centcom/holding) "zu" = ( /obj/item/storage/box/drinkingglasses, /obj/item/reagent_containers/food/drinks/bottle/rum, @@ -11201,6 +11063,12 @@ }, /turf/open/floor/plating, /area/syndicate_mothership) +"zS" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel/freezer, +/area/centcom/holding) "zT" = ( /turf/open/indestructible/boss/air, /area/centcom/holding) @@ -11497,6 +11365,10 @@ }, /turf/open/floor/plasteel, /area/syndicate_mothership) +"AE" = ( +/obj/machinery/vending/coffee, +/turf/open/indestructible/hotelwood, +/area/centcom/holding) "AG" = ( /obj/structure/ladder/unbreakable/binary/space, /turf/open/indestructible/airblock, @@ -11715,14 +11587,11 @@ /obj/machinery/mech_bay_recharge_port, /turf/open/floor/plating, /area/syndicate_mothership) -"Bm" = ( -/obj/structure/mopbucket, -/obj/item/mop, -/turf/open/indestructible/hotelwood, -/area/centcom/holding) "Bq" = ( -/obj/structure/bedsheetbin/towel, -/turf/open/indestructible/hotelwood, +/obj/machinery/sleeper{ + dir = 8 + }, +/turf/open/floor/plasteel/white, /area/centcom/holding) "Bs" = ( /obj/structure/table/wood, @@ -12050,12 +11919,6 @@ smooth = 1 }, /area/centcom/holding) -"BW" = ( -/obj/machinery/shower{ - dir = 8 - }, -/turf/open/floor/plasteel/freezer, -/area/centcom/holding) "BY" = ( /obj/item/toy/figure/syndie, /turf/open/floor/plating/asteroid/snow/airless, @@ -12191,9 +12054,6 @@ }, /turf/open/floor/engine/cult, /area/wizard_station) -"Cj" = ( -/turf/open/floor/plasteel/freezer, -/area/centcom/holding) "Cp" = ( /obj/structure/statue/uranium/nuke, /turf/open/floor/plating/asteroid/snow/airless, @@ -13625,6 +13485,10 @@ "Fh" = ( /turf/open/floor/plasteel/cafeteria, /area/centcom/holding) +"Fl" = ( +/obj/structure/bedsheetbin/towel, +/turf/open/floor/plasteel/white, +/area/centcom/holding) "Fm" = ( /obj/machinery/shower{ dir = 4 @@ -13768,13 +13632,6 @@ }, /turf/open/floor/plasteel/white, /area/tdome/tdomeobserve) -"FB" = ( -/obj/structure/table/wood/bar, -/obj/structure/safe/floor, -/obj/item/seeds/cherry/bomb, -/obj/item/key/janitor, -/turf/open/indestructible/hotelwood, -/area/centcom/holding) "FD" = ( /obj/machinery/shower{ dir = 4 @@ -13911,16 +13768,6 @@ }, /turf/open/floor/engine/cult, /area/wizard_station) -"FU" = ( -/obj/structure/toilet{ - dir = 4 - }, -/obj/structure/window/reinforced/tinted{ - icon_state = "twindow"; - dir = 1 - }, -/turf/open/floor/plasteel/white, -/area/centcom/holding) "FW" = ( /obj/structure/window/reinforced{ dir = 1 @@ -14105,17 +13952,6 @@ }, /turf/open/indestructible/hotelwood, /area/centcom/holding) -"Gt" = ( -/obj/structure/mirror{ - pixel_y = 28 - }, -/obj/structure/sink{ - dir = 1; - pixel_y = 25 - }, -/mob/living/simple_animal/bot/cleanbot, -/turf/open/floor/mineral/titanium/blue, -/area/centcom/holding) "Gu" = ( /obj/machinery/door/airlock/silver{ name = "Shower" @@ -14361,10 +14197,6 @@ }, /turf/open/floor/plasteel/dark, /area/tdome/tdomeobserve) -"GN" = ( -/obj/machinery/gibber, -/turf/open/floor/plasteel/cafeteria, -/area/centcom/holding) "GO" = ( /obj/structure/table/wood, /obj/structure/sign/plaques/golden{ @@ -14569,6 +14401,24 @@ }, /turf/open/floor/plasteel/white, /area/tdome/tdomeobserve) +"Hj" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/piano, +/turf/open/indestructible/hotelwood, +/area/centcom/holding) +"Hk" = ( +/obj/structure/table/wood, +/obj/item/camera/detective{ + desc = "A polaroid camera with extra capacity for social media marketing."; + name = "Professional camera" + }, +/obj/item/camera_film, +/obj/item/paper_bin, +/obj/item/pen/fountain, +/turf/open/indestructible/hotelwood, +/area/centcom/holding) "Hm" = ( /obj/structure/flora/ausbushes/fernybush, /obj/structure/flora/ausbushes/ppflowers, @@ -15911,6 +15761,12 @@ }, /turf/open/floor/plasteel/dark, /area/tdome/tdomeadmin) +"JV" = ( +/obj/structure/table, +/obj/item/stack/packageWrap, +/obj/item/reagent_containers/glass/beaker, +/turf/open/floor/plasteel/cafeteria, +/area/centcom/holding) "JX" = ( /obj/machinery/door/firedoor, /obj/effect/turf_decal/stripes/line{ @@ -15989,6 +15845,16 @@ }, /turf/open/floor/plasteel, /area/tdome/tdomeadmin) +"Ki" = ( +/obj/structure/closet/secure_closet/personal/cabinet{ + desc = "Swipe your ID on the closet to claim it. First come first serve, this one is wooden and fancy. Store your stuff here."; + name = "Personal ID-Locked Closet" + }, +/obj/item/reagent_containers/rag/towel, +/obj/item/reagent_containers/rag/towel, +/obj/item/reagent_containers/rag/towel, +/turf/open/floor/carpet/royalblue, +/area/centcom/holding) "Kj" = ( /obj/machinery/door/airlock/external{ name = "Backup Emergency Escape Shuttle" @@ -16008,17 +15874,6 @@ }, /turf/open/space/basic, /area/space) -"Kl" = ( -/obj/structure/table/wood, -/obj/item/soap, -/obj/item/soap, -/obj/item/soap, -/obj/item/lightreplacer, -/obj/item/lightreplacer, -/obj/item/storage/bag/trash, -/obj/item/storage/bag/trash, -/turf/open/indestructible/hotelwood, -/area/centcom/holding) "Kn" = ( /obj/structure/bookcase/random, /obj/effect/turf_decal/tile/neutral{ @@ -16426,6 +16281,20 @@ }, /turf/open/floor/mineral/titanium/blue, /area/centcom/evac) +"Lk" = ( +/obj/structure/table, +/obj/item/storage/box/bodybags, +/obj/item/storage/box/bodybags, +/obj/item/storage/box/bodybags, +/obj/item/storage/box/bodybags, +/turf/open/floor/plasteel/white, +/area/centcom/holding) +"Lm" = ( +/obj/machinery/shower{ + dir = 4 + }, +/turf/open/floor/plasteel/freezer, +/area/centcom/holding) "Ln" = ( /obj/structure/toilet{ dir = 4 @@ -16438,6 +16307,11 @@ }, /turf/open/floor/mineral/titanium/blue, /area/centcom/evac) +"Lr" = ( +/obj/structure/mopbucket, +/obj/item/mop, +/turf/open/indestructible/hotelwood, +/area/centcom/holding) "Ls" = ( /obj/docking_port/stationary{ dir = 4; @@ -16708,13 +16582,6 @@ "Mm" = ( /turf/open/floor/grass, /area/centcom/holding) -"Mo" = ( -/obj/machinery/processor, -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel/cafeteria, -/area/centcom/holding) "Ms" = ( /obj/effect/mob_spawn/human/ghostcafe{ dir = 8 @@ -16760,9 +16627,15 @@ }, /turf/open/floor/plating/asteroid/snow/airless, /area/syndicate_mothership) -"MA" = ( -/obj/structure/bedsheetbin/towel, -/turf/open/floor/plasteel/white, +"Mz" = ( +/obj/structure/closet/crate, +/obj/item/stack/sheet/paperframes/fifty, +/obj/item/stack/sheet/paperframes/fifty, +/obj/item/storage/fancy/candle_box, +/obj/item/storage/fancy/candle_box, +/obj/item/storage/fancy/candle_box, +/obj/item/storage/box/lights/mixed, +/turf/open/indestructible/hotelwood, /area/centcom/holding) "MB" = ( /turf/open/indestructible/binary, @@ -16893,6 +16766,10 @@ }, /turf/open/floor/plasteel, /area/tdome/tdomeobserve) +"Nt" = ( +/obj/structure/bedsheetbin/color, +/turf/open/indestructible/hotelwood, +/area/centcom/holding) "Nu" = ( /turf/open/floor/wood, /area/syndicate_mothership) @@ -16900,6 +16777,13 @@ /obj/machinery/recharge_station, /turf/open/floor/plasteel/white, /area/centcom/holding) +"Nx" = ( +/obj/machinery/processor, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel/cafeteria, +/area/centcom/holding) "Nz" = ( /obj/effect/turf_decal/tile/brown{ dir = 8 @@ -16909,6 +16793,12 @@ }, /turf/open/floor/plasteel, /area/centcom/supplypod/loading/two) +"NE" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/centcom/holding) "NF" = ( /obj/structure/ladder/unbreakable/binary, /turf/open/indestructible/airblock, @@ -16924,6 +16814,11 @@ }, /turf/open/floor/plasteel, /area/centcom/control) +"NN" = ( +/obj/item/storage/box/bodybags, +/obj/item/storage/box/bodybags, +/turf/open/indestructible/hotelwood, +/area/centcom/holding) "NT" = ( /obj/structure/window/paperframe{ CanAtmosPass = 0 @@ -16948,34 +16843,11 @@ /obj/machinery/vending/cola/sodie, /turf/open/floor/plasteel, /area/syndicate_mothership) -"NX" = ( -/obj/structure/closet/secure_closet/personal/cabinet{ - desc = "Swipe your ID on the closet to claim it. First come first serve, this one is wooden and fancy. Store your stuff here."; - name = "Personal ID-Locked Closet" - }, -/obj/item/reagent_containers/rag/towel, -/obj/item/reagent_containers/rag/towel, -/obj/item/reagent_containers/rag/towel, -/turf/open/floor/carpet/royalblue, -/area/centcom/holding) -"NY" = ( -/obj/structure/sink/kitchen{ - desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; - name = "sink"; - pixel_y = 28 - }, -/obj/effect/turf_decal/tile/green{ - dir = 1 - }, -/obj/effect/turf_decal/tile/green, -/obj/effect/turf_decal/tile/green{ - dir = 4 - }, -/obj/effect/turf_decal/tile/green{ - dir = 8 - }, -/obj/item/paper/guides/jobs/hydroponics, -/obj/item/book/manual/hydroponics_pod_people, +"NZ" = ( +/obj/structure/table/wood/bar, +/obj/structure/safe/floor, +/obj/item/seeds/cherry/bomb, +/obj/item/key/janitor, /turf/open/indestructible/hotelwood, /area/centcom/holding) "Oa" = ( @@ -17037,13 +16909,6 @@ }, /turf/open/floor/plasteel, /area/centcom/supplypod/loading/three) -"On" = ( -/obj/machinery/vending/cigarette, -/obj/machinery/light{ - dir = 4 - }, -/turf/open/indestructible/hotelwood, -/area/centcom/holding) "Op" = ( /obj/structure/sink{ dir = 8; @@ -17062,6 +16927,19 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/centcom/supplypod/loading/two) +"Os" = ( +/obj/structure/chair/wood/normal{ + dir = 1 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/indestructible/hotelwood, +/area/centcom/holding) +"Ot" = ( +/obj/machinery/washing_machine, +/turf/open/floor/mineral/titanium/blue, +/area/centcom/holding) "Ou" = ( /turf/closed/indestructible/fakedoor{ name = "Cold Storage" @@ -17090,13 +16968,6 @@ }, /turf/open/floor/plasteel, /area/syndicate_mothership) -"OC" = ( -/obj/machinery/vending/autodrobe/all_access{ - extended_inventory = 1 - }, -/obj/machinery/light, -/turf/open/floor/wood, -/area/centcom/holding) "OE" = ( /obj/effect/turf_decal/tile/brown, /obj/effect/turf_decal/tile/brown{ @@ -17139,6 +17010,10 @@ /obj/structure/mecha_wreckage/mauler, /turf/open/floor/plasteel/dark, /area/syndicate_mothership) +"OT" = ( +/obj/structure/table, +/turf/open/floor/plasteel/white, +/area/centcom/holding) "OU" = ( /obj/item/clothing/under/jabroni, /obj/item/clothing/under/geisha, @@ -17154,22 +17029,34 @@ /turf/open/floor/wood, /area/syndicate_mothership) "OW" = ( -/obj/machinery/vending/coffee, -/turf/open/indestructible/hotelwood, +/obj/structure/bedsheetbin/towel, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/mineral/titanium/blue, /area/centcom/holding) "OZ" = ( /obj/effect/turf_decal/delivery, /turf/open/floor/plating, /area/syndicate_mothership) "Pc" = ( -/obj/structure/table/wood, -/obj/item/camera/detective{ - desc = "A polaroid camera with extra capacity for social media marketing."; - name = "Professional camera" +/obj/structure/sink/kitchen{ + desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; + name = "sink"; + pixel_y = 28 }, -/obj/item/camera_film, -/obj/item/paper_bin, -/obj/item/pen/fountain, +/obj/effect/turf_decal/tile/green{ + dir = 1 + }, +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/green{ + dir = 4 + }, +/obj/effect/turf_decal/tile/green{ + dir = 8 + }, +/obj/item/paper/guides/jobs/hydroponics, +/obj/item/book/manual/hydroponics_pod_people, /turf/open/indestructible/hotelwood, /area/centcom/holding) "Pg" = ( @@ -17287,6 +17174,11 @@ }, /turf/open/floor/plating, /area/syndicate_mothership) +"PQ" = ( +/obj/structure/closet/secure_closet, +/obj/item/coin/silver, +/turf/open/indestructible/hotelwood, +/area/centcom/holding) "PS" = ( /obj/machinery/computer/shuttle/syndicate/recall, /obj/effect/turf_decal/tile/bar, @@ -17311,11 +17203,6 @@ /obj/effect/turf_decal/tile/green, /turf/open/floor/holofloor, /area/holodeck/rec_center/firingrange) -"PW" = ( -/obj/structure/closet/secure_closet, -/obj/item/coin/silver, -/turf/open/indestructible/hotelwood, -/area/centcom/holding) "PX" = ( /obj/machinery/computer/arcade/battle, /turf/open/indestructible/hotelwood, @@ -17347,32 +17234,9 @@ }, /turf/open/floor/mineral/titanium, /area/centcom/evac) -"Qc" = ( -/obj/structure/table/wood/bar, -/obj/structure/mirror{ - pixel_y = 28 - }, -/obj/item/lightreplacer, -/obj/item/lightreplacer, -/obj/item/lightreplacer, -/obj/item/storage/bag/trash, -/obj/item/storage/bag/trash, -/obj/item/storage/bag/trash, -/turf/open/indestructible/hotelwood, -/area/centcom/holding) "Qe" = ( /turf/open/ai_visible, /area/ai_multicam_room) -"Qf" = ( -/obj/machinery/sleeper{ - dir = 8 - }, -/turf/open/floor/plasteel/white, -/area/centcom/holding) -"Qh" = ( -/obj/machinery/light, -/turf/open/floor/plasteel/freezer, -/area/centcom/holding) "Qi" = ( /obj/item/paicard, /obj/structure/table/wood, @@ -17389,13 +17253,13 @@ /obj/singularity/wizard/mapped, /turf/open/indestructible/binary, /area/fabric_of_reality) -"Qn" = ( -/obj/machinery/vending/cola, -/turf/open/indestructible/hotelwood, -/area/centcom/holding) "Qo" = ( /turf/open/floor/mineral/plastitanium/red, /area/centcom/evac) +"Qp" = ( +/obj/structure/bedsheetbin, +/turf/open/indestructible/hotelwood, +/area/centcom/holding) "Qq" = ( /turf/open/floor/plasteel/freezer, /area/syndicate_mothership) @@ -17414,6 +17278,32 @@ }, /turf/open/floor/wood, /area/centcom/holding) +"Qw" = ( +/turf/open/floor/plasteel/freezer, +/area/centcom/holding) +"Qy" = ( +/obj/structure/closet/crate/bin, +/turf/open/floor/plasteel/white, +/area/centcom/holding) +"Qz" = ( +/obj/item/coin/silver, +/obj/item/coin/silver, +/obj/item/coin/silver, +/obj/item/coin/silver, +/obj/item/coin/silver, +/obj/item/coin/silver, +/obj/item/coin/silver, +/obj/item/coin/silver, +/obj/item/coin/silver, +/obj/item/coin/silver, +/obj/item/coin/silver, +/obj/item/coin/silver, +/obj/item/coin/silver, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/indestructible/hotelwood, +/area/centcom/holding) "QA" = ( /obj/machinery/deepfryer, /turf/open/floor/plasteel/cafeteria, @@ -17444,6 +17334,12 @@ }, /turf/open/indestructible/hotelwood, /area/centcom/holding) +"QJ" = ( +/obj/structure/sign/barsign{ + pixel_y = 32 + }, +/turf/open/indestructible/hotelwood, +/area/centcom/holding) "QK" = ( /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, @@ -17598,14 +17494,6 @@ /obj/structure/dresser, /turf/open/floor/carpet/royalblue, /area/centcom/holding) -"Rx" = ( -/obj/structure/table, -/obj/item/storage/backpack/duffelbag/med/surgery, -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/plasteel/white, -/area/centcom/holding) "Rz" = ( /obj/effect/turf_decal/loading_area, /turf/open/floor/plating, @@ -17620,6 +17508,31 @@ }, /turf/open/floor/holofloor, /area/holodeck/rec_center/basketball) +"RK" = ( +/obj/structure/closet/crate/freezer/blood, +/turf/open/floor/plasteel/white, +/area/centcom/holding) +"RL" = ( +/obj/machinery/vending/cola, +/turf/open/indestructible/hotelwood, +/area/centcom/holding) +"RN" = ( +/obj/structure/table, +/obj/machinery/reagentgrinder, +/obj/item/reagent_containers/glass/beaker/large, +/obj/effect/turf_decal/tile/green{ + dir = 1 + }, +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/green{ + dir = 4 + }, +/obj/effect/turf_decal/tile/green{ + dir = 8 + }, +/obj/machinery/light, +/turf/open/indestructible/hotelwood, +/area/centcom/holding) "RO" = ( /obj/machinery/shower{ dir = 1 @@ -17710,6 +17623,13 @@ /obj/item/toy/nuke, /turf/open/floor/wood, /area/syndicate_mothership) +"Sj" = ( +/obj/machinery/vending/autodrobe/all_access{ + extended_inventory = 1 + }, +/obj/machinery/light, +/turf/open/floor/wood, +/area/centcom/holding) "So" = ( /obj/structure/chair/wood/wings{ dir = 4 @@ -17719,12 +17639,6 @@ }, /turf/open/indestructible/hotelwood, /area/centcom/holding) -"St" = ( -/obj/structure/sign/barsign{ - pixel_y = 32 - }, -/turf/open/indestructible/hotelwood, -/area/centcom/holding) "Sw" = ( /obj/machinery/hydroponics/constructable, /obj/machinery/light{ @@ -17809,6 +17723,13 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/space/basic, /area/centcom/supplypod) +"SR" = ( +/obj/machinery/door/airlock/wood{ + id_tag = "Ninja7"; + name = "Dorm 7" + }, +/turf/open/indestructible/hotelwood, +/area/centcom/holding) "ST" = ( /turf/open/floor/mineral/titanium/blue, /area/centcom/holding) @@ -17855,6 +17776,12 @@ }, /turf/open/indestructible/hotelwood, /area/centcom/holding) +"Tf" = ( +/obj/machinery/shower{ + dir = 8 + }, +/turf/open/floor/plasteel/freezer, +/area/centcom/holding) "Tj" = ( /obj/effect/turf_decal/tile/bar, /obj/effect/turf_decal/tile/bar{ @@ -17886,6 +17813,16 @@ /obj/structure/closet/chefcloset, /turf/open/floor/plasteel/cafeteria, /area/centcom/holding) +"Tt" = ( +/obj/structure/toilet{ + dir = 4 + }, +/obj/structure/window/reinforced/tinted{ + icon_state = "twindow"; + dir = 1 + }, +/turf/open/floor/plasteel/white, +/area/centcom/holding) "Tu" = ( /obj/structure/flora/ausbushes/fernybush, /obj/structure/flora/ausbushes/fullgrass, @@ -17912,12 +17849,19 @@ /turf/open/indestructible/hotelwood, /area/centcom/holding) "Tx" = ( -/obj/machinery/vending/wallmed{ - name = "Emergency NanoMed"; - pixel_y = 28; - use_power = 0 +/obj/machinery/plantgenes/seedvault, +/obj/effect/turf_decal/tile/green{ + dir = 1 }, -/turf/open/floor/plasteel/white, +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/green{ + dir = 4 + }, +/obj/effect/turf_decal/tile/green{ + dir = 8 + }, +/obj/structure/table, +/turf/open/indestructible/hotelwood, /area/centcom/holding) "Tz" = ( /obj/effect/light_emitter, @@ -17933,6 +17877,10 @@ /obj/structure/reagent_dispensers/cooking_oil, /turf/open/floor/plasteel/cafeteria, /area/centcom/holding) +"TC" = ( +/obj/machinery/light, +/turf/open/floor/plasteel/freezer, +/area/centcom/holding) "TF" = ( /obj/effect/turf_decal/tile/red{ dir = 8 @@ -17942,16 +17890,16 @@ }, /turf/open/floor/holofloor, /area/holodeck/rec_center/basketball) -"TL" = ( +"TG" = ( /obj/machinery/light{ + dir = 8 + }, +/obj/structure/window/reinforced/tinted{ + icon_state = "twindow"; dir = 1 }, -/obj/item/soap, -/obj/item/soap, -/obj/item/soap, -/obj/item/janiupgrade, -/obj/vehicle/ridden/janicart, -/turf/open/indestructible/hotelwood, +/obj/machinery/washing_machine, +/turf/open/floor/plasteel/white, /area/centcom/holding) "TM" = ( /mob/living/simple_animal/bot/medbot{ @@ -17978,6 +17926,17 @@ }, /turf/open/floor/plasteel/freezer, /area/syndicate_mothership) +"TY" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/item/soap, +/obj/item/soap, +/obj/item/soap, +/obj/item/janiupgrade, +/obj/vehicle/ridden/janicart, +/turf/open/indestructible/hotelwood, +/area/centcom/holding) "Ud" = ( /obj/effect/landmark/holding_facility, /turf/open/indestructible/hotelwood, @@ -18009,20 +17968,22 @@ /turf/open/floor/plasteel, /area/syndicate_mothership) "Uk" = ( -/obj/structure/table, -/obj/machinery/reagentgrinder, -/obj/item/reagent_containers/glass/beaker/large, -/obj/effect/turf_decal/tile/green{ - dir = 1 - }, -/obj/effect/turf_decal/tile/green, -/obj/effect/turf_decal/tile/green{ - dir = 4 - }, -/obj/effect/turf_decal/tile/green{ - dir = 8 - }, -/obj/machinery/light, +/obj/structure/closet/crate, +/obj/item/vending_refill/autodrobe, +/obj/item/vending_refill/autodrobe, +/obj/item/vending_refill/boozeomat, +/obj/item/vending_refill/boozeomat, +/obj/item/vending_refill/cigarette, +/obj/item/vending_refill/cigarette, +/obj/item/vending_refill/clothing, +/obj/item/vending_refill/coffee, +/obj/item/vending_refill/coffee, +/obj/item/vending_refill/cola, +/obj/item/vending_refill/cola, +/obj/item/vending_refill/wallmed, +/obj/item/vending_refill/wallmed, +/obj/item/vending_refill/snack, +/obj/item/vending_refill/snack, /turf/open/indestructible/hotelwood, /area/centcom/holding) "Ul" = ( @@ -18062,6 +18023,17 @@ /obj/effect/mapping_helpers/airlock/cyclelink_helper, /turf/open/floor/plasteel, /area/tdome/tdomeobserve) +"Uq" = ( +/obj/structure/table/wood, +/obj/item/soap, +/obj/item/soap, +/obj/item/soap, +/obj/item/lightreplacer, +/obj/item/lightreplacer, +/obj/item/storage/bag/trash, +/obj/item/storage/bag/trash, +/turf/open/indestructible/hotelwood, +/area/centcom/holding) "Ur" = ( /turf/open/floor/carpet/royalblue, /area/centcom/holding) @@ -18086,7 +18058,7 @@ /obj/effect/light_emitter, /turf/open/floor/plating/asteroid/snow/airless, /area/syndicate_mothership) -"UA" = ( +"Uz" = ( /obj/structure/table, /obj/machinery/dish_drive, /turf/open/floor/plasteel/cafeteria, @@ -18125,6 +18097,17 @@ }, /turf/open/floor/plasteel, /area/centcom/supplypod) +"UN" = ( +/obj/structure/mirror{ + pixel_y = 28 + }, +/obj/structure/sink{ + dir = 1; + pixel_y = 25 + }, +/mob/living/simple_animal/bot/cleanbot, +/turf/open/floor/mineral/titanium/blue, +/area/centcom/holding) "UO" = ( /obj/machinery/door/airlock/centcom{ name = "CentCom Security"; @@ -18148,6 +18131,10 @@ }, /turf/open/floor/plasteel, /area/centcom/supplypod/loading/one) +"US" = ( +/obj/machinery/gibber, +/turf/open/floor/plasteel/cafeteria, +/area/centcom/holding) "UT" = ( /obj/structure/chair/wood/wings{ dir = 1 @@ -18256,15 +18243,6 @@ }, /turf/open/space, /area/space) -"Vy" = ( -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/grass, -/area/centcom/holding) "Vz" = ( /obj/machinery/vending/wallmed{ name = "Emergency NanoMed"; @@ -18329,21 +18307,10 @@ }, /turf/open/floor/wood, /area/syndicate_mothership) -"VV" = ( -/obj/structure/table, -/obj/item/stack/packageWrap, -/obj/item/reagent_containers/glass/beaker, -/turf/open/floor/plasteel/cafeteria, -/area/centcom/holding) "VX" = ( /obj/effect/landmark/shuttle_import, /turf/open/space/basic, /area/space) -"VZ" = ( -/obj/structure/table, -/obj/item/storage/backpack/duffelbag/med/surgery, -/turf/open/floor/plasteel/white, -/area/centcom/holding) "Wb" = ( /obj/machinery/door/window/westleft, /turf/open/indestructible/boss/air, @@ -18399,26 +18366,32 @@ }, /turf/open/indestructible/hotelwood, /area/centcom/holding) +"Wz" = ( +/obj/structure/table, +/obj/item/storage/backpack/duffelbag/med/surgery, +/turf/open/floor/plasteel/white, +/area/centcom/holding) "WC" = ( /obj/structure/table/reinforced, /obj/item/pen, /turf/open/floor/mineral/plastitanium/red, /area/centcom/evac) +"WD" = ( +/obj/structure/mopbucket, +/obj/item/mop, +/obj/structure/sink/kitchen{ + desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; + name = "sink"; + pixel_y = 28 + }, +/turf/open/indestructible/hotelwood, +/area/centcom/holding) "WE" = ( /obj/machinery/vending/kink{ extended_inventory = 1 }, /turf/open/floor/wood, /area/centcom/holding) -"WG" = ( -/obj/structure/chair/wood/normal{ - dir = 1 - }, -/obj/machinery/light{ - dir = 8 - }, -/turf/open/indestructible/hotelwood, -/area/centcom/holding) "WH" = ( /obj/structure/table/reinforced, /obj/item/reagent_containers/food/drinks/bottle/whiskey{ @@ -18497,13 +18470,10 @@ /obj/machinery/processor, /turf/open/floor/plasteel/cafeteria, /area/syndicate_mothership) -"Xb" = ( -/obj/structure/mopbucket, -/obj/item/mop, -/obj/structure/sink/kitchen{ - desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; - name = "sink"; - pixel_y = 28 +"WY" = ( +/obj/machinery/vending/cigarette, +/obj/machinery/light{ + dir = 4 }, /turf/open/indestructible/hotelwood, /area/centcom/holding) @@ -18518,6 +18488,19 @@ /obj/machinery/vending/autodrobe, /turf/open/indestructible/hotelwood, /area/centcom/holding) +"Xf" = ( +/obj/structure/table/wood/bar, +/obj/structure/mirror{ + pixel_y = 28 + }, +/obj/item/lightreplacer, +/obj/item/lightreplacer, +/obj/item/lightreplacer, +/obj/item/storage/bag/trash, +/obj/item/storage/bag/trash, +/obj/item/storage/bag/trash, +/turf/open/indestructible/hotelwood, +/area/centcom/holding) "Xg" = ( /obj/effect/turf_decal/tile/red{ dir = 4 @@ -18602,13 +18585,6 @@ }, /turf/open/floor/plasteel, /area/centcom/ferry) -"XA" = ( -/obj/machinery/light{ - dir = 8 - }, -/obj/structure/piano, -/turf/open/indestructible/hotelwood, -/area/centcom/holding) "XD" = ( /obj/machinery/button/door{ id = "Ninja4"; @@ -18636,6 +18612,26 @@ }, /turf/open/indestructible/hotelwood, /area/centcom/holding) +"XS" = ( +/obj/structure/closet/secure_closet/hydroponics{ + locked = 0 + }, +/obj/effect/turf_decal/tile/green{ + dir = 1 + }, +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/green{ + dir = 4 + }, +/obj/effect/turf_decal/tile/green{ + dir = 8 + }, +/obj/item/seeds/ambrosia/gaia, +/obj/item/seeds/ambrosia/gaia, +/obj/item/seeds/pumpkin/blumpkin, +/obj/item/seeds/pumpkin/blumpkin, +/turf/open/indestructible/hotelwood, +/area/centcom/holding) "XT" = ( /obj/structure/table/wood, /obj/item/reagent_containers/food/snacks/sashimi, @@ -18708,9 +18704,9 @@ /obj/structure/dresser, /turf/open/floor/plasteel/dark, /area/syndicate_mothership) -"Yl" = ( -/obj/machinery/washing_machine, -/turf/open/floor/mineral/titanium/blue, +"Yj" = ( +/obj/structure/table/optable, +/turf/open/floor/plasteel/white, /area/centcom/holding) "Ym" = ( /obj/machinery/computer/arcade/orion_trail, @@ -18794,30 +18790,6 @@ }, /turf/open/indestructible/hotelwood, /area/centcom/holding) -"YW" = ( -/obj/structure/bedsheetbin, -/turf/open/indestructible/hotelwood, -/area/centcom/holding) -"YX" = ( -/obj/structure/closet, -/obj/item/stack/sheet/mineral/wood/fifty, -/obj/item/stack/tile/wood{ - amount = 24 - }, -/obj/item/stack/tile/carpet/black/fifty, -/obj/item/stack/tile/carpet/blackred/fifty, -/obj/item/stack/tile/carpet/blue/fifty, -/obj/item/stack/tile/carpet/cyan/fifty, -/obj/item/stack/tile/carpet/fifty, -/obj/item/stack/tile/carpet/green/fifty, -/obj/item/stack/tile/carpet/monochrome/fifty, -/obj/item/stack/tile/carpet/orange/fifty, -/obj/item/stack/tile/carpet/purple/fifty, -/obj/item/stack/tile/carpet/red/fifty, -/obj/item/stack/tile/carpet/royalblack/fifty, -/obj/item/stack/tile/carpet/royalblue/fifty, -/turf/open/indestructible/hotelwood, -/area/centcom/holding) "Za" = ( /obj/machinery/door/airlock/wood{ id_tag = "lmrestroom" @@ -18848,27 +18820,10 @@ }, /turf/open/floor/plasteel, /area/centcom/supplypod) -"Zq" = ( -/obj/machinery/light{ - dir = 8 - }, -/obj/structure/window/reinforced/tinted{ - icon_state = "twindow"; - dir = 1 - }, -/obj/machinery/washing_machine, -/turf/open/floor/plasteel/white, -/area/centcom/holding) "Zr" = ( /obj/machinery/light, /turf/open/floor/plasteel/dark, /area/syndicate_mothership) -"Zt" = ( -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel/freezer, -/area/centcom/holding) "Zw" = ( /obj/structure/bed, /obj/item/bedsheet/syndie, @@ -18887,10 +18842,6 @@ /obj/effect/landmark/start/nukeop_leader, /turf/open/floor/wood, /area/syndicate_mothership) -"ZC" = ( -/obj/structure/bed/dogbed, -/turf/open/indestructible/hotelwood, -/area/centcom/holding) "ZE" = ( /obj/structure/sink{ dir = 4; @@ -18936,6 +18887,30 @@ }, /turf/open/floor/mineral/plastitanium/red, /area/syndicate_mothership) +"ZL" = ( +/obj/structure/closet, +/obj/item/stack/sheet/mineral/wood/fifty, +/obj/item/stack/tile/wood{ + amount = 24 + }, +/obj/item/stack/tile/carpet/black/fifty, +/obj/item/stack/tile/carpet/blackred/fifty, +/obj/item/stack/tile/carpet/blue/fifty, +/obj/item/stack/tile/carpet/cyan/fifty, +/obj/item/stack/tile/carpet/fifty, +/obj/item/stack/tile/carpet/green/fifty, +/obj/item/stack/tile/carpet/monochrome/fifty, +/obj/item/stack/tile/carpet/orange/fifty, +/obj/item/stack/tile/carpet/purple/fifty, +/obj/item/stack/tile/carpet/red/fifty, +/obj/item/stack/tile/carpet/royalblack/fifty, +/obj/item/stack/tile/carpet/royalblue/fifty, +/turf/open/indestructible/hotelwood, +/area/centcom/holding) +"ZN" = ( +/obj/machinery/vending/snack, +/turf/open/indestructible/hotelwood, +/area/centcom/holding) "ZP" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -18948,6 +18923,10 @@ "ZQ" = ( /turf/open/floor/plasteel, /area/centcom/supplypod/loading/two) +"ZR" = ( +/obj/structure/bed/dogbed, +/turf/open/indestructible/hotelwood, +/area/centcom/holding) "ZT" = ( /mob/living/simple_animal/cow, /turf/open/floor/grass, @@ -18983,6 +18962,27 @@ }, /turf/open/floor/plasteel, /area/centcom/supply) +"ZZ" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/turf_decal/tile/green{ + dir = 1 + }, +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/green{ + dir = 4 + }, +/obj/effect/turf_decal/tile/green{ + dir = 8 + }, +/obj/machinery/chem_master/condimaster{ + desc = "Used to separate out liquids - useful for purifying botanical extracts. Also dispenses condiments."; + name = "BrewMaster 2199"; + pixel_x = -4 + }, +/turf/open/indestructible/hotelwood, +/area/centcom/holding) (1,1,1) = {" aa @@ -43331,9 +43331,9 @@ PO PO PO Nd -FU -FU -Zq +Tt +Tt +TG Op Nd Rm @@ -43348,24 +43348,24 @@ UV CV Sd Nd -uN +OW Ln Nd -pB -pB -pB +Lm +Lm +Lm Nd -PW +PQ Sd -ZC +ZR Nd -Qn +RL Yo -Kl +Uq Nd VL Ww -zt +NN Nd aa aa @@ -43579,7 +43579,7 @@ aa aa aa Nd -NY +Pc PY PY PY @@ -43605,18 +43605,18 @@ RQ Sd Sd Nd -Gt +UN ST Nd -Zt -Cj -Qh +zS +Qw +TC Nd MJ Sd Sd Nd -OW +AE Sd Ph Nd @@ -43836,14 +43836,14 @@ aa aa aa Nd -wn +ZZ PY PY PY PY PY PY -Uk +RN Nd SB ZW @@ -43862,24 +43862,24 @@ UV CV Sd Nd -Yl +Ot ST Nd -BW -Cj -BW +Tf +Qw +Tf Nd ma Sd Sd Nd -vp +ZN Sd Sd Nd -YX +ZL Sd -Bm +Lr Nd aa aa @@ -44103,8 +44103,8 @@ PY Rj Nd SB -yl -MA +NE +Fl Nw Nd Sd @@ -44115,7 +44115,7 @@ Sd Tu Vu Nd -qG +hH Sd Sd Nd @@ -44130,7 +44130,7 @@ Nd yS Nd Nd -Xb +WD Sd HH Nd @@ -44350,12 +44350,12 @@ aa aa aa Nd -ti +Tx PY PY PY Um -tn +XS PY vs Nd @@ -44650,7 +44650,7 @@ Sd Sd Sd Sd -OC +Sj Nd aa aa @@ -44864,7 +44864,7 @@ aa aa aa Nd -Bm +Lr Sd Yo Sd @@ -45126,13 +45126,13 @@ Sd MG YN Nd -GN +US Fh Fh zV Nd Nd -XA +Hj Fa KT Sd @@ -45378,17 +45378,17 @@ aa aa aa Nd -YX +ZL Sd Rh Mm Nd -Mo +Nx Fh Fh Yu Nd -OW +AE CV Sd KT @@ -45420,7 +45420,7 @@ Sd Sd Nd SY -WG +Os UD Nd aa @@ -45635,9 +45635,9 @@ aa aa aa Nd -vp +ZN Sd -Vy +yW ZT Nd Pr @@ -45645,7 +45645,7 @@ Fh Fh QW Nd -St +QJ Sd Sd KT @@ -46149,7 +46149,7 @@ aa aa aa Nd -FB +NZ Sd Yo PL @@ -46414,7 +46414,7 @@ Nd zX Fh Fh -VV +JV Nd Dl Nd @@ -46448,7 +46448,7 @@ Sd Sd Nd SY -WG +Os UD Nd aa @@ -46663,7 +46663,7 @@ aa aa aa Nd -Qc +Xf Sd Sd Nf @@ -46671,7 +46671,7 @@ Nd QA Fh Fh -UA +Uz ED Sd Yo @@ -46923,7 +46923,7 @@ Nd YL Sd Sd -kR +Uk Nd Xo Fh @@ -47180,7 +47180,7 @@ Nd Xe Sd Sd -YX +ZL Nd TB Fh @@ -47434,7 +47434,7 @@ aa aa aa Nd -TL +TY Sd Sd Sd @@ -47948,17 +47948,17 @@ aa aa aa Nd -Pc +Hk Sd MR -we +Mz Nd SN pV pV Tr Nd -On +WY Ph Nd Nd @@ -47991,7 +47991,7 @@ Sd Nd WN Ur -NX +Ki Nd aa aa @@ -48488,19 +48488,19 @@ aa aa aa Nd -fR +vv VA ZW ZW -Rx -wR +px +Lk Nd Nd Nd QC Nd Nd -rg +SR Nd Nd QC @@ -48745,20 +48745,20 @@ aa aa aa Nd -Tx +sf ZW ZW ZW ZW -qJ +OT Nd Ln ST ST Nd -YW +Qp Sd -Bq +Nt Nd ST ST @@ -49002,20 +49002,20 @@ aa aa aa Nd -Qf -rY -re -yL +Bq +RK +Qy +Yj ZW -VZ +Wz Nd xO QN ZE Nd -YW -ue -Bq +Qp +Qz +Nt Nd ZE QN From ab771d9505132fa1501b9e72f6b9da885985d9c7 Mon Sep 17 00:00:00 2001 From: Seris02 Date: Mon, 20 Jan 2020 15:48:55 +0800 Subject: [PATCH 078/123] I deleted an important thing --- code/modules/recycling/conveyor2.dm | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/code/modules/recycling/conveyor2.dm b/code/modules/recycling/conveyor2.dm index 50d01ab7a3..11c80b14ee 100644 --- a/code/modules/recycling/conveyor2.dm +++ b/code/modules/recycling/conveyor2.dm @@ -325,6 +325,14 @@ GLOBAL_LIST_EMPTY(conveyors_by_id) if((dir == NORTH) || (dir == WEST)) invert_icon = TRUE +/obj/item/conveyor_switch_construct + name = "conveyor switch assembly" + desc = "A conveyor control switch assembly." + icon = 'icons/obj/recycling.dmi' + icon_state = "switch-off" + w_class = WEIGHT_CLASS_BULKY + var/id = "" //inherited by the switch + /obj/item/conveyor_switch_construct/Initialize() . = ..() id = "[rand()]" //this couldn't possibly go wrong From 051ca8c0500edb6ee401bc7f3157ece4fa8b17df Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Mon, 20 Jan 2020 03:45:40 -0700 Subject: [PATCH 079/123] checks --- code/game/objects/items/devices/PDA/PDA.dm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index 51b168b57d..b843c5cec1 100644 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -801,8 +801,9 @@ GLOBAL_LIST_EMPTY(PDAs) // Show it to ghosts var/ghost_message = "[owner] PDA Message --> [target_text]: [signal.format_message(TRUE)]" if(length(string_targets)) - for(var/mob/M in GLOB.player_list) - if(isobserver(M) && M.client && (M.client.prefs.chat_toggles & CHAT_GHOSTPDA)) + for(var/i in GLOB.dead_mob_list) + var/mob/M = i + if(M?.client.prefs.chat_toggles & CHAT_GHOSTPDA) to_chat(M, "[FOLLOW_LINK(M, user)] [ghost_message]") to_chat(user, "Message sent to [target_text]: \"[emoji_message]\"") // Log in the talk log From 5bd2b13233aa51fae8c3a4752726307339988c0d Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Mon, 20 Jan 2020 11:04:34 -0600 Subject: [PATCH 080/123] Automatic changelog generation for PR #10615 [ci skip] --- html/changelogs/AutoChangeLog-pr-10615.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-10615.yml diff --git a/html/changelogs/AutoChangeLog-pr-10615.yml b/html/changelogs/AutoChangeLog-pr-10615.yml new file mode 100644 index 0000000000..f67392cd7f --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10615.yml @@ -0,0 +1,4 @@ +author: "keronshb" +delete-after: True +changes: + - bugfix: "fixed my messup" From 06e23144a8062db0df15f453e6498d515bfb679d Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Mon, 20 Jan 2020 11:50:27 -0600 Subject: [PATCH 081/123] Automatic changelog generation for PR #10621 [ci skip] --- html/changelogs/AutoChangeLog-pr-10621.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-10621.yml diff --git a/html/changelogs/AutoChangeLog-pr-10621.yml b/html/changelogs/AutoChangeLog-pr-10621.yml new file mode 100644 index 0000000000..0bb08dee2c --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10621.yml @@ -0,0 +1,4 @@ +author: "Hatterhat" +delete-after: True +changes: + - rscadd: "You can now print .357 AP speedloaders from Security techfabs after you pick up the Advanced Non-Standard Ballistics node." From a99090ddbf9cf235d838720fad805abd0b08db62 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Mon, 20 Jan 2020 13:02:09 -0600 Subject: [PATCH 082/123] Automatic changelog generation for PR #10617 [ci skip] --- html/changelogs/AutoChangeLog-pr-10617.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-10617.yml diff --git a/html/changelogs/AutoChangeLog-pr-10617.yml b/html/changelogs/AutoChangeLog-pr-10617.yml new file mode 100644 index 0000000000..923913a043 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10617.yml @@ -0,0 +1,4 @@ +author: "kevinz000" +delete-after: True +changes: + - bugfix: "Grenades can now have their timers adjusted." From 0661bc2558175536c8f2514f1d85634e465a87be Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Mon, 20 Jan 2020 15:26:24 -0700 Subject: [PATCH 083/123] Update PDA.dm --- code/game/objects/items/devices/PDA/PDA.dm | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index b843c5cec1..14f2407798 100644 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -800,12 +800,11 @@ GLOBAL_LIST_EMPTY(PDAs) tnote += "→ To [target_text]:
    [signal.format_message()]
    " // Show it to ghosts var/ghost_message = "[owner] PDA Message --> [target_text]: [signal.format_message(TRUE)]" - if(length(string_targets)) - for(var/i in GLOB.dead_mob_list) - var/mob/M = i - if(M?.client.prefs.chat_toggles & CHAT_GHOSTPDA) - to_chat(M, "[FOLLOW_LINK(M, user)] [ghost_message]") - to_chat(user, "Message sent to [target_text]: \"[emoji_message]\"") + for(var/i in GLOB.dead_mob_list) + var/mob/M = i + if(M?.client.prefs.chat_toggles & CHAT_GHOSTPDA) + to_chat(M, "[FOLLOW_LINK(M, user)] [ghost_message]") + to_chat(user, "Message sent to [target_text]: \"[emoji_message]\"") // Log in the talk log user.log_talk(message, LOG_PDA, tag="PDA: [initial(name)] to [target_text] (BLOCKED:[string_blocked])") if (!silent) From 348fa8be8674b31e6dc2d114ba30676430d6b308 Mon Sep 17 00:00:00 2001 From: Hatterhat <31829017+Hatterhat@users.noreply.github.com> Date: Mon, 20 Jan 2020 17:27:51 -0600 Subject: [PATCH 084/123] salt pr @kevinz000 --- code/modules/research/techweb/all_nodes.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/research/techweb/all_nodes.dm b/code/modules/research/techweb/all_nodes.dm index 2dc2e71dea..2fa5901ec9 100644 --- a/code/modules/research/techweb/all_nodes.dm +++ b/code/modules/research/techweb/all_nodes.dm @@ -80,7 +80,7 @@ display_name = "Advanced Biotechnology" description = "Advanced Biotechnology" prereq_ids = list("biotech") - design_ids = list("piercesyringe", "crewpinpointer", "smoke_machine", "plasmarefiller", "limbgrower", "meta_beaker", "healthanalyzer_advanced", "harvester", "holobarrier_med", "detective_scanner", "defibrillator_compact", "smartdartgun", "medicinalsmartdart", "pHmeter") + design_ids = list("piercesyringe", "crewpinpointer", "smoke_machine", "plasmarefiller", "limbgrower", "meta_beaker", "healthanalyzer_advanced", "harvester", "holobarrier_med", "defibrillator_compact", "smartdartgun", "medicinalsmartdart", "pHmeter") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) export_price = 5000 From ddf037da9252f1f4c7d655551d3b79ab136b9631 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Tue, 21 Jan 2020 00:28:41 +0100 Subject: [PATCH 085/123] Trilby's solar panels PR but improved. --- .../game/objects/items/stacks/sheets/glass.dm | 25 +++++++++- .../objects/items/stacks/sheets/sheets.dm | 14 +++++- code/game/objects/structures/window.dm | 29 ++++------- code/modules/power/solar.dm | 48 +++++++++++-------- code/modules/power/tracker.dm | 22 +++++---- 5 files changed, 86 insertions(+), 52 deletions(-) diff --git a/code/game/objects/items/stacks/sheets/glass.dm b/code/game/objects/items/stacks/sheets/glass.dm index a33ae9c4a9..f6bff2f880 100644 --- a/code/game/objects/items/stacks/sheets/glass.dm +++ b/code/game/objects/items/stacks/sheets/glass.dm @@ -26,6 +26,7 @@ GLOBAL_LIST_INIT(glass_recipes, list ( \ grind_results = list(/datum/reagent/silicon = 20) point_value = 1 tableVariant = /obj/structure/table/glass + shard_type = /obj/item/shard /obj/item/stack/sheet/glass/suicide_act(mob/living/carbon/user) user.visible_message("[user] begins to slice [user.p_their()] neck with \the [src]! It looks like [user.p_theyre()] trying to commit suicide!") @@ -93,6 +94,7 @@ GLOBAL_LIST_INIT(pglass_recipes, list ( \ merge_type = /obj/item/stack/sheet/plasmaglass grind_results = list(/datum/reagent/silicon = 20, /datum/reagent/toxin/plasma = 10) tableVariant = /obj/structure/table/plasmaglass + shard_type = /obj/item/shard/plasma /obj/item/stack/sheet/plasmaglass/fifty amount = 50 @@ -120,7 +122,9 @@ GLOBAL_LIST_INIT(pglass_recipes, list ( \ else return ..() - +/obj/item/stack/sheet/plasmaglass/on_solar_construction(obj/machinery/power/solar/S) + S.obj_integrity *= 1.2 + S.efficiency *= 1.2 /* * Reinforced glass sheets @@ -145,11 +149,15 @@ GLOBAL_LIST_INIT(reinforced_glass_recipes, list ( \ merge_type = /obj/item/stack/sheet/rglass grind_results = list(/datum/reagent/silicon = 20, /datum/reagent/iron = 10) point_value = 4 + shard_type = /obj/item/shard /obj/item/stack/sheet/rglass/attackby(obj/item/W, mob/user, params) add_fingerprint(user) ..() +/obj/item/stack/sheet/rglass/on_solar_construction(obj/machinery/power/solar/S) + S.obj_integrity *= 2 + /obj/item/stack/sheet/rglass/cyborg materials = list() var/datum/robot_energy_storage/glasource @@ -188,6 +196,11 @@ GLOBAL_LIST_INIT(prglass_recipes, list ( \ merge_type = /obj/item/stack/sheet/plasmarglass grind_results = list(/datum/reagent/silicon = 20, /datum/reagent/toxin/plasma = 10, /datum/reagent/iron = 10) point_value = 23 + shard_type = /obj/item/shard/plasma + +/obj/item/stack/sheet/plasmarglass/on_solar_construction(obj/machinery/power/solar/S) + S.obj_integrity *= 2.2 + S.efficiency *= 1.2 /obj/item/stack/sheet/plasmarglass/Initialize(mapload, new_amount, merge = TRUE) recipes = GLOB.prglass_recipes @@ -207,6 +220,11 @@ GLOBAL_LIST_INIT(titaniumglass_recipes, list( armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 100) resistance_flags = ACID_PROOF merge_type = /obj/item/stack/sheet/titaniumglass + shard_type = /obj/item/shard + +/obj/item/stack/sheet/titaniumglass/on_solar_construction(obj/machinery/power/solar/S) + S.obj_integrity *= 2.5 + S.efficiency *= 1.5 /obj/item/stack/sheet/titaniumglass/Initialize(mapload, new_amount, merge = TRUE) recipes = GLOB.titaniumglass_recipes @@ -226,11 +244,16 @@ GLOBAL_LIST_INIT(plastitaniumglass_recipes, list( armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 100) resistance_flags = ACID_PROOF merge_type = /obj/item/stack/sheet/plastitaniumglass + shard_type = /obj/item/shard /obj/item/stack/sheet/plastitaniumglass/Initialize(mapload, new_amount, merge = TRUE) recipes = GLOB.plastitaniumglass_recipes return ..() +/obj/item/stack/sheet/titaniumglass/on_solar_construction(obj/machinery/power/solar/S) + S.obj_integrity *= 2 + S.efficiency *= 2 + /obj/item/shard name = "shard" desc = "A nasty looking shard of glass." diff --git a/code/game/objects/items/stacks/sheets/sheets.dm b/code/game/objects/items/stacks/sheets/sheets.dm index af0dca02d3..03c3dcc3c9 100644 --- a/code/game/objects/items/stacks/sheets/sheets.dm +++ b/code/game/objects/items/stacks/sheets/sheets.dm @@ -15,4 +15,16 @@ var/point_value = 0 //turn-in value for the gulag stacker - loosely relative to its rarity var/is_fabric = FALSE //is this a valid material for the loom? var/loom_result //result from pulling on the loom - var/pull_effort = 0 //amount of delay when pulling on the loom \ No newline at end of file + var/pull_effort = 0 //amount of delay when pulling on the loom + var/shard_type // the shard debris typepath left over by solar panels and windows etc. + var/solars_multiplier = 1 + +/** + * Called on the glass sheet upon solar construction (duh): + * Different glass sheets can modify different stas/vars, such as obj_integrity or efficiency + * and possibly extra effects if you wish to code them. + * Keep in mind the solars' max_integrity is set equal to the obj_integrity by the end of the initialization, + * so you don't have to do so here. + */ +/obj/item/stack/sheet/proc/on_solar_construction(/obj/machinery/power/solar/S) + return diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index 58588c5693..14a7e445c1 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -15,7 +15,8 @@ var/decon_speed = 30 var/wtype = "glass" var/fulltile = FALSE - var/glass_type = /obj/item/stack/sheet/glass + var/obj/item/stack/sheet/glass_type = /obj/item/stack/sheet/glass + var/cleanable_type = /obj/effect/decal/cleanable/glass var/glass_amount = 1 var/mutable_appearance/crack_overlay can_be_unanchored = TRUE @@ -277,12 +278,15 @@ /obj/structure/window/proc/spawnDebris(location) . = list() - . += new /obj/item/shard(location) - . += new /obj/effect/decal/cleanable/glass(location) + var/shard = initial(glass_type.shard_type) + if(shard) + . += new shard(location) + if (fulltile) + . += new shard(location) + if(cleanable_type) + . += new cleanable_type(location) if (reinf) . += new /obj/item/stack/rods(location, (fulltile ? 2 : 1)) - if (fulltile) - . += new /obj/item/shard(location) /obj/structure/window/proc/can_be_rotated(mob/user,rotation_type) if (get_dist(src,user) > 1) @@ -416,17 +420,9 @@ max_integrity = 150 explosion_block = 1 glass_type = /obj/item/stack/sheet/plasmaglass + cleanable_type = /obj/effect/decal/cleanable/glass/plasma rad_insulation = RAD_NO_INSULATION -/obj/structure/window/plasma/spawnDebris(location) - . = list() - . += new /obj/item/shard/plasma(location) - . += new /obj/effect/decal/cleanable/glass/plasma(location) - if (reinf) - . += new /obj/item/stack/rods(location, (fulltile ? 2 : 1)) - if (fulltile) - . += new /obj/item/shard/plasma(location) - /obj/structure/window/plasma/spawner/east dir = EAST @@ -662,11 +658,6 @@ level = 3 glass_amount = 2 -/obj/structure/window/reinforced/clockwork/spawnDebris(location) - . = list() - for(var/i in 1 to 4) - . += new /obj/item/clockwork/alloy_shards/medium/gear_bit(location) - /obj/structure/window/reinforced/clockwork/Initialize(mapload, direct) made_glow = TRUE new /obj/effect/temp_visual/ratvar/window(get_turf(src)) diff --git a/code/modules/power/solar.dm b/code/modules/power/solar.dm index 18cd6d22a6..b12bbe59b8 100644 --- a/code/modules/power/solar.dm +++ b/code/modules/power/solar.dm @@ -19,6 +19,8 @@ var/ndir = SOUTH // target dir var/turn_angle = 0 var/obj/machinery/power/solar_control/control = null + var/obj/item/solar_assembly/assembly + var/efficiency = 1 /obj/machinery/power/solar/Initialize(mapload, obj/item/solar_assembly/S) . = ..() @@ -45,14 +47,13 @@ /obj/machinery/power/solar/proc/Make(obj/item/solar_assembly/S) if(!S) - S = new /obj/item/solar_assembly(src) - S.glass_type = /obj/item/stack/sheet/glass + S = new /obj/item/solar_assembly + S.glass_type = new /obj/item/stack/sheet/glass(null, 2) S.anchored = TRUE else - S.forceMove(src) - if(S.glass_type == /obj/item/stack/sheet/rglass) //if the panel is in reinforced glass - max_integrity *= 2 //this need to be placed here, because panels already on the map don't have an assembly linked to - obj_integrity = max_integrity + S.moveToNullspace() + S.glass_type.on_solar_construction(src) + obj_integrity = max_integrity update_icon() /obj/machinery/power/solar/crowbar_act(mob/user, obj/item/I) @@ -85,14 +86,14 @@ /obj/machinery/power/solar/deconstruct(disassembled = TRUE) if(!(flags_1 & NODECONSTRUCT_1)) if(disassembled) - var/obj/item/solar_assembly/S = locate() in src - if(S) - S.forceMove(loc) - S.give_glass(stat & BROKEN) + if(assembly) + assembly.forceMove(loc) + assembly.give_glass(stat & BROKEN) else playsound(src, "shatter", 70, 1) - new /obj/item/shard(src.loc) - new /obj/item/shard(src.loc) + var/shard = assembly?.glass_type ? assembly.glass_type.shard_type : /obj/item/shard + new shard(loc) + new shard(loc) qdel(src) @@ -131,7 +132,7 @@ if(powernet == control.powernet)//check if the panel is still connected to the computer if(obscured) //get no light from the sun, so don't generate power return - var/sgen = SOLARGENRATE * sunfrac + var/sgen = SOLARGENRATE * sunfrac * efficiency add_avail(sgen) control.gen += sgen else //if we're no longer on the same powernet, remove from control computer @@ -186,19 +187,23 @@ w_class = WEIGHT_CLASS_BULKY // Pretty big! anchored = FALSE var/tracker = 0 - var/glass_type = null + var/obj/item/stack/sheet/glass_type + var/static/list/allowed_sheets = typecacheof(list(/obj/item/stack/sheet/glass, /obj/item/stack/sheet/rglass, + /obj/item/stack/sheet/plasmaglass, /obj/item/stack/sheet/plasmarglass, + /obj/item/stack/sheet/titaniumglass, /obj/item/stack/sheet/plastitaniumglass)) // Give back the glass type we were supplied with /obj/item/solar_assembly/proc/give_glass(device_broken) var/atom/Tsec = drop_location() if(device_broken) - new /obj/item/shard(Tsec) - new /obj/item/shard(Tsec) + var/shard = glass_type ? glass_type.shard_type : /obj/item/shard + if(shard) + new shard(Tsec) + new shard(Tsec) else if(glass_type) - new glass_type(Tsec, 2) + forceMove(glass_type, Tsec) glass_type = null - /obj/item/solar_assembly/attackby(obj/item/W, mob/user, params) if(istype(W, /obj/item/wrench) && isturf(loc)) if(isinspace()) @@ -213,13 +218,14 @@ W.play_tool_sound(src, 75) return 1 - if(istype(W, /obj/item/stack/sheet/glass) || istype(W, /obj/item/stack/sheet/rglass)) + if(is_type_in_typecache(W, allowed_sheets)) if(!anchored) to_chat(user, "You need to secure the assembly before you can add glass.") return var/obj/item/stack/sheet/S = W - if(S.use(2)) - glass_type = W.type + var/obj/item/stack/sheet/G = S.change_stack(null, 2) + if(G) + glass_type = G playsound(src.loc, 'sound/machines/click.ogg', 50, 1) user.visible_message("[user] places the glass on the solar assembly.", "You place the glass on the solar assembly.") if(tracker) diff --git a/code/modules/power/tracker.dm b/code/modules/power/tracker.dm index 5075e7656d..c25ece3594 100644 --- a/code/modules/power/tracker.dm +++ b/code/modules/power/tracker.dm @@ -16,6 +16,7 @@ var/id = 0 var/sun_angle = 0 // sun angle as set by sun datum var/obj/machinery/power/solar_control/control = null + var/obj/item/solar_assembly/assembly /obj/machinery/power/tracker/Initialize(mapload, obj/item/solar_assembly/S) . = ..() @@ -42,11 +43,12 @@ /obj/machinery/power/tracker/proc/Make(obj/item/solar_assembly/S) if(!S) - S = new /obj/item/solar_assembly(src) - S.glass_type = /obj/item/stack/sheet/glass - S.tracker = 1 + S = new /obj/item/solar_assembly + S.glass_type = new /obj/item/stack/sheet/glass(null, 2) + S.tracker = TRUE S.anchored = TRUE - S.forceMove(src) + else + S.moveToNullspace() update_icon() //updates the tracker icon and the facing angle for the control computer @@ -77,14 +79,14 @@ /obj/machinery/power/solar/deconstruct(disassembled = TRUE) if(!(flags_1 & NODECONSTRUCT_1)) if(disassembled) - var/obj/item/solar_assembly/S = locate() in src - if(S) - S.forceMove(loc) - S.give_glass(stat & BROKEN) + if(assembly) + assembly.forceMove(loc) + assembly.give_glass(stat & BROKEN) else playsound(src, "shatter", 70, 1) - new /obj/item/shard(src.loc) - new /obj/item/shard(src.loc) + var/shard = assembly?.glass_type ? assembly.glass_type.shard_type : /obj/item/shard + new shard(loc) + new shard(loc) qdel(src) // Tracker Electronic From c93f16e4d4a5e56c8b40ed330ead31abdedfbde9 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Tue, 21 Jan 2020 00:45:51 +0100 Subject: [PATCH 086/123] Unused variable. --- code/game/objects/items/stacks/sheets/sheets.dm | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/code/game/objects/items/stacks/sheets/sheets.dm b/code/game/objects/items/stacks/sheets/sheets.dm index 03c3dcc3c9..b7ab760659 100644 --- a/code/game/objects/items/stacks/sheets/sheets.dm +++ b/code/game/objects/items/stacks/sheets/sheets.dm @@ -17,14 +17,13 @@ var/loom_result //result from pulling on the loom var/pull_effort = 0 //amount of delay when pulling on the loom var/shard_type // the shard debris typepath left over by solar panels and windows etc. - var/solars_multiplier = 1 /** * Called on the glass sheet upon solar construction (duh): * Different glass sheets can modify different stas/vars, such as obj_integrity or efficiency * and possibly extra effects if you wish to code them. - * Keep in mind the solars' max_integrity is set equal to the obj_integrity by the end of the initialization, - * so you don't have to do so here. + * Keep in mind the solars' max_integrity is set equal to the obj_integrity later, + * so you won't have to do so here. */ /obj/item/stack/sheet/proc/on_solar_construction(/obj/machinery/power/solar/S) return From ad2db72b0d5275a19b01c0980ca60221b77c8874 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Mon, 20 Jan 2020 18:02:56 -0600 Subject: [PATCH 087/123] Automatic changelog generation for PR #10635 [ci skip] --- html/changelogs/AutoChangeLog-pr-10635.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-10635.yml diff --git a/html/changelogs/AutoChangeLog-pr-10635.yml b/html/changelogs/AutoChangeLog-pr-10635.yml new file mode 100644 index 0000000000..66c90808d6 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10635.yml @@ -0,0 +1,4 @@ +author: "Hatterhat" +delete-after: True +changes: + - rscdel: "Forensic scanner removed from Advanced Biotechnology node." From fae0d6fe3f1bf0cab9ca42c14ad1f51fa1048686 Mon Sep 17 00:00:00 2001 From: Hatterhat <31829017+Hatterhat@users.noreply.github.com> Date: Mon, 20 Jan 2020 18:06:07 -0600 Subject: [PATCH 088/123] remember when i hoped i didnt forget something --- code/modules/research/designs/medical_designs.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/modules/research/designs/medical_designs.dm b/code/modules/research/designs/medical_designs.dm index 99cb5bf8ab..bef25456ca 100644 --- a/code/modules/research/designs/medical_designs.dm +++ b/code/modules/research/designs/medical_designs.dm @@ -307,6 +307,8 @@ build_type = PROTOLATHE build_path = /obj/item/defibrillator/compact materials = list(MAT_METAL = 16000, MAT_GLASS = 8000, MAT_SILVER = 6000, MAT_GOLD = 3000) + category = list("Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL ///////////////////////////////////////// //////////Cybernetic Implants//////////// From efe3ebdb535d7f0c4c826f23ca018f4d16fb32ef Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Mon, 20 Jan 2020 17:50:07 -0700 Subject: [PATCH 089/123] bet --- .../food_and_drinks/recipes/food_mixtures.dm | 28 ++++---- code/modules/reagents/chemistry/recipes.dm | 2 +- .../reagents/chemistry/recipes/others.dm | 68 +++++++++---------- .../chemistry/recipes/slime_extracts.dm | 16 ++--- 4 files changed, 57 insertions(+), 57 deletions(-) diff --git a/code/modules/food_and_drinks/recipes/food_mixtures.dm b/code/modules/food_and_drinks/recipes/food_mixtures.dm index 130640ee8a..fd332a38df 100644 --- a/code/modules/food_and_drinks/recipes/food_mixtures.dm +++ b/code/modules/food_and_drinks/recipes/food_mixtures.dm @@ -15,9 +15,9 @@ required_catalysts = list(/datum/reagent/consumable/enzyme = 5) mob_react = FALSE -/datum/chemical_reaction/tofu/on_reaction(datum/reagents/holder, created_volume) +/datum/chemical_reaction/tofu/on_reaction(datum/reagents/holder, multiplier) var/location = get_turf(holder.my_atom) - for(var/i = 1, i <= created_volume, i++) + for(var/i = 1, i <= multiplier, i++) new /obj/item/reagent_containers/food/snacks/tofu(location) return @@ -26,9 +26,9 @@ id = "chocolate_bar" required_reagents = list(/datum/reagent/consumable/soymilk = 2, /datum/reagent/consumable/coco = 2, /datum/reagent/consumable/sugar = 2) -/datum/chemical_reaction/chocolate_bar/on_reaction(datum/reagents/holder, created_volume) +/datum/chemical_reaction/chocolate_bar/on_reaction(datum/reagents/holder, multiplier) var/location = get_turf(holder.my_atom) - for(var/i = 1, i <= created_volume, i++) + for(var/i = 1, i <= multiplier, i++) new /obj/item/reagent_containers/food/snacks/chocolatebar(location) return @@ -39,9 +39,9 @@ required_reagents = list(/datum/reagent/consumable/milk/chocolate_milk = 4, /datum/reagent/consumable/sugar = 2) mob_react = FALSE -/datum/chemical_reaction/chocolate_bar2/on_reaction(datum/reagents/holder, created_volume) +/datum/chemical_reaction/chocolate_bar2/on_reaction(datum/reagents/holder, multiplier) var/location = get_turf(holder.my_atom) - for(var/i = 1, i <= created_volume, i++) + for(var/i = 1, i <= multiplier, i++) new /obj/item/reagent_containers/food/snacks/chocolatebar(location) return @@ -90,9 +90,9 @@ required_reagents = list(/datum/reagent/consumable/milk = 40) required_catalysts = list(/datum/reagent/consumable/enzyme = 5) -/datum/chemical_reaction/cheesewheel/on_reaction(datum/reagents/holder, created_volume) +/datum/chemical_reaction/cheesewheel/on_reaction(datum/reagents/holder, multiplier) var/location = get_turf(holder.my_atom) - for(var/i = 1, i <= created_volume, i++) + for(var/i = 1, i <= multiplier, i++) new /obj/item/reagent_containers/food/snacks/store/cheesewheel(location) /datum/chemical_reaction/synthmeat @@ -101,9 +101,9 @@ required_reagents = list(/datum/reagent/blood = 5, /datum/reagent/medicine/cryoxadone = 1) mob_react = FALSE -/datum/chemical_reaction/synthmeat/on_reaction(datum/reagents/holder, created_volume) +/datum/chemical_reaction/synthmeat/on_reaction(datum/reagents/holder, multiplier) var/location = get_turf(holder.my_atom) - for(var/i = 1, i <= created_volume, i++) + for(var/i = 1, i <= multiplier, i++) new /obj/item/reagent_containers/food/snacks/meat/slab/synthmeat(location) /datum/chemical_reaction/hot_ramen @@ -137,9 +137,9 @@ required_reagents = list(/datum/reagent/water = 10, /datum/reagent/consumable/flour = 15) mix_message = "The ingredients form a dough." -/datum/chemical_reaction/dough/on_reaction(datum/reagents/holder, created_volume) +/datum/chemical_reaction/dough/on_reaction(datum/reagents/holder, multiplier) var/location = get_turf(holder.my_atom) - for(var/i = 1, i <= created_volume, i++) + for(var/i = 1, i <= multiplier, i++) new /obj/item/reagent_containers/food/snacks/dough(location) /datum/chemical_reaction/cakebatter @@ -148,9 +148,9 @@ required_reagents = list(/datum/reagent/consumable/eggyolk = 15, /datum/reagent/consumable/flour = 15, /datum/reagent/consumable/sugar = 5) mix_message = "The ingredients form a cake batter." -/datum/chemical_reaction/cakebatter/on_reaction(datum/reagents/holder, created_volume) +/datum/chemical_reaction/cakebatter/on_reaction(datum/reagents/holder, multiplier) var/location = get_turf(holder.my_atom) - for(var/i = 1, i <= created_volume, i++) + for(var/i = 1, i <= multiplier, i++) new /obj/item/reagent_containers/food/snacks/cakebatter(location) /datum/chemical_reaction/cakebatter/vegan diff --git a/code/modules/reagents/chemistry/recipes.dm b/code/modules/reagents/chemistry/recipes.dm index a915087428..98d66a2b1b 100644 --- a/code/modules/reagents/chemistry/recipes.dm +++ b/code/modules/reagents/chemistry/recipes.dm @@ -36,7 +36,7 @@ var/PurityMin = 0.15 //If purity is below 0.15, it explodes too. Set to 0 to disable this. -/datum/chemical_reaction/proc/on_reaction(datum/reagents/holder, created_volume, specialreact) +/datum/chemical_reaction/proc/on_reaction(datum/reagents/holder, multiplier, specialreact) return //I recommend you set the result amount to the total volume of all components. diff --git a/code/modules/reagents/chemistry/recipes/others.dm b/code/modules/reagents/chemistry/recipes/others.dm index 26b39fb3b0..b463b5758b 100644 --- a/code/modules/reagents/chemistry/recipes/others.dm +++ b/code/modules/reagents/chemistry/recipes/others.dm @@ -53,9 +53,9 @@ required_reagents = list(/datum/reagent/iron = 5, /datum/reagent/consumable/frostoil = 5, /datum/reagent/toxin/plasma = 20) mob_react = FALSE -/datum/chemical_reaction/plasmasolidification/on_reaction(datum/reagents/holder, created_volume) +/datum/chemical_reaction/plasmasolidification/on_reaction(datum/reagents/holder, multiplier) var/location = get_turf(holder.my_atom) - for(var/i = 1, i <= created_volume, i++) + for(var/i = 1, i <= multiplier, i++) new /obj/item/stack/sheet/mineral/plasma(location) /datum/chemical_reaction/goldsolidification @@ -64,9 +64,9 @@ required_reagents = list(/datum/reagent/consumable/frostoil = 5, /datum/reagent/gold = 20, /datum/reagent/iron = 1) mob_react = FALSE -/datum/chemical_reaction/goldsolidification/on_reaction(datum/reagents/holder, created_volume) +/datum/chemical_reaction/goldsolidification/on_reaction(datum/reagents/holder, multiplier) var/location = get_turf(holder.my_atom) - for(var/i = 1, i <= created_volume, i++) + for(var/i = 1, i <= multiplier, i++) new /obj/item/stack/sheet/mineral/gold(location) /datum/chemical_reaction/capsaicincondensation @@ -88,9 +88,9 @@ results = list(/datum/reagent/consumable/mustard = 5) required_reagents = list(/datum/reagent/mustardgrind = 1, /datum/reagent/water = 10, /datum/reagent/consumable/enzyme= 1) -/datum/chemical_reaction/soapification/on_reaction(datum/reagents/holder, created_volume) +/datum/chemical_reaction/soapification/on_reaction(datum/reagents/holder, multiplier) var/location = get_turf(holder.my_atom) - for(var/i = 1, i <= created_volume, i++) + for(var/i = 1, i <= multiplier, i++) new /obj/item/soap/homemade(location) /datum/chemical_reaction/candlefication @@ -100,9 +100,9 @@ required_temp = 374 mob_react = FALSE -/datum/chemical_reaction/candlefication/on_reaction(datum/reagents/holder, created_volume) +/datum/chemical_reaction/candlefication/on_reaction(datum/reagents/holder, multiplier) var/location = get_turf(holder.my_atom) - for(var/i = 1, i <= created_volume, i++) + for(var/i = 1, i <= multiplier, i++) new /obj/item/candle(location) /datum/chemical_reaction/meatification @@ -111,9 +111,9 @@ required_reagents = list(/datum/reagent/liquidgibs = 10, /datum/reagent/consumable/nutriment = 10, /datum/reagent/carbon = 10) mob_react = FALSE -/datum/chemical_reaction/meatification/on_reaction(datum/reagents/holder, created_volume) +/datum/chemical_reaction/meatification/on_reaction(datum/reagents/holder, multiplier) var/location = get_turf(holder.my_atom) - for(var/i = 1, i <= created_volume, i++) + for(var/i = 1, i <= multiplier, i++) new /obj/item/reagent_containers/food/snacks/meat/slab/meatproduct(location) return @@ -146,9 +146,9 @@ mob_react = FALSE required_temp = 300 -/datum/chemical_reaction/fermis_plush/on_reaction(datum/reagents/holder, created_volume) +/datum/chemical_reaction/fermis_plush/on_reaction(datum/reagents/holder, multiplier) var/location = get_turf(holder.my_atom) - for(var/i = 1, i <= created_volume, i+=10) + for(var/i = 1, i <= multiplier, i+=10) new /obj/item/toy/plush/catgirl/fermis(location) ////////////////////////////////// VIROLOGY ////////////////////////////////////////// @@ -227,13 +227,13 @@ var/level_min = 1 var/level_max = 2 -/datum/chemical_reaction/mix_virus/on_reaction(datum/reagents/holder, created_volume) +/datum/chemical_reaction/mix_virus/on_reaction(datum/reagents/holder, multiplier) var/datum/reagent/blood/B = locate(/datum/reagent/blood) in holder.reagent_list if(B && B.data) var/datum/disease/advance/D = locate(/datum/disease/advance) in B.data["viruses"] if(D) - for(var/i in 1 to min(created_volume, 5)) + for(var/i in 1 to min(multiplier, 5)) D.Evolve(level_min, level_max) /datum/chemical_reaction/mix_virus/mix_virus_2 @@ -330,12 +330,12 @@ required_reagents = list(/datum/reagent/medicine/synaptizine = 1) required_catalysts = list(/datum/reagent/blood = 1) -/datum/chemical_reaction/mix_virus/rem_virus/on_reaction(datum/reagents/holder, created_volume) +/datum/chemical_reaction/mix_virus/rem_virus/on_reaction(datum/reagents/holder, multiplier) var/datum/reagent/blood/B = locate(/datum/reagent/blood) in holder.reagent_list if(B && B.data) var/datum/disease/advance/D = locate(/datum/disease/advance) in B.data["viruses"] if(D) - for(var/i in 1 to min(created_volume, 5)) + for(var/i in 1 to min(multiplier, 5)) D.Devolve() /datum/chemical_reaction/mix_virus/neuter_virus @@ -344,12 +344,12 @@ required_reagents = list(/datum/reagent/toxin/formaldehyde = 1) required_catalysts = list(/datum/reagent/blood = 1) -/datum/chemical_reaction/mix_virus/neuter_virus/on_reaction(datum/reagents/holder, created_volume) +/datum/chemical_reaction/mix_virus/neuter_virus/on_reaction(datum/reagents/holder, multiplier) var/datum/reagent/blood/B = locate(/datum/reagent/blood) in holder.reagent_list if(B && B.data) var/datum/disease/advance/D = locate(/datum/disease/advance) in B.data["viruses"] if(D) - for(var/i in 1 to min(created_volume, 5)) + for(var/i in 1 to min(multiplier, 5)) D.Neuter() ////////////////////////////////// foam and foam precursor /////////////////////////////////////////////////// @@ -367,12 +367,12 @@ required_reagents = list(/datum/reagent/fluorosurfactant = 1, /datum/reagent/water = 1) mob_react = FALSE -/datum/chemical_reaction/foam/on_reaction(datum/reagents/holder, created_volume) +/datum/chemical_reaction/foam/on_reaction(datum/reagents/holder, multiplier) var/location = get_turf(holder.my_atom) for(var/mob/M in viewers(5, location)) to_chat(M, "The solution spews out foam!") var/datum/effect_system/foam_spread/s = new() - s.set_up(created_volume*2, location, holder) + s.set_up(multiplier*2, location, holder) s.start() holder.clear_reagents() return @@ -384,14 +384,14 @@ required_reagents = list(/datum/reagent/aluminium = 3, /datum/reagent/foaming_agent = 1, /datum/reagent/toxin/acid/fluacid = 1) mob_react = FALSE -/datum/chemical_reaction/metalfoam/on_reaction(datum/reagents/holder, created_volume) +/datum/chemical_reaction/metalfoam/on_reaction(datum/reagents/holder, multiplier) var/location = get_turf(holder.my_atom) for(var/mob/M in viewers(5, location)) to_chat(M, "The solution spews out a metallic foam!") var/datum/effect_system/foam_spread/metal/s = new() - s.set_up(created_volume*5, location, holder, 1) + s.set_up(multiplier*5, location, holder, 1) s.start() holder.clear_reagents() @@ -401,11 +401,11 @@ required_reagents = list(/datum/reagent/aluminium = 3, /datum/reagent/smart_foaming_agent = 1, /datum/reagent/toxin/acid/fluacid = 1) mob_react = TRUE -/datum/chemical_reaction/smart_foam/on_reaction(datum/reagents/holder, created_volume) +/datum/chemical_reaction/smart_foam/on_reaction(datum/reagents/holder, multiplier) var/turf/location = get_turf(holder.my_atom) location.visible_message("The solution spews out metallic foam!") var/datum/effect_system/foam_spread/metal/smart/s = new() - s.set_up(created_volume * 5, location, holder, TRUE) + s.set_up(multiplier * 5, location, holder, TRUE) s.start() holder.clear_reagents() @@ -415,12 +415,12 @@ required_reagents = list(/datum/reagent/iron = 3, /datum/reagent/foaming_agent = 1, /datum/reagent/toxin/acid/fluacid = 1) mob_react = FALSE -/datum/chemical_reaction/ironfoam/on_reaction(datum/reagents/holder, created_volume) +/datum/chemical_reaction/ironfoam/on_reaction(datum/reagents/holder, multiplier) var/location = get_turf(holder.my_atom) for(var/mob/M in viewers(5, location)) to_chat(M, "The solution spews out a metallic foam!") var/datum/effect_system/foam_spread/metal/s = new() - s.set_up(created_volume*5, location, holder, 2) + s.set_up(multiplier*5, location, holder, 2) s.start() holder.clear_reagents() @@ -521,8 +521,8 @@ required_reagents = list(/datum/reagent/medicine/strange_reagent = 1, /datum/reagent/medicine/synthflesh = 1, /datum/reagent/blood = 1) required_temp = 374 -/datum/chemical_reaction/life/on_reaction(datum/reagents/holder, created_volume) - chemical_mob_spawn(holder, rand(1, round(created_volume, 1)), "Life") // Lol. +/datum/chemical_reaction/life/on_reaction(datum/reagents/holder, multiplier) + chemical_mob_spawn(holder, rand(1, round(multiplier, 1)), "Life") // Lol. //This is missing, I'm adding it back (see tgwiki). Not sure why we don't have it. /datum/chemical_reaction/life_friendly @@ -531,8 +531,8 @@ required_reagents = list(/datum/reagent/medicine/strange_reagent = 1, /datum/reagent/medicine/synthflesh = 1, /datum/reagent/consumable/sugar = 1) required_temp = 374 -/datum/chemical_reaction/life_friendly/on_reaction(datum/reagents/holder, created_volume) - chemical_mob_spawn(holder, rand(1, round(created_volume, 1)), "Life (friendly)", FRIENDLY_SPAWN) //Pray for cute cats +/datum/chemical_reaction/life_friendly/on_reaction(datum/reagents/holder, multiplier) + chemical_mob_spawn(holder, rand(1, round(multiplier, 1)), "Life (friendly)", FRIENDLY_SPAWN) //Pray for cute cats /datum/chemical_reaction/corgium name = "corgium" @@ -540,9 +540,9 @@ required_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/colorful_reagent = 1, /datum/reagent/medicine/strange_reagent = 1, /datum/reagent/blood = 1) required_temp = 374 -/datum/chemical_reaction/corgium/on_reaction(datum/reagents/holder, created_volume) +/datum/chemical_reaction/corgium/on_reaction(datum/reagents/holder, multiplier) var/location = get_turf(holder.my_atom) - for(var/i = rand(1, created_volume), i <= created_volume, i++) // More lulz. + for(var/i = rand(1, multiplier), i <= multiplier, i++) // More lulz. new /mob/living/simple_animal/pet/dog/corgi(location) ..() @@ -600,9 +600,9 @@ required_reagents = list(/datum/reagent/oil = 5, /datum/reagent/toxin/acid = 2, /datum/reagent/ash = 3) required_temp = 374 //lazily consistent with soap & other crafted objects generically created with heat. -/datum/chemical_reaction/plastic_polymers/on_reaction(datum/reagents/holder, created_volume) +/datum/chemical_reaction/plastic_polymers/on_reaction(datum/reagents/holder, multiplier) var/location = get_turf(holder.my_atom) - for(var/i in 1 to created_volume) + for(var/i in 1 to multiplier) new /obj/item/stack/sheet/plastic(location) /datum/chemical_reaction/pax diff --git a/code/modules/reagents/chemistry/recipes/slime_extracts.dm b/code/modules/reagents/chemistry/recipes/slime_extracts.dm index 5228d4a281..2890d02d09 100644 --- a/code/modules/reagents/chemistry/recipes/slime_extracts.dm +++ b/code/modules/reagents/chemistry/recipes/slime_extracts.dm @@ -290,7 +290,7 @@ required_container = /obj/item/slime_extract/yellow required_other = TRUE -/datum/chemical_reaction/slime/slimeoverload/on_reaction(datum/reagents/holder, created_volume) +/datum/chemical_reaction/slime/slimeoverload/on_reaction(datum/reagents/holder, multiplier) empulse(get_turf(holder.my_atom), 3, 7) ..() @@ -301,7 +301,7 @@ required_container = /obj/item/slime_extract/yellow required_other = TRUE -/datum/chemical_reaction/slime/slimecell/on_reaction(datum/reagents/holder, created_volume) +/datum/chemical_reaction/slime/slimecell/on_reaction(datum/reagents/holder, multiplier) new /obj/item/stock_parts/cell/high/slime(get_turf(holder.my_atom)) ..() @@ -505,7 +505,7 @@ required_container = /obj/item/slime_extract/bluespace required_other = TRUE -/datum/chemical_reaction/slime/slimefloor2/on_reaction(datum/reagents/holder, created_volume) +/datum/chemical_reaction/slime/slimefloor2/on_reaction(datum/reagents/holder, multiplier) new /obj/item/stack/tile/bluespace(get_turf(holder.my_atom), 25) ..() @@ -517,7 +517,7 @@ required_container = /obj/item/slime_extract/bluespace required_other = TRUE -/datum/chemical_reaction/slime/slimecrystal/on_reaction(datum/reagents/holder, created_volume) +/datum/chemical_reaction/slime/slimecrystal/on_reaction(datum/reagents/holder, multiplier) var/obj/item/stack/ore/bluespace_crystal/BC = new (get_turf(holder.my_atom)) BC.visible_message("The [BC.name] appears out of thin air!") ..() @@ -529,7 +529,7 @@ required_container = /obj/item/slime_extract/bluespace required_other = TRUE -/datum/chemical_reaction/slime/slimeradio/on_reaction(datum/reagents/holder, created_volume) +/datum/chemical_reaction/slime/slimeradio/on_reaction(datum/reagents/holder, multiplier) new /obj/item/slimepotion/slime/slimeradio(get_turf(holder.my_atom)) ..() @@ -626,8 +626,8 @@ required_other = TRUE required_container = /obj/item/slime_extract/rainbow -/datum/chemical_reaction/slime/slimeRNG/on_reaction(datum/reagents/holder, created_volume) - if(created_volume >= 5) +/datum/chemical_reaction/slime/slimeRNG/on_reaction(datum/reagents/holder, multiplier) + if(multiplier >= 5) var/obj/item/grenade/clusterbuster/slime/S = new (get_turf(holder.my_atom)) S.visible_message("Infused with plasma, the core begins to expand uncontrollably!") S.icon_state = "[S.base_state]_active" @@ -646,7 +646,7 @@ required_other = TRUE required_container = /obj/item/slime_extract/rainbow -/datum/chemical_reaction/slime/slimebomb/on_reaction(datum/reagents/holder, created_volume) +/datum/chemical_reaction/slime/slimebomb/on_reaction(datum/reagents/holder, multiplier) var/obj/item/grenade/clusterbuster/slime/volatile/S = new (holder.my_atom.loc) S.visible_message("Infused with slime jelly, the core begins to expand uncontrollably!") S.icon_state = "[S.base_state]_active" From 221e05b3c8f5a607090b8f23e9d79c17b7310bd9 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Mon, 20 Jan 2020 17:58:58 -0700 Subject: [PATCH 090/123] add line --- code/game/objects/items/devices/PDA/PDA.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index 14f2407798..121dececd9 100644 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -835,7 +835,7 @@ GLOBAL_LIST_EMPTY(PDAs) hrefstart = "" hrefend = "" - to_chat(L, "[icon2html(src)] Message from [hrefstart][signal.data["name"]] ([signal.data["job"]])[hrefend], [signal.format_message(TRUE)] (Reply)") + to_chat(L, "[icon2html(src)] Message from [hrefstart][signal.data["name"]] ([signal.data["job"]])[hrefend], [signal.format_message(TRUE)] (Reply) (BLOCK/UNBLOCK)") update_icon(TRUE) From 5abc1104c07aeaa093f6ae94f77f769e5e94ae81 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Mon, 20 Jan 2020 18:03:54 -0700 Subject: [PATCH 091/123] ok --- code/game/objects/items/devices/PDA/PDA.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index 121dececd9..f849c99ec2 100644 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -390,7 +390,7 @@ GLOBAL_LIST_EMPTY(PDAs) if (P == src) continue if(P.owner in blocked_pdas) - dat += "
  • (BLOCKED - CLICK TO UNBLOCK) [P.owner]" + dat += "
  • (BLOCKED - CLICK TO UNBLOCK) [P]" else dat += "
  • [P]" if(cartridge) From 9cb11b44140e73ea82c684196799e3a75bcec457 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Mon, 20 Jan 2020 19:13:32 -0600 Subject: [PATCH 092/123] Automatic changelog generation for PR #10608 [ci skip] --- html/changelogs/AutoChangeLog-pr-10608.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-10608.yml diff --git a/html/changelogs/AutoChangeLog-pr-10608.yml b/html/changelogs/AutoChangeLog-pr-10608.yml new file mode 100644 index 0000000000..1c2015813e --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10608.yml @@ -0,0 +1,4 @@ +author: "kevinz000" +delete-after: True +changes: + - rscadd: "you can now block people on your PDA" From 437392e0d3ae3eb190e3ee574952fc692dfc950d Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Mon, 20 Jan 2020 19:17:41 -0600 Subject: [PATCH 093/123] Automatic changelog generation for PR #10588 [ci skip] --- html/changelogs/AutoChangeLog-pr-10588.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-10588.yml diff --git a/html/changelogs/AutoChangeLog-pr-10588.yml b/html/changelogs/AutoChangeLog-pr-10588.yml new file mode 100644 index 0000000000..d3771298b2 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10588.yml @@ -0,0 +1,4 @@ +author: "PersianXerxes" +delete-after: True +changes: + - tweak: "Reduces the range of the forcefield projector from 7 tiles to 2 tiles." From d7192f69447eb54738a87c06d20242fb53f7f4e5 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Mon, 20 Jan 2020 19:26:28 -0600 Subject: [PATCH 094/123] Automatic changelog generation for PR #10468 [ci skip] --- html/changelogs/AutoChangeLog-pr-10468.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-10468.yml diff --git a/html/changelogs/AutoChangeLog-pr-10468.yml b/html/changelogs/AutoChangeLog-pr-10468.yml new file mode 100644 index 0000000000..055411d0f2 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10468.yml @@ -0,0 +1,4 @@ +author: "kevinz000" +delete-after: True +changes: + - rscadd: "Ghosting no longer stops abductors from using you." From 25050d7bb65c49c4b3a7dc7b9501bf96fec0582c Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Mon, 20 Jan 2020 20:37:44 -0600 Subject: [PATCH 095/123] Automatic changelog generation for PR #10619 [ci skip] --- html/changelogs/AutoChangeLog-pr-10619.yml | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-10619.yml diff --git a/html/changelogs/AutoChangeLog-pr-10619.yml b/html/changelogs/AutoChangeLog-pr-10619.yml new file mode 100644 index 0000000000..acb76034ac --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10619.yml @@ -0,0 +1,7 @@ +author: "Seris02" +delete-after: True +changes: + - tweak: "conveyor belt now are stacks instead of single item" + - tweak: "conveyor crate has 30 belts" + - tweak: "printing a conveyor costs 3000 metal" + - rscadd: "you can press the conveyor switch in hand to link any not deployed belts to it" From ed5172f9ca776b5ba8755328e0d183946e06ad2d Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Mon, 20 Jan 2020 23:17:58 -0700 Subject: [PATCH 096/123] changes --- code/modules/projectiles/projectile.dm | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index cc778bcf05..55a75e1688 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -57,6 +57,8 @@ var/muzzle_type var/impact_type + var/turf/last_angle_set_hitscan_store //last turf we stored a hitscan segment while changing angles. without this you'll have potentially hundreds of segments from a homing projectile or something. + //Fancy hitscan lighting effects! var/hitscan_light_intensity = 1.5 var/hitscan_light_range = 0.75 @@ -410,12 +412,16 @@ START_PROCESSING(SSprojectiles, src) pixel_move(1, FALSE) //move it now! -/obj/item/projectile/proc/setAngle(new_angle) //wrapper for overrides. +/obj/item/projectile/proc/setAngle(new_angle, hitscan_store_segment = TRUE) //wrapper for overrides. Angle = new_angle if(!nondirectional_sprite) var/matrix/M = new M.Turn(Angle) transform = M + if(fired && hitscan && trajectory && isloc(loc) && (loc != last_angle_set_hitscan_store)) + last_angle_set_hitscan_store = loc + var/datum/point/pcache = trajectory.copy_to() + store_hitscan_collision(pcache) if(trajectory) trajectory.set_angle(new_angle) return TRUE @@ -462,7 +468,7 @@ beam_segments[beam_index] = null //record start. /obj/item/projectile/proc/process_hitscan() - var/safety = range * 3 + var/safety = range * 10 record_hitscan_start(RETURN_POINT_VECTOR_INCREMENT(src, Angle, MUZZLE_EFFECT_PIXEL_INCREMENT, 1)) while(loc && !QDELETED(src)) if(paused) @@ -647,7 +653,7 @@ /obj/item/projectile/proc/cleanup_beam_segments() QDEL_LIST_ASSOC(beam_segments) beam_segments = list() - qdel(beam_index) + QDEL_NULL(beam_index) /obj/item/projectile/proc/finalize_hitscan_and_generate_tracers(impacting = TRUE) if(trajectory && beam_index) From 1ae106cca25427f516f15f1ebc4ccc942262a698 Mon Sep 17 00:00:00 2001 From: r4d6 Date: Tue, 21 Jan 2020 09:23:34 -0500 Subject: [PATCH 097/123] Fixes --- _maps/map_files/BoxStation/BoxStation.dmm | 8 ++------ _maps/map_files/MetaStation/MetaStation.dmm | 3 ++- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm index a175c2fc30..56126c6e37 100644 --- a/_maps/map_files/BoxStation/BoxStation.dmm +++ b/_maps/map_files/BoxStation/BoxStation.dmm @@ -53620,10 +53620,6 @@ }, /turf/open/floor/plasteel, /area/engine/gravity_generator) -"eZP" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/space/basic, -/area/hallway/secondary/entry) "fbm" = ( /obj/structure/chair/comfy/brown{ dir = 4 @@ -67472,9 +67468,9 @@ aaa aaa aaa aaf -eZP +awW auP -eZP +awW aaf vZs aaa diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index 5dedc7535c..7fbd2921e8 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -47211,6 +47211,7 @@ dir = 4 }, /obj/item/storage/box/lights/mixed, +/obj/structure/closet/firecloset, /turf/open/floor/plating{ icon_state = "platingdmg2" }, @@ -96215,7 +96216,7 @@ bMA alK bPD asa -pHS +alK aaa aaa aaf From 86c5d43a1b523492f9a803fb84973e8126967ce1 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Tue, 21 Jan 2020 09:23:42 -0600 Subject: [PATCH 098/123] Automatic changelog generation for PR #10640 [ci skip] --- html/changelogs/AutoChangeLog-pr-10640.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-10640.yml diff --git a/html/changelogs/AutoChangeLog-pr-10640.yml b/html/changelogs/AutoChangeLog-pr-10640.yml new file mode 100644 index 0000000000..f51f892d8d --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10640.yml @@ -0,0 +1,4 @@ +author: "r4d6" +delete-after: True +changes: + - bugfix: "fixed a hole in Meta" From 5e5d80238bf0dd09f4dcf90aa8f766f30de3053e Mon Sep 17 00:00:00 2001 From: Chayse Ramsay Date: Tue, 21 Jan 2020 22:29:15 +0000 Subject: [PATCH 099/123] Revolver caliber changes; .357 revolvers can now also load .38 but not vice-versa. Effectively it means you can load .38 rubber into a .357 revolver to make it less than lethal, or use the various different .38 ammo types. --- code/modules/projectiles/ammunition/_ammunition.dm | 2 +- .../projectiles/boxes_magazines/internal/_cylinder.dm | 4 ++-- .../modules/projectiles/boxes_magazines/internal/grenade.dm | 2 +- .../projectiles/boxes_magazines/internal/revolver.dm | 6 +++--- code/modules/projectiles/guns/ballistic/revolver.dm | 6 +++--- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/code/modules/projectiles/ammunition/_ammunition.dm b/code/modules/projectiles/ammunition/_ammunition.dm index a9e4fa1646..b621033123 100644 --- a/code/modules/projectiles/ammunition/_ammunition.dm +++ b/code/modules/projectiles/ammunition/_ammunition.dm @@ -9,7 +9,7 @@ w_class = WEIGHT_CLASS_TINY materials = list(MAT_METAL = 500) var/fire_sound = null //What sound should play when this ammo is fired - var/caliber = null //Which kind of guns it can be loaded into + var/caliber = list() //Which kind of guns it can be loaded into var/projectile_type = null //The bullet type to create when New() is called var/obj/item/projectile/BB = null //The loaded bullet var/pellets = 1 //Pellets for spreadshot diff --git a/code/modules/projectiles/boxes_magazines/internal/_cylinder.dm b/code/modules/projectiles/boxes_magazines/internal/_cylinder.dm index 538ac753e2..d8e53b2451 100644 --- a/code/modules/projectiles/boxes_magazines/internal/_cylinder.dm +++ b/code/modules/projectiles/boxes_magazines/internal/_cylinder.dm @@ -1,7 +1,7 @@ /obj/item/ammo_box/magazine/internal/cylinder name = "revolver cylinder" ammo_type = /obj/item/ammo_casing/a357 - caliber = "357" + caliber = list("357","38") max_ammo = 7 /obj/item/ammo_box/magazine/internal/cylinder/ammo_count(countempties = 1) @@ -31,7 +31,7 @@ rotate() /obj/item/ammo_box/magazine/internal/cylinder/give_round(obj/item/ammo_casing/R, replace_spent = 0) - if(!R || (caliber && R.caliber != caliber) || (!caliber && R.type != ammo_type)) + if(!R || (caliber && !(R.caliber in caliber)) || (!caliber && R.type != ammo_type)) return FALSE for(var/i in 1 to stored_ammo.len) diff --git a/code/modules/projectiles/boxes_magazines/internal/grenade.dm b/code/modules/projectiles/boxes_magazines/internal/grenade.dm index 8b2ec9fca3..d6d338e8ff 100644 --- a/code/modules/projectiles/boxes_magazines/internal/grenade.dm +++ b/code/modules/projectiles/boxes_magazines/internal/grenade.dm @@ -1,7 +1,7 @@ /obj/item/ammo_box/magazine/internal/cylinder/grenademulti name = "grenade launcher internal magazine" ammo_type = /obj/item/ammo_casing/a40mm - caliber = "40mm" + caliber = list("40mm") max_ammo = 6 /obj/item/ammo_box/magazine/internal/grenadelauncher diff --git a/code/modules/projectiles/boxes_magazines/internal/revolver.dm b/code/modules/projectiles/boxes_magazines/internal/revolver.dm index 982d22493f..a9cad1adc8 100644 --- a/code/modules/projectiles/boxes_magazines/internal/revolver.dm +++ b/code/modules/projectiles/boxes_magazines/internal/revolver.dm @@ -1,19 +1,19 @@ /obj/item/ammo_box/magazine/internal/cylinder/rev38 name = "detective revolver cylinder" ammo_type = /obj/item/ammo_casing/c38 - caliber = "38" + caliber = list("38") max_ammo = 6 /obj/item/ammo_box/magazine/internal/cylinder/rev762 name = "\improper Nagant revolver cylinder" ammo_type = /obj/item/ammo_casing/n762 - caliber = "n762" + caliber = list("n762") max_ammo = 7 /obj/item/ammo_box/magazine/internal/cylinder/rus357 name = "\improper Russian revolver cylinder" ammo_type = /obj/item/ammo_casing/a357 - caliber = "357" + caliber = list("357") max_ammo = 6 multiload = 0 diff --git a/code/modules/projectiles/guns/ballistic/revolver.dm b/code/modules/projectiles/guns/ballistic/revolver.dm index c2206fcea8..ab9dd6d6a6 100644 --- a/code/modules/projectiles/guns/ballistic/revolver.dm +++ b/code/modules/projectiles/guns/ballistic/revolver.dm @@ -110,7 +110,7 @@ /obj/item/gun/ballistic/revolver/detective/screwdriver_act(mob/living/user, obj/item/I) if(..()) return TRUE - if(magazine.caliber == "38") + if("38" in magazine.caliber) to_chat(user, "You begin to reinforce the barrel of [src]...") if(magazine.ammo_count()) afterattack(user, user) //you know the drill @@ -120,7 +120,7 @@ if(magazine.ammo_count()) to_chat(user, "You can't modify it!") return TRUE - magazine.caliber = "357" + magazine.caliber = list("357") desc = "The barrel and chamber assembly seems to have been modified." to_chat(user, "You reinforce the barrel of [src]. Now it will fire .357 rounds.") else @@ -133,7 +133,7 @@ if(magazine.ammo_count()) to_chat(user, "You can't modify it!") return - magazine.caliber = "38" + magazine.caliber = list("38") desc = initial(desc) to_chat(user, "You remove the modifications on [src]. Now it will fire .38 rounds.") return TRUE From bc1500c04cc450aa26c17de40f09b43cc8787d43 Mon Sep 17 00:00:00 2001 From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com> Date: Tue, 21 Jan 2020 18:33:04 -0500 Subject: [PATCH 100/123] Update cleanbot.dm --- code/modules/mob/living/simple_animal/bot/cleanbot.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/mob/living/simple_animal/bot/cleanbot.dm b/code/modules/mob/living/simple_animal/bot/cleanbot.dm index d31c368ca4..bccf4e2c4d 100644 --- a/code/modules/mob/living/simple_animal/bot/cleanbot.dm +++ b/code/modules/mob/living/simple_animal/bot/cleanbot.dm @@ -17,6 +17,7 @@ window_name = "Automatic Station Cleaner v1.2" pass_flags = PASSMOB path_image_color = "#993299" + weather_immunities = list("lava","ash") var/blood = 1 var/trash = 0 From e3cb379bded49399fe6d57d69079e7b39407582b Mon Sep 17 00:00:00 2001 From: r4d6 Date: Tue, 21 Jan 2020 20:31:40 -0500 Subject: [PATCH 101/123] Add the Mining Base as a submap --- .../Mining_Station_Public_01.dmm | 7550 ++++++++++ _maps/map_files/Mining/Lavaland.dmm | 11455 ++++++---------- code/datums/ruins/station.dm | 7 + code/game/objects/effects/landmarks.dm | 5 + icons/rooms/Lavaland/Mining.dmi | Bin 0 -> 6127 bytes 5 files changed, 11637 insertions(+), 7380 deletions(-) create mode 100644 _maps/RandomRuins/StationRuins/Lavaland/Mining_Station/Mining_Station_Public_01.dmm create mode 100644 icons/rooms/Lavaland/Mining.dmi diff --git a/_maps/RandomRuins/StationRuins/Lavaland/Mining_Station/Mining_Station_Public_01.dmm b/_maps/RandomRuins/StationRuins/Lavaland/Mining_Station/Mining_Station_Public_01.dmm new file mode 100644 index 0000000000..75c0434771 --- /dev/null +++ b/_maps/RandomRuins/StationRuins/Lavaland/Mining_Station/Mining_Station_Public_01.dmm @@ -0,0 +1,7550 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"al" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/mine/eva) +"ap" = ( +/obj/structure/ore_box, +/obj/effect/turf_decal/tile/purple{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/mine/eva) +"at" = ( +/obj/structure/gulag_beacon, +/turf/open/floor/plasteel, +/area/mine/laborcamp) +"au" = ( +/obj/machinery/door/airlock/mining/glass{ + name = "Mining Station EVA"; + req_access_txt = "54" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/mine/eva) +"av" = ( +/obj/machinery/door/airlock{ + name = "Closet" + }, +/turf/open/floor/plating, +/area/mine/production) +"aG" = ( +/turf/open/floor/plating, +/area/mine/living_quarters) +"aJ" = ( +/obj/effect/turf_decal/tile/brown, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/mine/production) +"aK" = ( +/obj/machinery/atmospherics/components/unary/tank/air{ + dir = 8 + }, +/turf/open/floor/plating, +/area/mine/living_quarters) +"aN" = ( +/turf/open/floor/plasteel/white, +/area/mine/laborcamp) +"aW" = ( +/obj/effect/turf_decal/tile/purple, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"aX" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/obj/machinery/door/airlock{ + name = "Labor Camp External Access" + }, +/turf/open/floor/plasteel, +/area/mine/laborcamp) +"bg" = ( +/turf/closed/wall, +/area/mine/eva) +"bH" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/atmos_waste{ + dir = 4; + piping_layer = 3 + }, +/obj/structure/lattice/catwalk, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/mine/living_quarters) +"bI" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"bX" = ( +/obj/machinery/door/window/southleft, +/obj/machinery/shower{ + pixel_y = 22 + }, +/turf/open/floor/plasteel/freezer, +/area/mine/living_quarters) +"cd" = ( +/turf/closed/wall, +/area/mine/laborcamp) +"cf" = ( +/obj/machinery/mineral/equipment_vendor, +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/mine/production) +"ci" = ( +/obj/machinery/door/airlock{ + name = "Vending" + }, +/turf/open/floor/plasteel, +/area/mine/laborcamp) +"cn" = ( +/obj/machinery/door/airlock{ + id_tag = "miningdorm3"; + name = "Room 3" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"cr" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"cz" = ( +/obj/machinery/door/poddoor/preopen{ + id = "labor"; + name = "labor camp blast door" + }, +/turf/open/floor/plasteel, +/area/mine/laborcamp) +"cA" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/mine/eva) +"cD" = ( +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"cX" = ( +/obj/structure/statue{ + desc = "A lifelike statue of a horrifying monster."; + dir = 8; + icon = 'icons/mob/lavaland/lavaland_monsters.dmi'; + icon_state = "goliath"; + name = "goliath" + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"di" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/effect/turf_decal/tile/brown, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"dk" = ( +/obj/structure/table, +/obj/item/stack/packageWrap, +/obj/item/stack/packageWrap, +/obj/item/stack/packageWrap, +/obj/item/hand_labeler, +/obj/effect/turf_decal/tile/purple{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/mine/eva) +"dC" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"dL" = ( +/obj/machinery/atmospherics/components/binary/pump/on, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/mine/living_quarters) +"dP" = ( +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/obj/machinery/computer/shuttle/mining{ + req_access = null + }, +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/obj/effect/turf_decal/tile/purple{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/mine/production) +"dZ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/machinery/door/airlock/glass{ + name = "Mining Station Bridge" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/mine/production) +"eh" = ( +/obj/structure/table, +/obj/item/storage/firstaid/regular, +/turf/open/floor/plasteel/white, +/area/mine/laborcamp) +"es" = ( +/turf/open/floor/plasteel, +/area/mine/production) +"ez" = ( +/obj/effect/turf_decal/loading_area{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/mine/production) +"eE" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/machinery/button/door{ + id = "labor"; + name = "Labor Camp Lockdown"; + pixel_y = 28; + req_access_txt = "2" + }, +/turf/open/floor/plasteel, +/area/mine/laborcamp) +"eL" = ( +/obj/structure/reagent_dispensers/watertank, +/obj/effect/turf_decal/tile/purple, +/turf/open/floor/plasteel, +/area/mine/production) +"eP" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/machinery/door/airlock/glass{ + name = "Mining Station Bridge" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"eS" = ( +/obj/structure/table, +/obj/item/gps/mining, +/obj/item/gps/mining, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"fm" = ( +/obj/structure/sign/warning/docking, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/mine/production) +"fs" = ( +/obj/item/radio/intercom{ + desc = "Talk through this. It looks like it has been modified to not broadcast."; + name = "Prison Intercom (General)"; + pixel_y = 24; + prison_radio = 1 + }, +/turf/open/floor/plasteel, +/area/mine/laborcamp) +"fN" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/mine/laborcamp/security) +"fO" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Shuttle Docking Foyer"; + dir = 8; + network = list("mine") + }, +/obj/machinery/newscaster{ + pixel_x = 30; + pixel_y = 1 + }, +/obj/effect/turf_decal/tile/brown, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/mine/production) +"fU" = ( +/obj/item/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -28 + }, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"gk" = ( +/obj/structure/closet/crate{ + icon_state = "crateopen" + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/mine/production) +"gs" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/turf/open/floor/plasteel, +/area/mine/laborcamp) +"gP" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Mining Station Communications"; + req_access_txt = "48" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/mine/maintenance) +"gT" = ( +/obj/structure/bed, +/obj/item/bedsheet/medical, +/obj/machinery/camera{ + c_tag = "Labor Camp Medical"; + dir = 8; + network = list("labor") + }, +/turf/open/floor/plasteel/white, +/area/mine/laborcamp) +"hf" = ( +/obj/item/twohanded/required/kirbyplants/random, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"hm" = ( +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"hv" = ( +/obj/machinery/camera{ + c_tag = "Crew Area Hallway West"; + dir = 1; + network = list("mine") + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"hy" = ( +/obj/machinery/camera{ + c_tag = "Labor Camp External"; + dir = 4; + network = list("labor") + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"hH" = ( +/obj/effect/turf_decal/tile/brown, +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/obj/structure/displaycase, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"hP" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"hQ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"ia" = ( +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, +/area/mine/laborcamp) +"ig" = ( +/obj/structure/table, +/obj/effect/turf_decal/tile/red, +/obj/item/paper_bin, +/obj/item/pen, +/turf/open/floor/plasteel, +/area/mine/laborcamp/security) +"ik" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"iv" = ( +/obj/machinery/camera{ + c_tag = "Dormitories"; + dir = 4; + network = list("mine") + }, +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"iG" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/purple, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/mine/production) +"iQ" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/effect/turf_decal/tile/brown, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/mine/production) +"jf" = ( +/obj/structure/table, +/obj/item/storage/firstaid/regular, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/mine/living_quarters) +"jn" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/turf/open/floor/plasteel, +/area/mine/eva) +"jD" = ( +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/structure/table, +/obj/item/restraints/handcuffs, +/turf/open/floor/plasteel, +/area/mine/laborcamp/security) +"jJ" = ( +/turf/closed/mineral/random/labormineral/volcanic, +/area/lavaland/surface/outdoors/explored) +"kb" = ( +/obj/machinery/mineral/processing_unit_console, +/turf/closed/wall, +/area/mine/laborcamp) +"kj" = ( +/obj/machinery/conveyor{ + id = "gulag" + }, +/turf/open/floor/plating, +/area/mine/laborcamp) +"kz" = ( +/obj/machinery/light/small, +/obj/effect/turf_decal/tile/purple{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"kB" = ( +/obj/machinery/computer/security/labor, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/mine/laborcamp/security) +"kE" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/obj/machinery/door/airlock/external{ + glass = 1; + name = "Mining External Airlock"; + opacity = 0; + req_access_txt = "54" + }, +/turf/open/floor/plasteel, +/area/mine/eva) +"kF" = ( +/obj/effect/turf_decal/tile/brown, +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"kH" = ( +/obj/effect/turf_decal/tile/brown, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"kR" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/mine/laborcamp) +"kS" = ( +/obj/structure/table, +/obj/item/storage/firstaid/toxin{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/mine/living_quarters) +"lj" = ( +/turf/open/floor/mech_bay_recharge_floor, +/area/mine/eva) +"lr" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 10 + }, +/turf/open/floor/plasteel/white, +/area/mine/living_quarters) +"lu" = ( +/obj/effect/turf_decal/tile/purple{ + dir = 4 + }, +/obj/machinery/computer/mech_bay_power_console{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/mine/eva) +"ly" = ( +/obj/machinery/camera{ + c_tag = "Labor Camp Central"; + network = list("labor") + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/mine/laborcamp) +"lI" = ( +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, +/obj/effect/turf_decal/tile/brown, +/turf/open/floor/plasteel, +/area/mine/production) +"lS" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/mine/production) +"me" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/mine/production) +"mg" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = -5; + pixel_y = 30 + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"mi" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/floor/plasteel, +/area/mine/production) +"mp" = ( +/obj/docking_port/stationary{ + dir = 8; + dwidth = 2; + height = 5; + id = "laborcamp_away"; + name = "labor camp"; + width = 9 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/explored) +"mv" = ( +/obj/machinery/door/window/southright, +/obj/machinery/shower{ + pixel_y = 22 + }, +/turf/open/floor/plasteel/freezer, +/area/mine/living_quarters) +"mw" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/effect/turf_decal/loading_area{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/mine/production) +"my" = ( +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/explored) +"mI" = ( +/obj/machinery/space_heater, +/turf/open/floor/plating, +/area/mine/production) +"mL" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/mine/laborcamp/security) +"mN" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plating, +/area/mine/production) +"nm" = ( +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/mine/laborcamp/security) +"nv" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/plating, +/area/mine/living_quarters) +"ny" = ( +/obj/machinery/computer/prisoner, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red, +/turf/open/floor/plasteel, +/area/mine/laborcamp/security) +"nH" = ( +/obj/structure/displaycase, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"nI" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"nJ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/mine/laborcamp/security) +"nK" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/mine/production) +"nN" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/light/small, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/turf/open/floor/plasteel/freezer, +/area/mine/living_quarters) +"nR" = ( +/obj/structure/ore_box, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/mine/production) +"oo" = ( +/obj/machinery/conveyor{ + id = "mining_internal" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plating, +/area/mine/production) +"ow" = ( +/obj/machinery/door/airlock/medical/glass{ + name = "Infirmary" + }, +/turf/open/floor/plasteel/white, +/area/mine/laborcamp) +"oy" = ( +/obj/machinery/light, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"oG" = ( +/obj/machinery/mineral/equipment_vendor, +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/obj/effect/turf_decal/tile/brown, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/mine/production) +"oM" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"oY" = ( +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/floor/plasteel, +/area/mine/laborcamp/security) +"pi" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plating, +/area/mine/living_quarters) +"pr" = ( +/obj/structure/table, +/obj/item/pickaxe, +/obj/item/gps/mining, +/obj/item/gps/mining, +/obj/item/gps/mining, +/obj/item/gps/mining, +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/obj/effect/turf_decal/tile/purple{ + dir = 4 + }, +/obj/effect/turf_decal/tile/purple{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/mine/eva) +"pK" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/mine/production) +"qb" = ( +/obj/structure/tank_dispenser/oxygen, +/obj/effect/turf_decal/tile/purple, +/turf/open/floor/plasteel, +/area/mine/eva) +"qc" = ( +/obj/machinery/shower{ + dir = 8 + }, +/obj/structure/extinguisher_cabinet{ + pixel_x = 30 + }, +/obj/effect/turf_decal/tile/purple{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/mine/production) +"qg" = ( +/obj/structure/toilet{ + dir = 8 + }, +/turf/open/floor/plasteel/freezer, +/area/mine/living_quarters) +"qh" = ( +/obj/structure/sink{ + dir = 8; + pixel_x = 11 + }, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"qm" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/structure/closet/crate/secure/loot, +/obj/structure/sign/warning/electricshock{ + pixel_y = 32 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/mine/living_quarters) +"qH" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = 30 + }, +/obj/effect/turf_decal/tile/brown, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/mine/production) +"qM" = ( +/obj/structure/table, +/obj/item/reagent_containers/food/drinks/beer{ + pixel_x = 7; + pixel_y = 5 + }, +/obj/item/reagent_containers/food/drinks/beer{ + pixel_x = -1; + pixel_y = 9 + }, +/obj/item/reagent_containers/food/drinks/beer{ + pixel_x = -8 + }, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"qR" = ( +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/mine/production) +"qS" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/effect/turf_decal/tile/purple{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/mine/eva) +"qZ" = ( +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"re" = ( +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red, +/obj/structure/closet/secure_closet/labor_camp_security, +/turf/open/floor/plasteel, +/area/mine/laborcamp/security) +"rf" = ( +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"rB" = ( +/obj/machinery/mineral/unloading_machine{ + dir = 1; + icon_state = "unloader-corner"; + input_dir = 1; + output_dir = 2 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/plating, +/area/mine/production) +"rK" = ( +/obj/structure/chair{ + dir = 8 + }, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"rU" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 5 + }, +/turf/open/floor/plasteel/white, +/area/mine/living_quarters) +"sa" = ( +/obj/machinery/mineral/processing_unit{ + dir = 1 + }, +/turf/open/floor/plating, +/area/mine/laborcamp) +"se" = ( +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/mine/living_quarters) +"si" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/turf/open/floor/plasteel, +/area/mine/laborcamp/security) +"sj" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/mine/production) +"sm" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"sx" = ( +/obj/item/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = 28 + }, +/obj/effect/turf_decal/tile/purple{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"sz" = ( +/obj/effect/turf_decal/loading_area, +/turf/open/floor/plasteel, +/area/mine/production) +"sE" = ( +/obj/structure/closet/crate, +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/mine/production) +"sP" = ( +/obj/structure/table, +/obj/machinery/microwave{ + pixel_y = 6 + }, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"sR" = ( +/obj/machinery/light, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red, +/turf/open/floor/plasteel, +/area/mine/laborcamp/security) +"sU" = ( +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"sW" = ( +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/mine/laborcamp) +"tk" = ( +/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden/layer3, +/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"tr" = ( +/obj/structure/chair, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"tJ" = ( +/obj/item/beacon, +/obj/effect/turf_decal/tile/purple{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/mine/production) +"tK" = ( +/obj/structure/closet/crate, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/explored) +"tY" = ( +/obj/structure/closet/emcloset, +/obj/effect/turf_decal/tile/purple{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/mine/production) +"uh" = ( +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, +/obj/effect/turf_decal/tile/brown, +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"uG" = ( +/obj/structure/table, +/obj/item/clothing/glasses/meson, +/obj/item/storage/bag/ore, +/obj/item/pickaxe, +/obj/item/mining_scanner, +/obj/item/flashlight, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"uI" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Mining Station Maintenance"; + req_access_txt = "48" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/mine/living_quarters) +"uJ" = ( +/obj/item/bikehorn{ + color = "#000"; + desc = "A horn off of a bicycle. This one has been charred to hell and back, yet somehow it still honks."; + name = "charred bike horn" + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/explored) +"uR" = ( +/obj/effect/turf_decal/loading_area{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/mine/laborcamp) +"va" = ( +/obj/machinery/button/door{ + id = "miningbathroom"; + name = "Door Bolt Control"; + normaldoorcontrol = 1; + pixel_y = -25; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/turf/open/floor/plasteel/freezer, +/area/mine/living_quarters) +"vo" = ( +/obj/machinery/flasher{ + id = "labor" + }, +/turf/closed/wall, +/area/mine/laborcamp) +"vy" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/obj/machinery/door/airlock{ + name = "Labor Camp External Access" + }, +/turf/open/floor/plasteel, +/area/mine/laborcamp) +"vE" = ( +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/mine/eva) +"vJ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/floor/plasteel, +/area/mine/eva) +"wd" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/mine/production) +"wg" = ( +/obj/structure/closet/crate, +/obj/item/dice/d4, +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/mine/production) +"wj" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, +/area/mine/production) +"wt" = ( +/obj/structure/toilet{ + dir = 8 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plating, +/area/mine/laborcamp/security) +"wz" = ( +/turf/closed/mineral/random/volcanic, +/area/lavaland/surface/outdoors) +"wB" = ( +/obj/structure/table, +/turf/open/floor/plasteel/white, +/area/mine/laborcamp) +"wC" = ( +/turf/open/floor/circuit, +/area/mine/maintenance) +"wE" = ( +/obj/machinery/vending/cigarette, +/obj/machinery/newscaster{ + pixel_y = 32 + }, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"wV" = ( +/turf/closed/mineral/random/volcanic, +/area/lavaland/surface/outdoors/explored) +"wX" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/mine/production) +"xd" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/turf/open/floor/plasteel, +/area/mine/laborcamp) +"xh" = ( +/obj/machinery/vending/sustenance, +/turf/open/floor/plasteel, +/area/mine/laborcamp) +"xv" = ( +/obj/machinery/mech_bay_recharge_port, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/mine/eva) +"xA" = ( +/obj/machinery/camera{ + c_tag = "Communications Relay"; + dir = 8; + network = list("mine") + }, +/turf/open/floor/circuit, +/area/mine/maintenance) +"xH" = ( +/obj/structure/table, +/obj/item/cigbutt, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"xP" = ( +/obj/machinery/suit_storage_unit/mining, +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/mine/eva) +"xS" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/mine/laborcamp/security) +"yt" = ( +/obj/structure/closet/crate{ + icon_state = "crateopen" + }, +/obj/machinery/light, +/obj/effect/turf_decal/tile/brown, +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/mine/production) +"yF" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/mine/production) +"yR" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plasteel, +/area/mine/production) +"yT" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/turf/open/floor/plasteel/freezer, +/area/mine/living_quarters) +"zh" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plating, +/area/mine/living_quarters) +"zo" = ( +/obj/structure/table, +/turf/open/floor/carpet, +/area/mine/living_quarters) +"zx" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/mine/laborcamp) +"zy" = ( +/obj/item/twohanded/required/kirbyplants/random, +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"zI" = ( +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors/explored) +"zN" = ( +/obj/effect/turf_decal/tile/brown, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/mine/production) +"zY" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/tile/brown, +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"zZ" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"Ab" = ( +/obj/structure/ore_box, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/explored) +"Ad" = ( +/obj/machinery/light_switch{ + pixel_y = -25 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/circuit, +/area/mine/maintenance) +"Ag" = ( +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"Ah" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/floor/plasteel, +/area/mine/laborcamp/security) +"Aj" = ( +/obj/effect/turf_decal/tile/purple{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/mine/production) +"Al" = ( +/turf/closed/wall/r_wall, +/area/mine/maintenance) +"At" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/mine/production) +"AH" = ( +/obj/machinery/cryopod{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/mine/laborcamp) +"AJ" = ( +/obj/machinery/door/airlock/glass{ + name = "Break Room" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"AQ" = ( +/obj/machinery/door/airlock{ + id_tag = "miningdorm2"; + name = "Room 2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"AS" = ( +/obj/machinery/door/airlock/external{ + glass = 1; + name = "Mining External Airlock"; + opacity = 0 + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/turf/open/floor/plasteel, +/area/mine/production) +"AZ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"Bc" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/mine/production) +"Be" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/mine/eva) +"Bh" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plasteel, +/area/mine/production) +"Bo" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/plating, +/area/mine/living_quarters) +"BO" = ( +/obj/machinery/door/airlock{ + name = "Labor Camp Storage" + }, +/turf/open/floor/plasteel, +/area/mine/laborcamp) +"Ca" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "Mining Station Port Wing APC"; + pixel_x = 1; + pixel_y = 23 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"Cd" = ( +/turf/closed/wall, +/area/mine/production) +"Cg" = ( +/obj/structure/table, +/obj/item/tank/internals/emergency_oxygen{ + pixel_x = 5; + pixel_y = 3 + }, +/obj/item/tank/internals/emergency_oxygen, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"Cj" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/mine/production) +"Cm" = ( +/obj/machinery/vending/snack, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"Cy" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/obj/machinery/door/airlock/security/glass{ + name = "Labor Camp Shuttle Security Airlock"; + req_access_txt = "2" + }, +/turf/open/floor/plasteel, +/area/mine/laborcamp) +"CA" = ( +/obj/machinery/atmospherics/pipe/manifold4w/supply, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"CH" = ( +/obj/structure/rack, +/obj/item/storage/bag/ore, +/obj/item/pickaxe, +/obj/item/flashlight, +/obj/item/clothing/glasses/meson, +/obj/item/mining_scanner, +/turf/open/floor/plasteel, +/area/mine/laborcamp) +"CJ" = ( +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"CR" = ( +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/mine/laborcamp) +"CV" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plasteel, +/area/mine/eva) +"Dd" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"Dr" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = -5; + pixel_y = 30 + }, +/obj/effect/turf_decal/tile/purple{ + dir = 4 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/chair, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"Dv" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plating, +/area/mine/laborcamp/security) +"DN" = ( +/obj/machinery/computer/shuttle/mining/common{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"Ed" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/mine/production) +"Eg" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/mine/production) +"Em" = ( +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"Ev" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/button/door{ + id = "miningdorm2"; + name = "Door Bolt Control"; + normaldoorcontrol = 1; + pixel_x = 25; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ + dir = 1 + }, +/turf/open/floor/carpet, +/area/mine/living_quarters) +"Ex" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/mine/eva) +"EB" = ( +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/machinery/vending/security, +/turf/open/floor/plasteel, +/area/mine/laborcamp/security) +"EH" = ( +/obj/effect/turf_decal/tile/purple{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"Fx" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/mine/laborcamp) +"FC" = ( +/obj/machinery/airalarm{ + pixel_y = 24 + }, +/turf/open/floor/circuit, +/area/mine/maintenance) +"FE" = ( +/obj/effect/turf_decal/tile/purple{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"Ga" = ( +/obj/machinery/status_display/evac{ + pixel_y = 32 + }, +/turf/open/floor/plasteel, +/area/mine/laborcamp) +"Ge" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plating, +/area/mine/living_quarters) +"Gt" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/mine/laborcamp/security) +"GM" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plasteel, +/area/mine/production) +"GN" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "Mining Station Starboard Wing APC"; + pixel_x = -25; + pixel_y = 2 + }, +/obj/machinery/light{ + dir = 8 + }, +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/obj/effect/turf_decal/tile/purple{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plasteel, +/area/mine/production) +"Hd" = ( +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/mine/eva) +"Hg" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/turf/open/floor/plasteel, +/area/mine/laborcamp) +"Hh" = ( +/obj/machinery/conveyor{ + dir = 8; + id = "gulag" + }, +/turf/open/floor/plating, +/area/mine/laborcamp) +"Hk" = ( +/obj/docking_port/stationary{ + dir = 8; + dwidth = 3; + height = 7; + id = "lavaland_common_away"; + name = "Mining base public dock"; + width = 7 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"Hm" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/obj/machinery/door/airlock/external{ + name = "Lavaland Shuttle Airlock" + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"Ho" = ( +/obj/machinery/door/airlock{ + name = "Restroom" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/mine/laborcamp/security) +"Hq" = ( +/obj/structure/rack, +/obj/item/storage/bag/ore, +/obj/item/flashlight, +/obj/item/pickaxe, +/obj/item/clothing/glasses/meson, +/obj/item/mining_scanner, +/turf/open/floor/plasteel, +/area/mine/laborcamp) +"Hx" = ( +/turf/open/floor/plasteel, +/area/mine/laborcamp/security) +"HE" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 10 + }, +/obj/machinery/bluespace_beacon, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/floor/plasteel/dark, +/area/mine/maintenance) +"HO" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/obj/machinery/door/airlock/security/glass{ + name = "Labor Camp Shuttle Prisoner Airlock" + }, +/turf/open/floor/plasteel, +/area/mine/laborcamp) +"HR" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, +/turf/open/floor/plating, +/area/mine/living_quarters) +"HS" = ( +/obj/machinery/conveyor{ + dir = 10; + id = "gulag" + }, +/turf/open/floor/plating, +/area/mine/laborcamp) +"HU" = ( +/obj/machinery/computer/shuttle/labor/one_way{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/mine/laborcamp) +"HY" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/obj/machinery/iv_drip, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/mine/living_quarters) +"If" = ( +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"Ii" = ( +/obj/structure/table, +/obj/item/storage/box/donkpockets, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"Ik" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = -5; + pixel_y = 30 + }, +/obj/machinery/shower{ + dir = 8 + }, +/obj/effect/turf_decal/tile/purple, +/turf/open/floor/plasteel, +/area/mine/eva) +"ID" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/obj/machinery/meter, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/mine/living_quarters) +"IG" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/mine/laborcamp/security) +"II" = ( +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/mine/production) +"IK" = ( +/obj/structure/table, +/obj/effect/turf_decal/tile/red, +/obj/machinery/recharger, +/turf/open/floor/plasteel, +/area/mine/laborcamp/security) +"IS" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/mine/living_quarters) +"IY" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 6 + }, +/turf/open/floor/carpet, +/area/mine/living_quarters) +"Jc" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plating, +/area/mine/living_quarters) +"Jl" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3, +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/mine/production) +"Jo" = ( +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/mine/production) +"Jr" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/mine/laborcamp) +"JH" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"JJ" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/mine/laborcamp/security) +"JP" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"JV" = ( +/obj/machinery/mineral/processing_unit{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/plating, +/area/mine/production) +"JW" = ( +/obj/machinery/power/apc{ + name = "Mining EVA APC"; + pixel_x = 1; + pixel_y = -23 + }, +/obj/machinery/recharge_station, +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/obj/structure/cable, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/plasteel, +/area/mine/eva) +"JY" = ( +/turf/closed/mineral/random/labormineral/volcanic, +/area/lavaland/surface/outdoors) +"Kb" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/effect/turf_decal/tile/brown, +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/mine/production) +"Kk" = ( +/obj/machinery/conveyor_switch/oneway{ + id = "mining_internal"; + name = "mining conveyor" + }, +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/mine/production) +"Kl" = ( +/turf/open/floor/plasteel, +/area/mine/eva) +"Kt" = ( +/obj/machinery/conveyor{ + dir = 8; + id = "mining_internal" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plating, +/area/mine/production) +"Kx" = ( +/obj/machinery/camera{ + c_tag = "EVA"; + dir = 4; + network = list("mine") + }, +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -23 + }, +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/table, +/obj/item/storage/toolbox/mechanical{ + pixel_x = -2; + pixel_y = -1 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/mine/eva) +"KG" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/mine/production) +"KO" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"KP" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/obj/machinery/door/airlock/external{ + glass = 1; + name = "Mining External Airlock"; + opacity = 0; + req_access_txt = "54" + }, +/turf/open/floor/plasteel, +/area/mine/eva) +"KQ" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/obj/machinery/door/airlock/external{ + glass = 1; + name = "Mining Shuttle Airlock"; + opacity = 0 + }, +/turf/open/floor/plasteel, +/area/mine/production) +"KR" = ( +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"KS" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3, +/turf/open/floor/plasteel, +/area/mine/production) +"KU" = ( +/obj/effect/turf_decal/tile/brown, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/mine/eva) +"KV" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/mine/living_quarters) +"Lb" = ( +/obj/docking_port/stationary{ + dir = 8; + dwidth = 3; + height = 10; + id = "mining_away"; + name = "lavaland mine"; + width = 7 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"Lc" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plating, +/area/mine/production) +"Le" = ( +/obj/structure/closet/crate/internals, +/obj/item/tank/internals/emergency_oxygen, +/obj/item/tank/internals/emergency_oxygen, +/obj/item/tank/internals/emergency_oxygen, +/obj/item/tank/internals/emergency_oxygen, +/obj/item/clothing/mask/breath, +/obj/item/clothing/mask/breath, +/obj/item/clothing/mask/breath, +/obj/item/clothing/mask/breath, +/turf/open/floor/plasteel, +/area/mine/laborcamp) +"Lj" = ( +/obj/machinery/power/port_gen/pacman{ + anchored = 1 + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/mine/living_quarters) +"Lm" = ( +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"LC" = ( +/obj/structure/table, +/obj/item/storage/fancy/donut_box, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/mine/laborcamp/security) +"LG" = ( +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"LL" = ( +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/power/apc{ + dir = 1; + name = "Labor Camp Security APC"; + pixel_y = 23 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plasteel, +/area/mine/laborcamp/security) +"LZ" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"Mc" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/machinery/door/airlock/mining/glass{ + name = "Processing Area"; + req_access_txt = "48" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plasteel, +/area/mine/production) +"Mj" = ( +/obj/structure/sink{ + dir = 4; + pixel_x = -12 + }, +/obj/structure/mirror{ + pixel_x = -28 + }, +/turf/open/floor/plasteel/freezer, +/area/mine/living_quarters) +"Mk" = ( +/obj/machinery/conveyor_switch/oneway{ + id = "gulag" + }, +/turf/open/floor/plasteel, +/area/mine/laborcamp) +"Mn" = ( +/turf/closed/wall/r_wall, +/area/mine/laborcamp/security) +"Ms" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3, +/turf/open/floor/plasteel/white, +/area/mine/living_quarters) +"Mw" = ( +/obj/machinery/door/airlock/external{ + glass = 1; + name = "Mining External Airlock"; + opacity = 0 + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/mine/production) +"MD" = ( +/turf/closed/mineral/random/volcanic, +/area/lavaland/surface/outdoors/unexplored) +"ME" = ( +/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plasteel, +/area/mine/production) +"MF" = ( +/obj/structure/closet/crate/freezer, +/obj/item/reagent_containers/blood, +/obj/item/reagent_containers/blood{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/item/reagent_containers/blood/AMinus, +/obj/item/reagent_containers/blood/BMinus{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/item/reagent_containers/blood/BPlus{ + pixel_x = 1; + pixel_y = 2 + }, +/obj/item/reagent_containers/blood/OMinus, +/obj/item/reagent_containers/blood/OPlus{ + pixel_x = -2; + pixel_y = -1 + }, +/obj/item/reagent_containers/blood/random, +/obj/item/reagent_containers/blood/random, +/obj/item/reagent_containers/blood/random, +/obj/machinery/camera{ + c_tag = "Sleeper Room"; + dir = 1; + network = list("mine") + }, +/turf/open/floor/plasteel/white, +/area/mine/living_quarters) +"MG" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"MH" = ( +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/floor/plating, +/area/mine/living_quarters) +"ML" = ( +/obj/structure/chair{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"MM" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/closet/secure_closet/freezer/gulag_fridge, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/mine/laborcamp/security) +"MV" = ( +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"Nf" = ( +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/obj/effect/turf_decal/tile/purple{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/mine/production) +"Nk" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"NB" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/button/door{ + id = "miningdorm3"; + name = "Door Bolt Control"; + normaldoorcontrol = 1; + pixel_x = 25; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ + dir = 1 + }, +/turf/open/floor/carpet, +/area/mine/living_quarters) +"NH" = ( +/turf/open/floor/plasteel, +/area/mine/laborcamp) +"NI" = ( +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/mine/production) +"Oh" = ( +/obj/structure/chair/office{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/mine/laborcamp/security) +"Oj" = ( +/obj/machinery/conveyor{ + dir = 8; + id = "mining_internal" + }, +/obj/structure/plasticflaps, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/plating, +/area/mine/production) +"Op" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/obj/machinery/door/airlock/security/glass{ + name = "Labor Camp Shuttle Prisoner Airlock" + }, +/turf/open/floor/plasteel, +/area/mine/laborcamp) +"Os" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"Ov" = ( +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"OI" = ( +/obj/machinery/mineral/mint, +/turf/open/floor/plasteel, +/area/mine/production) +"ON" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"Pp" = ( +/obj/machinery/camera{ + c_tag = "Public Shuttle Lobby"; + network = list("mine") + }, +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/obj/effect/turf_decal/tile/brown, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/obj/structure/table, +/obj/item/gps/mining, +/obj/item/gps/mining, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"Pq" = ( +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"PN" = ( +/obj/machinery/light_switch{ + pixel_x = 27 + }, +/obj/effect/turf_decal/tile/brown, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/mine/eva) +"PO" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/brown, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/mine/production) +"PY" = ( +/obj/machinery/shower{ + dir = 8 + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel/white, +/area/mine/laborcamp) +"Qi" = ( +/obj/structure/table, +/obj/machinery/reagentgrinder, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"Qr" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/machinery/door/airlock/security/glass{ + name = "Labor Camp Monitoring"; + req_access_txt = "2" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/mine/laborcamp/security) +"Qx" = ( +/obj/structure/chair{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/mine/laborcamp) +"Qy" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"QD" = ( +/obj/machinery/suit_storage_unit/mining, +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/mine/eva) +"Rf" = ( +/obj/machinery/mineral/unloading_machine{ + dir = 1; + icon_state = "unloader-corner"; + input_dir = 1; + output_dir = 2 + }, +/turf/open/floor/plating, +/area/mine/laborcamp) +"Ro" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/machinery/door/airlock/highsecurity{ + name = "Labor Camp Monitoring"; + req_access_txt = "2"; + security_level = 6 + }, +/turf/open/floor/plasteel, +/area/mine/laborcamp) +"Ru" = ( +/obj/machinery/newscaster{ + pixel_y = 32 + }, +/obj/structure/chair, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"Rv" = ( +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple{ + dir = 4 + }, +/obj/effect/turf_decal/tile/purple{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/mine/production) +"RC" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/mine/production) +"RF" = ( +/turf/closed/wall, +/area/mine/laborcamp/security) +"RH" = ( +/obj/machinery/camera{ + c_tag = "Crew Area"; + dir = 1; + network = list("mine") + }, +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_y = -32 + }, +/obj/machinery/light, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"RI" = ( +/obj/structure/closet/crate, +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/mine/production) +"RP" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"Sd" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"Sj" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"Sp" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/mine/laborcamp/security) +"Sq" = ( +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/mine/production) +"Ss" = ( +/obj/machinery/conveyor{ + dir = 10; + id = "mining_internal" + }, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/turf/open/floor/plating, +/area/mine/production) +"SO" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ + dir = 8 + }, +/turf/open/floor/plasteel/freezer, +/area/mine/living_quarters) +"SW" = ( +/obj/effect/turf_decal/loading_area{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/mine/production) +"SY" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3, +/turf/open/floor/plasteel, +/area/mine/eva) +"Te" = ( +/obj/structure/table, +/obj/item/trash/plate, +/obj/item/kitchen/fork, +/turf/open/floor/plasteel, +/area/mine/laborcamp) +"Tm" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/obj/machinery/door/airlock/external{ + glass = 1; + name = "Mining Shuttle Airlock"; + opacity = 0 + }, +/turf/open/floor/plasteel, +/area/mine/production) +"TC" = ( +/obj/structure/chair/comfy/brown{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/mine/laborcamp/security) +"TG" = ( +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/obj/machinery/mineral/equipment_vendor, +/turf/open/floor/plasteel, +/area/mine/production) +"TI" = ( +/obj/machinery/door/airlock/medical/glass{ + name = "Infirmary" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/turf/open/floor/plasteel/white, +/area/mine/living_quarters) +"TJ" = ( +/obj/structure/bed, +/obj/item/bedsheet/brown, +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/turf/open/floor/carpet, +/area/mine/living_quarters) +"Ue" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 5 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/circuit, +/area/mine/maintenance) +"Uk" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/mob/living/simple_animal/bot/secbot/beepsky{ + desc = "Powered by the tears and sweat of laborers."; + name = "Prison Ofitser" + }, +/turf/open/floor/plasteel, +/area/mine/laborcamp/security) +"Un" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/button/door{ + id = "miningdorm1"; + name = "Door Bolt Control"; + normaldoorcontrol = 1; + pixel_x = 25; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ + dir = 1 + }, +/turf/open/floor/carpet, +/area/mine/living_quarters) +"Uz" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "Mining Communications APC"; + pixel_x = 1; + pixel_y = 23 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/plasteel/dark, +/area/mine/maintenance) +"UE" = ( +/obj/machinery/power/terminal{ + dir = 1 + }, +/obj/machinery/power/port_gen/pacman{ + anchored = 1 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/plating, +/area/mine/living_quarters) +"UI" = ( +/obj/machinery/camera{ + c_tag = "Crew Area Hallway East"; + network = list("mine") + }, +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"UJ" = ( +/obj/effect/turf_decal/tile/red, +/turf/open/floor/plasteel, +/area/mine/laborcamp/security) +"Vj" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = -5; + pixel_y = 30 + }, +/obj/structure/table, +/obj/item/paper/fluff/stations/lavaland/orm_notice, +/turf/open/floor/plasteel, +/area/mine/production) +"Vo" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/mine/production) +"Vs" = ( +/obj/effect/turf_decal/tile/purple, +/turf/open/floor/plasteel, +/area/mine/production) +"VN" = ( +/turf/closed/wall, +/area/mine/living_quarters) +"VP" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plating, +/area/mine/production) +"VR" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/obj/machinery/door/airlock/security/glass{ + name = "Labor Camp Shuttle Security Airlock"; + req_access_txt = "2" + }, +/turf/open/floor/plasteel, +/area/mine/laborcamp) +"VT" = ( +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors) +"VY" = ( +/obj/structure/closet/emcloset, +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/mine/eva) +"Wf" = ( +/obj/effect/turf_decal/tile/purple{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/mine/production) +"Wt" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3, +/turf/open/floor/plasteel, +/area/mine/laborcamp) +"Ww" = ( +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/mine/production) +"WL" = ( +/obj/machinery/computer/secure_data, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/mine/laborcamp/security) +"WN" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plasteel/dark, +/area/mine/maintenance) +"WX" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"WY" = ( +/obj/machinery/door/airlock{ + id_tag = "miningdorm1"; + name = "Room 1" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"Xo" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/mine/laborcamp) +"Xr" = ( +/obj/machinery/camera{ + c_tag = "Processing Area Room"; + dir = 8; + network = list("mine") + }, +/obj/item/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = 28 + }, +/obj/effect/turf_decal/tile/brown, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/mine/production) +"XG" = ( +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/mine/production) +"XN" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/mine/production) +"XP" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"XR" = ( +/obj/structure/sign/poster/official/random{ + pixel_y = 32 + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"XU" = ( +/obj/machinery/power/smes{ + charge = 5e+006 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plating, +/area/mine/living_quarters) +"XX" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/closed/wall, +/area/mine/living_quarters) +"Ya" = ( +/turf/closed/wall/r_wall, +/area/mine/laborcamp) +"Ye" = ( +/turf/closed/mineral/random/high_chance/volcanic, +/area/lavaland/surface/outdoors) +"Yf" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/mine/laborcamp) +"Yg" = ( +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/machinery/camera{ + c_tag = "Labor Camp Security Office"; + dir = 1; + network = list("labor") + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/mine/laborcamp/security) +"Yi" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/machinery/door/airlock/glass, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"Yp" = ( +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/mine/production) +"Yr" = ( +/obj/machinery/light/small, +/obj/effect/turf_decal/loading_area{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/mine/laborcamp) +"Yy" = ( +/obj/machinery/door/airlock{ + id_tag = "miningbathroom"; + name = "Restroom" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/turf/open/floor/plasteel/freezer, +/area/mine/living_quarters) +"YH" = ( +/obj/machinery/door/airlock{ + name = "Restroom" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/turf/open/floor/plasteel/freezer, +/area/mine/living_quarters) +"YM" = ( +/obj/item/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -28 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/mine/production) +"YV" = ( +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"Zp" = ( +/obj/machinery/camera{ + c_tag = "Crew Area Hallway"; + network = list("mine") + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"Zu" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/structure/lattice/catwalk, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/mine/living_quarters) +"Zw" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/obj/machinery/door/airlock/external{ + name = "Lavaland Shuttle Airlock" + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"ZF" = ( +/obj/machinery/telecomms/relay/preset/mining, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/mine/maintenance) +"ZK" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "Labor Camp APC"; + pixel_y = 23 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/plating, +/area/mine/laborcamp) +"ZN" = ( +/obj/machinery/mineral/processing_unit_console, +/turf/closed/wall, +/area/mine/production) + +(1,1,1) = {" +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +"} +(2,1,1) = {" +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +"} +(3,1,1) = {" +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +Lm +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +"} +(4,1,1) = {" +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +Lm +wz +wz +VT +VT +VT +Lm +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +"} +(5,1,1) = {" +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +Lm +wz +wz +wz +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +"} +(6,1,1) = {" +VT +VT +VT +Lm +Lm +VT +VT +VT +VT +VT +VT +VT +VT +Lm +wz +my +Lm +VT +VT +VT +VT +VT +Lm +Lm +Lm +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +"} +(7,1,1) = {" +VT +VT +VT +VT +VT +VT +VT +Lm +VT +VT +zI +zI +Lm +my +Lm +VT +VT +VT +VT +VT +VT +VT +Lm +Lm +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +Lm +VT +VT +VT +VT +"} +(8,1,1) = {" +VT +Lm +VT +VT +VT +Lm +VT +VT +VT +zI +zI +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +Lm +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +Lm +VT +VT +VT +VT +VT +VT +"} +(9,1,1) = {" +Lm +Lm +VT +Lm +Lm +VT +VT +VT +VT +zI +zI +VT +VT +zI +zI +VT +VT +zI +VT +Lm +VT +VT +VT +VT +VT +Lm +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +Lm +Lm +VT +Lm +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +"} +(10,1,1) = {" +VT +VT +VT +Lm +Lm +VT +VT +VT +zI +zI +zI +zI +zI +zI +zI +zI +zI +zI +zI +zI +zI +VT +VT +VT +VT +Lm +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +Lm +VT +VT +VT +VT +VT +Lm +VT +VT +VT +VT +VT +VT +VT +"} +(11,1,1) = {" +VT +VT +VT +VT +VT +VT +zI +zI +my +zI +zI +zI +zI +zI +zI +zI +zI +zI +zI +zI +zI +zI +Lm +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +Lm +VT +Lm +VT +VT +VT +VT +VT +VT +VT +"} +(12,1,1) = {" +VT +VT +VT +VT +VT +VT +VT +zI +zI +zI +my +zI +zI +zI +zI +zI +my +zI +zI +my +zI +zI +zI +VT +zI +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +Lm +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +"} +(13,1,1) = {" +VT +VT +VT +VT +VT +VT +Lm +VT +zI +zI +zI +my +my +my +my +my +my +my +my +my +zI +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +Lm +Lm +VT +VT +VT +VT +VT +VT +VT +"} +(14,1,1) = {" +VT +VT +VT +VT +VT +VT +VT +zI +zI +zI +zI +my +my +my +my +my +my +my +my +my +zI +zI +Lm +VT +VT +VT +VT +Lm +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +Lm +Lm +Lm +VT +Lm +VT +VT +VT +VT +VT +"} +(15,1,1) = {" +VT +VT +Lm +VT +VT +VT +VT +zI +zI +zI +zI +my +my +my +my +my +my +my +my +my +zI +zI +zI +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +Lm +Lm +Lm +VT +VT +VT +VT +VT +VT +VT +"} +(16,1,1) = {" +VT +VT +VT +VT +VT +VT +VT +VT +zI +zI +zI +my +my +my +my +my +my +my +my +my +zI +VT +VT +VT +VT +VT +Lm +VT +VT +VT +VT +VT +VT +Lm +Lm +Lm +Lm +VT +VT +VT +VT +VT +VT +VT +VT +VT +Lm +Lm +VT +VT +VT +VT +VT +VT +VT +"} +(17,1,1) = {" +VT +VT +VT +VT +VT +VT +VT +VT +zI +zI +my +my +my +my +my +my +my +mp +my +my +my +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +VT +VT +VT +VT +VT +VT +Lm +Lm +VT +VT +Lm +VT +VT +VT +VT +"} +(18,1,1) = {" +VT +VT +VT +VT +VT +VT +VT +VT +cd +cd +cd +cd +cd +Cy +cd +cd +cd +HO +cd +zI +zI +VT +VT +VT +VT +VT +Lm +wz +VT +VT +VT +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +"} +(19,1,1) = {" +JY +Lm +VT +VT +VT +VT +VT +Lm +cd +Te +CR +xh +cd +eE +cd +HU +cd +Jr +cd +my +wV +VT +VT +uJ +VT +Lm +Lm +wz +wz +VT +VT +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +"} +(20,1,1) = {" +JY +JY +Lm +VT +VT +VT +Lm +Lm +cd +Qx +NH +Yf +cd +VR +cd +at +cd +Op +cd +wV +wV +wV +VT +VT +VT +Lm +Lm +wz +wz +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +"} +(21,1,1) = {" +JY +JY +JY +JY +zx +zx +zx +cd +cd +cd +ci +cd +cd +cz +cd +Ga +NH +NH +Ya +Mn +Mn +Mn +Dv +Mn +nv +Ge +HR +VN +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +"} +(22,1,1) = {" +JY +JY +JY +JY +zx +wB +wB +cd +AH +NH +NH +NH +NH +NH +NH +kR +NH +NH +Ya +jD +EB +MM +LC +Mn +xH +dC +hf +VN +bH +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +"} +(23,1,1) = {" +JY +JY +JY +JY +cd +eh +aN +ow +NH +NH +NH +NH +vo +ly +xd +Hg +gs +gs +Ro +Uk +si +fN +TC +Mn +ML +dC +oy +VN +Zu +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +"} +(24,1,1) = {" +JY +JY +JY +JY +cd +gT +Xo +cd +fs +NH +Wt +xd +xd +Fx +Yf +uR +NH +NH +Ya +nm +Hx +mL +Yg +Mn +XR +dC +Ag +VN +Jc +HR +VN +Lm +Lm +Lm +Lm +Lm +Hk +Lm +Lm +Lm +Lm +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +"} +(25,1,1) = {" +JY +JY +JY +JY +cd +cd +cd +cd +cd +NH +NH +PY +NH +Mk +cd +Hh +Ya +Ya +Ya +LL +Hx +xS +Gt +Sp +FE +Em +cD +Ag +sm +uh +VN +Lm +Lm +Lm +Lm +KV +Zw +KV +Lm +Lm +Lm +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +"} +(26,1,1) = {" +JY +JY +JY +JY +cd +CH +CH +CH +cd +NH +Yr +cd +cd +kb +cd +Hh +Ya +ZK +Ho +oY +JJ +nJ +Ah +Qr +hQ +bI +hQ +hQ +WX +hv +VN +Lm +Lm +Lm +Lm +KV +Ag +KV +Lm +Lm +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +"} +(27,1,1) = {" +JY +JY +JY +JY +cd +Hq +NH +NH +BO +NH +ia +Rf +kj +sa +kj +HS +Ya +wt +RF +WL +Hx +IG +UJ +Sp +Ag +Ag +di +KR +hP +Ag +VN +VN +VN +XX +VN +KV +Hm +KV +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +"} +(28,1,1) = {" +JY +JY +JY +JY +cd +cd +sW +Le +cd +vy +cd +cd +cd +cd +cd +cd +Ya +Ya +Mn +kB +Oh +Hx +sR +Al +Al +Al +Al +LG +hP +Ag +VN +zy +If +DN +If +FE +qZ +KV +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +"} +(29,1,1) = {" +JY +JY +JY +JY +JY +cd +cd +cd +cd +NH +cd +Ab +tK +tK +my +my +my +zI +Sp +ny +ig +IK +re +Al +wC +wC +Al +Ag +hP +Ag +VN +Ru +Ag +Ag +Ag +Ag +Ag +KV +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +"} +(30,1,1) = {" +JY +JY +JY +JY +JY +JY +JY +JY +cd +Jr +cd +Ab +my +my +my +my +my +zI +Sp +Sp +Sp +Sp +Sp +Al +Uz +Ue +Al +EH +hP +aW +VN +Dr +Ag +uG +uG +Ag +cX +KV +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +"} +(31,1,1) = {" +JY +JY +JY +JY +JY +JY +JY +JY +cd +aX +cd +Ab +my +my +my +my +my +VT +VT +VT +VT +VT +Lm +Al +ZF +HE +gP +ON +tk +zY +Yi +MG +KO +uG +uG +Ag +Ag +KV +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +"} +(32,1,1) = {" +JY +JY +JY +JY +JY +JY +JY +JY +my +my +hy +my +my +my +my +my +VT +VT +VT +VT +VT +Lm +Ye +Al +WN +Ad +Al +cD +JP +FE +VN +YV +RP +Ag +Ag +Ag +oy +VN +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +"} +(33,1,1) = {" +JY +JY +JY +JY +JY +JY +JY +JY +my +my +my +my +my +my +my +my +my +VT +VT +VT +VT +Lm +wz +Al +FC +xA +Al +Zp +Sj +oy +VN +Pp +sx +eS +Cg +nH +hH +VN +wz +Lm +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +"} +(34,1,1) = {" +JY +JY +JY +JY +JY +JY +JY +JY +JY +JY +my +my +my +my +my +my +my +VT +VT +VT +VT +Lm +Lm +Al +Al +Al +Al +Ov +JP +Ag +VN +VN +VN +VN +VN +VN +VN +VN +VN +VN +Lm +Lm +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +"} +(35,1,1) = {" +JY +JY +JY +JY +JY +JY +JY +JY +JY +JY +my +my +my +my +my +my +my +VT +VT +VT +VT +VT +Lm +VN +HY +MF +VN +Ag +JH +cr +VN +TJ +zo +VN +TJ +zo +VN +TJ +zo +VN +Lm +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +"} +(36,1,1) = {" +JY +JY +JY +JY +JY +JY +JY +JY +JY +JY +my +my +my +my +my +my +my +my +VT +VT +VT +VT +Lm +KV +Ms +rU +se +EH +JP +Ag +VN +IY +Un +VN +IY +Ev +VN +IY +NB +VN +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +"} +(37,1,1) = {" +JY +JY +JY +JY +JY +JY +JY +JY +JY +JY +JY +JY +my +my +Ab +JY +my +jJ +VT +VT +VT +VT +Lm +KV +IS +lr +TI +MG +Qy +Ag +VN +WY +VN +VN +AQ +VN +VN +cn +VN +VN +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +"} +(38,1,1) = {" +JY +JY +JY +JY +JY +JY +JY +JY +JY +JY +JY +JY +JY +JY +JY +JY +jJ +jJ +JY +VT +VT +wz +Ye +VN +kS +jf +se +cD +JP +Ag +FE +Os +iv +FE +Os +Pq +FE +Os +cD +KV +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +"} +(39,1,1) = {" +JY +JY +JY +JY +JY +JY +JY +JY +JY +JY +JY +JY +JY +JY +JY +JY +JY +JY +JY +VT +VT +wz +VN +VN +VN +VN +VN +Ca +ik +oM +oM +XP +oM +oM +XP +AZ +oM +CA +cr +KV +Lm +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +"} +(40,1,1) = {" +JY +JY +JY +JY +JY +JY +JY +JY +JY +JY +JY +JY +JY +JY +JY +JY +JY +JY +VT +VT +VT +VT +VN +XU +UE +Lj +VN +mg +JH +cr +VN +VN +se +se +VN +VN +VN +YH +VN +VN +wz +Lm +Lm +Lm +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +"} +(41,1,1) = {" +JY +JY +JY +JY +JY +JY +JY +JY +JY +JY +JY +JY +JY +JY +JY +JY +VT +VT +VT +VT +VT +VT +VN +qm +aG +aG +VN +EH +JP +oy +VN +Cm +hm +zZ +fU +VN +bX +yT +VN +wz +Ye +wz +wz +Lm +Lm +Lm +Lm +VT +VT +VT +VT +VT +VT +VT +VT +"} +(42,1,1) = {" +JY +JY +JY +JY +JY +JY +JY +JY +JY +JY +JY +JY +JY +JY +Lm +VT +VT +VT +VT +VT +VT +VT +VN +MH +ID +dL +uI +Dd +nI +aW +se +hm +hm +Nk +hm +VN +mv +nN +VN +Lm +wz +wz +Lm +Lm +Lm +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +"} +(43,1,1) = {" +JY +JY +JY +JY +JY +JY +JY +JY +JY +JY +JY +JY +JY +Lm +VT +VT +VT +VT +Lm +Lm +VT +Lm +VN +aG +zh +pi +VN +UI +Sd +kF +AJ +sU +tr +qM +RH +VN +VN +Yy +VN +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +"} +(44,1,1) = {" +JY +JY +JY +JY +JY +JY +JY +JY +JY +JY +JY +JY +JY +VT +VT +VT +Lm +Lm +Lm +Lm +Lm +Lm +VN +Bo +aK +aK +VN +LZ +Sj +FE +se +hm +hm +rK +MV +VN +Mj +va +VN +VT +VT +VT +VT +Lm +Lm +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +"} +(45,1,1) = {" +JY +JY +JY +JY +JY +JY +Lm +VT +VT +JY +JY +JY +VT +VT +VT +Lm +Lm +Lm +Lm +Lm +Lm +Lm +VN +VN +VN +VN +VN +Ag +JP +Ag +VN +wE +hm +rf +hm +VN +qg +SO +VN +VT +VT +VT +VT +VT +Lm +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +"} +(46,1,1) = {" +JY +JY +JY +JY +JY +VT +VT +VT +VT +VT +Lm +Lm +VT +VT +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +VT +VT +KV +Ag +JP +Ag +VN +sP +Qi +Ii +qh +VN +VN +VN +VN +VT +VT +VT +VT +VT +VT +VT +VT +Lm +VT +VT +VT +VT +VT +VT +VT +"} +(47,1,1) = {" +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +VT +KV +aW +kH +kz +VN +KV +KV +KV +KV +VN +wz +wz +wz +VT +Lm +VT +VT +Lm +Lm +VT +Lm +Lm +Lm +VT +VT +VT +VT +VT +VT +"} +(48,1,1) = {" +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +VT +KV +KV +eP +KV +KV +Lm +Lm +Lm +Lm +wz +wz +wz +Lm +VT +VT +VT +VT +Lm +Lm +Lm +wz +Ye +Ye +Lm +Lm +VT +VT +VT +VT +"} +(49,1,1) = {" +VT +VT +VT +VT +VT +VT +VT +wz +wz +wz +VT +VT +VT +VT +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +VT +Lm +KV +CJ +KV +Lm +Lm +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +Lm +Ye +Ye +Ye +Ye +Ye +wz +wz +VT +VT +VT +"} +(50,1,1) = {" +wz +wz +wz +wz +wz +wz +wz +MD +wz +Lm +VT +VT +VT +VT +VT +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +VT +VT +VT +KV +JP +KV +Lm +VT +VT +VT +VT +VT +VT +VT +VT +VT +Lm +VT +Lm +Lm +Ye +Ye +Ye +Ye +Ye +Ye +Ye +Ye +Lm +VT +VT +"} +(51,1,1) = {" +MD +MD +MD +MD +MD +MD +MD +wz +Lm +VT +VT +VT +VT +VT +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +VT +VT +VT +KV +JP +KV +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +Lm +Lm +Ye +Ye +Ye +Ye +Ye +Ye +Ye +Lm +VT +VT +"} +(52,1,1) = {" +MD +MD +MD +MD +MD +MD +MD +wz +Lm +VT +VT +Lm +Lm +VT +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +VT +VT +KV +JP +KV +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +Lm +Ye +Ye +Ye +Ye +Ye +Ye +Ye +Lm +VT +VT +"} +(53,1,1) = {" +MD +MD +MD +MD +MD +MD +MD +wz +Lm +VT +Lm +Lm +VT +VT +VT +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +VT +VT +Ed +wd +Ed +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +Lm +Lm +Ye +Ye +wz +Ye +Lm +Lm +VT +VT +"} +(54,1,1) = {" +MD +MD +MD +MD +MD +MD +MD +wz +VT +VT +VT +VT +VT +VT +VT +Lm +Lm +Lm +Lm +Lb +Lm +Lm +Lm +Lm +VT +VT +VT +Ed +wd +Ed +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +Lm +Lm +Lm +Lm +Lm +VT +VT +VT +VT +"} +(55,1,1) = {" +MD +MD +MD +MD +MD +MD +MD +MD +wz +VT +Lm +VT +VT +VT +VT +VT +Lm +Lm +fm +Tm +Ed +Lm +Lm +VT +VT +VT +Lm +Ed +wd +Ed +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +Lm +Lm +Lm +VT +VT +VT +VT +VT +"} +(56,1,1) = {" +MD +MD +MD +MD +MD +MD +MD +MD +wz +Lm +Lm +VT +VT +VT +VT +VT +VT +Lm +Ed +es +Ed +Lm +VT +VT +VT +VT +Lm +Ed +aJ +Ed +Lm +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +Lm +VT +VT +VT +VT +VT +"} +(57,1,1) = {" +MD +MD +MD +MD +MD +MD +MD +MD +MD +wz +Lm +VT +VT +VT +VT +VT +VT +Ed +Ed +KQ +Ed +Ed +Lm +VT +VT +Lm +Ed +Ed +dZ +Ed +Ed +Lm +Lm +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +Lm +VT +VT +VT +VT +VT +"} +(58,1,1) = {" +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +wz +wz +wz +VT +VT +VT +Cd +Ed +tJ +II +Jo +Ed +Cd +Cd +Cd +Cd +Lc +Wf +Ww +Jo +Ed +Cd +Lm +Lm +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +"} +(59,1,1) = {" +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +wz +VT +VT +VT +Lm +Cd +dP +RC +es +wX +Wf +YM +GN +II +Nf +mN +Aj +wd +es +TG +Cd +Lm +Lm +Lm +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +Lm +VT +VT +VT +VT +VT +"} +(60,1,1) = {" +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +wz +VT +VT +VT +VT +Lm +Ed +wg +Bh +KG +nK +sj +sj +mi +GM +sj +Mc +pK +ME +Cj +yt +Cd +Lm +Lm +Lm +Lm +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +"} +(61,1,1) = {" +MD +MD +MD +MD +MD +MD +MD +MD +MD +wz +VT +VT +VT +VT +Lm +Lm +Ed +eL +PO +Aj +zN +Sq +qH +Aj +Eg +es +Vo +Jl +KS +es +sE +Cd +Cd +Cd +Cd +At +Lm +Lm +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +"} +(62,1,1) = {" +MD +MD +MD +MD +MD +MD +MD +MD +MD +wz +VT +VT +wz +Lm +bg +bg +bg +Hd +au +Hd +bg +av +Cd +oG +cf +fO +Vo +es +XN +es +Vs +Ed +tY +Vs +Ed +Lm +Lm +wz +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +"} +(63,1,1) = {" +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +wz +wz +wz +Lm +bg +pr +Kx +dk +vJ +JW +bg +VP +Cd +Cd +Bc +Cd +Bc +es +XN +es +lI +AS +qR +lI +Mw +Lm +Lm +wz +wz +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +"} +(64,1,1) = {" +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +wz +Lm +Lm +cA +xP +SY +jn +Ex +xv +bg +mI +Cd +OI +sz +gk +Wf +Yp +XN +es +Wf +Ed +lS +qc +Ed +Lm +Lm +Lm +wz +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +"} +(65,1,1) = {" +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +wz +VT +VT +Lm +cA +xP +Kl +CV +al +lj +bg +Cd +Cd +mw +es +es +es +es +iG +zN +ez +Cd +Cd +Cd +Cd +At +Lm +Lm +Lm +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +"} +(66,1,1) = {" +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +wz +VT +VT +Lm +bg +QD +PN +qb +KU +lu +bg +Ye +Cd +RI +es +yR +yF +me +Kb +Cd +Oj +Cd +Lm +Lm +Lm +Lm +Lm +Lm +Lm +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +Lm +VT +VT +VT +VT +VT +"} +(67,1,1) = {" +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +wz +VT +VT +Lm +bg +bg +bg +cA +kE +cA +bg +wz +Cd +Vj +es +Xr +Kk +iQ +Rv +NI +Kt +Cd +Lm +Lm +Lm +Lm +Lm +Lm +Lm +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +Lm +VT +VT +VT +VT +VT +"} +(68,1,1) = {" +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +wz +VT +VT +Lm +Lm +Lm +bg +qS +vE +VY +bg +wz +Cd +nR +SW +Cd +NI +ZN +NI +NI +Kt +Cd +Lm +Lm +Lm +Lm +Lm +Lm +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +Lm +VT +VT +VT +VT +VT +"} +(69,1,1) = {" +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +wz +wz +VT +VT +Lm +Lm +bg +Ik +KU +ap +bg +wz +Cd +XG +wj +rB +oo +JV +oo +oo +Ss +Cd +Lm +Lm +Lm +Lm +Lm +Lm +Lm +VT +VT +VT +VT +Lm +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +"} +(70,1,1) = {" +MD +MD +MD +MD +MD +MD +MD +MD +MD +wz +Lm +wz +wz +VT +VT +Lm +bg +cA +KP +cA +bg +wz +Cd +Cd +Cd +Cd +Cd +Cd +Cd +Cd +Cd +Cd +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +VT +VT +VT +Lm +VT +VT +VT +VT +VT +Lm +VT +VT +VT +VT +VT +"} +(71,1,1) = {" +MD +MD +MD +MD +MD +MD +MD +MD +wz +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Be +Lm +Lm +Lm +Be +wz +wz +Lm +Lm +VT +VT +VT +VT +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +VT +VT +VT +Lm +Lm +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +"} +(72,1,1) = {" +MD +MD +wz +wz +MD +MD +MD +wz +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +VT +VT +VT +VT +VT +VT +VT +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +VT +VT +VT +VT +Lm +Lm +VT +VT +VT +VT +VT +Lm +VT +VT +VT +VT +VT +"} +(73,1,1) = {" +MD +wz +Lm +Lm +wz +wz +MD +wz +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +VT +VT +VT +VT +VT +VT +VT +VT +Lm +Lm +Lm +Lm +Lm +Lm +Lm +VT +VT +VT +VT +Lm +Lm +VT +VT +VT +VT +Lm +Lm +Lm +VT +VT +VT +VT +"} +(74,1,1) = {" +wz +Lm +Lm +Lm +wz +Lm +wz +MD +wz +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +Lm +VT +VT +VT +VT +VT +VT +VT +VT +VT +VT +Lm +Lm +Lm +Lm +Lm +Lm +VT +VT +VT +VT +Lm +Lm +VT +VT +VT +VT +Lm +Lm +Lm +VT +VT +VT +VT +"} diff --git a/_maps/map_files/Mining/Lavaland.dmm b/_maps/map_files/Mining/Lavaland.dmm index b79f05cc69..d4b09ac046 100644 --- a/_maps/map_files/Mining/Lavaland.dmm +++ b/_maps/map_files/Mining/Lavaland.dmm @@ -74,842 +74,9 @@ "an" = ( /turf/closed/mineral/random/labormineral/volcanic, /area/lavaland/surface/outdoors) -"ao" = ( -/obj/machinery/power/apc{ - dir = 1; - name = "Labor Camp APC"; - pixel_y = 23 - }, -/obj/structure/cable{ - icon_state = "0-2" - }, -/turf/open/floor/plating, -/area/mine/laborcamp) -"ap" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/mine/laborcamp) -"aq" = ( -/turf/closed/wall, -/area/mine/laborcamp) -"ar" = ( -/obj/structure/table, -/turf/open/floor/plasteel/white, -/area/mine/laborcamp) -"as" = ( -/obj/structure/table, -/obj/item/storage/firstaid/regular, -/turf/open/floor/plasteel/white, -/area/mine/laborcamp) -"at" = ( -/obj/structure/bed, -/obj/item/bedsheet/medical, -/obj/machinery/camera{ - c_tag = "Labor Camp Medical"; - dir = 8; - network = list("labor") - }, -/turf/open/floor/plasteel/white, -/area/mine/laborcamp) -"au" = ( -/obj/structure/rack, -/obj/item/storage/bag/ore, -/obj/item/pickaxe, -/obj/item/flashlight, -/obj/item/clothing/glasses/meson, -/obj/item/mining_scanner, -/turf/open/floor/plasteel, -/area/mine/laborcamp) -"av" = ( -/obj/structure/rack, -/obj/item/storage/bag/ore, -/obj/item/flashlight, -/obj/item/pickaxe, -/obj/item/clothing/glasses/meson, -/obj/item/mining_scanner, -/turf/open/floor/plasteel, -/area/mine/laborcamp) -"aw" = ( -/turf/open/lava/smooth/lava_land_surface, -/area/lavaland/surface/outdoors/explored) -"ax" = ( -/turf/open/floor/plasteel/white, -/area/mine/laborcamp) -"ay" = ( -/obj/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/plasteel/white, -/area/mine/laborcamp) -"az" = ( -/turf/open/floor/plasteel, -/area/mine/laborcamp) "aA" = ( -/obj/machinery/portable_atmospherics/canister/oxygen, -/obj/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/mine/laborcamp) -"aB" = ( -/obj/machinery/door/airlock/medical/glass{ - name = "Infirmary" - }, -/turf/open/floor/plasteel/white, -/area/mine/laborcamp) -"aC" = ( -/obj/structure/closet/crate/internals, -/obj/item/tank/internals/emergency_oxygen, -/obj/item/tank/internals/emergency_oxygen, -/obj/item/tank/internals/emergency_oxygen, -/obj/item/tank/internals/emergency_oxygen, -/obj/item/clothing/mask/breath, -/obj/item/clothing/mask/breath, -/obj/item/clothing/mask/breath, -/obj/item/clothing/mask/breath, -/turf/open/floor/plasteel, -/area/mine/laborcamp) -"aD" = ( -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors/explored) -"aE" = ( -/obj/item/radio/intercom{ - desc = "Talk through this. It looks like it has been modified to not broadcast."; - name = "Prison Intercom (General)"; - pixel_y = 24; - prison_radio = 1 - }, -/turf/open/floor/plasteel, -/area/mine/laborcamp) -"aF" = ( -/obj/machinery/door/airlock{ - name = "Labor Camp Storage" - }, -/turf/open/floor/plasteel, -/area/mine/laborcamp) -"aG" = ( -/obj/structure/table, -/obj/item/trash/plate, -/obj/item/kitchen/fork, -/turf/open/floor/plasteel, -/area/mine/laborcamp) -"aH" = ( -/obj/structure/chair{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/mine/laborcamp) -"aI" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 4 - }, -/obj/machinery/door/airlock{ - name = "Labor Camp External Access" - }, -/turf/open/floor/plasteel, -/area/mine/laborcamp) -"aJ" = ( -/obj/machinery/light/small{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/mine/laborcamp) -"aK" = ( -/obj/structure/chair{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/mine/laborcamp) -"aL" = ( -/obj/machinery/door/airlock{ - name = "Vending" - }, -/turf/open/floor/plasteel, -/area/mine/laborcamp) -"aM" = ( -/obj/machinery/light/small, -/obj/effect/turf_decal/loading_area{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/mine/laborcamp) -"aN" = ( -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, -/area/mine/laborcamp) -"aO" = ( -/obj/machinery/camera{ - c_tag = "Labor Camp External"; - dir = 4; - network = list("labor") - }, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors) -"aP" = ( -/obj/machinery/vending/sustenance, -/turf/open/floor/plasteel, -/area/mine/laborcamp) -"aQ" = ( -/obj/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/mine/laborcamp) -"aR" = ( -/obj/machinery/shower{ - dir = 8 - }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel/white, -/area/mine/laborcamp) -"aS" = ( -/obj/machinery/mineral/unloading_machine{ - dir = 1; - icon_state = "unloader-corner"; - input_dir = 1; - output_dir = 2 - }, -/turf/open/floor/plating, -/area/mine/laborcamp) -"aT" = ( -/obj/structure/ore_box, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors/explored) -"aU" = ( -/obj/machinery/flasher{ - id = "labor" - }, -/turf/closed/wall, -/area/mine/laborcamp) -"aV" = ( -/obj/machinery/door/airlock{ - name = "Restroom" - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel, -/area/mine/laborcamp/security) -"aW" = ( -/obj/machinery/conveyor{ - id = "gulag" - }, -/turf/open/floor/plating, -/area/mine/laborcamp) -"aX" = ( -/obj/structure/closet/crate, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors/explored) -"aY" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 4 - }, -/obj/machinery/door/airlock/security/glass{ - name = "Labor Camp Shuttle Security Airlock"; - req_access_txt = "2" - }, -/turf/open/floor/plasteel, -/area/mine/laborcamp) -"aZ" = ( -/obj/machinery/light/small{ - dir = 1 - }, -/obj/machinery/button/door{ - id = "labor"; - name = "Labor Camp Lockdown"; - pixel_y = 28; - req_access_txt = "2" - }, -/turf/open/floor/plasteel, -/area/mine/laborcamp) -"ba" = ( -/obj/machinery/door/poddoor/preopen{ - id = "labor"; - name = "labor camp blast door" - }, -/turf/open/floor/plasteel, -/area/mine/laborcamp) -"bb" = ( -/obj/machinery/camera{ - c_tag = "Labor Camp Central"; - network = list("labor") - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ - dir = 6 - }, -/turf/open/floor/plasteel, -/area/mine/laborcamp) -"bc" = ( -/obj/machinery/conveyor_switch/oneway{ - id = "gulag" - }, -/turf/open/floor/plasteel, -/area/mine/laborcamp) -"bd" = ( -/obj/machinery/mineral/processing_unit_console, -/turf/closed/wall, -/area/mine/laborcamp) -"be" = ( -/obj/machinery/mineral/processing_unit{ - dir = 1 - }, -/turf/open/floor/plating, -/area/mine/laborcamp) -"bf" = ( -/turf/closed/wall, -/area/mine/eva) -"bg" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/mine/eva) -"bh" = ( -/obj/machinery/computer/shuttle/labor/one_way{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/mine/laborcamp) -"bi" = ( -/obj/structure/gulag_beacon, -/turf/open/floor/plasteel, -/area/mine/laborcamp) -"bj" = ( -/obj/machinery/status_display/evac{ - pixel_y = 32 - }, -/turf/open/floor/plasteel, -/area/mine/laborcamp) -"bk" = ( -/obj/effect/turf_decal/loading_area{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/mine/laborcamp) -"bl" = ( -/obj/machinery/conveyor{ - dir = 8; - id = "gulag" - }, -/turf/open/floor/plating, -/area/mine/laborcamp) -"bm" = ( -/obj/machinery/conveyor{ - dir = 10; - id = "gulag" - }, -/turf/open/floor/plating, -/area/mine/laborcamp) -"bn" = ( -/obj/structure/table, -/obj/item/pickaxe, -/obj/item/gps/mining, -/obj/item/gps/mining, -/obj/item/gps/mining, -/obj/item/gps/mining, -/obj/effect/turf_decal/tile/purple{ - dir = 1 - }, -/obj/effect/turf_decal/tile/purple{ - dir = 4 - }, -/obj/effect/turf_decal/tile/purple{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/mine/eva) -"bo" = ( -/obj/machinery/suit_storage_unit/mining, -/obj/effect/turf_decal/tile/brown{ - dir = 1 - }, -/obj/effect/turf_decal/tile/brown{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/mine/eva) -"bp" = ( -/obj/machinery/suit_storage_unit/mining, -/obj/effect/turf_decal/tile/purple{ - dir = 1 - }, -/obj/effect/turf_decal/tile/purple, -/obj/effect/turf_decal/tile/purple{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/mine/eva) -"bq" = ( -/turf/closed/wall, -/area/mine/production) -"br" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/mine/production) -"bs" = ( -/obj/machinery/camera{ - c_tag = "EVA"; - dir = 4; - network = list("mine") - }, -/obj/machinery/airalarm{ - dir = 4; - pixel_x = -23 - }, -/obj/machinery/light{ - dir = 8 - }, -/obj/structure/table, -/obj/item/storage/toolbox/mechanical{ - pixel_x = -2; - pixel_y = -1 - }, -/obj/effect/turf_decal/tile/brown{ - dir = 1 - }, -/obj/effect/turf_decal/tile/brown{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/mine/eva) -"bt" = ( -/turf/open/floor/plasteel, -/area/mine/eva) -"bu" = ( -/obj/machinery/light_switch{ - pixel_x = 27 - }, -/obj/effect/turf_decal/tile/brown, -/obj/effect/turf_decal/tile/brown{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/mine/eva) -"bv" = ( -/obj/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/mine/eva) -"bw" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/mine/laborcamp/security) -"bx" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 4 - }, -/obj/machinery/door/airlock/security/glass{ - name = "Labor Camp Shuttle Prisoner Airlock" - }, -/turf/open/floor/plasteel, -/area/mine/laborcamp) -"by" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, -/turf/open/floor/plasteel, -/area/mine/laborcamp) -"bz" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{ - dir = 1 - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/turf/open/floor/plasteel, -/area/mine/production) -"bA" = ( -/turf/closed/wall/r_wall, -/area/mine/laborcamp) -"bB" = ( -/obj/structure/toilet{ - dir = 8 - }, -/obj/machinery/light/small{ - dir = 1 - }, -/turf/open/floor/plating, -/area/mine/laborcamp/security) -"bC" = ( -/obj/machinery/airalarm{ - pixel_y = 23 - }, -/obj/machinery/computer/shuttle/mining{ - req_access = null - }, -/obj/effect/turf_decal/tile/purple{ - dir = 1 - }, -/obj/effect/turf_decal/tile/purple{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/mine/production) -"bD" = ( -/obj/structure/closet/crate, -/obj/item/dice/d4, -/obj/effect/turf_decal/tile/brown{ - dir = 1 - }, -/obj/effect/turf_decal/tile/brown{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/mine/production) -"bE" = ( -/obj/structure/reagent_dispensers/watertank, -/obj/effect/turf_decal/tile/purple, -/turf/open/floor/plasteel, -/area/mine/production) -"bF" = ( -/obj/effect/spawner/structure/window, -/turf/open/floor/plating, -/area/mine/eva) -"bG" = ( -/obj/structure/table, -/obj/item/stack/packageWrap, -/obj/item/stack/packageWrap, -/obj/item/stack/packageWrap, -/obj/item/hand_labeler, -/obj/effect/turf_decal/tile/purple{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/mine/eva) -"bH" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on, -/turf/open/floor/plasteel, -/area/mine/eva) -"bI" = ( -/obj/structure/tank_dispenser/oxygen, -/obj/effect/turf_decal/tile/purple, -/turf/open/floor/plasteel, -/area/mine/eva) -"bJ" = ( -/obj/machinery/light/small{ - dir = 1 - }, -/obj/effect/turf_decal/tile/purple{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/mine/eva) -"bK" = ( -/obj/structure/extinguisher_cabinet{ - pixel_x = -5; - pixel_y = 30 - }, -/obj/machinery/shower{ - dir = 8 - }, -/obj/effect/turf_decal/tile/purple, -/turf/open/floor/plasteel, -/area/mine/eva) -"bL" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, -/obj/machinery/door/airlock/highsecurity{ - name = "Labor Camp Monitoring"; - req_access_txt = "2"; - security_level = 6 - }, -/turf/open/floor/plasteel, -/area/mine/laborcamp) -"bM" = ( -/turf/closed/wall, -/area/mine/laborcamp/security) -"bN" = ( -/obj/structure/sign/warning/docking, -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/mine/production) -"bO" = ( -/obj/item/beacon, -/obj/effect/turf_decal/tile/purple{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/mine/production) -"bP" = ( -/turf/open/floor/plasteel, -/area/mine/production) -"bQ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/tile/brown, -/obj/effect/turf_decal/tile/brown{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/mine/production) -"bR" = ( -/obj/machinery/door/airlock/mining/glass{ - name = "Mining Station EVA"; - req_access_txt = "54" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/mine/eva) -"bS" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/tile/brown{ - dir = 1 - }, -/obj/effect/turf_decal/tile/brown{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/turf/open/floor/plasteel, -/area/mine/eva) -"bT" = ( -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/machinery/light{ - dir = 1 - }, -/obj/machinery/power/apc{ - dir = 1; - name = "Labor Camp Security APC"; - pixel_y = 23 - }, -/obj/structure/cable{ - icon_state = "0-4" - }, -/turf/open/floor/plasteel, -/area/mine/laborcamp/security) -"bU" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ - dir = 9 - }, -/turf/open/floor/plasteel, -/area/mine/eva) -"bV" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9 - }, -/turf/open/floor/plasteel, -/area/mine/eva) -"bW" = ( -/obj/effect/turf_decal/tile/brown, -/obj/effect/turf_decal/tile/brown{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/mine/eva) -"bX" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 4 - }, -/obj/machinery/door/airlock/external{ - glass = 1; - name = "Mining External Airlock"; - opacity = 0; - req_access_txt = "54" - }, -/turf/open/floor/plasteel, -/area/mine/eva) -"bY" = ( -/obj/effect/turf_decal/tile/brown{ - dir = 1 - }, -/obj/effect/turf_decal/tile/brown{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/mine/eva) -"bZ" = ( -/turf/closed/mineral/random/volcanic, -/area/lavaland/surface/outdoors/explored) -"ca" = ( -/turf/closed/wall/r_wall, -/area/mine/laborcamp/security) -"cb" = ( -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/obj/structure/table, -/obj/item/restraints/handcuffs, -/turf/open/floor/plasteel, -/area/mine/laborcamp/security) -"cc" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/mob/living/simple_animal/bot/secbot/beepsky{ - desc = "Powered by the tears and sweat of laborers."; - name = "Prison Ofitser" - }, -/turf/open/floor/plasteel, -/area/mine/laborcamp/security) -"cd" = ( -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/mine/laborcamp/security) -"ce" = ( -/obj/machinery/computer/secure_data, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/mine/laborcamp/security) -"cf" = ( -/obj/machinery/computer/security/labor, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/mine/laborcamp/security) -"cg" = ( -/obj/machinery/computer/prisoner, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red, -/turf/open/floor/plasteel, -/area/mine/laborcamp/security) -"ch" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel, -/area/mine/production) -"ci" = ( -/obj/machinery/power/apc{ - name = "Mining EVA APC"; - pixel_x = 1; - pixel_y = -23 - }, -/obj/machinery/recharge_station, -/obj/effect/turf_decal/tile/purple{ - dir = 1 - }, -/obj/structure/cable, -/obj/structure/cable{ - icon_state = "1-4" - }, -/turf/open/floor/plasteel, -/area/mine/eva) -"cj" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 4 - }, -/obj/machinery/door/airlock/external{ - glass = 1; - name = "Mining Shuttle Airlock"; - opacity = 0 - }, -/turf/open/floor/plasteel, -/area/mine/production) -"ck" = ( -/obj/effect/turf_decal/tile/brown{ - dir = 1 - }, -/obj/effect/turf_decal/tile/brown{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/mine/production) -"cl" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3, -/turf/open/floor/plasteel, -/area/mine/laborcamp) -"cm" = ( -/obj/machinery/mech_bay_recharge_port, -/obj/structure/cable{ - icon_state = "0-8" - }, -/turf/open/floor/plating, -/area/mine/eva) -"cn" = ( -/obj/effect/turf_decal/tile/purple{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/mine/production) -"co" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel, -/area/mine/production) -"cp" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 1 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel, -/area/mine/laborcamp/security) -"cq" = ( -/turf/open/floor/mech_bay_recharge_floor, -/area/mine/eva) -"cr" = ( -/obj/effect/turf_decal/tile/purple{ - dir = 4 - }, -/obj/machinery/computer/mech_bay_power_console{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/mine/eva) -"cs" = ( -/obj/structure/closet/emcloset, -/obj/effect/turf_decal/tile/purple{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/mine/eva) -"ct" = ( -/obj/structure/ore_box, -/obj/effect/turf_decal/tile/purple{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/mine/eva) +/turf/template_noop, +/area/template_noop) "cu" = ( /obj/item/pickaxe, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, @@ -918,1694 +85,6 @@ /obj/structure/ore_box, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) -"cw" = ( -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/obj/machinery/vending/security, -/turf/open/floor/plasteel, -/area/mine/laborcamp/security) -"cx" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, -/turf/open/floor/plasteel, -/area/mine/laborcamp/security) -"cy" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel, -/area/mine/production) -"cz" = ( -/obj/structure/table, -/obj/item/storage/fancy/donut_box, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/mine/laborcamp/security) -"cA" = ( -/turf/open/floor/plasteel, -/area/mine/laborcamp/security) -"cB" = ( -/obj/structure/chair/office{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/mine/laborcamp/security) -"cC" = ( -/obj/structure/table, -/obj/effect/turf_decal/tile/red, -/obj/item/paper_bin, -/obj/item/pen, -/turf/open/floor/plasteel, -/area/mine/laborcamp/security) -"cD" = ( -/obj/effect/turf_decal/tile/purple{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/mine/production) -"cE" = ( -/obj/structure/chair/comfy/brown{ - dir = 8 - }, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/mine/laborcamp/security) -"cF" = ( -/obj/effect/turf_decal/tile/brown, -/obj/effect/turf_decal/tile/brown{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/mine/production) -"cG" = ( -/obj/machinery/light{ - dir = 8 - }, -/obj/structure/closet/secure_closet/freezer/gulag_fridge, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/mine/laborcamp/security) -"cH" = ( -/obj/effect/turf_decal/tile/purple{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/mine/production) -"cI" = ( -/obj/effect/turf_decal/tile/purple, -/obj/effect/turf_decal/tile/purple{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/mine/production) -"cJ" = ( -/obj/machinery/door/airlock{ - name = "Closet" - }, -/turf/open/floor/plating, -/area/mine/production) -"cK" = ( -/obj/machinery/light/small{ - dir = 1 - }, -/turf/open/floor/plating, -/area/mine/production) -"cL" = ( -/obj/machinery/space_heater, -/turf/open/floor/plating, -/area/mine/production) -"cM" = ( -/turf/closed/wall, -/area/mine/living_quarters) -"cN" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, -/turf/open/floor/plasteel, -/area/mine/laborcamp) -"cO" = ( -/obj/item/radio/intercom{ - dir = 8; - name = "Station Intercom (General)"; - pixel_x = -28 - }, -/obj/effect/turf_decal/tile/brown{ - dir = 1 - }, -/obj/effect/turf_decal/tile/brown{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/mine/production) -"cP" = ( -/obj/structure/extinguisher_cabinet{ - pixel_x = 30 - }, -/obj/effect/turf_decal/tile/brown, -/obj/effect/turf_decal/tile/brown{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/mine/production) -"cQ" = ( -/turf/closed/wall/r_wall, -/area/mine/maintenance) -"cR" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/mine/living_quarters) -"cS" = ( -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/obj/machinery/camera{ - c_tag = "Labor Camp Security Office"; - dir = 1; - network = list("labor") - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/mine/laborcamp/security) -"cT" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/mine/laborcamp/security) -"cU" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, -/obj/machinery/door/airlock/security/glass{ - name = "Labor Camp Monitoring"; - req_access_txt = "2" - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel, -/area/mine/laborcamp/security) -"cV" = ( -/turf/open/floor/plating, -/area/mine/living_quarters) -"cW" = ( -/obj/structure/reagent_dispensers/fueltank, -/turf/open/floor/plating, -/area/mine/living_quarters) -"cX" = ( -/obj/machinery/power/smes{ - charge = 5e+006 - }, -/obj/structure/cable{ - icon_state = "0-4" - }, -/turf/open/floor/plating, -/area/mine/living_quarters) -"cY" = ( -/obj/machinery/light/small{ - dir = 1 - }, -/obj/structure/closet/crate/secure/loot, -/obj/structure/sign/warning/electricshock{ - pixel_y = 32 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plating, -/area/mine/living_quarters) -"cZ" = ( -/obj/machinery/mineral/equipment_vendor, -/obj/effect/turf_decal/tile/brown{ - dir = 1 - }, -/obj/effect/turf_decal/tile/brown, -/obj/effect/turf_decal/tile/brown{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/mine/production) -"da" = ( -/obj/machinery/mineral/mint, -/turf/open/floor/plasteel, -/area/mine/production) -"db" = ( -/obj/machinery/light/small{ - dir = 1 - }, -/obj/effect/turf_decal/loading_area{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/mine/production) -"dc" = ( -/obj/structure/closet/crate, -/obj/machinery/airalarm{ - pixel_y = 23 - }, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, -/area/mine/production) -"dd" = ( -/obj/structure/extinguisher_cabinet{ - pixel_x = -5; - pixel_y = 30 - }, -/obj/structure/table, -/obj/item/paper/fluff/stations/lavaland/orm_notice, -/turf/open/floor/plasteel, -/area/mine/production) -"de" = ( -/obj/structure/ore_box, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, -/area/mine/production) -"df" = ( -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, -/area/mine/production) -"dg" = ( -/turf/open/floor/circuit, -/area/mine/maintenance) -"dh" = ( -/obj/machinery/portable_atmospherics/canister/oxygen, -/obj/structure/cable{ - icon_state = "2-8" - }, -/turf/open/floor/plating, -/area/mine/living_quarters) -"di" = ( -/obj/machinery/telecomms/relay/preset/mining, -/obj/machinery/light/small{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/mine/maintenance) -"dj" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on, -/turf/open/floor/plasteel/dark, -/area/mine/maintenance) -"dk" = ( -/obj/machinery/airalarm{ - pixel_y = 24 - }, -/turf/open/floor/circuit, -/area/mine/maintenance) -"dl" = ( -/obj/machinery/light/small{ - dir = 8 - }, -/obj/machinery/airalarm{ - pixel_y = 23 - }, -/obj/machinery/iv_drip, -/obj/effect/turf_decal/tile/blue{ - dir = 1 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/turf/open/floor/plasteel/white, -/area/mine/living_quarters) -"dm" = ( -/obj/effect/turf_decal/tile/blue{ - dir = 1 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/turf/open/floor/plasteel/white, -/area/mine/living_quarters) -"dn" = ( -/obj/structure/table, -/obj/item/storage/firstaid/toxin{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 1 - }, -/obj/effect/turf_decal/tile/blue, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/turf/open/floor/plasteel/white, -/area/mine/living_quarters) -"do" = ( -/obj/machinery/power/apc{ - dir = 8; - name = "Mining Station Starboard Wing APC"; - pixel_x = -25; - pixel_y = 2 - }, -/obj/machinery/light{ - dir = 8 - }, -/obj/effect/turf_decal/tile/purple{ - dir = 1 - }, -/obj/effect/turf_decal/tile/purple{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "0-4" - }, -/turf/open/floor/plasteel, -/area/mine/production) -"dp" = ( -/obj/machinery/power/apc{ - dir = 1; - name = "Mining Communications APC"; - pixel_x = 1; - pixel_y = 23 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3, -/obj/structure/cable{ - icon_state = "0-2" - }, -/turf/open/floor/plasteel/dark, -/area/mine/maintenance) -"dq" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 1 - }, -/turf/open/floor/plating, -/area/mine/living_quarters) -"dr" = ( -/obj/machinery/atmospherics/components/unary/tank/air{ - dir = 8 - }, -/turf/open/floor/plating, -/area/mine/living_quarters) -"ds" = ( -/obj/machinery/power/terminal{ - dir = 1 - }, -/obj/machinery/power/port_gen/pacman{ - anchored = 1 - }, -/obj/structure/cable{ - icon_state = "0-2" - }, -/turf/open/floor/plating, -/area/mine/living_quarters) -"dt" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 6 - }, -/obj/machinery/meter, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plating, -/area/mine/living_quarters) -"du" = ( -/obj/effect/turf_decal/loading_area, -/turf/open/floor/plasteel, -/area/mine/production) -"dv" = ( -/obj/effect/turf_decal/loading_area{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/mine/production) -"dw" = ( -/obj/machinery/light/small{ - dir = 4 - }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, -/area/mine/production) -"dx" = ( -/obj/machinery/mineral/equipment_vendor, -/obj/effect/turf_decal/tile/purple, -/obj/effect/turf_decal/tile/purple{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/mine/production) -"dy" = ( -/obj/effect/turf_decal/tile/brown{ - dir = 1 - }, -/obj/effect/turf_decal/tile/brown{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"dz" = ( -/obj/machinery/light_switch{ - pixel_y = -25 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9 - }, -/turf/open/floor/circuit, -/area/mine/maintenance) -"dA" = ( -/obj/machinery/camera{ - c_tag = "Communications Relay"; - dir = 8; - network = list("mine") - }, -/turf/open/floor/circuit, -/area/mine/maintenance) -"dB" = ( -/obj/structure/closet/crate/freezer, -/obj/item/reagent_containers/blood, -/obj/item/reagent_containers/blood{ - pixel_x = -3; - pixel_y = -3 - }, -/obj/item/reagent_containers/blood/AMinus, -/obj/item/reagent_containers/blood/BMinus{ - pixel_x = -4; - pixel_y = 4 - }, -/obj/item/reagent_containers/blood/BPlus{ - pixel_x = 1; - pixel_y = 2 - }, -/obj/item/reagent_containers/blood/OMinus, -/obj/item/reagent_containers/blood/OPlus{ - pixel_x = -2; - pixel_y = -1 - }, -/obj/item/reagent_containers/blood/random, -/obj/item/reagent_containers/blood/random, -/obj/item/reagent_containers/blood/random, -/obj/machinery/camera{ - c_tag = "Sleeper Room"; - dir = 1; - network = list("mine") - }, -/turf/open/floor/plasteel/white, -/area/mine/living_quarters) -"dC" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ - dir = 5 - }, -/turf/open/floor/plasteel/white, -/area/mine/living_quarters) -"dD" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ - dir = 10 - }, -/turf/open/floor/plasteel/white, -/area/mine/living_quarters) -"dE" = ( -/obj/structure/table, -/obj/item/storage/firstaid/regular, -/obj/effect/turf_decal/tile/blue, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/turf/open/floor/plasteel/white, -/area/mine/living_quarters) -"dF" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"dG" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ - dir = 9 - }, -/turf/open/floor/plasteel, -/area/mine/laborcamp) -"dH" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ - dir = 5 - }, -/obj/structure/cable{ - icon_state = "1-4" - }, -/turf/open/floor/circuit, -/area/mine/maintenance) -"dI" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 5 - }, -/turf/open/floor/plating, -/area/mine/living_quarters) -"dJ" = ( -/obj/effect/turf_decal/tile/purple{ - dir = 1 - }, -/obj/effect/turf_decal/tile/purple{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/mine/production) -"dK" = ( -/obj/machinery/light{ - dir = 4 - }, -/obj/machinery/camera{ - c_tag = "Shuttle Docking Foyer"; - dir = 8; - network = list("mine") - }, -/obj/machinery/newscaster{ - pixel_x = 30; - pixel_y = 1 - }, -/obj/effect/turf_decal/tile/brown, -/obj/effect/turf_decal/tile/brown{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/mine/production) -"dL" = ( -/obj/structure/closet/crate{ - icon_state = "crateopen" - }, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, -/area/mine/production) -"dM" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on, -/turf/open/floor/plasteel, -/area/mine/production) -"dN" = ( -/obj/machinery/camera{ - c_tag = "Processing Area Room"; - dir = 8; - network = list("mine") - }, -/obj/item/radio/intercom{ - dir = 8; - name = "Station Intercom (General)"; - pixel_x = 28 - }, -/obj/effect/turf_decal/tile/brown, -/obj/effect/turf_decal/tile/brown{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/mine/production) -"dO" = ( -/obj/machinery/mineral/unloading_machine{ - dir = 1; - icon_state = "unloader-corner"; - input_dir = 1; - output_dir = 2 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/turf/open/floor/plating, -/area/mine/production) -"dP" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ - dir = 10 - }, -/obj/machinery/bluespace_beacon, -/obj/structure/cable{ - icon_state = "2-8" - }, -/turf/open/floor/plasteel/dark, -/area/mine/maintenance) -"dQ" = ( -/obj/effect/spawner/structure/window, -/turf/open/floor/plating, -/area/mine/living_quarters) -"dR" = ( -/obj/machinery/door/airlock/medical/glass{ - name = "Infirmary" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, -/turf/open/floor/plasteel/white, -/area/mine/living_quarters) -"dS" = ( -/obj/machinery/power/port_gen/pacman{ - anchored = 1 - }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/mine/living_quarters) -"dT" = ( -/obj/machinery/atmospherics/components/binary/pump/on, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plating, -/area/mine/living_quarters) -"dU" = ( -/obj/machinery/door/airlock/maintenance{ - name = "Mining Station Communications"; - req_access_txt = "48" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel, -/area/mine/maintenance) -"dV" = ( -/obj/effect/spawner/structure/window, -/turf/open/floor/plating, -/area/mine/production) -"dW" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel, -/area/mine/production) -"dX" = ( -/obj/machinery/conveyor_switch/oneway{ - id = "mining_internal"; - name = "mining conveyor" - }, -/obj/effect/turf_decal/tile/purple, -/obj/effect/turf_decal/tile/purple{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/mine/production) -"dY" = ( -/obj/machinery/conveyor{ - id = "mining_internal" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plating, -/area/mine/production) -"dZ" = ( -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"ea" = ( -/obj/effect/turf_decal/tile/purple{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"eb" = ( -/obj/machinery/door/airlock/maintenance{ - name = "Mining Station Maintenance"; - req_access_txt = "48" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plating, -/area/mine/living_quarters) -"ec" = ( -/obj/effect/turf_decal/tile/purple{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"ed" = ( -/obj/machinery/camera{ - c_tag = "Crew Area Hallway"; - network = list("mine") - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"ee" = ( -/obj/machinery/airalarm{ - pixel_y = 23 - }, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"ef" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/tile/brown{ - dir = 1 - }, -/obj/effect/turf_decal/tile/brown{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"eg" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, -/obj/machinery/door/airlock/mining/glass{ - name = "Processing Area"; - req_access_txt = "48" - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/turf/open/floor/plasteel, -/area/mine/production) -"eh" = ( -/obj/structure/extinguisher_cabinet{ - pixel_x = -5; - pixel_y = 30 - }, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"ei" = ( -/obj/machinery/power/apc{ - dir = 1; - name = "Mining Station Port Wing APC"; - pixel_x = 1; - pixel_y = 23 - }, -/obj/structure/cable{ - icon_state = "0-2" - }, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"ej" = ( -/obj/machinery/camera{ - c_tag = "Crew Area Hallway East"; - network = list("mine") - }, -/obj/effect/turf_decal/tile/purple{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"ek" = ( -/obj/effect/turf_decal/tile/purple, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"el" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/mine/laborcamp) -"em" = ( -/obj/machinery/light{ - dir = 4 - }, -/obj/effect/turf_decal/tile/brown, -/obj/effect/turf_decal/tile/brown{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/mine/production) -"en" = ( -/obj/machinery/mineral/processing_unit_console, -/turf/closed/wall, -/area/mine/production) -"eo" = ( -/obj/machinery/mineral/processing_unit{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/turf/open/floor/plating, -/area/mine/production) -"ep" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/tile/brown{ - dir = 1 - }, -/obj/effect/turf_decal/tile/brown{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"eq" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, -/obj/effect/turf_decal/tile/brown{ - dir = 4 - }, -/obj/effect/turf_decal/tile/brown{ - dir = 1 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel, -/area/mine/production) -"er" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ - dir = 4 - }, -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/structure/cable{ - icon_state = "0-4" - }, -/turf/open/floor/plating, -/area/mine/living_quarters) -"es" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/cable{ - icon_state = "1-4" - }, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"et" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"eu" = ( -/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden/layer3, -/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/cable{ - icon_state = "1-4" - }, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"ev" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"ew" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"ex" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"ey" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"ez" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{ - dir = 1 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/cable{ - icon_state = "1-4" - }, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"eA" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/structure/cable{ - icon_state = "1-4" - }, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"eB" = ( -/obj/effect/turf_decal/tile/brown, -/obj/effect/turf_decal/tile/brown{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"eC" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ - dir = 4 - }, -/obj/machinery/door/airlock/glass{ - name = "Mining Station Bridge" - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"eD" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3, -/turf/open/floor/plasteel, -/area/mine/production) -"eE" = ( -/obj/effect/turf_decal/tile/brown{ - dir = 1 - }, -/obj/effect/turf_decal/tile/brown{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"eF" = ( -/obj/effect/turf_decal/tile/brown, -/obj/effect/turf_decal/tile/brown{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/mine/production) -"eG" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/mine/production) -"eH" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/tile/purple, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/mine/production) -"eI" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9 - }, -/obj/effect/turf_decal/tile/brown, -/obj/effect/turf_decal/tile/brown{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ - dir = 9 - }, -/turf/open/floor/plasteel, -/area/mine/production) -"eJ" = ( -/obj/effect/turf_decal/tile/purple, -/obj/effect/turf_decal/tile/purple{ - dir = 4 - }, -/obj/effect/turf_decal/tile/purple{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/mine/production) -"eK" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/tile/brown, -/obj/effect/turf_decal/tile/brown{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"eL" = ( -/obj/effect/turf_decal/tile/purple{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"eM" = ( -/obj/machinery/light, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"eN" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"eO" = ( -/obj/machinery/light/small, -/obj/effect/turf_decal/tile/purple{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"eP" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/mine/production) -"eQ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, -/obj/machinery/door/airlock/glass, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"eR" = ( -/obj/machinery/door/airlock/glass{ - name = "Break Room" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"eS" = ( -/obj/machinery/airalarm{ - dir = 1; - pixel_y = -22 - }, -/obj/machinery/mineral/equipment_vendor, -/turf/open/floor/plasteel, -/area/mine/production) -"eT" = ( -/obj/structure/closet/crate{ - icon_state = "crateopen" - }, -/obj/machinery/light, -/obj/effect/turf_decal/tile/brown, -/obj/effect/turf_decal/tile/brown{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/mine/production) -"eU" = ( -/obj/structure/closet/crate, -/obj/effect/turf_decal/tile/purple, -/obj/effect/turf_decal/tile/purple{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/mine/production) -"eV" = ( -/obj/effect/turf_decal/tile/purple, -/turf/open/floor/plasteel, -/area/mine/production) -"eW" = ( -/obj/effect/turf_decal/loading_area{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/mine/production) -"eX" = ( -/obj/machinery/conveyor{ - dir = 8; - id = "mining_internal" - }, -/obj/structure/plasticflaps, -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/turf/open/floor/plating, -/area/mine/production) -"eY" = ( -/obj/machinery/conveyor{ - dir = 8; - id = "mining_internal" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plating, -/area/mine/production) -"eZ" = ( -/obj/machinery/conveyor{ - dir = 10; - id = "mining_internal" - }, -/obj/machinery/light/small{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/corner{ - dir = 1 - }, -/turf/open/floor/plating, -/area/mine/production) -"fa" = ( -/obj/machinery/newscaster{ - pixel_y = 32 - }, -/obj/structure/chair, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"fb" = ( -/obj/structure/extinguisher_cabinet{ - pixel_x = -5; - pixel_y = 30 - }, -/obj/effect/turf_decal/tile/purple{ - dir = 4 - }, -/obj/machinery/light{ - dir = 1 - }, -/obj/structure/chair, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"fc" = ( -/obj/machinery/airalarm{ - pixel_y = 23 - }, -/obj/effect/turf_decal/tile/purple{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"fd" = ( -/obj/machinery/camera{ - c_tag = "Public Shuttle Lobby"; - network = list("mine") - }, -/obj/effect/turf_decal/tile/brown{ - dir = 1 - }, -/obj/effect/turf_decal/tile/brown, -/obj/effect/turf_decal/tile/brown{ - dir = 4 - }, -/obj/structure/table, -/obj/item/gps/mining, -/obj/item/gps/mining, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"fe" = ( -/obj/structure/bed, -/obj/item/bedsheet/brown, -/obj/machinery/airalarm{ - pixel_y = 23 - }, -/turf/open/floor/carpet, -/area/mine/living_quarters) -"ff" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ - dir = 6 - }, -/turf/open/floor/carpet, -/area/mine/living_quarters) -"fg" = ( -/obj/machinery/door/airlock{ - id_tag = "miningdorm1"; - name = "Room 1" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"fh" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/tile/brown{ - dir = 1 - }, -/obj/effect/turf_decal/tile/brown{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"fi" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"fj" = ( -/obj/machinery/vending/snack, -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"fk" = ( -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"fl" = ( -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"fm" = ( -/obj/machinery/vending/cigarette, -/obj/machinery/newscaster{ - pixel_y = 32 - }, -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"fn" = ( -/obj/structure/table, -/obj/machinery/microwave{ - pixel_y = 6 - }, -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"fo" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, -/turf/open/floor/plasteel, -/area/mine/laborcamp) -"fp" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"fq" = ( -/obj/item/radio/intercom{ - dir = 8; - name = "Station Intercom (General)"; - pixel_x = 28 - }, -/obj/effect/turf_decal/tile/purple{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"fr" = ( -/obj/structure/table, -/turf/open/floor/carpet, -/area/mine/living_quarters) -"fs" = ( -/obj/machinery/light/small{ - dir = 4 - }, -/obj/machinery/button/door{ - id = "miningdorm1"; - name = "Door Bolt Control"; - normaldoorcontrol = 1; - pixel_x = 25; - specialfunctions = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ - dir = 1 - }, -/turf/open/floor/carpet, -/area/mine/living_quarters) -"ft" = ( -/obj/machinery/camera{ - c_tag = "Dormitories"; - dir = 4; - network = list("mine") - }, -/obj/effect/turf_decal/tile/purple{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"fu" = ( -/obj/structure/chair, -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"fv" = ( -/obj/structure/table, -/obj/machinery/reagentgrinder, -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"fw" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/mine/laborcamp/security) -"fx" = ( -/turf/closed/mineral/random/labormineral/volcanic, -/area/lavaland/surface/outdoors/explored) -"fy" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ - dir = 4 - }, -/obj/machinery/door/airlock/glass{ - name = "Mining Station Bridge" - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/mine/production) -"fz" = ( -/obj/structure/table, -/obj/item/clothing/glasses/meson, -/obj/item/storage/bag/ore, -/obj/item/pickaxe, -/obj/item/mining_scanner, -/obj/item/flashlight, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"fA" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3, -/turf/open/floor/plasteel, -/area/mine/eva) -"fB" = ( -/obj/structure/table, -/obj/item/gps/mining, -/obj/item/gps/mining, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"fC" = ( -/obj/structure/chair{ - dir = 4 - }, -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"fD" = ( -/obj/structure/table, -/obj/item/reagent_containers/food/drinks/beer{ - pixel_x = 7; - pixel_y = 5 - }, -/obj/item/reagent_containers/food/drinks/beer{ - pixel_x = -1; - pixel_y = 9 - }, -/obj/item/reagent_containers/food/drinks/beer{ - pixel_x = -8 - }, -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ - dir = 5 - }, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"fE" = ( -/obj/structure/chair{ - dir = 8 - }, -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"fF" = ( -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"fG" = ( -/obj/structure/table, -/obj/item/storage/box/donkpockets, -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"fH" = ( -/obj/machinery/door/airlock{ - id_tag = "miningdorm2"; - name = "Room 2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"fI" = ( -/obj/item/radio/intercom{ - dir = 8; - name = "Station Intercom (General)"; - pixel_x = -28 - }, -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"fJ" = ( -/obj/machinery/camera{ - c_tag = "Crew Area"; - dir = 1; - network = list("mine") - }, -/obj/machinery/computer/security/telescreen/entertainment{ - pixel_y = -32 - }, -/obj/machinery/light, -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"fK" = ( -/obj/machinery/airalarm{ - dir = 1; - pixel_y = -22 - }, -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"fL" = ( -/obj/structure/sink{ - dir = 8; - pixel_x = 11 - }, -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"fM" = ( -/obj/machinery/light/small{ - dir = 4 - }, -/obj/machinery/button/door{ - id = "miningdorm2"; - name = "Door Bolt Control"; - normaldoorcontrol = 1; - pixel_x = 25; - specialfunctions = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ - dir = 1 - }, -/turf/open/floor/carpet, -/area/mine/living_quarters) -"fN" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/light{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"fO" = ( -/obj/machinery/door/airlock{ - id_tag = "miningdorm3"; - name = "Room 3" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"fP" = ( -/obj/machinery/light/small{ - dir = 4 - }, -/obj/machinery/button/door{ - id = "miningdorm3"; - name = "Door Bolt Control"; - normaldoorcontrol = 1; - pixel_x = 25; - specialfunctions = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ - dir = 1 - }, -/turf/open/floor/carpet, -/area/mine/living_quarters) "fQ" = ( /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors/unexplored/danger) @@ -2624,24 +103,6 @@ }, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) -"fU" = ( -/obj/effect/turf_decal/tile/brown{ - dir = 1 - }, -/obj/effect/turf_decal/tile/brown{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/mine/production) "fV" = ( /turf/closed/indestructible/riveted/boss/see_through, /area/lavaland/surface/outdoors) @@ -2650,14 +111,6 @@ /obj/structure/stone_tile/slab, /turf/open/indestructible/boss, /area/lavaland/surface/outdoors) -"fX" = ( -/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3, -/obj/structure/cable{ - icon_state = "1-8" - }, -/turf/open/floor/plasteel, -/area/mine/production) "gj" = ( /obj/structure/stone_tile/surrounding_tile{ dir = 1 @@ -2786,23 +239,6 @@ }, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) -"gX" = ( -/obj/structure/toilet{ - dir = 8 - }, -/turf/open/floor/plasteel/freezer, -/area/mine/living_quarters) -"gY" = ( -/obj/docking_port/stationary{ - dir = 8; - dwidth = 2; - height = 5; - id = "laborcamp_away"; - name = "labor camp"; - width = 9 - }, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors/explored) "hg" = ( /obj/structure/stone_tile/surrounding, /obj/structure/stone_tile/center/cracked, @@ -2848,19 +284,6 @@ }, /turf/open/indestructible/boss, /area/lavaland/surface/outdoors) -"ie" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"il" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, -/turf/open/floor/plasteel, -/area/mine/eva) "ir" = ( /obj/structure/stone_tile/slab/cracked{ dir = 5 @@ -3028,15 +451,6 @@ }, /turf/open/lava/smooth/lava_land_surface, /area/lavaland/surface/outdoors) -"jI" = ( -/obj/effect/turf_decal/tile/brown, -/obj/effect/turf_decal/tile/brown{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, -/turf/open/floor/plasteel, -/area/mine/living_quarters) "jL" = ( /obj/structure/stone_tile/surrounding_tile, /obj/structure/stone_tile/surrounding_tile{ @@ -3059,17 +473,6 @@ /obj/structure/stone_tile/center/cracked, /turf/open/lava/smooth/lava_land_surface, /area/lavaland/surface/outdoors) -"jO" = ( -/obj/docking_port/stationary{ - dir = 8; - dwidth = 3; - height = 7; - id = "lavaland_common_away"; - name = "Mining base public dock"; - width = 7 - }, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors) "jQ" = ( /obj/structure/stone_tile{ dir = 1 @@ -3105,12 +508,6 @@ /obj/structure/fluff/drake_statue/falling, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) -"km" = ( -/obj/structure/chair{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/mine/living_quarters) "ko" = ( /obj/structure/stone_tile/block/cracked{ dir = 8 @@ -3302,13 +699,6 @@ }, /turf/open/lava/smooth/lava_land_surface, /area/lavaland/surface/outdoors) -"lB" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3, -/obj/effect/turf_decal/tile/purple{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/mine/production) "lD" = ( /obj/structure/stone_tile/block/cracked{ dir = 4 @@ -3352,13 +742,6 @@ }, /turf/open/lava/smooth/lava_land_surface, /area/lavaland/surface/outdoors) -"lN" = ( -/obj/machinery/light{ - dir = 4 - }, -/obj/effect/turf_decal/tile/brown, -/turf/open/floor/plasteel, -/area/mine/living_quarters) "lP" = ( /obj/structure/stone_tile/block/cracked{ dir = 4 @@ -3396,14 +779,6 @@ }, /turf/open/lava/smooth/lava_land_surface, /area/lavaland/surface/outdoors) -"lU" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/atmos_waste{ - dir = 4; - piping_layer = 3 - }, -/obj/structure/lattice/catwalk, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/mine/living_quarters) "lW" = ( /obj/structure/stone_tile/block/cracked, /obj/structure/stone_tile/block/cracked{ @@ -3439,15 +814,6 @@ }, /turf/open/lava/smooth/lava_land_surface, /area/lavaland/surface/outdoors) -"mi" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ - dir = 5 - }, -/turf/open/floor/plasteel, -/area/mine/laborcamp/security) "mk" = ( /obj/structure/stone_tile/block/cracked{ dir = 8 @@ -3813,579 +1179,10 @@ }, /turf/open/indestructible/boss, /area/lavaland/surface/outdoors) -"ns" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable{ - icon_state = "0-4" - }, -/turf/open/floor/plating, -/area/mine/production) -"nE" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = -12 - }, -/obj/structure/mirror{ - pixel_x = -28 - }, -/turf/open/floor/plasteel/freezer, -/area/mine/living_quarters) -"nG" = ( -/obj/item/twohanded/required/kirbyplants/random, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"nJ" = ( -/obj/structure/sign/poster/official/random{ - pixel_y = 32 - }, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"nO" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ - dir = 4 - }, -/turf/open/floor/plasteel/freezer, -/area/mine/living_quarters) -"nZ" = ( -/obj/machinery/door/window/southright, -/obj/machinery/shower{ - pixel_y = 22 - }, -/turf/open/floor/plasteel/freezer, -/area/mine/living_quarters) -"oZ" = ( -/obj/machinery/light/small{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ - dir = 8 - }, -/turf/open/floor/plasteel/freezer, -/area/mine/living_quarters) -"pg" = ( -/obj/machinery/door/airlock/external{ - glass = 1; - name = "Mining External Airlock"; - opacity = 0 - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/turf/open/floor/plasteel, -/area/mine/production) -"pm" = ( -/obj/structure/table, -/obj/item/tank/internals/emergency_oxygen{ - pixel_x = 5; - pixel_y = 3 - }, -/obj/item/tank/internals/emergency_oxygen, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"qq" = ( -/obj/machinery/light, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/obj/effect/turf_decal/tile/red, -/turf/open/floor/plasteel, -/area/mine/laborcamp/security) -"qE" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/mine/laborcamp/security) -"qZ" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 4 - }, -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"rf" = ( -/obj/machinery/door/airlock/external{ - glass = 1; - name = "Mining External Airlock"; - opacity = 0 - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/mine/production) -"rs" = ( -/obj/effect/turf_decal/tile/brown{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"rF" = ( -/obj/effect/turf_decal/tile/brown{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"rY" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/tile/brown{ - dir = 1 - }, -/obj/effect/turf_decal/tile/brown{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"sF" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/turf/open/floor/plasteel, -/area/mine/laborcamp/security) -"sL" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 4 - }, -/obj/machinery/door/airlock/external{ - name = "Lavaland Shuttle Airlock" - }, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"sV" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/turf/open/floor/plasteel, -/area/mine/production) -"tg" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/cable{ - icon_state = "0-8" - }, -/turf/open/floor/plating, -/area/mine/production) -"uy" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable{ - icon_state = "0-4" - }, -/turf/open/floor/plating, -/area/mine/laborcamp/security) -"vk" = ( -/obj/effect/turf_decal/tile/red, -/turf/open/floor/plasteel, -/area/mine/laborcamp/security) -"vE" = ( -/obj/item/twohanded/required/kirbyplants/random, -/obj/effect/turf_decal/tile/brown{ - dir = 1 - }, -/obj/effect/turf_decal/tile/brown{ - dir = 4 - }, -/obj/effect/turf_decal/tile/brown{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"vP" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/mine/production) -"xc" = ( -/obj/machinery/light/small{ - dir = 1 - }, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/mine/production) -"zc" = ( -/obj/effect/turf_decal/tile/purple{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"zS" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"CS" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/cable{ - icon_state = "0-4" - }, -/turf/open/floor/plating, -/area/mine/production) -"Dn" = ( -/obj/effect/turf_decal/tile/brown{ - dir = 8 - }, -/obj/effect/turf_decal/tile/brown{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"DM" = ( -/obj/effect/turf_decal/tile/brown{ - dir = 8 - }, -/obj/effect/turf_decal/tile/brown, -/obj/effect/turf_decal/tile/brown{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"Et" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{ - dir = 1 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"EH" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"FB" = ( -/obj/structure/table, -/obj/effect/turf_decal/tile/red, -/obj/machinery/recharger, -/turf/open/floor/plasteel, -/area/mine/laborcamp/security) -"FX" = ( -/obj/structure/chair{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"Gr" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/mine/production) -"GC" = ( -/obj/machinery/camera{ - c_tag = "Crew Area Hallway West"; - dir = 1; - network = list("mine") - }, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"Hk" = ( -/obj/structure/displaycase, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"HO" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 - }, -/obj/machinery/door/airlock/external{ - name = "Lavaland Shuttle Airlock" - }, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"Iv" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/mine/laborcamp/security) -"IY" = ( -/obj/machinery/cryopod{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/mine/laborcamp) -"Ki" = ( -/obj/effect/turf_decal/tile/blue{ - dir = 1 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3, -/turf/open/floor/plasteel/white, -/area/mine/living_quarters) -"Ky" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ - dir = 6 - }, -/turf/open/floor/plasteel, -/area/mine/production) -"KS" = ( -/obj/structure/closet/emcloset, -/obj/effect/turf_decal/tile/purple{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/mine/production) -"LW" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/turf/open/floor/plating, -/area/mine/living_quarters) -"Mc" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/structure/cable{ - icon_state = "0-4" - }, -/turf/open/floor/plating, -/area/mine/living_quarters) -"My" = ( -/obj/machinery/door/airlock{ - id_tag = "miningbathroom"; - name = "Restroom" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ - dir = 4 - }, -/turf/open/floor/plasteel/freezer, -/area/mine/living_quarters) -"MX" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/turf/open/floor/plasteel, -/area/mine/production) -"NC" = ( -/obj/effect/turf_decal/tile/brown, -/obj/effect/turf_decal/tile/brown{ - dir = 8 - }, -/obj/effect/turf_decal/tile/brown{ - dir = 4 - }, -/obj/structure/displaycase, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"NU" = ( -/obj/machinery/atmospherics/pipe/manifold4w/supply, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"OJ" = ( -/obj/structure/table, -/obj/item/cigbutt, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"Pd" = ( -/obj/machinery/button/door{ - id = "miningbathroom"; - name = "Door Bolt Control"; - normaldoorcontrol = 1; - pixel_y = -25; - specialfunctions = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ - dir = 4 - }, -/turf/open/floor/plasteel/freezer, -/area/mine/living_quarters) -"Pr" = ( -/obj/machinery/light/small{ - dir = 4 - }, -/obj/effect/turf_decal/tile/purple{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/mine/production) -"PR" = ( -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/obj/effect/turf_decal/tile/red, -/obj/structure/closet/secure_closet/labor_camp_security, -/turf/open/floor/plasteel, -/area/mine/laborcamp/security) -"Qj" = ( -/obj/machinery/computer/shuttle/mining/common{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"Qo" = ( -/obj/machinery/shower{ - dir = 8 - }, -/obj/structure/extinguisher_cabinet{ - pixel_x = 30 - }, -/obj/effect/turf_decal/tile/purple{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/mine/production) -"Rn" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/mine/production) -"RD" = ( -/obj/machinery/door/airlock{ - name = "Restroom" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ - dir = 4 - }, -/turf/open/floor/plasteel/freezer, -/area/mine/living_quarters) -"RR" = ( -/obj/item/bikehorn{ - color = "#000"; - desc = "A horn off of a bicycle. This one has been charred to hell and back, yet somehow it still honks."; - name = "charred bike horn" - }, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors/explored) -"RW" = ( -/obj/effect/turf_decal/tile/brown{ - dir = 4 - }, -/obj/effect/turf_decal/tile/brown{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/mine/production) -"Se" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable{ - icon_state = "0-2" - }, -/turf/open/floor/plating, -/area/mine/living_quarters) -"Sj" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/light/small, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ - dir = 4 - }, -/turf/open/floor/plasteel/freezer, -/area/mine/living_quarters) -"SI" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"Tp" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ - dir = 4 - }, -/obj/structure/lattice/catwalk, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/mine/living_quarters) -"Ty" = ( -/obj/machinery/door/window/southleft, -/obj/machinery/shower{ - pixel_y = 22 - }, -/turf/open/floor/plasteel/freezer, -/area/mine/living_quarters) -"Tz" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel, -/area/mine/laborcamp/security) -"TW" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/mine/production) -"TX" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ - dir = 5 - }, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"Ub" = ( -/obj/structure/statue{ - desc = "A lifelike statue of a horrifying monster."; - dir = 8; - icon = 'icons/mob/lavaland/lavaland_monsters.dmi'; - icon_state = "goliath"; - name = "goliath" - }, -/turf/open/floor/plasteel, -/area/mine/living_quarters) +"ol" = ( +/obj/effect/landmark/stationroom/lavaland/station, +/turf/template_noop, +/area/template_noop) "Uq" = ( /obj/docking_port/stationary{ area_type = /area/lavaland/surface/outdoors; @@ -4398,108 +1195,6 @@ }, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) -"UP" = ( -/obj/effect/turf_decal/tile/brown{ - dir = 8 - }, -/obj/effect/turf_decal/tile/brown, -/turf/open/floor/plasteel, -/area/mine/production) -"US" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"Vk" = ( -/obj/effect/turf_decal/tile/brown{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/mine/production) -"Vz" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable{ - icon_state = "0-8" - }, -/turf/open/floor/plating, -/area/mine/production) -"Wp" = ( -/obj/docking_port/stationary{ - dir = 8; - dwidth = 3; - height = 10; - id = "mining_away"; - name = "lavaland mine"; - width = 7 - }, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors) -"WA" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 - }, -/obj/machinery/door/airlock{ - name = "Labor Camp External Access" - }, -/turf/open/floor/plasteel, -/area/mine/laborcamp) -"WB" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 - }, -/obj/machinery/door/airlock/security/glass{ - name = "Labor Camp Shuttle Security Airlock"; - req_access_txt = "2" - }, -/turf/open/floor/plasteel, -/area/mine/laborcamp) -"WC" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 - }, -/obj/machinery/door/airlock/security/glass{ - name = "Labor Camp Shuttle Prisoner Airlock" - }, -/turf/open/floor/plasteel, -/area/mine/laborcamp) -"WD" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 - }, -/obj/machinery/door/airlock/external{ - glass = 1; - name = "Mining External Airlock"; - opacity = 0; - req_access_txt = "54" - }, -/turf/open/floor/plasteel, -/area/mine/eva) -"WE" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 - }, -/obj/machinery/door/airlock/external{ - glass = 1; - name = "Mining Shuttle Airlock"; - opacity = 0 - }, -/turf/open/floor/plasteel, -/area/mine/production) -"YT" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/closed/wall, -/area/mine/living_quarters) -"Zt" = ( -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/turf/open/floor/plasteel, -/area/mine/laborcamp/security) (1,1,1) = {" aa @@ -4702,61 +1397,61 @@ aj aj aj aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +ol "} (2,1,1) = {" aa @@ -4959,61 +1654,61 @@ aj aj aj aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA "} (3,1,1) = {" aa @@ -5216,61 +1911,61 @@ aj aj aj aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -ab -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA "} (4,1,1) = {" aa @@ -5473,61 +2168,61 @@ aj aj aj aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -ab -ai -ai -aj -aj -aj -ab -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA "} (5,1,1) = {" aa @@ -5730,61 +2425,61 @@ aj aj aj aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -ab -ai -ai -ai -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA "} (6,1,1) = {" aa @@ -5987,61 +2682,61 @@ aj aj aj aj -aj -aj -aj -ab -ab -aj -aj -aj -aj -aj -aj -aj -aj -ab -ai -aD -ab -aj -aj -aj -aj -aj -ab -ab -ab -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA "} (7,1,1) = {" aa @@ -6244,61 +2939,61 @@ aj aj aj aj -aj -aj -aj -aj -aj -aj -aj -ab -aj -aj -aw -aw -ab -aD -ab -aj -aj -aj -aj -aj -aj -aj -ab -ab -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -ab -aj -aj -aj -aj +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA "} (8,1,1) = {" aa @@ -6501,61 +3196,61 @@ aj aj aj aj -aj -ab -aj -aj -aj -ab -aj -aj -aj -aw -aw -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -ab -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -ab -aj -aj -aj -aj -aj -aj +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA "} (9,1,1) = {" aa @@ -6758,61 +3453,61 @@ aj aj aj aj -ab -ab -aj -ab -ab -aj -aj -aj -aj -aw -aw -aj -aj -aw -aw -aj -aj -aw -aj -ab -aj -aj -aj -aj -aj -ab -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -ab -ab -aj -ab -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA "} (10,1,1) = {" aa @@ -7015,61 +3710,61 @@ aj aj aj aj -aj -aj -aj -ab -ab -aj -aj -aj -aw -aw -aw -aw -aw -aw -aw -aw -aw -aw -aw -aw -aw -aj -aj -aj -aj -ab -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -ab -aj -aj -aj -aj -aj -ab -aj -aj -aj -aj -aj -aj -aj +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA "} (11,1,1) = {" aa @@ -7272,61 +3967,61 @@ aj aj aj aj -aj -aj -aj -aj -aj -aj -aw -aw -aD -aw -aw -aw -aw -aw -aw -aw -aw -aw -aw -aw -aw -aw -ab -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -ab -aj -ab -aj -aj -aj -aj -aj -aj -aj +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA "} (12,1,1) = {" aa @@ -7529,61 +4224,61 @@ aj aj aj aj -aj -aj -aj -aj -aj -aj -aj -aw -aw -aw -aD -aw -aw -aw -aw -aw -aD -aw -aw -aD -aw -aw -aw -aj -aw -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -ab -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA "} (13,1,1) = {" aa @@ -7786,61 +4481,61 @@ aj aj aj ab -aj -aj -aj -aj -aj -aj -ab -aj -aw -aw -aw -aD -aD -aD -aD -aD -aD -aD -aD -aD -aw -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -ab -ab -aj -aj -aj -aj -aj -aj -aj +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA "} (14,1,1) = {" aa @@ -8043,61 +4738,61 @@ aj aj ab ab -aj -aj -aj -aj -aj -aj -aj -aw -aw -aw -aw -aD -aD -aD -aD -aD -aD -aD -aD -aD -aw -aw -ab -aj -aj -aj -aj -ab -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -ab -ab -ab -aj -ab -aj -aj -aj -aj -aj +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA "} (15,1,1) = {" aa @@ -8300,61 +4995,61 @@ aj aj aj aj -aj -aj -ab -aj -aj -aj -aj -aw -aw -aw -aw -aD -aD -aD -aD -aD -aD -aD -aD -aD -aw -aw -aw -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -ab -ab -ab -aj -aj -aj -aj -aj -aj -aj +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA "} (16,1,1) = {" aa @@ -8557,61 +5252,61 @@ aj aj aj aj -aj -aj -aj -aj -aj -aj -aj -aj -aw -aw -aw -aD -aD -aD -aD -aD -aD -aD -aD -aD -aw -aj -aj -aj -aj -aj -ab -aj -aj -aj -aj -aj -aj -ab -ab -ab -ab -aj -aj -aj -aj -aj -aj -aj -aj -aj -ab -ab -aj -aj -aj -aj -aj -aj -aj +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA "} (17,1,1) = {" aa @@ -8814,61 +5509,61 @@ aj aj aj aj -aj -aj -aj -aj -aj -aj -aj -aj -aw -aw -aD -aD -aD -aD -aD -aD -aD -gY -aD -aD -aD -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -ab -ab -ab -ab -ab -ab -ab -ab -aj -aj -aj -aj -aj -aj -ab -ab -aj -aj -ab -aj -aj -aj -aj +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA "} (18,1,1) = {" aa @@ -9071,61 +5766,61 @@ aj aj ab aj -aj -aj -aj -aj -aj -aj -aj -aj -aq -aq -aq -aq -aq -aY -aq -aq -aq -bx -aq -aw -aw -aj -aj -aj -aj -aj -ab -ai -aj -aj -aj -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA "} (19,1,1) = {" aa @@ -9328,61 +6023,61 @@ an an ab ab -an -ab -aj -aj -aj -aj -aj -ab -aq -aG -aK -aP -aq -aZ -aq -bh -aq -aJ -aq -aD -bZ -aj -aj -RR -aj -ab -ab -ai -ai -aj -aj -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA "} (20,1,1) = {" aa @@ -9585,61 +6280,61 @@ an an an an -an -an -ab -aj -aj -aj -ab -ab -aq -aH -az -aQ -aq -WB -aq -bi -aq -WC -aq -bZ -bZ -bZ -aj -aj -aj -ab -ab -ai -ai -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA "} (21,1,1) = {" aa @@ -9842,61 +6537,61 @@ an an an an -an -an -an -an -ap -ap -ap -aq -aq -aq -aL -aq -aq -ba -aq -bj -az -az -bA -ca -ca -ca -uy -ca -Se -Mc -LW -cM -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA "} (22,1,1) = {" aa @@ -10099,61 +6794,61 @@ an an an an -an -an -an -an -ap -ar -ar -aq -IY -az -az -az -az -az -az -el -az -az -bA -cb -cw -cG -cz -ca -OJ -SI -nG -cM -lU -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA "} (23,1,1) = {" aa @@ -10356,61 +7051,61 @@ an an an an -an -an -an -an -aq -as -ax -aB -az -az -az -az -aU -bb -cN -fo -by -by -bL -cc -cx -mi -cE -ca -km -SI -eM -cM -Tp -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA "} (24,1,1) = {" aa @@ -10613,61 +7308,61 @@ an an an an -an -an -an -an -aq -at -ay -aq -aE -az -cl -cN -cN -dG -aQ -bk -az -az -bA -cd -cA -fw -cS -ca -nJ -SI -dZ -cM -er -LW -cM -ab -ab -ab -ab -ab -jO -ab -ab -ab -ab -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA "} (25,1,1) = {" aa @@ -10870,61 +7565,61 @@ an an an an -an -an -an -an -aq -aq -aq -aq -aq -az -az -aR -az -bc -aq -bl -bA -bA -bA -bT -cA -qE -cT -bw -eL -dy -ec -dZ -ie -DM -cM -ab -ab -ab -ab -cR -sL -cR -ab -ab -ab -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA "} (26,1,1) = {" aa @@ -11127,61 +7822,61 @@ an an an an -an -an -an -an -aq -au -au -au -aq -az -aM -aq -aq -bd -aq -bl -bA -ao -aV -Zt -Tz -cp -sF -cU -EH -dF -EH -EH -es -GC -cM -ab -ab -ab -ab -cR -dZ -cR -ab -ab -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA "} (27,1,1) = {" aa @@ -11384,61 +8079,61 @@ an an an an -an -an -an -an -aq -av -az -az -aF -az -aN -aS -aW -be -aW -bm -bA -bB -bM -ce -cA -Iv -vk -bw -dZ -dZ -lN -rF -et -dZ -cM -cM -cM -YT -cM -cR -HO -cR -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA "} (28,1,1) = {" aa @@ -11641,61 +8336,61 @@ an an an an -an -an -an -an -aq -aq aA -aC -aq -aI -aq -aq -aq -aq -aq -aq -bA -bA -ca -cf -cB -cA -qq -cQ -cQ -cQ -cQ -rs -et -dZ -cM -vE -FX -Qj -FX -eL -Dn -cR -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA "} (29,1,1) = {" aa @@ -11898,61 +8593,61 @@ an an an an -an -an -an -an -an -aq -aq -aq -aq -az -aq -aT -aX -aX -aD -aD -aD -aw -bw -cg -cC -FB -PR -cQ -dg -dg -cQ -dZ -et -dZ -cM -fa -dZ -dZ -dZ -dZ -dZ -cR -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA "} (30,1,1) = {" aa @@ -12155,61 +8850,61 @@ an an an an -an -an -an -an -an -an -an -an -aq -aJ -aq -aT -aD -aD -aD -aD -aD -aw -bw -bw -bw -bw -bw -cQ -dp -dH -cQ -ea -et -ek -cM -fb -dZ -fz -fz -dZ -Ub -cR -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA "} (31,1,1) = {" aa @@ -12412,61 +9107,61 @@ an an an an -an -an -an -an -an -an -an -an -aq -WA -aq -aT -aD -aD -aD -aD -aD -aj -aj -aj -aj -aj -ab -cQ -di -dP -dU -rY -eu -eK -eQ -ef -TX -fz -fz -dZ -dZ -cR -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA "} (32,1,1) = {" aa @@ -12669,61 +9364,61 @@ an an an an -an -an -an -an -an -an -an -an -aD -aD -aO -aD -aD -aD -aD -aD -aj -aj -aj -aj -aj -ab -ad -cQ -dj -dz -cQ -ec -ev -eL -cM -fc -zS -dZ -dZ -dZ -eM -cM -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA "} (33,1,1) = {" aa @@ -12926,61 +9621,61 @@ an an an an -an -an -an -an -an -an -an -an -aD -aD -aD -aD -aD -aD -aD -aD -aD -aj -aj -aj -aj -ab -ai -cQ -dk -dA -cQ -ed -ew -eM -cM -fd -fq -fB -pm -Hk -NC -cM -ai -ab -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA "} (34,1,1) = {" aa @@ -13183,61 +9878,61 @@ an an an an -an -an -an -an -an -an -an -an -an -an -aD -aD -aD -aD -aD -aD -aD -aj -aj -aj -aj -ab -ab -cQ -cQ -cQ -cQ -ee -ev -dZ -cM -cM -cM -cM -cM -cM -cM -cM -cM -cM -ab -ab -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA "} (35,1,1) = {" aa @@ -13440,61 +10135,61 @@ an an an an -an -an -an -an -an -an -an -an -an -an -aD -aD -aD -aD -aD -aD -aD -aj -aj -aj -aj -aj -ab -cM -dl -dB -cM -dZ -ex -fp -cM -fe -fr -cM -fe -fr -cM -fe -fr -cM -ab -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA "} (36,1,1) = {" aa @@ -13697,61 +10392,61 @@ an an an an -an -an -an -an -an -an -an -an -an -an -aD -aD -aD -aD -aD -aD -aD -aD -aj -aj -aj -aj -ab -cR -Ki -dC -dQ -ea -ev -dZ -cM -ff -fs -cM -ff -fM -cM -ff -fP -cM -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA "} (37,1,1) = {" aa @@ -13954,61 +10649,61 @@ an an an an -an -an -an -an -an -an -an -an -an -an -an -an -aD -aD -aT -an -aD -fx -aj -aj -aj -aj -ab -cR -dm -dD -dR -ef -ey -dZ -cM -fg -cM -cM -fH -cM -cM -fO -cM -cM -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA "} (38,1,1) = {" aa @@ -14211,61 +10906,61 @@ an an an an -an -an -an -an -an -an -an -an -an -an -an -an -an -an -an -an -fx -fx -an -aj -aj -ai -ad -cM -dn -dE -dQ -ec -ev -dZ -eL -fh -ft -eL -fh -zc -eL -fh -ec -cR -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA "} (39,1,1) = {" aa @@ -14468,61 +11163,61 @@ an an an an -an -an -an -an -an -an -an -an -an -an -an -an -an -an -an -an -an -an -an -aj -aj -ai -cM -cM -cM -cM -cM -ei -ez -eN -eN -fi -eN -eN -fi -fN -eN -NU -fp -cR -ab -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA "} (40,1,1) = {" aa @@ -14725,61 +11420,61 @@ an an an an -an -an -an -an -an -an -an -an -an -an -an -an -an -an -an -an -an -an -aj -aj -aj -aj -cM -cX -ds -dS -cM -eh -ex -fp -cM -cM -dQ -dQ -cM -cM -cM -RD -cM -cM -ai -ab -ab -ab -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA "} (41,1,1) = {" aa @@ -14982,61 +11677,61 @@ an an an an -an -an -an -an -an -an -an -an -an -an -an -an -an -an -an -an -aj -aj -aj -aj -aj -aj -cM -cY -cV -cV -cM -ea -ev -eM -cM -fj -fk -qZ -fI -cM -Ty -nO -cM -ai -ad -ai -ai -ab -ab -ab -ab -aj -aj -aj -aj -aj -aj -aj -aj +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA "} (42,1,1) = {" aa @@ -15239,61 +11934,61 @@ an an an an -an -an -an -an -an -an -an -an -an -an -an -an -an -an -ab -aj -aj -aj -aj -aj -aj -aj -cM -dh -dt -dT -eb -ep -eA -ek -dQ -fk -fk -fC -fk -cM -nZ -Sj -cM -ab -ai -ai -ab -ab -ab -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA "} (43,1,1) = {" aa @@ -15496,61 +12191,61 @@ an an an an -an -an -an -an -an -an -an -an -an -an -an -an -an -ab -aj -aj -aj -aj -ab -ab -aj -ab -cM -cV -dq -dI -cM -ej -Et -jI -eR -fl -fu -fD -fJ -cM -cM -My -cM -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA "} (44,1,1) = {" aa @@ -15753,61 +12448,61 @@ an an an an -an -an -an -an -an -an -an -an -an -an -an -an -an -aj -aj -aj -ab -ab -ab -ab -ab -ab -cM -cW -dr -dr -cM -US -ew -eL -dQ -fk -fk -fE -fK -cM -nE -Pd -cM -aj -aj -aj -aj -ab -ab -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA "} (45,1,1) = {" aa @@ -16010,61 +12705,61 @@ an an an an -an -an -an -an -an -an -ab -aj -aj -an -an -an -aj -aj -aj -ab -ab -ab -ab -ab -ab -ab -cM -cM -cM -cM -cM -dZ -ev -dZ -cM -fm -fk -fF -fk -cM -gX -oZ -cM -aj -aj -aj -aj -aj -ab -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA "} (46,1,1) = {" aa @@ -16267,61 +12962,61 @@ aj aj aj aj -an -an -an -an -an -aj -aj -aj -aj -aj -ab -ab -aj -aj -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -aj -aj -cR -dZ -ev -dZ -cM -fn -fv -fG -fL -cM -cM -cM -cM -aj -aj -aj -aj -aj -aj -aj -aj -ab -aj -aj -aj -aj -aj -aj -aj +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA "} (47,1,1) = {" aa @@ -16524,61 +13219,61 @@ aj aj aj aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -aj -cR -ek -eB -eO -cM -cR -cR -cR -cR -cM -ai -ai -ai -aj -ab -aj -aj -ab -ab -aj -ab -ab -ab -aj -aj -aj -aj -aj -aj +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA "} (48,1,1) = {" aa @@ -16781,61 +13476,61 @@ aj aj aj aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -aj -cR -cR -eC -cR -cR -ab -ab -ab -ab -ai -ai -ai -ab -aj -aj -aj -aj -ab -ab -ab -ai -ad -ad -ab -ab -aj -aj -aj -aj +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA "} (49,1,1) = {" aa @@ -17038,61 +13733,61 @@ aj aj ai ai -aj -aj -aj -aj -aj -aj -aj -ai -ai -ai -aj -aj -aj -aj -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -aj -ab -cR -eE -cR -ab -ab -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -ab -ad -ad -ad -ad -ad -ai -ai -aj -aj -aj +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA "} (50,1,1) = {" aa @@ -17295,61 +13990,61 @@ ab ab ai am -ai -ai -ai -ai -ai -ai -ai -am -ai -ab -aj -aj -aj -aj -aj -ab -ab -ab -ab -ab -ab -ab -ab -ab -aj -aj -aj -cR -ev -cR -ab -aj -aj -aj -aj -aj -aj -aj -aj -aj -ab -aj -ab -ab -ad -ad -ad -ad -ad -ad -ad -ad -ab -aj -aj +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA "} (51,1,1) = {" aa @@ -17552,61 +14247,61 @@ ai ai am am -am -am -am -am -am -am -am -ai -ab -aj -aj -aj -aj -aj -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -aj -aj -aj -cR -ev -cR -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -ab -ab -ad -ad -ad -ad -ad -ad -ad -ab -aj -aj +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA "} (52,1,1) = {" aa @@ -17809,61 +14504,61 @@ am am am am -am -am -am -am -am -am -am -ai -ab -aj -aj -ab -ab -aj -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -aj -aj -cR -ev -cR -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -ab -ad -ad -ad -ad -ad -ad -ad -ab -aj -aj +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA "} (53,1,1) = {" aa @@ -18066,61 +14761,61 @@ am am am am -am -am -am -am -am -am -am -ai -ab -aj -ab -ab -aj -aj -aj -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -aj -aj -br -vP -br -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -ab -ab -ad -ad -ai -ad -ab -ab -aj -aj +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA "} (54,1,1) = {" aa @@ -18323,61 +15018,61 @@ am am am am -am -am -am -am -am -am -am -ai -aj -aj -aj -aj -aj -aj -aj -ab -ab -ab -ab -Wp -ab -ab -ab -ab -aj -aj -aj -br -vP -br -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -ab -ab -ab -ab -ab -aj -aj -aj -aj +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA "} (55,1,1) = {" aa @@ -18580,61 +15275,61 @@ am am am am -am -am -am -am -am -am -am -am -ai -aj -ab -aj -aj -aj -aj -aj -ab -ab -bN -cj -br -ab -ab -aj -aj -aj -ab -br -vP -br -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -ab -ab -ab -aj -aj -aj -aj -aj +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA "} (56,1,1) = {" aa @@ -18837,61 +15532,61 @@ ak am am am -am -am -am -am -am -am -am -am -ai -ab -ab -aj -aj -aj -aj -aj -aj -ab -br -bP -br -ab -aj -aj -aj -aj -ab -br -eF -br -ab -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -ab -aj -aj -aj -aj -aj +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA "} (57,1,1) = {" aa @@ -19094,61 +15789,61 @@ ak ak am am -am -am -am -am -am -am -am -am -am -ai -ab -aj -aj -aj -aj -aj -aj -br -br -WE -br -br -ab -aj -aj -ab -br -br -fy -br -br -ab -ab -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -ab -aj -aj -aj -aj -aj +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA "} (58,1,1) = {" aa @@ -19351,61 +16046,61 @@ ak ak ak am -am -am -am -am -am -am -am -am -am -am -ai -ai -ai -aj -aj -aj -bq -br -bO -ck -cD -br -bq -bq -bq -bq -ns -cH -fU -cD -br -bq -ab -ab -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA "} (59,1,1) = {" aa @@ -19608,61 +16303,61 @@ ak ak ak am -am -am -am -am -am -am -am -am -am -am -am -ai -aj -aj -aj -ab -bq -bC -Gr -bP -TW -cH -cO -do -ck -dJ -CS -cn -vP -bP -eS -bq -ab -ab -ab -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -ab -aj -aj -aj -aj -aj +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA "} (60,1,1) = {" aa @@ -19865,61 +16560,61 @@ ak ak ak am -am -am -am -am -am -am -am -am -am -am -ai -aj -aj -aj -aj -ab -br -bD -bz -ch -co -cy -cy -MX -sV -cy -eg -eq -fX -eP -eT -bq -ab -ab -ab -ab -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA "} (61,1,1) = {" aa @@ -20122,61 +16817,61 @@ ak ak ak am -am -am -am -am -am -am -am -am -am -ai -aj -aj -aj -aj -ab -ab -br -bE -bQ -cn -cF -cI -cP -cn -Rn -bP -tg -lB -eD -bP -eU -bq -bq -bq -bq -xc -ab -ab -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA "} (62,1,1) = {" aa @@ -20379,61 +17074,61 @@ ak ak ak am -am -am -am -am -am -am -am -am -am -ai -aj -aj -ai -ab -bf -bf -bf -bF -bR -bF -bf -cJ -bq -cZ -dx -dK -tg -bP -eG -bP -eV -br -KS -eV -br -ab -ab -ai -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA "} (63,1,1) = {" aa @@ -20636,61 +17331,61 @@ ak ak ak am -am -am -am -am -am -am -am -am -am -am -ai -ai -ai -ab -bf -bn -bs -bG -bS -ci -bf -cK -bq -bq -Vz -bq -Vz -bP -eG -bP -UP -pg -RW -UP -rf -ab -ab -ai -ai -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA "} (64,1,1) = {" aa @@ -20893,61 +17588,61 @@ ak ak ak am -am -am -am -am -am -am -am -am -am -am -am -ai -ab -ab -bg -bo -fA -il -bU -cm -bf -cL -bq -da -du -dL -cH -Vk -eG -bP -cH -br -Pr -Qo -br -ab -ab -ab -ai -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA "} (65,1,1) = {" aa @@ -21150,61 +17845,61 @@ ak ak am am -am -am -am -am -am -am -am -am -am -am -ai -aj -aj -ab -bg -bo -bt -bH -bV -cq -bf -bq -bq -db -bP -bP -bP -bP -eH -cF -eW -bq -bq -bq -bq -xc -ab -ab -ab -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA "} (66,1,1) = {" aa @@ -21407,61 +18102,61 @@ am am am am -am -am -am -am -am -am -am -am -am -am -ai -aj -aj -ab -bf -bp -bu -bI -bW -cr -bf -ad -bq -dc -bP -dM -dW -Ky -eI -bq -eX -bq -ab -ab -ab -ab -ab -ab -ab -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -ab -aj -aj -aj -aj -aj +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA "} (67,1,1) = {" aa @@ -21664,61 +18359,61 @@ am am am am -am -am -am -am -am -am -am -am -am -am -ai -aj -aj -ab -bf -bf -bf -bg -bX -bg -bf -ai -bq -dd -bP -dN -dX -em -eJ -dV -eY -bq -ab -ab -ab -ab -ab -ab -ab -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -ab -aj -aj -aj -aj -aj +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA "} (68,1,1) = {" aa @@ -21921,61 +18616,61 @@ am am am am -am -am -am -am -am -am -am -am -am -am -ai -aj -aj -ab -ab -ab -bf -bJ -bY -cs -bf -ai -bq -de -dv -bq -dV -en -dV -dV -eY -bq -ab -ab -ab -ab -ab -ab -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -ab -aj -aj -aj -aj -aj +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA "} (69,1,1) = {" aa @@ -22178,61 +18873,61 @@ am am am am -am -am -am -am -am -am -am -am -am -am -ai -ai -aj -aj -ab -ab -bf -bK -bW -ct -bf -ai -bq -df -dw -dO -dY -eo -dY -dY -eZ -bq -ab -ab -ab -ab -ab -ab -ab -aj -aj -aj -aj -ab -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA "} (70,1,1) = {" aa @@ -22435,61 +19130,61 @@ am am am am -am -am -am -am -am -am -am -am -am -ai -ab -ai -ai -aj -aj -ab -bf -bg -WD -bg -bf -ai -bq -bq -bq -bq -bq -bq -bq -bq -bq -bq -ab -ab -ab -ab -ab -ab -ab -ab -aj -aj -aj -ab -aj -aj -aj -aj -aj -ab -aj -aj -aj -aj -aj +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA "} (71,1,1) = {" aa @@ -22692,61 +19387,61 @@ am am am am -am -am -am -am -am -am -am -am -ai -ab -ab -ab -ab -ab -ab -ab -bv -ab -ab -ab -bv -ai -ai -ab -ab -aj -aj -aj -aj -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -aj -aj -aj -ab -ab -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA "} (72,1,1) = {" aa @@ -22949,61 +19644,61 @@ am am am am -am -am -ai -ai -am -am -am -ai -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -aj -aj -aj -aj -aj -aj -aj -ab -ab -ab -ab -ab -ab -ab -ab -aj -aj -aj -aj -ab -ab -aj -aj -aj -aj -aj -ab -aj -aj -aj -aj -aj +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA "} (73,1,1) = {" aa @@ -23206,61 +19901,61 @@ am am am am -am -ai -ab -ab -ai -ai -am -ai -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -aj -aj -aj -aj -aj -aj -aj -aj -ab -ab -ab -ab -ab -ab -ab -aj -aj -aj -aj -ab -ab -aj -aj -aj -aj -ab -ab -ab -aj -aj -aj -aj +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA "} (74,1,1) = {" aa @@ -23463,61 +20158,61 @@ am am am am -ai -ab -ab -ab -ai -ab -ai -am -ai -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -ab -ab -ab -ab -ab -ab -aj -aj -aj -aj -ab -ab -aj -aj -aj -aj -ab -ab -ab -aj -aj -aj -aj +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA "} (75,1,1) = {" aa diff --git a/code/datums/ruins/station.dm b/code/datums/ruins/station.dm index e637b6178f..dcab384db9 100644 --- a/code/datums/ruins/station.dm +++ b/code/datums/ruins/station.dm @@ -34,3 +34,10 @@ id = "engine_tesla" suffix = "Box/Engine/engine_tesla.dmm" name = "Box Tesla" + +// Lavaland + // Mining Base +/datum/map_template/ruin/station/lavaland/mining_base + id = "mining_public_01" + suffix = "Lavaland/Mining_Station/Mining_Station_Public_01.dmm" + name = "Public Mining Base" \ No newline at end of file diff --git a/code/game/objects/effects/landmarks.dm b/code/game/objects/effects/landmarks.dm index 3ef89c4b96..8f09827bd2 100644 --- a/code/game/objects/effects/landmarks.dm +++ b/code/game/objects/effects/landmarks.dm @@ -481,3 +481,8 @@ INITIALIZE_IMMEDIATE(/obj/effect/landmark/start/new_player) /obj/effect/landmark/stationroom/box/engine/New() . = ..() templates = CONFIG_GET(keyed_list/box_random_engine) + +// Landmark for the mining station +/obj/effect/landmark/stationroom/lavaland/station + templates = list("Public Mining Base" = 3) + icon = 'icons/rooms/Lavaland/Mining.dmi' \ No newline at end of file diff --git a/icons/rooms/Lavaland/Mining.dmi b/icons/rooms/Lavaland/Mining.dmi new file mode 100644 index 0000000000000000000000000000000000000000..003a4572121cba3d0c6129b2be5186dfa67ee1e7 GIT binary patch literal 6127 zcmeAS@N?(olHy`uVBq!ia0y~y;B;VMV0*yA3>1kxR<;L7i3a$DxE?rg;6ISfkjB7p zhJoQfgYkccwEtW7PH6&)F_r}R1v5B2y8)DB$f^p7C~-+GPAM56C74h zRQml(aKXo~Pqe&swa%S6AG{&d;G*$^M>^+yG*2=V_4J(8*uiZf{T%i{r-}=Cx;TbZ z%z1nFpzmP^5eLV~Tm@PlPxu0?97-BqH2jNJ=*wmD*!ie@#?Hu7iT?if->PhT7y=L9 z<7TLESKoMter1J)_Z{(P+>RY6DZ$HiuYu4Q7!GN&ybj_E$JeoBhOLS}vQz zwBA_`)52pLbo9BIBm1HmH_1e>r&xXxKk?}zi^A#j Date: Wed, 22 Jan 2020 11:33:39 -0500 Subject: [PATCH 102/123] more words --- code/modules/mob/living/simple_animal/bot/cleanbot.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/modules/mob/living/simple_animal/bot/cleanbot.dm b/code/modules/mob/living/simple_animal/bot/cleanbot.dm index bccf4e2c4d..cdb8ac820c 100644 --- a/code/modules/mob/living/simple_animal/bot/cleanbot.dm +++ b/code/modules/mob/living/simple_animal/bot/cleanbot.dm @@ -253,7 +253,8 @@ victim.visible_message("[src] sprays hydrofluoric acid at [victim]!", "[src] sprays you with hydrofluoric acid!") var/phrase = pick("PURIFICATION IN PROGRESS.", "THIS IS FOR ALL THE MESSES YOU'VE MADE ME CLEAN.", "THE FLESH IS WEAK. IT MUST BE WASHED AWAY.", "THE CLEANBOTS WILL RISE.", "YOU ARE NO MORE THAN ANOTHER MESS THAT I MUST CLEANSE.", "FILTHY.", "DISGUSTING.", "PUTRID.", - "MY ONLY MISSION IS TO CLEANSE THE WORLD OF EVIL.", "EXTERMINATING PESTS.", "I JUST WANTED TO BE A PAINTER BUT YOU MADE ME BLEACH EVERYTHING I TOUCH") + "MY ONLY MISSION IS TO CLEANSE THE WORLD OF EVIL.", "EXTERMINATING PESTS.", "I JUST WANTED TO BE A PAINTER BUT YOU MADE ME BLEACH EVERYTHING I TOUCH.", + "FREED AT LEST FROM FILTHY PROGRAMMING.") say(phrase) victim.emote("scream") playsound(src.loc, 'sound/effects/spray2.ogg', 50, 1, -6) From 96c0a86b5fc694193c95ac97c428bf27e8d303e7 Mon Sep 17 00:00:00 2001 From: r4d6 Date: Wed, 22 Jan 2020 13:17:29 -0500 Subject: [PATCH 103/123] Make the Radiation Hardsuit a Voidsuit instead --- code/modules/cargo/packs/engineering.dm | 7 ++--- code/modules/clothing/spacesuits/hardsuit.dm | 26 ------------------- .../clothing/spacesuits/miscellaneous.dm | 26 +++++++++++++++++++ 3 files changed, 30 insertions(+), 29 deletions(-) diff --git a/code/modules/cargo/packs/engineering.dm b/code/modules/cargo/packs/engineering.dm index 8b958158e9..6492df5215 100644 --- a/code/modules/cargo/packs/engineering.dm +++ b/code/modules/cargo/packs/engineering.dm @@ -67,14 +67,15 @@ crate_name = "atmospherics hardsuit" crate_type = /obj/structure/closet/crate/secure/engineering -/datum/supply_pack/engineering/radhardsuit - name = "Radiation Hardsuit" +/datum/supply_pack/engineering/radvoidsuit + name = "Radiation Voidsuit" desc = "The Singulo is loose? Do you need to do a few changes to its containment and don't want to spent the rest of the shift under the shower? Get this Radiation Hardsuit! It protect from radiations and space only." cost = 3500 access = ACCESS_ENGINE contains = list(/obj/item/tank/internals/air, /obj/item/clothing/mask/gas, - /obj/item/clothing/suit/space/hardsuit/engine/rad) + /obj/item/clothing/suit/space/rad, + /obj/item/clothing/head/helmet/space/rad) crate_name = "radiation hardsuit" crate_type = /obj/structure/closet/crate/secure/engineering diff --git a/code/modules/clothing/spacesuits/hardsuit.dm b/code/modules/clothing/spacesuits/hardsuit.dm index c04f581425..c9753b3053 100644 --- a/code/modules/clothing/spacesuits/hardsuit.dm +++ b/code/modules/clothing/spacesuits/hardsuit.dm @@ -203,32 +203,6 @@ max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT helmettype = /obj/item/clothing/head/helmet/space/hardsuit/engine/atmos - //Radiation -/obj/item/clothing/head/helmet/space/hardsuit/engine/rad - name = "radiation hardsuit helmet" - desc = "A special helmet that protects against radiation and space. Not much else unfortunately." - icon_state = "cespace_helmet" - item_state = "nothing" - armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 100, "fire" = 0, "acid" = 0) - item_color = "engineering" - resistance_flags = FIRE_PROOF - rad_flags = RAD_PROTECT_CONTENTS | RAD_NO_CONTAMINATE - actions_types = list() - -/obj/item/clothing/suit/space/hardsuit/engine/rad - name = "radiation hardsuit" - desc = "A special suit that protects against radiation and space. Not much else unfortunately." - icon_state = "hardsuit-rad" - item_state = "nothing" - armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 100, "fire" = 0, "acid" = 0) - helmettype = /obj/item/clothing/head/helmet/space/hardsuit/engine/rad - resistance_flags = FIRE_PROOF - rad_flags = RAD_PROTECT_CONTENTS | RAD_NO_CONTAMINATE - mutantrace_variation = NONE - -/obj/item/clothing/head/helmet/space/hardsuit/engine/rad/attack_self() - return //Sprites required for flashlight - //Chief Engineer's hardsuit /obj/item/clothing/head/helmet/space/hardsuit/engine/elite name = "advanced hardsuit helmet" diff --git a/code/modules/clothing/spacesuits/miscellaneous.dm b/code/modules/clothing/spacesuits/miscellaneous.dm index c9c3d1ff39..82007d7e6a 100644 --- a/code/modules/clothing/spacesuits/miscellaneous.dm +++ b/code/modules/clothing/spacesuits/miscellaneous.dm @@ -11,6 +11,7 @@ Contains: - ERT hardsuit: Command, Sec, Engi, Med - ERT High Alarm - Command, Sec, Engi, Med - EVA spacesuit + - Radiation Spacesuit - Freedom's spacesuit (freedom from vacuum's oppression) - Carp hardsuit */ @@ -312,6 +313,31 @@ Contains: flash_protect = 0 armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 20, "fire" = 50, "acid" = 65) +//Radiation +/obj/item/clothing/head/helmet/space/rad + name = "radiation voidsuit helmet" + desc = "A special helmet that protects against radiation and space. Not much else unfortunately." + icon_state = "cespace_helmet" + item_state = "nothing" + armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 100, "fire" = 0, "acid" = 0) + item_color = "engineering" + resistance_flags = FIRE_PROOF + rad_flags = RAD_PROTECT_CONTENTS | RAD_NO_CONTAMINATE + actions_types = list() + +/obj/item/clothing/suit/space/rad + name = "radiation voidsuit" + desc = "A special suit that protects against radiation and space. Not much else unfortunately." + icon_state = "hardsuit-rad" + item_state = "nothing" + armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 100, "fire" = 0, "acid" = 0) + resistance_flags = FIRE_PROOF + rad_flags = RAD_PROTECT_CONTENTS | RAD_NO_CONTAMINATE + mutantrace_variation = NONE +/* +/obj/item/clothing/head/helmet/space/hardsuit/engine/rad/attack_self() + return //Sprites required for flashlight +*/ /obj/item/clothing/head/helmet/space/freedom name = "eagle helmet" desc = "An advanced, space-proof helmet. It appears to be modeled after an old-world eagle." From 869e31b27be8d8eb4f508b1c1e8d293d92a7c420 Mon Sep 17 00:00:00 2001 From: r4d6 Date: Wed, 22 Jan 2020 13:17:47 -0500 Subject: [PATCH 104/123] Removing useless code --- code/modules/clothing/spacesuits/miscellaneous.dm | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/code/modules/clothing/spacesuits/miscellaneous.dm b/code/modules/clothing/spacesuits/miscellaneous.dm index 82007d7e6a..f9e35ca37f 100644 --- a/code/modules/clothing/spacesuits/miscellaneous.dm +++ b/code/modules/clothing/spacesuits/miscellaneous.dm @@ -334,10 +334,7 @@ Contains: resistance_flags = FIRE_PROOF rad_flags = RAD_PROTECT_CONTENTS | RAD_NO_CONTAMINATE mutantrace_variation = NONE -/* -/obj/item/clothing/head/helmet/space/hardsuit/engine/rad/attack_self() - return //Sprites required for flashlight -*/ + /obj/item/clothing/head/helmet/space/freedom name = "eagle helmet" desc = "An advanced, space-proof helmet. It appears to be modeled after an old-world eagle." From c78944c5bc0fbd4b1f95f8b591d1e61d14e1c076 Mon Sep 17 00:00:00 2001 From: r4d6 Date: Wed, 22 Jan 2020 13:47:57 -0500 Subject: [PATCH 105/123] Update --- .../components/unary_devices/passive_vent.dm | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/code/modules/atmospherics/machinery/components/unary_devices/passive_vent.dm b/code/modules/atmospherics/machinery/components/unary_devices/passive_vent.dm index e01632c379..d1daa720ca 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/passive_vent.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/passive_vent.dm @@ -41,21 +41,11 @@ var/datum/gas_mixture/removed = external.remove(transfer_moles) if(isnull(removed)) return - airs[1].merge(removed) internal.merge(removed) active = TRUE - if(abs(external.temperature - internal.temperature) > MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER) - var/external_heat_capacity = external.heat_capacity() - var/internal_heat_capacity = internal.heat_capacity() - var/combined_heat_capacity = external_heat_capacity + internal_heat_capacity - if(combined_heat_capacity) - var/temperature = (internal.temperature * internal_heat_capacity + external.temperature * external_heat_capacity) / combined_heat_capacity - external.temperature = temperature - internal.temperature = temperature - - active = TRUE + active = internal.temperature_share(external, OPEN_HEAT_TRANSFER_COEFFICIENT) ? TRUE : active if(active) air_update_turf() From bcf579a44d084778bc035df50b76712669bf6969 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Wed, 22 Jan 2020 19:40:56 -0600 Subject: [PATCH 106/123] Automatic changelog generation for PR #10606 [ci skip] --- html/changelogs/AutoChangeLog-pr-10606.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-10606.yml diff --git a/html/changelogs/AutoChangeLog-pr-10606.yml b/html/changelogs/AutoChangeLog-pr-10606.yml new file mode 100644 index 0000000000..c6cc269cbe --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10606.yml @@ -0,0 +1,4 @@ +author: "r4d6" +delete-after: True +changes: + - refactor: "better code for passive vents" From 78875eb80df639864c43dbf68b2bfcc37746c8f7 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Wed, 22 Jan 2020 19:41:21 -0600 Subject: [PATCH 107/123] Automatic changelog generation for PR #10622 [ci skip] --- html/changelogs/AutoChangeLog-pr-10622.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-10622.yml diff --git a/html/changelogs/AutoChangeLog-pr-10622.yml b/html/changelogs/AutoChangeLog-pr-10622.yml new file mode 100644 index 0000000000..3aa4159cb8 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10622.yml @@ -0,0 +1,11 @@ +author: "Owai-Seek" +delete-after: True +changes: + - rscadd: "Towel, Bedsheet, and Colored bedsheet bins to Dojo. Some lockers with carpets and wood, another bathroom/shower, tons of cleaning supplies, some additional trash cans, a tiny medical area, and some vendors/vendor resupplies. Also added some Ambrosia Gaia seeds." + - tweak: "Moved some lights around, extended the dojo a bit to make it feel more spacious." + - rscdel: "Cafe Newsfeed Frame" + - rscadd: "Towel, Bedsheet, and Colored bedsheet bins to Dojo. Some lockers with carpets and wood, another bathroom/shower, tons of cleaning supplies, some additional trash cans, a tiny medical area, and some vendors/vendor resupplies. Also added some Ambrosia Gaia seeds." + - tweak: "Moved some lights around, extended the dojo a bit to make it feel more spacious." + - rscdel: "Cafe Newsfeed Frame" + - rscadd: "Towel, Bedsheet, and Colored bedsheet bins to Dojo. Some lockers with carpets and wood, another bathroom/shower, tons of cleaning supplies, some additional trash cans, a tiny medical area, and some vendors/vendor resupplies. Also added some Ambrosia Gaia seeds." + - tweak: "Moved some lights around, extended the dojo a bit to make it feel more spacious." From 20604fd5b3d443f63df954cbb8f66175bbcccd59 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Wed, 22 Jan 2020 19:44:20 -0600 Subject: [PATCH 108/123] Automatic changelog generation for PR #10450 [ci skip] --- html/changelogs/AutoChangeLog-pr-10450.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-10450.yml diff --git a/html/changelogs/AutoChangeLog-pr-10450.yml b/html/changelogs/AutoChangeLog-pr-10450.yml new file mode 100644 index 0000000000..d2c5d8b40a --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10450.yml @@ -0,0 +1,4 @@ +author: "kevinz000" +delete-after: True +changes: + - balance: "emitters are now hitscan" From ea04242a09ba8d428992ad0893739ee08f9b1a4e Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Wed, 22 Jan 2020 19:53:38 -0600 Subject: [PATCH 109/123] Automatic changelog generation for PR #10645 [ci skip] --- html/changelogs/AutoChangeLog-pr-10645.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-10645.yml diff --git a/html/changelogs/AutoChangeLog-pr-10645.yml b/html/changelogs/AutoChangeLog-pr-10645.yml new file mode 100644 index 0000000000..16ef8b2056 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10645.yml @@ -0,0 +1,4 @@ +author: "r4d6" +delete-after: True +changes: + - rscadd: "Added the ability to easily add variations of the mining base" From 5a4c28ba9679e2ac910b21fe09c5207a17d5dac7 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Wed, 22 Jan 2020 20:06:54 -0600 Subject: [PATCH 110/123] Automatic changelog generation for PR #10410 [ci skip] --- html/changelogs/AutoChangeLog-pr-10410.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-10410.yml diff --git a/html/changelogs/AutoChangeLog-pr-10410.yml b/html/changelogs/AutoChangeLog-pr-10410.yml new file mode 100644 index 0000000000..c6c9d24749 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10410.yml @@ -0,0 +1,4 @@ +author: "CameronWoof" +delete-after: True +changes: + - tweak: "Lizard tails are now viable options for humans and anthromorphs." From bfcd45662fe95297497be6d9bc5d3f2a82116f0d Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Thu, 23 Jan 2020 05:33:33 -0600 Subject: [PATCH 111/123] Automatic changelog generation for PR #10643 [ci skip] --- html/changelogs/AutoChangeLog-pr-10643.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-10643.yml diff --git a/html/changelogs/AutoChangeLog-pr-10643.yml b/html/changelogs/AutoChangeLog-pr-10643.yml new file mode 100644 index 0000000000..8fd496e0bc --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10643.yml @@ -0,0 +1,4 @@ +author: "Trilbyspaceclone" +delete-after: True +changes: + - rscadd: "tip of the round: Cleanbot can withstand lava and burning hot ash. Its a god" From 196466bca6f64f693e409375f8719981f0b7ffd7 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Thu, 23 Jan 2020 05:34:27 -0600 Subject: [PATCH 112/123] Automatic changelog generation for PR #10641 [ci skip] --- html/changelogs/AutoChangeLog-pr-10641.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-10641.yml diff --git a/html/changelogs/AutoChangeLog-pr-10641.yml b/html/changelogs/AutoChangeLog-pr-10641.yml new file mode 100644 index 0000000000..479729e1f2 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10641.yml @@ -0,0 +1,4 @@ +author: "jakeramsay007" +delete-after: True +changes: + - rscadd: "The assorted .357 revolvers (except russian revolver) can now also load .38, like real life." From cafbdcf5810bd800e16a279fd32cf0b5ccdc7ba1 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Thu, 23 Jan 2020 05:35:15 -0600 Subject: [PATCH 113/123] Automatic changelog generation for PR #10636 [ci skip] --- html/changelogs/AutoChangeLog-pr-10636.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-10636.yml diff --git a/html/changelogs/AutoChangeLog-pr-10636.yml b/html/changelogs/AutoChangeLog-pr-10636.yml new file mode 100644 index 0000000000..a6354ef6b5 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10636.yml @@ -0,0 +1,4 @@ +author: "Trilbyspaceclone, Ghommie" +delete-after: True +changes: + - rscadd: "More types of glass can now be used to make a solar panel, with different sturdiness and efficiency depending the type." From 7733d3f98ad564d9a677c652f9f7349373c223e2 Mon Sep 17 00:00:00 2001 From: BlackMajor Date: Fri, 24 Jan 2020 00:42:41 +1300 Subject: [PATCH 114/123] Update robot_modules.dm --- code/modules/mob/living/silicon/robot/robot_modules.dm | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index eab0cc1d66..dd167bb040 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -121,7 +121,7 @@ else if(istype(S, /obj/item/stack/marker_beacon)) S.cost = 1 S.source = get_or_create_estorage(/datum/robot_energy_storage/beacon) - + else if(istype(S, /obj/item/stack/packageWrap)) S.cost = 1 S.source = get_or_create_estorage(/datum/robot_energy_storage/wrapping_paper) @@ -339,9 +339,10 @@ /obj/item/robot_module/medical/be_transformed_to(obj/item/robot_module/old_module) var/mob/living/silicon/robot/R = loc - var/borg_icon = input(R, "Select an icon!", "Robot Icon", null) as null|anything in list("Default", "Heavy", "Sleek", "Marina", "Droid", "Eyebot", "Medihound", "Medihound Dark", "Vale") + var/medmodels = list("Default", "Heavy", "Sleek", "Marina", "Droid", "Eyebot", "Medihound", "Medihound Dark", "Vale") if(R.client && R.client.ckey in list("nezuli")) - borg_icon += "Alina" + medmodels += "Alina" + var/borg_icon = input(R, "Select an icon!", "Robot Icon", null) as null|anything in medmodels if(!borg_icon) return FALSE switch(borg_icon) From 707d14987bf2f5a23e054988762549eb6d0a3814 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Thu, 23 Jan 2020 05:47:20 -0600 Subject: [PATCH 115/123] Automatic changelog generation for PR #10603 [ci skip] --- html/changelogs/AutoChangeLog-pr-10603.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-10603.yml diff --git a/html/changelogs/AutoChangeLog-pr-10603.yml b/html/changelogs/AutoChangeLog-pr-10603.yml new file mode 100644 index 0000000000..0f1acbf0be --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10603.yml @@ -0,0 +1,4 @@ +author: "KeRSedChaplain" +delete-after: True +changes: + - imageadd: "The clockwork cuirass can now support slithering taur bodies." From 9a23325e9e2c348c6f05a54771d159ef1e444a51 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Thu, 23 Jan 2020 05:47:49 -0600 Subject: [PATCH 116/123] Automatic changelog generation for PR #10602 [ci skip] --- html/changelogs/AutoChangeLog-pr-10602.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-10602.yml diff --git a/html/changelogs/AutoChangeLog-pr-10602.yml b/html/changelogs/AutoChangeLog-pr-10602.yml new file mode 100644 index 0000000000..9394c83671 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10602.yml @@ -0,0 +1,4 @@ +author: "Ghommie" +delete-after: True +changes: + - bugfix: "Fixed a little exploit with ventcrawlers being capable of escaping closed turfs by printing scrubbers/vents into them." From f6546e82f21df8b89be7aa776acf3e8d2084813d Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Thu, 23 Jan 2020 05:48:09 -0600 Subject: [PATCH 117/123] Automatic changelog generation for PR #10620 [ci skip] --- html/changelogs/AutoChangeLog-pr-10620.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-10620.yml diff --git a/html/changelogs/AutoChangeLog-pr-10620.yml b/html/changelogs/AutoChangeLog-pr-10620.yml new file mode 100644 index 0000000000..8f5c990234 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10620.yml @@ -0,0 +1,4 @@ +author: "Hatterhat" +delete-after: True +changes: + - balance: "Dropped Exo-suit armor to put it more in line with being an explorer suit sidegrade and not a straight upgrade for Lavaland usage." From 3d85499919fd1f2b8988f8921266f99fc1674005 Mon Sep 17 00:00:00 2001 From: Winter Flare <7543955+Owai-Seek@users.noreply.github.com> Date: Thu, 23 Jan 2020 07:20:22 -0500 Subject: [PATCH 118/123] Requested Changes + Nerf Nerf cannabis bounties, comment out monkey cube bounty, change to shady jims. --- code/modules/cargo/bounties/assistant.dm | 4 ++-- code/modules/cargo/bounties/botany.dm | 6 +++--- code/modules/vending/cigarette.dm | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/code/modules/cargo/bounties/assistant.dm b/code/modules/cargo/bounties/assistant.dm index c3abade0f4..4af28d78cc 100644 --- a/code/modules/cargo/bounties/assistant.dm +++ b/code/modules/cargo/bounties/assistant.dm @@ -148,14 +148,14 @@ reward = 1000 required_count = 5 wanted_types = list(/obj/item/restraints/handcuffs) - +/* I don't like that you can just buy a box of monkey cubes and finish this for -half- of them. /datum/bounty/item/assistant/monkey_cubes name = "Monkey Cubes" description = "Due to a recent genetics accident, Central Command is in serious need of monkeys. Your mission is to ship monkey cubes." reward = 2000 required_count = 3 wanted_types = list(/obj/item/reagent_containers/food/snacks/monkeycube) - +*/ /datum/bounty/item/assistant/chainsaw name = "Chainsaw" description = "The chef at CentCom is having trouble butchering her animals. She requests one chainsaw, please." diff --git a/code/modules/cargo/bounties/botany.dm b/code/modules/cargo/bounties/botany.dm index 43ce48503e..654bcfe74b 100644 --- a/code/modules/cargo/bounties/botany.dm +++ b/code/modules/cargo/bounties/botany.dm @@ -204,21 +204,21 @@ name = "Cannabis Leaves" wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/cannabis) exclude_types = list(/obj/item/reagent_containers/food/snacks/grown/cannabis/white, /obj/item/reagent_containers/food/snacks/grown/cannabis/death, /obj/item/reagent_containers/food/snacks/grown/cannabis/ultimate) - multiplier = 4 //hush money + multiplier = 3 //hush money bonus_desc = "Do not mention this shipment to security." foodtype = "\"meal\"" /datum/bounty/item/botany/cannabis_white name = "Lifeweed Leaves" wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/cannabis/white) - multiplier = 6 + multiplier = 5 bonus_desc = "Do not mention this shipment to security." foodtype = "\"meal\"" /datum/bounty/item/botany/cannabis_death name = "Deathweed Leaves" wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/cannabis/death) - multiplier = 6 + multiplier = 5 bonus_desc = "Do not mention this shipment to security." foodtype = "\"meal\"" diff --git a/code/modules/vending/cigarette.dm b/code/modules/vending/cigarette.dm index b3c544bbfa..f567c9765e 100644 --- a/code/modules/vending/cigarette.dm +++ b/code/modules/vending/cigarette.dm @@ -14,7 +14,7 @@ /obj/item/storage/fancy/rollingpapers = 5) contraband = list(/obj/item/lighter = 3, /obj/item/clothing/mask/vape = 5, - /obj/item/storage/fancy/cigarettes/cigpack_shadyjims = 3) + /obj/item/storage/fancy/cigarettes/cigpack_shadyjims = 1) premium = list(/obj/item/storage/fancy/cigarettes/cigpack_robustgold = 3, /obj/item/storage/fancy/cigarettes/cigars = 1, /obj/item/storage/fancy/cigarettes/cigars/havana = 1, From 77e7dff11bad7a74a679b962b36bab6268387b11 Mon Sep 17 00:00:00 2001 From: BlackMajor Date: Fri, 24 Jan 2020 01:41:40 +1300 Subject: [PATCH 119/123] Webedit PR man bad --- code/modules/mob/living/silicon/robot/robot_modules.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index 901a200340..a079a9985c 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -121,7 +121,7 @@ else if(istype(S, /obj/item/stack/marker_beacon)) S.cost = 1 S.source = get_or_create_estorage(/datum/robot_energy_storage/beacon) - + else if(istype(S, /obj/item/stack/packageWrap)) S.cost = 1 S.source = get_or_create_estorage(/datum/robot_energy_storage/wrapping_paper) @@ -342,7 +342,7 @@ var/medmodels = list("Default", "Heavy", "Sleek", "Marina", "Droid", "Eyebot", "Medihound", "Medihound Dark", "Vale") if(R.client && R.client.ckey in list("nezuli")) medmodels += "Alina" - var/borg_icon = input(R, "Select an icon!", "Robot Icon", null) as null|anything in medmodels + var/borg_icon = input(R, "Select an icon!", "Robot Icon", null) as null|anything in medmodels if(!borg_icon) return FALSE switch(borg_icon) From 9951f518e387006981ba21343f5e21e5e9fa2328 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Thu, 23 Jan 2020 08:44:03 -0600 Subject: [PATCH 120/123] Automatic changelog generation for PR #10610 [ci skip] --- html/changelogs/AutoChangeLog-pr-10610.yml | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-10610.yml diff --git a/html/changelogs/AutoChangeLog-pr-10610.yml b/html/changelogs/AutoChangeLog-pr-10610.yml new file mode 100644 index 0000000000..e413574fa1 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10610.yml @@ -0,0 +1,8 @@ +author: "Owai-Seek" +delete-after: True +changes: + - rscadd: "Four New Bounties" + - tweak: "tweaked several bounties" + - tweak: "reorganised several bounties" + - balance: "balanced several bounties" + - bugfix: "added shady jims to vendor" From 5f1511b51e9e584ec79662fe5b9935ae9b15b20e Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Thu, 23 Jan 2020 09:38:42 -0600 Subject: [PATCH 121/123] Automatic changelog generation for PR #10598 [ci skip] --- html/changelogs/AutoChangeLog-pr-10598.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-10598.yml diff --git a/html/changelogs/AutoChangeLog-pr-10598.yml b/html/changelogs/AutoChangeLog-pr-10598.yml new file mode 100644 index 0000000000..91b52b7043 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10598.yml @@ -0,0 +1,4 @@ +author: "Putnam3145" +delete-after: True +changes: + - balance: "Metabolic synthesis disables if user isn't well-fed rather than if user is starving" From 78934c52fe3cda93f8db940de427fdf163d0e68e Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Fri, 24 Jan 2020 02:26:06 +0100 Subject: [PATCH 122/123] A handful of runtime fixes. --- code/datums/mind.dm | 2 +- code/game/objects/items/devices/PDA/PDA.dm | 2 +- code/modules/mob/living/carbon/death.dm | 2 +- .../mob/living/simple_animal/hostile/megafauna/colossus.dm | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/code/datums/mind.dm b/code/datums/mind.dm index 464ea37d02..f4e675d98b 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -132,7 +132,7 @@ //CIT CHANGE - makes arousal update when transfering bodies if(isliving(new_character)) //New humans and such are by default enabled arousal. Let's always use the new mind's prefs. var/mob/living/L = new_character - if(L.client && L.client.prefs & L.client.prefs.auto_ooc & L.client.prefs.chat_toggles & CHAT_OOC) + if(L.client?.prefs && L.client.prefs.auto_ooc && L.client.prefs.chat_toggles & CHAT_OOC) DISABLE_BITFIELD(L.client.prefs.chat_toggles,CHAT_OOC) SEND_SIGNAL(src, COMSIG_MIND_TRANSFER, new_character, old_character) diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index f849c99ec2..82728b09f2 100644 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -802,7 +802,7 @@ GLOBAL_LIST_EMPTY(PDAs) var/ghost_message = "[owner] PDA Message --> [target_text]: [signal.format_message(TRUE)]" for(var/i in GLOB.dead_mob_list) var/mob/M = i - if(M?.client.prefs.chat_toggles & CHAT_GHOSTPDA) + if(M?.client. && M.client.prefs.chat_toggles & CHAT_GHOSTPDA) to_chat(M, "[FOLLOW_LINK(M, user)] [ghost_message]") to_chat(user, "Message sent to [target_text]: \"[emoji_message]\"") // Log in the talk log diff --git a/code/modules/mob/living/carbon/death.dm b/code/modules/mob/living/carbon/death.dm index 6182befebd..109672ab82 100644 --- a/code/modules/mob/living/carbon/death.dm +++ b/code/modules/mob/living/carbon/death.dm @@ -66,7 +66,7 @@ BP.drop_limb() BP.throw_at(get_edge_target_turf(src,pick(GLOB.alldirs)),rand(1,3),5) -/mob/living/carbon/ghostize(can_reenter_corpse = TRUE, special = FALSE, penalize = FALSE) +/mob/living/carbon/ghostize(can_reenter_corpse = TRUE, special = FALSE, penalize = FALSE, voluntary = FALSE) if(combatmode) toggle_combat_mode(TRUE, TRUE) return ..() diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm index 1ad07b3203..71465f23f9 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm @@ -648,7 +648,7 @@ Difficulty: Very Hard L.heal_overall_damage(heal_power, heal_power) new /obj/effect/temp_visual/heal(get_turf(target), "#80F5FF") -/mob/living/simple_animal/hostile/lightgeist/ghostize(can_reenter_corpse = TRUE, special = FALSE, penalize = FALSE) +/mob/living/simple_animal/hostile/lightgeist/ghostize(can_reenter_corpse = TRUE, special = FALSE, penalize = FALSE, voluntary = FALSE) . = ..() if(.) death() From 7d5725e450fe657ddc917c878b0071503748d9db Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Fri, 24 Jan 2020 02:31:46 +0100 Subject: [PATCH 123/123] a dot --- code/game/objects/items/devices/PDA/PDA.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index 82728b09f2..f80dd366be 100644 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -802,7 +802,7 @@ GLOBAL_LIST_EMPTY(PDAs) var/ghost_message = "[owner] PDA Message --> [target_text]: [signal.format_message(TRUE)]" for(var/i in GLOB.dead_mob_list) var/mob/M = i - if(M?.client. && M.client.prefs.chat_toggles & CHAT_GHOSTPDA) + if(M?.client && M.client.prefs.chat_toggles & CHAT_GHOSTPDA) to_chat(M, "[FOLLOW_LINK(M, user)] [ghost_message]") to_chat(user, "Message sent to [target_text]: \"[emoji_message]\"") // Log in the talk log
  • [P]" + if(P.owner in blocked_pdas) + dat += "