From 03086dfa91a68de33a7a298589ac7bd35e134f80 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Mon, 29 Jan 2018 04:42:29 -0600 Subject: [PATCH] Tg 1 28 sync testing/confirmation (#5178) * maps, tgui, tools * defines and helpers * onclick and controllers * datums fucking caught that hulk reversal too. * game and shuttle modular * module/admin * oh god they fucking moved antag shit again * haaaaate. Haaaaaaaaaate. * enables moff wings * more modules things * tgstation.dme before I forget something important * some mob stuff * s'more mob/living stuff * some carbon stuff * ayy lmaos and kitchen meat * Human stuff * species things moff wings have a 'none' version too * the rest of the module stuff. * some strings * misc * mob icons * some other icons. * It compiles FUCK BORERS FUCK BORERS --- .../LavaRuins/lavaland_biodome_beach.dmm | 4 +- .../lavaland_surface_animal_hospital.dmm | 2 +- .../LavaRuins/lavaland_surface_greed.dmm | 4 +- .../lavaland_surface_syndicate_base1.dmm | 130 +- _maps/RandomRuins/SpaceRuins/DJstation.dmm | 17 +- _maps/RandomRuins/SpaceRuins/TheDerelict.dmm | 964 +- .../SpaceRuins/abandonedteleporter.dmm | 12 +- _maps/RandomRuins/SpaceRuins/abandonedzoo.dmm | 52 +- _maps/RandomRuins/SpaceRuins/asteroid1.dmm | 289 +- _maps/RandomRuins/SpaceRuins/asteroid2.dmm | 40 - _maps/RandomRuins/SpaceRuins/asteroid3.dmm | 60 - _maps/RandomRuins/SpaceRuins/asteroid4.dmm | 299 +- _maps/RandomRuins/SpaceRuins/asteroid5.dmm | 960 +- _maps/RandomRuins/SpaceRuins/bigderelict1.dmm | 250 +- _maps/RandomRuins/SpaceRuins/bus.dmm | 88 +- .../RandomRuins/SpaceRuins/caravanambush.dmm | 8642 ++++++++++++----- _maps/RandomRuins/SpaceRuins/crashedship.dmm | 25 +- _maps/RandomRuins/SpaceRuins/deepstorage.dmm | 261 +- _maps/RandomRuins/SpaceRuins/derelict1.dmm | 721 +- _maps/RandomRuins/SpaceRuins/derelict2.dmm | 1425 +-- _maps/RandomRuins/SpaceRuins/derelict3.dmm | 1060 +- _maps/RandomRuins/SpaceRuins/derelict4.dmm | 993 +- _maps/RandomRuins/SpaceRuins/derelict5.dmm | 482 +- _maps/RandomRuins/SpaceRuins/derelict6.dmm | 365 +- _maps/RandomRuins/SpaceRuins/emptyshell.dmm | 64 +- .../RandomRuins/SpaceRuins/gasthelizards.dmm | 2 +- .../SpaceRuins/gondolaasteroid.dmm | 5 +- .../SpaceRuins/intactemptyship.dmm | 8 +- .../SpaceRuins/listeningstation.dmm | 86 +- .../RandomRuins/SpaceRuins/mechtransport.dmm | 85 +- _maps/RandomRuins/SpaceRuins/oldAIsat.dmm | 30 +- _maps/RandomRuins/SpaceRuins/oldstation.dmm | 937 +- .../RandomRuins/SpaceRuins/oldteleporter.dmm | 2 +- _maps/RandomRuins/SpaceRuins/onehalf.dmm | 191 +- .../SpaceRuins/originalcontent.dmm | 90 - _maps/RandomRuins/SpaceRuins/shuttlerelic.dmm | 46 +- _maps/RandomRuins/SpaceRuins/spacehotel.dmm | 1745 +--- .../SpaceRuins/turretedoutpost.dmm | 2 +- _maps/RandomRuins/SpaceRuins/vaporwave.dmm | 22 +- _maps/RandomRuins/SpaceRuins/way_home.dmm | 612 +- .../SpaceRuins/whiteshipruin_box.dmm | 92 +- _maps/RandomZLevels/Academy.dmm | 69 +- _maps/RandomZLevels/beach.dmm | 5 +- _maps/RandomZLevels/caves.dmm | 186 +- _maps/RandomZLevels/centcomAway.dmm | 217 +- _maps/RandomZLevels/challenge.dmm | 18 +- _maps/RandomZLevels/moonoutpost19.dmm | 574 +- _maps/RandomZLevels/research.dmm | 121 +- _maps/RandomZLevels/snowdin.dmm | 91 +- _maps/RandomZLevels/spacebattle.dmm | 12 +- _maps/RandomZLevels/undergroundoutpost45.dmm | 319 +- _maps/RandomZLevels/wildwest.dmm | 38 +- _maps/_basemap.dm | 12 +- _maps/boxstation.json | 10 +- _maps/deltastation.json | 10 +- _maps/map_files/BoxStation/BoxStation.dmm | 3586 +++---- .../map_files/Deltastation/DeltaStation2.dmm | 3572 +++---- _maps/map_files/MetaStation/MetaStation.dmm | 3110 +++--- _maps/map_files/Mining/Lavaland.dmm | 36 +- _maps/map_files/OmegaStation/OmegaStation.dmm | 1358 ++- _maps/map_files/PubbyStation/PubbyStation.dmm | 1629 ++-- _maps/map_files/debug/runtimestation.dmm | 20 +- _maps/map_files/generic/CentCom.dmm | 1626 +--- _maps/map_files/generic/SpaceDock.dmm | 3 +- _maps/metastation.json | 10 +- _maps/omegastation.json | 11 +- _maps/pubbystation.json | 12 +- _maps/shuttles/cargo_birdboat.dmm | 18 - _maps/shuttles/cargo_box.dmm | 29 - _maps/shuttles/emergency_airless.dmm | 27 +- _maps/shuttles/emergency_asteroid.dmm | 99 +- _maps/shuttles/emergency_bar.dmm | 168 +- _maps/shuttles/emergency_box.dmm | 132 +- _maps/shuttles/emergency_cere.dmm | 6 +- _maps/shuttles/emergency_delta.dmm | 28 +- _maps/shuttles/emergency_discoinferno.dmm | 6 - _maps/shuttles/emergency_goon.dmm | 43 - _maps/shuttles/emergency_luxury.dmm | 27 - _maps/shuttles/emergency_meta.dmm | 63 +- _maps/shuttles/emergency_mini.dmm | 3 - _maps/shuttles/emergency_pubby.dmm | 17 +- _maps/shuttles/emergency_raven.dmm | 88 +- _maps/shuttles/emergency_supermatter.dmm | 46 +- _maps/shuttles/emergency_wabbajack.dmm | 2 +- _maps/shuttles/ferry_base.dmm | 16 - _maps/shuttles/ferry_lighthouse.dmm | 429 +- _maps/shuttles/ferry_meat.dmm | 16 - _maps/shuttles/whiteship_box.dmm | 461 +- _maps/shuttles/whiteship_cere.dmm | 10 +- _maps/shuttles/whiteship_delta.dmm | 11 +- _maps/shuttles/whiteship_meta.dmm | 114 +- _maps/shuttles/whiteship_pubby.dmm | 1 - _maps/templates/medium_shuttle1.dmm | 152 +- _maps/templates/medium_shuttle2.dmm | 184 +- _maps/templates/medium_shuttle4.dmm | 51 +- _maps/templates/pirate_ship.dmm | 31 +- _maps/templates/shelter_2.dmm | 3 - _maps/templates/small_shuttle_1.dmm | 50 +- code/__DATASTRUCTURES/linked_lists.dm | 191 - code/__DATASTRUCTURES/priority_queue.dm | 83 - code/__DATASTRUCTURES/stacks.dm | 56 - code/__DEFINES/DNA.dm | 1 + .../globals.dm => __DEFINES/_globals.dm} | 76 +- code/__DEFINES/admin.dm | 5 + code/__DEFINES/antagonists.dm | 14 + code/__DEFINES/combat.dm | 8 +- code/__DEFINES/is_helpers.dm | 2 + code/__DEFINES/maps.dm | 6 + code/__DEFINES/misc.dm | 46 +- code/__DEFINES/mobs.dm | 19 +- code/__DEFINES/obj_flags.dm | 19 + code/__DEFINES/say.dm | 8 +- code/__DEFINES/stat.dm | 29 - code/__DEFINES/subsystems.dm | 4 + code/__DEFINES/time.dm | 4 +- code/__DEFINES/tools.dm | 13 +- code/__DEFINES/traits.dm | 37 + code/__DEFINES/vv.dm | 2 +- code/__HELPERS/_logging.dm | 6 + code/__HELPERS/game.dm | 3 - code/__HELPERS/global_lists.dm | 4 +- code/{__DATASTRUCTURES => __HELPERS}/heap.dm | 0 code/__HELPERS/mobs.dm | 48 +- code/__HELPERS/names.dm | 3 + code/__HELPERS/roundend.dm | 2 + code/__HELPERS/sorts/InsertSort.dm | 11 +- code/__HELPERS/sorts/MergeSort.dm | 11 +- code/__HELPERS/sorts/TimSort.dm | 11 +- code/__HELPERS/type2type.dm | 3 +- code/__HELPERS/unsorted.dm | 2 +- code/_globalvars/lists/flavor_misc.dm | 1 + code/_globalvars/lists/names.dm | 1 + code/_globalvars/misc.dm | 8 +- code/_onclick/ai.dm | 12 +- code/_onclick/item_attack.dm | 27 +- code/citadel/cit_guns.dm | 12 +- code/citadel/dogborgstuff.dm | 140 +- code/citadel/organs/genitals.dm | 2 +- code/controllers/master.dm | 8 +- code/controllers/subsystem/augury.dm | 2 +- code/controllers/subsystem/garbage.dm | 2 - code/controllers/subsystem/idlenpcpool.dm | 11 +- code/controllers/subsystem/input.dm | 2 +- code/controllers/subsystem/mobs.dm | 11 +- code/controllers/subsystem/shuttle.dm | 53 +- code/controllers/subsystem/timer.dm | 297 +- code/controllers/subsystem/title.dm | 9 +- code/controllers/subsystem/traumas.dm | 6 +- code/datums/action.dm | 16 +- code/datums/armor.dm | 70 + code/datums/brain_damage/mild.dm | 4 +- code/datums/brain_damage/phobia.dm | 2 +- code/datums/brain_damage/severe.dm | 18 +- code/datums/brain_damage/split_personality.dm | 2 +- code/datums/browser.dm | 177 +- code/datums/datumvars.dm | 84 +- .../diseases/advance/symptoms/genetics.dm | 2 +- code/datums/diseases/advance/symptoms/heal.dm | 6 +- .../diseases/advance/symptoms/sensory.dm | 4 +- .../diseases/advance/symptoms/vision.dm | 2 +- code/datums/diseases/transformation.dm | 7 +- code/datums/embedding_behavior.dm | 53 + code/datums/emotes.dm | 2 +- code/datums/helper_datums/getrev.dm | 12 +- code/datums/holocall.dm | 18 + code/datums/map_config.dm | 18 +- code/datums/martial/sleeping_carp.dm | 2 +- code/datums/mutations/body.dm | 8 +- code/datums/mutations/hulk.dm | 9 +- code/datums/mutations/speech.dm | 4 +- code/datums/shuttles.dm | 82 +- code/datums/wires/airlock.dm | 4 +- code/game/area/areas/shuttles.dm | 25 + code/game/atoms.dm | 32 +- code/game/data_huds.dm | 8 +- code/game/gamemodes/blob/blob.dm | 109 - .../clock_helpers/proselytizer_helpers.dm | 393 - .../clock_cult/clock_mobs/anima_fragment.dm | 93 - .../clock_scriptures/scripture_revenant.dm | 211 - .../clock_structures/interdiction_lens.dm | 143 - .../clock_structures/tinkerers_cache.dm | 116 - code/game/gamemodes/gang/dominator.dm | 230 - code/game/gamemodes/gang/gang.dm | 359 - code/game/gamemodes/gang/gang_datum.dm | 333 - code/game/gamemodes/gang/gang_items.dm | 453 - code/game/gamemodes/gang/gang_pen.dm | 68 - code/game/gamemodes/gang/recaller.dm | 332 - code/game/gamemodes/intercept_report.dm | 52 - .../miniantags/abduction/abduction.dm | 37 - code/game/gamemodes/miniantags/hades/hades.dm | 765 -- .../miniantags/hades/hades_chapel.dm | 177 - code/game/gamemodes/miniantags/readme.txt | 12 - .../{miniantags => }/monkey/monkey.dm | 0 code/game/gamemodes/nuclear/nuclear.dm | 2 +- code/game/gamemodes/objective.dm | 6 +- code/game/gamemodes/objective_team.dm | 34 - code/game/gamemodes/wizard/raginmages.dm | 164 - code/game/machinery/_machinery.dm | 3 +- code/game/machinery/announcement_system.dm | 4 +- code/game/machinery/buttons.dm | 4 +- code/game/machinery/computer/apc_control.dm | 14 +- code/game/machinery/computer/arcade.dm | 52 +- .../machinery/computer/camera_advanced.dm | 13 +- code/game/machinery/computer/cloning.dm | 2 +- .../game/machinery/computer/communications.dm | 12 +- code/game/machinery/computer/dna_console.dm | 4 +- .../machinery/computer/launchpad_control.dm | 2 +- .../machinery/computer/telecrystalconsoles.dm | 2 +- code/game/machinery/dna_scanner.dm | 2 +- code/game/machinery/doors/airlock.dm | 24 +- code/game/machinery/doors/door.dm | 6 +- code/game/machinery/doors/windowdoor.dm | 10 +- .../embedded_controller/access_controller.dm | 6 +- code/game/machinery/firealarm.dm | 8 +- code/game/machinery/gulag_item_reclaimer.dm | 6 +- code/game/machinery/hologram.dm | 33 +- code/game/machinery/limbgrower.dm | 6 +- .../machinery/porta_turret/portable_turret.dm | 32 +- .../porta_turret/portable_turret_cover.dm | 4 +- code/game/machinery/quantum_pad.dm | 8 +- code/game/machinery/recycler.dm | 14 +- code/game/machinery/shieldgen.dm | 16 +- code/game/machinery/slotmachine.dm | 10 +- code/game/machinery/suit_storage_unit.dm | 4 + code/game/machinery/syndicatebeacon.dm | 4 + .../telecomms/computers/logbrowser.dm | 2 +- .../machinery/telecomms/computers/message.dm | 12 +- code/game/machinery/vending.dm | 10 +- code/game/mecha/mech_fabricator.dm | 4 +- code/game/mecha/mecha.dm | 2 +- .../objects/effects/decals/cleanable/misc.dm | 6 + .../effects/decals/cleanable/robots.dm | 5 + code/game/objects/effects/decals/crayon.dm | 1 - .../effects/effect_system/effects_foam.dm | 45 + code/game/objects/effects/effects.dm | 2 +- code/game/objects/effects/landmarks.dm | 4 - code/game/objects/effects/mines.dm | 4 +- code/game/objects/items.dm | 52 +- code/game/objects/items/AI_modules.dm | 13 +- code/game/objects/items/RSF.dm | 6 +- code/game/objects/items/body_egg.dm | 4 +- code/game/objects/items/cigs_lighters.dm | 10 +- .../circuitboards/computer_circuitboards.dm | 14 +- code/game/objects/items/crayons.dm | 2 +- code/game/objects/items/defib.dm | 4 +- code/game/objects/items/devices/flashlight.dm | 4 +- .../objects/items/devices/geiger_counter.dm | 20 +- code/game/objects/items/devices/gps.dm | 2 +- .../objects/items/devices/lightreplacer.dm | 10 +- code/game/objects/items/devices/megaphone.dm | 4 +- code/game/objects/items/devices/scanners.dm | 14 +- code/game/objects/items/dna_injector.dm | 4 +- code/game/objects/items/grenades/grenade.dm | 2 +- code/game/objects/items/grenades/plastic.dm | 2 +- code/game/objects/items/handcuffs.dm | 2 +- code/game/objects/items/holy_weapons.dm | 2 +- code/game/objects/items/kitchen.dm | 4 +- code/game/objects/items/melee/energy.dm | 3 +- code/game/objects/items/melee/misc.dm | 8 +- code/game/objects/items/melee/transforming.dm | 2 +- code/game/objects/items/pneumaticCannon.dm | 2 +- code/game/objects/items/robot/robot_items.dm | 6 +- code/game/objects/items/shields.dm | 2 +- code/game/objects/items/storage/book.dm | 2 +- code/game/objects/items/stunbaton.dm | 2 +- code/game/objects/items/tanks/tanks.dm | 2 +- code/game/objects/items/teleprod.dm | 2 +- code/game/objects/items/theft_tools.dm | 19 +- code/game/objects/items/tools/screwdriver.dm | 2 +- code/game/objects/items/tools/weldingtool.dm | 1 + code/game/objects/items/twohanded.dm | 12 +- code/game/objects/items/weaponry.dm | 10 +- code/game/objects/obj_defense.dm | 8 +- code/game/objects/objs.dm | 63 +- code/game/objects/structures/barsigns.dm | 6 +- code/game/objects/structures/bedsheet_bin.dm | 8 + code/game/objects/structures/headpike.dm | 47 + .../objects/structures/petrified_statue.dm | 4 +- code/game/objects/structures/signs/_signs.dm | 123 + .../structures/signs/signs_departments.dm | 69 + .../objects/structures/signs/signs_maps.dm | 47 + .../objects/structures/signs/signs_plaques.dm | 43 + .../objects/structures/signs/signs_warning.dm | 75 + .../turfs/simulated/floor/plasteel_floor.dm | 2 + code/game/turfs/simulated/lava.dm | 4 +- .../turfs/simulated/wall/mineral_walls.dm | 2 +- code/game/world.dm | 62 +- code/modules/admin/admin.dm | 6 +- code/modules/admin/verbs/adminsay.dm | 3 + code/modules/admin/verbs/massmodvar.dm | 3 +- code/modules/admin/verbs/modifyvariables.dm | 24 +- code/modules/admin/verbs/possess.dm | 2 +- .../antagonists/_common/antag_datum.dm | 238 + .../antagonists/_common/antag_helpers.dm | 19 + .../antagonists/_common}/antag_hud.dm | 104 +- .../antagonists/_common}/antag_spawner.dm | 532 +- .../antagonists/_common}/antag_team.dm | 12 - .../abductor/abductee}/abductee_objectives.dm | 0 code/modules/antagonists/abductor/abductor.dm | 216 + .../abductor/equipment}/abduction_gear.dm | 0 .../abductor/equipment}/abduction_outfits.dm | 0 .../abductor/equipment}/abduction_surgery.dm | 0 .../antagonists/abductor/equipment}/gland.dm | 0 .../antagonists/abductor}/machinery/camera.dm | 2 +- .../abductor}/machinery/console.dm | 0 .../abductor}/machinery/dispenser.dm | 0 .../abductor}/machinery/experiment.dm | 0 .../antagonists/abductor}/machinery/pad.dm | 0 code/modules/antagonists/blob/blob.dm | 67 + .../antagonists/blob}/blob/blob_report.dm | 0 .../antagonists/blob}/blob/blobs/blob_mobs.dm | 3 +- .../antagonists/blob}/blob/blobs/core.dm | 0 .../antagonists/blob}/blob/blobs/factory.dm | 0 .../antagonists/blob}/blob/blobs/node.dm | 0 .../antagonists/blob}/blob/blobs/resource.dm | 0 .../antagonists/blob}/blob/blobs/shield.dm | 0 .../antagonists/blob}/blob/overmind.dm | 0 .../antagonists/blob}/blob/powers.dm | 0 .../antagonists/blob}/blob/theblob.dm | 2 +- .../antagonists}/borer/borer.dm | 0 .../antagonists}/borer/borer_chemicals.dm | 0 .../antagonists}/borer/borer_event.dm | 0 .../antagonists}/borer/borer_html.dm | 0 .../antagonists}/borer/borer_topic.dm | 0 .../antagonists}/borer/syndi_borer.dm | 0 code/modules/antagonists/brother/brother.dm | 154 + .../changeling/cellular_emporium.dm | 0 .../antagonists/changeling/changeling.dm | 538 + .../changeling/changeling_power.dm | 156 +- .../antagonists}/changeling/powers/absorb.dm | 226 +- .../changeling/powers/adrenaline.dm | 0 .../changeling/powers/augmented_eyesight.dm | 0 .../changeling/powers/biodegrade.dm | 0 .../changeling/powers/chameleon_skin.dm | 0 .../changeling/powers/digitalcamo.dm | 0 .../changeling/powers/fakedeath.dm | 74 +- .../changeling/powers/fleshmend.dm | 38 +- .../changeling/powers/headcrab.dm | 0 .../changeling/powers/hivemind.dm | 186 +- .../changeling/powers/humanform.dm | 60 +- .../changeling/powers/lesserform.dm | 0 .../changeling/powers/linglink.dm | 0 .../changeling/powers/mimic_voice.dm | 54 +- .../changeling/powers/mutations.dm | 0 .../antagonists}/changeling/powers/panacea.dm | 76 +- .../changeling/powers/regenerate.dm | 0 .../antagonists}/changeling/powers/revive.dm | 73 +- .../antagonists}/changeling/powers/shriek.dm | 84 +- .../antagonists}/changeling/powers/spiders.dm | 0 .../changeling/powers/strained_muscles.dm | 6 +- .../changeling/powers/tiny_prick.dm | 492 +- .../changeling/powers/transform.dm | 258 +- .../antagonists/clockcult}/clock_effect.dm | 0 .../clock_effects/city_of_cogs_rift.dm | 0 .../clockcult}/clock_effects/clock_overlay.dm | 0 .../clockcult}/clock_effects/clock_sigils.dm | 0 .../clock_effects/general_markers.dm | 0 .../clock_effects/servant_blocker.dm | 0 .../clock_effects/spatial_gateway.dm | 0 .../clock_helpers/clock_powerdrain.dm | 0 .../clock_helpers/component_helpers.dm | 0 .../clock_helpers/fabrication_helpers.dm | 0 .../clock_helpers/hierophant_network.dm | 0 .../clockcult}/clock_helpers/power_helpers.dm | 0 .../clock_helpers/ratvarian_language.dm | 0 .../clock_helpers/scripture_checks.dm | 0 .../clock_helpers/slab_abilities.dm | 0 .../antagonists/clockcult}/clock_item.dm | 0 .../clock_items/clock_components.dm | 0 .../clock_items/clock_weapons/_call_weapon.dm | 0 .../clock_weapons/ratvarian_spear.dm | 0 .../clockcult}/clock_items/clockwork_armor.dm | 0 .../clockcult}/clock_items/clockwork_slab.dm | 0 .../clock_items/clockwork_weaponry.dm | 0 .../clock_items/construct_chassis.dm | 0 .../clockcult}/clock_items/integration_cog.dm | 0 .../clockcult}/clock_items/judicial_visor.dm | 0 .../clock_items/replica_fabricator.dm | 0 .../clockcult}/clock_items/soul_vessel.dm | 6 +- .../clock_items/wraith_spectacles.dm | 14 +- .../antagonists/clockcult}/clock_mobs.dm | 0 .../clockcult}/clock_mobs/_eminence.dm | 0 .../clock_mobs/clockwork_marauder.dm | 0 .../antagonists/clockcult}/clock_scripture.dm | 0 .../scripture_applications.dm | 0 .../clock_scriptures/scripture_cyborg.dm | 0 .../clock_scriptures/scripture_drivers.dm | 0 .../clock_scriptures/scripture_scripts.dm | 0 .../antagonists/clockcult}/clock_structure.dm | 0 .../clock_structures/_trap_object.dm | 0 .../ark_of_the_clockwork_justicar.dm | 0 .../clock_structures/clockwork_obelisk.dm | 0 .../clock_structures/eminence_spire.dm | 10 +- .../clock_structures/heralds_beacon.dm | 0 .../clock_structures/mania_motor.dm | 0 .../clock_structures/ocular_warden.dm | 2 +- .../ratvar_the_clockwork_justicar.dm | 2 +- .../clockcult}/clock_structures/stargazer.dm | 0 .../clock_structures/taunting_trail.dm | 0 .../clock_structures/trap_triggers/lever.dm | 0 .../trap_triggers/pressure_sensor.dm | 0 .../trap_triggers/repeater.dm | 0 .../clock_structures/traps/brass_skewer.dm | 0 .../clock_structures/traps/steam_vent.dm | 0 .../clockcult}/clock_structures/wall_gear.dm | 0 .../antagonists/clockcult/clockcult.dm | 219 + code/modules/antagonists/cult/cult.dm | 329 + .../antagonists}/cult/cult_comms.dm | 0 .../antagonists}/cult/cult_items.dm | 2 +- .../antagonists}/cult/cult_structures.dm | 0 .../antagonists}/cult/ritual.dm | 0 .../antagonists}/cult/rune_spawn_action.dm | 0 .../antagonists}/cult/runes.dm | 4 +- .../antagonists}/cult/supply.dm | 0 .../antagonists}/cult/talisman.dm | 0 .../antagonists/devil/devil.dm} | 184 +- .../antagonists/devil/devil_helpers.dm} | 0 .../antagonists}/devil/imp/imp.dm | 0 .../devil}/sintouched/objectives.dm | 0 .../devil/true_devil/_true_devil.dm | 0 .../devil/true_devil/inventory.dm | 0 code/modules/antagonists/monkey/monkey.dm | 214 + .../antagonists}/morph/morph.dm | 0 code/modules/antagonists/ninja/ninja.dm | 155 + .../nukeop/equipment}/nuclear_challenge.dm | 0 .../nukeop/equipment}/nuclearbomb.dm | 0 .../nukeop/equipment}/pinpointer.dm | 164 +- code/modules/antagonists/nukeop/nukeop.dm | 369 + code/modules/antagonists/pirate/pirate.dm | 132 + .../antagonists}/revenant/revenant.dm | 0 .../revenant/revenant_abilities.dm | 0 .../antagonists}/revenant/revenant_blight.dm | 0 .../revenant/revenant_spawn_event.dm | 0 .../antagonists/revolution/revolution.dm | 368 + .../antagonists}/slaughter/slaughter.dm | 0 .../antagonists}/slaughter/slaughterevent.dm | 0 .../antagonists/swarmer}/swarmer.dm | 0 .../antagonists/swarmer}/swarmer_event.dm | 2 +- .../traitor/IAA/internal_affairs.dm | 302 + .../antagonists/traitor/datum_traitor.dm | 350 + .../traitor/equipment}/Malf_Modules.dm | 4 +- .../antagonists/wizard/equipment}/artefact.dm | 822 +- .../wizard/equipment}/soulstone.dm | 0 .../wizard/equipment}/spellbook.dm | 1816 ++-- code/modules/antagonists/wizard/wizard.dm | 334 + code/modules/assembly/flash.dm | 2 +- code/modules/assembly/mousetrap.dm | 6 +- .../atmospherics/machinery/airalarm.dm | 8 +- .../atmospherics/machinery/atmosmachinery.dm | 11 +- code/modules/awaymissions/corpse.dm | 4 + .../awaymissions/mission_code/Cabin.dm | 2 +- code/modules/awaymissions/zlevel.dm | 6 +- code/modules/cargo/console.dm | 20 +- code/modules/cargo/export_scanner.dm | 2 +- code/modules/cargo/expressconsole.dm | 18 +- code/modules/cargo/packs.dm | 18 +- code/modules/client/preferences.dm | 10 + code/modules/client/preferences_savefile.dm | 3 + code/modules/client/verbs/suicide.dm | 11 +- code/modules/clothing/chameleon.dm | 2 +- code/modules/clothing/glasses/_glasses.dm | 2 +- code/modules/clothing/glasses/hud.dm | 8 +- code/modules/clothing/neck/_neck.dm | 2 +- .../modules/clothing/spacesuits/flightsuit.dm | 2 +- code/modules/clothing/suits/_suits.dm | 3 +- code/modules/clothing/suits/toggles.dm | 1 - code/modules/clothing/under/accessories.dm | 12 +- code/modules/crafting/recipes.dm | 20 + code/modules/error_handler/error_handler.dm | 9 +- code/modules/events/disease_outbreak.dm | 2 +- code/modules/events/electrical_storm.dm | 19 +- code/modules/events/pirates.dm | 2 +- code/modules/events/wizard/rpgloot.dm | 3 +- .../food_and_drinks/drinks/drinks/bottle.dm | 7 +- .../drinks/drinks/drinkingglass.dm | 2 +- .../food_and_drinks/food/customizables.dm | 1 - code/modules/food_and_drinks/food/snacks.dm | 2 +- .../food_and_drinks/food/snacks/meat.dm | 10 +- .../kitchen_machinery/smartfridge.dm | 8 +- .../food_and_drinks/recipes/drinks_recipes.dm | 10 +- code/modules/holodeck/computer.dm | 20 +- code/modules/holodeck/holo_effect.dm | 2 +- code/modules/hydroponics/gene_modder.dm | 4 +- code/modules/hydroponics/hydroponics.dm | 2 +- code/modules/jobs/job_exp.dm | 2 +- code/modules/jobs/job_types/civilian.dm | 2 +- code/modules/keybindings/bindings_admin.dm | 3 + code/modules/language/moth.dm | 12 - code/modules/library/lib_machines.dm | 10 +- code/modules/mapping/reader.dm | 3 +- .../space_management/zlevel_manager.dm | 2 +- code/modules/mining/equipment/goliath_hide.dm | 12 +- code/modules/mining/laborcamp/laborstacker.dm | 10 +- .../mining/lavaland/necropolis_chests.dm | 2 +- code/modules/mining/lavaland/ruins/gym.dm | 12 +- .../mob/dead/new_player/sprite_accessories.dm | 69 + .../new_player/sprite_accessories_Citadel.dm | 4 + code/modules/mob/living/blood.dm | 10 +- code/modules/mob/living/brain/brain_item.dm | 6 +- code/modules/mob/living/brain/life.dm | 4 +- code/modules/mob/living/brain/status_procs.dm | 2 +- code/modules/mob/living/carbon/alien/alien.dm | 2 +- .../mob/living/carbon/alien/larva/life.dm | 4 +- .../mob/living/carbon/alien/status_procs.dm | 2 +- code/modules/mob/living/carbon/carbon.dm | 19 +- .../mob/living/carbon/carbon_defense.dm | 6 +- code/modules/mob/living/carbon/examine.dm | 2 +- code/modules/mob/living/carbon/human/death.dm | 4 +- .../mob/living/carbon/human/examine.dm | 8 +- code/modules/mob/living/carbon/human/human.dm | 44 +- .../mob/living/carbon/human/human_defense.dm | 10 +- .../mob/living/carbon/human/human_helpers.dm | 4 +- .../mob/living/carbon/human/interactive.dm | 4 +- .../mob/living/carbon/human/inventory.dm | 2 +- code/modules/mob/living/carbon/human/life.dm | 33 +- .../mob/living/carbon/human/species.dm | 88 +- .../carbon/human/species_types/flypeople.dm | 4 +- .../carbon/human/species_types/furrypeople.dm | 4 +- .../carbon/human/species_types/golems.dm | 2 +- .../carbon/human/species_types/jellypeople.dm | 376 +- .../carbon/human/species_types/mothmen.dm | 60 + .../carbon/human/species_types/skeletons.dm | 4 +- .../carbon/human/species_types/zombies.dm | 2 +- .../mob/living/carbon/human/update_icons.dm | 2 +- code/modules/mob/living/carbon/life.dm | 1 - .../mob/living/carbon/monkey/combat.dm | 2 +- code/modules/mob/living/carbon/monkey/life.dm | 2 +- .../mob/living/carbon/monkey/update_icons.dm | 2 +- .../modules/mob/living/carbon/status_procs.dm | 2 +- .../modules/mob/living/carbon/update_icons.dm | 2 +- code/modules/mob/living/damage_procs.dm | 4 +- code/modules/mob/living/life.dm | 13 +- code/modules/mob/living/living.dm | 12 +- code/modules/mob/living/living_defense.dm | 16 +- code/modules/mob/living/living_defines.dm | 2 +- code/modules/mob/living/say.dm | 2 +- .../mob/living/silicon/ai/freelook/chunk.dm | 3 - code/modules/mob/living/silicon/robot/life.dm | 2 - .../mob/living/simple_animal/bot/bot.dm | 1 - .../mob/living/simple_animal/bot/ed209bot.dm | 2 +- .../mob/living/simple_animal/bot/medbot.dm | 4 +- .../mob/living/simple_animal/bot/secbot.dm | 4 +- .../mob/living/simple_animal/friendly/dog.dm | 8 +- .../friendly/drone/drones_as_items.dm | 2 +- .../friendly/drone/interaction.dm | 2 +- .../living/simple_animal/friendly/snake.dm | 61 + .../living/simple_animal/hostile/headcrab.dm | 4 +- .../hostile/megafauna/colossus.dm | 6 +- code/modules/mob/living/status_procs.dm | 95 +- code/modules/mob/mob_cleanup.dm | 5 - code/modules/mob/mob_helpers.dm | 3 - code/modules/mob/say.dm | 2 +- code/modules/mob/status_procs.dm | 12 +- .../computers/item/computer.dm | 4 +- .../modular_computers/file_system/program.dm | 2 +- .../file_system/programs/file_browser.dm | 2 +- .../file_system/programs/ntdownloader.dm | 4 +- .../ninja/suit/n_suit_verbs/ninja_stars.dm | 2 +- code/modules/ninja/suit/ninjaDrainAct.dm | 4 +- code/modules/ninja/suit/suit_process.dm | 2 - code/modules/paperwork/contract.dm | 2 +- code/modules/paperwork/paper.dm | 4 +- code/modules/paperwork/paperplane.dm | 2 +- code/modules/paperwork/pen.dm | 6 +- code/modules/power/apc.dm | 16 +- code/modules/power/cable.dm | 2 +- code/modules/power/port_gen.dm | 6 +- code/modules/power/power.dm | 2 +- code/modules/power/singularity/emitter.dm | 6 +- code/modules/power/singularity/narsie.dm | 1 - code/modules/power/singularity/singularity.dm | 3 +- code/modules/power/supermatter/supermatter.dm | 15 +- code/modules/power/tesla/coil.dm | 2 +- code/modules/power/tesla/energy_ball.dm | 17 +- .../procedural_mapping/mapGenerator.dm | 2 - .../mapGenerators/cellular.dm | 2 - code/modules/projectiles/gun.dm | 9 +- .../projectiles/guns/ballistic/revolver.dm | 7 +- .../modules/projectiles/guns/ballistic/toy.dm | 8 +- .../guns/energy/kinetic_accelerator.dm | 4 +- code/modules/projectiles/guns/energy/laser.dm | 6 +- .../projectiles/guns/energy/megabuster.dm | 6 +- .../projectiles/guns/energy/special.dm | 7 +- .../projectiles/guns/misc/blastcannon.dm | 2 +- code/modules/projectiles/pins.dm | 6 +- code/modules/projectiles/projectile.dm | 1 + code/modules/projectiles/projectile/energy.dm | 2 +- .../modules/projectiles/projectile/special.dm | 2 +- code/modules/reagents/chemistry/holder.dm | 24 - .../chemistry/machinery/chem_dispenser.dm | 4 +- .../chemistry/reagents/alcohol_reagents.dm | 1 + .../chemistry/reagents/drink_reagents.dm | 13 +- .../chemistry/reagents/drug_reagents.dm | 13 +- .../chemistry/reagents/medicine_reagents.dm | 125 +- .../chemistry/reagents/other_reagents.dm | 147 +- .../reagents/pyrotechnic_reagents.dm | 60 + .../chemistry/reagents/toxin_reagents.dm | 22 +- code/modules/reagents/chemistry/recipes.dm | 27 +- .../reagents/chemistry/recipes/medicine.dm | 12 + .../reagents/chemistry/recipes/others.dm | 86 +- .../chemistry/recipes/pyrotechnics.dm | 15 + .../chemistry/recipes/slime_extracts.dm | 69 +- code/modules/recycling/disposal/bin.dm | 1 - code/modules/recycling/disposal/pipe.dm | 2 +- .../departmental_circuit_imprinter.dm | 2 +- code/modules/research/departmental_lathe.dm | 2 +- .../research/designs/autolathe_designs.dm | 11 +- .../research/designs/medical_designs.dm | 10 + code/modules/research/rdconsole.dm | 6 +- code/modules/research/server.dm | 7 +- code/modules/research/techweb/all_nodes.dm | 2 +- .../research/xenobiology/xenobiology.dm | 405 + .../ruins/objects_and_mobs/sin_ruins.dm | 6 +- .../ruins/spaceruin_code/caravanambush.dm | 139 + .../security_levels/security_levels.dm | 4 +- code/modules/shuttle/arrivals.dm | 23 +- code/modules/shuttle/computer.dm | 4 +- code/modules/shuttle/emergency.dm | 22 +- code/modules/shuttle/manipulator.dm | 26 +- code/modules/shuttle/shuttle.dm | 35 +- code/modules/shuttle/supply.dm | 1 - code/modules/shuttle/syndicate.dm | 2 +- code/modules/shuttle/white_ship.dm | 2 +- code/modules/spells/spell.dm | 4 +- code/modules/spells/spell_types/genetic.dm | 10 +- code/modules/station_goals/shield.dm | 12 +- code/modules/surgery/bodyparts/bodyparts.dm | 14 +- code/modules/surgery/bodyparts/head.dm | 2 +- code/modules/surgery/lipoplasty.dm | 2 +- code/modules/surgery/organ_manipulation.dm | 8 +- code/modules/surgery/organs/ears.dm | 5 +- code/modules/surgery/organs/eyes.dm | 5 + code/modules/surgery/organs/tongue.dm | 2 +- code/modules/surgery/plastic_surgery.dm | 4 +- code/modules/unit_tests/_unit_tests.dm | 5 + code/modules/unit_tests/unit_test.dm | 77 + code/modules/uplink/uplink_items.dm | 11 + code/modules/zombie/items.dm | 2 +- html/browser/common.css | 111 +- icons/effects/96x32.dmi | Bin 10844 -> 17322 bytes icons/misc/language.dmi | Bin 4323 -> 4645 bytes icons/mob/actions/actions_slime.dmi | Bin 3042 -> 4717 bytes icons/mob/animal.dmi | Bin 197914 -> 203781 bytes icons/mob/human_parts.dmi | Bin 34931 -> 38366 bytes icons/mob/human_parts_greyscale.dmi | Bin 44580 -> 55669 bytes icons/mob/neck.dmi | Bin 36938 -> 39053 bytes icons/mob/uniform.dmi | Bin 237182 -> 233173 bytes icons/mob/wings.dmi | Bin 13976 -> 79283 bytes icons/obj/bedsheets.dmi | Bin 11656 -> 12534 bytes icons/obj/decals.dmi | Bin 25747 -> 25567 bytes icons/obj/drinks.dmi | Bin 60639 -> 64707 bytes icons/obj/food/food.dmi | Bin 59184 -> 59511 bytes interface/interface.dm | 1 + .../code/controllers/subsystem/shuttle.dm | 6 + .../code/datums/uplink_items_cit.dm | 4 +- .../objects/items/melee/eutactic_blades.dm | 7 +- .../modules/mob/living/carbon/human/life.dm | 12 + modular_citadel/icons/obj/power.dmi | Bin 0 -> 1782 bytes modular_citadel/simplemob_vore_values.dm | 4 + strings/names/moth.txt | 40 + strings/phobia.json | 14 +- tgstation.dme | 328 +- tgui/assets/tgui.css | 2 +- tgui/assets/tgui.js | 36 +- tgui/package-lock.json | 2513 +---- tools/travis/build_byond.sh | 12 +- 666 files changed, 27177 insertions(+), 35945 deletions(-) delete mode 100644 code/__DATASTRUCTURES/linked_lists.dm delete mode 100644 code/__DATASTRUCTURES/priority_queue.dm delete mode 100644 code/__DATASTRUCTURES/stacks.dm rename code/{__DATASTRUCTURES/globals.dm => __DEFINES/_globals.dm} (97%) create mode 100644 code/__DEFINES/antagonists.dm create mode 100644 code/__DEFINES/obj_flags.dm create mode 100644 code/__DEFINES/traits.dm rename code/{__DATASTRUCTURES => __HELPERS}/heap.dm (100%) create mode 100644 code/datums/armor.dm create mode 100644 code/datums/embedding_behavior.dm delete mode 100644 code/game/gamemodes/blob/blob.dm delete mode 100644 code/game/gamemodes/clock_cult/clock_helpers/proselytizer_helpers.dm delete mode 100644 code/game/gamemodes/clock_cult/clock_mobs/anima_fragment.dm delete mode 100644 code/game/gamemodes/clock_cult/clock_scriptures/scripture_revenant.dm delete mode 100644 code/game/gamemodes/clock_cult/clock_structures/interdiction_lens.dm delete mode 100644 code/game/gamemodes/clock_cult/clock_structures/tinkerers_cache.dm delete mode 100644 code/game/gamemodes/gang/dominator.dm delete mode 100644 code/game/gamemodes/gang/gang.dm delete mode 100644 code/game/gamemodes/gang/gang_datum.dm delete mode 100644 code/game/gamemodes/gang/gang_items.dm delete mode 100644 code/game/gamemodes/gang/gang_pen.dm delete mode 100644 code/game/gamemodes/gang/recaller.dm delete mode 100644 code/game/gamemodes/intercept_report.dm delete mode 100644 code/game/gamemodes/miniantags/abduction/abduction.dm delete mode 100644 code/game/gamemodes/miniantags/hades/hades.dm delete mode 100644 code/game/gamemodes/miniantags/hades/hades_chapel.dm delete mode 100644 code/game/gamemodes/miniantags/readme.txt rename code/game/gamemodes/{miniantags => }/monkey/monkey.dm (100%) delete mode 100644 code/game/gamemodes/objective_team.dm delete mode 100644 code/game/gamemodes/wizard/raginmages.dm create mode 100644 code/game/objects/structures/headpike.dm create mode 100644 code/game/objects/structures/signs/_signs.dm create mode 100644 code/game/objects/structures/signs/signs_departments.dm create mode 100644 code/game/objects/structures/signs/signs_maps.dm create mode 100644 code/game/objects/structures/signs/signs_plaques.dm create mode 100644 code/game/objects/structures/signs/signs_warning.dm create mode 100644 code/modules/antagonists/_common/antag_datum.dm create mode 100644 code/modules/antagonists/_common/antag_helpers.dm rename code/{game/gamemodes => modules/antagonists/_common}/antag_hud.dm (95%) rename code/{game/gamemodes => modules/antagonists/_common}/antag_spawner.dm (97%) rename code/{game/gamemodes => modules/antagonists/_common}/antag_team.dm (74%) rename code/{game/gamemodes/miniantags/abduction => modules/antagonists/abductor/abductee}/abductee_objectives.dm (100%) create mode 100644 code/modules/antagonists/abductor/abductor.dm rename code/{game/gamemodes/miniantags/abduction => modules/antagonists/abductor/equipment}/abduction_gear.dm (100%) rename code/{game/gamemodes/miniantags/abduction => modules/antagonists/abductor/equipment}/abduction_outfits.dm (100%) rename code/{game/gamemodes/miniantags/abduction => modules/antagonists/abductor/equipment}/abduction_surgery.dm (100%) rename code/{game/gamemodes/miniantags/abduction => modules/antagonists/abductor/equipment}/gland.dm (100%) rename code/{game/gamemodes/miniantags/abduction => modules/antagonists/abductor}/machinery/camera.dm (99%) rename code/{game/gamemodes/miniantags/abduction => modules/antagonists/abductor}/machinery/console.dm (100%) rename code/{game/gamemodes/miniantags/abduction => modules/antagonists/abductor}/machinery/dispenser.dm (100%) rename code/{game/gamemodes/miniantags/abduction => modules/antagonists/abductor}/machinery/experiment.dm (100%) rename code/{game/gamemodes/miniantags/abduction => modules/antagonists/abductor}/machinery/pad.dm (100%) create mode 100644 code/modules/antagonists/blob/blob.dm rename code/{game/gamemodes => modules/antagonists/blob}/blob/blob_report.dm (100%) rename code/{game/gamemodes => modules/antagonists/blob}/blob/blobs/blob_mobs.dm (98%) rename code/{game/gamemodes => modules/antagonists/blob}/blob/blobs/core.dm (100%) rename code/{game/gamemodes => modules/antagonists/blob}/blob/blobs/factory.dm (100%) rename code/{game/gamemodes => modules/antagonists/blob}/blob/blobs/node.dm (100%) rename code/{game/gamemodes => modules/antagonists/blob}/blob/blobs/resource.dm (100%) rename code/{game/gamemodes => modules/antagonists/blob}/blob/blobs/shield.dm (100%) rename code/{game/gamemodes => modules/antagonists/blob}/blob/overmind.dm (100%) rename code/{game/gamemodes => modules/antagonists/blob}/blob/powers.dm (100%) rename code/{game/gamemodes => modules/antagonists/blob}/blob/theblob.dm (99%) rename code/{game/gamemodes/miniantags => modules/antagonists}/borer/borer.dm (100%) rename code/{game/gamemodes/miniantags => modules/antagonists}/borer/borer_chemicals.dm (100%) rename code/{game/gamemodes/miniantags => modules/antagonists}/borer/borer_event.dm (100%) rename code/{game/gamemodes/miniantags => modules/antagonists}/borer/borer_html.dm (100%) rename code/{game/gamemodes/miniantags => modules/antagonists}/borer/borer_topic.dm (100%) rename code/{game/gamemodes/miniantags => modules/antagonists}/borer/syndi_borer.dm (100%) create mode 100644 code/modules/antagonists/brother/brother.dm rename code/{game/gamemodes => modules/antagonists}/changeling/cellular_emporium.dm (100%) create mode 100644 code/modules/antagonists/changeling/changeling.dm rename code/{game/gamemodes => modules/antagonists}/changeling/changeling_power.dm (93%) rename code/{game/gamemodes => modules/antagonists}/changeling/powers/absorb.dm (97%) rename code/{game/gamemodes => modules/antagonists}/changeling/powers/adrenaline.dm (100%) rename code/{game/gamemodes => modules/antagonists}/changeling/powers/augmented_eyesight.dm (100%) rename code/{game/gamemodes => modules/antagonists}/changeling/powers/biodegrade.dm (100%) rename code/{game/gamemodes => modules/antagonists}/changeling/powers/chameleon_skin.dm (100%) rename code/{game/gamemodes => modules/antagonists}/changeling/powers/digitalcamo.dm (100%) rename code/{game/gamemodes => modules/antagonists}/changeling/powers/fakedeath.dm (88%) rename code/{game/gamemodes => modules/antagonists}/changeling/powers/fleshmend.dm (97%) rename code/{game/gamemodes => modules/antagonists}/changeling/powers/headcrab.dm (100%) rename code/{game/gamemodes => modules/antagonists}/changeling/powers/hivemind.dm (97%) rename code/{game/gamemodes => modules/antagonists}/changeling/powers/humanform.dm (97%) rename code/{game/gamemodes => modules/antagonists}/changeling/powers/lesserform.dm (100%) rename code/{game/gamemodes => modules/antagonists}/changeling/powers/linglink.dm (100%) rename code/{game/gamemodes => modules/antagonists}/changeling/powers/mimic_voice.dm (97%) rename code/{game/gamemodes => modules/antagonists}/changeling/powers/mutations.dm (100%) rename code/{game/gamemodes => modules/antagonists}/changeling/powers/panacea.dm (96%) rename code/{game/gamemodes => modules/antagonists}/changeling/powers/regenerate.dm (100%) rename code/{game/gamemodes => modules/antagonists}/changeling/powers/revive.dm (86%) rename code/{game/gamemodes => modules/antagonists}/changeling/powers/shriek.dm (97%) rename code/{game/gamemodes => modules/antagonists}/changeling/powers/spiders.dm (100%) rename code/{game/gamemodes => modules/antagonists}/changeling/powers/strained_muscles.dm (91%) rename code/{game/gamemodes => modules/antagonists}/changeling/powers/tiny_prick.dm (95%) rename code/{game/gamemodes => modules/antagonists}/changeling/powers/transform.dm (96%) rename code/{game/gamemodes/clock_cult => modules/antagonists/clockcult}/clock_effect.dm (100%) rename code/{game/gamemodes/clock_cult => modules/antagonists/clockcult}/clock_effects/city_of_cogs_rift.dm (100%) rename code/{game/gamemodes/clock_cult => modules/antagonists/clockcult}/clock_effects/clock_overlay.dm (100%) rename code/{game/gamemodes/clock_cult => modules/antagonists/clockcult}/clock_effects/clock_sigils.dm (100%) rename code/{game/gamemodes/clock_cult => modules/antagonists/clockcult}/clock_effects/general_markers.dm (100%) rename code/{game/gamemodes/clock_cult => modules/antagonists/clockcult}/clock_effects/servant_blocker.dm (100%) rename code/{game/gamemodes/clock_cult => modules/antagonists/clockcult}/clock_effects/spatial_gateway.dm (100%) rename code/{game/gamemodes/clock_cult => modules/antagonists/clockcult}/clock_helpers/clock_powerdrain.dm (100%) rename code/{game/gamemodes/clock_cult => modules/antagonists/clockcult}/clock_helpers/component_helpers.dm (100%) rename code/{game/gamemodes/clock_cult => modules/antagonists/clockcult}/clock_helpers/fabrication_helpers.dm (100%) rename code/{game/gamemodes/clock_cult => modules/antagonists/clockcult}/clock_helpers/hierophant_network.dm (100%) rename code/{game/gamemodes/clock_cult => modules/antagonists/clockcult}/clock_helpers/power_helpers.dm (100%) rename code/{game/gamemodes/clock_cult => modules/antagonists/clockcult}/clock_helpers/ratvarian_language.dm (100%) rename code/{game/gamemodes/clock_cult => modules/antagonists/clockcult}/clock_helpers/scripture_checks.dm (100%) rename code/{game/gamemodes/clock_cult => modules/antagonists/clockcult}/clock_helpers/slab_abilities.dm (100%) rename code/{game/gamemodes/clock_cult => modules/antagonists/clockcult}/clock_item.dm (100%) rename code/{game/gamemodes/clock_cult => modules/antagonists/clockcult}/clock_items/clock_components.dm (100%) rename code/{game/gamemodes/clock_cult => modules/antagonists/clockcult}/clock_items/clock_weapons/_call_weapon.dm (100%) rename code/{game/gamemodes/clock_cult => modules/antagonists/clockcult}/clock_items/clock_weapons/ratvarian_spear.dm (100%) rename code/{game/gamemodes/clock_cult => modules/antagonists/clockcult}/clock_items/clockwork_armor.dm (100%) rename code/{game/gamemodes/clock_cult => modules/antagonists/clockcult}/clock_items/clockwork_slab.dm (100%) rename code/{game/gamemodes/clock_cult => modules/antagonists/clockcult}/clock_items/clockwork_weaponry.dm (100%) rename code/{game/gamemodes/clock_cult => modules/antagonists/clockcult}/clock_items/construct_chassis.dm (100%) rename code/{game/gamemodes/clock_cult => modules/antagonists/clockcult}/clock_items/integration_cog.dm (100%) rename code/{game/gamemodes/clock_cult => modules/antagonists/clockcult}/clock_items/judicial_visor.dm (100%) rename code/{game/gamemodes/clock_cult => modules/antagonists/clockcult}/clock_items/replica_fabricator.dm (100%) rename code/{game/gamemodes/clock_cult => modules/antagonists/clockcult}/clock_items/soul_vessel.dm (96%) rename code/{game/gamemodes/clock_cult => modules/antagonists/clockcult}/clock_items/wraith_spectacles.dm (95%) rename code/{game/gamemodes/clock_cult => modules/antagonists/clockcult}/clock_mobs.dm (100%) rename code/{game/gamemodes/clock_cult => modules/antagonists/clockcult}/clock_mobs/_eminence.dm (100%) rename code/{game/gamemodes/clock_cult => modules/antagonists/clockcult}/clock_mobs/clockwork_marauder.dm (100%) rename code/{game/gamemodes/clock_cult => modules/antagonists/clockcult}/clock_scripture.dm (100%) rename code/{game/gamemodes/clock_cult => modules/antagonists/clockcult}/clock_scriptures/scripture_applications.dm (100%) rename code/{game/gamemodes/clock_cult => modules/antagonists/clockcult}/clock_scriptures/scripture_cyborg.dm (100%) rename code/{game/gamemodes/clock_cult => modules/antagonists/clockcult}/clock_scriptures/scripture_drivers.dm (100%) rename code/{game/gamemodes/clock_cult => modules/antagonists/clockcult}/clock_scriptures/scripture_scripts.dm (100%) rename code/{game/gamemodes/clock_cult => modules/antagonists/clockcult}/clock_structure.dm (100%) rename code/{game/gamemodes/clock_cult => modules/antagonists/clockcult}/clock_structures/_trap_object.dm (100%) rename code/{game/gamemodes/clock_cult => modules/antagonists/clockcult}/clock_structures/ark_of_the_clockwork_justicar.dm (100%) rename code/{game/gamemodes/clock_cult => modules/antagonists/clockcult}/clock_structures/clockwork_obelisk.dm (100%) rename code/{game/gamemodes/clock_cult => modules/antagonists/clockcult}/clock_structures/eminence_spire.dm (94%) rename code/{game/gamemodes/clock_cult => modules/antagonists/clockcult}/clock_structures/heralds_beacon.dm (100%) rename code/{game/gamemodes/clock_cult => modules/antagonists/clockcult}/clock_structures/mania_motor.dm (100%) rename code/{game/gamemodes/clock_cult => modules/antagonists/clockcult}/clock_structures/ocular_warden.dm (98%) rename code/{game/gamemodes/clock_cult => modules/antagonists/clockcult}/clock_structures/ratvar_the_clockwork_justicar.dm (99%) rename code/{game/gamemodes/clock_cult => modules/antagonists/clockcult}/clock_structures/stargazer.dm (100%) rename code/{game/gamemodes/clock_cult => modules/antagonists/clockcult}/clock_structures/taunting_trail.dm (100%) rename code/{game/gamemodes/clock_cult => modules/antagonists/clockcult}/clock_structures/trap_triggers/lever.dm (100%) rename code/{game/gamemodes/clock_cult => modules/antagonists/clockcult}/clock_structures/trap_triggers/pressure_sensor.dm (100%) rename code/{game/gamemodes/clock_cult => modules/antagonists/clockcult}/clock_structures/trap_triggers/repeater.dm (100%) rename code/{game/gamemodes/clock_cult => modules/antagonists/clockcult}/clock_structures/traps/brass_skewer.dm (100%) rename code/{game/gamemodes/clock_cult => modules/antagonists/clockcult}/clock_structures/traps/steam_vent.dm (100%) rename code/{game/gamemodes/clock_cult => modules/antagonists/clockcult}/clock_structures/wall_gear.dm (100%) create mode 100644 code/modules/antagonists/clockcult/clockcult.dm create mode 100644 code/modules/antagonists/cult/cult.dm rename code/{game/gamemodes => modules/antagonists}/cult/cult_comms.dm (100%) rename code/{game/gamemodes => modules/antagonists}/cult/cult_items.dm (99%) rename code/{game/gamemodes => modules/antagonists}/cult/cult_structures.dm (100%) rename code/{game/gamemodes => modules/antagonists}/cult/ritual.dm (100%) rename code/{game/gamemodes => modules/antagonists}/cult/rune_spawn_action.dm (100%) rename code/{game/gamemodes => modules/antagonists}/cult/runes.dm (99%) rename code/{game/gamemodes => modules/antagonists}/cult/supply.dm (100%) rename code/{game/gamemodes => modules/antagonists}/cult/talisman.dm (100%) rename code/{game/gamemodes/devil/devilinfo.dm => modules/antagonists/devil/devil.dm} (82%) rename code/{game/gamemodes/devil/devil.dm => modules/antagonists/devil/devil_helpers.dm} (100%) rename code/{game/gamemodes => modules/antagonists}/devil/imp/imp.dm (100%) rename code/{game/gamemodes/miniantags => modules/antagonists/devil}/sintouched/objectives.dm (100%) rename code/{game/gamemodes => modules/antagonists}/devil/true_devil/_true_devil.dm (100%) rename code/{game/gamemodes => modules/antagonists}/devil/true_devil/inventory.dm (100%) create mode 100644 code/modules/antagonists/monkey/monkey.dm rename code/{game/gamemodes/miniantags => modules/antagonists}/morph/morph.dm (100%) create mode 100644 code/modules/antagonists/ninja/ninja.dm rename code/{game/gamemodes/nuclear => modules/antagonists/nukeop/equipment}/nuclear_challenge.dm (100%) rename code/{game/gamemodes/nuclear => modules/antagonists/nukeop/equipment}/nuclearbomb.dm (100%) rename code/{game/gamemodes/nuclear => modules/antagonists/nukeop/equipment}/pinpointer.dm (95%) create mode 100644 code/modules/antagonists/nukeop/nukeop.dm create mode 100644 code/modules/antagonists/pirate/pirate.dm rename code/{game/gamemodes/miniantags => modules/antagonists}/revenant/revenant.dm (100%) rename code/{game/gamemodes/miniantags => modules/antagonists}/revenant/revenant_abilities.dm (100%) rename code/{game/gamemodes/miniantags => modules/antagonists}/revenant/revenant_blight.dm (100%) rename code/{game/gamemodes/miniantags => modules/antagonists}/revenant/revenant_spawn_event.dm (100%) create mode 100644 code/modules/antagonists/revolution/revolution.dm rename code/{game/gamemodes/miniantags => modules/antagonists}/slaughter/slaughter.dm (100%) rename code/{game/gamemodes/miniantags => modules/antagonists}/slaughter/slaughterevent.dm (100%) rename code/{game/gamemodes/miniantags/bot_swarm => modules/antagonists/swarmer}/swarmer.dm (100%) rename code/{game/gamemodes/miniantags/bot_swarm => modules/antagonists/swarmer}/swarmer_event.dm (96%) create mode 100644 code/modules/antagonists/traitor/IAA/internal_affairs.dm create mode 100644 code/modules/antagonists/traitor/datum_traitor.dm rename code/{game/gamemodes/malfunction => modules/antagonists/traitor/equipment}/Malf_Modules.dm (99%) rename code/{game/gamemodes/wizard => modules/antagonists/wizard/equipment}/artefact.dm (96%) rename code/{game/gamemodes/wizard => modules/antagonists/wizard/equipment}/soulstone.dm (100%) rename code/{game/gamemodes/wizard => modules/antagonists/wizard/equipment}/spellbook.dm (97%) create mode 100644 code/modules/antagonists/wizard/wizard.dm create mode 100644 code/modules/mob/living/carbon/human/species_types/mothmen.dm create mode 100644 code/modules/mob/living/simple_animal/friendly/snake.dm delete mode 100644 code/modules/mob/mob_cleanup.dm create mode 100644 code/modules/unit_tests/_unit_tests.dm create mode 100644 code/modules/unit_tests/unit_test.dm create mode 100644 modular_citadel/code/controllers/subsystem/shuttle.dm create mode 100644 modular_citadel/code/modules/mob/living/carbon/human/life.dm create mode 100644 modular_citadel/icons/obj/power.dmi create mode 100644 strings/names/moth.txt diff --git a/_maps/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm b/_maps/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm index 40f5bfb987..56bc9a0548 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm @@ -1,4 +1,4 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "aa" = ( /turf/template_noop, /area/template_noop) @@ -146,7 +146,7 @@ /area/ruin/powered/beach) "aF" = ( /obj/machinery/vending/boozeomat{ - emagged = 1; + set_obj_flags = "EMAGGED"; req_access_txt = "0" }, /turf/open/floor/wood, diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_animal_hospital.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_animal_hospital.dmm index 9ad1915924..3f05b33fe5 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_animal_hospital.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_animal_hospital.dmm @@ -491,7 +491,7 @@ }, /area/ruin/powered/animal_hospital) "bI" = ( -/obj/structure/sign/bluecross_2{ +/obj/structure/sign/departments/medbay/alt{ name = "animal hospital" }, /turf/closed/wall/mineral/titanium/nodiagonal, diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_greed.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_greed.dmm index c0789e84d1..1422cde1a4 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_greed.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_greed.dmm @@ -1,4 +1,4 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "a" = ( /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) @@ -55,7 +55,7 @@ /area/ruin/powered/greed) "k" = ( /obj/machinery/computer/arcade/battle{ - emagged = 1 + set_obj_flags = "EMAGGED" }, /turf/open/floor/engine/cult, /area/ruin/powered/greed) diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm index a63b837e54..d5d121fde1 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm @@ -327,7 +327,7 @@ /turf/closed/wall/mineral/plastitanium/explosive, /area/ruin/unpowered/syndicate_lava_base/cargo) "dQ" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/ruin/unpowered/syndicate_lava_base/testlab) "dR" = ( @@ -1393,7 +1393,7 @@ /turf/open/floor/plasteel, /area/ruin/unpowered/syndicate_lava_base/cargo) "fx" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/ruin/unpowered/syndicate_lava_base/cargo) "fy" = ( @@ -1453,7 +1453,7 @@ }, /area/ruin/unpowered/syndicate_lava_base/virology) "fD" = ( -/obj/structure/sign/biohazard, +/obj/structure/sign/warning/biohazard, /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/ruin/unpowered/syndicate_lava_base/virology) "fE" = ( @@ -1583,17 +1583,17 @@ /turf/open/floor/plating, /area/ruin/unpowered/syndicate_lava_base/cargo) "gf" = ( -/obj/structure/sign/vacuum{ +/obj/structure/sign/warning/vacuum{ pixel_y = -32 }, /obj/machinery/light/small, /turf/open/floor/plating, /area/ruin/unpowered/syndicate_lava_base/cargo) "gg" = ( -/obj/structure/sign/fire{ +/obj/structure/sign/warning/fire{ pixel_y = 32 }, -/obj/structure/sign/xeno_warning_mining{ +/obj/structure/sign/warning/xeno_mining{ pixel_y = -32 }, /turf/open/floor/plating, @@ -1962,7 +1962,7 @@ }, /area/ruin/unpowered/syndicate_lava_base/main) "gO" = ( -/obj/structure/sign/cargo, +/obj/structure/sign/departments/cargo, /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/ruin/unpowered/syndicate_lava_base/cargo) "gP" = ( @@ -2263,7 +2263,7 @@ /area/ruin/unpowered/syndicate_lava_base/virology) "hv" = ( /obj/machinery/disposal/bin, -/obj/structure/sign/deathsposal{ +/obj/structure/sign/warning/deathsposal{ pixel_x = 32 }, /obj/effect/turf_decal/stripes/red/box, @@ -2376,7 +2376,7 @@ /turf/open/floor/plating, /area/ruin/unpowered/syndicate_lava_base/virology) "hI" = ( -/obj/structure/sign/vacuum{ +/obj/structure/sign/warning/vacuum{ pixel_x = -32 }, /turf/open/floor/plating, @@ -2389,7 +2389,7 @@ /obj/machinery/light/small{ dir = 4 }, -/obj/structure/sign/fire{ +/obj/structure/sign/warning/fire{ pixel_x = 32 }, /obj/structure/closet/emcloset/anchored, @@ -2680,7 +2680,7 @@ /turf/open/floor/plasteel, /area/ruin/unpowered/syndicate_lava_base/main) "iq" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/ruin/unpowered/syndicate_lava_base/main) "ir" = ( @@ -3531,7 +3531,7 @@ }, /area/ruin/unpowered/syndicate_lava_base/main) "jU" = ( -/obj/structure/sign/engineering, +/obj/structure/sign/departments/engineering, /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/ruin/unpowered/syndicate_lava_base/engineering) "jV" = ( @@ -4064,7 +4064,7 @@ /turf/open/floor/plasteel/white, /area/ruin/unpowered/syndicate_lava_base/medbay) "kT" = ( -/obj/structure/sign/bluecross_2, +/obj/structure/sign/departments/medbay/alt, /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/ruin/unpowered/syndicate_lava_base/medbay) "kU" = ( @@ -4076,7 +4076,7 @@ }, /obj/machinery/power/smes/engineering, /obj/structure/cable/yellow, -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_x = -32 }, /obj/effect/decal/cleanable/dirt, @@ -4766,7 +4766,7 @@ /turf/open/floor/plating, /area/ruin/unpowered/syndicate_lava_base/telecomms) "mq" = ( -/obj/structure/sign/vacuum{ +/obj/structure/sign/warning/vacuum{ pixel_x = -32 }, /turf/open/floor/plating, @@ -4778,7 +4778,7 @@ /obj/machinery/light/small{ dir = 4 }, -/obj/structure/sign/fire{ +/obj/structure/sign/warning/fire{ pixel_x = 32 }, /obj/structure/closet/emcloset/anchored, @@ -4955,7 +4955,7 @@ /turf/open/floor/circuit/green, /area/ruin/unpowered/syndicate_lava_base/telecomms) "mN" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/ruin/unpowered/syndicate_lava_base/telecomms) "mP" = ( @@ -5115,7 +5115,7 @@ /turf/open/floor/plasteel/floorgrime, /area/ruin/unpowered/syndicate_lava_base/engineering) "nf" = ( -/obj/structure/sign/fire, +/obj/structure/sign/warning/fire, /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/ruin/unpowered/syndicate_lava_base/engineering) "ng" = ( @@ -5448,13 +5448,6 @@ /area/ruin/unpowered/syndicate_lava_base/telecomms) "nJ" = ( /obj/structure/table/reinforced, -/obj/item/device/radio/intercom{ - broadcasting = 0; - dir = 8; - freerange = 1; - listening = 1; - name = "Pirate Radio Listening Channel" - }, /turf/open/floor/plasteel/vault{ dir = 5 }, @@ -5782,11 +5775,8 @@ "oj" = ( /obj/structure/table/reinforced, /obj/item/device/radio/intercom{ - broadcasting = 1; - dir = 8; freerange = 1; - listening = 0; - name = "Pirate Radio Broadcast Channel" + name = "Syndicate Radio Intercom" }, /turf/open/floor/plasteel/vault{ dir = 5 @@ -5943,9 +5933,7 @@ frequency = 1441; id = "syndie_lavaland_inc_in" }, -/obj/structure/sign/vacuum{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = -32 }, /turf/open/floor/engine{ @@ -5962,10 +5950,10 @@ }, /area/ruin/unpowered/syndicate_lava_base/engineering) "oD" = ( -/obj/structure/sign/xeno_warning_mining{ +/obj/structure/sign/warning/xeno_mining{ pixel_x = -32 }, -/obj/structure/sign/fire{ +/obj/structure/sign/warning/fire{ pixel_x = 32 }, /turf/open/floor/plating, @@ -5986,7 +5974,7 @@ }, /area/ruin/unpowered/syndicate_lava_base/engineering) "oF" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/ruin/unpowered/syndicate_lava_base/arrivals) "oG" = ( @@ -6009,7 +5997,7 @@ }, /area/ruin/unpowered/syndicate_lava_base/engineering) "oI" = ( -/obj/structure/sign/vacuum{ +/obj/structure/sign/warning/vacuum{ pixel_x = -32 }, /obj/machinery/light/small{ @@ -6018,7 +6006,7 @@ /turf/open/floor/plating, /area/ruin/unpowered/syndicate_lava_base/arrivals) "oP" = ( -/obj/structure/sign/chemistry, +/obj/structure/sign/departments/chemistry, /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/ruin/unpowered/syndicate_lava_base/testlab) @@ -6320,7 +6308,7 @@ eh eh eh eh -gj +eh eh ab ab @@ -6338,7 +6326,7 @@ ab ab ab mn -mo +mn mN nj mn @@ -6574,8 +6562,8 @@ dG dG lS mn -mo mn +mo nL mn mn @@ -6711,7 +6699,7 @@ je jk jx jx -jP +jy jy jy ms @@ -6719,7 +6707,7 @@ mT no nN ol -ow +mT ab ab ab @@ -6740,7 +6728,7 @@ ac ac ae ae -aL +ae ae fC gw @@ -6782,7 +6770,7 @@ ab ae ae ae -aL +ae ae ae ae @@ -6792,7 +6780,7 @@ ae fD ad eh -gj +eh eh hW dG @@ -6938,10 +6926,10 @@ hK ha ha ha -iN ha ha -jy +ha +jP jM jN jZ @@ -6954,7 +6942,7 @@ jy jy nS on -ow +mT ab ab ab @@ -6981,7 +6969,7 @@ ae gB hb ha -ha +iN ha ii iw @@ -7045,7 +7033,7 @@ lB lY lA mW -jy +jP nT op ox @@ -7111,12 +7099,12 @@ ab ae ae ae +ae +ae aL ae ae ae -ae -ae oP fH gG @@ -7130,7 +7118,7 @@ iR hz jn jA -jP +jy jy jy jy @@ -7236,7 +7224,7 @@ jy nu nX om -ow +mT ab ab ab @@ -7263,7 +7251,7 @@ fO gG hg hz -hO +hz hz hz iB @@ -7277,7 +7265,7 @@ jy jy jy jy -jP +jy jy mX nv @@ -7393,13 +7381,13 @@ ab ab ab as -cO +as as dI dZ ew as -cO +as as gJ hh @@ -7412,7 +7400,7 @@ iX hz jq jA -hO +hz kg kt kQ @@ -7441,7 +7429,7 @@ ab ab ab ac -cO +as as as as @@ -7457,7 +7445,7 @@ hz iF iY hz -hz +hO hz hz kh @@ -7471,7 +7459,7 @@ na nz ob os -oy +kQ ac ab ab @@ -7501,7 +7489,7 @@ hz hz hz hz -hO +hz hz hz jr @@ -7588,7 +7576,7 @@ ec ez eY ft -dy +dP gN hj hj @@ -7650,15 +7638,15 @@ jF jT ju ju +ju +ju +ju kU ju ju ju ju ju -kU -ju -ju ju ju ab @@ -7678,7 +7666,7 @@ ab ab ac dy -dP +dy eA fa dy @@ -7835,7 +7823,7 @@ ha ha ju jJ -jX +kl kl kA kY @@ -7916,7 +7904,7 @@ ab dy eF eF -dP +dy gf dy eF @@ -7980,7 +7968,7 @@ ab ju kD lb -kU +ju kD lb ju diff --git a/_maps/RandomRuins/SpaceRuins/DJstation.dmm b/_maps/RandomRuins/SpaceRuins/DJstation.dmm index f60b3bd4a5..905e795de5 100644 --- a/_maps/RandomRuins/SpaceRuins/DJstation.dmm +++ b/_maps/RandomRuins/SpaceRuins/DJstation.dmm @@ -16,7 +16,7 @@ "ae" = ( /obj/structure/lattice, /turf/template_noop, -/area/template_noop) +/area/space/nearstation) "af" = ( /turf/closed/wall, /area/ruin/space/djstation) @@ -85,10 +85,7 @@ icon_state = "4-8" }, /obj/item/storage/box/lights/mixed, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE"; +/obj/structure/sign/warning/electricshock{ pixel_y = -32 }, /turf/open/floor/plating, @@ -282,7 +279,7 @@ "aZ" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/plating/airless, -/area/template_noop) +/area/space/nearstation) "ba" = ( /turf/open/floor/plasteel/freezer, /area/ruin/space/djstation) @@ -333,11 +330,7 @@ /turf/open/floor/plasteel/cafeteria, /area/ruin/space/djstation) "bh" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = -32 }, /turf/open/floor/plasteel/cafeteria, @@ -356,7 +349,7 @@ }, /obj/structure/disposaloutlet, /turf/open/floor/plating/airless, -/area/template_noop) +/area/space/nearstation) (1,1,1) = {" aa diff --git a/_maps/RandomRuins/SpaceRuins/TheDerelict.dmm b/_maps/RandomRuins/SpaceRuins/TheDerelict.dmm index 90781df44c..16def0b934 100644 --- a/_maps/RandomRuins/SpaceRuins/TheDerelict.dmm +++ b/_maps/RandomRuins/SpaceRuins/TheDerelict.dmm @@ -204,10 +204,6 @@ /obj/structure/cable, /turf/open/floor/plasteel, /area/ruin/space/derelict/solar_control) -"aE" = ( -/obj/structure/grille, -/turf/open/floor/plating/airless, -/area/template_noop) "aF" = ( /obj/effect/spawner/structure/window/hollow/reinforced/end{ dir = 1 @@ -366,7 +362,7 @@ "bd" = ( /obj/structure/grille/broken, /turf/open/floor/plating/airless, -/area/ruin/unpowered/no_grav) +/area/space/nearstation) "be" = ( /obj/machinery/light/small, /turf/open/floor/plasteel, @@ -639,7 +635,7 @@ /turf/open/floor/plasteel/airless{ icon_state = "damaged4" }, -/area/ruin/unpowered/no_grav) +/area/space/nearstation) "cc" = ( /obj/structure/cable{ icon_state = "1-2" @@ -950,7 +946,7 @@ "de" = ( /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plasteel/airless/solarpanel, -/area/ruin/unpowered/no_grav) +/area/space/nearstation) "df" = ( /obj/structure/cable{ icon_state = "0-4" @@ -983,7 +979,7 @@ /area/ruin/space/derelict/gravity_generator) "dj" = ( /turf/open/floor/plasteel/airless/solarpanel, -/area/ruin/unpowered/no_grav) +/area/space/nearstation) "dk" = ( /obj/item/stack/cable_coil/cut/red, /turf/template_noop, @@ -1085,11 +1081,11 @@ /turf/closed/wall, /area/ruin/space/derelict/bridge) "dA" = ( -/obj/structure/sign/electricshock, +/obj/structure/sign/warning/electricshock, /turf/closed/wall/r_wall, /area/ruin/space/derelict/singularity_engine) "dB" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall/r_wall, /area/ruin/space/derelict/singularity_engine) "dC" = ( @@ -1103,7 +1099,7 @@ /turf/open/floor/plating/airless, /area/ruin/space/derelict/gravity_generator) "dD" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ name = "ENGINEERING ACCESS" }, /turf/closed/wall/r_wall, @@ -1296,10 +1292,7 @@ /area/ruin/space/derelict/gravity_generator) "ek" = ( /obj/structure/closet/radiation, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'RADIOACTIVE AREA'"; - icon_state = "radiation"; - name = "RADIOACTIVE AREA"; +/obj/structure/sign/warning/radiation/rad_area{ pixel_x = 32 }, /turf/open/floor/plasteel, @@ -1449,6 +1442,10 @@ }, /turf/open/floor/plasteel, /area/ruin/space/derelict/bridge) +"eL" = ( +/obj/structure/lattice, +/turf/template_noop, +/area/ruin/space/derelict/singularity_engine) "eM" = ( /obj/structure/cable{ icon_state = "2-8" @@ -2258,11 +2255,7 @@ name = "External Engineering" }, /turf/open/floor/plating/airless, -/area/template_noop) -"hC" = ( -/obj/structure/grille, -/turf/template_noop, -/area/template_noop) +/area/ruin/space/derelict/singularity_engine) "hD" = ( /turf/open/floor/plasteel/airless{ icon_state = "damaged4" @@ -2341,7 +2334,7 @@ }, /obj/structure/grille, /turf/template_noop, -/area/template_noop) +/area/space/nearstation) "hR" = ( /obj/structure/table, /obj/structure/window/reinforced{ @@ -2400,11 +2393,11 @@ /turf/open/floor/plasteel/airless{ icon_state = "damaged5" }, -/area/ruin/unpowered/no_grav) +/area/space/nearstation) "ib" = ( /obj/item/stack/cable_coil/cut/red, /turf/open/floor/plating/airless, -/area/ruin/unpowered/no_grav) +/area/space/nearstation) "ic" = ( /obj/structure/table, /obj/structure/window/reinforced{ @@ -2488,7 +2481,7 @@ /turf/open/floor/plasteel/airless{ icon_state = "damaged4" }, -/area/ruin/unpowered/no_grav) +/area/space/nearstation) "ir" = ( /obj/structure/chair{ dir = 1 @@ -2513,7 +2506,7 @@ dir = 6 }, /turf/template_noop, -/area/template_noop) +/area/space/nearstation) "iv" = ( /obj/structure/table, /obj/structure/window/reinforced{ @@ -2667,7 +2660,7 @@ }, /obj/structure/grille, /turf/template_noop, -/area/template_noop) +/area/space/nearstation) "iU" = ( /obj/structure/table, /obj/structure/window/reinforced{ @@ -3243,7 +3236,7 @@ "kL" = ( /obj/structure/window/fulltile, /turf/template_noop, -/area/template_noop) +/area/space/nearstation) "kM" = ( /obj/structure/girder, /turf/open/floor/plating, @@ -3340,7 +3333,7 @@ /obj/structure/lattice, /obj/item/stack/cable_coil/cut/red, /turf/template_noop, -/area/template_noop) +/area/space/nearstation) "le" = ( /obj/effect/decal/cleanable/blood/splatter, /turf/open/floor/plasteel/airless, @@ -3676,7 +3669,7 @@ icon_state = "medium" }, /turf/open/floor/plating/airless, -/area/template_noop) +/area/ruin/unpowered/no_grav) "mn" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating/airless, @@ -4104,7 +4097,7 @@ "nI" = ( /obj/structure/girder/reinforced, /turf/open/floor/plating/airless, -/area/ruin/unpowered/no_grav) +/area/ruin/space/derelict/se_solar) "nJ" = ( /obj/structure/cable{ icon_state = "2-4" @@ -4449,20 +4442,65 @@ }, /turf/open/floor/plasteel, /area/ruin/space/derelict/bridge) +"rK" = ( +/turf/template_noop, +/area/ruin/space/derelict/medical) +"tS" = ( +/turf/template_noop, +/area/ruin/unpowered/no_grav) +"vf" = ( +/obj/structure/grille, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"vC" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/template_noop, +/area/space/nearstation) "wK" = ( /turf/open/floor/plasteel/airless{ icon_state = "damaged3" }, /area/ruin/space/derelict/se_solar) +"xi" = ( +/obj/item/shard{ + icon_state = "medium" + }, +/turf/template_noop, +/area/ruin/unpowered/no_grav) "Av" = ( /obj/item/stack/rods, /turf/open/floor/plating/airless, /area/ruin/space/derelict/hallway/primary/port) +"Bx" = ( +/turf/open/floor/plasteel/airless{ + icon_state = "damaged3" + }, +/area/space/nearstation) +"Ev" = ( +/turf/open/floor/plasteel/airless{ + icon_state = "damaged2" + }, +/area/space/nearstation) +"Gu" = ( +/obj/structure/grille, +/turf/template_noop, +/area/space/nearstation) +"GM" = ( +/obj/structure/lattice, +/turf/template_noop, +/area/ruin/unpowered/no_grav) "Ih" = ( /turf/open/floor/plasteel/airless{ icon_state = "damaged3" }, /area/ruin/space/derelict/hallway/primary/port) +"IA" = ( +/turf/open/floor/plasteel/airless{ + icon_state = "floorscorched2" + }, +/area/space/nearstation) "KN" = ( /turf/closed/wall, /area/ruin/space/derelict/hallway/primary/port) @@ -4472,6 +4510,12 @@ }, /turf/open/floor/plating/airless, /area/ruin/space/derelict/hallway/primary/port) +"Lv" = ( +/turf/closed/wall, +/area/space/nearstation) +"Oj" = ( +/turf/closed/wall/r_wall, +/area/ruin/space/derelict/bridge/access) "OT" = ( /turf/closed/wall/r_wall, /area/ruin/space/derelict/hallway/primary/port) @@ -4481,9 +4525,15 @@ icon_state = "damaged4" }, /area/ruin/space/derelict/singularity_engine) +"Sv" = ( +/turf/closed/wall/r_wall, +/area/space/nearstation) "Tm" = ( /turf/open/floor/plating/airless, /area/ruin/space/derelict/hallway/primary/port) +"Uz" = ( +/turf/open/floor/plating/airless, +/area/space/nearstation) "Vz" = ( /turf/open/floor/plasteel/airless, /area/ruin/space/derelict/hallway/primary/port) @@ -4493,6 +4543,10 @@ icon_state = "damaged2" }, /area/ruin/space/derelict/singularity_engine) +"ZB" = ( +/obj/structure/lattice, +/turf/template_noop, +/area/space/nearstation) (1,1,1) = {" aa @@ -4665,7 +4719,7 @@ aa aa aa aa -hC +Gu hQ hQ iu @@ -4673,7 +4727,7 @@ iI iT hQ hQ -hC +Gu aa aa aa @@ -4789,7 +4843,7 @@ hR jL aY aY -ab +ZB aa aa aa @@ -5126,7 +5180,7 @@ iV je ju jL -ab +ZB aa aa aa @@ -5578,7 +5632,7 @@ hS ij hS jL -ab +ZB aa aa aa @@ -5691,8 +5745,8 @@ gX gX jv jL -ab -ab +ZB +ZB ay aa aa @@ -5806,7 +5860,7 @@ jw jL dE ay -ab +ZB aa aa aa @@ -6038,7 +6092,7 @@ aa aa aa aa -ab +ZB aa aa aa @@ -6151,7 +6205,7 @@ fZ aa aa aa -ab +ZB aa aa aa @@ -6261,10 +6315,10 @@ gL gU gn gL -ab -ab +ZB +ZB aa -ab +ZB aa aa aa @@ -6375,9 +6429,9 @@ gn gL gm gn -ab -ab -ab +ZB +ZB +ZB aa aa aa @@ -6490,7 +6544,7 @@ fZ fZ fZ gL -ab +ZB aa aa aa @@ -6603,8 +6657,8 @@ kN kW fZ gL -ab -ab +ZB +ZB aa aa aa @@ -6717,7 +6771,7 @@ kn fZ gL gL -ab +ZB aa aa aa @@ -6832,7 +6886,7 @@ ln gL gL aa -ab +ZB aa aa aa @@ -6945,17 +6999,17 @@ ka jY gL aa -ab +ZB aa aa aa aa aa -ab +ZB aa aa aa -ab +ZB aa aa aa @@ -7027,12 +7081,12 @@ aa aa aa aa -ab +ZB dr dr dr -ab -ab +ZB +ZB aa aa aa @@ -7058,17 +7112,17 @@ jY lF gL gL -ab +ZB aa aa aa aa -ab +ZB aa aa aa aa -ab +ZB aa aa aa @@ -7146,7 +7200,7 @@ dr dr dr dr -ab +ZB aa aa aa @@ -7171,20 +7225,20 @@ lo go jY gL -ab -ab -ab -ab +ZB +ZB +ZB +ZB aa aa aa aa -ab +ZB aa -ab -ab +ZB +ZB aa -ab +ZB aa aa aa @@ -7249,9 +7303,9 @@ aa aa aa aa -ab -ab -ab +ZB +ZB +ZB dr dr fL @@ -7259,8 +7313,8 @@ em ez dr dr -ab -ab +ZB +ZB aa aa hy @@ -7286,18 +7340,18 @@ go gL gL fZ -ab -ab -ab -ab -ab -ab -ab -ab +ZB +ZB +ZB +ZB +ZB +ZB +ZB +ZB ch -ab -ab -ab +ZB +ZB +ZB aa aa aa @@ -7361,9 +7415,9 @@ aa aa aa aa -ab -ab -ab +ZB +ZB +ZB dr dr ez @@ -7373,7 +7427,7 @@ ez ez dr dr -ab +ZB aa hm hz @@ -7403,14 +7457,14 @@ aa aa aa aa -ab +ZB aa aa aa md mZ mZ -ab +ZB aa aa aa @@ -7468,7 +7522,7 @@ aa aa aa aa -ab +ZB aa aa dr @@ -7516,14 +7570,14 @@ gL aa gL gL -ab +ZB gL aa aa me mU mZ -ab +ZB ay aa aa @@ -7571,18 +7625,18 @@ bl bl bl bl -ab -ab -ab -ab -ab +ZB +ZB +ZB +ZB +ZB aa aa aa -ab -ab -ab -ab +ZB +ZB +ZB +ZB dr dr dr @@ -7631,7 +7685,7 @@ mJ gL fZ gL -ab +ZB gL md mU @@ -7674,27 +7728,27 @@ ax aX be ax -ac -ac -ac -ac -ac -ac -ay -ay +vf +vf +vf +vf +vf +vf +Uz +Uz cb aa aa -ab +ZB aa aa aa aa aa -ab -ab -ab -ab +ZB +ZB +ZB +ZB dr dr ee @@ -7716,7 +7770,7 @@ dX dW dW hB -ab +eL hz hz hz @@ -7795,7 +7849,7 @@ bl bl bl bl -ab +ZB aa aa aa @@ -7805,9 +7859,9 @@ aa aa aa aa -ab -aY -ab +ZB +Sv +ZB dr dr ef @@ -7828,8 +7882,8 @@ gI dP gY hn -ab -ab +eL +eL hz hz hz @@ -7908,8 +7962,8 @@ aR aR bg ax -ab -ab +ZB +ZB aa aa aa @@ -7918,7 +7972,7 @@ aa aa aa aa -aY +Sv de dr dr @@ -7939,13 +7993,13 @@ gt fq gJ gR -ab -ab -hC -ab -ab -aa -aa +eL +eL +hn +eL +eL +rK +rK hz hz jj @@ -8022,7 +8076,7 @@ bo ax ax aa -ab +ZB aa aa aa @@ -8032,7 +8086,7 @@ aa aa aa aa -ab +ZB dr dr dP @@ -8052,13 +8106,13 @@ gu dW dW dW -ab -ab -ab -ab -ab -ab -aa +eL +eL +eL +eL +eL +eL +rK iO hz jk @@ -8145,7 +8199,7 @@ aa aa aa aa -ab +ZB dr dA dQ @@ -8170,8 +8224,8 @@ dW ez dr dr -ab -ab +eL +eL hv ja hv @@ -8253,8 +8307,8 @@ aa aa aa aa -ab -ab +ZB +ZB cl cl cl @@ -8284,7 +8338,7 @@ ez dr dr dr -ab +eL hv hz jl @@ -8475,9 +8529,9 @@ ax ax aa aa -ab +ZB aa -ab +ZB co cv cG @@ -8587,8 +8641,8 @@ aR ax ax aa -ay -ab +Uz +ZB aa cl cp @@ -8700,8 +8754,8 @@ ax ax ax aa -ac -ch +vf +Lv aa cl co @@ -8813,8 +8867,8 @@ aR bg ax aa -ac -ch +vf +Lv aa cl cq @@ -8850,7 +8904,7 @@ ez dr dr dr -ab +GM ay ay gD @@ -8926,15 +8980,15 @@ bp aR ax ax -ac -ch +vf +Lv aa cl cl -ab +ZB aa aa -ab +ZB cl cl dr @@ -8962,9 +9016,9 @@ ez dr dr dr -ab -aa -aa +GM +tS +tS jm jF fZ @@ -9039,8 +9093,8 @@ bp ax ax ax -ab -ab +ZB +ZB aa aa aa @@ -9048,8 +9102,8 @@ aa aa aa aa -ab -ab +ZB +ZB dr dr dO @@ -9074,10 +9128,10 @@ dO ez dr dr -ab -ab -ab -ab +GM +GM +GM +GM jn ay gD @@ -9152,7 +9206,7 @@ aR aR bT ax -ay +Uz aa aa aa @@ -9162,7 +9216,7 @@ aa aa aa aa -ab +ZB dr dr dX @@ -9187,10 +9241,10 @@ dP dO dr dr -ab -aa -aa -ab +GM +tS +tS +GM ay gD jp @@ -9274,7 +9328,7 @@ aa aa aa aa -aY +Sv dj dr dr @@ -9300,10 +9354,10 @@ dX dP dr dr -ab -aa -iR -ab +GM +tS +xi +GM ay ay jp @@ -9387,9 +9441,9 @@ aa aa aa aa -ab -aY -ab +ZB +Sv +ZB dr dr en @@ -9412,11 +9466,11 @@ dO ez dr dr -ab -aa +GM +tS iD -aa -ab +tS +GM ay ay jp @@ -9500,9 +9554,9 @@ aa aa aa aa -ab -ab -ab +ZB +ZB +ZB dr dr eo @@ -9525,11 +9579,11 @@ ez ez dr dr -aa -aa +tS +tS iD -aa -aa +tS +tS jo gP gD @@ -9614,9 +9668,9 @@ aa aa aa aa -ab -ab -ab +ZB +ZB +ZB dr dr dr @@ -9637,7 +9691,7 @@ dr dr dr dr -ab +GM ay ay iE @@ -9705,7 +9759,7 @@ aa aa aa aa -ay +Uz ax bj ax @@ -9727,17 +9781,17 @@ aa aa aa aa -ab -ab -ab -ab -ci -ci -ci -ci -ci -ci -ci +ZB +ZB +ZB +ZB +dr +dr +dr +dr +dr +dr +dr dr ez fQ @@ -9750,7 +9804,7 @@ dr dr dr dr -ab +GM fZ fZ fZ @@ -9818,7 +9872,7 @@ aa aa aa aa -ay +Uz ax bj ax @@ -9841,16 +9895,16 @@ aa aa aa aa -ab +ZB aa aa aa aa aa aa -ab -ab -ci +ZB +ZB +dr dr dW dO @@ -9859,10 +9913,10 @@ dX ez dr dr -aa -aa -aa -aa +tS +tS +tS +tS gL gU gm @@ -9905,18 +9959,18 @@ aa aa aa aa -aY -ac -ac -ac -ac -ac -ac -ab -ac -ac -ac -ac +nB +vf +vf +vf +vf +vf +vf +ZB +vf +vf +vf +vf "} (49,1,1) = {" aa @@ -9931,7 +9985,7 @@ aa aa aa aa -ay +Uz ax bj ax @@ -9962,8 +10016,8 @@ aa aa aa aa -ab -ab +ZB +ZB dr dr ez @@ -9971,8 +10025,8 @@ fY ez dr dr -ab -aa +GM +tS gL gL gl @@ -10015,10 +10069,10 @@ aa aa aa aa -ab -ab -ab -aY +ZB +ZB +ZB +nB aa aa aa @@ -10026,10 +10080,10 @@ aa aa aa aa -ab +ZB aa aa -ac +vf "} (50,1,1) = {" aa @@ -10044,7 +10098,7 @@ aa aa aa aa -ay +Uz ax bj ax @@ -10076,7 +10130,7 @@ aa aa aa aa -ab +ZB dr dr dr @@ -10084,7 +10138,7 @@ dr gk gk gk -ab +GM gx ha gL @@ -10124,14 +10178,14 @@ nd mU md aY -aY +nB nI -ab -ab +ZB +ZB ld nV nV -aY +nB aa aa on @@ -10142,7 +10196,7 @@ on oz ox aa -ac +vf "} (51,1,1) = {" aa @@ -10157,7 +10211,7 @@ aa aa aa aa -ay +Uz ax bj bj @@ -10188,10 +10242,10 @@ aa aa aa aa -ci -ci +Oj +Oj aa -ab +ZB dr dr gk @@ -10239,7 +10293,7 @@ nz ac aa nV -ab +ZB nV nV wK @@ -10255,7 +10309,7 @@ on oA ox aa -ac +vf "} (52,1,1) = {" aa @@ -10270,7 +10324,7 @@ aa aa aa aa -ay +Uz ax bj bj @@ -10368,7 +10422,7 @@ on os ox aa -ac +vf "} (53,1,1) = {" aa @@ -10383,7 +10437,7 @@ aa aa aa aa -aY +Sv ax bj bj @@ -10471,7 +10525,7 @@ nB oe nB nB -ab +ZB aa aa ot @@ -10481,7 +10535,7 @@ aa oB aa aa -ac +vf "} (54,1,1) = {" aa @@ -10496,7 +10550,7 @@ aa aa aa aa -ay +Uz ax bj bj @@ -10594,7 +10648,7 @@ oo ou oo oD -ac +vf "} (55,1,1) = {" aa @@ -10609,7 +10663,7 @@ aa aa aa aa -ay +Uz ax bj bj @@ -10697,7 +10751,7 @@ nB og nB nB -ab +ZB aa aa ot @@ -10707,7 +10761,7 @@ aa oB aa aa -ab +ZB "} (56,1,1) = {" aa @@ -10722,7 +10776,7 @@ aa aa aa aa -ay +Uz ax bj bj @@ -10820,7 +10874,7 @@ on ov ox aa -ac +vf "} (57,1,1) = {" aa @@ -10835,7 +10889,7 @@ aa aa aa aa -ay +Uz ax bj bj @@ -10857,15 +10911,15 @@ aa aa aa aa -ci +Oj dk -ci +Oj aa aa aa aa aa -ab +ZB cs fz fx @@ -10933,7 +10987,7 @@ on ov ox aa -ac +vf "} (58,1,1) = {" aa @@ -10948,7 +11002,7 @@ aa aa aa aa -ay +Uz ax bj bj @@ -10970,15 +11024,15 @@ aa aa aa aa -ci -ci -ci +Oj +Oj +Oj aa aa aa aa -ab -ab +ZB +ZB cs fA fx @@ -10995,9 +11049,9 @@ fZ gz hD gk -gP -gC -gC +Bx +IA +IA iq gk go @@ -11009,9 +11063,9 @@ kK aa gD ay -ab -ab -ab +ZB +ZB +ZB me ml mu @@ -11046,7 +11100,7 @@ on oC ox aa -ab +ZB "} (59,1,1) = {" aa @@ -11061,7 +11115,7 @@ aa aa aa aa -ay +Uz ax bj bj @@ -11083,15 +11137,15 @@ aa aa aa aa -ci -ci -ci +Oj +Oj +Oj aa aa aa -ab -ab -ab +ZB +ZB +ZB cs fB fx @@ -11108,10 +11162,10 @@ fZ gz gz gk -gC +IA iq ia -gC +IA gk gk jQ @@ -11121,10 +11175,10 @@ gk ch aa aa -ab +ZB ch aa -ab +ZB mf mf mf @@ -11156,10 +11210,10 @@ aa aa aa aa -ab +ZB aa aa -ab +ZB "} (60,1,1) = {" aa @@ -11174,7 +11228,7 @@ aa aa aa aa -aY +Sv ax bj bj @@ -11221,21 +11275,21 @@ fZ hD gL gk -gP -gC +Bx +IA aa aa -ay +Uz fZ gc fZ fD fD -ab +ZB aa aa aa -ab +ZB aa aa aY @@ -11262,32 +11316,32 @@ mf mf mf mf -ac -ac -ac -ac -ab -ac -ac -ab -ab -ac +vf +vf +vf +vf +ZB +vf +vf +ZB +ZB +vf aa "} (61,1,1) = {" aa aa aa -ab -ac -ac -ac -ac +ZB +vf +vf +vf +vf aa aa aa aa -ay +Uz ax bj bj @@ -11335,20 +11389,20 @@ gz gL gk iq -gC +IA aa aa -ab +ZB jG jR jG -ab -ab +ZB +ZB aa aa eV -ab -ab +ZB +ZB aa aa aY @@ -11392,15 +11446,15 @@ aa aa aa aa -ab +ZB aa aa -ac +vf aa aa aa aa -ay +Uz ax bj bj @@ -11442,16 +11496,16 @@ fx fZ gL aa -ab +ZB ch ay ch -ab +ZB aa aa aa aa -ab +ZB jG jS ch @@ -11460,11 +11514,11 @@ aa aa aa aa -ab +ZB dk aa -ab -ab +ZB +ZB aa aa aa @@ -11501,19 +11555,19 @@ aa aa "} (63,1,1) = {" -ab +ZB aa af ai ap -ab -ab -ac +ZB +ZB +vf aa aa aa aa -ay +Uz ax bj bj @@ -11554,17 +11608,17 @@ fT gB cs cs -ab +ZB hc gC gC ch -ab -ab -ab -ab -ab -ay +ZB +ZB +ZB +ZB +ZB +Uz ch jR kb @@ -11573,10 +11627,10 @@ aa aa aa aa -ab -ab -ab -ab +ZB +ZB +ZB +ZB aa aa aa @@ -11614,19 +11668,19 @@ aa aa "} (64,1,1) = {" -ac +vf aa ag ai ap aa aa -ac +vf aa aa aa aa -ay +Uz ax bj bj @@ -11667,17 +11721,17 @@ fx fx cs cs -ab +ZB ch ay gC hc -ab +ZB aa aa aa aa -ab +ZB jG jG ay @@ -11687,8 +11741,8 @@ aa aa aa aa -ab -ab +ZB +ZB aa aa aa @@ -11727,19 +11781,19 @@ aa aa "} (65,1,1) = {" -ac +vf aa ah aj ap aa aa -ac +vf aa aa aa aa -ay +Uz ax bj bj @@ -11790,7 +11844,7 @@ aa aa aa aa -ay +Uz aa jG kc @@ -11800,8 +11854,8 @@ aa aa aa aa -ab -ab +ZB +ZB aa aa aa @@ -11819,7 +11873,7 @@ aa aa it ml -iS +vC aa aa aa @@ -11840,19 +11894,19 @@ aa aa "} (66,1,1) = {" -ac +vf aa aa ak aa aa aa -ac -ay -ay -ay -ay -ay +vf +Uz +Uz +Uz +Uz +Uz ax bj bj @@ -11892,7 +11946,7 @@ cs cs cs cs -ab +ZB aa ch gC @@ -11903,7 +11957,7 @@ aa dk aa aa -ab +ZB aa jG kd @@ -11913,7 +11967,7 @@ aa kU aa aa -ab +ZB aa aa aa @@ -11932,7 +11986,7 @@ aa aa aa mZ -iS +vC aa aa aa @@ -11953,7 +12007,7 @@ aa aa "} (67,1,1) = {" -ac +vf aa ah al @@ -11998,14 +12052,14 @@ eP fe fo aY -ab -ab +ZB +ZB dk -ab +ZB aa aa aa -ab +ZB aa hc gC @@ -12016,7 +12070,7 @@ aa aa aa aa -ab +ZB aa ch ke @@ -12025,9 +12079,9 @@ aa aa aa aa -ab -ab -ab +ZB +ZB +ZB aa aa aa @@ -12045,7 +12099,7 @@ aa aa aa aa -iS +vC aa aa aa @@ -12066,7 +12120,7 @@ aa aa "} (68,1,1) = {" -ac +vf aa ah al @@ -12110,11 +12164,11 @@ eK eQ eP fo -ab +ZB aa aa aa -ab +ZB aa aa aa @@ -12129,7 +12183,7 @@ aa aa aa aa -ab +ZB aa ch kf @@ -12137,8 +12191,8 @@ ch aa aa aa -ab -ab +ZB +ZB aa aa aa @@ -12237,22 +12291,22 @@ gW hp hp gV -gD +Ev aa aa aa aa -ay -ab +Uz +ZB jT kg aa aa aa -ab +ZB ld -ab -ab +ZB +ZB aa aa aa @@ -12355,7 +12409,7 @@ ia aa aa aa -ab +ZB aa ch kc @@ -12366,7 +12420,7 @@ aa ld aa aa -ab +ZB aa aa eV @@ -12463,21 +12517,21 @@ gW hq hr gV -ay -ab +Uz +ZB iq aa aa -ab +ZB aa ch jR jG aa aa -ab -ab -ab +ZB +ZB +ZB aa aa aa @@ -12518,7 +12572,7 @@ aa aa "} (72,1,1) = {" -ab +ZB aa ah an @@ -12563,8 +12617,8 @@ ea oE fo aY -ab -ab +ZB +ZB aa aa aa @@ -12578,18 +12632,18 @@ hq gV ib iq -ab -gP +ZB +Bx gV -ay +Uz aa ch kc jG aa aa -ab -ab +ZB +ZB aa aa aa @@ -12631,7 +12685,7 @@ aa aa "} (73,1,1) = {" -ab +ZB aa ah an @@ -12676,7 +12730,7 @@ eS oE dz fD -ab +ZB aa aa aa @@ -12694,8 +12748,8 @@ gV gV gV gV -ay -ab +Uz +ZB hc kc jG @@ -12744,16 +12798,16 @@ aa aa "} (74,1,1) = {" -ac +vf aa aa ak aa aa aa -ac -aE -aE +vf +vf +vf as aV bc @@ -12857,27 +12911,27 @@ aa aa "} (75,1,1) = {" -ac +vf aa ah an ap aa aa -ac -ab -aE -aE +vf +ZB +vf +vf aa bd -bi -bi +Gu +Gu aa aa aa aa -bi -bi +Gu +Gu as az as @@ -12970,14 +13024,14 @@ aa aa "} (76,1,1) = {" -ac +vf aa ah an ap aa aa -ac +vf aa aa aa @@ -13083,14 +13137,14 @@ aa aa "} (77,1,1) = {" -ac +vf aa ah ao ap -ab -ab -ac +ZB +ZB +vf aa aa aa @@ -13196,14 +13250,14 @@ aa aa "} (78,1,1) = {" -ac +vf aa aa aa -ab +ZB aa aa -ab +ZB aa aa aa @@ -13309,14 +13363,14 @@ aa aa "} (79,1,1) = {" -ac -ac -ac -ac -ab -ac -ac -ac +vf +vf +vf +vf +ZB +vf +vf +vf aa aa aa diff --git a/_maps/RandomRuins/SpaceRuins/abandonedteleporter.dmm b/_maps/RandomRuins/SpaceRuins/abandonedteleporter.dmm index c08a68b6c7..1403cfdd16 100644 --- a/_maps/RandomRuins/SpaceRuins/abandonedteleporter.dmm +++ b/_maps/RandomRuins/SpaceRuins/abandonedteleporter.dmm @@ -8,7 +8,7 @@ "c" = ( /obj/structure/lattice, /turf/template_noop, -/area/template_noop) +/area/space/nearstation) "d" = ( /obj/structure/frame/computer, /turf/open/floor/plating/airless, @@ -81,12 +81,6 @@ /obj/machinery/portable_atmospherics/canister/air, /turf/open/floor/plating/airless, /area/ruin/space/abandoned_tele) -"t" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end{ - dir = 4 - }, -/turf/open/floor/plating/airless, -/area/ruin/space/abandoned_tele) "u" = ( /obj/effect/decal/cleanable/blood/old, /turf/open/floor/plating/airless, @@ -131,7 +125,7 @@ "C" = ( /obj/structure/lattice, /turf/open/space, -/area/ruin/space/abandoned_tele) +/area/space/nearstation) (1,1,1) = {" a @@ -181,7 +175,7 @@ c c k h -t +k c c a diff --git a/_maps/RandomRuins/SpaceRuins/abandonedzoo.dmm b/_maps/RandomRuins/SpaceRuins/abandonedzoo.dmm index 379be838e9..c2714a467c 100644 --- a/_maps/RandomRuins/SpaceRuins/abandonedzoo.dmm +++ b/_maps/RandomRuins/SpaceRuins/abandonedzoo.dmm @@ -267,7 +267,7 @@ dir = 4 }, /turf/template_noop, -/area/template_noop) +/area/space/nearstation) "aL" = ( /turf/open/floor/plasteel{ icon_state = "dark" @@ -305,7 +305,7 @@ dir = 8 }, /turf/template_noop, -/area/template_noop) +/area/space/nearstation) "aR" = ( /obj/machinery/light/small{ dir = 4 @@ -698,7 +698,7 @@ "bP" = ( /obj/structure/lattice, /turf/template_noop, -/area/template_noop) +/area/space/nearstation) "bQ" = ( /obj/machinery/shieldwallgen{ active = 2; @@ -748,9 +748,11 @@ "bX" = ( /turf/open/floor/plating/airless, /area/ruin/space/has_grav/abandonedzoo) +"KN" = ( +/turf/template_noop, +/area/space/nearstation) (1,1,1) = {" -aa ab ag ag @@ -772,7 +774,6 @@ ab aa "} (2,1,1) = {" -aa ac ah ai @@ -794,7 +795,6 @@ ac aa "} (3,1,1) = {" -aa ac ah ap @@ -816,7 +816,6 @@ ac aa "} (4,1,1) = {" -aa ac ai ah @@ -838,7 +837,6 @@ ac aa "} (5,1,1) = {" -aa ac aj ai @@ -860,7 +858,6 @@ ac aa "} (6,1,1) = {" -aa ad ak ak @@ -885,7 +882,6 @@ aa aa aa aa -aa at at aF @@ -907,7 +903,6 @@ aa aa aa aa -aa ag ax aG @@ -929,7 +924,6 @@ aa aa aa aa -aa ag ay aH @@ -951,7 +945,6 @@ aa aa aa aa -aa ag ay aH @@ -973,7 +966,6 @@ aa aa aa aa -aa ag az aI @@ -995,7 +987,6 @@ aa aa aa aa -aa at at aF @@ -1014,7 +1005,6 @@ aa aa "} (13,1,1) = {" -aa ae ak ak @@ -1036,7 +1026,6 @@ bS aa "} (14,1,1) = {" -aa ac al an @@ -1058,7 +1047,6 @@ ac aa "} (15,1,1) = {" -aa ac am am @@ -1080,7 +1068,6 @@ bT aa "} (16,1,1) = {" -aa ac an aq @@ -1102,7 +1089,6 @@ bU bW "} (17,1,1) = {" -aa ac ao an @@ -1124,7 +1110,6 @@ bP aa "} (18,1,1) = {" -aa af ak ak @@ -1142,7 +1127,7 @@ ag ag bN bP -aa +KN aa "} (19,1,1) = {" @@ -1163,29 +1148,6 @@ aa aa aa aa -aa bV aa "} -(20,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -"} diff --git a/_maps/RandomRuins/SpaceRuins/asteroid1.dmm b/_maps/RandomRuins/SpaceRuins/asteroid1.dmm index 421b289659..922702926d 100644 --- a/_maps/RandomRuins/SpaceRuins/asteroid1.dmm +++ b/_maps/RandomRuins/SpaceRuins/asteroid1.dmm @@ -20,12 +20,9 @@ a a a a -a -a -a -a -a -a +b +b +b a a a @@ -33,43 +30,37 @@ a "} (2,1,1) = {" a +b +b a a a a a a +c +c +c +b a a a -a -a -a -a -a -a -a -a -a -a +b "} (3,1,1) = {" a +b +b a a a a -a -a -a -a -a -a -a -a -a -a -a +b +b +c +c +c +b a a a @@ -78,19 +69,16 @@ a (4,1,1) = {" a a -a -a -a -a -a -a +b a a a a b -b -b +c +c +c +a a a a @@ -101,14 +89,10 @@ a a a a +a +a +a b -b -a -a -a -a -a -a c c c @@ -116,25 +100,23 @@ b a a a -b +a +a a "} (6,1,1) = {" a a a -b -b a a a a b b -c -c -c -b +a +a +a a a a @@ -145,16 +127,13 @@ a a a a -a b a a a a -b -c -c -c +a +a a a a @@ -167,16 +146,13 @@ a a a a -a -a -a -a -a b -c -c -c b +b +a +a +a +a a a a @@ -189,8 +165,8 @@ a a a a -a -a +c +b a a a @@ -201,33 +177,27 @@ a a a a -a -a -a -a -a +b +b "} (10,1,1) = {" a a a -a -a b a a a a a +b +b +b a a a -a -a -a -a -a -a +c +b "} (11,1,1) = {" a @@ -235,16 +205,13 @@ a a a a +a +a +a +a +c +c b -b -b -a -a -a -a -a -a -a a a a @@ -257,21 +224,18 @@ a a a a +a +a +b +b +c c -b a a a a -b -b a a -a -a -b -b -a "} (13,1,1) = {" a @@ -279,21 +243,18 @@ a a a a -b -a -a -a a a b -b -b -a -a -a c b a +a +a +a +a +a +a "} (14,1,1) = {" a @@ -303,13 +264,10 @@ a a a a -a -a -a -a -c -c b +b +b +a a a a @@ -318,120 +276,7 @@ a a "} (15,1,1) = {" -a -a -a -a -a -a -a -a -a b -b -c -c -a -a -a -a -a -a -a -"} -(16,1,1) = {" -a -a -a -a -a -a -a -a -a -b -c -b -a -a -a -a -a -a -a -a -"} -(17,1,1) = {" -a -a -a -a -a -a -a -a -a -b -b -b -a -a -a -a -a -a -a -a -"} -(18,1,1) = {" -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} -(19,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} -(20,1,1) = {" -a -a -a -a a a a diff --git a/_maps/RandomRuins/SpaceRuins/asteroid2.dmm b/_maps/RandomRuins/SpaceRuins/asteroid2.dmm index cfcc39dd2a..22c54103f0 100644 --- a/_maps/RandomRuins/SpaceRuins/asteroid2.dmm +++ b/_maps/RandomRuins/SpaceRuins/asteroid2.dmm @@ -29,8 +29,6 @@ a a a a -a -a b a "} @@ -38,8 +36,6 @@ a a a a -a -a b b b @@ -59,8 +55,6 @@ a (3,1,1) = {" a a -a -a b b b @@ -80,8 +74,6 @@ a "} (4,1,1) = {" a -a -a b b b @@ -102,8 +94,6 @@ a "} (5,1,1) = {" a -a -a b b b @@ -123,8 +113,6 @@ a a "} (6,1,1) = {" -a -a b b b @@ -145,8 +133,6 @@ a a "} (7,1,1) = {" -a -a b b b @@ -167,8 +153,6 @@ a a "} (8,1,1) = {" -a -a b b c @@ -189,8 +173,6 @@ a a "} (9,1,1) = {" -a -a b b b @@ -212,8 +194,6 @@ a "} (10,1,1) = {" a -a -a b b b @@ -234,8 +214,6 @@ a "} (11,1,1) = {" a -a -a b b b @@ -257,8 +235,6 @@ a (12,1,1) = {" a a -a -a b b d @@ -279,8 +255,6 @@ a (13,1,1) = {" a a -a -a b b d @@ -301,8 +275,6 @@ b (14,1,1) = {" a a -a -a b b b @@ -325,8 +297,6 @@ a a a a -a -a b b b @@ -349,8 +319,6 @@ a a a a -a -a b b b @@ -366,8 +334,6 @@ b "} (17,1,1) = {" a -a -a b a a @@ -388,8 +354,6 @@ a "} (18,1,1) = {" a -a -a b b a @@ -417,8 +381,6 @@ a a a a -a -a b b b @@ -431,8 +393,6 @@ a a "} (20,1,1) = {" -a -a b a a diff --git a/_maps/RandomRuins/SpaceRuins/asteroid3.dmm b/_maps/RandomRuins/SpaceRuins/asteroid3.dmm index cb02102435..29a8fe18b4 100644 --- a/_maps/RandomRuins/SpaceRuins/asteroid3.dmm +++ b/_maps/RandomRuins/SpaceRuins/asteroid3.dmm @@ -23,8 +23,6 @@ (1,1,1) = {" a a -a -a b a a @@ -50,8 +48,6 @@ a a a a -a -a b b d @@ -65,8 +61,6 @@ a a "} (3,1,1) = {" -a -a b b a @@ -87,8 +81,6 @@ b a "} (4,1,1) = {" -a -a b b b @@ -109,8 +101,6 @@ b a "} (5,1,1) = {" -a -a b b c @@ -132,8 +122,6 @@ a "} (6,1,1) = {" a -a -a b c c @@ -155,8 +143,6 @@ a (7,1,1) = {" a a -a -a b b c @@ -176,8 +162,6 @@ a "} (8,1,1) = {" a -a -a b b c @@ -198,8 +182,6 @@ b "} (9,1,1) = {" a -a -a b b c @@ -220,8 +202,6 @@ b "} (10,1,1) = {" a -a -a b b c @@ -242,8 +222,6 @@ b "} (11,1,1) = {" a -a -a b b c @@ -265,8 +243,6 @@ b (12,1,1) = {" a a -a -a b d d @@ -287,8 +263,6 @@ b (13,1,1) = {" a a -a -a b d d @@ -309,8 +283,6 @@ a (14,1,1) = {" a a -a -a b d d @@ -329,8 +301,6 @@ a a "} (15,1,1) = {" -a -a b a b @@ -353,8 +323,6 @@ b (16,1,1) = {" a a -a -a b b b @@ -376,8 +344,6 @@ a a a a -a -a b b c @@ -401,8 +367,6 @@ a a a a -a -a c d d @@ -419,8 +383,6 @@ a (19,1,1) = {" a a -a -a b a a @@ -438,25 +400,3 @@ a b a "} -(20,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} diff --git a/_maps/RandomRuins/SpaceRuins/asteroid4.dmm b/_maps/RandomRuins/SpaceRuins/asteroid4.dmm index da6047ce22..fcd24c54b4 100644 --- a/_maps/RandomRuins/SpaceRuins/asteroid4.dmm +++ b/_maps/RandomRuins/SpaceRuins/asteroid4.dmm @@ -35,9 +35,6 @@ }, /turf/closed/wall/mineral/titanium, /area/ruin/unpowered) -"l" = ( -/turf/closed/wall/mineral/titanium, -/area/ruin/unpowered) "m" = ( /obj/structure/chair{ dir = 1 @@ -75,6 +72,10 @@ (1,1,1) = {" a +c +c +b +b a a a @@ -84,51 +85,39 @@ a a a a -a -a -a -a -a -a -a -a +b +b a a "} (2,1,1) = {" -a -a -a +b c c b +e +e +a +a +a +a +a +a +b b -a -a -a -a -a -a -a -a -a b b a a "} (3,1,1) = {" -a -a b c c b e e -a -a -a +e a a a @@ -136,34 +125,33 @@ b b b b +b a a +b "} (4,1,1) = {" -a -a b -c -c +b +b +b b e e -e a a a -b -b +a +a b b b a a -b +a "} (5,1,1) = {" a -a b b b @@ -176,19 +164,16 @@ a a a a -b -b -b a a a +b +a "} (6,1,1) = {" a -a -a -b b +c b b b @@ -202,15 +187,13 @@ a a a a -b +a a "} (7,1,1) = {" a -a -a b -c +b b b b @@ -230,30 +213,6 @@ a (8,1,1) = {" a a -a -b -b -b -b -b -e -e -a -a -a -a -a -a -a -a -a -a -"} -(9,1,1) = {" -a -a -a -a b b b @@ -271,25 +230,43 @@ a a a "} +(9,1,1) = {" +a +a +b +b +b +b +a +a +a +a +a +d +d +h +h +a +a +a +"} (10,1,1) = {" a a a -a b -b -b -b -a +c +c a a a a d d -h -h -a +d +d +d +d a a "} @@ -299,30 +276,6 @@ a a a a -b -c -c -a -a -a -a -d -d -d -d -d -d -a -a -"} -(12,1,1) = {" -a -a -a -a -a -a -a a a a @@ -332,14 +285,12 @@ d d g j -l -l +j +j o a "} -(13,1,1) = {" -a -a +(12,1,1) = {" a a a @@ -359,9 +310,7 @@ n p a "} -(14,1,1) = {" -a -a +(13,1,1) = {" a a a @@ -376,41 +325,54 @@ f d i j -l -l +j +j o a "} +(14,1,1) = {" +a +a +a +a +a +a +d +d +d +d +d +d +d +d +d +d +a +a +"} (15,1,1) = {" a a a +d +d +d +d +d +d +d a a +f +f +d a a a -d -d -d -d -d -d -d -d -d -d -a -a "} (16,1,1) = {" a a -a -a -a -d -d d d d @@ -418,9 +380,12 @@ d d a a -f -f -d +a +a +a +a +a +a a a a @@ -431,74 +396,6 @@ a a a d -d -d -d -d -a -a -a -a -a -a -a -a -a -a -a -"} -(18,1,1) = {" -a -a -a -a -a -a -d -a -a -a -a -a -a -a -a -a -a -a -a -a -"} -(19,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} -(20,1,1) = {" -a -a -a -a -a -a -a a a a diff --git a/_maps/RandomRuins/SpaceRuins/asteroid5.dmm b/_maps/RandomRuins/SpaceRuins/asteroid5.dmm index ed4e0743c6..04f3e57b3e 100644 --- a/_maps/RandomRuins/SpaceRuins/asteroid5.dmm +++ b/_maps/RandomRuins/SpaceRuins/asteroid5.dmm @@ -43,12 +43,10 @@ a a a a -a -a -a -a -a -a +b +c +c +c a a a @@ -85,14 +83,12 @@ a a a a -a b c c c -a -a -a +c +b a a "} @@ -102,6 +98,10 @@ a a a a +b +b +c +c a a a @@ -121,22 +121,16 @@ a a a a -a -a -a -a -a -a -a +d +d +d b c c c -c b -a -a -a +b +b "} (4,1,1) = {" a @@ -144,14 +138,11 @@ a a a a -a b b -c -c -a -a -a +b +b +b a a a @@ -171,30 +162,30 @@ a d d d -b -c -c -c +d +d +b +b +b +b b b b -a "} (5,1,1) = {" a a a -a -a -a +c +c +c +b +b b b b b b -a -a -a a a a @@ -220,13 +211,12 @@ b b b b -a "} (6,1,1) = {" a a a -a +c c c c @@ -236,21 +226,19 @@ b b b b +c +c +c +a +a +a +a +a +a +a +a +b b -a -a -a -a -a -a -a -a -a -a -a -a -a -d d d d @@ -262,13 +250,12 @@ b b b b -a +b "} (7,1,1) = {" a a a -a c c c @@ -289,73 +276,67 @@ a a a a -a -b b d d d d b +c +c +c +c b b b b b -b -b -a "} (8,1,1) = {" a a -a -a -c +b c c c b b b -b -b -b -c -c -c -a -a -a -a -a -a -a -b d d d d b +b +b +a +a +a +a +a +a +a +d +d +d +b +b +b c c c c b b -b -b -b +c +c a "} (9,1,1) = {" a a -a b -c -c -c +b b b b @@ -363,95 +344,83 @@ d d d d -b -b -b -a -a -a -a -a -a -a +d d d d b -b -b -c -c -c -c -b -b -c -c a a +a +a +a +a +b +d +d +b +b +b +b +c +c +c +c +b +b +c +c +a "} (10,1,1) = {" a -a -a b b b b b -d -d -d -d -d -d -d -d -b -a -a -a -a -a -a -b -d -d -b -b -b -b -c -c -c -c -b -b c +d +d +d +a +a +d +d +d c a a +a +a +a +a +d +d +d +b +c +c +c +c +c +c +c +b +b +b +b +a "} (11,1,1) = {" a -a b b b b b -c d d -d -a -a -d -d -d -c -a -a a a a @@ -460,15 +429,24 @@ d d d b -c -c -c -c -c -c -c +a +a +a +a +a +a +d +d b b +c +c +c +c +d +d +d +b b b a @@ -476,8 +454,6 @@ a "} (12,1,1) = {" a -a -b b b b @@ -488,10 +464,11 @@ a a a a -d -d -d -b +a +a +a +a +a a a a @@ -500,29 +477,27 @@ a a d d -b -b -c c c c d d d +d +d +d +b b b b -a -a a "} (13,1,1) = {" a -a -b b b b +c d d a @@ -539,57 +514,55 @@ a a a a -a +b d d c c +b +d +d c d d d -d -d -d b b b b a -a "} (14,1,1) = {" a -a b b b c d +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +d d -a -a -a -a -a -a -a -a -a -a -a -a -a -a b -d -d c c b d d -c +b d d d @@ -598,22 +571,20 @@ b b b a -a "} (15,1,1) = {" -a -a b b b -c +d +d d a a a a a -a +b a a a @@ -629,8 +600,8 @@ b c c b -d -d +b +b b d d @@ -640,10 +611,8 @@ b b b a -a "} (16,1,1) = {" -a b b b @@ -655,7 +624,7 @@ a a a a -b +a a a a @@ -672,8 +641,8 @@ c c b b -b -b +d +d d d d @@ -681,11 +650,9 @@ b b b b -a -a +b "} (17,1,1) = {" -a b b b @@ -701,42 +668,40 @@ a a a a -a -a -a +b +b +b a a a d d b +b +b +b +b +d +d +d +d +b +b +b +b c c -b -b -d -d -d -d -d -b -b -b -b -b -a "} (18,1,1) = {" -a -b -b -b +c +c d d d a a -a +b +b a a a @@ -746,7 +711,7 @@ a b b b -a +b a a d @@ -755,21 +720,19 @@ b b b b -b d d d -d -b -b +c b b c c -a +b +c +c "} (19,1,1) = {" -a c c d @@ -779,19 +742,19 @@ a a b b -a -a +b a a a a b b -b +c +c b a a -d +b d b b @@ -800,7 +763,7 @@ b d d d -c +b b b c @@ -808,10 +771,8 @@ c b c c -a "} (20,1,1) = {" -a c c d @@ -828,49 +789,47 @@ a a b b -c -c b a a +a +a b d +d +d b b -b -b +d d d d b b b -c -c +b b c c -a "} (21,1,1) = {" -a c c +b d d -d -a -a -b -b -b a a a a -b -b -b +a +a +a +a +a +a +a +a a a a @@ -879,25 +838,23 @@ b d d d -b -b -d -d -d -d -b -b -b -b -b c c -a +c +b +d +d +b +b +b +b +b +b +b "} (22,1,1) = {" -a -c -c +b +b b d d @@ -917,7 +874,7 @@ a a a a -b +a d d d @@ -934,23 +891,23 @@ b b b b -a "} (23,1,1) = {" a b b +d +d +d +a +a +a +a +a +a +a +a b -d -d -a -a -a -a -a -a -a -a a a a @@ -963,13 +920,10 @@ a d d d -c -c -c -b d d -b +d +d b b b @@ -980,12 +934,21 @@ a "} (24,1,1) = {" a +b +b +c +d +d +d +d +a +a +a +a +a +a +a a -b -b -d -d -d a a a @@ -995,17 +958,7 @@ a a a b -a -a -a -a -a -a -a -a -a -d -d +c d d d @@ -1018,53 +971,49 @@ b b b a -a "} (25,1,1) = {" a +b +b +b +b +d +d +d a -b -b +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +d +d +d +d +d c -d -d -d -d -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b c -d -d -d -d -d -b -b -b -b -b b a a +a +a "} (26,1,1) = {" a -a b b b @@ -1090,14 +1039,13 @@ a a a a -d -d -d -d -d -c -c -b +a +a +a +a +a +a +a a a a @@ -1106,21 +1054,18 @@ a "} (27,1,1) = {" a -a +b +b +c +c b b b +a +a +a +b b -d -d -d -a -a -a -a -a -a -a a a a @@ -1129,6 +1074,7 @@ a a a a +b a a a @@ -1150,28 +1096,26 @@ a a a b -b c c b b b -a -a -a +b +b +b b b a a a a -a -a -a -a +d +d +d +b +b b -a -a a a a @@ -1192,28 +1136,26 @@ a a a a +a +a +a b -c +b +b +b +b +a +a +a +a +a +a +d +d +d c b b -b -b -b -b -b -b -a -a -a -a -d -d -d -b -b -b -a a a a @@ -1238,11 +1180,10 @@ a a a a -b -b -b -b -b +a +a +a +a a a a @@ -1252,13 +1193,12 @@ a d d d -c b b -a -a -a -a +b +b +b +b a a a @@ -1288,9 +1228,8 @@ a a a a -a -a -a +d +d d d d @@ -1300,8 +1239,7 @@ b b b b -a -a +b a a a @@ -1330,9 +1268,6 @@ a a a a -a -d -d d d d @@ -1343,7 +1278,8 @@ b b b b -a +b +c a a a @@ -1371,20 +1307,20 @@ a a a a -a -a d d d -b -b -b -b -b -b +d +d +d +d +c +c +c b b c +b a a a @@ -1392,10 +1328,8 @@ a a a a -a -a -a -a +b +b a "} (34,1,1) = {" @@ -1413,7 +1347,6 @@ a a a a -a d d d @@ -1421,14 +1354,13 @@ d d d d -c -c -c +d +d +d +b b b -c b -a a a a @@ -1437,7 +1369,7 @@ a a b b -a +b a "} (35,1,1) = {" @@ -1452,49 +1384,6 @@ a a a a -a -a -a -a -d -d -d -d -d -d -d -d -d -d -b -b -b -b -a -a -a -a -a -a -b -b -b -a -a -"} -(36,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a b b b @@ -1522,6 +1411,45 @@ b b b a +"} +(36,1,1) = {" +a +a +a +a +a +a +a +a +a +a +b +c +c +c +b +b +b +b +b +b +b +d +d +b +b +b +a +a +a +a +a +a +a +b +b +b +a a "} (37,1,1) = {" @@ -1534,21 +1462,20 @@ a a a a -a -a b c c c +c b b b b b b +c +c b -d -d b b b @@ -1559,9 +1486,8 @@ a a a a -b -b -b +a +a a a a @@ -1577,49 +1503,6 @@ a a a a -b -c -c -c -c -b -b -b -b -b -b -c -c -b -b -b -b -a -a -a -a -a -a -a -a -a -a -a -a -a -"} -(39,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a a c c @@ -1648,47 +1531,4 @@ a a a a -a -"} -(40,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a "} diff --git a/_maps/RandomRuins/SpaceRuins/bigderelict1.dmm b/_maps/RandomRuins/SpaceRuins/bigderelict1.dmm index b3d02e85cd..ff048c3b3c 100644 --- a/_maps/RandomRuins/SpaceRuins/bigderelict1.dmm +++ b/_maps/RandomRuins/SpaceRuins/bigderelict1.dmm @@ -18,7 +18,7 @@ /turf/open/floor/plating, /area/ruin/space/has_grav/derelictoutpost/cargobay) "af" = ( -/obj/structure/sign/vacuum{ +/obj/structure/sign/warning/vacuum{ pixel_y = 32 }, /obj/effect/decal/cleanable/cobweb, @@ -31,7 +31,7 @@ /turf/open/floor/plating, /area/ruin/space/has_grav/derelictoutpost/cargobay) "ah" = ( -/obj/structure/sign/vacuum{ +/obj/structure/sign/warning/vacuum{ pixel_y = 32 }, /turf/open/floor/plasteel, @@ -284,7 +284,7 @@ "aY" = ( /obj/structure/lattice, /turf/template_noop, -/area/template_noop) +/area/space/nearstation) "aZ" = ( /turf/closed/wall, /area/ruin/space/has_grav/derelictoutpost) @@ -364,7 +364,7 @@ /turf/open/floor/plasteel, /area/ruin/space/has_grav/derelictoutpost) "bk" = ( -/obj/structure/sign/vacuum{ +/obj/structure/sign/warning/vacuum{ pixel_y = 32 }, /turf/open/floor/plasteel, @@ -410,7 +410,7 @@ name = "gelatinous floor" }, /obj/structure/glowshroom/single, -/obj/structure/sign/vacuum{ +/obj/structure/sign/warning/vacuum{ pixel_y = 32 }, /obj/effect/decal/cleanable/blood/old{ @@ -2154,8 +2154,6 @@ aa aa aa aa -aa -aa ad ad ad @@ -2173,10 +2171,6 @@ aa aa aa aa -aa -aa -aa -aa "} (2,1,1) = {" aa @@ -2186,8 +2180,6 @@ aa aa aa aa -aa -aa aA aA aA @@ -2215,10 +2207,6 @@ ad aa aa aa -aa -aa -aa -aa "} (3,1,1) = {" aa @@ -2228,8 +2216,6 @@ aa aa aa aa -aa -aa aB aM aB @@ -2257,10 +2243,6 @@ ad aa aa aa -aa -aa -aa -aa "} (4,1,1) = {" aa @@ -2270,8 +2252,6 @@ aa aa aa aa -aa -aa aA aA aA @@ -2299,17 +2279,11 @@ ad ad aa aa -aa -aa -aa -aa "} (5,1,1) = {" aa aa aa -aa -aa ad ad ad @@ -2341,15 +2315,9 @@ ad ad aa aa -aa -aa -aa -aa "} (6,1,1) = {" aa -aa -aa ad ad ad @@ -2383,15 +2351,9 @@ ad aa aa aa -aa -aa -aa -aa "} (7,1,1) = {" aa -aa -aa ab ab ab @@ -2425,15 +2387,9 @@ ad aa aa aa -aa -aa -aa -aa "} (8,1,1) = {" aa -aa -aa ab af ai @@ -2467,14 +2423,8 @@ ad ad aa aa -aa -aa -aa -aa "} (9,1,1) = {" -aa -aa ab ab ab @@ -2509,14 +2459,8 @@ ad ad aa aa -aa -aa -aa -aa "} (10,1,1) = {" -aa -aa ac ae ag @@ -2551,14 +2495,8 @@ aC ad aa aa -aa -aa -aa -aa "} (11,1,1) = {" -aa -aa ac ae ag @@ -2593,14 +2531,8 @@ aC ad aa aa -aa -aa -aa -aa "} (12,1,1) = {" -aa -aa ac ae ag @@ -2635,14 +2567,8 @@ aC ad aa aa -aa -aa -aa -aa "} (13,1,1) = {" -aa -aa ac ae ag @@ -2677,14 +2603,8 @@ aC aC ad aa -aa -aa -aa -aa "} (14,1,1) = {" -aa -aa ac ae ag @@ -2719,14 +2639,8 @@ aC aC ad aa -aa -aa -aa -aa "} (15,1,1) = {" -aa -aa ac ae ag @@ -2761,14 +2675,8 @@ aC aC ad aa -aa -aa -aa -aa "} (16,1,1) = {" -aa -aa ac ae ag @@ -2803,14 +2711,8 @@ aC aC ad aa -aa -aa -aa -aa "} (17,1,1) = {" -aa -aa ac ae ag @@ -2845,14 +2747,8 @@ aC aC ad ad -aa -aa -aa -aa "} (18,1,1) = {" -aa -aa ac ae ag @@ -2887,14 +2783,8 @@ aC aC ad ad -aa -aa -aa -aa "} (19,1,1) = {" -aa -aa ab ab ab @@ -2929,15 +2819,9 @@ aC aC ad ad -aa -aa -aa -aa "} (20,1,1) = {" aa -aa -aa ab ah ak @@ -2971,15 +2855,9 @@ aC ad ad ad -aa -aa -aa -aa "} (21,1,1) = {" aa -aa -aa ab ab ab @@ -3013,10 +2891,6 @@ aC ad ad ad -aa -aa -aa -aa "} (22,1,1) = {" aa @@ -3024,8 +2898,6 @@ aa aa aa aa -aa -aa ad ad ad @@ -3055,10 +2927,6 @@ ad ad ad ad -aa -aa -aa -aa "} (23,1,1) = {" aa @@ -3067,8 +2935,6 @@ aa aa aa aa -aa -aa ad ad aa @@ -3097,10 +2963,6 @@ ad ad aa aa -aa -aa -aa -aa "} (24,1,1) = {" aa @@ -3112,8 +2974,6 @@ aa aa aa aa -aa -aa aY aK bz @@ -3139,10 +2999,6 @@ ad ad aa aa -aa -aa -aa -aa "} (25,1,1) = {" aa @@ -3154,8 +3010,6 @@ aa aa aa aa -aa -aa aY aK bA @@ -3181,10 +3035,6 @@ aa aa aa aa -aa -aa -aa -aa "} (26,1,1) = {" aa @@ -3196,8 +3046,6 @@ aa aa aa aa -aa -aa aY aK bB @@ -3223,10 +3071,6 @@ aa aa aa aa -aa -aa -aa -aa "} (27,1,1) = {" aa @@ -3238,8 +3082,6 @@ aa aa aa aa -aa -aa aY aZ bC @@ -3265,10 +3107,6 @@ aa aa aa aa -aa -aa -aa -aa "} (28,1,1) = {" aa @@ -3279,8 +3117,6 @@ aa aa aa aa -aa -aa ad aZ aZ @@ -3307,10 +3143,6 @@ aa aa aa aa -aa -aa -aa -aa "} (29,1,1) = {" aa @@ -3320,8 +3152,6 @@ aa aa aa aa -aa -aa aK aK aZ @@ -3349,10 +3179,6 @@ aa aa aa aa -aa -aa -aa -aa "} (30,1,1) = {" aa @@ -3362,8 +3188,6 @@ aa aa aa aa -aa -aa aL aR aL @@ -3391,10 +3215,6 @@ aa aa aa aa -aa -aa -aa -aa "} (31,1,1) = {" aa @@ -3404,8 +3224,6 @@ aa aa aa aa -aa -aa aK aK aZ @@ -3433,10 +3251,6 @@ aa aa aa aa -aa -aa -aa -aa "} (32,1,1) = {" aa @@ -3446,8 +3260,6 @@ aa aa aa aa -aa -aa ad ad aZ @@ -3475,10 +3287,6 @@ aa aa aa aa -aa -aa -aa -aa "} (33,1,1) = {" aa @@ -3488,8 +3296,6 @@ aa aa aa aa -aa -aa ad ad aZ @@ -3517,10 +3323,6 @@ aa aa aa aa -aa -aa -aa -aa "} (34,1,1) = {" aa @@ -3530,8 +3332,6 @@ aa aa aa aa -aa -aa ad ad aZ @@ -3559,10 +3359,6 @@ aa aa aa aa -aa -aa -aa -aa "} (35,1,1) = {" aa @@ -3572,8 +3368,6 @@ aa aa aa aa -aa -aa aK aK aZ @@ -3601,10 +3395,6 @@ aa aa aa aa -aa -aa -aa -aa "} (36,1,1) = {" aa @@ -3614,8 +3404,6 @@ aa aa aa aa -aa -aa aL aR aL @@ -3643,10 +3431,6 @@ aa aa aa aa -aa -aa -aa -aa "} (37,1,1) = {" aa @@ -3656,8 +3440,6 @@ aa aa aa aa -aa -aa aK aK aZ @@ -3685,10 +3467,6 @@ aa aa aa aa -aa -aa -aa -aa "} (38,1,1) = {" aa @@ -3699,8 +3477,6 @@ aa aa aa aa -aa -aa ad aZ aZ @@ -3727,10 +3503,6 @@ aa aa aa aa -aa -aa -aa -aa "} (39,1,1) = {" aa @@ -3741,8 +3513,6 @@ aa aa aa aa -aa -aa ad ad aC @@ -3769,10 +3539,6 @@ aa aa aa aa -aa -aa -aa -aa "} (40,1,1) = {" aa @@ -3784,8 +3550,6 @@ aa aa aa aa -aa -aa ad ad ad @@ -3811,8 +3575,4 @@ aa aa aa aa -aa -aa -aa -aa "} diff --git a/_maps/RandomRuins/SpaceRuins/bus.dmm b/_maps/RandomRuins/SpaceRuins/bus.dmm index 2c971b66e4..43c6f283f3 100644 --- a/_maps/RandomRuins/SpaceRuins/bus.dmm +++ b/_maps/RandomRuins/SpaceRuins/bus.dmm @@ -1,14 +1,14 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "aa" = ( -/turf/open/space, -/area/space) +/turf/template_noop, +/area/template_noop) "ab" = ( /turf/closed/mineral/ash_rock, /area/ruin/unpowered/no_grav) "ac" = ( /obj/item/trash/sosjerky, -/turf/open/space, -/area/space) +/turf/template_noop, +/area/template_noop) "ad" = ( /turf/open/floor/plating/asteroid/airless, /area/ruin/unpowered/no_grav) @@ -341,26 +341,6 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -"} -(2,1,1) = {" -aa -aa -aa -aa -aa ab ab ab @@ -375,7 +355,7 @@ ad aa aa "} -(3,1,1) = {" +(2,1,1) = {" aa aa aa @@ -395,7 +375,7 @@ ad ad aa "} -(4,1,1) = {" +(3,1,1) = {" aa aa aa @@ -415,7 +395,7 @@ aI ad ad "} -(5,1,1) = {" +(4,1,1) = {" aa aa aa @@ -435,7 +415,7 @@ aK ad ad "} -(6,1,1) = {" +(5,1,1) = {" aa aa ab @@ -455,7 +435,7 @@ aL ad ad "} -(7,1,1) = {" +(6,1,1) = {" aa aa ab @@ -475,7 +455,7 @@ aJ ad ad "} -(8,1,1) = {" +(7,1,1) = {" aa ab ab @@ -495,7 +475,7 @@ aM ad ad "} -(9,1,1) = {" +(8,1,1) = {" aa ab ab @@ -515,7 +495,7 @@ aN ad ad "} -(10,1,1) = {" +(9,1,1) = {" ab ab ab @@ -535,7 +515,7 @@ ad ad aa "} -(11,1,1) = {" +(10,1,1) = {" ab ab ab @@ -555,7 +535,7 @@ au ad aa "} -(12,1,1) = {" +(11,1,1) = {" ab ab ab @@ -575,7 +555,7 @@ ad aa aa "} -(13,1,1) = {" +(12,1,1) = {" aa ab ab @@ -595,7 +575,7 @@ ad aa aa "} -(14,1,1) = {" +(13,1,1) = {" ab ab ab @@ -615,7 +595,7 @@ ad aa aa "} -(15,1,1) = {" +(14,1,1) = {" ab ab ab @@ -635,7 +615,7 @@ aa aa aa "} -(16,1,1) = {" +(15,1,1) = {" ab ab ab @@ -655,7 +635,7 @@ aa aa aa "} -(17,1,1) = {" +(16,1,1) = {" aa ab ab @@ -675,7 +655,7 @@ aa aa aa "} -(18,1,1) = {" +(17,1,1) = {" aa aa ab @@ -695,7 +675,7 @@ aa aa aa "} -(19,1,1) = {" +(18,1,1) = {" aa aa aa @@ -715,7 +695,7 @@ aa aa aa "} -(20,1,1) = {" +(19,1,1) = {" aa aa aa @@ -735,7 +715,7 @@ aa aa aa "} -(21,1,1) = {" +(20,1,1) = {" aa aa aa @@ -755,7 +735,7 @@ aa aa aa "} -(22,1,1) = {" +(21,1,1) = {" aa ac aa @@ -775,23 +755,3 @@ aa aa aa "} -(23,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -"} diff --git a/_maps/RandomRuins/SpaceRuins/caravanambush.dmm b/_maps/RandomRuins/SpaceRuins/caravanambush.dmm index 2f3a1eb42c..b738fdbba1 100644 --- a/_maps/RandomRuins/SpaceRuins/caravanambush.dmm +++ b/_maps/RandomRuins/SpaceRuins/caravanambush.dmm @@ -3,173 +3,260 @@ /turf/template_noop, /area/template_noop) "ab" = ( -/turf/closed/wall/mineral/plastitanium, -/area/ruin/powered) +/obj/structure/girder/displaced, +/turf/template_noop, +/area/template_noop) "ac" = ( -/obj/machinery/door/airlock/external{ - icon_state = "door_locked"; - locked = 1 - }, -/turf/open/floor/plasteel, -/area/ruin/powered) +/obj/item/stack/sheet/mineral/plastitanium, +/turf/template_noop, +/area/template_noop) "ad" = ( -/turf/closed/wall, -/area/ruin/powered) +/obj/item/wallframe/camera, +/turf/template_noop, +/area/template_noop) "ae" = ( -/turf/closed/wall/mineral/plastitanium{ - dir = 1; - icon_state = "diagonalWall3" +/obj/structure/fluff/broken_flooring{ + icon_state = "plating"; + dir = 4 }, -/area/ruin/powered) +/turf/template_noop, +/area/template_noop) "af" = ( -/obj/machinery/suit_storage_unit, -/turf/open/floor/plasteel, -/area/ruin/powered) +/obj/structure/lattice/catwalk, +/turf/template_noop, +/area/template_noop) "ag" = ( -/turf/open/floor/plasteel, -/area/ruin/powered) +/obj/structure/lattice/catwalk, +/obj/structure/closet/crate/secure/weapon, +/obj/item/gun/ballistic/automatic/pistol/APS, +/turf/template_noop, +/area/template_noop) "ah" = ( -/turf/open/floor/plating/airless, -/area/ruin/powered) -"ai" = ( -/obj/machinery/door/airlock/external, -/turf/open/floor/plasteel, -/area/ruin/powered) -"aj" = ( -/obj/structure/statue/silver/medborg, -/turf/open/floor/plasteel, -/area/ruin/powered) -"ak" = ( -/mob/living/simple_animal/hostile/pirate/ranged{ +/obj/structure/lattice/catwalk, +/mob/living/simple_animal/hostile/pirate/space{ environment_smash = 0 }, -/turf/open/floor/plasteel, -/area/ruin/powered) +/turf/template_noop, +/area/template_noop) +"ai" = ( +/obj/structure/lattice, +/obj/structure/fluff/broken_flooring{ + dir = 2; + icon_state = "plating" + }, +/turf/template_noop, +/area/template_noop) +"aj" = ( +/obj/machinery/door/airlock/external{ + cyclelinkeddir = 2; + id_tag = "caravanpirate_bolt_port"; + locked = 1 + }, +/obj/docking_port/stationary{ + dir = 2; + dwidth = 14; + height = 13; + id = "caravanpirate_ambush"; + name = "Trade Route"; + width = 22 + }, +/obj/docking_port/mobile{ + callTime = 150; + dir = 2; + dwidth = 14; + height = 13; + id = "caravanpirate"; + movement_force = list("KNOCKDOWN" = 0, "THROW" = 0); + name = "Pirate Cutter"; + port_direction = 8; + preferred_direction = 4; + width = 22 + }, +/turf/open/floor/plating, +/area/shuttle/caravan/pirate) +"ak" = ( +/turf/open/floor/plating/airless{ + icon_state = "platingdmg2" + }, +/area/shuttle/caravan/freighter3) "al" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/plasteel, -/area/ruin/powered) +/obj/structure/lattice, +/obj/structure/fluff/broken_flooring{ + icon_state = "singular" + }, +/turf/template_noop, +/area/shuttle/caravan/freighter1) "am" = ( -/obj/structure/closet{ - name = "pirate outfits" - }, -/obj/item/clothing/head/collectable/pirate, -/obj/item/clothing/suit/pirate, -/obj/item/clothing/under/pirate, -/obj/item/clothing/shoes/jackboots, -/obj/item/clothing/head/bandana, -/turf/open/floor/plasteel, -/area/ruin/powered) +/obj/structure/lattice, +/turf/template_noop, +/area/shuttle/caravan/freighter1) "an" = ( -/obj/structure/table, -/obj/item/stack/sheet/mineral/gold{ - amount = 25 +/obj/structure/lattice, +/obj/structure/fluff/broken_flooring{ + icon_state = "plating"; + dir = 4 }, -/obj/item/coin/plasma, -/turf/open/floor/plasteel, -/area/ruin/powered) +/turf/template_noop, +/area/template_noop) "ao" = ( -/obj/structure/table, -/obj/item/stack/sheet/mineral/gold{ - amount = 25 - }, -/obj/item/coin/gold, -/obj/item/coin/gold, -/obj/item/coin/mythril, -/obj/item/coin/plasma, -/turf/open/floor/plasteel, -/area/ruin/powered) +/obj/item/stack/sheet/mineral/titanium, +/turf/template_noop, +/area/template_noop) "ap" = ( -/obj/structure/table, -/obj/item/coin/gold, -/obj/item/coin/gold, -/obj/item/coin/gold, -/obj/item/coin/mythril, -/obj/item/coin/plasma, -/turf/open/floor/plasteel, -/area/ruin/powered) +/obj/structure/lattice, +/obj/structure/fluff/broken_flooring{ + icon_state = "pile"; + dir = 8 + }, +/turf/template_noop, +/area/template_noop) "aq" = ( -/obj/structure/table, -/mob/living/simple_animal/parrot{ - faction = list("pirate"); - name = "Pegwing" - }, -/turf/open/floor/plasteel, -/area/ruin/powered) +/turf/template_noop, +/area/shuttle/caravan/freighter1) "ar" = ( -/obj/structure/shuttle/engine/propulsion/burst{ - dir = 8 - }, -/turf/open/floor/plating/airless, -/area/ruin/powered) +/obj/structure/lattice, +/obj/item/stack/sheet/mineral/titanium, +/turf/template_noop, +/area/shuttle/caravan/freighter1) "as" = ( -/obj/structure/shuttle/engine/heater{ - dir = 8 +/obj/structure/fluff/broken_flooring{ + dir = 4; + icon_state = "singular" }, -/turf/closed/wall/mineral/plastitanium, -/area/ruin/powered) +/turf/template_noop, +/area/template_noop) "at" = ( -/obj/structure/bed, -/obj/item/bedsheet/brown, -/turf/open/floor/plasteel, -/area/ruin/powered) -"au" = ( -/obj/structure/chair{ +/obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 1 }, /turf/open/floor/plasteel, -/area/ruin/powered) +/area/shuttle/caravan/pirate) +"au" = ( +/mob/living/simple_animal/hostile/pirate, +/turf/open/floor/plasteel, +/area/shuttle/caravan/pirate) "av" = ( -/obj/structure/rack, -/obj/item/storage/bag/money/vault, -/turf/open/floor/plasteel, -/area/ruin/powered) +/obj/effect/turf_decal/bot_white/right, +/obj/structure/cable/yellow{ + icon_state = "0-2" + }, +/obj/machinery/power/apc{ + dir = 8; + name = "Tiny Freighter APC"; + pixel_x = -24; + req_access = null; + start_charge = 0 + }, +/obj/machinery/button/door{ + id = "caravantrade3_cargo_port"; + name = "Cargo Blast Door Control"; + pixel_y = 24 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter3) "aw" = ( -/obj/structure/closet/crate/secure/loot, -/turf/open/floor/plasteel, -/area/ruin/powered) +/obj/structure/rack, +/obj/item/storage/toolbox/mechanical, +/obj/item/device/flashlight, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/darkblue/side{ + dir = 4; + initial_gas_mix = "TEMP=2.7" + }, +/area/shuttle/caravan/freighter3) "ax" = ( -/obj/structure/table, -/turf/open/floor/plasteel, -/area/ruin/powered) +/obj/machinery/light/small{ + dir = 4 + }, +/obj/structure/cable/yellow, +/obj/machinery/power/apc{ + dir = 4; + name = "Small Freighter APC"; + pixel_x = 24; + req_access = null; + start_charge = 0 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter1) "ay" = ( -/obj/machinery/computer, -/turf/open/floor/plasteel, -/area/ruin/powered) +/obj/effect/turf_decal/bot, +/obj/machinery/space_heater, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/turf/open/floor/plating/airless{ + icon_state = "platingdmg3" + }, +/area/shuttle/caravan/freighter1) "az" = ( -/obj/structure/table, -/obj/item/storage/bag/money/vault, -/turf/open/floor/plasteel, -/area/ruin/powered) +/obj/machinery/door/airlock{ + id_tag = "caravantrade1_cabin2"; + name = "Cabin 2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/vault/airless, +/area/shuttle/caravan/freighter1) "aA" = ( -/obj/structure/closet/crate{ - icon_state = "crateopen"; - opened = 1 +/obj/machinery/door/airlock{ + id_tag = "caravantrade1_cabin1"; + name = "Cabin 1" }, -/obj/item/stack/sheet/mineral/gold{ - amount = 25 - }, -/obj/item/stack/sheet/mineral/bananium{ - amount = 5 - }, -/obj/item/stack/sheet/mineral/silver{ - amount = 25 - }, -/obj/item/stack/sheet/mineral/uranium{ - amount = 10 - }, -/obj/item/stack/sheet/mineral/diamond{ - amount = 5 - }, -/turf/open/floor/plasteel, -/area/ruin/powered) +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/vault/airless, +/area/shuttle/caravan/freighter1) "aB" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/ruin/powered) +/obj/machinery/light/small, +/obj/structure/bed, +/obj/item/bedsheet, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/airalarm/all_access{ + dir = 8; + pixel_x = 24 + }, +/obj/machinery/button/door{ + id = "caravantrade1_cabin2"; + name = "Cabin Bolt Control"; + normaldoorcontrol = 1; + pixel_x = -25; + pixel_y = 6; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/plasteel/vault/airless, +/area/shuttle/caravan/freighter1) "aC" = ( -/turf/closed/mineral, -/area/ruin/unpowered/no_grav) +/obj/machinery/light/small, +/obj/structure/bed, +/obj/item/bedsheet, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/airalarm/all_access{ + dir = 8; + pixel_x = 24 + }, +/obj/machinery/button/door{ + id = "caravantrade1_cabin1"; + name = "Cabin Bolt Control"; + normaldoorcontrol = 1; + pixel_x = -25; + pixel_y = 6; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/plasteel/vault/airless, +/area/shuttle/caravan/freighter1) "aD" = ( /obj/item/stack/rods, /turf/template_noop, @@ -182,73 +269,151 @@ /turf/template_noop, /area/template_noop) "aF" = ( -/mob/living/simple_animal/hostile/pirate, -/turf/open/floor/plasteel, -/area/ruin/powered) +/obj/structure/toilet{ + dir = 4 + }, +/obj/structure/sink{ + pixel_y = 24 + }, +/obj/machinery/light/small, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/showroomfloor{ + initial_gas_mix = "TEMP=2.7" + }, +/area/shuttle/caravan/freighter1) "aG" = ( -/obj/structure/chair{ +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/darkblue/corner{ + dir = 4; + initial_gas_mix = "TEMP=2.7" + }, +/area/shuttle/caravan/freighter3) +"aH" = ( +/obj/machinery/door/airlock{ + name = "Restroom" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/showroomfloor{ + initial_gas_mix = "TEMP=2.7" + }, +/area/shuttle/caravan/freighter1) +"aI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/frame/computer{ + dir = 8 + }, +/obj/item/shard, +/turf/open/floor/plasteel/darkblue/side{ + dir = 8; + initial_gas_mix = "TEMP=2.7" + }, +/area/shuttle/caravan/freighter3) +"aJ" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/obj/effect/decal/cleanable/blood, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/mob/living/simple_animal/hostile/syndicate/ranged/space{ + environment_smash = 0; + name = "Syndicate Salvage Worker" + }, +/turf/open/floor/plasteel/yellow/corner{ + dir = 4; + initial_gas_mix = "TEMP=2.7" + }, +/area/shuttle/caravan/freighter1) +"aK" = ( +/obj/machinery/button/door{ + id = "caravantrade1_bolt"; + name = "External Bolt Control"; + normaldoorcontrol = 1; + pixel_x = -25; + pixel_y = 8; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plasteel/blue/corner{ + initial_gas_mix = "TEMP=2.7" + }, +/area/shuttle/caravan/freighter1) +"aL" = ( +/obj/machinery/airalarm/all_access{ + dir = 4; + pixel_x = -24 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood, +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter1) +"aM" = ( +/obj/effect/decal/cleanable/blood, +/turf/open/floor/plasteel/darkblue/corner{ + initial_gas_mix = "TEMP=2.7" + }, +/area/shuttle/caravan/freighter3) +"aN" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plasteel/airless/floorgrime, +/area/shuttle/caravan/freighter3) +"aO" = ( +/obj/machinery/airalarm/all_access{ + dir = 4; + pixel_x = -24 + }, +/obj/effect/decal/cleanable/blood, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 1 }, -/mob/living/simple_animal/hostile/pirate, -/turf/open/floor/plasteel, -/area/ruin/powered) -"aH" = ( -/turf/open/floor/plating/asteroid/airless, -/area/ruin/unpowered/no_grav) -"aI" = ( -/turf/closed/wall/mineral/plastitanium, -/area/ruin/unpowered/no_grav) -"aJ" = ( -/obj/machinery/door/airlock/external{ - icon_state = "door_locked"; - locked = 1 - }, -/turf/open/floor/plating, -/area/ruin/unpowered/no_grav) -"aK" = ( -/turf/closed/wall/mineral/iron, -/area/ruin/unpowered/no_grav) -"aL" = ( -/obj/item/coin/mythril, -/turf/open/floor/plasteel, -/area/ruin/powered) -"aM" = ( -/obj/structure/chair, -/turf/open/floor/plasteel, -/area/ruin/powered) -"aN" = ( -/obj/structure/shuttle/engine/propulsion/burst{ - dir = 8 - }, -/turf/open/floor/plating/airless, -/area/ruin/unpowered/no_grav) -"aO" = ( -/obj/structure/shuttle/engine/heater{ - dir = 8 - }, -/turf/closed/wall/mineral/plastitanium, -/area/ruin/unpowered/no_grav) +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter3) "aP" = ( -/obj/structure/chair, -/obj/item/shard, -/obj/item/stack/sheet/metal, -/turf/open/floor/mineral/plastitanium/airless, -/area/ruin/unpowered/no_grav) -"aQ" = ( -/obj/structure/chair, -/obj/effect/decal/cleanable/shreds, -/turf/open/floor/mineral/plastitanium/airless, -/area/ruin/unpowered/no_grav) -"aR" = ( -/obj/item/shard, -/turf/open/floor/mineral/plastitanium/airless, -/area/ruin/unpowered/no_grav) -"aS" = ( -/turf/open/floor/plating/airless{ - icon_plating = "platingdmg1"; - icon_state = "platingdmg1" +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/mob/living/simple_animal/hostile/pirate/space{ + environment_smash = 0 }, -/area/ruin/unpowered/no_grav) +/turf/open/floor/plasteel/airless/floorgrime, +/area/shuttle/caravan/freighter2) +"aQ" = ( +/obj/structure/rack, +/obj/item/tank/jetpack/carbondioxide, +/obj/item/tank/internals/emergency_oxygen/engi, +/obj/item/clothing/mask/gas, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/darkblue/side{ + dir = 4; + initial_gas_mix = "TEMP=2.7" + }, +/area/shuttle/caravan/freighter3) +"aR" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/plasteel/airless, +/area/shuttle/caravan/freighter3) +"aS" = ( +/obj/machinery/power/smes{ + charge = 5e+006 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "0-4" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/shuttle/caravan/syndicate3) "aT" = ( /obj/structure/fluff/broken_flooring{ icon_state = "singular" @@ -256,138 +421,205 @@ /turf/template_noop, /area/template_noop) "aU" = ( -/obj/structure/rack, -/obj/item/tank/internals/plasma/full, -/obj/item/tank/internals/plasma/full, -/obj/item/tank/internals/plasma/full, -/turf/open/floor/plasteel, -/area/ruin/powered) +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/closet/crate, +/obj/machinery/power/terminal{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/item/stack/sheet/metal/twenty, +/obj/item/stack/sheet/glass{ + amount = 10 + }, +/obj/item/stack/sheet/mineral/plastitanium{ + amount = 20 + }, +/obj/item/storage/box/lights/bulbs, +/obj/item/storage/toolbox/mechanical, +/obj/item/stack/sheet/mineral/plasma{ + amount = 20 + }, +/turf/open/floor/plating, +/area/shuttle/caravan/syndicate3) "aV" = ( -/obj/structure/fluff/broken_flooring{ - icon_state = "singular" +/obj/effect/turf_decal/stripes/line{ + dir = 6 }, -/obj/effect/decal/cleanable/shreds, -/turf/open/floor/mineral/plastitanium/airless, -/area/ruin/unpowered/no_grav) +/obj/structure/cable, +/obj/machinery/power/port_gen/pacman{ + anchored = 1 + }, +/obj/item/wrench, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/shuttle/caravan/syndicate3) "aW" = ( -/obj/effect/gibspawner/human, -/turf/open/floor/mineral/plastitanium/airless, -/area/ruin/unpowered/no_grav) -"aX" = ( -/turf/open/floor/plating/airless{ - icon = 'icons/obj/smooth_structures/lattice.dmi'; - icon_plating = "lattice"; - icon_state = "lattice"; - name = "anchor chain" +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 }, -/area/template_noop) -"aY" = ( -/obj/structure/statue/gold/cmo, -/turf/open/floor/plasteel, -/area/ruin/powered) -"aZ" = ( -/obj/structure/table, -/obj/item/paper_bin, -/obj/item/pen, -/turf/open/floor/plasteel, -/area/ruin/powered) -"ba" = ( -/obj/structure/table, -/obj/item/stack/sheet/mineral/gold{ - amount = 25 - }, -/turf/open/floor/plasteel, -/area/ruin/powered) -"bb" = ( -/turf/closed/wall/mineral/plastitanium{ - dir = 4; - icon_state = "diagonalWall3" - }, -/area/ruin/powered) -"bc" = ( -/obj/structure/chair{ - dir = 1 - }, -/obj/item/stack/rods, -/obj/effect/gibspawner/human, -/turf/open/floor/mineral/plastitanium/airless, -/area/ruin/unpowered/no_grav) -"bd" = ( -/obj/structure/chair{ - dir = 1 - }, -/obj/item/shard, -/obj/item/stack/sheet/metal, -/obj/effect/decal/cleanable/shreds, -/turf/open/floor/mineral/plastitanium/airless, -/area/ruin/unpowered/no_grav) -"be" = ( -/turf/open/floor/mineral/plastitanium/airless, -/area/ruin/unpowered/no_grav) -"bf" = ( -/obj/item/stack/sheet/metal, -/turf/open/floor/plating/asteroid/airless, -/area/ruin/unpowered/no_grav) -"bg" = ( -/turf/open/floor/wood/airless, -/area/ruin/unpowered/no_grav) -"bh" = ( -/obj/structure/closet/crate/secure/weapon, -/obj/item/gun/ballistic/automatic/pistol/APS, -/turf/open/floor/wood/airless, -/area/ruin/unpowered/no_grav) -"bi" = ( -/mob/living/simple_animal/hostile/pirate/space{ - environment_smash = 0 - }, -/turf/open/floor/wood/airless, -/area/ruin/unpowered/no_grav) -"bj" = ( -/obj/structure/closet/crate/secure/weapon, -/obj/item/gun/ballistic/shotgun/automatic/dual_tube, -/turf/open/floor/wood/airless, -/area/ruin/unpowered/no_grav) -"bk" = ( -/obj/structure/girder, -/turf/template_noop, -/area/template_noop) -"bl" = ( -/turf/closed/wall/mineral/titanium, -/area/ruin/unpowered) -"bm" = ( -/obj/machinery/door/poddoor{ - id = "caravantrade1"; - name = "cargo blastdoor" - }, -/turf/open/floor/plating/airless{ - icon_plating = "platingdmg2"; - icon_state = "platingdmg2" - }, -/area/ruin/unpowered) -"bn" = ( -/turf/open/floor/plating/airless{ - icon_plating = "platingdmg1"; - icon_state = "platingdmg1" - }, -/area/ruin/unpowered) -"bo" = ( -/obj/structure/door_assembly/door_assembly_titanium{ +/obj/effect/decal/cleanable/dirt, +/obj/structure/door_assembly/door_assembly_com{ + anchored = 1; density = 0; name = "broken airlock" }, -/turf/open/floor/plating/airless{ - icon_plating = "platingdmg2"; - icon_state = "platingdmg2" +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter3) +"aX" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/door_assembly/door_assembly_min{ + anchored = 1; + density = 0; + name = "broken airlock" }, -/area/ruin/unpowered) -"bp" = ( -/turf/closed/wall/mineral/titanium/overspace, -/area/ruin/unpowered) -"bq" = ( -/obj/structure/fluff/broken_flooring{ - icon_state = "pile"; +/turf/open/floor/plasteel/airless/floorgrime, +/area/shuttle/caravan/freighter1) +"aY" = ( +/obj/effect/turf_decal/bot_white/right, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable/yellow{ + icon_state = "0-2" + }, +/obj/machinery/power/apc{ + dir = 8; + name = "Tiny Freighter APC"; + pixel_x = -24; + req_access = null; + start_charge = 0 + }, +/obj/machinery/button/door{ + id = "caravantrade2_cargo_port"; + name = "Cargo Blast Door Control"; + pixel_y = 24 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter2) +"aZ" = ( +/obj/machinery/door/firedoor, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/door_assembly/door_assembly_com{ + anchored = 1; + density = 0; + name = "broken airlock" + }, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter2) +"ba" = ( +/obj/machinery/door/airlock/hatch{ + id_tag = "caravansyndicate3_bolt_starboard"; + name = "External Airlock"; + normalspeed = 0; + req_access_txt = "150" + }, +/turf/open/floor/plating, +/area/shuttle/caravan/syndicate3) +"bb" = ( +/obj/machinery/porta_turret/syndicate/pod{ + dir = 5; + faction = "pirate" + }, +/turf/closed/wall/mineral/plastitanium, +/area/shuttle/caravan/pirate) +"bc" = ( +/obj/machinery/porta_turret/syndicate/pod{ + dir = 6; + faction = "pirate" + }, +/turf/closed/wall/mineral/plastitanium, +/area/shuttle/caravan/pirate) +"bd" = ( +/turf/open/floor/plating/airless{ + icon_state = "platingdmg3" + }, +/area/shuttle/caravan/freighter3) +"be" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/plasteel/vault/airless, +/area/shuttle/caravan/freighter1) +"bf" = ( +/obj/effect/turf_decal/bot_white, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/plasteel/vault/airless, +/area/shuttle/caravan/freighter1) +"bg" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/airalarm/all_access{ + dir = 4; + pixel_x = -24 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter2) +"bh" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/effect/gibspawner/human, +/turf/open/floor/plating/airless{ + icon_state = "platingdmg3" + }, +/area/shuttle/caravan/freighter2) +"bi" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 8 }, +/turf/open/floor/plasteel/airless{ + icon_state = "floorscorched1" + }, +/area/shuttle/caravan/freighter2) +"bj" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/machinery/button/door{ + id = "caravansyndicate3_bolt_port"; + name = "External Bolt Control"; + normaldoorcontrol = 1; + pixel_x = -24; + pixel_y = 6; + req_access_txt = "150"; + specialfunctions = 4 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/caravan/syndicate3) +"bk" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/machinery/button/door{ + id = "caravansyndicate3_bolt_starboard"; + name = "External Bolt Control"; + normaldoorcontrol = 1; + pixel_x = -24; + pixel_y = -6; + req_access_txt = "150"; + specialfunctions = 4 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/caravan/syndicate3) +"bl" = ( +/mob/living/simple_animal/hostile/carp, /turf/template_noop, /area/template_noop) "br" = ( @@ -398,758 +630,3250 @@ /obj/structure/lattice, /turf/template_noop, /area/template_noop) -"bu" = ( -/obj/item/stack/sheet/metal, -/obj/effect/decal/cleanable/dirt, -/obj/item/stack/rods, -/turf/open/floor/plating/airless{ - icon_plating = "platingdmg3"; - icon_state = "platingdmg3" - }, -/area/ruin/unpowered) -"bv" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/mineral/titanium/blue/airless, -/area/ruin/unpowered) -"bw" = ( -/turf/open/floor/mineral/titanium/blue/airless, -/area/ruin/unpowered) -"bx" = ( -/obj/machinery/button/door{ - pixel_x = 24 - }, -/turf/open/floor/mineral/titanium/blue/airless, -/area/ruin/unpowered) -"by" = ( -/obj/structure/bed, -/obj/item/bedsheet/black, -/turf/open/floor/mineral/titanium/blue/airless, -/area/ruin/unpowered) -"bz" = ( -/turf/closed/wall/mineral/titanium/interior, -/area/ruin/unpowered) -"bA" = ( -/obj/structure/fluff/broken_flooring{ - icon_state = "pile" - }, -/turf/template_noop, -/area/template_noop) -"bB" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/airless{ - icon_plating = "platingdmg1"; - icon_state = "platingdmg1" - }, -/area/ruin/unpowered) -"bC" = ( -/turf/open/floor/plating/airless{ - icon_plating = "platingdmg3"; - icon_state = "platingdmg3" - }, -/area/ruin/unpowered) -"bD" = ( -/obj/structure/closet/crate/secure/gear, -/obj/item/ammo_casing/shotgun/techshell, -/obj/item/ammo_casing/shotgun/techshell, -/obj/item/ammo_casing/shotgun/techshell, -/obj/item/ammo_casing/shotgun/pulseslug, -/obj/item/storage/box/lethalshot, -/turf/open/floor/mineral/titanium/yellow/airless, -/area/ruin/unpowered) -"bE" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/mineral/titanium/yellow/airless, -/area/ruin/unpowered) -"bF" = ( -/mob/living/simple_animal/hostile/pirate/space/ranged{ - environment_smash = 0 - }, -/turf/open/floor/mineral/titanium/yellow/airless, -/area/ruin/unpowered) -"bG" = ( -/turf/open/floor/mineral/titanium/yellow/airless, -/area/ruin/unpowered) -"bH" = ( -/mob/living/simple_animal/hostile/pirate/space{ - environment_smash = 0 - }, -/turf/open/floor/mineral/titanium/blue/airless, -/area/ruin/unpowered) -"bI" = ( -/obj/structure/table, -/obj/item/storage/firstaid/regular, -/turf/open/floor/mineral/titanium/blue/airless, +"bt" = ( +/turf/closed/mineral/random, /area/ruin/unpowered) "bJ" = ( -/obj/effect/spawner/structure/window/shuttle, -/turf/open/floor/plating/airless{ - icon_plating = "platingdmg2"; - icon_state = "platingdmg2" - }, +/turf/closed/wall/mineral/plastitanium, /area/ruin/unpowered) -"bK" = ( -/obj/structure/fluff/broken_flooring{ - icon_state = "plating"; - dir = 1 - }, -/turf/template_noop, -/area/template_noop) -"bL" = ( -/obj/machinery/door/airlock/titanium, -/turf/open/floor/mineral/titanium/yellow/airless, -/area/ruin/unpowered) -"bM" = ( -/obj/effect/decal/cleanable/blood, -/turf/open/floor/mineral/titanium/blue/airless, -/area/ruin/unpowered) -"bN" = ( -/obj/structure/table, -/obj/item/paper_bin, -/obj/item/pen, -/turf/open/floor/mineral/titanium/blue/airless, -/area/ruin/unpowered) -"bO" = ( -/obj/machinery/door/airlock/titanium, -/turf/open/floor/plating/airless{ - icon_plating = "platingdmg3"; - icon_state = "platingdmg3" - }, -/area/ruin/unpowered) -"bP" = ( -/turf/closed/wall/mineral/plastitanium{ - dir = 8; - icon_state = "diagonalWall3" - }, -/area/ruin/powered) -"bQ" = ( -/obj/structure/fluff/broken_flooring{ - icon_state = "plating"; - dir = 1 - }, -/obj/structure/lattice, -/turf/template_noop, -/area/template_noop) -"bR" = ( -/obj/structure/girder, -/turf/open/floor/plating/airless{ - icon_plating = "platingdmg3"; - icon_state = "platingdmg3" - }, -/area/ruin/unpowered) -"bS" = ( -/obj/structure/girder, -/turf/open/floor/plating/airless{ - icon_plating = "platingdmg2"; - icon_state = "platingdmg2" - }, -/area/ruin/unpowered) -"bT" = ( -/obj/item/stack/sheet/metal, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/airless{ - icon_plating = "platingdmg1"; - icon_state = "platingdmg1" - }, -/area/ruin/unpowered) -"bU" = ( -/obj/item/stack/rods, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/airless{ - icon_plating = "platingdmg3"; - icon_state = "platingdmg3" - }, -/area/ruin/unpowered) -"bV" = ( -/obj/structure/closet/crate/secure/gear, -/obj/item/ammo_casing/shotgun/frag12, -/obj/item/ammo_casing/shotgun/frag12, -/obj/item/ammo_casing/shotgun/frag12, -/obj/item/ammo_casing/shotgun/frag12, -/obj/item/storage/box/beanbag, -/obj/item/storage/box/rubbershot, -/turf/open/floor/mineral/titanium/yellow/airless, -/area/ruin/unpowered) -"bW" = ( -/obj/structure/closet/crate/secure/gear, -/obj/item/ammo_box/c10mm, -/obj/item/ammo_casing/shotgun/meteorslug, -/obj/item/ammo_casing/shotgun/meteorslug, -/obj/item/ammo_casing/shotgun/meteorslug, -/turf/open/floor/mineral/titanium/yellow/airless, -/area/ruin/unpowered) -"bX" = ( -/obj/structure/closet/crate/secure/gear, -/obj/item/ammo_box/a40mm, -/obj/item/ammo_box/a40mm, -/turf/open/floor/mineral/titanium/yellow/airless, -/area/ruin/unpowered) -"bY" = ( -/obj/structure/chair{ - dir = 4 - }, -/obj/effect/mob_spawn/human/corpse/nanotrasensoldier, -/obj/effect/decal/cleanable/blood, -/turf/open/floor/mineral/titanium/blue/airless, -/area/ruin/unpowered) -"bZ" = ( -/obj/machinery/computer{ - dir = 8 - }, -/turf/open/floor/mineral/titanium/blue/airless, -/area/ruin/unpowered) -"ca" = ( -/obj/structure/shuttle/engine/propulsion/burst/left{ - dir = 8 - }, -/turf/open/floor/plating/airless, -/area/ruin/unpowered) -"cb" = ( -/obj/structure/shuttle/engine/heater{ - dir = 8 - }, -/turf/closed/wall/mineral/titanium, -/area/ruin/unpowered) -"cc" = ( -/obj/structure/table, -/turf/open/floor/mineral/titanium/blue/airless, -/area/ruin/unpowered) -"cd" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/bed, -/obj/item/bedsheet/black, -/turf/open/floor/mineral/titanium/blue/airless, -/area/ruin/unpowered) -"ce" = ( -/obj/structure/table, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered) -"cf" = ( -/obj/machinery/computer, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered) -"cg" = ( -/obj/structure/fluff/broken_flooring{ - icon_state = "plating"; - dir = 4 - }, -/obj/structure/lattice, -/turf/template_noop, -/area/template_noop) "ch" = ( -/obj/item/stack/rods, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/airless{ - icon_plating = "platingdmg2"; - icon_state = "platingdmg2" - }, -/area/ruin/unpowered) -"ci" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/airless{ - icon_plating = "platingdmg3"; - icon_state = "platingdmg3" - }, -/area/ruin/unpowered) -"cj" = ( -/turf/open/floor/plating/airless, -/area/ruin/unpowered) -"ck" = ( -/obj/structure/closet/crate/secure/weapon, -/obj/item/gun/ballistic/revolver/grenadelauncher/unrestricted, -/turf/open/floor/mineral/titanium/yellow/airless, -/area/ruin/unpowered) -"cl" = ( -/mob/living/simple_animal/hostile/pirate/space{ - environment_smash = 0 - }, -/turf/open/floor/mineral/titanium/yellow/airless, -/area/ruin/unpowered) -"cm" = ( -/obj/structure/door_assembly/door_assembly_titanium{ - density = 0; - name = "broken airlock" - }, -/turf/open/floor/mineral/titanium/yellow/airless, -/area/ruin/unpowered) -"cn" = ( -/obj/structure/table, -/obj/item/device/gps{ - gpstag = "Distress Signal" - }, -/turf/open/floor/mineral/titanium/blue/airless, -/area/ruin/unpowered) -"co" = ( -/obj/structure/shuttle/engine/propulsion/burst{ - dir = 8 - }, -/turf/open/floor/plating/airless, -/area/ruin/unpowered) -"cp" = ( -/obj/structure/closet/crate/secure/engineering, -/obj/item/storage/toolbox/mechanical, -/obj/item/storage/toolbox/mechanical, -/obj/item/storage/toolbox/electrical, -/obj/item/storage/toolbox/electrical, -/obj/item/clothing/gloves/color/yellow, -/turf/open/floor/mineral/titanium/yellow/airless, -/area/ruin/unpowered) -"cq" = ( -/obj/item/shard, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/mineral/titanium/blue/airless, -/area/ruin/unpowered) -"cr" = ( -/obj/structure/table_frame, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/mineral/titanium/blue/airless, -/area/ruin/unpowered) -"cs" = ( -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered) -"ct" = ( -/obj/structure/chair{ - dir = 1 - }, -/mob/living/simple_animal/hostile/syndicate{ - environment_smash = 0; - name = "Syndicate Salvage Pilot" - }, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered) -"cu" = ( -/obj/structure/closet/crate/secure/engineering, -/obj/item/wrench/caravan, -/obj/item/screwdriver/caravan, -/obj/item/wirecutters/caravan, -/obj/item/crowbar/red/caravan, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered) -"cv" = ( -/obj/effect/decal/cleanable/dirt, -/mob/living/simple_animal/hostile/syndicate/ranged/space{ - environment_smash = 0; - name = "Syndicate Salvage Worker" - }, -/turf/open/floor/mineral/titanium/blue/airless, -/area/ruin/unpowered) -"cw" = ( -/obj/item/stack/rods, -/turf/open/floor/plating/airless{ - icon_plating = "platingdmg3"; - icon_state = "platingdmg3" - }, -/area/ruin/unpowered) -"cx" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/airless{ - icon_plating = "platingdmg2"; - icon_state = "platingdmg2" - }, -/area/ruin/unpowered) -"cy" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/structure/girder, -/turf/open/floor/plating/airless{ - icon_plating = "platingdmg3"; - icon_state = "platingdmg3" - }, -/area/ruin/unpowered) -"cz" = ( -/obj/item/stack/sheet/metal, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/airless{ - icon_plating = "platingdmg3"; - icon_state = "platingdmg3" - }, -/area/ruin/unpowered) -"cA" = ( -/obj/structure/closet/crate/secure/weapon, -/obj/item/gun/ballistic/shotgun/riot, -/obj/item/gun/ballistic/shotgun/riot, -/turf/open/floor/mineral/titanium/yellow/airless, -/area/ruin/unpowered) -"cB" = ( -/obj/structure/closet/crate/secure/weapon, -/obj/item/gun/syringe/syndicate, -/obj/item/gun/syringe/rapidsyringe, -/turf/open/floor/mineral/titanium/yellow/airless, -/area/ruin/unpowered) -"cC" = ( -/obj/structure/closet/crate/secure/weapon, -/obj/item/gun/ballistic/automatic/c20r/toy/unrestricted/riot, -/obj/item/gun/ballistic/automatic/c20r/toy/unrestricted/riot, -/turf/open/floor/mineral/titanium/yellow/airless, -/area/ruin/unpowered) -"cD" = ( -/mob/living/simple_animal/hostile/pirate/space/ranged{ - environment_smash = 0 - }, -/turf/open/floor/mineral/titanium/blue/airless, -/area/ruin/unpowered) -"cE" = ( -/obj/structure/table, -/obj/item/clipboard, -/turf/open/floor/mineral/titanium/blue/airless, -/area/ruin/unpowered) -"cF" = ( -/obj/structure/shuttle/engine/propulsion/burst/right{ - dir = 8 - }, -/turf/open/floor/plating/airless, -/area/ruin/unpowered) -"cG" = ( -/mob/living/simple_animal/hostile/syndicate/melee/space{ - environment_smash = 0; - name = "Syndicate Salvage Worker" - }, -/turf/open/floor/mineral/titanium/yellow/airless, -/area/ruin/unpowered) -"cH" = ( -/obj/item/stack/rods, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/airless{ - icon_plating = "platingdmg1"; - icon_state = "platingdmg1" - }, -/area/ruin/unpowered) -"cI" = ( -/obj/structure/grille/broken, -/obj/item/shard, -/turf/open/floor/plating/airless{ - icon_plating = "platingdmg1"; - icon_state = "platingdmg1" - }, -/area/ruin/unpowered) -"cJ" = ( -/obj/structure/closet/crate/secure/engineering, -/obj/item/clothing/gloves/color/yellow, -/obj/item/clothing/gloves/color/yellow, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered) -"cK" = ( -/obj/structure/closet/crate, -/obj/item/stack/sheet/plasteel/twenty, -/obj/item/stack/sheet/plasteel/twenty, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/mineral/titanium/yellow/airless, -/area/ruin/unpowered) -"cL" = ( -/obj/item/stack/sheet/metal, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/mineral/titanium/yellow/airless, -/area/ruin/unpowered) -"cM" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/airless{ - icon_plating = "platingdmg3"; - icon_state = "platingdmg3" - }, -/area/ruin/unpowered) -"cN" = ( -/obj/structure/closet/crate/secure/plasma, -/obj/item/tank/internals/plasma/full, -/obj/item/tank/internals/plasma/full, -/obj/item/stack/sheet/mineral/plasma{ - amount = 25 - }, -/turf/open/floor/mineral/titanium/yellow/airless, -/area/ruin/unpowered) -"cO" = ( -/obj/item/shard, -/turf/open/floor/mineral/titanium/blue/airless, -/area/ruin/unpowered) -"cP" = ( -/obj/item/chair, -/obj/effect/mob_spawn/human/corpse/nanotrasensoldier, -/obj/effect/decal/cleanable/blood, -/turf/open/floor/mineral/titanium/blue/airless, -/area/ruin/unpowered) -"cQ" = ( -/obj/item/stack/rods, -/obj/item/stack/sheet/metal, -/turf/open/floor/plating/airless{ - icon_plating = "platingdmg1"; - icon_state = "platingdmg1" - }, -/area/ruin/unpowered) -"cR" = ( -/obj/structure/fluff/broken_flooring{ - icon_state = "plating"; - dir = 8 - }, -/obj/structure/lattice, -/turf/template_noop, -/area/template_noop) -"cS" = ( -/obj/machinery/door/airlock/external{ - icon_state = "door_locked"; - locked = 1 - }, -/turf/open/floor/plating, -/area/ruin/powered) -"cT" = ( -/obj/machinery/porta_turret/syndicate/pod, -/turf/open/floor/plating/airless, -/area/ruin/powered) -"cU" = ( -/obj/effect/decal/cleanable/dirt, -/mob/living/simple_animal/hostile/syndicate/melee/space/stormtrooper{ - environment_smash = 0; - name = "Syndicate Salvage Leader" - }, -/turf/open/floor/mineral/titanium/yellow/airless, -/area/ruin/unpowered) -"cV" = ( -/obj/structure/chair{ - dir = 4 - }, -/obj/effect/decal/cleanable/blood, -/turf/open/floor/mineral/titanium/blue/airless, -/area/ruin/unpowered) -"cW" = ( -/obj/structure/closet/crate/secure/plasma, -/obj/item/tank/internals/plasma/full, -/obj/item/stack/sheet/mineral/plasma{ - amount = 25 - }, -/turf/open/floor/mineral/titanium/yellow/airless, -/area/ruin/unpowered) -"cX" = ( -/obj/structure/closet/crate/secure/engineering, -/obj/item/organ/cyberimp/arm/toolset, -/obj/item/organ/cyberimp/arm/toolset, -/turf/open/floor/mineral/titanium/yellow/airless, -/area/ruin/unpowered) -"cY" = ( -/obj/structure/closet/crate/secure/plasma, -/obj/item/mecha_parts/mecha_equipment/weapon/energy/plasma, -/turf/open/floor/mineral/titanium/yellow/airless, -/area/ruin/unpowered) -"cZ" = ( -/mob/living/simple_animal/hostile/syndicate/ranged/space/stormtrooper{ - environment_smash = 0; - name = "Syndicate Salvage Leader" - }, -/turf/open/floor/mineral/titanium/yellow/airless, -/area/ruin/unpowered) -"da" = ( -/obj/item/stack/rods, -/obj/item/shard, -/mob/living/simple_animal/hostile/syndicate/melee/space{ - environment_smash = 0; - name = "Syndicate Salvage Worker" - }, -/turf/open/floor/mineral/titanium/blue/airless, -/area/ruin/unpowered) -"db" = ( -/obj/item/shard, -/turf/open/floor/plating/airless{ - icon_plating = "platingdmg1"; - icon_state = "platingdmg1" - }, -/area/ruin/unpowered) +/turf/closed/wall/mineral/plastitanium, +/area/shuttle/caravan/pirate) "dc" = ( /obj/item/shard, /turf/template_noop, /area/template_noop) -"dd" = ( +"dB" = ( +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/shuttle/caravan/pirate) +"dD" = ( +/turf/open/floor/plating/asteroid/airless, +/area/ruin/unpowered) +"dE" = ( +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ruin/unpowered) +"dF" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/frame/computer, +/obj/item/shard, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/mineral/plastitanium/airless, +/area/ruin/unpowered) +"dG" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/sign/warning/vacuum{ + pixel_x = -32 + }, +/turf/open/floor/plating, +/area/shuttle/caravan/pirate) +"dH" = ( +/obj/structure/grille, +/obj/structure/window/plastitanium, +/obj/machinery/door/poddoor{ + id = "caravanpirate_bridge" + }, +/turf/open/floor/plating, +/area/shuttle/caravan/pirate) +"dI" = ( +/obj/machinery/atmospherics/components/unary/tank/air, +/obj/effect/turf_decal/bot, +/turf/open/floor/plating, +/area/shuttle/caravan/pirate) +"dJ" = ( +/obj/machinery/suit_storage_unit/open, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/shuttle/caravan/pirate) +"dK" = ( +/obj/machinery/door/airlock/external{ + cyclelinkeddir = 1; + id_tag = "caravanpirate_bolt_port"; + locked = 1 + }, +/turf/open/floor/plating, +/area/shuttle/caravan/pirate) +"dL" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/door_assembly/door_assembly_hatch{ + density = 0; + name = "broken airlock" + }, +/turf/open/floor/plating/airless, +/area/ruin/unpowered) +"dN" = ( +/obj/structure/shuttle/engine/propulsion/burst/left{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/pirate) +"dO" = ( +/obj/structure/shuttle/engine/heater{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/pirate) +"dP" = ( +/obj/structure/reagent_dispensers/watertank, +/obj/item/reagent_containers/glass/bucket, +/obj/item/mop, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/turf/open/floor/plating, +/area/shuttle/caravan/pirate) +"dQ" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/obj/machinery/meter, +/turf/open/floor/plating, +/area/shuttle/caravan/pirate) +"dR" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/engineering{ + name = "Engineering" + }, +/turf/open/floor/plating, +/area/shuttle/caravan/pirate) +"dS" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white/side{ + dir = 9 + }, +/area/shuttle/caravan/pirate) +"dT" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white/side{ + dir = 1 + }, +/area/shuttle/caravan/pirate) +"dU" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel/white/side{ + dir = 1 + }, +/area/shuttle/caravan/pirate) +"dV" = ( +/obj/machinery/button/door{ + id = "caravanpirate_bolt_port"; + name = "External Bolt Control"; + normaldoorcontrol = 1; + pixel_x = -4; + pixel_y = 25; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white/side{ + dir = 1 + }, +/area/shuttle/caravan/pirate) +"dW" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel/white/side{ + dir = 1 + }, +/area/shuttle/caravan/pirate) +"dX" = ( +/obj/structure/sign/departments/medbay/alt, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/shuttle/caravan/pirate) +"dY" = ( +/obj/structure/closet{ + name = "pirate outfits" + }, +/obj/item/clothing/head/collectable/pirate, +/obj/item/clothing/suit/pirate, +/obj/item/clothing/under/pirate, +/obj/item/clothing/shoes/jackboots, +/obj/item/clothing/head/bandana, +/turf/open/floor/plasteel/dark/side{ + dir = 5 + }, +/area/shuttle/caravan/pirate) +"dZ" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/structure/bed, +/obj/item/bedsheet/brown, +/turf/open/floor/plasteel/dark, +/area/shuttle/caravan/pirate) +"ea" = ( +/obj/structure/shuttle/engine/propulsion/burst{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/pirate) +"eb" = ( +/obj/structure/reagent_dispensers/fueltank, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plating, +/area/shuttle/caravan/pirate) +"ec" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/shuttle/caravan/pirate) +"ed" = ( +/obj/structure/sign/departments/engineering, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/shuttle/caravan/pirate) +"ee" = ( +/obj/structure/table, +/obj/item/circular_saw, +/obj/item/scalpel{ + pixel_y = 12 + }, +/obj/item/cautery{ + pixel_x = 4 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plasteel/white/side{ + dir = 8 + }, +/area/shuttle/caravan/pirate) +"ef" = ( +/turf/open/floor/plasteel/floorgrime, +/area/shuttle/caravan/pirate) +"eh" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel/floorgrime, +/area/shuttle/caravan/pirate) +"ei" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/medical/glass{ + name = "Medbay" + }, +/turf/open/floor/plasteel/floorgrime, +/area/shuttle/caravan/pirate) +"ej" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/dark/side{ + dir = 4 + }, +/area/shuttle/caravan/pirate) +"ek" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/shuttle/caravan/pirate) +"el" = ( +/obj/structure/table, +/obj/machinery/microwave{ + pixel_y = 5 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/caravan/pirate) +"em" = ( +/obj/structure/shuttle/engine/propulsion/burst/right{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/pirate) +"en" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/obj/machinery/space_heater, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/plating, +/area/shuttle/caravan/pirate) +"eo" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/shuttle/caravan/pirate) +"ep" = ( +/obj/structure/table, +/obj/item/retractor, +/obj/item/hemostat, +/turf/open/floor/plasteel/white, +/area/shuttle/caravan/pirate) +"eq" = ( +/obj/structure/table/optable, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel/white, +/area/shuttle/caravan/pirate) +"er" = ( +/obj/structure/table, +/obj/item/storage/firstaid/brute{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/storage/firstaid/fire, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/turf/open/floor/plasteel/white, +/area/shuttle/caravan/pirate) +"es" = ( +/obj/machinery/sleeper{ + dir = 1 + }, +/obj/effect/turf_decal/delivery, +/obj/machinery/airalarm/all_access{ + dir = 1; + pixel_y = -24 + }, +/turf/open/floor/plasteel/white, +/area/shuttle/caravan/pirate) +"et" = ( +/obj/structure/closet/crate/freezer/surplus_limbs, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel/white, +/area/shuttle/caravan/pirate) +"eu" = ( /obj/structure/chair{ dir = 4 }, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered) -"de" = ( -/obj/structure/closet/crate/secure/plasma, -/obj/item/stack/sheet/mineral/plasma{ - amount = 25 +/obj/effect/decal/cleanable/blood, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/mineral/plastitanium/airless, +/area/ruin/unpowered) +"ew" = ( +/obj/effect/gibspawner/human, +/turf/open/floor/plating/asteroid/airless, +/area/ruin/unpowered) +"ex" = ( +/obj/item/stack/sheet/metal, +/turf/open/floor/plating/asteroid/airless, +/area/ruin/unpowered) +"ez" = ( +/obj/structure/bed, +/obj/item/bedsheet/brown, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -26 }, -/obj/item/stack/sheet/mineral/plasma{ - amount = 25 +/turf/open/floor/plasteel/dark/side{ + dir = 6 }, -/obj/item/tank/internals/plasma/full, -/obj/item/tank/internals/plasma/full, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered) -"df" = ( -/obj/structure/chair{ +/area/shuttle/caravan/pirate) +"eB" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/shuttle/caravan/pirate) +"eC" = ( +/obj/structure/table, +/obj/item/storage/fancy/donut_box{ + pixel_y = 18 + }, +/obj/item/storage/box/donkpockets{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/storage/box/donkpockets{ + pixel_x = -6 + }, +/obj/item/reagent_containers/food/drinks/bottle/rum{ + pixel_x = 8; + pixel_y = 3 + }, +/obj/structure/sign/poster/contraband/red_rum{ + pixel_x = 32 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/caravan/pirate) +"eD" = ( +/obj/structure/table, +/obj/item/reagent_containers/food/drinks/bottle/rum{ + pixel_x = 3; + pixel_y = 6 + }, +/obj/item/reagent_containers/food/drinks/bottle/rum, +/turf/open/floor/plasteel/dark, +/area/shuttle/caravan/pirate) +"eE" = ( +/obj/structure/table, +/obj/item/coin/gold, +/obj/item/coin/silver, +/obj/item/coin/silver, +/turf/open/floor/plasteel/dark, +/area/shuttle/caravan/pirate) +"eF" = ( +/obj/structure/closet/crate/secure/loot, +/obj/machinery/airalarm/all_access{ + pixel_y = 24 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/caravan/pirate) +"eG" = ( +/obj/item/stack/cable_coil/yellow{ + amount = 1 + }, +/turf/open/floor/plating/airless{ + icon_state = "platingdmg3" + }, +/area/ruin/unpowered) +"eI" = ( +/obj/structure/rack, +/obj/item/storage/toolbox/emergency, +/obj/item/weldingtool, +/turf/open/floor/plasteel/darkred/corner{ + dir = 4 + }, +/area/shuttle/caravan/pirate) +"eJ" = ( +/obj/machinery/computer/camera_advanced/shuttle_docker/caravan/pirate, +/turf/open/floor/plasteel/darkred/side{ + dir = 1 + }, +/area/shuttle/caravan/pirate) +"eK" = ( +/obj/structure/cable/yellow{ + icon_state = "0-2" + }, +/obj/machinery/power/apc{ + dir = 8; + name = "Pirate Cutter APC"; + pixel_x = -24; + req_access = null + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/airalarm/all_access{ + dir = 8; + pixel_x = 24 + }, +/turf/open/floor/plating, +/area/shuttle/caravan/pirate) +"eL" = ( +/obj/machinery/light/small{ dir = 8 }, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered) -"dg" = ( -/obj/structure/closet/crate, -/obj/item/stack/sheet/rglass{ - amount = 20 +/obj/structure/closet/crate/secure/loot, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 }, -/obj/item/stack/sheet/rglass{ - amount = 20 +/obj/structure/extinguisher_cabinet{ + pixel_x = -27 }, -/turf/open/floor/mineral/titanium/yellow/airless, -/area/ruin/unpowered) -"dh" = ( -/obj/structure/closet/crate{ - icon_state = "crateopen"; - opened = 1 +/turf/open/floor/plasteel/dark, +/area/shuttle/caravan/pirate) +"eM" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 }, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/shuttle/caravan/pirate) +"eO" = ( /obj/item/stack/sheet/mineral/gold{ amount = 25 }, /obj/item/stack/sheet/mineral/bananium{ amount = 5 }, -/turf/open/floor/mineral/titanium/yellow/airless, -/area/ruin/unpowered) -"di" = ( -/obj/structure/closet/crate{ - icon_state = "crateopen"; - opened = 1 - }, /obj/item/stack/sheet/mineral/silver{ amount = 25 }, /obj/item/stack/sheet/mineral/uranium{ amount = 10 }, -/turf/open/floor/mineral/titanium/yellow/airless, -/area/ruin/unpowered) -"dj" = ( -/obj/effect/mob_spawn/human/corpse/nanotrasensoldier, -/obj/effect/decal/cleanable/blood, -/turf/open/floor/mineral/titanium/yellow/airless, -/area/ruin/unpowered) -"dk" = ( -/obj/structure/table, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/mineral/titanium/blue/airless, -/area/ruin/unpowered) -"dl" = ( -/obj/structure/closet/crate/secure/plasma, -/obj/item/stack/sheet/mineral/plasma{ - amount = 25 - }, -/obj/item/tank/internals/plasma/full, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered) -"dm" = ( -/obj/structure/chair, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered) -"dn" = ( -/obj/structure/closet/crate, -/obj/item/stack/sheet/mineral/gold{ - amount = 25 - }, -/obj/item/stack/sheet/mineral/silver{ - amount = 25 - }, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered) -"do" = ( -/obj/structure/closet/crate, -/obj/item/stack/sheet/metal/fifty, -/obj/item/stack/sheet/metal/fifty, -/obj/item/stack/sheet/glass/fifty, -/obj/item/stack/sheet/glass/fifty, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/mineral/titanium/yellow/airless, -/area/ruin/unpowered) -"dp" = ( -/obj/structure/closet/crate, -/obj/item/stack/sheet/mineral/silver{ - amount = 25 - }, -/turf/open/floor/mineral/titanium/yellow/airless, -/area/ruin/unpowered) -"dq" = ( -/mob/living/simple_animal/hostile/syndicate/ranged/space{ - environment_smash = 0; - name = "Syndicate Salvage Worker" - }, -/turf/open/floor/mineral/titanium/blue/airless, -/area/ruin/unpowered) -"dr" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/clipboard, -/turf/open/floor/mineral/titanium/blue/airless, -/area/ruin/unpowered) -"ds" = ( -/obj/structure/shuttle/engine/heater, -/turf/closed/wall/mineral/plastitanium, -/area/ruin/powered) -"dt" = ( -/obj/structure/closet/crate{ - icon_state = "crateopen"; - opened = 1 - }, /obj/item/stack/sheet/mineral/diamond{ amount = 5 }, -/obj/item/stack/sheet/mineral/gold{ - amount = 25 +/obj/structure/closet/crate, +/obj/item/coin/silver, +/obj/item/coin/silver, +/obj/item/coin/silver, +/obj/item/coin/gold, +/obj/item/coin/gold, +/turf/open/floor/plasteel/darkblue/corner, +/area/shuttle/caravan/pirate) +"eP" = ( +/obj/structure/table, +/obj/machinery/light/small{ + brightness = 3; + dir = 8 }, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered) -"du" = ( -/obj/structure/chair{ +/obj/item/stack/spacecash/c200, +/turf/open/floor/plasteel/dark, +/area/shuttle/caravan/pirate) +"eQ" = ( +/obj/structure/chair/office/dark{ + dir = 8 + }, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/shuttle/caravan/pirate) +"eR" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/shuttle/caravan/pirate) +"eS" = ( +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/shuttle/caravan/pirate) +"eT" = ( +/obj/structure/chair/office/dark{ dir = 4 }, +/obj/machinery/turretid{ + icon_state = "control_kill"; + lethal = 1; + locked = 0; + pixel_y = -30; + req_access = null + }, +/mob/living/simple_animal/hostile/pirate/ranged{ + environment_smash = 0 + }, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/shuttle/caravan/pirate) +"eU" = ( +/obj/machinery/computer/shuttle/caravan/pirate{ + dir = 8 + }, +/turf/open/floor/plasteel/darkred/side{ + dir = 8 + }, +/area/shuttle/caravan/pirate) +"eV" = ( +/obj/machinery/power/smes{ + charge = 5e+006 + }, +/obj/structure/cable/yellow{ + icon_state = "0-4" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/turf/open/floor/plating, +/area/shuttle/caravan/pirate) +"eW" = ( +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/shuttle/caravan/pirate) +"eX" = ( +/obj/structure/table, +/obj/item/storage/box/lethalshot, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/shuttle/caravan/pirate) +"eY" = ( +/obj/structure/table, +/obj/item/grenade/smokebomb{ + pixel_x = -4 + }, +/obj/item/grenade/smokebomb{ + pixel_x = 2 + }, +/obj/machinery/airalarm/all_access{ + pixel_y = 24 + }, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/shuttle/caravan/pirate) +"eZ" = ( +/obj/structure/tank_dispenser/oxygen, +/obj/machinery/firealarm{ + dir = 2; + pixel_y = 24 + }, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/shuttle/caravan/pirate) +"fa" = ( +/obj/structure/table, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/machinery/door/window/southleft{ + name = "Weapon Storage" + }, +/obj/item/gun/ballistic/shotgun/automatic/combat, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/shuttle/caravan/pirate) +"fb" = ( +/obj/structure/table, +/obj/item/gun/energy/laser{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/gun/energy/laser, +/obj/machinery/door/window/southleft{ + base_state = "right"; + icon_state = "right"; + name = "Weapon Storage" + }, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/shuttle/caravan/pirate) +"fc" = ( +/obj/structure/bed, +/obj/item/bedsheet/brown, +/obj/machinery/airalarm/all_access{ + dir = 4; + pixel_x = -24 + }, +/turf/open/floor/plasteel/darkred/corner{ + dir = 8 + }, +/area/shuttle/caravan/pirate) +"fd" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/shuttle/caravan/pirate) +"fe" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/darkblue/side{ + dir = 4 + }, +/area/shuttle/caravan/pirate) +"ff" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/command{ + name = "Bridge" + }, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/shuttle/caravan/pirate) +"fg" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/caravan/pirate) +"fh" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/caravan/pirate) +"fi" = ( +/obj/structure/table/reinforced, +/obj/machinery/recharger, +/obj/item/melee/classic_baton, +/turf/open/floor/plasteel/darkred/corner, +/area/shuttle/caravan/pirate) +"fj" = ( +/obj/structure/table/reinforced, +/obj/machinery/button/door{ + id = "caravanpirate_bridge"; + name = "Bridge Blast Door Control"; + pixel_x = -16 + }, +/turf/open/floor/plasteel/darkred/side, +/area/shuttle/caravan/pirate) +"fk" = ( +/obj/machinery/power/terminal{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/structure/closet/crate, +/obj/item/stack/sheet/metal/twenty, +/obj/item/stack/sheet/glass{ + amount = 10 + }, +/obj/item/storage/toolbox/mechanical, +/obj/item/device/flashlight{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/stack/sheet/mineral/plasma{ + amount = 20 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plating, +/area/shuttle/caravan/pirate) +"fl" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/closet/crate/secure/weapon, +/obj/item/gun/ballistic/revolver/grenadelauncher/unrestricted, +/turf/open/floor/plasteel/red/side{ + dir = 8 + }, +/area/shuttle/caravan/pirate) +"fm" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plasteel/floorgrime, +/area/shuttle/caravan/pirate) +"fo" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel/floorgrime, +/area/shuttle/caravan/pirate) +"fp" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/security, +/turf/open/floor/plasteel/floorgrime, +/area/shuttle/caravan/pirate) +"fq" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/darkred/side{ + dir = 8 + }, +/area/shuttle/caravan/pirate) +"fr" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/shuttle/caravan/pirate) +"fs" = ( +/obj/structure/rack, +/obj/item/storage/bag/money/vault, +/mob/living/simple_animal/parrot{ + faction = list("pirate"); + name = "Pegwing" + }, +/turf/open/floor/plasteel/darkblue/corner{ + dir = 4 + }, +/area/shuttle/caravan/pirate) +"ft" = ( +/obj/structure/cable, +/obj/machinery/power/port_gen/pacman{ + anchored = 1 + }, +/obj/item/wrench, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/plating, +/area/shuttle/caravan/pirate) +"fu" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plating, +/area/shuttle/caravan/pirate) +"fv" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/red/side{ + dir = 10 + }, +/area/shuttle/caravan/pirate) +"fw" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/red/side, +/area/shuttle/caravan/pirate) +"fx" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel/red/side, +/area/shuttle/caravan/pirate) +"fy" = ( +/obj/machinery/button/door{ + id = "caravanpirate_bolt_starboard"; + name = "External Bolt Control"; + normaldoorcontrol = 1; + pixel_x = -4; + pixel_y = -25; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/red/side, +/area/shuttle/caravan/pirate) +"fz" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel/red/side, +/area/shuttle/caravan/pirate) +"fA" = ( +/obj/structure/closet{ + name = "pirate outfits" + }, +/obj/item/clothing/head/collectable/pirate, +/obj/item/clothing/suit/pirate, +/obj/item/clothing/under/pirate, +/obj/item/clothing/shoes/jackboots, +/obj/item/clothing/head/bandana, +/turf/open/floor/plasteel/darkred/corner{ + dir = 1 + }, +/area/shuttle/caravan/pirate) +"fB" = ( +/obj/machinery/light/small, +/obj/structure/bed, +/obj/item/bedsheet/brown, +/turf/open/floor/plasteel/dark, +/area/shuttle/caravan/pirate) +"fC" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stack/cable_coil/yellow, +/obj/item/stock_parts/cell/high, +/obj/effect/turf_decal/bot, +/turf/open/floor/plating, +/area/shuttle/caravan/pirate) +"fD" = ( +/obj/machinery/door/airlock/external{ + cyclelinkeddir = 2; + id_tag = "caravanpirate_bolt_starboard"; + locked = 1 + }, +/turf/open/floor/plating, +/area/shuttle/caravan/pirate) +"fF" = ( +/obj/machinery/door/airlock/external{ + cyclelinkeddir = 1; + id_tag = "caravanpirate_bolt_starboard"; + locked = 1 + }, +/turf/open/floor/plating, +/area/shuttle/caravan/pirate) +"fG" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/caravan/freighter1) +"fH" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/shuttle/caravan/freighter1) +"fI" = ( +/obj/effect/spawner/structure/window/shuttle, +/obj/machinery/door/poddoor{ + id = "caravantrade1_bridge" + }, +/turf/open/floor/plating, +/area/shuttle/caravan/freighter1) +"fJ" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/machinery/turretid{ + ailock = 1; + control_area = null; + desc = "A specially designed set of turret controls. Looks to be covered in protective casing to prevent AI interfacing."; + icon_state = "control_kill"; + lethal = 1; + name = "Shuttle turret control"; + pixel_x = 32; + pixel_y = 32; + req_access = 150 + }, +/obj/structure/cable/yellow{ + icon_state = "0-4" + }, /mob/living/simple_animal/hostile/syndicate{ environment_smash = 0; name = "Syndicate Salvage Pilot" }, /turf/open/floor/mineral/plastitanium, -/area/ruin/powered) -"dv" = ( -/obj/structure/shuttle/engine/propulsion/burst, +/area/shuttle/caravan/syndicate2) +"fK" = ( +/obj/structure/shuttle/engine/propulsion/burst/left{ + dir = 8 + }, /turf/open/floor/plating/airless, -/area/ruin/powered) -"dw" = ( -/obj/structure/chair{ +/area/shuttle/caravan/freighter1) +"fL" = ( +/obj/structure/shuttle/engine/heater{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter1) +"fN" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 1 }, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered) -"dx" = ( -/obj/structure/closet/crate, -/obj/item/stack/sheet/mineral/diamond{ - amount = 5 +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter1) +"fO" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 }, -/obj/item/stack/sheet/mineral/uranium{ +/obj/machinery/door/airlock/engineering{ + name = "Engine Room" + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter1) +"fP" = ( +/obj/machinery/firealarm{ + dir = 2; + pixel_y = 24 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel/airless, +/area/shuttle/caravan/freighter1) +"fQ" = ( +/obj/machinery/light/small, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/airless, +/area/shuttle/caravan/freighter1) +"fR" = ( +/obj/machinery/airalarm/all_access{ + pixel_y = 24 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel/airless, +/area/shuttle/caravan/freighter1) +"fS" = ( +/obj/machinery/door/airlock{ + name = "Crew Cabins" + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/airless/floorgrime, +/area/shuttle/caravan/freighter1) +"fT" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/yellow/corner{ + dir = 4; + initial_gas_mix = "TEMP=2.7" + }, +/area/shuttle/caravan/freighter1) +"fU" = ( +/obj/machinery/light/small, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/yellow/side{ + dir = 1; + initial_gas_mix = "TEMP=2.7" + }, +/area/shuttle/caravan/freighter1) +"fV" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/effect/decal/cleanable/blood, +/turf/open/floor/plasteel/yellow/side{ + dir = 1; + initial_gas_mix = "TEMP=2.7" + }, +/area/shuttle/caravan/freighter1) +"fW" = ( +/obj/structure/closet/secure_closet/freezer{ + locked = 0; + name = "fridge" + }, +/obj/item/reagent_containers/food/drinks/beer{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/reagent_containers/food/drinks/beer, +/obj/item/reagent_containers/food/drinks/beer{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/reagent_containers/glass/beaker/waterbottle{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/reagent_containers/glass/beaker/waterbottle, +/obj/item/reagent_containers/glass/beaker/waterbottle{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/reagent_containers/food/snacks/pizzaslice/margherita{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/reagent_containers/food/snacks/pizzaslice/margherita, +/obj/item/reagent_containers/food/snacks/chocolatebar, +/turf/open/floor/plasteel/yellow/side{ + dir = 5; + initial_gas_mix = "TEMP=2.7" + }, +/area/shuttle/caravan/freighter1) +"fX" = ( +/obj/structure/table, +/obj/machinery/microwave{ + pixel_y = 5 + }, +/turf/open/floor/plasteel/vault/airless, +/area/shuttle/caravan/freighter1) +"fY" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/sign/warning/vacuum{ + pixel_x = 32 + }, +/turf/open/floor/plating, +/area/shuttle/caravan/freighter1) +"fZ" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/caravan/freighter3) +"ga" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/shuttle/caravan/freighter3) +"gb" = ( +/obj/machinery/door/poddoor{ + id = "caravantrade3_cargo_port"; + name = "Cargo Blast Door" + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter3) +"gc" = ( +/obj/machinery/door/airlock/external{ + cyclelinkeddir = 8; + req_access_txt = "13" + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter3) +"gd" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/caravan/freighter3) +"ge" = ( +/obj/structure/shuttle/engine/propulsion/burst{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter1) +"gf" = ( +/obj/machinery/power/smes{ + charge = 0 + }, +/obj/structure/cable/yellow{ + icon_state = "0-4" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter1) +"gg" = ( +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter1) +"gj" = ( +/obj/machinery/airalarm/all_access{ + dir = 4; + pixel_x = -24 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/mob_spawn/human/corpse/cargo_tech, +/obj/effect/decal/cleanable/blood, +/turf/open/floor/plasteel/airless/floorgrime, +/area/shuttle/caravan/freighter1) +"gk" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/structure/fluff/broken_flooring{ + icon_state = "singular" + }, +/obj/effect/decal/cleanable/blood, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/airless, +/area/ruin/unpowered) +"gl" = ( +/obj/structure/chair/stool, +/turf/open/floor/plasteel/yellow/side{ + dir = 4; + initial_gas_mix = "TEMP=2.7" + }, +/area/shuttle/caravan/freighter1) +"gm" = ( +/obj/structure/table, +/obj/item/storage/box/donkpockets{ + pixel_x = 6; + pixel_y = 6 + }, +/obj/item/trash/plate{ + pixel_x = -5; + pixel_y = -3 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/vault/airless, +/area/shuttle/caravan/freighter1) +"gn" = ( +/obj/machinery/door/airlock/external{ + cyclelinkeddir = 1; + id_tag = "caravantrade1_bolt"; + locked = 1 + }, +/turf/open/floor/plating, +/area/shuttle/caravan/freighter1) +"go" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/rack, +/obj/item/storage/firstaid/regular, +/turf/open/floor/plasteel/darkblue/side{ + dir = 10; + initial_gas_mix = "TEMP=2.7" + }, +/area/shuttle/caravan/freighter1) +"gp" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table/reinforced, +/obj/item/paper_bin{ + pixel_x = 6; + pixel_y = 6 + }, +/obj/item/pen{ + pixel_x = 6; + pixel_y = 6 + }, +/obj/item/folder/yellow{ + pixel_x = -6 + }, +/turf/open/floor/plasteel/darkblue/side{ + dir = 6; + initial_gas_mix = "TEMP=2.7" + }, +/area/shuttle/caravan/freighter1) +"gq" = ( +/obj/structure/shuttle/engine/propulsion/burst/left{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter3) +"gs" = ( +/obj/effect/turf_decal/bot_white, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter3) +"gt" = ( +/obj/effect/turf_decal/bot_white, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter3) +"gv" = ( +/obj/effect/turf_decal/bot_white, +/obj/structure/closet/crate/secure/engineering, +/obj/item/storage/toolbox/mechanical, +/obj/item/storage/toolbox/mechanical, +/obj/item/storage/toolbox/electrical, +/obj/item/storage/toolbox/electrical, +/obj/item/clothing/gloves/color/yellow, +/obj/item/clothing/gloves/color/yellow, +/obj/item/device/multitool, +/obj/item/device/multitool, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter3) +"gw" = ( +/obj/effect/turf_decal/bot_white, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/machinery/button/door{ + id = "caravantrade3_cargo_port"; + name = "Cargo Blast Door Control"; + pixel_y = 24 + }, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter3) +"gy" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/sign/warning/vacuum{ + pixel_x = -32; + pixel_y = 32 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter3) +"gD" = ( +/obj/machinery/power/terminal{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/structure/closet/crate, +/obj/item/stack/sheet/metal/twenty, +/obj/item/stack/sheet/glass{ amount = 10 }, -/obj/item/stack/sheet/mineral/silver{ +/obj/item/stack/rods/ten, +/obj/item/storage/box/lights/bulbs, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter1) +"gJ" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel/airless, +/area/shuttle/caravan/freighter1) +"gN" = ( +/obj/effect/decal/cleanable/blood, +/mob/living/simple_animal/hostile/syndicate/melee/space/stormtrooper{ + environment_smash = 0; + name = "Syndicate Salvage Leader" + }, +/turf/open/floor/plasteel/darkblue/corner{ + dir = 4; + initial_gas_mix = "TEMP=2.7" + }, +/area/shuttle/caravan/freighter1) +"gO" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/computer/camera_advanced/shuttle_docker/caravan/trade1{ + dir = 8 + }, +/turf/open/floor/plasteel/darkblue/side{ + dir = 9; + initial_gas_mix = "TEMP=2.7" + }, +/area/shuttle/caravan/freighter1) +"gP" = ( +/obj/structure/shuttle/engine/propulsion/burst{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter3) +"gQ" = ( +/obj/structure/shuttle/engine/heater{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter3) +"gR" = ( +/obj/machinery/power/smes{ + charge = 0 + }, +/obj/structure/cable/yellow, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter3) +"gT" = ( +/mob/living/simple_animal/hostile/syndicate/melee/space{ + environment_smash = 0; + name = "Syndicate Salvage Worker" + }, +/turf/open/floor/plasteel/airless/floorgrime, +/area/shuttle/caravan/freighter3) +"gU" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/airless, +/area/shuttle/caravan/freighter3) +"gV" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/airless{ + icon_state = "floorscorched1" + }, +/area/shuttle/caravan/freighter3) +"gW" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/blue/side{ + dir = 4; + initial_gas_mix = "TEMP=2.7" + }, +/area/shuttle/caravan/freighter3) +"gY" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter3) +"ha" = ( +/obj/structure/table/reinforced, +/obj/item/folder/yellow, +/obj/item/pen{ + pixel_x = 6; + pixel_y = 6 + }, +/turf/open/floor/plasteel/darkblue/side{ + dir = 9; + initial_gas_mix = "TEMP=2.7" + }, +/area/shuttle/caravan/freighter3) +"hb" = ( +/obj/structure/cable, +/obj/machinery/power/port_gen/pacman{ + anchored = 1 + }, +/obj/item/wrench, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter1) +"hc" = ( +/obj/machinery/airalarm/all_access{ + dir = 8; + pixel_x = 24 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating/airless{ + icon_state = "platingdmg1" + }, +/area/shuttle/caravan/freighter1) +"hd" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel/airless/floorgrime, +/area/shuttle/caravan/freighter1) +"he" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/airless, +/area/shuttle/caravan/freighter1) +"hf" = ( +/obj/machinery/door/airlock{ + name = "Crew Quarters" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/airless/floorgrime, +/area/shuttle/caravan/freighter1) +"hg" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/machinery/airalarm/all_access{ + pixel_y = 24 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/airless, +/area/shuttle/caravan/freighter1) +"hh" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel/blue/side{ + dir = 4; + initial_gas_mix = "TEMP=2.7" + }, +/area/shuttle/caravan/freighter1) +"hi" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/door/airlock/command{ + name = "Bridge" + }, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter1) +"hj" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter1) +"hk" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mob_spawn/human/corpse/cargo_tech, +/obj/effect/decal/cleanable/blood, +/turf/open/floor/plasteel/darkblue/corner{ + initial_gas_mix = "TEMP=2.7" + }, +/area/shuttle/caravan/freighter1) +"hl" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/computer/shuttle/caravan/trade1{ + dir = 8 + }, +/turf/open/floor/plasteel/darkblue/side{ + dir = 10; + initial_gas_mix = "TEMP=2.7" + }, +/area/shuttle/caravan/freighter1) +"hm" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/caravan/freighter2) +"hn" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/shuttle/caravan/freighter2) +"ho" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/poddoor/preopen{ + id = "caravantrade2_cargo_port"; + name = "Cargo Blast Door" + }, +/turf/open/floor/plating/airless{ + icon_state = "platingdmg3" + }, +/area/shuttle/caravan/freighter2) +"hp" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/poddoor/preopen{ + id = "caravantrade2_cargo_port"; + name = "Cargo Blast Door" + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter2) +"hq" = ( +/obj/machinery/door/poddoor/preopen{ + id = "caravantrade2_cargo_port"; + name = "Cargo Blast Door" + }, +/turf/open/floor/plating/airless{ + icon_state = "platingdmg3" + }, +/area/shuttle/caravan/freighter2) +"hr" = ( +/obj/machinery/door/poddoor/preopen{ + id = "caravantrade2_cargo_port"; + name = "Cargo Blast Door" + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter2) +"hs" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/airlock/external{ + cyclelinkeddir = 8; + req_access_txt = "13" + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter2) +"ht" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/caravan/freighter2) +"hu" = ( +/obj/machinery/space_heater, +/obj/machinery/power/terminal{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter3) +"hv" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/airless, +/area/shuttle/caravan/freighter3) +"hw" = ( +/obj/effect/turf_decal/box/white/corners{ + dir = 4 + }, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter3) +"hx" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/closet/crate/secure/plasma, +/obj/item/tank/internals/plasma/full, +/obj/item/stack/sheet/mineral/plasma{ amount = 25 }, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered) -"dy" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter3) +"hy" = ( +/obj/effect/turf_decal/box/white/corners{ + dir = 1 + }, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter3) +"hz" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/open/floor/plasteel/blue/corner{ + dir = 4; + initial_gas_mix = "TEMP=2.7" + }, +/area/shuttle/caravan/freighter3) +"hB" = ( /mob/living/simple_animal/hostile/syndicate/ranged/space/stormtrooper{ environment_smash = 0; name = "Syndicate Salvage Leader" }, -/turf/open/floor/plating/asteroid/airless, -/area/ruin/unpowered/no_grav) -"dz" = ( +/turf/open/floor/plasteel/airless{ + icon_state = "damaged2" + }, +/area/shuttle/caravan/freighter3) +"hD" = ( +/obj/structure/shuttle/engine/propulsion/burst/right{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter1) +"hE" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/atmospherics/components/unary/tank/air{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter1) +"hF" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/machinery/meter, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter1) +"hG" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel/airless/floorgrime, +/area/shuttle/caravan/freighter1) +"hH" = ( +/obj/structure/rack, +/obj/item/storage/belt/utility, +/obj/structure/extinguisher_cabinet{ + pixel_y = 29 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/airless/floorgrime, +/area/shuttle/caravan/freighter1) +"hI" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/table, +/obj/item/stack/packageWrap, +/obj/item/crowbar, +/obj/item/device/flashlight{ + pixel_x = 1; + pixel_y = 5 + }, +/obj/machinery/airalarm/all_access{ + pixel_y = 24 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/airless, +/area/shuttle/caravan/freighter1) +"hJ" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/machinery/firealarm{ + dir = 2; + pixel_y = 24 + }, +/obj/item/stack/cable_coil/yellow{ + pixel_x = 12; + pixel_y = 4 + }, +/turf/open/floor/plasteel/airless, +/area/shuttle/caravan/freighter1) +"hK" = ( +/obj/structure/table, +/obj/item/storage/toolbox/mechanical, +/obj/item/device/multitool, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/airless, +/area/shuttle/caravan/freighter1) +"hM" = ( +/obj/machinery/suit_storage_unit/standard_unit, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/airless, +/area/shuttle/caravan/freighter1) +"hN" = ( +/obj/structure/rack, +/obj/item/tank/internals/oxygen, +/obj/item/device/radio, +/obj/item/clothing/mask/gas, +/turf/open/floor/plasteel/blue/corner{ + dir = 4; + initial_gas_mix = "TEMP=2.7" + }, +/area/shuttle/caravan/freighter1) +"hO" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/rack, +/obj/item/storage/toolbox/emergency, +/obj/item/wrench, +/turf/open/floor/plasteel/darkblue/side{ + dir = 9; + initial_gas_mix = "TEMP=2.7" + }, +/area/shuttle/caravan/freighter1) +"hP" = ( +/obj/structure/table/reinforced, +/obj/machinery/button/door{ + id = "caravantrade1_bridge"; + name = "Ship Blast Door Control" + }, +/turf/open/floor/plasteel/darkblue/side{ + dir = 5; + initial_gas_mix = "TEMP=2.7" + }, +/area/shuttle/caravan/freighter1) +"hQ" = ( +/obj/structure/shuttle/engine/propulsion/burst/left{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter2) +"hS" = ( +/obj/effect/turf_decal/bot_white, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/airless{ + icon_state = "damaged5" + }, +/area/shuttle/caravan/freighter2) +"hT" = ( +/obj/effect/turf_decal/bot_white, +/obj/structure/closet/crate/secure/gear, +/obj/item/ammo_casing/shotgun/ion, +/obj/item/ammo_casing/shotgun/pulseslug, +/obj/item/ammo_casing/shotgun/dragonsbreath, +/obj/item/ammo_casing/shotgun/techshell, +/obj/item/ammo_casing/shotgun/techshell, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter2) +"hU" = ( +/obj/effect/turf_decal/bot_white, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/airless{ + icon_state = "damaged2" + }, +/area/shuttle/caravan/freighter2) +"hV" = ( +/obj/effect/turf_decal/bot_white, +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/crate/secure/gear, +/obj/item/storage/box/lethalshot, +/obj/item/ammo_casing/shotgun/frag12, +/obj/item/ammo_casing/shotgun/frag12, +/obj/item/ammo_casing/shotgun/frag12, +/obj/item/ammo_casing/shotgun/frag12, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter2) +"hW" = ( +/obj/effect/turf_decal/bot_white, +/obj/structure/closet/crate/secure/gear, +/obj/machinery/button/door{ + id = "caravantrade2_cargo_port"; + name = "Cargo Blast Door Control"; + pixel_y = 24 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/item/ammo_box/c10mm, +/obj/item/ammo_box/magazine/m10mm{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/ammo_box/magazine/m10mm, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter2) +"hX" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/sign/warning/vacuum{ + pixel_x = -32; + pixel_y = 32 + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter2) +"hY" = ( +/obj/structure/rack, +/obj/item/weldingtool, +/obj/item/crowbar, +/obj/item/wirecutters, +/obj/item/wrench, +/obj/item/screwdriver{ + pixel_y = 8 + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter2) +"hZ" = ( +/obj/machinery/power/port_gen/pacman{ + anchored = 1 + }, +/obj/item/wrench, +/obj/structure/cable, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter3) +"ia" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/airless{ + icon_state = "damaged2" + }, +/area/shuttle/caravan/freighter3) +"ib" = ( +/obj/effect/turf_decal/box/white/corners{ + dir = 8 + }, +/obj/structure/closet/crate/secure/plasma, +/obj/item/tank/internals/plasma/full, +/obj/item/stack/sheet/mineral/plasma{ + amount = 25 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter3) +"ic" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/airless{ + icon_state = "damaged5" + }, +/area/shuttle/caravan/freighter3) +"id" = ( +/obj/effect/turf_decal/box/white/corners, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter3) +"ie" = ( +/obj/machinery/airalarm/all_access{ + dir = 8; + pixel_x = 24 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/airless/floorgrime, +/area/shuttle/caravan/freighter3) +"if" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -26 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter3) +"ig" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/effect/mob_spawn/human/corpse/cargo_tech, +/obj/effect/decal/cleanable/blood, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter3) +"ih" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/structure/frame/computer{ + dir = 8 + }, +/obj/item/shard, +/turf/open/floor/plasteel/airless{ + icon_state = "damaged3" + }, +/area/shuttle/caravan/freighter3) +"ii" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel/airless/floorgrime, +/area/shuttle/caravan/freighter1) +"ij" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/airless{ + icon_state = "floorscorched1" + }, +/area/shuttle/caravan/freighter1) +"ik" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, /mob/living/simple_animal/hostile/syndicate/ranged/space{ environment_smash = 0; name = "Syndicate Salvage Worker" }, -/turf/open/floor/plating/asteroid/airless, -/area/ruin/unpowered/no_grav) -"dA" = ( -/obj/machinery/computer{ +/turf/open/floor/plasteel/airless, +/area/shuttle/caravan/freighter1) +"il" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/airless/floorgrime, +/area/shuttle/caravan/freighter1) +"im" = ( +/obj/item/stack/sheet/mineral/titanium, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/airless{ + icon_state = "damaged1" + }, +/area/shuttle/caravan/freighter1) +"in" = ( +/obj/effect/turf_decal/bot_white, +/obj/structure/closet/emcloset, +/turf/open/floor/plasteel/vault/airless, +/area/shuttle/caravan/freighter1) +"io" = ( +/obj/structure/shuttle/engine/propulsion/burst{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter2) +"ip" = ( +/obj/structure/shuttle/engine/heater{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter2) +"iq" = ( +/obj/machinery/power/smes{ + charge = 0 + }, +/obj/structure/cable/yellow, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter2) +"is" = ( +/turf/open/floor/plasteel/airless{ + icon_state = "damaged2" + }, +/area/shuttle/caravan/freighter2) +"it" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel/airless, +/area/shuttle/caravan/freighter2) +"iu" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/airless{ + icon_state = "damaged3" + }, +/area/shuttle/caravan/freighter2) +"iv" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/blue/side{ + dir = 4; + initial_gas_mix = "TEMP=2.7" + }, +/area/shuttle/caravan/freighter2) +"ix" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel/airless{ + icon_state = "floorscorched1" + }, +/area/shuttle/caravan/freighter2) +"iy" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/fluff/broken_flooring{ + icon_state = "pile" + }, +/turf/open/floor/plating/airless{ + icon_state = "platingdmg1" + }, +/area/shuttle/caravan/freighter2) +"iz" = ( +/obj/item/shard, +/turf/open/floor/plating/airless{ + icon_state = "platingdmg3" + }, +/area/shuttle/caravan/freighter3) +"iA" = ( +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plating/airless{ + icon_state = "platingdmg1" + }, +/area/shuttle/caravan/freighter3) +"iB" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter3) +"iC" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/airless{ + icon_state = "floorscorched1" + }, +/area/shuttle/caravan/freighter3) +"iD" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/mob/living/simple_animal/hostile/syndicate/melee/space{ + environment_smash = 0; + name = "Syndicate Salvage Worker" + }, +/turf/open/floor/plasteel/airless/floorgrime, +/area/shuttle/caravan/freighter3) +"iF" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter3) +"iH" = ( +/obj/structure/table/reinforced, +/obj/machinery/cell_charger, +/turf/open/floor/plasteel/darkblue/side{ + dir = 10; + initial_gas_mix = "TEMP=2.7" + }, +/area/shuttle/caravan/freighter3) +"iI" = ( +/obj/effect/turf_decal/box/white/corners{ + dir = 4 + }, +/obj/structure/closet/crate, +/obj/item/stack/sheet/mineral/uranium{ + amount = 10 + }, +/obj/item/stack/sheet/mineral/uranium{ + amount = 10 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter1) +"iJ" = ( +/obj/effect/turf_decal/box/white/corners{ dir = 1 }, -/turf/open/floor/plasteel, -/area/ruin/powered) -"dC" = ( -/obj/machinery/computer{ +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/crate, +/obj/item/stack/sheet/mineral/gold{ + amount = 25 + }, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter1) +"iL" = ( +/obj/effect/turf_decal/box/white/corners{ + dir = 4 + }, +/obj/structure/closet/crate, +/obj/item/stack/sheet/rglass{ + amount = 20 + }, +/obj/item/stack/sheet/rglass{ + amount = 20 + }, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter1) +"iM" = ( +/obj/effect/turf_decal/box/white/corners{ + dir = 1 + }, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter1) +"iN" = ( +/obj/item/stack/sheet/metal/fifty, +/turf/open/floor/plasteel/airless{ + icon_state = "floorscorched2" + }, +/area/shuttle/caravan/freighter1) +"iO" = ( +/obj/effect/turf_decal/box/white/corners{ + dir = 4 + }, +/turf/open/floor/plasteel/airless{ + icon_state = "damaged4" + }, +/area/shuttle/caravan/freighter1) +"iP" = ( +/obj/effect/turf_decal/box/white/corners{ + dir = 1 + }, +/turf/open/floor/plasteel/airless{ + icon_state = "damaged5" + }, +/area/shuttle/caravan/freighter1) +"iR" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter1) +"iS" = ( +/obj/structure/girder, +/turf/open/floor/plating/airless{ + icon_state = "platingdmg1" + }, +/area/shuttle/caravan/freighter1) +"iT" = ( +/obj/machinery/space_heater, +/obj/machinery/power/terminal{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter2) +"iU" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/airless, +/area/shuttle/caravan/freighter2) +"iV" = ( +/obj/effect/turf_decal/box/white/corners{ + dir = 4 + }, +/obj/structure/closet/crate/secure/weapon, +/obj/item/gun/ballistic/shotgun/riot{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/gun/ballistic/shotgun/riot, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter2) +"iW" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/crate/secure/weapon, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/item/gun/syringe/rapidsyringe, +/obj/item/gun/syringe/syndicate{ + pixel_x = 3; + pixel_y = -3 + }, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter2) +"iX" = ( +/obj/effect/turf_decal/box/white/corners{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter2) +"iY" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/open/floor/plasteel/blue/corner{ + dir = 4; + initial_gas_mix = "TEMP=2.7" + }, +/area/shuttle/caravan/freighter2) +"ja" = ( +/obj/effect/turf_decal/bot_white, +/obj/structure/closet/crate/secure/engineering, +/obj/item/organ/cyberimp/arm/toolset, +/obj/item/organ/cyberimp/eyes/hud/medical, +/obj/item/organ/cyberimp/brain/anti_stun, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter3) +"jb" = ( +/obj/effect/turf_decal/bot_white, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/airless{ + icon_state = "damaged3" + }, +/area/shuttle/caravan/freighter3) +"jc" = ( +/obj/effect/turf_decal/bot_white, +/obj/structure/closet/crate/secure/plasma, +/obj/item/mecha_parts/mecha_equipment/weapon/energy/plasma, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter3) +"jd" = ( +/obj/effect/turf_decal/bot_white, +/obj/machinery/light/small, +/obj/machinery/button/door{ + id = "caravantrade3_cargo_starboard"; + name = "Cargo Blast Door Control"; + pixel_y = -24 + }, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter3) +"je" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/sign/warning/vacuum{ + pixel_x = -32; + pixel_y = -32 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter3) +"jg" = ( +/obj/structure/closet/crate, +/obj/item/stack/sheet/mineral/silver{ + amount = 25 + }, +/obj/item/stack/sheet/mineral/silver{ + amount = 25 + }, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter1) +"jh" = ( +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter1) +"ji" = ( +/mob/living/simple_animal/hostile/syndicate/melee/space{ + environment_smash = 0; + name = "Syndicate Salvage Worker" + }, +/turf/open/floor/plasteel/vault/airless, +/area/shuttle/caravan/freighter1) +"jj" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter1) +"jk" = ( +/obj/structure/closet/crate, +/obj/item/stack/sheet/mineral/titanium{ + amount = 20 + }, +/obj/item/stack/sheet/mineral/titanium{ + amount = 20 + }, +/turf/open/floor/plasteel/vault/airless, +/area/shuttle/caravan/freighter1) +"jl" = ( +/obj/structure/closet/crate{ + icon_state = "crateopen"; + opened = 1 + }, +/obj/item/stack/sheet/metal/fifty, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter1) +"jm" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/airless{ + icon_state = "damaged2" + }, +/area/shuttle/caravan/freighter1) +"jp" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/power/port_gen/pacman{ + anchored = 1 + }, +/obj/item/wrench, +/obj/structure/cable, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter2) +"jq" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/airless/floorgrime, +/area/shuttle/caravan/freighter2) +"jr" = ( +/obj/effect/turf_decal/box/white/corners{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter2) +"js" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter2) +"jt" = ( +/obj/effect/turf_decal/box/white/corners, +/obj/structure/closet/crate/secure/weapon, +/obj/item/gun/energy/e_gun/mini{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/gun/energy/e_gun/mini, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter2) +"ju" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/airalarm/all_access{ + dir = 8; + pixel_x = 24 + }, +/turf/open/floor/plasteel/airless, +/area/shuttle/caravan/freighter2) +"jv" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -26 + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter2) +"jy" = ( +/obj/machinery/door/poddoor{ + id = "caravantrade3_cargo_starboard"; + name = "Cargo Blast Door" + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter3) +"jz" = ( +/obj/effect/turf_decal/box/white/corners{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter1) +"jA" = ( +/obj/effect/turf_decal/bot_white, +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/crate/secure/engineering, +/obj/item/wrench/caravan, +/obj/item/wirecutters/caravan, +/obj/item/crowbar/red/caravan, +/obj/item/screwdriver/caravan, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter3) +"jB" = ( +/turf/open/floor/plasteel/vault/airless, +/area/shuttle/caravan/freighter1) +"jC" = ( +/obj/effect/turf_decal/box/white/corners{ + dir = 8 + }, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter1) +"jD" = ( +/obj/effect/turf_decal/box/white/corners, +/obj/structure/closet/crate, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter1) +"jE" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/airless{ + icon_state = "damaged3" + }, +/area/shuttle/caravan/freighter1) +"jF" = ( +/obj/effect/turf_decal/box/white/corners{ + dir = 8 + }, +/obj/structure/closet/crate, +/obj/item/stack/sheet/plasteel/twenty, +/obj/item/stack/sheet/plasteel/twenty, +/turf/open/floor/plasteel/airless{ + icon_state = "damaged5" + }, +/area/shuttle/caravan/freighter1) +"jH" = ( +/obj/machinery/atmospherics/components/unary/tank/air{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter2) +"jI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel/airless, +/area/shuttle/caravan/freighter2) +"jJ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/airless/floorgrime, +/area/shuttle/caravan/freighter2) +"jK" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel/airless{ + icon_state = "floorscorched1" + }, +/area/shuttle/caravan/freighter2) +"jL" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/mob/living/simple_animal/hostile/pirate/space/ranged{ + environment_smash = 0 + }, +/turf/open/floor/plasteel/airless/floorgrime, +/area/shuttle/caravan/freighter2) +"jN" = ( +/turf/open/floor/plasteel/airless{ + icon_state = "floorscorched1" + }, +/area/shuttle/caravan/freighter2) +"jO" = ( +/obj/effect/decal/cleanable/dirt, +/mob/living/simple_animal/hostile/pirate/space/ranged{ + environment_smash = 0 + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter2) +"jP" = ( +/obj/structure/table/reinforced, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/item/paper_bin{ + pixel_x = 6; + pixel_y = 6 + }, +/obj/item/pen{ + pixel_x = 6; + pixel_y = 6 + }, +/obj/item/folder/yellow{ + pixel_x = -6 + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter2) +"jQ" = ( +/obj/machinery/door/poddoor{ + id = "caravantrade1_cargo"; + name = "Cargo Blast Door" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter1) +"jR" = ( +/obj/machinery/door/poddoor{ + id = "caravantrade1_cargo"; + name = "Cargo Blast Door" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/airless{ + icon_state = "platingdmg3" + }, +/area/shuttle/caravan/freighter1) +"jS" = ( +/obj/machinery/door/poddoor{ + id = "caravantrade1_cargo"; + name = "Cargo Blast Door" + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter1) +"jT" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/airless{ + icon_state = "platingdmg3" + }, +/area/shuttle/caravan/freighter1) +"jV" = ( +/obj/structure/shuttle/engine/propulsion/burst/right{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter2) +"jW" = ( +/obj/effect/turf_decal/bot_white/left, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/button/door{ + id = "caravantrade2_cargo_starboard"; + name = "Cargo Blast Door Control"; + pixel_y = -24 + }, +/obj/machinery/light/small, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter2) +"jX" = ( +/obj/effect/turf_decal/bot_white, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter2) +"jY" = ( +/obj/effect/turf_decal/bot_white, +/obj/structure/closet/crate/secure/gear, +/obj/item/ammo_box/a40mm, +/obj/item/ammo_box/a40mm, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter2) +"jZ" = ( +/obj/effect/turf_decal/bot_white, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter2) +"ka" = ( +/obj/effect/turf_decal/bot_white, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/button/door{ + id = "caravantrade2_cargo_starboard"; + name = "Cargo Blast Door Control"; + pixel_y = -24 + }, +/obj/machinery/light/small, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter2) +"kb" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/sign/warning/vacuum{ + pixel_x = -32; + pixel_y = -32 + }, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter2) +"kc" = ( +/obj/structure/rack, +/obj/effect/decal/cleanable/dirt, +/obj/item/tank/internals/oxygen, +/obj/item/device/radio, +/obj/item/clothing/mask/gas, +/turf/open/floor/plasteel/airless{ + icon_state = "damaged5" + }, +/area/shuttle/caravan/freighter2) +"kd" = ( +/obj/structure/grille/broken, +/turf/open/floor/plating/airless{ + icon_state = "platingdmg2" + }, +/area/shuttle/caravan/freighter2) +"ke" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/poddoor{ + id = "caravantrade2_cargo_starboard"; + name = "Cargo Blast Door" + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter2) +"kf" = ( +/obj/machinery/door/poddoor{ + id = "caravantrade2_cargo_starboard"; + name = "Cargo Blast Door" + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter2) +"kg" = ( +/obj/machinery/porta_turret/syndicate/energy{ + dir = 1; + icon_state = "standard_lethal"; + mode = 1 + }, +/turf/closed/wall/mineral/plastitanium, +/area/shuttle/caravan/syndicate2) +"kh" = ( +/turf/closed/wall/mineral/plastitanium, +/area/shuttle/caravan/syndicate1) +"ki" = ( +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/shuttle/caravan/syndicate1) +"kj" = ( +/obj/machinery/porta_turret/syndicate/energy{ + dir = 4; + icon_state = "standard_lethal"; + mode = 1 + }, +/turf/closed/wall/mineral/plastitanium, +/area/shuttle/caravan/syndicate1) +"kk" = ( +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/shuttle/caravan/syndicate2) +"kl" = ( +/turf/closed/wall/mineral/plastitanium, +/area/shuttle/caravan/syndicate2) +"km" = ( +/obj/machinery/camera/xray{ + c_tag = "External View"; + dir = 1; + network = list("caravansyndicate2"); + pixel_y = 32 + }, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/shuttle/caravan/syndicate2) +"kn" = ( +/obj/structure/shuttle/engine/propulsion/burst{ + dir = 8 + }, +/turf/closed/wall/mineral/plastitanium, +/area/shuttle/caravan/syndicate1) +"ko" = ( +/turf/closed/wall/mineral/plastitanium, +/area/shuttle/caravan/syndicate3) +"kp" = ( +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/shuttle/caravan/syndicate3) +"kq" = ( +/obj/machinery/porta_turret/syndicate/energy{ + dir = 1; + icon_state = "standard_lethal"; + mode = 1 + }, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/shuttle/caravan/syndicate3) +"kr" = ( +/obj/machinery/door/airlock/hatch{ + id_tag = "caravansyndicate3_bolt_port"; + name = "External Airlock"; + normalspeed = 0; + req_access_txt = "150" + }, +/obj/docking_port/stationary{ + dir = 2; + dwidth = 6; + height = 7; + id = "caravansyndicate3_ambush"; + name = "Trade Route"; + width = 15 + }, +/obj/docking_port/mobile{ + dir = 2; + dwidth = 6; + height = 7; + id = "caravansyndicate3"; + name = "Syndicate Drop Ship"; + port_direction = 8; + preferred_direction = 4; + width = 15 + }, +/turf/open/floor/plating, +/area/shuttle/caravan/syndicate3) +"ks" = ( +/obj/structure/grille, +/obj/structure/window/plastitanium, +/obj/machinery/door/poddoor{ + id = "caravansyndicate3_bridge" + }, +/turf/open/floor/plating, +/area/shuttle/caravan/syndicate3) +"kt" = ( +/obj/machinery/computer/shuttle/caravan/syndicate2, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/caravan/syndicate2) +"ku" = ( +/obj/structure/shuttle/engine/propulsion/burst/left{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/syndicate3) +"kv" = ( +/obj/structure/shuttle/engine/heater{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/syndicate3) +"kw" = ( +/obj/structure/chair, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "0-2" + }, +/obj/machinery/power/apc{ + dir = 8; + name = "Syndicate Drop Ship APC"; + pixel_x = -24; + req_access = 150 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/dark, +/area/shuttle/caravan/syndicate3) +"kx" = ( +/obj/structure/chair, +/obj/machinery/airalarm{ + pixel_y = 24; + req_access = 150 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/dark, +/area/shuttle/caravan/syndicate3) +"ky" = ( +/obj/structure/chair, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/dark, +/area/shuttle/caravan/syndicate3) +"kz" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/closet/syndicate/personal{ + anchored = 1 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/caravan/syndicate3) +"kB" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/closet/syndicate{ + anchored = 1 + }, +/obj/structure/sign/warning/vacuum{ + pixel_y = 32 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/caravan/syndicate3) +"kC" = ( +/obj/structure/table/reinforced, +/obj/machinery/recharger, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plasteel/darkred/side{ + dir = 10 + }, +/area/shuttle/caravan/syndicate3) +"kD" = ( +/obj/structure/table/reinforced, +/obj/machinery/button/door{ + id = "caravansyndicate3_bridge"; + name = "Bridge Blast Door Control"; + pixel_x = -16; + pixel_y = 5; + req_access_txt = "150" + }, +/obj/machinery/button/door{ + id = "caravansyndicate3_bolt_bridge"; + name = "Bridge Bolt Control"; + normaldoorcontrol = 1; + pixel_x = -16; + pixel_y = -5; + req_access_txt = "150"; + specialfunctions = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/darkred/side{ + dir = 6 + }, +/area/shuttle/caravan/syndicate3) +"kE" = ( +/obj/structure/shuttle/engine/propulsion/burst, +/turf/closed/wall/mineral/plastitanium, +/area/shuttle/caravan/syndicate2) +"kF" = ( +/obj/machinery/button/door{ + id = "caravansyndicate2_bolt"; + name = "External Bolt Control"; + normaldoorcontrol = 1; + pixel_y = -25; + req_access_txt = "150"; + specialfunctions = 4 + }, +/obj/machinery/computer/camera_advanced/shuttle_docker/caravan/syndicate2{ + dir = 4 + }, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/caravan/syndicate2) +"kG" = ( +/obj/machinery/door/airlock/hatch{ + id_tag = "caravansyndicate1_bolt"; + locked = 1; + name = "External Airlock"; + normalspeed = 0; + req_access_txt = "150" + }, +/obj/effect/decal/cleanable/dirt, +/obj/docking_port/stationary{ + dir = 4; + dwidth = 4; + height = 5; + id = "caravansyndicate1_ambush"; + name = "Trade Route"; + width = 9 + }, +/obj/docking_port/mobile{ + callTime = 50; + dir = 4; + dwidth = 4; + height = 5; + id = "caravansyndicate1"; + ignitionTime = 25; + name = "Syndicate Fighter"; + port_direction = 2; + preferred_direction = 4; + width = 9 + }, +/turf/open/floor/plating, +/area/shuttle/caravan/syndicate1) +"kH" = ( +/obj/machinery/computer/security{ + dir = 8; + network = list("caravansyndicate2") + }, +/obj/machinery/power/apc/highcap/fifteen_k{ + dir = 2; + name = "Syndicate Fighter APC"; + pixel_y = -24; + req_access = 150 + }, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/caravan/syndicate2) +"kI" = ( +/obj/machinery/button/door{ + id = "caravansyndicate1_bolt"; + name = "External Bolt Control"; + normaldoorcontrol = 1; + pixel_x = -25; + req_access_txt = "150"; + specialfunctions = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/computer/camera_advanced/shuttle_docker/caravan/syndicate1, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/caravan/syndicate1) +"kJ" = ( +/obj/structure/shuttle/engine/propulsion/burst{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/syndicate3) +"kL" = ( +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/darkred/side{ + dir = 1 + }, +/area/shuttle/caravan/syndicate3) +"kM" = ( +/turf/open/floor/plasteel/darkred/side{ + dir = 1 + }, +/area/shuttle/caravan/syndicate3) +"kN" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/syndicate{ + anchored = 1 + }, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/caravan/syndicate3) +"kO" = ( +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -24; + req_access = 150 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/shuttle/caravan/syndicate3) +"kP" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/obj/structure/closet/syndicate{ + anchored = 1 + }, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/caravan/syndicate3) +"kQ" = ( +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -24; + req_access = 150 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/caravan/syndicate3) +"kR" = ( +/obj/structure/chair/office/dark{ + dir = 4 + }, +/obj/machinery/turretid{ + ailock = 1; + control_area = null; + desc = "A specially designed set of turret controls. Looks to be covered in protective casing to prevent AI interfacing."; + icon_state = "control_kill"; + lethal = 1; + name = "Shuttle turret control"; + pixel_y = 34; + req_access = 150 + }, +/turf/open/floor/plasteel/darkred/corner{ + dir = 4 + }, +/area/shuttle/caravan/syndicate3) +"kS" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/computer/camera_advanced/shuttle_docker/caravan/syndicate3{ + dir = 8 + }, +/turf/open/floor/plasteel/darkred/side{ + dir = 10 + }, +/area/shuttle/caravan/syndicate3) +"kT" = ( +/obj/machinery/door/airlock/hatch{ + id_tag = "caravansyndicate2_bolt"; + locked = 1; + name = "External Airlock"; + normalspeed = 0; + req_access_txt = "150" + }, +/obj/docking_port/stationary{ + dir = 1; + dwidth = 4; + height = 5; + id = "caravansyndicate2_ambush"; + name = "Trade Route"; + width = 9 + }, +/obj/docking_port/mobile{ + callTime = 50; + dir = 1; + dwidth = 4; + height = 5; + id = "caravansyndicate2"; + ignitionTime = 25; + name = "Syndicate Fighter"; + port_direction = 2; + preferred_direction = 1; + width = 9 + }, +/turf/open/floor/plating, +/area/shuttle/caravan/syndicate2) +"kU" = ( +/obj/machinery/door/airlock/external{ + cyclelinkeddir = 2; + id_tag = "caravantrade1_bolt"; + locked = 1 + }, +/obj/docking_port/stationary{ + dir = 2; + dwidth = 11; + height = 11; + id = "caravantrade1_ambush"; + name = "Trade Route"; + width = 27 + }, +/obj/docking_port/mobile{ + callTime = 250; + dir = 2; + dwidth = 11; + height = 11; + id = "caravantrade1"; + movement_force = list("KNOCKDOWN" = 0, "THROW" = 0); + name = "Small Freighter"; + port_direction = 8; + preferred_direction = 4; + width = 27 + }, +/turf/open/floor/plating, +/area/shuttle/caravan/freighter1) +"kV" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/machinery/turretid{ + ailock = 1; + control_area = null; + desc = "A specially designed set of turret controls. Looks to be covered in protective casing to prevent AI interfacing."; + icon_state = "control_kill"; + lethal = 1; + name = "Shuttle turret control"; + pixel_x = 32; + pixel_y = -28; + req_access = 150 + }, +/obj/structure/cable/yellow{ + icon_state = "0-2" + }, +/mob/living/simple_animal/hostile/syndicate{ + environment_smash = 0; + name = "Syndicate Salvage Pilot" + }, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/caravan/syndicate1) +"kW" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/computer/shuttle/caravan/syndicate1{ dir = 8 }, /turf/open/floor/mineral/plastitanium, -/area/ruin/powered) +/area/shuttle/caravan/syndicate1) +"kX" = ( +/obj/machinery/camera/xray{ + c_tag = "External View"; + dir = 4; + network = list("caravansyndicate1"); + pixel_x = 32 + }, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/shuttle/caravan/syndicate1) +"kZ" = ( +/turf/open/floor/plasteel/dark, +/area/shuttle/caravan/syndicate3) +"la" = ( +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/shuttle/caravan/syndicate3) +"lb" = ( +/obj/machinery/door/airlock/hatch{ + name = "Ready Room"; + req_access_txt = "150" + }, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/shuttle/caravan/syndicate3) +"lc" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/shuttle/caravan/syndicate3) +"ld" = ( +/obj/machinery/door/airlock/hatch{ + id_tag = "caravansyndicate3_bolt_bridge"; + locked = 1; + name = "Bridge"; + req_access_txt = "150" + }, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/shuttle/caravan/syndicate3) +"le" = ( +/obj/structure/chair/office/dark{ + dir = 4 + }, +/mob/living/simple_animal/hostile/syndicate{ + environment_smash = 0; + name = "Syndicate Salvage Pilot" + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/caravan/syndicate3) +"lf" = ( +/obj/machinery/computer/shuttle/caravan/syndicate3{ + dir = 8 + }, +/turf/open/floor/plasteel/darkred/side{ + dir = 8 + }, +/area/shuttle/caravan/syndicate3) +"lg" = ( +/obj/machinery/power/apc/highcap/fifteen_k{ + dir = 8; + name = "Syndicate Fighter APC"; + pixel_x = -24; + req_access = 150 + }, +/obj/machinery/computer/security{ + dir = 1; + network = list("caravansyndicate1") + }, +/obj/structure/cable/yellow, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/caravan/syndicate1) +"li" = ( +/turf/open/floor/plasteel/darkred/side, +/area/shuttle/caravan/syndicate3) +"lj" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/darkred/side, +/area/shuttle/caravan/syndicate3) +"lk" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/syndicate{ + anchored = 1 + }, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/caravan/syndicate3) +"ll" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/caravan/syndicate3) +"lm" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/shuttle/caravan/syndicate3) +"ln" = ( +/obj/structure/chair/office/dark{ + dir = 4 + }, +/turf/open/floor/plasteel/darkred/corner, +/area/shuttle/caravan/syndicate3) +"lo" = ( +/obj/machinery/computer/crew{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/darkred/side{ + dir = 9 + }, +/area/shuttle/caravan/syndicate3) +"lp" = ( +/obj/structure/shuttle/engine/propulsion/burst/right{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/syndicate3) +"lq" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/dark, +/area/shuttle/caravan/syndicate3) +"lr" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -26 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/dark, +/area/shuttle/caravan/syndicate3) +"ls" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/dark, +/area/shuttle/caravan/syndicate3) +"lt" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/syndicate/personal{ + anchored = 1 + }, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/caravan/syndicate3) +"lv" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/sign/warning/vacuum{ + pixel_y = -32 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/syndicate{ + anchored = 1 + }, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/caravan/syndicate3) +"lw" = ( +/obj/structure/table/reinforced, +/obj/item/storage/toolbox/emergency, +/obj/item/wrench, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/darkred/side{ + dir = 9 + }, +/area/shuttle/caravan/syndicate3) +"lx" = ( +/obj/structure/table/reinforced, +/obj/item/storage/firstaid/regular, +/obj/item/device/assembly/flash/handheld, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/darkred/side{ + dir = 5 + }, +/area/shuttle/caravan/syndicate3) +"ly" = ( +/obj/machinery/porta_turret/syndicate/energy{ + dir = 2; + icon_state = "standard_lethal"; + mode = 1 + }, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/shuttle/caravan/syndicate3) +"lB" = ( +/turf/closed/mineral/random/high_chance, +/area/ruin/unpowered) +"lD" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/airless{ + icon_state = "platingdmg1" + }, +/area/ruin/unpowered) +"lE" = ( +/obj/machinery/light/small, +/obj/effect/turf_decal/box/white/corners, +/obj/machinery/button/door{ + id = "caravantrade1_cargo"; + name = "Cargo Blast Door Control"; + pixel_y = -24 + }, +/obj/structure/closet/crate, +/obj/item/stack/sheet/mineral/diamond{ + amount = 5 + }, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter1) +"tH" = ( +/obj/structure/shuttle/engine/propulsion/burst{ + dir = 8 + }, +/turf/closed/wall/mineral/plastitanium, +/area/ruin/unpowered) (1,1,1) = {" aa @@ -1167,6 +3891,11 @@ aa aa aa aa +bt +bt +bt +aa +aa aa aa aa @@ -1214,6 +3943,11 @@ aa aa aa aa +bt +bt +bt +bt +aa aa aa aa @@ -1260,7 +3994,12 @@ aa aa aa aa -aa +bt +bt +lB +lB +bt +bt aa aa aa @@ -1307,7 +4046,12 @@ aa aa aa aa -aa +bt +bt +lB +lB +bt +bt aa aa aa @@ -1350,11 +4094,16 @@ aa aa aa aa +bl aa aa aa -aa -aa +bt +bt +lB +lB +bt +bt aa aa aa @@ -1401,7 +4150,12 @@ aa aa aa aa -aa +bt +bt +lB +bt +bt +bt aa aa aa @@ -1449,6 +4203,11 @@ aa aa aa aa +bt +bt +bt +bt +aa aa aa aa @@ -1510,17 +4269,22 @@ aa aa aa aa -ab -ar -ab -ar -ab aa aa aa aa aa aa +kn +ki +kG +ki +kn +aa +aa +aa +aa +aa aa aa aa @@ -1556,19 +4320,24 @@ aa aa aa aa -cT -ab -as -ab -as -ab -cT aa aa aa -aC -aC -aC +aa +aa +aa +kn +ki +kI +kV +lg +ki +kn +aa +aa +aa +aa +aa aa aa aa @@ -1587,6 +4356,9 @@ aa aa aa aa +lB +lB +lB aa aa aa @@ -1604,18 +4376,20 @@ aa aa aa aa -ab -dm -dt -dw -ab aa -aC -aC +kh +ki +ki +ki +kW +ki +ki +ki +kh +aa +aa +aa aa -aC -aC -aC aa aa aa @@ -1634,12 +4408,36 @@ aa aa aa aa +lB +lB +lB +lB +aa +aa +aa +aa +aa +fK +ge +ge +ge +hD +fG aa aa aa aa aa aa +ki +kh +aa +kj +kX +kj +aa +kh +ki aa aa aa @@ -1648,25 +4446,6 @@ aa aa aa aa -aa -aa -aa -ab -dm -cs -dw -ab -aa -aC -aC -aC -aC -aC -aC -aa -aa -aa -aa "} (12,1,1) = {" aa @@ -1678,9 +4457,31 @@ aa aa aa aa -aC -aC -aC +aa +aa +aa +aa +lB +lB +lB +aa +aa +aa +aa +fG +fL +fL +fL +fL +fL +fH +fK +ge +hD +aa +aa +aa +kj aa aa aa @@ -1688,6 +4489,7 @@ aa aa aa aa +kj aa aa aa @@ -1696,24 +4498,6 @@ aa aa aa aa -aa -aa -cS -cs -cs -cs -cS -aa -aa -aC -aC -aC -aC -aa -aa -aa -aa -aa "} (13,1,1) = {" aa @@ -1721,13 +4505,7 @@ aa aa aa aa -aa -aa -aa -aa -aC -aC -aC +bl aa aa aa @@ -1742,19 +4520,30 @@ aa aa aa aa +fH +ay +gf +gD +hb +hE +fH +fL +fL +fL +fG +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa -ab -dn -cs -dx -ab aa aa -aC -aC -aC aa aa aa @@ -1771,12 +4560,6 @@ aa aa aa aa -aH -aH -aC -aC -aC -aC aa aa aa @@ -1789,14 +4572,25 @@ aa aa aa aa +fH +fN +gg +ax +hc +hF +fH +iI +jg +jz +fH +aa +aa +aa +aa +aa aa aa aa -ab -cs -du -cs -ab aa aa aa @@ -1818,13 +4612,6 @@ aa aa aa aa -aH -aH -aC -aC -aC -aC -aC aa aa aa @@ -1837,13 +4624,25 @@ aa aa aa aa +fH +fO +fH +fH +fH +fO +fH +iJ +jh +lE +fH +aa +aa +aa +aa +aa +aa aa aa -ab -ce -dC -ce -ab aa aa aa @@ -1864,14 +4663,6 @@ aa aa aa aa -aC -aH -aH -aC -aC -aC -aC -aC aa aa aa @@ -1885,12 +4676,17 @@ aa aa aa aa -aa -ae +fH +fP +az aB -aB -aB -bb +fH +hG +ii +be +ji +jB +jQ aa aa aa @@ -1902,6 +4698,14 @@ aa aa aa aa +aa +aa +aa +aa +bt +bt +aa +aa "} (17,1,1) = {" aa @@ -1911,30 +4715,30 @@ aa aa aa aa -aC -aH -aH -aC -aC -aC -aC -aC -aH -aH -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aa +aa +aa +aa +aD +aa +aa +aa +aa +aa +aa +aa +aa +fI +fQ +fH +fH +fH +hH +ij +iL +jj +jC +jR aa aa aa @@ -1948,6 +4752,11 @@ aa aa aa aa +bt +bt +bt +bt +bt aa "} (18,1,1) = {" @@ -1958,30 +4767,30 @@ aa aa aa aa +aa +aa +br +aa +aa +aa +aa +bt +aa +aa +aa +aa +aa +fH +fR +aA aC -aH -aH -aC -aC -aC -aC -aC -aH -aH -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +fG +hI +he +iM +jj +jD +jS aa aa aa @@ -1995,6 +4804,11 @@ aa aa aa aa +bt +bt +lB +bt +bt aa "} (19,1,1) = {" @@ -2003,18 +4817,11 @@ aa aa aa aa -aa -aa -aC -aC -aH -aH -aC -aC -aC -aC -aH -aH +tH +dE +dL +dE +bJ aa aa aa @@ -2022,15 +4829,20 @@ aa aa aa aa -bl aa aa aa -bl -aa -aa -aa -bl +fH +fS +fH +fH +fH +hJ +ik +iN +jk +jE +jQ aa aa aa @@ -2043,25 +4855,28 @@ aa aa aa aa +bt +bt +lB +lB +bt +bt +aa "} (20,1,1) = {" aa aa aa aa +tH +dE +dF +eu +eG +bJ +bJ aa -aa -aa -aC -aC -aC -aH -aH -aC -aC -aC -aH -aH +bt aa aa aa @@ -2069,15 +4884,17 @@ aa aa aa aa -bl -ca -co -cF -bl -ca -co -cF -bl +fH +fT +fH +aF +fH +hK +il +iO +jl +jF +jS aa aa aa @@ -2090,41 +4907,48 @@ aa aa aa aa +bt +bt +lB +lB +bt +aa +aa "} (21,1,1) = {" aa aa aa +bJ +dE +dE +dE +gk +lD +bs +bJ +aa +bt +bt aa aa aa aa -aC -aC -aC -aH -aH -aC -aC -aC -aH +aa +aa +fI +fU +fH aH +fH +fH +ij +iP +jm +am +jT aa -aa -aa -aa -aa -aa -aa -bl -cb -cb -cb -bl -cb -cb -cb -bl +aD aa aa aa @@ -2135,6 +4959,11 @@ aa aa aa aa +bt +bt +bt +bt +bt aa aa "} @@ -2142,36 +4971,34 @@ aa aa aa aa +dE +bJ +aa +bJ +bs +bs +aa +ae aa aa aa aa -aC -aC -aC -aC -aH -aH -aC -aC +bt +aa +aa +aa +aa +fI +fV +gj +gJ +hd +aX +im bf -aH -aa -aa -aa -aa -aa -aa -aa -bl -bv -bw -bw -bw -bw -bw -bw -bl +al +aq +ar aa aa aa @@ -2184,41 +5011,53 @@ aa aa aa aa +aa +aa +bt +bt +aa +aa +aa "} (23,1,1) = {" aa aa aa +bJ aa aa aa -aa -aa -aC -aC -aC -aC -aH -aC -aH -aH -aH -aa -aa -aa -aa -aa -aa +ab aa bs -bC -cv -cK -bG -bG -bw -bw -bl +ac +aD +aa +aa +aa +aa +aa +aa +aa +aa +fI +fW +gl +aJ +he +fH +in +iR +am +aq +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -2235,6 +5074,35 @@ aa (24,1,1) = {" aa aa +br +aa +aa +aa +aa +aa +ac +aa +dD +ex +bt +bt +aa +aa +aa +aa +aa +aa +fH +fX +gm +fH +hf +fH +fH +iS +br +aa +aD aa aa aa @@ -2242,30 +5110,6 @@ aa aa aa aa -aC -aC -aC -aH -aC -aH -aH -aa -aa -aa -aa -aa -aa -bA -aa -aa -cg -ci -bE -bG -dg -bG -cc -bl aa aa aa @@ -2282,6 +5126,36 @@ aa (25,1,1) = {" aa aa +bt +bt +aa +aa +aa +aa +ad +bt +dD +bt +bt +bt +bt +bt +aa +aa +aa +aa +fH +fH +fH +fH +hg +hM +fH +aa +aa +aE +aa +ao aa aa aa @@ -2289,37 +5163,12 @@ aa aa aa aa -aC -aC -aC -aH -aH -aH -aH -aa -aa -aa -aa -aa -aa -aa -aD -aT -br -ci -cL -bG -dh -cG -bw -bm -aa -aa -aa -aa -aa aa aa +bt +bt +bt +bt aa aa aa @@ -2328,6 +5177,32 @@ aa "} (26,1,1) = {" aa +bt +bt +bt +aa +aa +aa +ew +bt +bt +dD +bt +bt +bt +bt +bt +aa +aa +aa +aa +kU +fY +gn +aK +hh +hN +fI aa aa aa @@ -2338,36 +5213,15 @@ aa aa aa aa -aC -aC -aH -aH -aC -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -cw -ci -bE -bG -do -bw -bm -aa -aa -aa -aa -aa -aa aa aa +bt +bt +bt +bt +bt +bt +bt aa aa aa @@ -2381,32 +5235,26 @@ aa aa aa aa +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt aa aa aa -aa -aC -aC -aC -aC -aa -aa -aa -aa -aa -aa -bq -aa -aa -aa -bs -cx -cM -cU -bG -bG -bw -bm +fG +fH +fH +fH +hi +fH +fH aa aa aa @@ -2417,10 +5265,48 @@ aa aa aa aa +as +bt +bt +bt +bt +bt +bt +bt +bt +aa +aa aa aa "} (28,1,1) = {" +bt +aa +aa +aa +dD +dD +bt +bt +bt +lB +lB +bt +bt +bt +bt +bt +bt +aa +aa +aa +aa +fH +go +aL +hj +hO +fH aa aa aa @@ -2431,11 +5317,101 @@ aa aa aa aa +bt +bt +bt +dD +dD +dD +dD +bt +bt +bt +bt +aa +aa +"} +(29,1,1) = {" +aa +aa +aa +dD +bt +bt +bt +bt +lB +lB +lB +lB +bt +bt +bt +bt +bt +aa +aa +aa +aa +fI +gp +gN +hk +hP +fI +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +bt +bt +bt +dD +dD +bt +dD +dD +bt +bt +bt +aa +aa +"} +(30,1,1) = {" +aa +aa +aa +bt +bt +bt +bt +lB +lB +lB +lB +lB +bt +bt +bt +bt +aa +aa +aa +aa +aa +fI +fI +gO +hl +fI +fI aa -aC -aC -aC -aC aa aa aa @@ -2445,119 +5421,17 @@ aa aa aa br -aa -bs -ci -cL -bG -di -dp -bx -bm -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -"} -(29,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ch -cy -bE -bl -cm -bl -bl -bl -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -"} -(30,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -aI -aN -aI -aN -aI -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -bq -aa -bB -cz -bG -bG -dj -dq -bw -bO -aa -aa -aa -aa -aC -aa -aa -aC -aa -aa +bt +bt +dD +dD +bt +bt +bt +dD +bt +bt +bt aa aa "} @@ -2565,36 +5439,29 @@ aa aa aa aa +bt +bt +bt +lB +lB +lB +lB +lB +bt +bt +bt +bt aa aa aa aa aa -aI -aO -aI -aO -aI -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -bQ -ci -ci -bw -cV -bw -bw -bw -bl +aa +aa +fI +fI +fI +fI aa aa aa @@ -2605,6 +5472,18 @@ aa aa aa aa +bt +bt +bt +dD +dD +bt +bt +bt +dD +dD +bt +bt aa aa "} @@ -2612,16 +5491,18 @@ aa aa aa aa -aa -aa -aa -aa -aa -aI -aP -aV -bc -aI +bt +bt +bt +bt +lB +lB +lB +bt +bt +bt +bt +bt aa aa aa @@ -2633,42 +5514,47 @@ aa aa aa aa -bR -bz -cc -bN -bZ -cc -cE -bz -bp aa aa aa aa aa aa -aC aa aa aa aa +bt +bt +bt +bt +dD +bt +bt +bt +bt +dD +bt +bt +bt aa "} (33,1,1) = {" aa aa -aa -aa -aa -aa -aa -aa -aI -aQ -aW -bd -aI +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt aa aa aa @@ -2681,15 +5567,6 @@ aa aa aa aa -bp -bJ -bJ -bJ -bJ -bJ -bp -aa -aa aa aa aa @@ -2700,22 +5577,35 @@ aa aa aa aa +bt +bt +bt +dD +bt +bt +bt +bt +dD +dD +dD +bt aa "} (34,1,1) = {" aa aa -aa -aa -aa -aa -aa -aa -aJ -aR -aK -be -aJ +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt aa aa aa @@ -2739,30 +5629,34 @@ aa aa aa aa -aa -aC -aC -aC -aC -aa -aa -aa +bt +bt +bt +dD +dD +bt +bt +bt +bt +dD +dD +dD aa "} (35,1,1) = {" aa aa aa -aa -aa -aa -aa -aa -aI -aK -aK -aK -aI +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt aa aa aa @@ -2788,12 +5682,17 @@ aa aa aa aa -aa -aC -aC -aa -aa -aa +bt +bt +dD +dD +bt +bt +bt +bt +bt +bt +bt aa "} (36,1,1) = {" @@ -2801,16 +5700,9 @@ aa aa aa aa -aa -aa -aa -aa -aK -aS -aK -be -aK -aD +bt +bt +bt aa aa aa @@ -2835,13 +5727,25 @@ aa aa aa aa -aC -aC aa aa aa aa aa +aa +aa +aa +aa +dD +dD +bt +bt +bt +bt +bt +bt +bt +aa "} (37,1,1) = {" aa @@ -2851,12 +5755,6 @@ aa aa aa aa -aD -aa -aT -aK -aS -aI aa aa aa @@ -2889,6 +5787,17 @@ aa aa aa aa +aa +dD +bt +bt +bt +bt +bt +bt +bt +bt +aa "} (38,1,1) = {" aa @@ -2900,10 +5809,6 @@ aa aa aa aa -aD -aK -aa -aa aa aa aa @@ -2935,6 +5840,15 @@ aa aa aa aa +bt +bt +bt +bt +bt +bt +bt +bt +bt aa "} (39,1,1) = {" @@ -2945,13 +5859,6 @@ aa aa aa aa -aE -aa -aa -aX -aD -aa -aT aa aa aa @@ -2983,6 +5890,18 @@ aa aa aa aa +aa +aa +bt +bt +bt +bt +bt +bt +bt +bt +aa +aa "} (40,1,1) = {" aa @@ -2991,12 +5910,13 @@ aa aa aa aa +dN +ea +em aa -aa -aa -aa -aX -aa +dN +ea +em aa aa aa @@ -3027,6 +5947,10 @@ aa aa aa aa +bt +bt +bt +bt aa aa aa @@ -3037,12 +5961,15 @@ aa aa aa aa -aa -aa -aa -aa -aa -aX +ch +dO +dO +dO +dB +dO +dO +dO +ch aa aa aa @@ -3073,6 +6000,8 @@ aa aa aa aa +bt +bt aa aa aa @@ -3083,20 +6012,17 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aX -aa -aa -aa -aa -aa -aa -aa +ch +dB +dP +eb +en +dB +eV +fk +ft +dB +ch aa aa aa @@ -3106,6 +6032,14 @@ aa aa aa aa +hm +hQ +io +io +io +io +jV +hm aa aa aa @@ -3130,20 +6064,17 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aX -aX -aa -aa -aa -aa -aa -aa +dB +dI +dQ +ec +eo +eK +eW +ec +fu +fC +dB aa aa aa @@ -3153,6 +6084,14 @@ aa aa aa aa +hn +hn +ip +ip +ip +ip +hn +hn aa aa aa @@ -3177,6 +6116,17 @@ aa aa aa aa +dB +dB +dR +ed +dB +dB +dB +ed +dR +dB +dB aa aa aa @@ -3184,23 +6134,16 @@ aa aa aa aa -aX -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aa +aa +hn +aY +iq +iT +jp +jH +jW +hn aa aa aa @@ -3213,6 +6156,7 @@ aa aa aa aa +bl aa aa aa @@ -3224,20 +6168,17 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aX -aa -aa -aa -aa -aa -aa +dB +dJ +dS +ee +ep +dB +eX +fl +fv +dJ +dB aa aa aa @@ -3247,6 +6188,14 @@ aa aa aa aa +ho +hS +aP +iU +jq +jI +jX +ke aa aa aa @@ -3270,6 +6219,35 @@ aa aa aa aa +ch +dB +dB +dT +ef +eq +dB +eY +ef +fw +dB +dB +ch +bs +bs +bs +bs +bs +bs +bs +bs +hp +hT +is +iV +jr +jJ +jY +kf aa aa aa @@ -3278,30 +6256,6 @@ aa aa aa aa -aX -aa -aa -aa -aa -aa -aa -aa -aa -aa -aT -aa -aa -bl -aa -aa -aa -bl -aa -aa -aa -aa -aa -aa aa aa aa @@ -3317,6 +6271,35 @@ aa aa aa aa +aj +dG +dK +dU +at +er +dB +eZ +fm +fx +fD +dG +fF +af +af +af +ag +ah +af +af +af +hq +hU +it +iW +js +jK +jZ +ke aa aa aa @@ -3325,7 +6308,6 @@ aa aa aa aa -aX aa aa aa @@ -3334,29 +6316,6 @@ aa aa aa aa -aT -br -aa -bs -bS -cj -co -cF -bl -aa -aa -aa -aa -aa -aC -aC -aC -aC -aa -aa -aa -aa -aa aa aa "} @@ -3364,6 +6323,35 @@ aa aa aa aa +ch +dB +dB +dV +ef +es +dB +fa +au +fy +dB +dB +ch +bs +bs +bs +bs +bs +bs +bs +bs +hr +hV +iu +iX +jt +jL +jX +kf aa aa aa @@ -3372,7 +6360,6 @@ aa aa aa aa -aX aa aa aa @@ -3381,29 +6368,6 @@ aa aa aa aa -bk -aa -aE -aa -bl -cb -cb -cb -bl -aa -aa -aa -aa -aa -aC -aC -aC -aC -aa -aa -aa -aa -aa aa aa "} @@ -3412,14 +6376,34 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aX +dH +dJ +dW +eh +et +dB +fb +fo +fz +dJ +dH +aa +aa +aa +aa +aa +aa +aa +aa +aa +hn +hW +iv +iY +ju +bi +ka +hn aa aa aa @@ -3428,24 +6412,9 @@ aa aa aa aa -bl -bs -aD -bK -bT -ci -bw -bw -bl aa aa aa -aC -aC -aC -aC -aC -aC aa aa aa @@ -3459,14 +6428,35 @@ aa aa aa aa -aa -ab -aa -aa -aa -aa -ab -aX +ch +dB +dX +ei +dB +dB +dB +fp +dB +dB +ch +aa +aa +aa +aa +aa +aa +aa +aa +aa +hn +hn +aZ +hn +hn +hn +hn +hn +aa aa aa aa @@ -3475,25 +6465,9 @@ aa aa aa aa -bl -ci -bB -bB -bU -bE -bw -bH -bl aa aa aa -aC -aC -aC -aC -aC -aC -aC aa aa aa @@ -3507,13 +6481,41 @@ aa aa aa aa -ad -ar -ar -ar -ar -ad -aX +dB +dY +ej +ez +eL +fc +fq +fA +dB +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +hs +hX +ix +bg +jv +jN +kb +hs +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -3523,29 +6525,6 @@ aa aa aa bl -bu -bC -bC -bV -bG -cA -cc -bl -aa -aa -aC -aC -aC -aC -aC -aC -aC -aC -aa -aa -aa -aa -aa aa "} (52,1,1) = {" @@ -3553,14 +6532,38 @@ aa aa aa aa -ab -ad -as -as -as -as -ad -ad +aa +dB +dZ +ek +eB +eM +fd +fr +fB +dB +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ht +hY +iy +bs +bh +jO +kc +ht +aa +aa +aa +aa aa aa aa @@ -3569,27 +6572,8 @@ aa aa aa aa -bm -bv -bD -bE -bG -ck -cB -bw -bm aa aa -aC -aC -aC -aC -aC -aC -aC -aC -aC -aC aa aa aa @@ -3597,46 +6581,51 @@ aa "} (53,1,1) = {" aa -ab -ad -ab -ab -aj -at -aw -aw -at -aY -ad -ab -ab -ab +aa +aa +aa +aa +bb +dB +el +eC +eO +fe +fs +dB +bc +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +bs +dc +aa +an +jP +ht +ht +aa +aa +aa +aa +aa +aa +aa aa aa aa aa aa -bm -bw -bE -bG -bF -bG -bG -bw -bm aa aa -aH -aC -aC -aC -aC -aC -aC -aC -aC -aC aa aa aa @@ -3644,46 +6633,51 @@ aa "} (54,1,1) = {" aa -ab -af -af -ab -ag -at -aF -aL -at -ag -ab -af -af -ad aa aa aa aa aa -bn -bw -bF -bG -bW -cl -bG -bw -bm +ch +dB +dB +dB +ff +dB +ch +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aD +aa +aa +bs +aa +bs +kd +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa -aH -aC -aC -aC -aC -aH -aH -dz -aH -aC aa aa aa @@ -3691,46 +6685,51 @@ aa "} (55,1,1) = {" aa -ac -ag -ag -ai -ak -ag -ag -ag -ak -ag -ai -ag -ag -ac -bg -bg -bg -bj -bg -bn -bx -bG -bG -bX -bG -cC -bx -bm aa aa -aH -aH -aC -aC -aH -aH -aH -aH -aH -aC +aa +aa +aa +aa +dB +eD +eP +fg +dB +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aT +aa +aD +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -3738,46 +6737,51 @@ aa "} (56,1,1) = {" aa -ac -ag -ag -ai -ag -at -ag -ag -at -ag -ai -ag -ag -ac -bg -bh -bi -bg -bg -bl -bl -bl -bL -bl -cm -bl -bl -bl aa aa -aC -aH -aH -aH -dz -aC -aC -aH -dz -aC +aa +aa +aa +aa +dB +eE +eQ +fg +dB +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +dc +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -3785,46 +6789,51 @@ aa "} (57,1,1) = {" aa -ad -af -af -ad -al -at -ag -ag -at -al -ab -af -af -ad aa aa aa aa aa -bo -bw -bw -bM -bw -bw -bw -bw -bO +aa +dB +eF +eR +fh +dB +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +br +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa -aC -aC -dy -aH -aC -aC -aC -aH -aH -aC aa aa aa @@ -3832,46 +6841,51 @@ aa "} (58,1,1) = {" aa -ae -ab -ab -ad -am -ag -ag -ag -ag -am -ad -ab -ab -bb aa aa aa aa aa -bl -by -bH -bw -bY -bw -cD -bw -bl +aa +dB +eI +eS +fi +dB +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa -aC -aC -aC -aC -aC -aC -aC -aH -aC -aC aa aa aa @@ -3881,16 +6895,35 @@ aa aa aa aa -ah -ad -an -at -ag -ag -at -az -ad -ah +aa +aa +aa +aa +dH +eJ +eT +fj +dH +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -3898,26 +6931,12 @@ aa aa aa aa -bp -bz -bI -bN -bZ -cn -cE -bz -bp aa aa aa aa aa aa -aC -aC -aH -aH -aC aa aa aa @@ -3928,16 +6947,33 @@ aa aa aa aa -ad -ab -ao -at -ag -ag -at -aZ -ab -ad +aa +aa +aa +aa +dH +dH +eU +dH +dH +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -3946,13 +6982,6 @@ aa aa aa aa -bp -bJ -bJ -bJ -bJ -bJ -bp aa aa aa @@ -3960,11 +6989,6 @@ aa aa aa aa -aC -aC -aH -aC -aC aa aa aa @@ -3975,16 +6999,21 @@ aa aa aa aa -ah -ab -ap -ag -ak -ag -aF -ba -ab -ah +aa +aa +aa +aa +aa +dH +dH +dH +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -4022,16 +7051,21 @@ aa aa aa aa -ad -ab -aq -au -ag -ag -aM -az -ab -ad +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -4069,16 +7103,21 @@ aa aa aa aa -ae -ab -ab -ab -ag -ag -ab -ab -ab -bb +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -4117,14 +7156,6 @@ aa aa aa aa -ae -ad -av -ag -ag -aU -ad -bb aa aa aa @@ -4149,11 +7180,24 @@ aa aa aa aa -ab -ar -ab -ar -ab +aa +aa +aa +aa +aa +aa +aa +ku +kJ +kJ +kJ +lp +aa +aa +aa +aa +aa +aa aa aa aa @@ -4165,12 +7209,6 @@ aa aa aa aa -ab -aw -ag -ag -aw -ad aa aa aa @@ -4195,13 +7233,24 @@ aa aa aa aa -cT -ab -as -ab -as -ab -cT +aa +aa +aa +aa +aa +ko +kv +kv +kv +kv +kv +ko +aa +aa +aa +aa +aa +aa aa aa aa @@ -4212,12 +7261,6 @@ aa aa aa aa -ab -ax -ag -ag -ax -ab aa aa aa @@ -4243,11 +7286,22 @@ aa aa aa aa -ab -dm -cs -dw -ab +aa +aa +aa +aa +kp +kp +aS +aU +aV +kp +kp +aa +aa +aa +aa +aa aa aa aa @@ -4259,12 +7313,6 @@ aa aa aa aa -ab -ay -aG -aM -dA -ab aa aa aa @@ -4290,11 +7338,22 @@ aa aa aa aa -ab -dm -cs -dw -ab +aa +aa +aa +aa +kp +kw +kL +kZ +li +lq +kp +aa +aa +aa +aa +aa aa aa aa @@ -4306,12 +7365,6 @@ aa aa aa aa -ab -az -ag -ag -ax -ab aa aa aa @@ -4337,15 +7390,26 @@ aa aa aa aa -cS -cs -cs -cs -cS aa aa aa aa +kp +kx +kM +la +li +lr +kp +aa +aa +aa +aa +bt +bt +bt +aa +aa "} (69,1,1) = {" aa @@ -4353,12 +7417,9 @@ aa aa aa aa -ad -aA -ag -ag -ag -ad +bt +bt +bt aa aa aa @@ -4384,14 +7445,22 @@ aa aa aa aa -ab -cs -cs -cs -ab +aa +kp +ky +kM +la +lj +ls +kp aa aa aa +bt +bt +bt +bt +bt aa "} (70,1,1) = {" @@ -4399,13 +7468,11 @@ aa aa aa aa -aa -ae -aB -aB -aB -aB -bb +bt +bt +bt +bt +bt aa aa aa @@ -4418,34 +7485,46 @@ aa aa aa aa -bl -aa -aa -aa -bl -aa -aa -aa -bl aa aa aa aa -ab -cs -du -cs -ab aa aa aa aa +aa +aa +aa +aa +aa +kp +kz +kN +la +lk +lt +kp +aa +aa +bt +bt +bt +lB +bt +bt +aa "} (71,1,1) = {" aa aa aa aa +bt +bt +bt +bt +bt aa aa aa @@ -4465,34 +7544,40 @@ aa aa aa aa -bl -ca -co -cF -bl -ca -co -cF -bl aa aa aa aa -ab -ce -dC -ce -ab aa aa +kq +kp +kp +lb +kp +kp +ly aa aa +bt +bt +lB +lB +lB +bt +bt "} (72,1,1) = {" aa aa aa aa +bt +bt +lB +lB +bt +bt aa aa aa @@ -4512,34 +7597,39 @@ aa aa aa aa -bl -cb -cb -cb -bl -cb -cb -cb -bl aa aa aa aa -ae -aB -aB -aB -bb -aa -aa +aa +kr +bj +kO +la +ll +bk +ba aa aa +bt +bt +lB +lB +lB +bt +bt "} (73,1,1) = {" aa aa aa aa +bt +bt +lB +lB +bt +bt aa aa aa @@ -4558,29 +7648,28 @@ aa aa aa aa -aa -bl -bw -bw -bw -bw -bw -bw -bw -bl -aa -aa -aa -aa -aa -aa +ao aa aa aa aa aa +kp +kB +kP +lc +lk +lv +kp aa aa +bt +bt +bt +lB +lB +bt +bt "} (74,1,1) = {" aa @@ -4588,33 +7677,11 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aC -aC -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -bl -bw -bw -bG -bG -cW -bw -bw -bl +bt +bt +lB +lB +bt aa aa aa @@ -4628,6 +7695,33 @@ aa aa aa aa +aa +aa +aa +aa +aa +aa +aa +aT +aa +aa +aa +kp +kp +kp +ld +kp +kp +kp +aa +aa +aa +bt +bt +bt +bt +bt +aa "} (75,1,1) = {" aa @@ -4635,33 +7729,12 @@ aa aa aa aa -aa -aa -aa -aa -aa -aC -aC -aC -aC -aH -aH -aa -aa -aa -aa -aa -aa -aa -bl -cc -bG -bG -cN -bG -bG -cc -bl +bt +bt +lB +lB +bt +bt aa aa aa @@ -4672,9 +7745,35 @@ aa aa aa aa +fZ +gq +gP +gP +gP +bs +ab +aE aa aa aa +aa +aa +kp +kC +kQ +la +lm +lw +kp +aa +aa +aa +aa +aa +bt +bt +bt +aa "} (76,1,1) = {" aa @@ -4683,16 +7782,11 @@ aa aa aa aa -aa -aa -aa -aa -aC -aC -aC -aC -aH -aH +bt +bt +bt +bt +bt aa aa aa @@ -4700,19 +7794,29 @@ aa aa aa aa -bm -bw -bG -bG -bG -cX -bG -bw -bm +aa +aa +aa +ga +ga +gQ +gQ +gQ +iz +bs +aa +aD aa aa aa aa +ks +kD +kR +le +ln +lx +ks aa aa aa @@ -4731,35 +7835,40 @@ aa aa aa aa -aa -aa -aC -aC -aC -aC -aC -aH -aH -aH +bt +bt +bt +bt aa aa aa aa aa aa -bm -bw -bG -cG -bG -bG -bG -bw -bm aa aa aa aa +ga +av +gR +hu +hZ +ai +aT +aa +aa +aa +aa +aa +aa +ks +ks +kS +lf +lo +ks +ks aa aa aa @@ -4778,37 +7887,42 @@ aa aa aa aa -aC -aC -aC -aC -aC -aC -aC -aC -aH -aH -aH +aa +bt +bt aa aa aa aa aa -bm -bw -cp -bG -cG -cY -bG -bw -bm aa aa aa aa aa aa +gb +gs +aN +hv +ia +iA +ak +ap +aa +aa +br +aa +aa +aa +ks +ks +ks +ks +ks +aa +aa +aa aa aa aa @@ -4825,31 +7939,36 @@ aa aa aa aa -aC -aC -aC -aC -aC -aC -aC -aC -aH -aH -aH aa aa aa aa aa -bm -bx -bG -bG -bG -cZ -bG -bx -bm +aa +aa +aa +aa +aa +aa +aa +aa +aa +gb +jA +gT +hw +ib +iB +ja +bd +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -4871,32 +7990,37 @@ aa aa aa aa -aa -aC -aC -aC -aC -aC -aC -aC -aC -aH -aH -aH +lB +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +gb +gt +gU +hx +ic +iC +jb +jy +aa +aa +aa aa aa aa aa aa -bl -bl -bl -cm -bl -cm -bl -bl -bl aa aa aa @@ -4917,42 +8041,47 @@ aa aa aa aa -aa -aa -aC -aC -aC -aC -aC -aC -aC -aC -aH -aH -aH -aa -aa -aa -aa -aa -bO -bw -bw -bw -cO -bM -bw -dr -bO +lB +lB +lB +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +gb +gv +gV +hy +id +iD +jc +jy +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa aa aa aa -aC -aC -aC aa aa aa @@ -4965,41 +8094,46 @@ aa aa aa aa -aa -aC -aC -aC -aC -aC -aC -aC -aC -aH -aH -aH +lB +lB +lB +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ga +gw +gW +hz +ie +aR +jd +ga +aa +aa +aa +kg +kk +kl +aa aa aa aa aa aa -bl -cd -cq -bv -cP -da -bv -bw -bl aa aa aa aa aa -aC -aC -aC -aC aa aa aa @@ -5012,41 +8146,46 @@ aa aa aa aa -aa -aC -aC -aC -aC -aC -aC -aC -aC -aH -aH -aH +lB +lB +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ga +ga +aW +ga +ga +ga +ga +ga +aa +aa +aa +aa +kl +kk +kE +aa aa aa aa aa aa -bp -bz -cr -cH -cQ -db -dk -bz -bp aa aa aa aa -aC -aC -aC -aC -aC aa aa aa @@ -5060,40 +8199,45 @@ aa aa aa aa -aH -aH -aC -aC -aC -aC -aC -aC -aH -aC -aH aa aa aa aa aa aa -bp -bn -cI -cR -bs -bn -bp aa aa aa aa -aC -aC -aC -aC -aC -aC +aa +aa +aa +aa +gc +gy +gY +aO +if +iF +je +gc +aa +aa +aa +aa +aa +kk +kk +kE +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -5107,17 +8251,6 @@ aa aa aa aa -aH -aH -aH -aC -aC -aC -aC -aH -aH -aC -aH aa aa aa @@ -5132,14 +8265,30 @@ aa aa aa aa +gd +aw +aG +hB +ig +aM +aQ +gd +aa +aa +aa +aa +kg +kk +kF +kk +aa +aa +aa +aa +aa aa aa aa -aC -aC -aC -aC -aC aa aa aa @@ -5155,16 +8304,35 @@ aa aa aa aa -aH -aH -aC -aH -aH -aH -aH -aH -aC -aC +aa +aa +aa +bt +bt +bt +bt +aa +aa +aa +aa +aa +aa +gd +gd +ha +aI +ih +iH +gd +gd +aa +aa +aa +aa +km +kt +fJ +kT aa aa aa @@ -5175,20 +8343,6 @@ aa aa aa aa -dc -aa -cT -aa -aa -aa -aa -aC -aC -aC -aC -aa -aa -aa aa aa aa @@ -5202,36 +8356,41 @@ aa aa aa aa -aH -aH -aH -aH -aC -aC -aC -aC -aC -aC +aa +aa +bt +bt +bt +bt +bt +bt +bt +bt +aa +aa +aa +aa +gd +gd +gd +gd +gd +gd aa aa aa aa aa -bP -ab -ab -ab -cS -ab -ab -ab -ab +kg +kk +kH +kk +aa +aa aa aa aa aa -aC -aC aa aa aa @@ -5249,30 +8408,35 @@ aa aa aa aa -aH -aH -aH -aC -aC -aC -aC -aC -aC -aC +aa +bt +bt +bt +bt +bt +bt +bt +bt +dD +dD aa aa aa aa aa -aB -ce -cs -cs -cs -dd -dd -ds -dv +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +kk +kk +kE aa aa aa @@ -5291,35 +8455,40 @@ aa aa aa aa +bl aa aa aa aa aa -aH -aH -aH -aC -aC -aC -aC -aC -aC -aC +bt +bt +bt +bt +bt +bt +dD +dD +dD +dD aa aa aa aa aa -aB -cf -ct -cJ -cs -de -dl -ab -ab +aa +aa +aa +aa +aa +aa +aa +aa +aa +kl +kk +kE +aa aa aa aa @@ -5343,12 +8512,17 @@ aa aa aa aa -aH -aH -aH -aC -aC -aC +aa +aa +bt +bt +bt +dD +dD +dD +dD +bt +bt aa aa aa @@ -5358,15 +8532,15 @@ aa aa aa aa -aB -ce -cu -cs -cs -df -df -ds -dv +aa +aa +aa +aa +kg +kk +kl +aa +aa aa aa aa @@ -5393,6 +8567,20 @@ aa aa aa aa +dD +dD +dD +dD +bt +bt +bt +bt +aa +aa +aa +aa +aa +aa aa aa aa @@ -5405,15 +8593,6 @@ aa aa aa aa -ae -ab -ab -ab -cS -ab -ab -ab -ab aa aa aa @@ -5441,6 +8620,13 @@ aa aa aa aa +bt +bt +bt +bt +bt +bt +bt aa aa aa @@ -5459,8 +8645,6 @@ aa aa aa aa -cT -aa aa aa aa @@ -5488,7 +8672,12 @@ aa aa aa aa -aa +bt +bt +bt +bt +bt +bt aa aa aa @@ -5535,7 +8724,12 @@ aa aa aa aa -aa +bt +bt +bt +bt +bt +bt aa aa aa @@ -5582,7 +8776,12 @@ aa aa aa aa -aa +bt +bt +bt +bt +bt +bt aa aa aa @@ -5629,6 +8828,63 @@ aa aa aa aa +bt +bt +bt +bt +bt +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(97,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +bt +bt +bt +aa aa aa aa diff --git a/_maps/RandomRuins/SpaceRuins/crashedship.dmm b/_maps/RandomRuins/SpaceRuins/crashedship.dmm index 177f1c3cbc..886335fa24 100644 --- a/_maps/RandomRuins/SpaceRuins/crashedship.dmm +++ b/_maps/RandomRuins/SpaceRuins/crashedship.dmm @@ -6,7 +6,7 @@ /obj/item/circular_saw, /obj/structure/lattice, /turf/template_noop, -/area/template_noop) +/area/space/nearstation) "ac" = ( /turf/closed/wall/mineral/titanium, /area/awaymission/BMPship/Aft) @@ -16,7 +16,7 @@ "ag" = ( /obj/machinery/porta_turret{ dir = 8; - emagged = 1; + set_obj_flags = "EMAGGED"; installation = /obj/item/gun/energy/lasercannon }, /turf/open/floor/engine, @@ -46,7 +46,7 @@ "am" = ( /obj/structure/lattice, /turf/template_noop, -/area/template_noop) +/area/space/nearstation) "an" = ( /obj/structure/window/reinforced, /obj/effect/spawner/structure/window/hollow/reinforced/middle{ @@ -243,7 +243,7 @@ /turf/open/floor/plating, /area/awaymission/BMPship/Fore) "aY" = ( -/obj/structure/sign/vacuum, +/obj/structure/sign/warning/vacuum, /turf/closed/wall/mineral/titanium, /area/awaymission/BMPship/Fore) "bb" = ( @@ -1860,7 +1860,7 @@ "gl" = ( /obj/machinery/porta_turret{ dir = 8; - emagged = 1; + set_obj_flags = "EMAGGED"; installation = /obj/item/gun/energy/lasercannon }, /turf/open/floor/engine, @@ -2200,6 +2200,13 @@ "hE" = ( /turf/closed/wall/mineral/titanium/nodiagonal, /area/awaymission/BMPship/Fore) +"vh" = ( +/turf/template_noop, +/area/space/nearstation) +"EQ" = ( +/obj/structure/lattice, +/turf/template_noop, +/area/awaymission/BMPship/Midship) (1,1,1) = {" aa @@ -3589,7 +3596,7 @@ aa aa am aa -am +EQ aq gt aq @@ -3638,8 +3645,8 @@ aa aa am aa -aa -am +vh +EQ gt at ha @@ -3689,7 +3696,7 @@ aa aa aa am -am +EQ gL hg ha diff --git a/_maps/RandomRuins/SpaceRuins/deepstorage.dmm b/_maps/RandomRuins/SpaceRuins/deepstorage.dmm index 39d6eca041..9fa52e5d2f 100644 --- a/_maps/RandomRuins/SpaceRuins/deepstorage.dmm +++ b/_maps/RandomRuins/SpaceRuins/deepstorage.dmm @@ -8,12 +8,6 @@ "ac" = ( /turf/open/floor/plating/asteroid/airless, /area/ruin/unpowered/no_grav) -"ad" = ( -/turf/closed/mineral/random/low_chance, -/area/asteroid/cave/space) -"ae" = ( -/turf/open/floor/plating/asteroid/airless, -/area/asteroid/cave/space) "af" = ( /turf/closed/wall/mineral/iron, /area/ruin/space/has_grav/deepstorage/kitchen) @@ -28,12 +22,6 @@ /obj/structure/closet/secure_closet/freezer/meat, /turf/open/floor/plasteel/freezer, /area/ruin/space/has_grav/deepstorage/kitchen) -"aj" = ( -/obj/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/plating, -/area/ruin/space/has_grav/deepstorage/crusher) "ak" = ( /obj/machinery/conveyor{ dir = 4; @@ -112,17 +100,6 @@ }, /turf/open/floor/plating, /area/ruin/space/has_grav/deepstorage/crusher) -"av" = ( -/obj/structure/window/plasma/reinforced{ - dir = 8 - }, -/obj/machinery/conveyor{ - dir = 1; - id = "bunkerrecycle"; - movedir = 2 - }, -/turf/open/floor/plating, -/area/ruin/space/has_grav/deepstorage/crusher) "aw" = ( /obj/effect/baseturf_helper/asteroid/airless, /turf/closed/wall/mineral/iron, @@ -172,17 +149,6 @@ }, /turf/open/floor/plating, /area/ruin/space/has_grav/deepstorage/crusher) -"aF" = ( -/obj/machinery/conveyor{ - dir = 1; - id = "bunkerrecycle"; - movedir = 2 - }, -/obj/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/plating, -/area/ruin/space/has_grav/deepstorage/crusher) "aG" = ( /obj/structure/closet/cardboard, /obj/item/stack/sheet/mineral/silver, @@ -1312,14 +1278,6 @@ }, /turf/open/floor/plasteel/floorgrime, /area/ruin/space/has_grav/deepstorage) -"do" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/firealarm{ - dir = 4; - pixel_x = 24 - }, -/turf/open/floor/plasteel/floorgrime, -/area/ruin/space/has_grav/deepstorage) "dp" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall/mineral/iron, @@ -2433,7 +2391,7 @@ /obj/machinery/light/small{ dir = 1 }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_y = 32 }, /obj/effect/turf_decal/stripes/corner{ @@ -2457,7 +2415,7 @@ /obj/machinery/camera{ network = list("Bunker1") }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_y = 32 }, /obj/effect/turf_decal/stripes/corner{ @@ -2485,7 +2443,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ dir = 4 }, -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_y = 32 }, /turf/open/floor/plating, @@ -2626,18 +2584,6 @@ /obj/machinery/light/small, /turf/open/floor/plasteel/floorgrime, /area/ruin/space/has_grav/deepstorage) -"go" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 4 - }, -/turf/open/floor/plasteel/floorgrime, -/area/ruin/space/has_grav/deepstorage) -"gp" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/closed/wall/mineral/iron, -/area/ruin/space/has_grav/deepstorage/power) "gq" = ( /obj/structure/cable/yellow{ icon_state = "1-4" @@ -2649,20 +2595,11 @@ /obj/structure/cable/yellow{ icon_state = "0-8" }, -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_y = -32 }, /turf/open/floor/plating, /area/ruin/space/has_grav/deepstorage/power) -"gs" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel/floorgrime, -/area/ruin/space/has_grav/deepstorage/power) "gt" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/visible, /obj/structure/cable/yellow{ @@ -2850,23 +2787,12 @@ }, /turf/open/floor/plating, /area/ruin/space/has_grav/deepstorage/power) -"gS" = ( -/obj/structure/grille, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/machinery/door/firedoor, -/turf/open/floor/plating, -/area/ruin/space/has_grav/deepstorage/power) "gT" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ dir = 5 }, /obj/machinery/autolathe, -/obj/structure/sign/radiation{ +/obj/structure/sign/warning/radiation{ pixel_x = -32 }, /turf/open/floor/plasteel/floorgrime, @@ -3052,30 +2978,6 @@ /obj/effect/baseturf_helper/asteroid/airless, /turf/closed/mineral/random/low_chance, /area/ruin/unpowered/no_grav) -"hs" = ( -/turf/closed/wall/mineral/iron, -/area/ruin/space/has_grav/deepstorage/storage) -"ht" = ( -/turf/closed/wall/mineral/iron, -/area/ruin/space/has_grav/deepstorage/storage) -"hu" = ( -/turf/closed/wall/mineral/iron, -/area/ruin/space/has_grav/deepstorage/storage) -"hv" = ( -/turf/closed/wall/mineral/iron, -/area/ruin/space/has_grav/deepstorage/storage) -"hw" = ( -/turf/closed/wall/mineral/iron, -/area/ruin/space/has_grav/deepstorage/storage) -"hx" = ( -/turf/closed/wall/mineral/iron, -/area/ruin/space/has_grav/deepstorage/storage) -"hy" = ( -/turf/closed/wall/mineral/iron, -/area/ruin/space/has_grav/deepstorage/storage) -"hz" = ( -/turf/closed/wall/mineral/iron, -/area/ruin/space/has_grav/deepstorage/storage) "hA" = ( /obj/effect/baseturf_helper/asteroid/airless, /turf/closed/wall/mineral/iron, @@ -3084,57 +2986,6 @@ /obj/effect/baseturf_helper/asteroid/airless, /turf/closed/wall/mineral/iron, /area/ruin/space/has_grav/deepstorage/hydroponics) -"hC" = ( -/turf/closed/wall/mineral/iron, -/area/ruin/space/has_grav/deepstorage/storage) -"hD" = ( -/turf/closed/wall/mineral/iron, -/area/ruin/space/has_grav/deepstorage/storage) -"hE" = ( -/turf/closed/wall/mineral/iron, -/area/ruin/space/has_grav/deepstorage/storage) -"hF" = ( -/turf/closed/wall/mineral/iron, -/area/ruin/space/has_grav/deepstorage/storage) -"hG" = ( -/turf/closed/wall/mineral/iron, -/area/ruin/space/has_grav/deepstorage/storage) -"hH" = ( -/turf/closed/wall/mineral/iron, -/area/ruin/space/has_grav/deepstorage/storage) -"hI" = ( -/turf/closed/wall/mineral/iron, -/area/ruin/space/has_grav/deepstorage/storage) -"hJ" = ( -/turf/closed/wall/mineral/iron, -/area/ruin/space/has_grav/deepstorage/storage) -"hK" = ( -/turf/closed/wall/mineral/iron, -/area/ruin/space/has_grav/deepstorage/storage) -"hL" = ( -/turf/closed/wall/mineral/iron, -/area/ruin/space/has_grav/deepstorage/storage) -"hM" = ( -/turf/closed/wall/mineral/iron, -/area/ruin/space/has_grav/deepstorage/storage) -"hN" = ( -/turf/closed/wall/mineral/iron, -/area/ruin/space/has_grav/deepstorage/storage) -"hO" = ( -/turf/closed/wall/mineral/iron, -/area/ruin/space/has_grav/deepstorage/storage) -"hP" = ( -/turf/closed/wall/mineral/iron, -/area/ruin/space/has_grav/deepstorage/storage) -"hQ" = ( -/turf/closed/wall/mineral/iron, -/area/ruin/space/has_grav/deepstorage/storage) -"hR" = ( -/turf/closed/wall/mineral/iron, -/area/ruin/space/has_grav/deepstorage/storage) -"hS" = ( -/turf/closed/wall/mineral/iron, -/area/ruin/space/has_grav/deepstorage/storage) "hT" = ( /obj/effect/baseturf_helper/asteroid/airless, /turf/closed/wall/mineral/iron, @@ -3697,12 +3548,12 @@ ab ab ab ab -hE -hJ -hN -hP -hQ -hS +hU +hU +hU +hU +hU +hU hU hV dB @@ -3749,7 +3600,7 @@ ab ab ab ab -hF +hU bT bU cB @@ -3798,10 +3649,10 @@ ab ab ab aw -hz -hC -hD -hG +hU +hU +hU +hU bU bU cB @@ -3849,11 +3700,11 @@ ab ab ab ab -hs +hU aG aR bm -hH +hU bV ch cC @@ -3901,15 +3752,15 @@ ab ab ab ab -ht +hU aH aS bn -hI -hK -hO +hU +hU +hU cD -hR +hU dg dz dQ @@ -3953,7 +3804,7 @@ ab ab ab ab -hu +hU aI aT bo @@ -4005,7 +3856,7 @@ ab ab ab ab -hv +hU aJ aU bp @@ -4057,12 +3908,12 @@ ab ab ab ab -hw +hU aK aV bq bG -hL +hU cj cG bz @@ -4109,12 +3960,12 @@ ab ab ab ab -hx +hU aL aW br bH -hM +hU ck cH cT @@ -4161,7 +4012,7 @@ ab ab ab ab -hy +hU hA af af @@ -5707,55 +5558,3 @@ aa aa aa "} -(50,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -"} diff --git a/_maps/RandomRuins/SpaceRuins/derelict1.dmm b/_maps/RandomRuins/SpaceRuins/derelict1.dmm index d530f2134a..9c1a0d9783 100644 --- a/_maps/RandomRuins/SpaceRuins/derelict1.dmm +++ b/_maps/RandomRuins/SpaceRuins/derelict1.dmm @@ -5,7 +5,7 @@ "b" = ( /obj/structure/lattice, /turf/template_noop, -/area/template_noop) +/area/space/nearstation) "c" = ( /turf/closed/wall, /area/ruin/unpowered) @@ -105,22 +105,11 @@ a a a a -a -a -a -a -a -a -a -a b b b a a -a -a -a "} (2,1,1) = {" a @@ -146,23 +135,12 @@ a a a a -a -a -a -a -a -a -a -a b p p p c a -a -a -a "} (3,1,1) = {" a @@ -187,14 +165,6 @@ a a a a -a -a -a -a -a -a -a -a b b c @@ -202,9 +172,6 @@ q q c a -a -a -a "} (4,1,1) = {" a @@ -228,14 +195,6 @@ a a a a -a -a -a -a -a -a -a -a b b q @@ -244,9 +203,6 @@ q q c b -a -a -a "} (5,1,1) = {" a @@ -271,14 +227,6 @@ a a a a -a -a -a -a -a -a -a -a b q q @@ -286,9 +234,6 @@ q q c b -a -a -a "} (6,1,1) = {" a @@ -313,14 +258,6 @@ a a a a -a -a -a -a -a -a -a -a c q q @@ -328,9 +265,6 @@ q q p b -a -a -a "} (7,1,1) = {" a @@ -354,14 +288,6 @@ a a a a -a -a -a -a -a -a -a -a c q q @@ -370,9 +296,6 @@ c q b b -a -a -a "} (8,1,1) = {" a @@ -395,14 +318,6 @@ a a a a -a -a -a -a -a -a -a -a b b q @@ -412,9 +327,6 @@ b b b a -a -a -a "} (9,1,1) = {" a @@ -437,14 +349,6 @@ a a a a -a -a -a -a -a -a -a -a b b b @@ -454,9 +358,6 @@ b a a a -a -a -a "} (10,1,1) = {" a @@ -464,14 +365,6 @@ a a a a -a -a -a -a -a -a -a -a b b a @@ -496,23 +389,12 @@ a a a a -a -a -a "} (11,1,1) = {" a a a a -a -a -a -a -a -a -a -a b b b @@ -538,22 +420,11 @@ a a a a -a -a -a "} (12,1,1) = {" a a a -a -a -a -a -a -a -a -a b b b @@ -580,22 +451,11 @@ a a a a -a -a -a "} (13,1,1) = {" a a a -a -a -a -a -a -a -a -a b b b @@ -622,21 +482,10 @@ a a a a -a -a -a "} (14,1,1) = {" a a -a -a -a -a -a -a -a -a b b b @@ -664,21 +513,10 @@ a a a a -a -a -a "} (15,1,1) = {" a a -a -a -a -a -a -a -a -a b b b @@ -706,21 +544,10 @@ a a a a -a -a -a "} (16,1,1) = {" a a -a -a -a -a -a -a -a -a b b e @@ -748,22 +575,11 @@ a a a a -a -a -a "} (17,1,1) = {" a a a -a -a -a -a -a -a -a -a c f f @@ -790,22 +606,11 @@ a a a a -a -a -a "} (18,1,1) = {" a a a -a -a -a -a -a -a -a -a c c c @@ -832,21 +637,10 @@ a a a a -a -a -a "} (19,1,1) = {" a a -a -a -a -a -a -a -a -a b c g @@ -874,20 +668,9 @@ a a a a -a -a -a "} (20,1,1) = {" a -a -a -a -a -a -a -a -a b b c @@ -916,19 +699,8 @@ a a a a -a -a -a "} (21,1,1) = {" -a -a -a -a -a -a -a -a b b b @@ -958,19 +730,8 @@ a a a a -a -a -a "} (22,1,1) = {" -a -a -a -a -a -a -a -a b b b @@ -1000,19 +761,8 @@ a a a a -a -a -a "} (23,1,1) = {" -a -a -a -a -a -a -a -a b b b @@ -1042,21 +792,10 @@ a a a a -a -a -a "} (24,1,1) = {" a a -a -a -a -a -a -a -a -a b c j @@ -1084,21 +823,10 @@ a a a a -a -a -a "} (25,1,1) = {" a a -a -a -a -a -a -a -a -a b c c @@ -1126,23 +854,12 @@ a a a a -a -a -a "} (26,1,1) = {" a a a a -a -a -a -a -a -a -a -a b c c @@ -1168,23 +885,12 @@ a a a a -a -a -a "} (27,1,1) = {" a a a a -a -a -a -a -a -a -a -a b b c @@ -1210,23 +916,12 @@ a a a a -a -a -a "} (28,1,1) = {" a a a a -a -a -a -a -a -a -a -a b b l @@ -1252,23 +947,12 @@ a a a a -a -a -a "} (29,1,1) = {" a a a a -a -a -a -a -a -a -a -a b b b @@ -1294,23 +978,12 @@ a a a a -a -a -a "} (30,1,1) = {" a a a a -a -a -a -a -a -a -a -a b b b @@ -1336,9 +1009,6 @@ a a a a -a -a -a "} (31,1,1) = {" a @@ -1346,14 +1016,6 @@ a a a a -a -a -a -a -a -a -a -a b b b @@ -1378,385 +1040,4 @@ a a a a -a -a -a -"} -(32,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} -(33,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} -(34,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} -(35,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} -(36,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} -(37,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} -(38,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} -(39,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} -(40,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a "} diff --git a/_maps/RandomRuins/SpaceRuins/derelict2.dmm b/_maps/RandomRuins/SpaceRuins/derelict2.dmm index 98e6de9263..c57ac798ac 100644 --- a/_maps/RandomRuins/SpaceRuins/derelict2.dmm +++ b/_maps/RandomRuins/SpaceRuins/derelict2.dmm @@ -1,12 +1,12 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "a" = ( -/turf/open/space, -/area/space) +/turf/template_noop, +/area/template_noop) "b" = ( /obj/structure/window/reinforced{ dir = 4 }, -/turf/open/space, +/turf/template_noop, /area/space/nearstation) "c" = ( /obj/machinery/door/airlock/external, @@ -16,7 +16,7 @@ /obj/structure/window/reinforced{ dir = 8 }, -/turf/open/space, +/turf/template_noop, /area/space/nearstation) "e" = ( /obj/structure/window/reinforced{ @@ -51,7 +51,7 @@ /area/ruin/space/has_grav/powered/dinner_for_two) "k" = ( /obj/structure/window/reinforced, -/turf/open/space, +/turf/template_noop, /area/space/nearstation) "l" = ( /obj/structure/window/reinforced, @@ -91,7 +91,7 @@ /obj/structure/window/reinforced{ dir = 1 }, -/turf/open/space, +/turf/template_noop, /area/space/nearstation) "q" = ( /obj/machinery/light/small{ @@ -112,32 +112,9 @@ a a a a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +k +c +p a a a @@ -154,32 +131,9 @@ a a a a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +k +l +p a a a @@ -196,32 +150,9 @@ a a a a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +k +l +p a a a @@ -238,32 +169,9 @@ a a a a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +k +l +p a a a @@ -279,34 +187,11 @@ a a a a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +f +g +c +g +f a a a @@ -320,521 +205,6 @@ a a a a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} -(7,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} -(8,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} -(9,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} -(10,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} -(11,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} -(12,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} -(13,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -k -c -p -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} -(14,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -k -l -p -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} -(15,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -k -l -p -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} -(16,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -k -l -p -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} -(17,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -f -g -c -g -f -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} -(18,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a f i i @@ -847,31 +217,8 @@ a a a a -a -a -a -a -a -a -a -a -a -a -a -a "} -(19,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a +(7,1,1) = {" a a a @@ -889,31 +236,8 @@ a a a a -a -a -a -a -a -a -a -a -a -a -a -a "} -(20,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a +(8,1,1) = {" b b b @@ -931,31 +255,8 @@ b b b b -a -a -a -a -a -a -a -a -a -a -a -a "} -(21,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a +(9,1,1) = {" c e e @@ -973,31 +274,8 @@ e e e c -a -a -a -a -a -a -a -a -a -a -a -a "} -(22,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a +(10,1,1) = {" d d d @@ -1015,31 +293,8 @@ d d d d -a -a -a -a -a -a -a -a -a -a -a -a "} -(23,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a +(11,1,1) = {" a a a @@ -1057,31 +312,8 @@ a a a a -a -a -a -a -a -a -a -a -a -a -a -a "} -(24,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a +(12,1,1) = {" a a a @@ -1099,31 +331,8 @@ a a a a -a -a -a -a -a -a -a -a -a -a -a -a "} -(25,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a +(13,1,1) = {" a a a @@ -1141,31 +350,8 @@ a a a a -a -a -a -a -a -a -a -a -a -a -a -a "} -(26,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a +(14,1,1) = {" a a a @@ -1183,31 +369,8 @@ a a a a -a -a -a -a -a -a -a -a -a -a -a -a "} -(27,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a +(15,1,1) = {" a a a @@ -1225,31 +388,8 @@ a a a a -a -a -a -a -a -a -a -a -a -a -a -a "} -(28,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a +(16,1,1) = {" a a a @@ -1267,31 +407,8 @@ a a a a -a -a -a -a -a -a -a -a -a -a -a -a "} -(29,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a +(17,1,1) = {" a a a @@ -1309,478 +426,4 @@ a a a a -a -a -a -a -a -a -a -a -a -a -a -a -"} -(30,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} -(31,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} -(32,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} -(33,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} -(34,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} -(35,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} -(36,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} -(37,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} -(38,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} -(39,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} -(40,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a "} diff --git a/_maps/RandomRuins/SpaceRuins/derelict3.dmm b/_maps/RandomRuins/SpaceRuins/derelict3.dmm index 56c1e2c919..37b726dc75 100644 --- a/_maps/RandomRuins/SpaceRuins/derelict3.dmm +++ b/_maps/RandomRuins/SpaceRuins/derelict3.dmm @@ -11,12 +11,12 @@ "d" = ( /obj/structure/lattice, /turf/template_noop, -/area/template_noop) +/area/space/nearstation) "e" = ( /obj/structure/lattice, /obj/structure/lattice, /turf/template_noop, -/area/template_noop) +/area/space/nearstation) (1,1,1) = {" a @@ -42,21 +42,11 @@ a a a a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +c +c +c +c +c a a "} @@ -83,23 +73,13 @@ a a a a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +b +b +b +b +b +b +c a "} (3,1,1) = {" @@ -125,24 +105,14 @@ a a a a -a -a -a -a -a -a -a +b +b +b +b +b +b +b c -c -c -c -c -a -a -a -a -a -a "} (4,1,1) = {" a @@ -168,96 +138,6 @@ a a a a -a -a -a -a -a -b -b -b -b -b -b -c -a -a -a -a -a -"} -(5,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -b -b -b -b -b -b -c -a -a -a -a -"} -(6,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a d b b @@ -265,10 +145,70 @@ b b b c +"} +(5,1,1) = {" a a a a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +d +d +d +b +b +b +c +"} +(6,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +d +d +d +b +b +b +c "} (7,1,1) = {" a @@ -295,22 +235,12 @@ a a a a -a -a -a -a -a d d d b b -b c -a -a -a -a "} (8,1,1) = {" a @@ -337,21 +267,11 @@ a a a a -a -a -a -a -a d d d b b -b -c -a -a -a a "} (9,1,1) = {" @@ -378,22 +298,12 @@ a a a a -a -a -a -a -a -a -a d d +a +e d b -b -c -a -a -a a "} (10,1,1) = {" @@ -427,16 +337,6 @@ a a a a -d -d -d -b -b -a -a -a -a -a "} (11,1,1) = {" a @@ -459,21 +359,11 @@ a a a a -a -a -a -a -a -a -a -a -a d d a -e -d -b +a +a a a a @@ -498,20 +388,10 @@ a a a a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +d +d +d +d a a a @@ -538,21 +418,11 @@ a a a a -a -a -a -a -a -a -a -a -a -a -a d d -a -a +d +d +d a a a @@ -578,23 +448,13 @@ a a a a -a -a -a -a -a -a -a -a -a -a +b +b +b +b d d d -d -a -a -a a a a @@ -617,25 +477,15 @@ a a a a -a -a -a -a -a -a -a -a -a -a -a d d +b +b +c +b +b +b d -d -d -a -a -a a a a @@ -658,26 +508,16 @@ a a a a -a -a -a -a -a -a -a -a -a -a +d +d b b b +c +b +b b d -d -d -a -a -a a a a @@ -699,18 +539,12 @@ a a a a -a -a -a -a -a -a -a -a d d b b +b +b c b b @@ -727,10 +561,6 @@ a a a a -a -a -a -a "} (18,1,1) = {" a @@ -739,24 +569,18 @@ a a a a -a -a -a -a -a -a -a -a -a d d b +d b +c +c +c b c b b -b d a a @@ -769,36 +593,26 @@ a a a a -a -a -a -a "} (19,1,1) = {" a a a -a -a -a -a -a -a -a -a -a -a -a d d -b -b -b +d +d +d +d +d b c b b b +b +b +b d a a @@ -811,41 +625,27 @@ a a a a -a -a -a -a "} (20,1,1) = {" a a a -a -a -a -a -a -a -a -a -a -d -d b -d -b -c -c -c -b -c b b d -a -a -a -a +d +d +d +b +b +b +b +b +b +d +d +d a a a @@ -860,23 +660,6 @@ a "} (21,1,1) = {" a -a -a -a -a -a -a -a -a -d -d -d -d -d -d -d -b -c b b b @@ -884,10 +667,17 @@ b b b d -a -a -a -a +d +d +b +b +b +b +d +d +d +d +d a a a @@ -901,18 +691,13 @@ a a "} (22,1,1) = {" -a -a -a -a -a -a -a -a -a b b b +b +c +b +b d d d @@ -920,11 +705,9 @@ d b b b -b -b -b d d +b d a a @@ -938,27 +721,12 @@ a a a a -a -a -a "} (23,1,1) = {" -a -a -a -a -a -a -a b b b -b -b -b -d -d -d +c b b b @@ -968,9 +736,11 @@ d d d d -a -a -a +d +d +d +d +d a a a @@ -985,35 +755,25 @@ a a "} (24,1,1) = {" -a -a -a -a -a -a -b -b b b c +c +c +c b b d d -d -d -b -b b d d -b d -a -a -a -a -a +d +d +d +d +d a a a @@ -1027,12 +787,6 @@ a a "} (25,1,1) = {" -a -a -a -a -a -a b b b @@ -1046,17 +800,13 @@ d d d d +b +b +b +b +b d d -d -d -d -a -a -a -a -a -a a a a @@ -1070,35 +820,25 @@ a "} (26,1,1) = {" a -a -a -a -a -a +b b b c c -c -c -b -b -d -d b d d d d +b +b +b +b +b +b +b +b d -d -d -d -a -a -a -a -a a a a @@ -1112,16 +852,9 @@ a "} (27,1,1) = {" a -a -a -a -a -a b b b -c -b b b b @@ -1129,17 +862,14 @@ d d d d -d b b b b b -d -d -a -a -a +b +b +b a a a @@ -1156,33 +886,23 @@ a a a a -a -a -a -a +b +b +b +b +d +d +d +b +b b b b c -c -b -d -d -d -d b b b b -b -b -b -b -d -a -a -a -a a a a @@ -1198,16 +918,9 @@ a a a a -a -a -a -a -b -b -b -b -b -b +d +d +d d d d @@ -1216,15 +929,12 @@ b b b b +c +c +c +c b b -b -b -a -a -a -a -a a a a @@ -1242,30 +952,20 @@ a a a a -a -a -a -a -b -b -b +d +d b d d -d -b -b b b +c +c b c b b b -b -a -a -a a a a @@ -1285,12 +985,6 @@ a a a a -a -a -a -d -d -d d d d @@ -1299,10 +993,8 @@ b b b b +b c -c -c -c b b a @@ -1317,8 +1009,6 @@ a a a a -a -a "} (32,1,1) = {" a @@ -1328,361 +1018,15 @@ a a a a -a -a -a -a d d -b +d d d b b -c -c -b -c b b -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} -(33,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -d -d -d -d -b -b -b -b -b -c -b -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} -(34,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -d -d -d -d -d -b -b -b -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} -(35,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} -(36,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} -(37,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} -(38,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} -(39,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} -(40,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a a a a diff --git a/_maps/RandomRuins/SpaceRuins/derelict4.dmm b/_maps/RandomRuins/SpaceRuins/derelict4.dmm index be888b990b..5aeb872327 100644 --- a/_maps/RandomRuins/SpaceRuins/derelict4.dmm +++ b/_maps/RandomRuins/SpaceRuins/derelict4.dmm @@ -112,12 +112,7 @@ a a a a -a -a -a -a -a -a +b a a a @@ -157,13 +152,8 @@ a a a a -a -a -a -a -a -a -a +b +b a a a @@ -177,6 +167,8 @@ a (3,1,1) = {" a a +c +c a a a @@ -196,16 +188,9 @@ a a a a -a -a -a -a -a -a -a -a -a -a +b +b +b a a a @@ -218,17 +203,10 @@ a "} (4,1,1) = {" a -a -a -a -a -a -a -a -a -a -a -a +b +c +c +c a a a @@ -247,6 +225,8 @@ b a a a +b +b a a a @@ -259,37 +239,32 @@ a a "} (5,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a b b +c +c +c +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a a a a @@ -301,7 +276,11 @@ a a "} (6,1,1) = {" -a +b +b +b +b +b a a a @@ -329,27 +308,26 @@ a a a a -b -b -b -a -a -a -a -a -a a a a "} (7,1,1) = {" -a -a -a -a -a -a b +b +b +b +b +a +a +a +a +a +a +c +c +c +c c c c @@ -367,19 +345,6 @@ a a a a -b -a -a -a -b -b -a -a -a -a -a -a -a a a a @@ -387,30 +352,25 @@ a (8,1,1) = {" a a -a -a -a b b +a +a +a +a +a +a +a c c c -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +c +c +c +c +b +b +b a a a @@ -429,30 +389,25 @@ a (9,1,1) = {" a a +b +b +a +a a a a b -b -b -b -b -a -a -a -a -a -a c c -a -a -a -a -a -a -a -a +c +c +c +c +c +c +c +b +b a a a @@ -474,28 +429,23 @@ a a a a +a +a +a +a b b b +c +c +c +c +c +c +c +b b b -a -a -a -a -a -a -c -c -c -c -c -c -c -a -a -a -a a a a @@ -518,27 +468,22 @@ a a a a +a +b +b +b +b b b -a -a -a -a -a -a -a -c -c -c -c -c c c b b b -a -a +b +b +b +b a a a @@ -560,39 +505,34 @@ a a a a +a b b +b +b +d +d +b +b +b +b +b +b +b +b +d +a +a a a a a a b -c -c -c -c -c -c -c -c -c b b a a -a -a -a -a -a -a -a -a -a -a -a -a "} (13,1,1) = {" a @@ -603,6 +543,23 @@ a a a a +d +d +b +b +d +d +b +b +b +d +b +b +b +b +b +a +a a a a @@ -612,28 +569,6 @@ a b b b -c -c -c -c -c -c -c -b -b -b -a -a -a -a -a -a -a -a -a -a -a -a a "} (14,1,1) = {" @@ -645,19 +580,15 @@ a a a a -a -a -a -a -a +d +d +b b b b b b b -c -c b b b @@ -671,12 +602,11 @@ a a a a -a -a -a -a -a -a +b +b +b +b +b "} (15,1,1) = {" a @@ -687,137 +617,6 @@ a a a a -a -a -a -a -a -b -b -b -b -d -d -b -b -b -b -b -b -b -b -d -a -a -a -a -a -a -a -b -b -b -a -a -"} -(16,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -d -d -b -b -d -d -b -b -b -d -b -b -b -b -b -a -a -a -a -a -a -a -a -b -b -b -a -"} -(17,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -d -d -b -b -b -b -b -b -b -b -b -b -b -b -b -b -a -a -a -a -a -a -b -b -b -b -b -"} -(18,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a d d d @@ -846,12 +645,7 @@ b c c "} -(19,1,1) = {" -a -a -a -a -a +(16,1,1) = {" a a a @@ -888,12 +682,7 @@ d c c "} -(20,1,1) = {" -a -a -a -a -a +(17,1,1) = {" a a a @@ -930,12 +719,7 @@ c c a "} -(21,1,1) = {" -a -a -a -a -a +(18,1,1) = {" a a a @@ -972,12 +756,7 @@ c c a "} -(22,1,1) = {" -a -a -a -a -a +(19,1,1) = {" a a a @@ -1014,12 +793,7 @@ c c a "} -(23,1,1) = {" -a -a -a -a -a +(20,1,1) = {" a a a @@ -1056,12 +830,7 @@ a a a "} -(24,1,1) = {" -a -a -a -a -a +(21,1,1) = {" a a a @@ -1098,12 +867,7 @@ a a a "} -(25,1,1) = {" -a -a -a -a -a +(22,1,1) = {" a a a @@ -1140,12 +904,7 @@ a a a "} -(26,1,1) = {" -a -a -a -a -a +(23,1,1) = {" a a a @@ -1182,12 +941,7 @@ a a a "} -(27,1,1) = {" -a -a -a -a -a +(24,1,1) = {" a a a @@ -1224,12 +978,7 @@ a a a "} -(28,1,1) = {" -a -a -a -a -a +(25,1,1) = {" a a b @@ -1266,6 +1015,117 @@ a a a "} +(26,1,1) = {" +a +a +a +b +b +a +a +a +b +b +b +b +b +c +c +c +c +c +c +c +c +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(27,1,1) = {" +a +a +a +a +a +a +a +a +a +b +b +b +c +c +c +c +c +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(28,1,1) = {" +a +a +a +a +a +a +a +a +a +a +b +b +c +c +c +c +c +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} (29,1,1) = {" a a @@ -1275,24 +1135,19 @@ a a a a -b -b a a a -b -b -b -b -b -c -c -c -c -c -c -c -c +a +a +a +a +a +a +a +a +a +a a a a @@ -1323,14 +1178,9 @@ a a a a -b -b -b -c -c -c -c -c +a +a +a a a a @@ -1366,25 +1216,20 @@ a a a a -b -b +a +a +a +a +a +a +a +a +a +a +a c c c -c -c -a -a -a -a -a -a -a -a -a -a -a -a a a a @@ -1418,15 +1263,10 @@ a a a a -a -a -a -a -a -a -a -a -a +c +c +b +b a a a @@ -1460,15 +1300,10 @@ a a a a -a -a -a -a -a -a -a -a -a +c +c +d +b a a a @@ -1500,17 +1335,12 @@ a a a a +b a -a -a -a -a -a -a -a -c -c -c +b +d +b +b a a a @@ -1544,137 +1374,6 @@ a a a a -a -a -a -a -a -c -c -b -b -a -a -a -a -a -a -"} -(36,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -c -c -d -b -a -a -a -a -a -a -"} -(37,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -a -b -d -b -b -a -a -a -a -a -a -"} -(38,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a b b a @@ -1686,87 +1385,3 @@ a a a "} -(39,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} -(40,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} diff --git a/_maps/RandomRuins/SpaceRuins/derelict5.dmm b/_maps/RandomRuins/SpaceRuins/derelict5.dmm index 9a8e5000b9..93486d1056 100644 --- a/_maps/RandomRuins/SpaceRuins/derelict5.dmm +++ b/_maps/RandomRuins/SpaceRuins/derelict5.dmm @@ -105,11 +105,9 @@ a a a a -a -a -a -a -a +b +b +b a a a @@ -147,8 +145,6 @@ a a a a -a -a b b b @@ -176,7 +172,7 @@ a a a a -a +b a a a @@ -192,12 +188,10 @@ a a a b +a +a +a b -b -a -a -a -a "} (4,1,1) = {" a @@ -220,7 +214,6 @@ a a a a -b a a a @@ -235,11 +228,10 @@ a a a a -b a a a -b +a "} (5,1,1) = {" a @@ -251,6 +243,20 @@ a a a a +c +c +c +c +a +a +a +a +a +a +a +a +a +b a a a @@ -264,23 +270,7 @@ a a a a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +b a "} (6,1,1) = {" @@ -291,10 +281,8 @@ a a a a -a -a -a -a +c +c c c c @@ -308,7 +296,6 @@ a a a a -b a a a @@ -322,7 +309,8 @@ a a a a -b +a +a a "} (7,1,1) = {" @@ -332,11 +320,11 @@ a a a a -a -a -a -c -c +b +b +b +b +b c c c @@ -350,11 +338,9 @@ a a a a -a -a -a -a -a +b +b +b a a a @@ -373,9 +359,7 @@ a a a a -a -a -a +b b b b @@ -385,9 +369,9 @@ c c c c -a -a -a +c +c +c a a a @@ -415,8 +399,9 @@ a a a a -a -a +b +b +b b b b @@ -428,8 +413,6 @@ c c c c -c -c a a a @@ -439,8 +422,7 @@ a b b b -a -a +b a a a @@ -457,8 +439,6 @@ a a a a -a -a b b b @@ -468,9 +448,9 @@ b b b b -c -c -c +b +b +b c c a @@ -498,9 +478,7 @@ a a a a -a -a -a +b b b b @@ -515,16 +493,16 @@ b b c c +c +c +a +a a a a a a a -b -b -b -b a a a @@ -540,8 +518,6 @@ a a a a -a -a b b b @@ -555,7 +531,7 @@ b b b b -c +b c c c @@ -582,8 +558,6 @@ a a a a -a -a b b b @@ -601,8 +575,8 @@ b c c c -a -a +c +c a a a @@ -624,24 +598,22 @@ a a a a -a -a b b b b b +d +d +f +f +e +f +e +e +e +d b -b -b -b -b -b -b -b -b -c -c c c c @@ -666,50 +638,6 @@ a a a a -a -a -b -b -b -b -b -d -d -f -f -e -f -e -e -e -d -b -c -c -c -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} -(16,1,1) = {" -a -a -a -a -a -a b b b @@ -745,9 +673,7 @@ a a a "} -(17,1,1) = {" -a -a +(16,1,1) = {" a a a @@ -787,9 +713,7 @@ a a a "} -(18,1,1) = {" -a -a +(17,1,1) = {" a a a @@ -829,9 +753,7 @@ a a a "} -(19,1,1) = {" -a -a +(18,1,1) = {" a a a @@ -871,9 +793,7 @@ a a a "} -(20,1,1) = {" -a -a +(19,1,1) = {" a a a @@ -913,9 +833,7 @@ a a a "} -(21,1,1) = {" -a -a +(20,1,1) = {" a a a @@ -955,9 +873,7 @@ b b a "} -(22,1,1) = {" -a -a +(21,1,1) = {" a a a @@ -997,9 +913,7 @@ b b a "} -(23,1,1) = {" -a -a +(22,1,1) = {" a a a @@ -1039,9 +953,7 @@ b b b "} -(24,1,1) = {" -a -a +(23,1,1) = {" a a a @@ -1081,9 +993,7 @@ b b b "} -(25,1,1) = {" -a -a +(24,1,1) = {" a a a @@ -1123,9 +1033,7 @@ b b b "} -(26,1,1) = {" -a -a +(25,1,1) = {" a b a @@ -1165,9 +1073,7 @@ b b b "} -(27,1,1) = {" -a -a +(26,1,1) = {" a a a @@ -1207,6 +1113,46 @@ c b b "} +(27,1,1) = {" +a +a +a +a +a +a +a +a +a +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +c +c +c +c +c +c +c +c +c +c +b +b +"} (28,1,1) = {" a a @@ -1217,8 +1163,6 @@ a a a a -a -a b b b @@ -1259,9 +1203,6 @@ a a a a -a -a -b b b b @@ -1288,11 +1229,14 @@ c c c c +c b b "} (30,1,1) = {" a +b +b a a a @@ -1300,10 +1244,6 @@ a a a a -a -a -a -b b b b @@ -1328,15 +1268,13 @@ c c c c -c -c +b +b b b "} (31,1,1) = {" -a -a -a +b b b a @@ -1361,6 +1299,7 @@ b b b b +b c c c @@ -1369,15 +1308,13 @@ c c c c -c -b b b b +a "} (32,1,1) = {" -a -a +b b b b @@ -1388,8 +1325,7 @@ a a a a -b -b +a b b b @@ -1410,8 +1346,8 @@ c c c c -c -c +b +b b b b @@ -1419,8 +1355,6 @@ a "} (33,1,1) = {" a -a -b b b b @@ -1446,10 +1380,10 @@ b b b b -c -c -c -c +b +b +b +b c c b @@ -1460,11 +1394,6 @@ b a "} (34,1,1) = {" -a -a -a -b -b b a a @@ -1472,6 +1401,11 @@ a a a a +b +a +a +a +a a a b @@ -1492,18 +1426,14 @@ b b b b -c -c -b b b b b a +a "} (35,1,1) = {" -a -a b a a @@ -1511,7 +1441,7 @@ a a a a -b +a a a a @@ -1546,6 +1476,8 @@ a (36,1,1) = {" a a +a +a b a a @@ -1560,11 +1492,7 @@ a a a a -b -b -b -b -b +a b b b @@ -1592,50 +1520,6 @@ a a a a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -a -a -"} -(38,1,1) = {" -a -a -a -a -a -a -a -a a a a @@ -1669,87 +1553,3 @@ a a a "} -(39,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} -(40,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} diff --git a/_maps/RandomRuins/SpaceRuins/derelict6.dmm b/_maps/RandomRuins/SpaceRuins/derelict6.dmm index c1ba9f561c..c3497f45e8 100644 --- a/_maps/RandomRuins/SpaceRuins/derelict6.dmm +++ b/_maps/RandomRuins/SpaceRuins/derelict6.dmm @@ -4,14 +4,16 @@ /area/template_noop) "ab" = ( /obj/structure/lattice, -/turf/template_noop, -/area/template_noop) -"ac" = ( -/turf/open/floor/plating/airless{ - icon_plating = "platingdmg3"; - icon_state = "platingdmg3" +/obj/structure/fluff/broken_flooring{ + icon_state = "singular"; + dir = 1 }, -/area/ruin/unpowered) +/turf/template_noop, +/area/space/nearstation) +"ac" = ( +/obj/structure/lattice, +/turf/template_noop, +/area/space/nearstation) "ad" = ( /obj/structure/girder, /turf/open/floor/plating/airless{ @@ -23,14 +25,14 @@ /obj/item/stack/sheet/metal, /obj/structure/lattice, /turf/template_noop, -/area/template_noop) +/area/space/nearstation) "af" = ( -/obj/item/stack/sheet/metal, -/turf/open/floor/plating/airless{ - icon_plating = "platingdmg2"; - icon_state = "platingdmg2" +/obj/structure/fluff/broken_flooring{ + icon_state = "pile"; + dir = 8 }, -/area/ruin/unpowered) +/turf/template_noop, +/area/template_noop) "ag" = ( /turf/open/floor/plasteel/airless, /area/ruin/unpowered) @@ -58,11 +60,13 @@ }, /area/ruin/unpowered) "al" = ( -/turf/open/floor/plating/airless{ - icon_plating = "platingdmg2"; - icon_state = "platingdmg2" +/obj/structure/fluff/broken_flooring{ + icon_state = "singular"; + dir = 4 }, -/area/ruin/unpowered) +/obj/structure/lattice, +/turf/template_noop, +/area/space/nearstation) "am" = ( /obj/item/stack/rods, /turf/open/floor/plating/airless, @@ -167,6 +171,10 @@ /turf/open/floor/plasteel/airless, /area/ruin/unpowered) "aD" = ( +/turf/open/floor/plasteel/bar{ + initial_gas_mix = "TEMP=2.7" + }, +/obj/item/stack/sheet/metal, /turf/open/floor/plating/airless{ icon_plating = "platingdmg2"; icon_state = "platingdmg2" @@ -276,22 +284,15 @@ /turf/open/floor/plasteel/airless/bar, /area/ruin/unpowered) "aY" = ( -/turf/open/floor/plasteel/bar{ - initial_gas_mix = "TEMP=2.7" - }, +/obj/structure/lattice, /obj/item/stack/sheet/metal, -/turf/open/floor/plating/airless{ - icon_plating = "platingdmg2"; - icon_state = "platingdmg2" - }, -/area/ruin/unpowered) -"aZ" = ( -/obj/structure/fluff/broken_flooring{ - icon_state = "pile"; - dir = 8 - }, /turf/template_noop, -/area/template_noop) +/area/space/nearstation) +"aZ" = ( +/obj/structure/lattice, +/obj/item/shard, +/turf/template_noop, +/area/space/nearstation) "ba" = ( /mob/living/simple_animal/hostile/retaliate/ghost, /turf/open/floor/plasteel/airless/cafeteria, @@ -315,11 +316,6 @@ icon_state = "platingdmg2" }, /area/ruin/unpowered) -"bf" = ( -/obj/structure/lattice, -/obj/item/stack/sheet/metal, -/turf/template_noop, -/area/template_noop) "bg" = ( /obj/item/stack/sheet/metal, /turf/open/floor/plating/airless{ @@ -370,11 +366,6 @@ icon_state = "platingdmg3" }, /area/ruin/unpowered) -"bn" = ( -/obj/structure/lattice, -/obj/item/shard, -/turf/template_noop, -/area/template_noop) "bo" = ( /obj/item/stack/rods, /turf/template_noop, @@ -402,14 +393,6 @@ icon_state = "platingdmg1" }, /area/ruin/unpowered) -"bs" = ( -/obj/structure/lattice, -/obj/structure/fluff/broken_flooring{ - icon_state = "singular"; - dir = 1 - }, -/turf/template_noop, -/area/template_noop) "bt" = ( /obj/structure/fluff/broken_flooring{ icon_state = "side"; @@ -468,14 +451,6 @@ }, /turf/template_noop, /area/template_noop) -"bB" = ( -/obj/structure/fluff/broken_flooring{ - icon_state = "singular"; - dir = 4 - }, -/obj/structure/lattice, -/turf/template_noop, -/area/template_noop) "bC" = ( /obj/structure/lattice, /obj/structure/fluff/broken_flooring{ @@ -540,11 +515,7 @@ aa aa aa aa -aa -aa -ab -aa -aa +ac aa aa aa @@ -565,12 +536,10 @@ aa aa aa aa -aa -aa bA aa -ab -ab +ac +ac aa aa aa @@ -583,34 +552,28 @@ aa aa aa aa -aZ -aa "} (3,1,1) = {" aa aa aa aa +ac aa -aa -ab -aa -ab +ac bC bE aa aa aa -ab -ab -aa -ab -ab -aa -aa +ac +ac aa +ac +ac aa aa +af aa "} (4,1,1) = {" @@ -618,24 +581,20 @@ aa aa aa aa -aa -aa -ab ac +ap aw ag ag -aD +be bH aa -ab -ab -aa -ab -ab -ab -aa +ac +ac aa +ac +ac +ac aa aa aa @@ -645,37 +604,31 @@ aa aa aa aa -aa -aa bw ad ag ag ag ah -al -al -al -al -al -al -al -al +be +be +be +be +be +be +be +be bH aa aa -aa -aa "} (6,1,1) = {" aa aa aa -aa -aa -ab -ac ac +ap +ap at bD ag @@ -688,20 +641,16 @@ bg bl ah ay -al -ab -aa -aa +be +ac aa "} (7,1,1) = {" aa -aa -aa -ab -ab -ab -al +ac +ac +ac +be ai aw ag @@ -714,20 +663,16 @@ ap ap ah ah -al -al -aa -aa +be +be aa aa "} (8,1,1) = {" aa -aa -aa -ab -ab ac +ac +ap am ai ag @@ -743,18 +688,14 @@ aq bp ah as -ab -aa -aa +ac aa "} (9,1,1) = {" aa -aa -aa -ab -ab ac +ac +ap ah ai av @@ -769,19 +710,15 @@ bh ap ap br -ab -ab -aa -aa +ac +ac aa "} (10,1,1) = {" aa aa aa -aa -aa -ac +ap ah aq ag @@ -796,19 +733,15 @@ bi ap bq bl -ab -ab -aa -aa +ac +ac aa "} (11,1,1) = {" aa aa -aa -aa bw -af +as ai ai ag @@ -823,17 +756,13 @@ bj au ap aq +ac +ac ab -ab -bs -aa -aa "} (12,1,1) = {" -aa -aa -bs ab +ac ag ag an @@ -850,16 +779,12 @@ aR aR aR ai -ab -ab -ab -aa -aa +ac +ac +ac "} (13,1,1) = {" -aa -aa -ab +ac bt ag by @@ -877,16 +802,12 @@ aR aS ai ai -ab -ab -ab -aa -aa +ac +ac +ac "} (14,1,1) = {" aa -aa -aa bu ag ag @@ -904,17 +825,13 @@ aM aX aM ai -ab -ab -ab -aa -aa +ac +ac +ac "} (15,1,1) = {" aa aa -aa -aa ad ai ai @@ -931,19 +848,15 @@ aT au be ai -ab -aa -aa +ac aa aa "} (16,1,1) = {" aa -aa -aa -ab ac ap +ap ao ai ag @@ -952,23 +865,19 @@ ag aG aO bI -ab +ac be ap -ab +ac au aq aa aa aa -aa -aa "} (17,1,1) = {" aa -aa -aa -ab +ac bx ak ap @@ -984,20 +893,16 @@ ap bk bm az -ab +ac bo aa aa -aa -aa "} (18,1,1) = {" aa aa -aa -aa ae -ac +ap ap aq ag @@ -1008,11 +913,9 @@ aM ap ap ap -ab ac -ab -aa -aa +ap +ac aa aa aa @@ -1022,10 +925,8 @@ aa aa aa aa -aa -aa bz -ac +ap ai ag ag @@ -1033,12 +934,10 @@ ag ai aP ap -ab -be ac -bn -aa -aa +be +ap +aZ aa aa aa @@ -1049,10 +948,8 @@ aa aa aa aa -aa -aa -ab ac +ap ai ag ag @@ -1060,26 +957,22 @@ ag ai ap aV -aY +aD +ap +ac ac -ab -ab aa aa aa aA aa -aa -aa "} (21,1,1) = {" aa aa aa aa -aa -aa -af +as ar ag ag @@ -1087,12 +980,10 @@ ag ai au ap +ap +aY +ac ac -bf -ab -ab -aa -aa aa aa aa @@ -1104,10 +995,8 @@ aa aa aa aa -aa -aa -ab ac +ap aw at ag @@ -1115,7 +1004,7 @@ ai ai ai aq -ab +ac aa bo aa @@ -1123,26 +1012,20 @@ aa aa aa aa -aa -aa "} (23,1,1) = {" aa -aa -aa bv aa aa aa aa -bB -ab +al +ac bF ai -ab -ab -aa -aa +ac +ac aa aa aa @@ -1161,12 +1044,8 @@ aa aa aa aa -aa -aa -ab -ab -aa -aa +ac +ac aa aa aa @@ -1189,8 +1068,6 @@ aa aa aa aa -aa -aa bG aa aa @@ -1204,6 +1081,4 @@ aa aa aa aa -aa -aa "} diff --git a/_maps/RandomRuins/SpaceRuins/emptyshell.dmm b/_maps/RandomRuins/SpaceRuins/emptyshell.dmm index 583151d8ef..7cbaa3a0b6 100644 --- a/_maps/RandomRuins/SpaceRuins/emptyshell.dmm +++ b/_maps/RandomRuins/SpaceRuins/emptyshell.dmm @@ -53,6 +53,10 @@ }, /turf/open/floor/plating, /area/ruin/unpowered) +"Q" = ( +/obj/structure/lattice, +/turf/template_noop, +/area/space/nearstation) (1,1,1) = {" a @@ -61,7 +65,7 @@ a a a a -b +Q a a a @@ -76,12 +80,12 @@ a a a a -b -b -b +Q +Q +Q a a -b +Q a a a @@ -92,23 +96,23 @@ a a a a -b +Q a a -b +Q i i -b +Q a a a -b +Q a "} (4,1,1) = {" a -b -b +Q +Q c c c @@ -124,7 +128,7 @@ a "} (5,1,1) = {" a -b +Q c c c @@ -137,7 +141,7 @@ c c c c -b +Q "} (6,1,1) = {" a @@ -154,7 +158,7 @@ l c c c -b +Q "} (7,1,1) = {" a @@ -192,7 +196,7 @@ a "} (9,1,1) = {" a -b +Q c c d @@ -226,7 +230,7 @@ a "} (11,1,1) = {" a -b +Q c c f @@ -277,7 +281,7 @@ a "} (14,1,1) = {" a -b +Q c c c @@ -312,17 +316,17 @@ a (16,1,1) = {" a a -b +Q a -b -b -b +Q +Q +Q a -b -b -b +Q +Q +Q a -b +Q a a "} @@ -332,12 +336,12 @@ a a a a -b -b +Q +Q a -b -b -b +Q +Q +Q a a a diff --git a/_maps/RandomRuins/SpaceRuins/gasthelizards.dmm b/_maps/RandomRuins/SpaceRuins/gasthelizards.dmm index 3ca9545b00..cbdff3750b 100644 --- a/_maps/RandomRuins/SpaceRuins/gasthelizards.dmm +++ b/_maps/RandomRuins/SpaceRuins/gasthelizards.dmm @@ -5,7 +5,7 @@ "b" = ( /obj/structure/lattice, /turf/template_noop, -/area/template_noop) +/area/space/nearstation) "c" = ( /turf/closed/wall, /area/ruin/space/has_grav/gasthelizard) diff --git a/_maps/RandomRuins/SpaceRuins/gondolaasteroid.dmm b/_maps/RandomRuins/SpaceRuins/gondolaasteroid.dmm index b45f9a7794..de08efa647 100644 --- a/_maps/RandomRuins/SpaceRuins/gondolaasteroid.dmm +++ b/_maps/RandomRuins/SpaceRuins/gondolaasteroid.dmm @@ -23,9 +23,6 @@ /obj/structure/flora/ausbushes/ywflowers, /turf/open/floor/plating/asteroid/airless, /area/ruin/space/has_grav) -"g" = ( -/turf/open/floor/plating/asteroid/airless, -/area/ruin/space/has_grav) "h" = ( /mob/living/simple_animal/pet/gondola, /turf/open/floor/plating/asteroid/airless, @@ -761,7 +758,7 @@ b b b b -g +c c c c diff --git a/_maps/RandomRuins/SpaceRuins/intactemptyship.dmm b/_maps/RandomRuins/SpaceRuins/intactemptyship.dmm index 636eb1f614..c2996c55e6 100644 --- a/_maps/RandomRuins/SpaceRuins/intactemptyship.dmm +++ b/_maps/RandomRuins/SpaceRuins/intactemptyship.dmm @@ -80,10 +80,6 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/ruin/space/has_grav/powered/authorship) -"q" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/ruin/space/has_grav/powered/authorship) "r" = ( /obj/structure/table/wood, /obj/item/paper_bin, @@ -259,9 +255,9 @@ d c c c -q +p u -q +p c c c diff --git a/_maps/RandomRuins/SpaceRuins/listeningstation.dmm b/_maps/RandomRuins/SpaceRuins/listeningstation.dmm index b022d6b6e8..2fbe9de8d4 100644 --- a/_maps/RandomRuins/SpaceRuins/listeningstation.dmm +++ b/_maps/RandomRuins/SpaceRuins/listeningstation.dmm @@ -3,7 +3,7 @@ /turf/template_noop, /area/template_noop) "ab" = ( -/turf/closed/mineral, +/turf/closed/mineral/random, /area/ruin/unpowered/no_grav) "ac" = ( /turf/closed/wall, @@ -23,14 +23,12 @@ /area/ruin/space/has_grav/listeningstation) "ae" = ( /obj/structure/table/reinforced, -/obj/item/paper_bin, /obj/machinery/firealarm{ dir = 2; pixel_y = 24 }, /obj/effect/decal/cleanable/dirt, -/obj/item/paper/fluff/ruins/listeningstation/reports/november, -/obj/item/pen, +/obj/machinery/computer/libraryconsole/bookmanagement, /turf/open/floor/plasteel/dark, /area/ruin/space/has_grav/listeningstation) "af" = ( @@ -53,6 +51,14 @@ dir = 4 }, /obj/effect/decal/cleanable/dirt, +/obj/machinery/newscaster{ + pixel_y = 32 + }, +/obj/item/device/radio/intercom{ + freerange = 1; + name = "Syndicate Radio Intercom"; + pixel_x = -30 + }, /turf/open/floor/plasteel/dark, /area/ruin/space/has_grav/listeningstation) "ai" = ( @@ -106,7 +112,7 @@ /area/ruin/space/has_grav/listeningstation) "ao" = ( /obj/machinery/light/small, -/obj/structure/sign/vacuum{ +/obj/structure/sign/warning/vacuum{ pixel_y = 32 }, /obj/effect/decal/cleanable/dirt, @@ -145,11 +151,11 @@ /turf/open/floor/plasteel/showroomfloor, /area/ruin/space/has_grav/listeningstation) "as" = ( +/obj/effect/decal/cleanable/dirt, /obj/machinery/computer/med_data/syndie{ dir = 4; req_one_access = null }, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/dark, /area/ruin/space/has_grav/listeningstation) "at" = ( @@ -183,6 +189,10 @@ /obj/structure/extinguisher_cabinet{ pixel_x = 25 }, +/obj/structure/table, +/obj/item/paper_bin, +/obj/item/paper/fluff/ruins/listeningstation/reports/november, +/obj/item/pen, /turf/open/floor/plasteel/dark, /area/ruin/space/has_grav/listeningstation) "aw" = ( @@ -367,10 +377,6 @@ /area/ruin/space/has_grav/listeningstation) "aK" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/hatch{ - name = "Telecommunications"; - req_access_txt = "150" - }, /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -378,6 +384,10 @@ pixel_x = 5; pixel_y = 5 }, +/obj/machinery/door/airlock/hatch{ + name = "Telecommunications"; + req_access_txt = "150" + }, /turf/open/floor/plasteel/vault{ dir = 5 }, @@ -391,16 +401,16 @@ /area/ruin/space/has_grav/listeningstation) "aM" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/hatch{ - name = "E.V.A. Equipment"; - req_access_txt = "150" - }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ piping_layer = 3; pixel_x = 5; pixel_y = 5 }, +/obj/machinery/door/airlock/hatch{ + name = "E.V.A. Equipment"; + req_access_txt = "150" + }, /turf/open/floor/plasteel/vault{ dir = 5 }, @@ -411,7 +421,7 @@ dir = 8; pixel_x = -26 }, -/obj/structure/showcase/machinery/microwave, +/obj/machinery/microwave, /turf/open/floor/plasteel/vault{ dir = 5 }, @@ -459,9 +469,6 @@ /area/ruin/space/has_grav/listeningstation) "aR" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock{ - name = "Personal Quarters" - }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -471,6 +478,9 @@ pixel_x = 5; pixel_y = 5 }, +/obj/machinery/door/airlock{ + name = "Personal Quarters" + }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/listeningstation) "aS" = ( @@ -724,7 +734,7 @@ /obj/machinery/syndicatebomb/self_destruct{ anchored = 1 }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ desc = "A warning sign which reads 'DANGER: SELF DESTRUCT DEVICE'."; name = "DANGER: SELF DESTRUCT DEVICE"; pixel_x = 32 @@ -741,14 +751,11 @@ /turf/open/floor/plating, /area/ruin/space/has_grav/listeningstation) "bn" = ( -/obj/structure/sign/bluecross_2, +/obj/structure/sign/departments/medbay/alt, /turf/closed/wall, /area/ruin/space/has_grav/listeningstation) "bo" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/medical/glass{ - name = "Medbay" - }, /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -756,6 +763,9 @@ pixel_x = 5; pixel_y = 5 }, +/obj/machinery/door/airlock/medical/glass{ + name = "Medbay" + }, /turf/open/floor/plasteel/white, /area/ruin/space/has_grav/listeningstation) "bp" = ( @@ -834,11 +844,12 @@ }, /area/ruin/space/has_grav/listeningstation) "bu" = ( -/obj/machinery/sleeper/syndie{ - dir = 8 +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/secure_closet/medical1{ + req_access = null; + req_access_txt = "150" }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/white, /area/ruin/space/has_grav/listeningstation) "bv" = ( @@ -988,6 +999,25 @@ dir = 5 }, /area/ruin/space/has_grav/listeningstation) +"bJ" = ( +/obj/docking_port/stationary{ + dir = 4; + dwidth = 6; + height = 7; + id = "caravansyndicate3_listeningpost"; + name = "Syndicate Listening Post"; + width = 15 + }, +/obj/docking_port/stationary{ + dir = 4; + dwidth = 4; + height = 5; + id = "caravansyndicate1_listeningpost"; + name = "Syndicate Listening Post"; + width = 9 + }, +/turf/template_noop, +/area/template_noop) (1,1,1) = {" aa @@ -2239,7 +2269,7 @@ aa aa aa aa -aa +bJ aa aa aa diff --git a/_maps/RandomRuins/SpaceRuins/mechtransport.dmm b/_maps/RandomRuins/SpaceRuins/mechtransport.dmm index 0f97ccfa4d..6e35de07be 100644 --- a/_maps/RandomRuins/SpaceRuins/mechtransport.dmm +++ b/_maps/RandomRuins/SpaceRuins/mechtransport.dmm @@ -12,9 +12,6 @@ "d" = ( /turf/closed/wall/mineral/titanium, /area/ruin/space/has_grav/powered/mechtransport) -"e" = ( -/turf/closed/wall/mineral/titanium, -/area/ruin/space/has_grav/powered/mechtransport) "f" = ( /obj/structure/closet/crate/secure/loot, /obj/effect/decal/cleanable/cobweb, @@ -61,9 +58,6 @@ }, /turf/open/floor/mineral/titanium/blue, /area/ruin/space/has_grav/powered/mechtransport) -"o" = ( -/turf/closed/wall/mineral/titanium, -/area/ruin/space/has_grav/powered/mechtransport) "p" = ( /obj/machinery/door/airlock/hatch{ name = "Cockpit"; @@ -71,9 +65,6 @@ }, /turf/open/floor/mineral/titanium, /area/ruin/space/has_grav/powered/mechtransport) -"q" = ( -/turf/closed/wall/mineral/titanium, -/area/ruin/space/has_grav/powered/mechtransport) "r" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/cobweb, @@ -146,7 +137,7 @@ "I" = ( /obj/structure/lattice, /turf/template_noop, -/area/template_noop) +/area/ruin/space/has_grav/powered/mechtransport) "J" = ( /obj/machinery/computer/mecha{ dir = 8 @@ -179,7 +170,7 @@ "P" = ( /obj/item/stack/sheet/metal, /turf/template_noop, -/area/template_noop) +/area/ruin/space/has_grav/powered/mechtransport) "Q" = ( /obj/structure/mecha_wreckage/gygax, /turf/open/floor/mineral/titanium/airless, @@ -188,23 +179,17 @@ /turf/open/floor/plating/airless{ icon_state = "platingdmg3" }, -/area/template_noop) +/area/ruin/space/has_grav/powered/mechtransport) "S" = ( /obj/item/stack/rods, /turf/open/floor/plating/airless, /area/ruin/space/has_grav/powered/mechtransport) "T" = ( -/turf/closed/wall/mineral/titanium, -/area/ruin/space/has_grav/powered/mechtransport) -"U" = ( -/turf/closed/wall/mineral/titanium, +/turf/template_noop, /area/ruin/space/has_grav/powered/mechtransport) "V" = ( /obj/item/stack/rods, /turf/template_noop, -/area/template_noop) -"W" = ( -/turf/closed/wall/mineral/titanium, /area/ruin/space/has_grav/powered/mechtransport) "X" = ( /obj/structure/shuttle/engine/propulsion, @@ -216,23 +201,23 @@ a a a b -e -e -e -e +d +d +d +d G I M P -a -a -a +T +T +T "} (2,1,1) = {" b -e -e -e +d +d +d r v B @@ -243,7 +228,7 @@ H I R V -a +T "} (3,1,1) = {" c @@ -259,14 +244,14 @@ H N I I -a -a +T +T "} (4,1,1) = {" c g l -e +d t w C @@ -276,14 +261,14 @@ w G H P -a -a +T +T "} (5,1,1) = {" c h m -e +d s x w @@ -294,13 +279,13 @@ O s S I -a +T "} (6,1,1) = {" c i n -e +d t y z @@ -310,14 +295,14 @@ L O H H -a -a +T +T "} (7,1,1) = {" c j J -e +d t z w @@ -326,15 +311,15 @@ y w w Q -e +d b X "} (8,1,1) = {" b -e -e -e +d +d +d u A y @@ -343,8 +328,8 @@ w B y s -e -e +d +d X "} (9,1,1) = {" @@ -352,14 +337,14 @@ a a a b -e -e +d +d D D D D D -e +d b b X diff --git a/_maps/RandomRuins/SpaceRuins/oldAIsat.dmm b/_maps/RandomRuins/SpaceRuins/oldAIsat.dmm index 7397d26b68..eff006f061 100644 --- a/_maps/RandomRuins/SpaceRuins/oldAIsat.dmm +++ b/_maps/RandomRuins/SpaceRuins/oldAIsat.dmm @@ -5,7 +5,7 @@ "ab" = ( /obj/structure/lattice, /turf/template_noop, -/area/template_noop) +/area/space/nearstation) "ac" = ( /turf/open/floor/plating/airless, /area/tcommsat/chamber) @@ -13,16 +13,16 @@ /obj/structure/lattice, /obj/structure/grille/broken, /turf/template_noop, -/area/template_noop) +/area/space/nearstation) "ae" = ( /obj/structure/lattice, /obj/structure/grille, /turf/template_noop, -/area/template_noop) +/area/space/nearstation) "af" = ( /obj/structure/grille, /turf/open/floor/plating/airless, -/area/template_noop) +/area/space/nearstation) "ag" = ( /turf/closed/wall/r_wall, /area/tcommsat/chamber) @@ -101,7 +101,7 @@ dir = 4 }, /turf/template_noop, -/area/template_noop) +/area/space/nearstation) "au" = ( /obj/structure/cable{ icon_state = "1-2" @@ -125,7 +125,7 @@ dir = 8 }, /turf/template_noop, -/area/template_noop) +/area/space/nearstation) "ay" = ( /obj/effect/spawner/lootdrop/crate_spawner, /turf/open/floor/plasteel/airless, @@ -256,7 +256,7 @@ /turf/template_noop, /area/template_noop) "aU" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall/r_wall, /area/tcommsat/chamber) "aV" = ( @@ -402,7 +402,7 @@ }, /obj/structure/lattice, /turf/template_noop, -/area/template_noop) +/area/space/nearstation) "bs" = ( /obj/structure/window/reinforced{ dir = 1 @@ -435,7 +435,7 @@ }, /obj/structure/lattice, /turf/template_noop, -/area/template_noop) +/area/space/nearstation) "bz" = ( /obj/structure/window/reinforced{ dir = 8 @@ -482,7 +482,7 @@ }, /obj/structure/lattice, /turf/template_noop, -/area/template_noop) +/area/space/nearstation) "bG" = ( /obj/structure/window/reinforced{ dir = 4 @@ -669,7 +669,7 @@ /obj/structure/window/reinforced, /obj/structure/lattice, /turf/template_noop, -/area/template_noop) +/area/space/nearstation) "cl" = ( /obj/effect/turf_decal/stripes/line{ dir = 9 @@ -765,11 +765,7 @@ icon_state = "medium" }, /turf/template_noop, -/area/template_noop) -"cA" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/middle, -/turf/open/floor/plating/airless, -/area/tcommsat/chamber) +/area/space/nearstation) "cB" = ( /obj/effect/spawner/structure/window/hollow/reinforced, /turf/open/floor/plating, @@ -822,7 +818,7 @@ /turf/open/floor/plasteel, /area/tcommsat/chamber) "cL" = ( -/obj/structure/sign/vacuum, +/obj/structure/sign/warning/vacuum, /turf/closed/wall/r_wall, /area/tcommsat/chamber) "cM" = ( diff --git a/_maps/RandomRuins/SpaceRuins/oldstation.dmm b/_maps/RandomRuins/SpaceRuins/oldstation.dmm index edc4867e34..830895550f 100644 --- a/_maps/RandomRuins/SpaceRuins/oldstation.dmm +++ b/_maps/RandomRuins/SpaceRuins/oldstation.dmm @@ -94,13 +94,6 @@ "ar" = ( /turf/open/floor/plating/airless, /area/ruin/space/has_grav/ancientstation/hivebot) -"as" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/banner, -/turf/open/floor/plasteel/blue/side{ - dir = 9 - }, -/area/ruin/space/has_grav/ancientstation/comm) "at" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/blue/corner{ @@ -139,13 +132,6 @@ dir = 4 }, /area/ruin/space/has_grav/ancientstation/comm) -"ay" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/banner, -/turf/open/floor/plasteel/blue/side{ - dir = 5 - }, -/area/ruin/space/has_grav/ancientstation/comm) "az" = ( /turf/closed/mineral/iron, /area/ruin/unpowered) @@ -360,11 +346,11 @@ /area/ruin/space/has_grav/ancientstation/hivebot) "bf" = ( /turf/open/floor/plating/airless, -/area/template_noop) +/area/space/nearstation) "bg" = ( /obj/structure/girder, /turf/open/floor/plating/airless, -/area/template_noop) +/area/space/nearstation) "bh" = ( /turf/closed/mineral/diamond, /area/ruin/unpowered) @@ -435,7 +421,7 @@ /area/ruin/space/has_grav/ancientstation/betanorth) "br" = ( /turf/closed/wall/rust, -/area/template_noop) +/area/space/nearstation) "bs" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/table, @@ -550,7 +536,7 @@ /turf/open/floor/plasteel/floorgrime, /area/ruin/space/has_grav/ancientstation) "bO" = ( -/obj/structure/sign/bluecross_2, +/obj/structure/sign/departments/medbay/alt, /turf/closed/wall/rust, /area/ruin/space/has_grav/ancientstation) "bP" = ( @@ -593,9 +579,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/floorgrime, /area/ruin/space/has_grav/ancientstation) -"bV" = ( -/turf/open/floor/plasteel/airless/floorgrime, -/area/ruin/space/has_grav/ancientstation) "bW" = ( /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-25" @@ -604,7 +587,7 @@ /turf/open/floor/plasteel/floorgrime, /area/ruin/space/has_grav/ancientstation) "bX" = ( -/obj/structure/sign/science, +/obj/structure/sign/departments/science, /turf/closed/wall/rust, /area/ruin/space/has_grav/ancientstation) "bY" = ( @@ -1221,31 +1204,14 @@ dir = 4 }, /area/ruin/space/has_grav/ancientstation/betanorth) -"dE" = ( -/obj/effect/spawner/structure/window/hollow/reinforced, -/turf/open/floor/plating, -/area/template_noop) "dF" = ( /obj/structure/lattice, /turf/template_noop, /area/space/nearstation) -"dG" = ( -/turf/open/floor/plasteel/airless, -/area/template_noop) "dH" = ( /obj/structure/lattice/catwalk, /turf/template_noop, /area/template_noop) -"dI" = ( -/turf/open/floor/plasteel/airless{ - icon_state = "floorscorched1" - }, -/area/template_noop) -"dJ" = ( -/turf/open/floor/plasteel/airless{ - icon_state = "damaged5" - }, -/area/template_noop) "dK" = ( /obj/structure/lattice/catwalk, /obj/structure/cable{ @@ -1417,11 +1383,6 @@ /obj/machinery/portable_atmospherics/canister, /turf/open/floor/plating/airless, /area/ruin/space/has_grav/ancientstation/betanorth) -"eh" = ( -/turf/open/floor/plasteel/airless{ - icon_state = "damaged2" - }, -/area/template_noop) "ei" = ( /obj/structure/lattice/catwalk, /obj/structure/cable{ @@ -1500,14 +1461,6 @@ /obj/item/seeds/grape, /turf/open/floor/plasteel/floorgrime, /area/ruin/space/has_grav/ancientstation/hydroponics) -"es" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/door/airlock/public/glass{ - name = "Hydroponics" - }, -/obj/machinery/door/firedoor/closed, -/turf/open/floor/plasteel/floorgrime, -/area/ruin/space/has_grav/ancientstation/hydroponics) "et" = ( /obj/structure/cable{ icon_state = "1-2" @@ -1850,10 +1803,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/floorgrime, /area/ruin/space/has_grav/ancientstation) -"fo" = ( -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel/airless/floorgrime, -/area/ruin/space/has_grav/ancientstation) "fp" = ( /obj/structure/sign/poster/official/here_for_your_safety, /turf/closed/wall/rust, @@ -3075,11 +3024,6 @@ dir = 4 }, /area/ruin/space/has_grav/ancientstation/rnd) -"ia" = ( -/turf/open/floor/plasteel/airless{ - icon_state = "floorscorched2" - }, -/area/template_noop) "ib" = ( /obj/structure/lattice/catwalk, /obj/structure/cable{ @@ -3087,12 +3031,6 @@ }, /turf/template_noop, /area/template_noop) -"ic" = ( -/obj/structure/cable{ - icon_state = "0-8" - }, -/turf/open/floor/plasteel/airless, -/area/template_noop) "id" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/power/solar_control{ @@ -3148,14 +3086,6 @@ }, /turf/open/floor/plasteel/cafeteria, /area/ruin/space/has_grav/ancientstation/kitchen) -"ij" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/door/airlock/public/glass{ - name = "Dining Area" - }, -/obj/machinery/door/firedoor/closed, -/turf/open/floor/plasteel/floorgrime, -/area/ruin/space/has_grav/ancientstation/kitchen) "ik" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/red/corner, @@ -3545,7 +3475,7 @@ /turf/open/floor/plating, /area/ruin/space/has_grav/ancientstation/engi) "iX" = ( -/obj/structure/sign/radiation, +/obj/structure/sign/warning/radiation, /turf/closed/wall/rust, /area/ruin/space/has_grav/ancientstation/engi) "iY" = ( @@ -3750,9 +3680,6 @@ /obj/item/storage/box/firingpins, /turf/open/floor/plating, /area/ruin/space/has_grav/ancientstation/deltacorridor) -"jA" = ( -/turf/open/floor/plasteel/floorgrime, -/area/template_noop) "jB" = ( /obj/structure/closet/crate/radiation, /obj/item/stack/sheet/mineral/uranium{ @@ -3862,7 +3789,7 @@ /obj/structure/lattice, /obj/item/solar_assembly, /turf/template_noop, -/area/template_noop) +/area/space/nearstation) "jR" = ( /obj/structure/cable, /turf/open/floor/plating/airless, @@ -4433,16 +4360,6 @@ /obj/item/pickaxe, /turf/open/floor/plasteel/floorgrime, /area/ruin/space/has_grav/ancientstation/deltacorridor) -"lr" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/ore/bluespace_crystal, -/turf/open/floor/plasteel/white, -/area/ruin/space/has_grav/ancientstation/rnd) -"ls" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/ore/bluespace_crystal/refined, -/turf/open/floor/plasteel/white, -/area/ruin/space/has_grav/ancientstation/rnd) "lt" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/mirror{ @@ -4451,10 +4368,6 @@ }, /turf/open/floor/plasteel/floorgrime, /area/ruin/space/has_grav/ancientstation) -"lu" = ( -/obj/item/stock_parts/manipulator, -/turf/open/floor/plasteel/airless/floorgrime, -/area/template_noop) "lv" = ( /obj/effect/decal/cleanable/dirt, /obj/item/stack/sheet/glass, @@ -4462,10 +4375,6 @@ dir = 4 }, /area/ruin/space/has_grav/ancientstation/betanorth) -"lw" = ( -/obj/item/stock_parts/matter_bin, -/turf/open/floor/plating/airless, -/area/template_noop) "lx" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/door/airlock/science{ @@ -4473,83 +4382,12 @@ }, /turf/open/floor/plating, /area/ruin/space/has_grav/ancientstation/hivebot) -"ly" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/door/airlock/science, -/turf/open/floor/plating, -/area/ruin/space/has_grav/ancientstation/hivebot) "lz" = ( /turf/open/floor/plating/airless{ tag = "icon-floor"; icon_state = "floor" }, /area/template_noop) -"lA" = ( -/turf/open/floor/plating/airless{ - tag = "icon-floor"; - icon_state = "floor" - }, -/area/template_noop) -"lB" = ( -/turf/open/floor/plating/airless{ - tag = "icon-floor"; - icon_state = "floor" - }, -/area/template_noop) -"lC" = ( -/turf/open/floor/plating/airless{ - tag = "icon-floor"; - icon_state = "floor" - }, -/area/template_noop) -"lD" = ( -/turf/open/floor/plating/airless{ - tag = "icon-floor"; - icon_state = "floor" - }, -/area/template_noop) -"lE" = ( -/turf/open/floor/plating/airless{ - tag = "icon-floor"; - icon_state = "floor" - }, -/area/template_noop) -"lF" = ( -/turf/open/floor/plating/airless{ - tag = "icon-floor"; - icon_state = "floor" - }, -/area/template_noop) -"lG" = ( -/turf/open/floor/plating/airless{ - tag = "icon-floor"; - icon_state = "floor" - }, -/area/template_noop) -"lH" = ( -/turf/open/floor/plating/airless{ - tag = "icon-floor"; - icon_state = "floor" - }, -/area/template_noop) -"lI" = ( -/turf/open/floor/plating/airless{ - tag = "icon-floor"; - icon_state = "floor" - }, -/area/template_noop) -"lJ" = ( -/turf/open/floor/plating/airless{ - tag = "icon-floor"; - icon_state = "floor" - }, -/area/template_noop) -"lK" = ( -/turf/open/floor/plating/airless{ - tag = "icon-floor"; - icon_state = "floor" - }, -/area/template_noop) "lL" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -4563,42 +4401,6 @@ dir = 8 }, /area/ruin/space/has_grav/ancientstation/rnd) -"lN" = ( -/turf/open/floor/plating/airless{ - tag = "icon-floor"; - icon_state = "floor" - }, -/area/template_noop) -"lO" = ( -/turf/open/floor/plating/airless{ - tag = "icon-floor"; - icon_state = "floor" - }, -/area/template_noop) -"lP" = ( -/turf/open/floor/plating/airless{ - tag = "icon-floor"; - icon_state = "floor" - }, -/area/template_noop) -"lQ" = ( -/turf/open/floor/plating/airless{ - tag = "icon-floor"; - icon_state = "floor" - }, -/area/template_noop) -"lR" = ( -/turf/open/floor/plating/airless{ - tag = "icon-floor"; - icon_state = "floor" - }, -/area/template_noop) -"lS" = ( -/turf/open/floor/plating/airless{ - tag = "icon-floor"; - icon_state = "floor" - }, -/area/template_noop) "lT" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -4608,68 +4410,6 @@ dir = 4 }, /area/ruin/space/has_grav/ancientstation/rnd) -"lU" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/orange/side{ - tag = "icon-orange (WEST)"; - icon_state = "orange"; - dir = 8 - }, -/area/ruin/space/has_grav/ancientstation/rnd) -"lV" = ( -/turf/open/floor/plating/airless{ - tag = "icon-floor"; - icon_state = "floor" - }, -/area/template_noop) -"lW" = ( -/turf/open/floor/plating/airless{ - tag = "icon-floor"; - icon_state = "floor" - }, -/area/template_noop) -"lX" = ( -/turf/open/floor/plating/airless{ - tag = "icon-floor"; - icon_state = "floor" - }, -/area/template_noop) -"lY" = ( -/turf/open/floor/plating/airless{ - tag = "icon-floor"; - icon_state = "floor" - }, -/area/template_noop) -"lZ" = ( -/turf/open/floor/plating/airless{ - tag = "icon-floor"; - icon_state = "floor" - }, -/area/template_noop) -"ma" = ( -/turf/open/floor/plating/airless{ - tag = "icon-floor"; - icon_state = "floor" - }, -/area/template_noop) -"mb" = ( -/turf/open/floor/plating/airless{ - tag = "icon-floor"; - icon_state = "floor" - }, -/area/template_noop) -"mc" = ( -/turf/open/floor/plating/airless{ - tag = "icon-floor"; - icon_state = "floor" - }, -/area/template_noop) -"md" = ( -/turf/open/floor/plating/airless{ - tag = "icon-floor"; - icon_state = "floor" - }, -/area/template_noop) "me" = ( /turf/open/floor/plating/airless, /area/ruin/space/has_grav/ancientstation/betanorth) @@ -4677,114 +4417,9 @@ /obj/structure/girder, /turf/open/floor/plating/airless, /area/ruin/space/has_grav/ancientstation/betanorth) -"mg" = ( -/turf/open/floor/plating/airless, -/area/ruin/space/has_grav/ancientstation/betanorth) -"mh" = ( -/turf/open/floor/plating/airless, -/area/ruin/space/has_grav/ancientstation/betanorth) -"mi" = ( -/turf/open/floor/plating/airless, -/area/ruin/space/has_grav/ancientstation/betanorth) -"mj" = ( -/turf/open/floor/plating/airless, -/area/ruin/space/has_grav/ancientstation/betanorth) -"mk" = ( -/turf/open/floor/plating/airless, -/area/ruin/space/has_grav/ancientstation/betanorth) -"ml" = ( -/turf/open/floor/plating/airless, -/area/ruin/space/has_grav/ancientstation/betanorth) -"mm" = ( -/turf/open/floor/plating/airless, -/area/ruin/space/has_grav/ancientstation/betanorth) -"mn" = ( -/turf/open/floor/plating/airless, -/area/ruin/space/has_grav/ancientstation/betanorth) -"mo" = ( -/turf/open/floor/plating/airless, -/area/ruin/space/has_grav/ancientstation/betanorth) -"mp" = ( -/turf/open/floor/plating/airless, -/area/ruin/space/has_grav/ancientstation/betanorth) -"mq" = ( -/obj/structure/girder, -/turf/open/floor/plating/airless, -/area/ruin/space/has_grav/ancientstation/betanorth) -"mr" = ( -/turf/open/floor/plating/airless, -/area/ruin/space/has_grav/ancientstation/betanorth) -"ms" = ( -/turf/open/floor/plating/airless, -/area/ruin/space/has_grav/ancientstation/betanorth) -"mt" = ( -/turf/open/floor/plating/airless, -/area/ruin/space/has_grav/ancientstation/betanorth) -"mu" = ( -/turf/open/floor/plating/airless, -/area/ruin/space/has_grav/ancientstation/betanorth) -"mv" = ( -/turf/open/floor/plating/airless, -/area/ruin/space/has_grav/ancientstation/betanorth) -"mw" = ( -/turf/open/floor/plating/airless, -/area/ruin/space/has_grav/ancientstation/betanorth) -"mx" = ( -/obj/structure/girder, -/turf/open/floor/plating/airless, -/area/ruin/space/has_grav/ancientstation/betanorth) -"my" = ( -/turf/open/floor/plating/airless, -/area/ruin/space/has_grav/ancientstation/betanorth) -"mz" = ( -/turf/open/floor/plating/airless, -/area/ruin/space/has_grav/ancientstation/betanorth) -"mA" = ( -/turf/open/floor/plating/airless, -/area/ruin/space/has_grav/ancientstation/betanorth) -"mB" = ( -/turf/open/floor/plating/airless, -/area/ruin/space/has_grav/ancientstation/betanorth) -"mC" = ( -/turf/open/floor/plating/airless, -/area/ruin/space/has_grav/ancientstation/betanorth) -"mD" = ( -/turf/open/floor/plating/airless, -/area/ruin/space/has_grav/ancientstation/betanorth) -"mE" = ( -/turf/open/floor/plating/airless, -/area/ruin/space/has_grav/ancientstation/betanorth) -"mF" = ( -/turf/open/floor/plating/airless, -/area/ruin/space/has_grav/ancientstation/betanorth) -"mG" = ( -/obj/structure/girder, -/turf/open/floor/plating/airless, -/area/ruin/space/has_grav/ancientstation/betanorth) "mH" = ( /turf/closed/wall/rust, /area/ruin/space/has_grav/ancientstation/atmo) -"mI" = ( -/turf/closed/wall/rust, -/area/ruin/space/has_grav/ancientstation/atmo) -"mJ" = ( -/turf/closed/wall/rust, -/area/ruin/space/has_grav/ancientstation/atmo) -"mK" = ( -/turf/closed/wall/rust, -/area/ruin/space/has_grav/ancientstation/atmo) -"mL" = ( -/turf/closed/wall/rust, -/area/ruin/space/has_grav/ancientstation/atmo) -"mM" = ( -/turf/closed/wall/rust, -/area/ruin/space/has_grav/ancientstation/atmo) -"mN" = ( -/turf/closed/wall/rust, -/area/ruin/space/has_grav/ancientstation/atmo) -"mO" = ( -/turf/closed/wall/rust, -/area/ruin/space/has_grav/ancientstation/atmo) "mP" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/computer{ @@ -4794,6 +4429,16 @@ }, /turf/open/floor/plasteel/floorgrime, /area/ruin/space/has_grav/ancientstation/sec) +"Dj" = ( +/obj/structure/transit_tube{ + dir = 4 + }, +/turf/template_noop, +/area/space/nearstation) +"Ga" = ( +/obj/structure/transit_tube/crossing/horizontal, +/turf/template_noop, +/area/space/nearstation) (1,1,1) = {" aa @@ -4807,14 +4452,13 @@ aa aa aa aa -aa me me -aA +dF me me aa -aA +dF me me aa @@ -4827,7 +4471,7 @@ aa aa aa jO -aA +dF jO jO jO @@ -4837,10 +4481,7 @@ kK kV ld aa -aA -aa -aa -aa +dF aa aa aa @@ -4858,7 +4499,6 @@ aa aa aa aa -aa me bq bJ @@ -4870,14 +4510,14 @@ bq bq eG me -aA -aA -aA +dF +dF +dF bf -aA -aA -aA -aA +dF +dF +dF +dF iT km km @@ -4895,9 +4535,6 @@ aa aa aa aa -aa -aa -aa "} (3,1,1) = {" aa @@ -4910,7 +4547,6 @@ aa aa aa aa -aa mf bJ bJ @@ -4925,7 +4561,7 @@ eH aa aa aa -aA +dF aa aa aa @@ -4947,9 +4583,6 @@ aa aa aa aa -aa -aa -aa "} (4,1,1) = {" aa @@ -4961,8 +4594,7 @@ aa aa aa aa -aa -aA +dF me me bJ @@ -4977,7 +4609,7 @@ bJ mf me aa -aA +dF aa aa aa @@ -4999,9 +4631,6 @@ aa aa aa aa -aa -aa -aa "} (5,1,1) = {" aa @@ -5014,8 +4643,7 @@ aa aa aa aa -aa -aA +dF me bw bI @@ -5034,17 +4662,14 @@ aa aa aa aa -aA +dF km jO jO aa aa aa -aA -aa -aa -aa +dF aa aa aa @@ -5065,7 +4690,6 @@ aa aa aa aa -aa ac ac ac @@ -5083,22 +4707,19 @@ fY bq me hL -aA -aA -aA -aA +dF +dF +dF +dF km km jO jO aa -aA -aa -aa -aA -aa +dF aa aa +dF aa aa aa @@ -5116,7 +4737,6 @@ aa aa aa aa -aa ac az bh @@ -5136,7 +4756,7 @@ fA bJ mf aa -aA +dF aa aa aa @@ -5145,10 +4765,7 @@ aa aa aa aa -aA -aa -aa -aa +dF aa aa aa @@ -5169,7 +4786,6 @@ aa aa aa aa -aa ac az ac @@ -5188,7 +4804,7 @@ bq hj aa aa -aA +dF aa aa aa @@ -5197,10 +4813,7 @@ aa aa aa aa -aA -aa -aa -aa +dF aa aa aa @@ -5221,8 +4834,7 @@ aa aa aa aa -aa -aA +dF ac aa bJ @@ -5231,15 +4843,15 @@ cf bI bJ me -aA +dF me fa me fZ gU me -aA -aA +dF +dF bf aa aa @@ -5249,10 +4861,7 @@ aa aa aa aa -aA -aa -aa -aa +dF aa aa aa @@ -5264,7 +4873,6 @@ aa aa "} (10,1,1) = {" -aa ab aa aa @@ -5272,7 +4880,7 @@ aa aa aa aa -aA +dF aa aa aa @@ -5282,8 +4890,8 @@ bK cg bK bJ -aA -aA +dF +dF aa me me @@ -5291,20 +4899,17 @@ ga me me aa -aA +dF bf aa aa aa -aA +dF aa aa aa aa -aA -aa -aa -aa +dF aa aa aa @@ -5325,8 +4930,7 @@ aa aa aa aa -aa -aA +dF aa aa aa @@ -5338,9 +4942,9 @@ mf aa aa aa -aA +dF ga -aA +dF aa aa br @@ -5348,11 +4952,11 @@ bg aa aa aa -aA +dF aa aa aa -aA +dF aa aa aa @@ -5363,9 +4967,6 @@ ab aa aa aa -aa -aa -aa "} (12,1,1) = {" aa @@ -5376,11 +4977,10 @@ aa aa aa aa -aa -aA +dF aa aa -aA +dF aa aa bd @@ -5391,19 +4991,16 @@ aa aa aa aa -aA +dF aa aa aa aa -aA -aa -aa -aa -aA +dF aa aa aa +dF aa aa aa @@ -5427,9 +5024,8 @@ aa aa aa aa -aa -aA -aA +dF +dF aa aa aa @@ -5443,26 +5039,23 @@ aa aa aa aa -aA +dF aa aa aa aa -aA +dF aa aa aa -aA +dF aa aa aa aa aa aa -aA -aa -aa -aa +dF aa aa aa @@ -5480,9 +5073,8 @@ aa aa aa aa -aa -aA -aA +dF +dF aa aa aa @@ -5510,10 +5102,7 @@ aa aa aa aa -aA -aa -aa -aa +dF aa aa aa @@ -5532,8 +5121,7 @@ aa aa aa aa -aa -aA +dF aZ aa aa @@ -5557,11 +5145,11 @@ dH ei dH hN -aA +dF aa aa aa -aA +dF aa lg ac @@ -5571,9 +5159,6 @@ aa aa aa aa -aa -aa -aa "} (16,1,1) = {" aa @@ -5584,8 +5169,7 @@ aa aa aa aa -aa -aA +dF aa aa aa @@ -5623,9 +5207,6 @@ aa aa aa aa -aa -aa -aa "} (17,1,1) = {" aa @@ -5636,8 +5217,7 @@ aa aa aa aa -aa -aA +dF aa aa aa @@ -5665,7 +5245,7 @@ jR aa aa aa -aA +dF ac lh lh @@ -5675,9 +5255,6 @@ aa aa aa aa -aa -aa -aa "} (18,1,1) = {" aa @@ -5688,8 +5265,7 @@ aa aa aa aa -aa -aA +dF aa aa aa @@ -5716,7 +5292,7 @@ lz aa aa aa -aA +dF aa aa ac @@ -5727,9 +5303,6 @@ aa aa aa aa -aa -aa -aa "} (19,1,1) = {" aa @@ -5740,8 +5313,7 @@ aa aa aa aa -aa -aA +dF aa aa aa @@ -5765,10 +5337,7 @@ dH ei ei ib -aA -aa -aa -aa +dF aa aa aa @@ -5792,8 +5361,7 @@ aa aa aa aa -aa -aA +dF aa aa aa @@ -5821,12 +5389,9 @@ aa aa aa aa -aA -aa -aA -aa -aa +dF aa +dF aa aa aa @@ -5844,8 +5409,7 @@ aa aa aa aa -aa -aA +dF aa aa aa @@ -5873,7 +5437,7 @@ aa aa aa aa -aA +dF aa aa aa @@ -5883,9 +5447,6 @@ ab aa aa aa -aa -aa -aa "} (22,1,1) = {" aa @@ -5896,8 +5457,7 @@ aa aa aa aa -aa -aA +dF aa aa aa @@ -5925,10 +5485,7 @@ aa aa aa aa -aA -aa -aa -aa +dF aa aa aa @@ -5948,8 +5505,7 @@ aa aa aa aa -aa -aA +dF aa aa aa @@ -5977,10 +5533,7 @@ aa aa aa aa -aA -aa -aa -aa +dF aa aa aa @@ -6000,8 +5553,7 @@ aa aa aa aa -aa -aA +dF aa aa aa @@ -6029,10 +5581,7 @@ aa aa aa aa -aA -aa -aa -aa +dF aa aa aa @@ -6052,8 +5601,7 @@ aa aa aa aa -aa -aA +dF aa aa aa @@ -6081,10 +5629,7 @@ dl aa aa aa -aA -aa -aa -aa +dF aa aa aa @@ -6104,8 +5649,7 @@ aa aa aa aa -aa -aA +dF aa aa aa @@ -6133,10 +5677,7 @@ dl aa aa aa -aA -aa -aa -aa +dF aa aa aa @@ -6156,8 +5697,7 @@ aa aa aa aa -aa -aA +dF aa aa aa @@ -6185,10 +5725,7 @@ dl aa aa aa -aA -aa -aa -aa +dF aa aa aa @@ -6208,8 +5745,7 @@ aa aa aa aa -aa -aA +dF aa aa aa @@ -6237,10 +5773,7 @@ dl aa aa aa -aA -aa -aa -aa +dF aa aa aa @@ -6260,7 +5793,6 @@ aa aa aa aa -aa aG aG aG @@ -6299,9 +5831,6 @@ aa aa aa aa -aa -aa -aa "} (30,1,1) = {" aa @@ -6310,7 +5839,6 @@ aa aa aa aa -aa aG aG aT @@ -6351,9 +5879,6 @@ aa aa aa aa -aa -aa -aa "} (31,1,1) = {" aa @@ -6362,7 +5887,6 @@ aa aa aa aa -aa aG aO aU @@ -6403,9 +5927,6 @@ aa aa aa aa -aa -aa -aa "} (32,1,1) = {" aa @@ -6413,7 +5934,6 @@ aa aa aa aa -aa ak ak ak @@ -6455,16 +5975,12 @@ aa aa aa aa -aa -aa -aa "} (33,1,1) = {" aa aa aa aa -aa ak ak aH @@ -6507,16 +6023,12 @@ aa aa aa aa -aa -aa -aa "} (34,1,1) = {" aa aa aa aa -aa by aH at @@ -6559,16 +6071,12 @@ aa aa aa aa -aa -aa -aa "} (35,1,1) = {" aa aa aa aa -aa al at aI @@ -6611,16 +6119,12 @@ aa aa aa aa -aa -aa -aa "} (36,1,1) = {" aa aa aa aa -aa am au aJ @@ -6663,16 +6167,12 @@ aa aa aa aa -aa -aa -aa "} (37,1,1) = {" aa aa aa aa -aa am av aK @@ -6715,16 +6215,12 @@ aa aa aa aa -aa -aa -aa "} (38,1,1) = {" aa aa aa aa -aa am aw aL @@ -6767,16 +6263,12 @@ aa aa aa aa -aa -aa -aa "} (39,1,1) = {" aa aa aa aa -aa an ax aI @@ -6819,16 +6311,12 @@ aa aa aa aa -aa -aa -aa "} (40,1,1) = {" aa aa aa aa -aa by aM ax @@ -6871,16 +6359,12 @@ aa aa aa aa -aa -aa -aa "} (41,1,1) = {" aa aa aa aa -aa ak ak aM @@ -6923,9 +6407,6 @@ aa aa aa aa -aa -aa -aa "} (42,1,1) = {" aa @@ -6933,7 +6414,6 @@ aa aa aa aa -aa ak ak ak @@ -6975,9 +6455,6 @@ aa aa aa aa -aa -aa -aa "} (43,1,1) = {" aa @@ -6986,7 +6463,6 @@ aa aa aa aa -aa aG aS aY @@ -7027,9 +6503,6 @@ aa aa aa aa -aa -aa -aa "} (44,1,1) = {" aa @@ -7038,7 +6511,6 @@ aa aa aa aa -aa aG aG aG @@ -7079,9 +6551,6 @@ aa aa aa aa -aa -aa -aa "} (45,1,1) = {" aa @@ -7091,7 +6560,6 @@ aa aa aa aa -aa aG aG aG @@ -7131,9 +6599,6 @@ aa aa aa aa -aa -aa -aa "} (46,1,1) = {" aa @@ -7143,7 +6608,6 @@ aa aa aa aa -aa aA aa aa @@ -7173,10 +6637,7 @@ aG aa aa aa -aA -aa -aa -aa +dF aa aa aa @@ -7195,7 +6656,6 @@ aa aa aa aa -aa aA aa aa @@ -7225,10 +6685,7 @@ aG aa aa aa -aA -aa -aa -aa +dF aa aa aa @@ -7246,7 +6703,6 @@ aa aa aa aa -aa aA aa aa @@ -7277,10 +6733,7 @@ aG aa aa aa -aA -aa -aa -aa +dF aa aa aa @@ -7300,7 +6753,6 @@ aa aa aa aa -aa aA aa aa @@ -7323,16 +6775,13 @@ il dv dv aa -bd +Dj aa aa aa aa aa -aA -aa -aa -aa +dF aa aa aa @@ -7350,7 +6799,6 @@ aa aa aa aa -aa ac az aa @@ -7375,13 +6823,13 @@ im dv aa aa -bd +Dj aa aa aa aa aa -aA +dF aa aa aa @@ -7391,9 +6839,6 @@ aa ab aa aa -aa -aa -aa "} (51,1,1) = {" aa @@ -7401,7 +6846,6 @@ aa aa aa aa -aa az az az @@ -7427,16 +6871,13 @@ dv dv aa aa -bd +Dj aa aa aa aa aa -aA -aa -aa -aa +dF aa aa aa @@ -7453,7 +6894,6 @@ aa aa aa aa -aa az az az @@ -7479,13 +6919,13 @@ aa aa aa aa -ch +Ga aa aa aa aa aa -aA +dF aa aa aa @@ -7495,9 +6935,6 @@ aa aa aa aa -aa -aa -aa "} (53,1,1) = {" aa @@ -7505,7 +6942,6 @@ aa aa aa aa -aa az az az @@ -7531,13 +6967,13 @@ aa aa aa aa -bd +Dj aa aa aa aa aa -aA +dF aa aa ac @@ -7547,9 +6983,6 @@ az aa aa aa -aa -aa -aa "} (54,1,1) = {" aa @@ -7566,7 +6999,6 @@ aa aa aa aa -aa cu aa aa @@ -7583,13 +7015,13 @@ aa aa aa aa -bd +Dj aa aa aa aa aa -aA +dF aa aa az @@ -7599,19 +7031,15 @@ az ac ac aa -aa -aa -aa "} (55,1,1) = {" -aa ab aa aa aa aa aa -aA +dF aa aa aa @@ -7635,13 +7063,13 @@ aa aa aa aa -bd +Dj aa aa aa aa aa -aA +dF aa aa aa @@ -7651,9 +7079,6 @@ lp az az aa -aa -aa -aa "} (56,1,1) = {" aa @@ -7664,8 +7089,7 @@ aa aa aa aa -aa -aA +dF aa aa aa @@ -7693,7 +7117,7 @@ bD aa aa aa -aA +dF aa aa aa @@ -7703,9 +7127,6 @@ lp az ac aa -aa -aa -aa "} (57,1,1) = {" aa @@ -7720,7 +7141,6 @@ aa aa aa aa -aa bD bZ cw @@ -7745,7 +7165,7 @@ bD aa aa aa -aA +dF aa aa aa @@ -7755,9 +7175,6 @@ az az ac aa -aa -aa -aa "} (58,1,1) = {" aa @@ -7767,8 +7184,7 @@ aa aa aa aa -aa -aA +dF aa aa aa @@ -7797,10 +7213,7 @@ bD aa aa aa -aA -aa -aa -aa +dF aa aa aa @@ -7817,9 +7230,8 @@ aa aa aa aa -aa -aA -aA +dF +dF aa aa aa @@ -7849,10 +7261,7 @@ bD aa aa aa -aA -aa -aa -aa +dF aa aa aa @@ -7868,7 +7277,6 @@ aa aa aa aa -aa ac ac ac @@ -7901,7 +7309,7 @@ bD aa aa aa -aA +dF aa aa aa @@ -7911,14 +7319,10 @@ aa aa aa ab -aa -aa -aa "} (61,1,1) = {" aa aa -aa ac ac ac @@ -7953,10 +7357,7 @@ bD aa aa aa -aA -aa -aa -aa +dF aa aa aa @@ -7969,7 +7370,6 @@ aa "} (62,1,1) = {" aa -aa ac ac ad @@ -8015,13 +7415,9 @@ aa aa aa aa -aa -aa -aa "} (63,1,1) = {" aa -aa ac ad ae @@ -8067,13 +7463,9 @@ aa aa aa aa -aa -aa -aa "} (64,1,1) = {" aa -aa ac ad af @@ -8119,12 +7511,8 @@ aa aa aa aa -aa -aa -aa "} (65,1,1) = {" -aa ac ac ad @@ -8171,12 +7559,8 @@ aa aa aa aa -aa -aa -aa "} (66,1,1) = {" -aa ac ac ad @@ -8223,12 +7607,8 @@ aa aa aa aa -aa -aa -aa "} (67,1,1) = {" -aa ac ac ad @@ -8275,12 +7655,8 @@ aa aa aa aa -aa -aa -aa "} (68,1,1) = {" -aa ac ac ad @@ -8327,12 +7703,8 @@ aa aa aa aa -aa -aa -aa "} (69,1,1) = {" -aa ac ac ad @@ -8379,12 +7751,8 @@ aa aa aa aa -aa -aa -aa "} (70,1,1) = {" -aa ac ac ad @@ -8431,12 +7799,8 @@ aa aa aa aa -aa -aa -aa "} (71,1,1) = {" -aa ac ac ad @@ -8483,12 +7847,8 @@ aa aa aa aa -aa -aa -aa "} (72,1,1) = {" -aa ac ac ad @@ -8535,12 +7895,8 @@ aa aa aa aa -aa -aa -aa "} (73,1,1) = {" -aa ac ac ad @@ -8587,12 +7943,8 @@ aa aa aa aa -aa -aa -aa "} (74,1,1) = {" -aa ac ac ad @@ -8639,12 +7991,8 @@ aa aa aa aa -aa -aa -aa "} (75,1,1) = {" -aa ac ac ad @@ -8691,13 +8039,9 @@ aa aa aa aa -aa -aa -aa "} (76,1,1) = {" aa -aa ac ad aj @@ -8743,13 +8087,9 @@ aa aa aa aa -aa -aa -aa "} (77,1,1) = {" aa -aa ac ac ad @@ -8795,13 +8135,9 @@ ab aa aa aa -aa -aa -aa "} (78,1,1) = {" aa -aa ac ac ac @@ -8847,14 +8183,10 @@ aa aa aa aa -aa -aa -aa "} (79,1,1) = {" aa aa -aa ac ac ar @@ -8899,9 +8231,6 @@ aa aa aa aa -aa -aa -aa "} (80,1,1) = {" aa @@ -8923,7 +8252,6 @@ aa aa aa aa -aa bD bD bD @@ -8951,7 +8279,4 @@ aa aa aa aa -aa -aa -aa "} diff --git a/_maps/RandomRuins/SpaceRuins/oldteleporter.dmm b/_maps/RandomRuins/SpaceRuins/oldteleporter.dmm index 5a4bd2492e..afcc31a692 100644 --- a/_maps/RandomRuins/SpaceRuins/oldteleporter.dmm +++ b/_maps/RandomRuins/SpaceRuins/oldteleporter.dmm @@ -5,7 +5,7 @@ "b" = ( /obj/structure/lattice, /turf/template_noop, -/area/ruin/space/oldteleporter) +/area/space/nearstation) "c" = ( /turf/open/floor/plating/airless, /area/ruin/space/oldteleporter) diff --git a/_maps/RandomRuins/SpaceRuins/onehalf.dmm b/_maps/RandomRuins/SpaceRuins/onehalf.dmm index 1615a67600..24a6c319ee 100644 --- a/_maps/RandomRuins/SpaceRuins/onehalf.dmm +++ b/_maps/RandomRuins/SpaceRuins/onehalf.dmm @@ -8,35 +8,35 @@ }, /obj/structure/lattice/catwalk, /turf/template_noop, -/area/template_noop) +/area/space/nearstation) "ac" = ( /obj/structure/cable{ icon_state = "4-8" }, /obj/structure/lattice/catwalk, /turf/template_noop, -/area/template_noop) +/area/space/nearstation) "ad" = ( /obj/structure/cable{ icon_state = "2-8" }, /obj/structure/lattice/catwalk, /turf/template_noop, -/area/template_noop) +/area/space/nearstation) "ae" = ( /obj/item/stack/cable_coil/cut/red{ amount = 2 }, /obj/structure/lattice/catwalk, /turf/template_noop, -/area/template_noop) +/area/space/nearstation) "af" = ( /obj/structure/cable{ icon_state = "1-8" }, /obj/structure/lattice/catwalk, /turf/template_noop, -/area/template_noop) +/area/space/nearstation) "ag" = ( /turf/closed/wall, /area/ruin/space/has_grav/onehalf/dorms_med) @@ -50,7 +50,7 @@ }, /obj/structure/lattice/catwalk, /turf/template_noop, -/area/template_noop) +/area/space/nearstation) "aj" = ( /turf/open/floor/plating/airless, /area/ruin/space/has_grav/onehalf/hallway) @@ -280,7 +280,7 @@ /obj/structure/lattice, /obj/item/storage/toolbox/syndicate, /turf/template_noop, -/area/template_noop) +/area/space/nearstation) "aT" = ( /obj/structure/cable{ icon_state = "1-2" @@ -830,7 +830,7 @@ icon_state = "small" }, /turf/template_noop, -/area/template_noop) +/area/space/nearstation) "ck" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/disposalpipe/segment{ @@ -905,7 +905,7 @@ }, /obj/structure/lattice, /turf/template_noop, -/area/template_noop) +/area/space/nearstation) "ct" = ( /obj/structure/lattice, /obj/item/shard{ @@ -958,13 +958,6 @@ "cB" = ( /turf/template_noop, /area/ruin/space/has_grav/onehalf/hallway) -"cC" = ( -/obj/structure/lattice, -/obj/structure/cable{ - icon_state = "2-8" - }, -/turf/open/space, -/area/ruin/space/has_grav/onehalf/hallway) "cD" = ( /obj/structure/lattice, /obj/structure/disposalpipe/broken{ @@ -1039,13 +1032,6 @@ /obj/item/stack/sheet/plasteel, /turf/template_noop, /area/template_noop) -"cO" = ( -/obj/structure/lattice, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/space, -/area/ruin/space/has_grav/onehalf/hallway) "cP" = ( /turf/open/floor/plasteel/airless{ icon_state = "damaged3" @@ -1098,7 +1084,7 @@ }, /obj/structure/lattice/catwalk, /turf/template_noop, -/area/template_noop) +/area/space/nearstation) "cX" = ( /obj/structure/cable{ icon_state = "1-2" @@ -1190,7 +1176,7 @@ /obj/item/stack/sheet/plasteel, /obj/structure/lattice/catwalk, /turf/template_noop, -/area/template_noop) +/area/space/nearstation) "di" = ( /obj/structure/cable{ icon_state = "4-8" @@ -1200,7 +1186,7 @@ }, /obj/structure/lattice/catwalk, /turf/template_noop, -/area/template_noop) +/area/space/nearstation) "dj" = ( /obj/structure/cable{ icon_state = "4-8" @@ -1211,7 +1197,7 @@ /obj/item/stack/rods, /obj/structure/lattice/catwalk, /turf/template_noop, -/area/template_noop) +/area/space/nearstation) "dk" = ( /obj/structure/cable{ icon_state = "1-8" @@ -1221,23 +1207,30 @@ }, /obj/structure/lattice/catwalk, /turf/template_noop, -/area/template_noop) +/area/space/nearstation) "dl" = ( /obj/item/stack/cable_coil/cut/red{ amount = 2 }, /turf/template_noop, /area/template_noop) +"Ky" = ( +/turf/template_noop, +/area/space/nearstation) +"Me" = ( +/obj/structure/lattice, +/turf/template_noop, +/area/space/nearstation) (1,1,1) = {" aa aa aa aa +Me aa -aa -aa -aa +aS +Me aa aa aa @@ -1255,50 +1248,6 @@ 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 -aa -aa -aa -aw -aa -aS -aw -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -"} -(4,1,1) = {" -aa -aa -aa aj ax aH @@ -1317,7 +1266,7 @@ aa aa aa "} -(5,1,1) = {" +(3,1,1) = {" aa aa ae @@ -1339,7 +1288,7 @@ aa aa aa "} -(6,1,1) = {" +(4,1,1) = {" aa aa ac @@ -1361,7 +1310,7 @@ aa aa aa "} -(7,1,1) = {" +(5,1,1) = {" aa ab af @@ -1383,7 +1332,7 @@ aa aa aa "} -(8,1,1) = {" +(6,1,1) = {" aa ac ag @@ -1405,7 +1354,7 @@ aa aa aa "} -(9,1,1) = {" +(7,1,1) = {" aa ac ag @@ -1427,7 +1376,7 @@ aa aa aa "} -(10,1,1) = {" +(8,1,1) = {" aa ac ag @@ -1441,7 +1390,7 @@ bO bR aa cs -aw +Me aa aa cr @@ -1449,7 +1398,7 @@ bP aa aa "} -(11,1,1) = {" +(9,1,1) = {" aa ac ag @@ -1467,11 +1416,11 @@ cA cr cN aa -aw +Me aa dl "} -(12,1,1) = {" +(10,1,1) = {" aa ac ag @@ -1482,18 +1431,18 @@ ag bi bx bQ -aw +Me bV aa aa -aw +Me cA aa cL dh aa "} -(13,1,1) = {" +(11,1,1) = {" aa ac ag @@ -1515,7 +1464,7 @@ bQ di aa "} -(14,1,1) = {" +(12,1,1) = {" aa ac ah @@ -1537,7 +1486,7 @@ dc dj aa "} -(15,1,1) = {" +(13,1,1) = {" aa ac ag @@ -1559,7 +1508,7 @@ dd ac aa "} -(16,1,1) = {" +(14,1,1) = {" aa ac ag @@ -1581,7 +1530,7 @@ bU ac aa "} -(17,1,1) = {" +(15,1,1) = {" aa ad ai @@ -1592,18 +1541,18 @@ aX bo bp bU -aa +Ky cj bU cF bU -aw -aa +Me +Ky bU ac aa "} -(18,1,1) = {" +(16,1,1) = {" aa aa aa @@ -1625,7 +1574,7 @@ bU ac aa "} -(19,1,1) = {" +(17,1,1) = {" aa aa aa @@ -1647,7 +1596,7 @@ bU ac aa "} -(20,1,1) = {" +(18,1,1) = {" aa aa aa @@ -1669,7 +1618,7 @@ de dk aa "} -(21,1,1) = {" +(19,1,1) = {" aa aa aa @@ -1691,7 +1640,7 @@ df ac aa "} -(22,1,1) = {" +(20,1,1) = {" aa aa aa @@ -1713,7 +1662,7 @@ df ac aa "} -(23,1,1) = {" +(21,1,1) = {" aa aa aa @@ -1735,7 +1684,7 @@ df ac aa "} -(24,1,1) = {" +(22,1,1) = {" aa aa aa @@ -1757,7 +1706,7 @@ dg dk aa "} -(25,1,1) = {" +(23,1,1) = {" aa aa aa @@ -1779,7 +1728,7 @@ bU ac aa "} -(26,1,1) = {" +(24,1,1) = {" aa aa aa @@ -1801,7 +1750,7 @@ bU ac aa "} -(27,1,1) = {" +(25,1,1) = {" aa aa aa @@ -1812,7 +1761,7 @@ ar br ar ar -aw +Me ad ai ai @@ -1823,7 +1772,7 @@ ai af aa "} -(28,1,1) = {" +(26,1,1) = {" aa aa aa @@ -1845,7 +1794,7 @@ aa aa aa "} -(29,1,1) = {" +(27,1,1) = {" aa aa aa @@ -1867,7 +1816,7 @@ aa aa aa "} -(30,1,1) = {" +(28,1,1) = {" aa aa aa @@ -1889,7 +1838,7 @@ aa aa aa "} -(31,1,1) = {" +(29,1,1) = {" aa aa aa @@ -1911,25 +1860,3 @@ aa aa aa "} -(32,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -"} diff --git a/_maps/RandomRuins/SpaceRuins/originalcontent.dmm b/_maps/RandomRuins/SpaceRuins/originalcontent.dmm index e55cee1581..6ba02315dc 100644 --- a/_maps/RandomRuins/SpaceRuins/originalcontent.dmm +++ b/_maps/RandomRuins/SpaceRuins/originalcontent.dmm @@ -916,8 +916,6 @@ aa aa aa aa -aa -aa ab ae ae @@ -963,8 +961,6 @@ aa aa aa aa -aa -aa ac af af @@ -1009,8 +1005,6 @@ aa aa aa aa -aa -aa ab ai af @@ -1056,8 +1050,6 @@ aa aa aa aa -aa -aa ac af af @@ -1100,8 +1092,6 @@ aa aa aa aa -aa -aa ab ae ae @@ -1147,8 +1137,6 @@ aa aa aa aa -aa -aa ac af af @@ -1193,8 +1181,6 @@ aa aa aa aa -aa -aa ab ai af @@ -1236,8 +1222,6 @@ aa aa aa aa -aa -aa ab ae ae @@ -1283,8 +1267,6 @@ aa aa aa aa -aa -aa ac af af @@ -1328,8 +1310,6 @@ aa aa aa aa -aa -aa ab ae ai @@ -1375,8 +1355,6 @@ aa aa aa aa -aa -aa ac af af @@ -1421,8 +1399,6 @@ aa aa aa aa -aa -aa ab ai af @@ -1468,8 +1444,6 @@ aa aa aa aa -aa -aa ac af af @@ -1515,8 +1489,6 @@ aa aa aa aa -aa -aa ac af af @@ -1560,8 +1532,6 @@ aa aa aa aa -aa -aa ab ae ai @@ -1607,8 +1577,6 @@ aa aa aa aa -aa -aa ac af af @@ -1652,8 +1620,6 @@ aa aa aa aa -aa -aa ab ae ai @@ -1699,8 +1665,6 @@ aa aa aa aa -aa -aa ac af af @@ -1746,8 +1710,6 @@ aa aa aa aa -aa -aa ac af af @@ -1792,8 +1754,6 @@ aa (20,1,1) = {" aa aa -aa -aa ab ai af @@ -1839,8 +1799,6 @@ aa (21,1,1) = {" aa aa -aa -aa ac af af @@ -1884,8 +1842,6 @@ aa aa "} (22,1,1) = {" -aa -aa ab ae ai @@ -1931,8 +1887,6 @@ aa aa "} (23,1,1) = {" -aa -aa ac af af @@ -1978,8 +1932,6 @@ aa aa "} (24,1,1) = {" -aa -aa ac af af @@ -2025,8 +1977,6 @@ aa aa "} (25,1,1) = {" -aa -aa ac af af @@ -2072,8 +2022,6 @@ aa aa "} (26,1,1) = {" -aa -aa ac af af @@ -2119,8 +2067,6 @@ aa aa "} (27,1,1) = {" -aa -aa ac af af @@ -2166,8 +2112,6 @@ aa aa "} (28,1,1) = {" -aa -aa ac af af @@ -2213,8 +2157,6 @@ aa aa "} (29,1,1) = {" -aa -aa ac af af @@ -2260,8 +2202,6 @@ aa aa "} (30,1,1) = {" -aa -aa ac af af @@ -2307,8 +2247,6 @@ aa aa "} (31,1,1) = {" -aa -aa ac af af @@ -2354,8 +2292,6 @@ aa aa "} (32,1,1) = {" -aa -aa ad ag af @@ -2402,8 +2338,6 @@ aa "} (33,1,1) = {" aa -aa -aa ac af al @@ -2449,8 +2383,6 @@ aa "} (34,1,1) = {" aa -aa -aa ac af al @@ -2496,8 +2428,6 @@ aa "} (35,1,1) = {" aa -aa -aa ac af am @@ -2543,8 +2473,6 @@ aa "} (36,1,1) = {" aa -aa -aa ac af af @@ -2590,8 +2518,6 @@ aa "} (37,1,1) = {" aa -aa -aa ah aj an @@ -2637,8 +2563,6 @@ aa "} (38,1,1) = {" aa -aa -aa ac af af @@ -2684,8 +2608,6 @@ aa "} (39,1,1) = {" aa -aa -aa ad ag af @@ -2732,8 +2654,6 @@ aa (40,1,1) = {" aa aa -aa -aa ad ag af @@ -2780,8 +2700,6 @@ aa aa aa aa -aa -aa ad ag af @@ -2828,8 +2746,6 @@ aa aa aa aa -aa -aa ad aw ag @@ -2877,8 +2793,6 @@ aa aa aa aa -aa -aa ac af af @@ -2924,8 +2838,6 @@ aa aa aa aa -aa -aa ad aw aw @@ -2974,8 +2886,6 @@ aa aa aa aa -aa -aa ad aw aw diff --git a/_maps/RandomRuins/SpaceRuins/shuttlerelic.dmm b/_maps/RandomRuins/SpaceRuins/shuttlerelic.dmm index ecadecdd04..aebbdec92a 100644 --- a/_maps/RandomRuins/SpaceRuins/shuttlerelic.dmm +++ b/_maps/RandomRuins/SpaceRuins/shuttlerelic.dmm @@ -79,24 +79,6 @@ /mob/living/simple_animal/hostile/retaliate/spaceman, /turf/open/floor/oldshuttle, /area/ruin/powered) -"p" = ( -/turf/closed/indestructible/oldshuttle/corner{ - dir = 8 - }, -/area/ruin/powered) -"q" = ( -/turf/closed/indestructible/oldshuttle/corner, -/area/ruin/powered) -"r" = ( -/turf/closed/indestructible/oldshuttle/corner{ - dir = 1 - }, -/area/ruin/powered) -"s" = ( -/turf/closed/indestructible/oldshuttle/corner{ - dir = 4 - }, -/area/ruin/powered) "t" = ( /obj/machinery/power/generator, /turf/open/floor/oldshuttle, @@ -180,7 +162,7 @@ g g g g -p +b d l w @@ -196,8 +178,8 @@ c g g g -p -r +b +f a a a @@ -217,7 +199,7 @@ c c c c -s +h a "} (7,1,1) = {" @@ -235,7 +217,7 @@ i c u c -s +h "} (8,1,1) = {" b @@ -251,7 +233,7 @@ m m c g -q +e c "} (9,1,1) = {" @@ -265,7 +247,7 @@ m m m m -p +b c g g @@ -299,7 +281,7 @@ m m m m -q +e c g g @@ -319,7 +301,7 @@ m m c g -p +b c "} (13,1,1) = {" @@ -337,7 +319,7 @@ i c u c -r +f "} (14,1,1) = {" a @@ -353,7 +335,7 @@ c c c c -r +f a "} (15,1,1) = {" @@ -366,8 +348,8 @@ c g g g -q -s +e +h a a a @@ -384,7 +366,7 @@ g g g g -q +e d l v diff --git a/_maps/RandomRuins/SpaceRuins/spacehotel.dmm b/_maps/RandomRuins/SpaceRuins/spacehotel.dmm index b24f14243d..5dff750d0f 100644 --- a/_maps/RandomRuins/SpaceRuins/spacehotel.dmm +++ b/_maps/RandomRuins/SpaceRuins/spacehotel.dmm @@ -5,11 +5,11 @@ "ab" = ( /obj/structure/grille, /turf/template_noop, -/area/template_noop) +/area/space/nearstation) "ac" = ( /obj/structure/lattice, /turf/template_noop, -/area/template_noop) +/area/space/nearstation) "ad" = ( /obj/machinery/power/solar, /obj/structure/cable/yellow{ @@ -774,7 +774,7 @@ /turf/open/floor/carpet, /area/ruin/space/has_grav/hotel) "cz" = ( -/obj/structure/sign/fire{ +/obj/structure/sign/warning/fire{ desc = "A sign that states the labeled room's number."; dir = 4; icon_state = "roomnum"; @@ -785,7 +785,7 @@ /turf/open/floor/carpet, /area/ruin/space/has_grav/hotel) "cA" = ( -/obj/structure/sign/fire{ +/obj/structure/sign/warning/fire{ desc = "A sign that states the labeled room's number."; dir = 8; icon_state = "roomnum"; @@ -802,7 +802,7 @@ /turf/open/floor/carpet, /area/ruin/space/has_grav/hotel) "cC" = ( -/obj/structure/sign/fire{ +/obj/structure/sign/warning/fire{ desc = "A sign that states the labeled room's number."; dir = 6; icon_state = "roomnum"; @@ -822,7 +822,7 @@ /turf/open/floor/carpet, /area/ruin/space/has_grav/hotel) "cE" = ( -/obj/structure/sign/fire{ +/obj/structure/sign/warning/fire{ desc = "A sign that states the labeled room's number."; dir = 10; icon_state = "roomnum"; @@ -946,7 +946,7 @@ /turf/open/floor/carpet, /area/ruin/space/has_grav/hotel) "cT" = ( -/obj/structure/sign/fire{ +/obj/structure/sign/warning/fire{ desc = "A sign that states the labeled room's number."; dir = 1; icon_state = "roomnum"; @@ -963,7 +963,7 @@ /turf/open/floor/carpet, /area/ruin/space/has_grav/hotel) "cV" = ( -/obj/structure/sign/fire{ +/obj/structure/sign/warning/fire{ desc = "A sign that states the labeled room's number."; icon_state = "roomnum"; name = "Room Number 1"; @@ -2172,7 +2172,7 @@ "gL" = ( /obj/structure/table, /obj/item/storage/box/donkpockets, -/obj/structure/sign/nosmoking_1{ +/obj/structure/sign/warning/nosmoking/circle{ pixel_y = 32 }, /turf/open/floor/plasteel/dark, @@ -2784,7 +2784,7 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/structure/sign/fire{ +/obj/structure/sign/warning/fire{ desc = "A poster designed to remind the reader to wear appropriate insulation and head protection when working with material."; icon_state = "safety"; name = "Safety Poster"; @@ -3344,7 +3344,7 @@ /turf/open/floor/wood, /area/ruin/space/has_grav/hotel/pool) "jZ" = ( -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = 32 }, /turf/open/floor/plasteel, @@ -3464,7 +3464,7 @@ /obj/structure/cable{ icon_state = "0-8" }, -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_y = -32 }, /turf/open/floor/plasteel/yellow/side, @@ -3499,7 +3499,7 @@ /obj/structure/cable/yellow{ icon_state = "4-8" }, -/obj/structure/sign/vacuum{ +/obj/structure/sign/warning/vacuum{ pixel_y = -32 }, /turf/open/floor/plasteel/yellow/side, @@ -3678,7 +3678,7 @@ /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 1 }, -/obj/structure/sign/atmosplaque{ +/obj/structure/sign/plaques/atmos{ pixel_y = 32 }, /turf/open/floor/plating, @@ -3705,7 +3705,7 @@ "lb" = ( /obj/structure/table, /obj/machinery/recharger, -/obj/structure/sign/goldenplaque{ +/obj/structure/sign/plaques/golden{ pixel_x = -32 }, /turf/open/floor/plasteel/red/side{ @@ -4401,25 +4401,18 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab aa aa "} @@ -4475,29 +4468,22 @@ aa aa aa aa +ab +ab +ab +aa +ac aa aa +ac aa aa +ac aa aa +ac aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +ab aa "} (3,1,1) = {" @@ -4551,30 +4537,23 @@ aa aa aa aa +ab +aa +ac aa aa +lV aa aa +lV aa aa +lV aa aa +lV aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +ab aa "} (4,1,1) = {" @@ -4604,36 +4583,9 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +ab +ab +ab ab ab ab @@ -4653,6 +4605,26 @@ aa aa aa aa +aa +ab +aa +aa +ac +aa +aa +lW +aa +aa +lW +aa +aa +lW +aa +aa +lW +aa +ab +aa "} (5,1,1) = {" aa @@ -4680,239 +4652,6 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ab -ab -ab -aa -ac -aa -aa -ac -aa -aa -ac -aa -aa -ac -aa -ab -aa -aa -aa -aa -aa -aa -"} -(6,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ab -aa -ac -aa -aa -lV -aa -aa -lV -aa -aa -lV -aa -aa -lV -aa -ab -aa -aa -aa -aa -aa -aa -"} -(7,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -aa -aa -aa -aa -aa -aa -aa -aa -ab -aa -aa -ac -aa -aa -lW -aa -aa -lW -aa -aa -lW -aa -aa -lW -aa -ab -aa -aa -aa -aa -aa -aa -"} -(8,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa ab aa aa @@ -4956,15 +4695,8 @@ lW aa ab aa -aa -aa -aa -aa -aa "} -(9,1,1) = {" -aa -aa +(6,1,1) = {" aa aa aa @@ -5033,15 +4765,8 @@ lW aa ab aa -aa -aa -aa -aa -aa "} -(10,1,1) = {" -aa -aa +(7,1,1) = {" aa aa aa @@ -5110,15 +4835,8 @@ lW aa aa ab -aa -aa -aa -aa -aa "} -(11,1,1) = {" -aa -aa +(8,1,1) = {" aa aa aa @@ -5187,15 +4905,8 @@ aj mO ac ab -aa -aa -aa -aa -aa "} -(12,1,1) = {" -aa -aa +(9,1,1) = {" aa aa aa @@ -5264,15 +4975,8 @@ lY aa aa ab -aa -aa -aa -aa -aa "} -(13,1,1) = {" -aa -aa +(10,1,1) = {" aa aa aa @@ -5341,15 +5045,8 @@ lY aa ab aa -aa -aa -aa -aa -aa "} -(14,1,1) = {" -aa -aa +(11,1,1) = {" aa aa aa @@ -5418,15 +5115,8 @@ lY aa ab aa -aa -aa -aa -aa -aa "} -(15,1,1) = {" -aa -aa +(12,1,1) = {" aa aa aa @@ -5495,15 +5185,8 @@ lY aa ab aa -aa -aa -aa -aa -aa "} -(16,1,1) = {" -aa -aa +(13,1,1) = {" aa aa aa @@ -5572,15 +5255,8 @@ lZ aa ab aa -aa -aa -aa -aa -aa "} -(17,1,1) = {" -aa -aa +(14,1,1) = {" aa aa aa @@ -5649,15 +5325,8 @@ ac aa ab aa -aa -aa -aa -aa -aa "} -(18,1,1) = {" -aa -aa +(15,1,1) = {" aa aa aa @@ -5726,15 +5395,8 @@ ab ab aa aa -aa -aa -aa -aa -aa "} -(19,1,1) = {" -aa -aa +(16,1,1) = {" aa aa aa @@ -5803,15 +5465,8 @@ aa aa aa aa -aa -aa -aa -aa -aa "} -(20,1,1) = {" -aa -aa +(17,1,1) = {" aa aa aa @@ -5880,15 +5535,8 @@ aa aa aa aa -aa -aa -aa -aa -aa "} -(21,1,1) = {" -aa -aa +(18,1,1) = {" aa aa aa @@ -5957,15 +5605,8 @@ aa aa aa aa -aa -aa -aa -aa -aa "} -(22,1,1) = {" -aa -aa +(19,1,1) = {" aa aa aa @@ -6034,15 +5675,8 @@ aa aa aa aa -aa -aa -aa -aa -aa "} -(23,1,1) = {" -aa -aa +(20,1,1) = {" aa aa aa @@ -6111,15 +5745,8 @@ aa aa aa aa -aa -aa -aa -aa -aa "} -(24,1,1) = {" -aa -aa +(21,1,1) = {" aa aa aa @@ -6188,15 +5815,8 @@ aa aa aa aa -aa -aa -aa -aa -aa "} -(25,1,1) = {" -aa -aa +(22,1,1) = {" aa aa aa @@ -6265,15 +5885,8 @@ aa aa aa aa -aa -aa -aa -aa -aa "} -(26,1,1) = {" -aa -aa +(23,1,1) = {" aa aa aa @@ -6342,15 +5955,8 @@ aa aa aa aa -aa -aa -aa -aa -aa "} -(27,1,1) = {" -aa -aa +(24,1,1) = {" aa aa aa @@ -6419,15 +6025,8 @@ aa aa aa aa -aa -aa -aa -aa -aa "} -(28,1,1) = {" -aa -aa +(25,1,1) = {" aa aa aa @@ -6496,15 +6095,8 @@ ab aa aa aa -aa -aa -aa -aa -aa "} -(29,1,1) = {" -aa -aa +(26,1,1) = {" aa aa aa @@ -6573,15 +6165,8 @@ ab aa aa aa -aa -aa -aa -aa -aa "} -(30,1,1) = {" -aa -aa +(27,1,1) = {" aa aa aa @@ -6650,15 +6235,8 @@ ab aa aa aa -aa -aa -aa -aa -aa "} -(31,1,1) = {" -aa -aa +(28,1,1) = {" aa aa aa @@ -6727,15 +6305,8 @@ ab aa aa aa -aa -aa -aa -aa -aa "} -(32,1,1) = {" -aa -aa +(29,1,1) = {" aa aa aa @@ -6804,15 +6375,8 @@ ab aa aa aa -aa -aa -aa -aa -aa "} -(33,1,1) = {" -aa -aa +(30,1,1) = {" aa aa aa @@ -6881,15 +6445,8 @@ ab aa aa aa -aa -aa -aa -aa -aa "} -(34,1,1) = {" -aa -aa +(31,1,1) = {" aa aa aa @@ -6958,15 +6515,8 @@ ab aa aa aa -aa -aa -aa -aa -aa "} -(35,1,1) = {" -aa -aa +(32,1,1) = {" aa aa aa @@ -7035,15 +6585,8 @@ ab aa aa aa -aa -aa -aa -aa -aa "} -(36,1,1) = {" -aa -aa +(33,1,1) = {" aa aa aa @@ -7112,15 +6655,8 @@ ab aa aa aa -aa -aa -aa -aa -aa "} -(37,1,1) = {" -aa -aa +(34,1,1) = {" aa aa aa @@ -7189,15 +6725,8 @@ ab aa aa aa -aa -aa -aa -aa -aa "} -(38,1,1) = {" -aa -aa +(35,1,1) = {" aa aa aa @@ -7266,15 +6795,8 @@ ab aa aa aa -aa -aa -aa -aa -aa "} -(39,1,1) = {" -aa -aa +(36,1,1) = {" aa aa aa @@ -7343,15 +6865,8 @@ ab aa aa aa -aa -aa -aa -aa -aa "} -(40,1,1) = {" -aa -aa +(37,1,1) = {" aa aa aa @@ -7420,15 +6935,8 @@ ab aa aa aa -aa -aa -aa -aa -aa "} -(41,1,1) = {" -aa -aa +(38,1,1) = {" aa aa aa @@ -7497,15 +7005,8 @@ ab aa aa aa -aa -aa -aa -aa -aa "} -(42,1,1) = {" -aa -aa +(39,1,1) = {" aa aa aa @@ -7574,15 +7075,8 @@ ab aa aa aa -aa -aa -aa -aa -aa "} -(43,1,1) = {" -aa -aa +(40,1,1) = {" aa aa aa @@ -7651,15 +7145,8 @@ ab aa aa aa -aa -aa -aa -aa -aa "} -(44,1,1) = {" -aa -aa +(41,1,1) = {" aa aa aa @@ -7728,15 +7215,8 @@ ab aa aa aa -aa -aa -aa -aa -aa "} -(45,1,1) = {" -aa -aa +(42,1,1) = {" aa aa aa @@ -7805,15 +7285,8 @@ ab aa aa aa -aa -aa -aa -aa -aa "} -(46,1,1) = {" -aa -aa +(43,1,1) = {" aa aa aa @@ -7882,15 +7355,8 @@ ab aa aa aa -aa -aa -aa -aa -aa "} -(47,1,1) = {" -aa -aa +(44,1,1) = {" aa aa aa @@ -7959,15 +7425,8 @@ ab aa aa aa -aa -aa -aa -aa -aa "} -(48,1,1) = {" -aa -aa +(45,1,1) = {" aa aa aa @@ -8036,15 +7495,8 @@ ab aa aa aa -aa -aa -aa -aa -aa "} -(49,1,1) = {" -aa -aa +(46,1,1) = {" aa aa aa @@ -8113,15 +7565,8 @@ ab aa aa aa -aa -aa -aa -aa -aa "} -(50,1,1) = {" -aa -aa +(47,1,1) = {" aa aa aa @@ -8190,15 +7635,8 @@ ab aa aa aa -aa -aa -aa -aa -aa "} -(51,1,1) = {" -aa -aa +(48,1,1) = {" aa aa aa @@ -8267,15 +7705,8 @@ ab aa aa aa -aa -aa -aa -aa -aa "} -(52,1,1) = {" -aa -aa +(49,1,1) = {" aa aa aa @@ -8344,15 +7775,8 @@ ab aa aa aa -aa -aa -aa -aa -aa "} -(53,1,1) = {" -aa -aa +(50,1,1) = {" aa aa aa @@ -8421,15 +7845,8 @@ ab aa aa aa -aa -aa -aa -aa -aa "} -(54,1,1) = {" -aa -aa +(51,1,1) = {" aa aa ab @@ -8498,15 +7915,8 @@ ab aa aa aa -aa -aa -aa -aa -aa "} -(55,1,1) = {" -aa -aa +(52,1,1) = {" aa ab aa @@ -8575,15 +7985,8 @@ ab aa aa aa -aa -aa -aa -aa -aa "} -(56,1,1) = {" -aa -aa +(53,1,1) = {" ab aa aa @@ -8652,15 +8055,8 @@ ab aa aa aa -aa -aa -aa -aa -aa "} -(57,1,1) = {" -aa -aa +(54,1,1) = {" ab ac ac @@ -8729,15 +8125,8 @@ ab aa aa aa -aa -aa -aa -aa -aa "} -(58,1,1) = {" -aa -aa +(55,1,1) = {" ab aa aa @@ -8806,15 +8195,8 @@ ab aa aa aa -aa -aa -aa -aa -aa "} -(59,1,1) = {" -aa -aa +(56,1,1) = {" ab aa aa @@ -8883,15 +8265,8 @@ ab aa aa aa -aa -aa -aa -aa -aa "} -(60,1,1) = {" -aa -aa +(57,1,1) = {" ab ac ac @@ -8960,15 +8335,8 @@ ab aa aa aa -aa -aa -aa -aa -aa "} -(61,1,1) = {" -aa -aa +(58,1,1) = {" ab aa aa @@ -9037,15 +8405,8 @@ ab aa aa aa -aa -aa -aa -aa -aa "} -(62,1,1) = {" -aa -aa +(59,1,1) = {" ab aa aa @@ -9114,15 +8475,8 @@ aa aa aa aa -aa -aa -aa -aa -aa "} -(63,1,1) = {" -aa -aa +(60,1,1) = {" ab ac ac @@ -9191,6 +8545,211 @@ aa aa aa aa +"} +(61,1,1) = {" +ab +aa +aa +aa +aa +aa +aa +aa +ag +aa +aa +aa +aa +aa +aa +aa +ab +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +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) = {" +ab +aa +aa +aa +aa +aa +aa +aa +ag +aa +aa +aa +aa +aa +aa +aa +ab +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +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) = {" +ab +ac +ac +ad +ae +ae +ae +ae +ah +ak +ak +ak +ak +bd +ac +ac +ab +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -9198,239 +8757,6 @@ aa aa "} (64,1,1) = {" -aa -aa -ab -aa -aa -aa -aa -aa -aa -aa -ag -aa -aa -aa -aa -aa -aa -aa -ab -aa -aa -aa -aa -aa -aa -aa -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -aa -aa -aa -aa -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 -aa -ab -aa -aa -aa -aa -aa -aa -aa -ag -aa -aa -aa -aa -aa -aa -aa -ab -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -ab -ac -ac -ad -ae -ae -ae -ae -ah -ak -ak -ak -ak -bd -ac -ac -ab -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa ab aa aa @@ -9499,15 +8825,8 @@ aa aa aa aa -aa -aa -aa -aa -aa "} -(68,1,1) = {" -aa -aa +(65,1,1) = {" aa ab aa @@ -9576,15 +8895,8 @@ aa aa aa aa -aa -aa -aa -aa -aa "} -(69,1,1) = {" -aa -aa +(66,1,1) = {" aa aa ab @@ -9653,15 +8965,8 @@ aa aa aa aa -aa -aa -aa -aa -aa "} -(70,1,1) = {" -aa -aa +(67,1,1) = {" aa aa aa @@ -9730,394 +9035,4 @@ aa aa aa aa -aa -aa -aa -aa -aa -"} -(71,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa "} diff --git a/_maps/RandomRuins/SpaceRuins/turretedoutpost.dmm b/_maps/RandomRuins/SpaceRuins/turretedoutpost.dmm index f55f7cf0e6..953c1b2296 100644 --- a/_maps/RandomRuins/SpaceRuins/turretedoutpost.dmm +++ b/_maps/RandomRuins/SpaceRuins/turretedoutpost.dmm @@ -5,7 +5,7 @@ "ab" = ( /obj/structure/lattice, /turf/template_noop, -/area/template_noop) +/area/space/nearstation) "ac" = ( /obj/structure/grille, /turf/open/floor/plating/airless, diff --git a/_maps/RandomRuins/SpaceRuins/vaporwave.dmm b/_maps/RandomRuins/SpaceRuins/vaporwave.dmm index 896a34e5db..502c677325 100644 --- a/_maps/RandomRuins/SpaceRuins/vaporwave.dmm +++ b/_maps/RandomRuins/SpaceRuins/vaporwave.dmm @@ -184,10 +184,6 @@ /obj/effect/overlay/palmtree_r, /turf/open/floor/plating/asteroid/airless, /area/ruin/unpowered/no_grav) -"N" = ( -/obj/effect/turf_decal/sand, -/turf/open/floor/plasteel/airless/asteroid, -/area/ruin/unpowered/no_grav) "O" = ( /obj/structure/chair/comfy/black{ dir = 8 @@ -201,10 +197,6 @@ /obj/machinery/light/small, /turf/open/floor/plasteel/vaporwave, /area/ruin/space/has_grav/powered/aesthetic) -"Q" = ( -/obj/machinery/light/small, -/turf/open/floor/plasteel/vaporwave, -/area/ruin/space/has_grav/powered/aesthetic) "R" = ( /obj/machinery/light/small{ dir = 1 @@ -213,14 +205,6 @@ initial_gas_mix = "TEMP=2.7" }, /area/ruin/unpowered/no_grav) -"S" = ( -/obj/machinery/light/small{ - dir = 1 - }, -/turf/open/floor/plating/astplate{ - initial_gas_mix = "TEMP=2.7" - }, -/area/ruin/unpowered/no_grav) (1,1,1) = {" a @@ -372,7 +356,7 @@ k f D J -N +I d "} (10,1,1) = {" @@ -390,7 +374,7 @@ z E K E -N +I "} (11,1,1) = {" a @@ -407,7 +391,7 @@ f D L E -N +I "} (12,1,1) = {" a diff --git a/_maps/RandomRuins/SpaceRuins/way_home.dmm b/_maps/RandomRuins/SpaceRuins/way_home.dmm index eb3f983f85..ed455736c2 100644 --- a/_maps/RandomRuins/SpaceRuins/way_home.dmm +++ b/_maps/RandomRuins/SpaceRuins/way_home.dmm @@ -36,13 +36,8 @@ a a a a -a -a -a -a -a -a -a +b +b a "} (2,1,1) = {" @@ -68,14 +63,9 @@ a a a a -a -a -a -a -a -a -a -a +b +b +b "} (3,1,1) = {" a @@ -101,12 +91,7 @@ a a a a -a b -b -a -a -a a "} (4,1,1) = {" @@ -134,11 +119,6 @@ a a a a -b -b -b -a -a a "} (5,1,1) = {" @@ -152,22 +132,17 @@ a a a a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a b +b +a +a +a +a +a +a +a +a +a a a a @@ -182,17 +157,12 @@ a a a a -a -a -a -a -a -a -a -a -a -a -a +b +b +b +b +b +b a a a @@ -213,18 +183,13 @@ a a a a -a -a -a -a -a b b -a -a -a -a -a +b +b +b +b +b a a a @@ -243,19 +208,14 @@ a a a a -a -a -a -a -a b b b b b b -a -a +b +b a a a @@ -272,12 +232,7 @@ a (9,1,1) = {" a a -a -a -a -a -a -a +b a b b @@ -286,8 +241,8 @@ b b b b -a -a +b +c a a a @@ -304,11 +259,6 @@ a (10,1,1) = {" a a -a -a -a -a -a b b b @@ -317,10 +267,10 @@ b b b b -a -a -a -a +b +b +c +c a a a @@ -336,10 +286,7 @@ a (11,1,1) = {" a a -a -a b -a b b b @@ -349,10 +296,8 @@ b b b c -a -a -a -a +c +c a a a @@ -367,9 +312,6 @@ a "} (12,1,1) = {" a -a -a -a b b b @@ -382,12 +324,10 @@ b b c c -a -a -a -a -a -a +c +c +c +c a a a @@ -398,10 +338,6 @@ a a "} (13,1,1) = {" -a -a -a -a b b b @@ -414,89 +350,22 @@ b c c c +c +c +c +c +c +c +c a a a a a -a -a -a -a -a -a -a -a -a +b "} (14,1,1) = {" a -a -a -b -b -b -b -b -b -b -b -b -b -c -c -c -c -c -c -a -a -a -a -a -a -a -a -a -a -a -"} -(15,1,1) = {" -a -a -b -b -b -b -b -b -b -b -b -c -c -c -c -c -c -c -c -c -c -a -a -a -a -a -b -a -a -a -"} -(16,1,1) = {" -a -a -a b b b @@ -521,23 +390,74 @@ c a b b +"} +(15,1,1) = {" a a +b +b +b +b +b +b +b +c +a +a +a +a +c +c +c +c +c +c +b +b +b +b +a +"} +(16,1,1) = {" +a +a +b +b +b +b +b +b +b +a +a +a +a +a +a +c +c +c +b +b +b +b +b +b a "} (17,1,1) = {" a a +b +b a a b b b -b -b -b -b -c +a +a +a a a a @@ -545,16 +465,11 @@ a c c c -c -c -c b b b b -a -a -a +b a "} (18,1,1) = {" @@ -562,13 +477,13 @@ a a a a +a +a +a b -b -b -b -b -b -b +a +a +a a a a @@ -583,24 +498,20 @@ b b b b -b -a -a -a -a "} (19,1,1) = {" a a a a -b -b a a -b -b -b +a +a +a +a +a +a a a a @@ -609,17 +520,11 @@ a a a c -c -c b b b b b -a -a -a -a "} (20,1,1) = {" a @@ -631,7 +536,6 @@ a a a a -b a a a @@ -641,17 +545,13 @@ a a a a -c -c -c +a +a +a b b b b -b -a -a -a "} (21,1,1) = {" a @@ -675,14 +575,9 @@ a a a a -c -b -b -b -b -b -a a +b +b a "} (22,1,1) = {" @@ -711,265 +606,4 @@ a a b b -b -b -a -a -a -"} -(23,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -b -a -a -a -a -"} -(24,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -b -a -a -a -"} -(25,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} -(26,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} -(27,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} -(28,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} -(29,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} -(30,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a "} diff --git a/_maps/RandomRuins/SpaceRuins/whiteshipruin_box.dmm b/_maps/RandomRuins/SpaceRuins/whiteshipruin_box.dmm index 71196719a4..8660ae3dea 100644 --- a/_maps/RandomRuins/SpaceRuins/whiteshipruin_box.dmm +++ b/_maps/RandomRuins/SpaceRuins/whiteshipruin_box.dmm @@ -59,9 +59,6 @@ "al" = ( /turf/open/floor/plating, /area/ruin/space/has_grav/whiteship/box) -"am" = ( -/turf/closed/wall/mineral/titanium/interior, -/area/ruin/space/has_grav/whiteship/box) "an" = ( /obj/structure/rack, /obj/item/clothing/suit/space/hardsuit/medical, @@ -320,7 +317,6 @@ aa aa aa aa -aa "} (2,1,1) = {" aa @@ -332,9 +328,9 @@ aa aa aa ab -am +aj ae -am +aj ab aa aa @@ -344,7 +340,6 @@ aa aa aa aa -aa "} (3,1,1) = {" aa @@ -368,7 +363,6 @@ aa aa aa aa -aa "} (4,1,1) = {" aa @@ -392,7 +386,6 @@ aa aa aa aa -aa "} (5,1,1) = {" aa @@ -416,7 +409,6 @@ aa aa aa aa -aa "} (6,1,1) = {" aa @@ -440,7 +432,6 @@ aa aa aa aa -aa "} (7,1,1) = {" aa @@ -464,7 +455,6 @@ aa aa aa aa -aa "} (8,1,1) = {" aa @@ -488,7 +478,6 @@ aa aa aa aa -aa "} (9,1,1) = {" aa @@ -512,7 +501,6 @@ aa aa aa aa -aa "} (10,1,1) = {" aa @@ -524,9 +512,9 @@ aa aa aa ab -am +aj ae -am +aj ab aa aa @@ -536,7 +524,6 @@ aa aa aa aa -aa "} (11,1,1) = {" aa @@ -560,7 +547,6 @@ aa aa aa aa -aa "} (12,1,1) = {" aa @@ -584,7 +570,6 @@ aa aa aa aa -aa "} (13,1,1) = {" aa @@ -608,7 +593,6 @@ aa aa aa aa -aa "} (14,1,1) = {" aa @@ -620,9 +604,9 @@ aa aa ab ab -am +aj ae -am +aj ab ab aa @@ -632,7 +616,6 @@ aa aa aa aa -aa "} (15,1,1) = {" ab @@ -643,11 +626,11 @@ ah ar aa ab -am +aj ae ae ae -am +aj ab aa ad @@ -656,7 +639,6 @@ ah ah ar ab -aa "} (16,1,1) = {" ab @@ -680,7 +662,6 @@ ai ai ab ab -aa "} (17,1,1) = {" aa @@ -690,13 +671,13 @@ al al aj ab -am +aj ae ae ae ae ae -am +aj ab aj al @@ -704,7 +685,6 @@ al aj ab aa -aa "} (18,1,1) = {" aa @@ -728,7 +708,6 @@ aj ab aa aa -aa "} (19,1,1) = {" aa @@ -752,7 +731,6 @@ ab aa aa aa -aa "} (20,1,1) = {" aa @@ -776,14 +754,13 @@ ab aa aa aa -aa "} (21,1,1) = {" aa aa ab ab -am +aj au ae ae @@ -800,13 +777,12 @@ ab ab aa aa -aa "} (22,1,1) = {" aa ab ab -am +aj ae ae ae @@ -824,7 +800,6 @@ ab ab ab aa -aa "} (23,1,1) = {" ab @@ -833,7 +808,7 @@ ab ab ab ab -am +aj ae ab aD @@ -845,10 +820,9 @@ ae ae ac ae -am +aj ab aa -aa "} (24,1,1) = {" ac @@ -856,7 +830,7 @@ ae ae an an -am +aj ab aA ab @@ -872,7 +846,6 @@ ae aY ab ab -aa "} (25,1,1) = {" ab @@ -894,9 +867,8 @@ ae ab ae ae -am +aj ab -aa "} (26,1,1) = {" ab @@ -920,7 +892,6 @@ aX ae ae ab -aa "} (27,1,1) = {" ab @@ -944,7 +915,6 @@ ae ae ba ab -aa "} (28,1,1) = {" ab @@ -954,7 +924,7 @@ ae ae ae ab -am +aj ae ae ae @@ -968,7 +938,6 @@ ae ae ae ab -aa "} (29,1,1) = {" ab @@ -976,7 +945,7 @@ ae ae ae ae -am +aj ab ab ab @@ -992,16 +961,15 @@ ae ae ae ab -aa "} (30,1,1) = {" ab ae ae ae -am +aj ab -am +aj ae ae ae @@ -1014,9 +982,8 @@ aF ab ae ae -am +aj ab -aa "} (31,1,1) = {" ac @@ -1024,7 +991,7 @@ ae ak ae ab -am +aj ae ae ae @@ -1035,12 +1002,11 @@ ae ae ae ae -am -am +aj +aj aZ ab aa -aa "} (32,1,1) = {" ab @@ -1064,7 +1030,6 @@ ab ab ab aa -aa "} (33,1,1) = {" aa @@ -1083,12 +1048,11 @@ ae ae ae ae -am +aj ab ab aa aa -aa "} (34,1,1) = {" aa @@ -1096,7 +1060,7 @@ aa ab aq ab -am +aj az ae ae @@ -1106,13 +1070,12 @@ aF ae ae ae -am +aj ab ab aa aa aa -aa "} (35,1,1) = {" aa @@ -1136,5 +1099,4 @@ aa aa aa aa -aa "} diff --git a/_maps/RandomZLevels/Academy.dmm b/_maps/RandomZLevels/Academy.dmm index 535cb1377c..19653468d6 100644 --- a/_maps/RandomZLevels/Academy.dmm +++ b/_maps/RandomZLevels/Academy.dmm @@ -457,12 +457,6 @@ "bF" = ( /turf/closed/wall/mineral/titanium, /area/awaymission/academy/classrooms) -"bG" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/academy/classrooms) -"bH" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/academy/classrooms) "bI" = ( /obj/machinery/light{ dir = 8 @@ -547,9 +541,6 @@ "bV" = ( /turf/open/floor/plasteel/floorgrime, /area/awaymission/academy/classrooms) -"bW" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/academy/classrooms) "bX" = ( /obj/effect/decal/cleanable/ash, /turf/open/floor/engine, @@ -631,11 +622,6 @@ }, /turf/open/floor/plasteel/dark, /area/awaymission/academy/headmaster) -"cn" = ( -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/awaymission/academy/headmaster) "co" = ( /obj/machinery/portable_atmospherics/scrubber/huge, /turf/open/floor/plating, @@ -658,9 +644,6 @@ }, /turf/open/floor/plasteel, /area/awaymission/academy/classrooms) -"cs" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/academy/classrooms) "ct" = ( /obj/structure/chair, /turf/open/floor/plasteel, @@ -741,7 +724,7 @@ /turf/open/floor/plasteel/dark, /area/awaymission/academy/headmaster) "cH" = ( -/obj/structure/sign/nosmoking_1, +/obj/structure/sign/warning/nosmoking/circle, /turf/closed/wall, /area/awaymission/academy/headmaster) "cI" = ( @@ -795,12 +778,6 @@ dir = 6 }, /area/awaymission/academy/classrooms) -"cS" = ( -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/awaymission/academy/headmaster) "cT" = ( /obj/machinery/light{ dir = 8 @@ -1908,12 +1885,6 @@ dir = 4 }, /area/awaymission/academy/classrooms) -"gw" = ( -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/wood, -/area/awaymission/academy/classrooms) "gx" = ( /obj/structure/closet/athletic_mixed, /turf/open/floor/engine/cult, @@ -2223,24 +2194,12 @@ }, /turf/open/floor/plasteel, /area/awaymission/academy/academyaft) -"hu" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel/hydrofloor, -/area/awaymission/academy/academyaft) "hv" = ( /obj/structure/cable{ icon_state = "4-8" }, /turf/open/floor/plasteel, /area/awaymission/academy/academyaft) -"hw" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plating, -/area/awaymission/academy/academyaft) "hx" = ( /obj/structure/cable{ icon_state = "0-8" @@ -2315,12 +2274,6 @@ dir = 8 }, /area/awaymission/academy/academyaft) -"hG" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/awaymission/academy/academyaft) "hH" = ( /obj/structure/cable{ icon_state = "4-8" @@ -3149,12 +3102,6 @@ "kf" = ( /turf/open/floor/plating, /area/awaymission/academy/academygate) -"kg" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/carpet, -/area/awaymission/academy/academygate) "kh" = ( /obj/machinery/power/apc{ dir = 1; @@ -4011,20 +3958,6 @@ }, /turf/open/floor/carpet, /area/awaymission/academy/headmaster) -"np" = ( -/obj/structure/frame/computer{ - anchored = 1; - dir = 4 - }, -/turf/open/floor/carpet, -/area/awaymission/academy/headmaster) -"nq" = ( -/obj/structure/frame/computer{ - anchored = 1; - dir = 8 - }, -/turf/open/floor/carpet, -/area/awaymission/academy/headmaster) (1,1,1) = {" aa diff --git a/_maps/RandomZLevels/beach.dmm b/_maps/RandomZLevels/beach.dmm index 10fa8be861..dddeadb0be 100644 --- a/_maps/RandomZLevels/beach.dmm +++ b/_maps/RandomZLevels/beach.dmm @@ -144,7 +144,7 @@ /area/awaymission/beach) "aA" = ( /obj/machinery/vending/boozeomat{ - emagged = 1 + set_obj_flags = "EMAGGED" }, /turf/open/floor/wood, /area/awaymission/beach) @@ -233,9 +233,6 @@ /obj/effect/overlay/palmtree_r, /turf/open/floor/plating/beach/sand, /area/space) -"aR" = ( -/turf/open/floor/plating/beach/sand, -/area/awaymission/beach) "aS" = ( /obj/machinery/door/airlock/sandstone, /turf/open/floor/wood, diff --git a/_maps/RandomZLevels/caves.dmm b/_maps/RandomZLevels/caves.dmm index b1e840ac15..46f33f533b 100644 --- a/_maps/RandomZLevels/caves.dmm +++ b/_maps/RandomZLevels/caves.dmm @@ -303,7 +303,7 @@ /obj/machinery/light/small/built{ dir = 4 }, -/obj/structure/sign/pods{ +/obj/structure/sign/warning/pods{ desc = "A warning sign which warns of potential mech traffic to and from different levels of the mine."; name = "\improper MECH TUNNEL PASSAGE B1 TO A2"; pixel_x = 32 @@ -373,9 +373,6 @@ initial_gas_mix = "n2=23;o2=14" }, /area/awaymission/caves/BMP_asteroid/level_three) -"bd" = ( -/turf/closed/wall/mineral/cult, -/area/awaymission/caves/BMP_asteroid/level_four) "be" = ( /mob/living/simple_animal/hostile/spawner/mining/goliath, /turf/open/floor/plating/asteroid/basalt{ @@ -625,7 +622,7 @@ }, /area/awaymission/caves/BMP_asteroid/level_two) "bP" = ( -/obj/structure/sign/pods{ +/obj/structure/sign/warning/pods{ desc = "A warning sign which warns of potential mech traffic to and from different levels of the mine."; name = "\improper MECH TUNNEL PASSAGE A2 TO B1"; pixel_x = 32 @@ -769,7 +766,7 @@ }, /area/awaymission/caves/BMP_asteroid) "ck" = ( -/obj/structure/sign/xeno_warning_mining{ +/obj/structure/sign/warning/xeno_mining{ pixel_y = -32 }, /turf/open/floor/plating/asteroid/basalt{ @@ -896,7 +893,7 @@ }, /area/awaymission/caves/research) "cE" = ( -/obj/structure/sign/vacuum{ +/obj/structure/sign/warning/vacuum{ name = "\improper LOW AIR AREA"; pixel_x = 32 }, @@ -925,18 +922,8 @@ initial_gas_mix = "n2=23;o2=14" }, /area/awaymission/caves/BMP_asteroid/level_two) -"cI" = ( -/turf/open/floor/plating{ - initial_gas_mix = "n2=23;o2=14" - }, -/area/awaymission/caves/BMP_asteroid/level_two) -"cJ" = ( -/turf/open/floor/plating/asteroid/basalt{ - initial_gas_mix = "n2=23;o2=14" - }, -/area/awaymission/caves/BMP_asteroid/level_two) "cK" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ desc = "A warning sign which reads 'HOLY SHIT NIGGA WHAT ARE YOU DOING'."; name = "\improper HOLY SHIT NIGGA WHAT ARE YOU DOING" }, @@ -1055,7 +1042,7 @@ }, /area/awaymission/caves/research) "cZ" = ( -/obj/structure/sign/vacuum{ +/obj/structure/sign/warning/vacuum{ name = "\improper LOW AIR AREA"; pixel_x = 32 }, @@ -1081,7 +1068,7 @@ /obj/machinery/light/small{ dir = 8 }, -/obj/structure/sign/pods{ +/obj/structure/sign/warning/pods{ desc = "A warning sign which warns of potential mech traffic to and from different levels of the mine."; name = "\improper MECH TUNNEL PASSAGE A2 TO A1"; pixel_x = -32 @@ -1330,12 +1317,6 @@ initial_gas_mix = "n2=23;o2=14" }, /area/awaymission/caves/BMP_asteroid) -"dV" = ( -/obj/machinery/door/airlock{ - name = "Dorm" - }, -/turf/open/floor/wood, -/area/awaymission/caves/northblock) "dW" = ( /turf/closed/wall, /area/awaymission/caves/BMP_asteroid) @@ -1761,7 +1742,7 @@ }, /area/awaymission/caves/BMP_asteroid/level_two) "fp" = ( -/obj/structure/sign/pods{ +/obj/structure/sign/warning/pods{ desc = "A warning sign which warns of potential mech traffic to and from different levels of the mine."; name = "\improper MECH TUNNEL PASSAGE A1 TO A2"; pixel_x = -32 @@ -1880,7 +1861,7 @@ /turf/open/floor/plating, /area/awaymission/caves/BMP_asteroid) "fI" = ( -/obj/structure/sign/bluecross{ +/obj/structure/sign/departments/medbay{ pixel_x = -32 }, /turf/open/floor/plating/asteroid/basalt{ @@ -1896,7 +1877,7 @@ /turf/open/floor/plasteel, /area/awaymission/caves/BMP_asteroid) "fL" = ( -/obj/structure/sign/examroom{ +/obj/structure/sign/departments/examroom{ pixel_y = 32 }, /turf/open/floor/plasteel, @@ -1956,12 +1937,6 @@ initial_gas_mix = "n2=23;o2=14" }, /area/awaymission/caves/BMP_asteroid) -"fV" = ( -/turf/open/floor/plasteel/elevatorshaft{ - name = "elevator flooring"; - initial_gas_mix = "n2=23;o2=14" - }, -/area/awaymission/caves/BMP_asteroid) "fW" = ( /obj/structure/girder, /turf/open/floor/plating{ @@ -1992,11 +1967,6 @@ /obj/machinery/microwave, /turf/open/floor/plasteel, /area/awaymission/caves/BMP_asteroid) -"fZ" = ( -/turf/open/floor/plating{ - initial_gas_mix = "n2=23;o2=14" - }, -/area/awaymission/caves/BMP_asteroid) "ga" = ( /obj/structure/ladder/unbreakable{ anchored = 1; @@ -7642,7 +7612,7 @@ dE dI dM dT -dV +dI eb em du @@ -14601,7 +14571,7 @@ bV fJ fQ fQ -fV +fQ fQ fJ bV @@ -16144,7 +16114,7 @@ bM bM bM fW -fZ +fy ev gf gm @@ -16401,10 +16371,10 @@ bM bM bM bM -fZ +fy gc gg -fZ +fy ev gm dW @@ -16659,7 +16629,7 @@ bM bM bM bM -fZ +fy gh bM go @@ -17172,11 +17142,11 @@ bM bM bM bM -fZ -fZ +fy +fy gi -fZ -fZ +fy +fy gq gy fH @@ -17430,9 +17400,9 @@ bM bM bM bM -fZ +fy dW -fZ +fy gq gu gq @@ -17687,7 +17657,7 @@ bM bM bM bM -fZ +fy gj ev gr @@ -17944,7 +17914,7 @@ bM bM bM bM -fZ +fy fW ev gq @@ -18467,7 +18437,7 @@ bL bL bV bV -fZ +fy gF gH ej @@ -18725,9 +18695,9 @@ bV bV bV bV -fZ +fy gI -fZ +fy gD eu eu @@ -18982,9 +18952,9 @@ bV bV bV gD -fZ -fZ -fZ +fy +fy +fy bV bV bV @@ -19238,11 +19208,11 @@ bL bV fW gB -fZ +fy gB gJ -fZ -fZ +fy +fy bM eu bV @@ -19499,7 +19469,7 @@ gE gG gJ gB -fZ +fy bM bV eu @@ -54288,7 +54258,7 @@ ao ao ao ai -bd +ax ad ad ad @@ -54811,7 +54781,7 @@ ad ad ad ad -bd +ax ao ai ao @@ -55056,7 +55026,7 @@ ax ai ai ai -bd +ax ad ad ad @@ -55324,7 +55294,7 @@ ad ad ad ad -bd +ax ao ai ai @@ -56094,7 +56064,7 @@ ad ad ad ad -bd +ax ao ai ai @@ -56200,12 +56170,12 @@ bJ bJ bJ bJ -cI -cI -cI -cI -cI -cI +bT +bT +bT +bT +bT +bT bJ bJ bJ @@ -56351,7 +56321,7 @@ ad ad ad ad -bd +ax ao ao ai @@ -56609,7 +56579,7 @@ ad ad ad ad -bd +ax ao am ai @@ -56991,7 +56961,7 @@ bJ cq bO bO -cI +bT bO bO bO @@ -57125,10 +57095,10 @@ aR ad ad ad -bd -bd +ax +ax ao -bd +ax ad ad ai @@ -57248,7 +57218,7 @@ bJ bJ bO bO -cI +bT bO bO bO @@ -57374,7 +57344,7 @@ ad ad ai ai -bd +ax ao ao ao @@ -57505,7 +57475,7 @@ bJ bJ bO bO -cI +bT bO bJ bJ @@ -57649,7 +57619,7 @@ ad ad ad ad -bd +ax ao ad ad @@ -57762,7 +57732,7 @@ bJ bJ bO bO -cI +bT bO bJ cm @@ -57884,8 +57854,8 @@ ax ax ad ad -bd -bd +ax +ax aR ao ao @@ -57896,7 +57866,7 @@ ao ao ao ao -bd +ax ai ad ad @@ -58019,7 +57989,7 @@ bO bO bO bO -cI +bT bO bJ cm @@ -58162,7 +58132,7 @@ ad ad ad ad -bd +ax ao ai ai @@ -58418,7 +58388,7 @@ ad ad ad ad -bd +ax ao ao am @@ -58675,7 +58645,7 @@ ad ad ad ad -bd +ax ao ao ai @@ -58912,8 +58882,8 @@ ax ad ad ai -bd -bd +ax +ax aR aR ao @@ -58924,14 +58894,14 @@ ao ao ao ao -bd +ax ai ai ad ad ad ad -bd +ax aw aB ai @@ -59188,7 +59158,7 @@ ad ad ad ad -bd +ax ao am ai @@ -59688,11 +59658,11 @@ ad ad ad ai -bd +ax ao ao ao -bd +ax ai ai ai @@ -59702,7 +59672,7 @@ ad ad ad ad -bd +ax ao ai ai @@ -60214,8 +60184,8 @@ ad ad ad ad -bd -bd +ax +ax ao ao am @@ -60469,7 +60439,7 @@ ad ad ad ad -bd +ax al ai ao @@ -60718,7 +60688,7 @@ ad ai ao ai -bd +ax ad ad ad @@ -61234,11 +61204,11 @@ ai aq ad al -bd -bd +ax +ax ai ad -bd +ax ai ao ai diff --git a/_maps/RandomZLevels/centcomAway.dmm b/_maps/RandomZLevels/centcomAway.dmm index 94f830e139..83ad870fb3 100644 --- a/_maps/RandomZLevels/centcomAway.dmm +++ b/_maps/RandomZLevels/centcomAway.dmm @@ -370,12 +370,6 @@ }, /turf/open/floor/plating, /area/awaymission/centcomAway/hangar) -"br" = ( -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/turf/closed/wall/mineral/titanium, -/area/awaymission/centcomAway/hangar) "bs" = ( /obj/structure/closet/crate, /turf/open/floor/plasteel/vault{ @@ -434,27 +428,12 @@ }, /turf/open/floor/plating, /area/awaymission/centcomAway/hangar) -"bD" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/centcomAway/hangar) -"bE" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/centcomAway/hangar) "bF" = ( /obj/machinery/door/airlock/external{ name = "Salvage Shuttle Dock" }, /turf/open/floor/plating, /area/awaymission/centcomAway/hangar) -"bG" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/centcomAway/hangar) -"bH" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/centcomAway/hangar) -"bI" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/centcomAway/hangar) "bJ" = ( /obj/structure/chair/comfy/brown, /turf/open/floor/plasteel/bar{ @@ -503,12 +482,6 @@ "bR" = ( /turf/open/floor/plating, /area/awaymission/centcomAway/hangar) -"bS" = ( -/turf/closed/wall/mineral/titanium/interior, -/area/awaymission/centcomAway/hangar) -"bT" = ( -/turf/closed/wall/mineral/titanium/interior, -/area/awaymission/centcomAway/hangar) "bU" = ( /obj/structure/closet/emcloset, /turf/open/floor/mineral/titanium/blue, @@ -545,12 +518,6 @@ }, /turf/open/floor/mineral/titanium/blue, /area/awaymission/centcomAway/hangar) -"bZ" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/centcomAway/hangar) -"ca" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/centcomAway/hangar) "cb" = ( /obj/item/paper_bin, /obj/structure/table, @@ -578,7 +545,7 @@ }, /area/awaymission/centcomAway/cafe) "cg" = ( -/obj/structure/sign/botany, +/obj/structure/sign/departments/botany, /turf/closed/wall/r_wall, /area/awaymission/centcomAway/cafe) "ch" = ( @@ -646,21 +613,15 @@ /turf/open/floor/plating, /area/awaymission/centcomAway/maint) "cv" = ( -/obj/structure/sign/vacuum, +/obj/structure/sign/warning/vacuum, /turf/closed/wall/r_wall, /area/awaymission/centcomAway/maint) -"cw" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/centcomAway/hangar) "cx" = ( /obj/machinery/door/airlock/maintenance_hatch{ req_access_txt = "101" }, /turf/open/floor/plating, /area/awaymission/centcomAway/hangar) -"cy" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/centcomAway/hangar) "cz" = ( /turf/closed/wall, /area/awaymission/centcomAway/hangar) @@ -696,9 +657,6 @@ /obj/machinery/biogenerator, /turf/open/floor/plasteel/hydrofloor, /area/awaymission/centcomAway/cafe) -"cI" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/centcomAway/hangar) "cJ" = ( /obj/structure/table/reinforced, /obj/item/paper_bin, @@ -737,12 +695,6 @@ }, /turf/open/floor/mineral/titanium/blue, /area/awaymission/centcomAway/hangar) -"cQ" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/centcomAway/hangar) -"cR" = ( -/turf/open/floor/plating, -/area/awaymission/centcomAway/hangar) "cS" = ( /obj/structure/disposalpipe/segment{ dir = 6 @@ -895,9 +847,6 @@ dir = 4 }, /area/awaymission/centcomAway/cafe) -"du" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/centcomAway/hangar) "dv" = ( /obj/structure/closet/crate, /obj/effect/turf_decal/stripes/line{ @@ -1023,25 +972,6 @@ }, /turf/open/floor/plating, /area/awaymission/centcomAway/cafe) -"dR" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/centcomAway/hangar) -"dS" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end{ - dir = 8 - }, -/turf/open/floor/plating, -/area/awaymission/centcomAway/cafe) -"dT" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end{ - dir = 4 - }, -/turf/open/floor/plating, -/area/awaymission/centcomAway/cafe) -"dU" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/middle, -/turf/open/floor/plating, -/area/awaymission/centcomAway/cafe) "dV" = ( /obj/structure/closet/secure_closet/freezer/kitchen, /turf/open/floor/plasteel/red, @@ -1119,10 +1049,6 @@ icon_state = "asteroid9" }, /area/awaymission/centcomAway/cafe) -"ei" = ( -/obj/effect/spawner/structure/window/hollow/reinforced, -/turf/open/floor/plating, -/area/awaymission/centcomAway/cafe) "ej" = ( /obj/machinery/vending/dinnerware, /turf/open/floor/plasteel/red, @@ -1162,15 +1088,6 @@ /obj/item/reagent_containers/food/condiment/enzyme, /turf/open/floor/plasteel/red, /area/awaymission/centcomAway/cafe) -"eq" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/centcomAway/hangar) -"er" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/centcomAway/hangar) -"es" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/centcomAway/hangar) "et" = ( /obj/machinery/door/airlock/hatch{ name = "Cockpit"; @@ -1434,7 +1351,7 @@ }, /area/awaymission/centcomAway/general) "ft" = ( -/obj/structure/sign/electricshock, +/obj/structure/sign/warning/electricshock, /turf/closed/wall/r_wall, /area/awaymission/centcomAway/general) "fu" = ( @@ -1453,14 +1370,8 @@ }, /turf/open/floor/plating, /area/awaymission/centcomAway/general) -"fx" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end{ - dir = 4 - }, -/turf/open/floor/plating, -/area/awaymission/centcomAway/general) "fy" = ( -/obj/structure/sign/bluecross_2, +/obj/structure/sign/departments/medbay/alt, /turf/closed/wall/r_wall, /area/awaymission/centcomAway/general) "fz" = ( @@ -1575,7 +1486,7 @@ }, /area/awaymission/centcomAway/general) "fQ" = ( -/obj/structure/sign/science, +/obj/structure/sign/departments/science, /turf/closed/wall/r_wall, /area/awaymission/centcomAway/general) "fR" = ( @@ -1648,12 +1559,6 @@ }, /turf/open/floor/plating, /area/awaymission/centcomAway/general) -"ge" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end{ - dir = 4 - }, -/turf/open/floor/plating, -/area/awaymission/centcomAway/general) "gf" = ( /obj/effect/spawner/structure/window/hollow/reinforced/middle, /obj/structure/window/reinforced{ @@ -1661,10 +1566,6 @@ }, /turf/open/floor/plating, /area/awaymission/centcomAway/general) -"gg" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/middle, -/turf/open/floor/plating, -/area/awaymission/centcomAway/general) "gh" = ( /obj/effect/spawner/structure/window/hollow/reinforced/directional{ dir = 5 @@ -1886,9 +1787,6 @@ }, /turf/closed/wall/mineral/titanium/interior, /area/awaymission/centcomAway/hangar) -"gT" = ( -/turf/closed/wall/mineral/titanium/interior, -/area/awaymission/centcomAway/hangar) "gU" = ( /obj/structure/table, /obj/item/paper/fluff/awaymissions/centcom/gateway_memo, @@ -1965,7 +1863,7 @@ /turf/open/floor/engine, /area/awaymission/centcomAway/general) "hi" = ( -/obj/structure/sign/biohazard, +/obj/structure/sign/warning/biohazard, /turf/closed/wall/r_wall, /area/awaymission/centcomAway/general) "hj" = ( @@ -2041,19 +1939,6 @@ }, /turf/open/floor/plating, /area/awaymission/centcomAway/courtroom) -"hu" = ( -/obj/effect/spawner/structure/window/hollow/reinforced, -/turf/open/floor/plating, -/area/awaymission/centcomAway/hangar) -"hv" = ( -/obj/structure/shuttle/engine/propulsion/burst{ - dir = 4 - }, -/turf/closed/wall/mineral/titanium, -/area/awaymission/centcomAway/hangar) -"hw" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/centcomAway/hangar) "hx" = ( /obj/structure/table, /obj/item/clothing/gloves/color/yellow, @@ -2063,7 +1948,7 @@ /turf/open/floor/plating, /area/awaymission/centcomAway/hangar) "hy" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall/r_wall, /area/awaymission/centcomAway/general) "hz" = ( @@ -2191,7 +2076,7 @@ /turf/open/floor/wood, /area/awaymission/centcomAway/courtroom) "hU" = ( -/obj/structure/sign/vacuum, +/obj/structure/sign/warning/vacuum, /turf/closed/wall/r_wall, /area/awaymission/centcomAway/hangar) "hV" = ( @@ -2263,11 +2148,6 @@ /obj/machinery/computer/mech_bay_power_console, /turf/open/floor/circuit, /area/awaymission/centcomAway/hangar) -"ik" = ( -/turf/open/floor/plasteel/vault{ - dir = 8 - }, -/area/awaymission/centcomAway/hangar) "il" = ( /obj/structure/mecha_wreckage/ripley, /turf/open/floor/plasteel/dark, @@ -2330,12 +2210,6 @@ /obj/effect/spawner/structure/window/hollow/reinforced/middle, /turf/open/floor/plating, /area/awaymission/centcomAway/courtroom) -"ix" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end{ - dir = 4 - }, -/turf/closed/wall/r_wall, -/area/awaymission/centcomAway/courtroom) "iy" = ( /obj/machinery/door/poddoor{ id = "XCCMechs"; @@ -2363,12 +2237,6 @@ }, /turf/open/floor/plasteel, /area/awaymission/centcomAway/hangar) -"iC" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end{ - dir = 4 - }, -/turf/open/floor/plating, -/area/awaymission/centcomAway/general) "iD" = ( /obj/structure/window/reinforced, /turf/open/floor/plasteel/vault{ @@ -2382,11 +2250,6 @@ /obj/machinery/recharge_station, /turf/open/floor/plasteel/dark, /area/awaymission/centcomAway/hangar) -"iG" = ( -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/awaymission/centcomAway/hangar) "iH" = ( /obj/structure/window/reinforced{ dir = 4 @@ -2575,11 +2438,6 @@ /obj/effect/decal/cleanable/cobweb/cobweb2, /turf/open/floor/plasteel/grimy, /area/awaymission/centcomAway/general) -"jl" = ( -/turf/open/floor/plasteel/green/corner{ - dir = 8 - }, -/area/awaymission/centcomAway/general) "jm" = ( /turf/open/floor/plasteel/green/corner{ dir = 2 @@ -2798,14 +2656,8 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/awaymission/centcomAway/general) -"jT" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end{ - dir = 8 - }, -/turf/open/floor/plating, -/area/awaymission/centcomAway/general) "jU" = ( -/obj/structure/sign/vacuum, +/obj/structure/sign/warning/vacuum, /turf/closed/wall/r_wall, /area/awaymission/centcomAway/general) "jV" = ( @@ -2849,12 +2701,6 @@ }, /turf/open/floor/plating, /area/awaymission/centcomAway/hangar) -"kb" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end{ - dir = 8 - }, -/turf/open/floor/plating, -/area/awaymission/centcomAway/general) "kc" = ( /obj/machinery/gateway{ dir = 8 @@ -2908,10 +2754,6 @@ dir = 6 }, /area/awaymission/centcomAway/general) -"kk" = ( -/obj/effect/spawner/structure/window/hollow/reinforced, -/turf/open/floor/plating, -/area/awaymission/centcomAway/general) "kl" = ( /obj/effect/spawner/structure/window/hollow/reinforced/end{ dir = 1 @@ -2919,12 +2761,6 @@ /obj/structure/window/reinforced, /turf/open/floor/plating, /area/awaymission/centcomAway/general) -"km" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end{ - dir = 4 - }, -/turf/open/floor/plating, -/area/awaymission/centcomAway/general) "kn" = ( /obj/structure/table, /obj/item/device/flashlight/flare, @@ -3091,12 +2927,6 @@ dir = 6 }, /area/awaymission/centcomAway/general) -"kM" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end{ - dir = 1 - }, -/turf/open/floor/plating, -/area/awaymission/centcomAway/general) "kN" = ( /obj/structure/table/wood, /obj/item/clothing/accessory/medal, @@ -3790,11 +3620,6 @@ /obj/item/storage/belt/utility/full, /turf/open/floor/plasteel/grimy, /area/awaymission/centcomAway/general) -"mV" = ( -/turf/open/floor/plasteel/redyellow{ - dir = 5 - }, -/area/awaymission/centcomAway/thunderdome) "mW" = ( /obj/structure/chair/stool{ pixel_y = 8 @@ -8421,7 +8246,7 @@ bo bC bR bR -bS +bn bn bd bR @@ -8679,7 +8504,7 @@ aV bd bq bC -bS +bn cm cx cm @@ -8692,7 +8517,7 @@ bB bB bB bB -bS +bn bR bR bd @@ -8704,9 +8529,9 @@ gm gD gD gD -gT +bn he -gT +bn gD aV il @@ -8809,7 +8634,7 @@ aV bd bn bB -bT +bn cn cn cJ @@ -8823,7 +8648,7 @@ dz dz dz bB -bS +bn bR bR bd @@ -9483,9 +9308,9 @@ bd gm gD gD -gT +bn he -gT +bn gD gD aV @@ -9849,7 +9674,7 @@ aV bd bn bB -bT +bn cn cn cP @@ -9979,7 +9804,7 @@ aV bd bo bC -bS +bn cm cx cm @@ -10241,7 +10066,7 @@ bq bC bR bR -bS +bn bn bd bd diff --git a/_maps/RandomZLevels/challenge.dmm b/_maps/RandomZLevels/challenge.dmm index 282a1fc07f..8f454aedc9 100644 --- a/_maps/RandomZLevels/challenge.dmm +++ b/_maps/RandomZLevels/challenge.dmm @@ -242,7 +242,7 @@ "aX" = ( /obj/machinery/porta_turret{ dir = 8; - emagged = 1; + set_obj_flags = "EMAGGED"; installation = /obj/item/gun/energy/lasercannon }, /turf/open/floor/plating/airless, @@ -384,7 +384,7 @@ "bq" = ( /obj/machinery/porta_turret{ dir = 8; - emagged = 1; + set_obj_flags = "EMAGGED"; installation = /obj/item/gun/energy/lasercannon }, /turf/open/floor/plating, @@ -796,7 +796,7 @@ /turf/open/space, /area/space/nearstation) "cA" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/indestructible{ icon_state = "iron0" }, @@ -899,12 +899,6 @@ }, /turf/open/floor/plating, /area/awaymission/challenge/end) -"cQ" = ( -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/circuit, -/area/awaymission/challenge/end) "cR" = ( /obj/machinery/gateway{ dir = 9 @@ -929,12 +923,6 @@ dir = 4 }, /area/awaymission/challenge/end) -"cU" = ( -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/circuit, -/area/awaymission/challenge/end) "cV" = ( /obj/machinery/gateway{ dir = 8 diff --git a/_maps/RandomZLevels/moonoutpost19.dmm b/_maps/RandomZLevels/moonoutpost19.dmm index 80e7c8e8eb..6fdda43ef6 100644 --- a/_maps/RandomZLevels/moonoutpost19.dmm +++ b/_maps/RandomZLevels/moonoutpost19.dmm @@ -16,22 +16,6 @@ heat_capacity = 1e+006 }, /area/awaymission/moonoutpost19/hive) -"ae" = ( -/obj/structure/alien/weeds, -/obj/structure/alien/resin/wall, -/turf/open/floor/plating/asteroid{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - heat_capacity = 1e+006 - }, -/area/awaymission/moonoutpost19/hive) -"af" = ( -/obj/structure/alien/weeds, -/obj/structure/alien/resin/wall, -/turf/open/floor/plating/asteroid{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - heat_capacity = 1e+006 - }, -/area/awaymission/moonoutpost19/hive) "ag" = ( /obj/structure/alien/weeds, /obj/structure/alien/weeds{ @@ -45,19 +29,6 @@ heat_capacity = 1e+006 }, /area/awaymission/moonoutpost19/hive) -"ah" = ( -/obj/structure/alien/weeds, -/obj/structure/alien/weeds{ - desc = "A large mottled egg."; - obj_integrity = 100; - icon_state = "egg_hatched"; - name = "egg" - }, -/turf/open/floor/plating/asteroid{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - heat_capacity = 1e+006 - }, -/area/awaymission/moonoutpost19/hive) "ai" = ( /obj/structure/alien/weeds, /turf/open/floor/plating/asteroid{ @@ -81,19 +52,6 @@ heat_capacity = 1e+006 }, /area/awaymission/moonoutpost19/hive) -"al" = ( -/obj/structure/alien/weeds, -/obj/structure/alien/weeds{ - desc = "A large mottled egg."; - obj_integrity = 100; - icon_state = "egg_hatched"; - name = "egg" - }, -/turf/open/floor/plating/asteroid{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - heat_capacity = 1e+006 - }, -/area/awaymission/moonoutpost19/hive) "am" = ( /obj/structure/alien/weeds/node, /turf/open/floor/plating/asteroid{ @@ -101,22 +59,6 @@ heat_capacity = 1e+006 }, /area/awaymission/moonoutpost19/hive) -"an" = ( -/obj/structure/alien/weeds, -/obj/structure/bed/nest, -/turf/open/floor/plating/asteroid{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - heat_capacity = 1e+006 - }, -/area/awaymission/moonoutpost19/hive) -"ao" = ( -/obj/structure/alien/weeds, -/obj/structure/bed/nest, -/turf/open/floor/plating/asteroid{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - heat_capacity = 1e+006 - }, -/area/awaymission/moonoutpost19/hive) "ap" = ( /obj/structure/alien/weeds, /obj/structure/bed/nest, @@ -128,20 +70,6 @@ heat_capacity = 1e+006 }, /area/awaymission/moonoutpost19/hive) -"aq" = ( -/obj/structure/alien/weeds, -/turf/open/floor/plating/asteroid{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - heat_capacity = 1e+006 - }, -/area/awaymission/moonoutpost19/hive) -"ar" = ( -/obj/structure/alien/weeds, -/turf/open/floor/plating/asteroid{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - heat_capacity = 1e+006 - }, -/area/awaymission/moonoutpost19/hive) "as" = ( /obj/structure/alien/weeds, /obj/structure/alien/resin/wall, @@ -178,14 +106,6 @@ heat_capacity = 1e+006 }, /area/awaymission/moonoutpost19/hive) -"ax" = ( -/obj/structure/alien/weeds, -/obj/effect/decal/cleanable/blood/gibs, -/turf/open/floor/plating/asteroid{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - heat_capacity = 1e+006 - }, -/area/awaymission/moonoutpost19/hive) "ay" = ( /turf/open/floor/plasteel/darkred/side{ dir = 9; @@ -300,14 +220,6 @@ heat_capacity = 1e+006 }, /area/awaymission/moonoutpost19/hive) -"aL" = ( -/obj/structure/alien/weeds, -/obj/effect/decal/cleanable/blood/gibs, -/turf/open/floor/plating/asteroid{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - heat_capacity = 1e+006 - }, -/area/awaymission/moonoutpost19/hive) "aM" = ( /obj/structure/alien/weeds, /mob/living/simple_animal/hostile/alien/drone{ @@ -433,16 +345,6 @@ heat_capacity = 1e+006 }, /area/awaymission/moonoutpost19/main) -"bb" = ( -/obj/structure/alien/weeds, -/mob/living/simple_animal/hostile/alien/drone{ - plants_off = 1 - }, -/turf/open/floor/plating/asteroid{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - heat_capacity = 1e+006 - }, -/area/awaymission/moonoutpost19/hive) "bc" = ( /obj/structure/alien/weeds, /obj/effect/decal/cleanable/blood, @@ -503,14 +405,6 @@ heat_capacity = 1e+006 }, /area/awaymission/moonoutpost19/hive) -"bk" = ( -/obj/structure/alien/weeds, -/mob/living/simple_animal/hostile/alien/sentinel, -/turf/open/floor/plating/asteroid{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - heat_capacity = 1e+006 - }, -/area/awaymission/moonoutpost19/hive) "bl" = ( /turf/closed/mineral/random/high_chance, /area/awaymission/moonoutpost19/hive) @@ -977,7 +871,7 @@ }, /area/awaymission/moonoutpost19/syndicate) "ce" = ( -/obj/structure/sign/biohazard{ +/obj/structure/sign/warning/biohazard{ pixel_y = 32 }, /obj/structure/alien/weeds/node, @@ -1005,7 +899,7 @@ }, /area/awaymission/moonoutpost19/syndicate) "cg" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_y = 32 }, /obj/effect/turf_decal/stripes/corner{ @@ -1127,7 +1021,7 @@ "cr" = ( /obj/machinery/door/airlock/public/glass{ density = 0; - emagged = 1; + set_obj_flags = "EMAGGED"; icon_state = "open"; locked = 1; name = "Dormitories" @@ -1438,7 +1332,7 @@ "cT" = ( /obj/machinery/door/airlock{ density = 0; - emagged = 1; + set_obj_flags = "EMAGGED"; icon_state = "open"; id_tag = "awaydorm4"; locked = 1; @@ -1750,7 +1644,7 @@ "du" = ( /obj/machinery/door/airlock/external{ density = 0; - emagged = 1; + set_obj_flags = "EMAGGED"; icon_state = "open"; locked = 1; opacity = 0; @@ -1827,7 +1721,7 @@ /turf/closed/mineral, /area/awaymission/moonoutpost19/main) "dB" = ( -/obj/structure/sign/vacuum{ +/obj/structure/sign/warning/vacuum{ desc = "A warning sign which reads 'HOSTILE ATMOSPHERE AHEAD'"; name = "\improper HOSTILE ATMOSPHERE AHEAD"; pixel_y = -32 @@ -1910,7 +1804,7 @@ "dI" = ( /obj/machinery/door/airlock/external{ density = 0; - emagged = 1; + set_obj_flags = "EMAGGED"; icon_state = "open"; locked = 1; opacity = 0; @@ -1998,14 +1892,6 @@ heat_capacity = 1e+006 }, /area/awaymission/moonoutpost19/main) -"dR" = ( -/obj/structure/alien/weeds, -/obj/structure/alien/resin/wall, -/turf/open/floor/plating/asteroid{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - heat_capacity = 1e+006 - }, -/area/awaymission/moonoutpost19/main) "dS" = ( /obj/structure/alien/weeds, /obj/effect/decal/cleanable/blood, @@ -2024,13 +1910,6 @@ heat_capacity = 1e+006 }, /area/awaymission/moonoutpost19/main) -"dU" = ( -/obj/structure/alien/weeds, -/turf/open/floor/plating/asteroid{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - heat_capacity = 1e+006 - }, -/area/awaymission/moonoutpost19/main) "dV" = ( /obj/structure/alien/weeds/node, /obj/structure/alien/resin/wall, @@ -2039,21 +1918,6 @@ heat_capacity = 1e+006 }, /area/awaymission/moonoutpost19/main) -"dW" = ( -/obj/structure/alien/weeds, -/obj/structure/alien/resin/wall, -/turf/open/floor/plating/asteroid{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - heat_capacity = 1e+006 - }, -/area/awaymission/moonoutpost19/main) -"dX" = ( -/obj/structure/alien/weeds, -/turf/open/floor/plating/asteroid{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - heat_capacity = 1e+006 - }, -/area/awaymission/moonoutpost19/main) "dY" = ( /obj/machinery/light/small, /turf/open/floor/plating/asteroid{ @@ -2085,7 +1949,7 @@ }, /area/awaymission/moonoutpost19/research) "ec" = ( -/obj/structure/sign/biohazard, +/obj/structure/sign/warning/biohazard, /turf/closed/wall/r_wall, /area/awaymission/moonoutpost19/research) "ed" = ( @@ -2220,12 +2084,6 @@ /obj/item/clothing/mask/facehugger/impregnated, /turf/open/floor/engine, /area/awaymission/moonoutpost19/research) -"es" = ( -/obj/structure/alien/weeds, -/obj/structure/bed/nest, -/obj/effect/decal/cleanable/blood/gibs, -/turf/open/floor/engine, -/area/awaymission/moonoutpost19/research) "et" = ( /obj/machinery/vending/coffee, /turf/open/floor/plasteel/dark, @@ -2247,16 +2105,6 @@ heat_capacity = 1e+006 }, /area/awaymission/moonoutpost19/research) -"ew" = ( -/obj/machinery/atmospherics/components/unary/portables_connector{ - dir = 4 - }, -/obj/machinery/portable_atmospherics/canister, -/obj/structure/alien/weeds, -/turf/open/floor/plasteel{ - heat_capacity = 1e+006 - }, -/area/awaymission/moonoutpost19/research) "ex" = ( /obj/structure/cable{ icon_state = "1-2" @@ -2299,41 +2147,18 @@ }, /area/awaymission/moonoutpost19/research) "eA" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE" - }, +/obj/structure/sign/warning/electricshock, /turf/closed/wall/r_wall, /area/awaymission/moonoutpost19/research) "eB" = ( /obj/structure/alien/weeds/node, /turf/open/floor/engine, /area/awaymission/moonoutpost19/research) -"eC" = ( -/obj/structure/alien/weeds, -/turf/open/floor/engine, -/area/awaymission/moonoutpost19/research) -"eD" = ( -/obj/structure/alien/weeds, -/obj/structure/alien/resin/wall, -/turf/open/floor/engine, -/area/awaymission/moonoutpost19/research) -"eE" = ( -/obj/structure/alien/weeds, -/obj/structure/alien/resin/wall, -/turf/open/floor/engine, -/area/awaymission/moonoutpost19/research) "eF" = ( /obj/structure/alien/weeds, /obj/structure/bed/nest, /turf/open/floor/engine, /area/awaymission/moonoutpost19/research) -"eG" = ( -/obj/structure/alien/weeds, -/obj/effect/decal/cleanable/blood/gibs, -/turf/open/floor/engine, -/area/awaymission/moonoutpost19/research) "eH" = ( /obj/structure/alien/weeds, /obj/structure/alien/weeds{ @@ -2412,25 +2237,11 @@ heat_capacity = 1e+006 }, /area/awaymission/moonoutpost19/research) -"eP" = ( -/obj/structure/alien/weeds, -/obj/structure/alien/weeds{ - desc = "A large mottled egg."; - obj_integrity = 100; - icon_state = "egg_hatched"; - name = "egg" - }, -/turf/open/floor/engine, -/area/awaymission/moonoutpost19/research) "eQ" = ( /obj/structure/alien/weeds, /obj/effect/decal/cleanable/blood, /turf/open/floor/engine, /area/awaymission/moonoutpost19/research) -"eR" = ( -/obj/structure/alien/weeds, -/turf/open/floor/engine, -/area/awaymission/moonoutpost19/research) "eS" = ( /obj/machinery/power/port_gen/pacman{ desc = "A portable generator for emergency backup power."; @@ -2579,7 +2390,7 @@ }, /area/awaymission/moonoutpost19/research) "fe" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = 32 }, /obj/structure/cable{ @@ -2692,16 +2503,6 @@ heat_capacity = 1e+006 }, /area/awaymission/moonoutpost19/research) -"fo" = ( -/obj/structure/alien/weeds, -/obj/structure/alien/weeds{ - desc = "A large mottled egg."; - obj_integrity = 100; - icon_state = "egg_hatched"; - name = "egg" - }, -/turf/open/floor/engine, -/area/awaymission/moonoutpost19/research) "fp" = ( /obj/structure/alien/weeds, /obj/structure/bed/nest, @@ -2788,7 +2589,7 @@ /obj/machinery/door/firedoor, /obj/machinery/door/airlock/research{ density = 0; - emagged = 1; + set_obj_flags = "EMAGGED"; icon_state = "open"; locked = 1; name = "Xenobiology Lab"; @@ -2916,16 +2717,6 @@ /obj/structure/alien/resin/wall, /turf/open/floor/engine, /area/awaymission/moonoutpost19/research) -"fI" = ( -/obj/machinery/atmospherics/pipe/simple/general/visible{ - desc = "A one meter section of pipe. This one has been applied with an acid-proof coating."; - dir = 4; - name = "Acid-Proof Pipe" - }, -/obj/structure/alien/weeds, -/obj/structure/alien/resin/wall, -/turf/open/floor/engine, -/area/awaymission/moonoutpost19/research) "fJ" = ( /obj/machinery/atmospherics/components/unary/outlet_injector{ desc = "Has a valve and pump attached to it. This one has been applied with an acid-proof coating."; @@ -3071,7 +2862,7 @@ }, /area/awaymission/moonoutpost19/research) "fX" = ( -/obj/structure/sign/biohazard{ +/obj/structure/sign/warning/biohazard{ pixel_x = 32 }, /obj/structure/cable{ @@ -3140,18 +2931,6 @@ }, /turf/open/floor/engine, /area/awaymission/moonoutpost19/research) -"gd" = ( -/obj/structure/alien/weeds, -/obj/structure/bed/nest, -/obj/effect/decal/cleanable/blood/gibs, -/turf/open/floor/engine, -/area/awaymission/moonoutpost19/research) -"ge" = ( -/obj/structure/alien/weeds, -/obj/structure/bed/nest, -/obj/item/clothing/mask/facehugger/impregnated, -/turf/open/floor/engine, -/area/awaymission/moonoutpost19/research) "gf" = ( /obj/structure/chair/stool, /turf/open/floor/plating{ @@ -3756,14 +3535,6 @@ heat_capacity = 1e+006 }, /area/awaymission/moonoutpost19/hive) -"hl" = ( -/obj/structure/alien/weeds, -/obj/structure/alien/egg, -/turf/open/floor/plating/asteroid{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - heat_capacity = 1e+006 - }, -/area/awaymission/moonoutpost19/hive) "hm" = ( /obj/machinery/vending/medical{ req_access_txt = "201" @@ -3950,7 +3721,7 @@ /obj/machinery/door/firedoor, /obj/machinery/door/airlock/command{ density = 0; - emagged = 1; + set_obj_flags = "EMAGGED"; icon_state = "open"; locked = 1; name = "Research Director's Office"; @@ -4395,7 +4166,7 @@ }, /area/awaymission/moonoutpost19/research) "iu" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_y = 32 }, /obj/machinery/shower{ @@ -4883,7 +4654,7 @@ }, /area/awaymission/moonoutpost19/arrivals) "jx" = ( -/obj/structure/sign/science{ +/obj/structure/sign/departments/science{ pixel_y = 32 }, /obj/effect/decal/cleanable/dirt, @@ -5688,13 +5459,6 @@ "ld" = ( /turf/closed/wall/mineral/titanium, /area/awaymission/moonoutpost19/arrivals) -"le" = ( -/turf/open/floor/plating/asteroid{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - heat_capacity = 1e+006 - }, -/turf/closed/wall/mineral/titanium, -/area/awaymission/moonoutpost19/arrivals) "lf" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/arrival{ @@ -5885,22 +5649,10 @@ temperature = 273.15 }, /area/awaymission/moonoutpost19/arrivals) -"ly" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/moonoutpost19/arrivals) -"lz" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/moonoutpost19/arrivals) "lA" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/awaymission/moonoutpost19/arrivals) -"lB" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/moonoutpost19/arrivals) -"lC" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/moonoutpost19/arrivals) "lD" = ( /obj/structure/shuttle/engine/heater{ dir = 4 @@ -6038,9 +5790,6 @@ temperature = 273.15 }, /area/awaymission/moonoutpost19/arrivals) -"lV" = ( -/turf/closed/wall/mineral/titanium/interior, -/area/awaymission/moonoutpost19/arrivals) "lW" = ( /obj/structure/table, /obj/item/storage/lockbox, @@ -6051,9 +5800,6 @@ /obj/item/device/radio/off, /turf/open/floor/mineral/titanium/yellow, /area/awaymission/moonoutpost19/arrivals) -"lY" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/moonoutpost19/arrivals) "lZ" = ( /obj/machinery/computer/security/telescreen/entertainment{ pixel_x = -32 @@ -6230,7 +5976,7 @@ /turf/open/floor/mineral/titanium/yellow, /area/awaymission/moonoutpost19/arrivals) "mv" = ( -/obj/structure/sign/vacuum{ +/obj/structure/sign/warning/vacuum{ desc = "A warning sign which reads 'HOSTILE ATMOSPHERE AHEAD'"; name = "\improper HOSTILE ATMOSPHERE AHEAD" }, @@ -6343,7 +6089,7 @@ /turf/open/floor/mineral/titanium/yellow, /area/awaymission/moonoutpost19/arrivals) "mJ" = ( -/obj/structure/sign/vacuum{ +/obj/structure/sign/warning/vacuum{ desc = "A beacon used by a teleporter."; icon = 'icons/obj/radio.dmi'; icon_state = "beacon"; @@ -6490,9 +6236,6 @@ }, /turf/open/floor/mineral/titanium/yellow, /area/awaymission/moonoutpost19/arrivals) -"mX" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/moonoutpost19/arrivals) "mY" = ( /obj/machinery/light/small{ dir = 4 @@ -6541,12 +6284,6 @@ heat_capacity = 1e+006 }, /area/awaymission/moonoutpost19/arrivals) -"nd" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/moonoutpost19/arrivals) -"ne" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/moonoutpost19/arrivals) "nf" = ( /obj/structure/filingcabinet, /turf/open/floor/mineral/titanium/blue, @@ -6601,7 +6338,7 @@ }, /area/awaymission/moonoutpost19/arrivals) "nm" = ( -/obj/structure/sign/vacuum{ +/obj/structure/sign/warning/vacuum{ desc = "A warning sign which reads 'HOSTILE ATMOSPHERE AHEAD'"; name = "\improper HOSTILE ATMOSPHERE AHEAD"; pixel_y = 32 @@ -6610,9 +6347,6 @@ heat_capacity = 1e+006 }, /area/awaymission/moonoutpost19/arrivals) -"nn" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/moonoutpost19/arrivals) "no" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ @@ -6680,9 +6414,6 @@ temperature = 251 }, /area/awaymission/moonoutpost19/arrivals) -"nv" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/moonoutpost19/arrivals) "nw" = ( /obj/machinery/washing_machine, /turf/open/floor/plasteel/barber{ @@ -6851,7 +6582,7 @@ }, /area/awaymission/moonoutpost19/arrivals) "nK" = ( -/obj/structure/sign/vacuum{ +/obj/structure/sign/warning/vacuum{ desc = "A warning sign which reads 'HOSTILE ATMOSPHERE AHEAD'"; name = "\improper HOSTILE ATMOSPHERE AHEAD"; pixel_x = -32 @@ -7052,269 +6783,6 @@ heat_capacity = 1e+006 }, /area/awaymission/moonoutpost19/main) -"of" = ( -/obj/item/shard, -/turf/open/floor/mineral/titanium, -/area/awaymission/moonoutpost19/main) -"og" = ( -/obj/item/shard{ - icon_state = "medium" - }, -/turf/open/floor/mineral/titanium, -/area/awaymission/moonoutpost19/main) -"oh" = ( -/obj/item/shard{ - icon_state = "small" - }, -/turf/open/floor/mineral/titanium, -/area/awaymission/moonoutpost19/main) -"oi" = ( -/turf/open/floor/mineral/titanium, -/area/awaymission/moonoutpost19/main) -"oj" = ( -/obj/structure/grille/broken, -/turf/open/floor/mineral/titanium, -/area/awaymission/moonoutpost19/main) -"ok" = ( -/obj/item/stack/rods, -/turf/open/floor/mineral/titanium, -/area/awaymission/moonoutpost19/main) -"ol" = ( -/obj/item/stack/cable_coil, -/turf/open/floor/mineral/titanium, -/area/awaymission/moonoutpost19/main) -"om" = ( -/obj/item/stack/cable_coil{ - amount = 5 - }, -/turf/open/floor/mineral/titanium, -/area/awaymission/moonoutpost19/main) -"on" = ( -/obj/item/stack/cable_coil{ - amount = 2; - icon_state = "coil_red2"; - item_state = "coil_red2" - }, -/turf/open/floor/mineral/titanium, -/area/awaymission/moonoutpost19/main) -"oo" = ( -/obj/item/stack/cable_coil{ - amount = 1; - icon_state = "coil_red1"; - item_state = "coil_red1" - }, -/turf/open/floor/mineral/titanium, -/area/awaymission/moonoutpost19/main) -"op" = ( -/turf/open/floor/plasteel{ - heat_capacity = 1e+006 - }, -/area/awaymission/moonoutpost19/main) -"oq" = ( -/turf/open/floor/plasteel/floorgrime{ - dir = 8; - heat_capacity = 1e+006 - }, -/area/awaymission/moonoutpost19/main) -"or" = ( -/turf/open/floor/plasteel{ - dir = 8; - heat_capacity = 1e+006; - icon_state = "damaged1" - }, -/area/awaymission/moonoutpost19/main) -"os" = ( -/turf/open/floor/plasteel{ - dir = 8; - heat_capacity = 1e+006; - icon_state = "damaged2" - }, -/area/awaymission/moonoutpost19/main) -"ot" = ( -/turf/open/floor/plasteel{ - dir = 8; - heat_capacity = 1e+006; - icon_state = "damaged3" - }, -/area/awaymission/moonoutpost19/main) -"ou" = ( -/turf/open/floor/plasteel{ - dir = 8; - heat_capacity = 1e+006; - icon_state = "damaged4" - }, -/area/awaymission/moonoutpost19/main) -"ov" = ( -/turf/open/floor/plasteel{ - dir = 8; - heat_capacity = 1e+006; - icon_state = "damaged5" - }, -/area/awaymission/moonoutpost19/main) -"ow" = ( -/turf/open/floor/plasteel{ - dir = 8; - heat_capacity = 1e+006; - icon_state = "floorscorched1" - }, -/area/awaymission/moonoutpost19/main) -"ox" = ( -/turf/open/floor/plasteel{ - dir = 8; - heat_capacity = 1e+006; - icon_state = "floorscorched2" - }, -/area/awaymission/moonoutpost19/main) -"oy" = ( -/turf/open/floor/mineral/titanium/blue, -/area/awaymission/moonoutpost19/main) -"oz" = ( -/turf/open/floor/plating{ - heat_capacity = 1e+006 - }, -/area/awaymission/moonoutpost19/main) -"oA" = ( -/turf/open/floor/plating{ - heat_capacity = 1e+006; - icon_state = "platingdmg1" - }, -/area/awaymission/moonoutpost19/main) -"oB" = ( -/turf/open/floor/plating{ - heat_capacity = 1e+006; - icon_state = "platingdmg2" - }, -/area/awaymission/moonoutpost19/main) -"oC" = ( -/turf/open/floor/plating{ - heat_capacity = 1e+006; - icon_state = "platingdmg3" - }, -/area/awaymission/moonoutpost19/main) -"oD" = ( -/turf/open/floor/plating{ - heat_capacity = 1e+006; - icon_state = "panelscorched" - }, -/area/awaymission/moonoutpost19/main) -"oE" = ( -/turf/open/floor/plasteel{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - heat_capacity = 1e+006 - }, -/area/awaymission/moonoutpost19/main) -"oF" = ( -/turf/open/floor/plasteel/floorgrime{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - dir = 8; - heat_capacity = 1e+006; - temperature = 251 - }, -/area/awaymission/moonoutpost19/main) -"oG" = ( -/turf/open/floor/plasteel{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - dir = 8; - heat_capacity = 1e+006; - icon_state = "damaged1"; - temperature = 251 - }, -/area/awaymission/moonoutpost19/main) -"oH" = ( -/turf/open/floor/plasteel{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - dir = 8; - heat_capacity = 1e+006; - icon_state = "damaged2"; - temperature = 251 - }, -/area/awaymission/moonoutpost19/main) -"oI" = ( -/turf/open/floor/plasteel{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - dir = 8; - heat_capacity = 1e+006; - icon_state = "damaged3"; - temperature = 251 - }, -/area/awaymission/moonoutpost19/main) -"oJ" = ( -/turf/open/floor/plasteel{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - dir = 8; - heat_capacity = 1e+006; - icon_state = "damaged4"; - temperature = 251 - }, -/area/awaymission/moonoutpost19/main) -"oK" = ( -/turf/open/floor/plasteel{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - dir = 8; - heat_capacity = 1e+006; - icon_state = "damaged5"; - temperature = 251 - }, -/area/awaymission/moonoutpost19/main) -"oL" = ( -/turf/open/floor/plasteel{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - dir = 8; - heat_capacity = 1e+006; - icon_state = "floorscorched1"; - temperature = 251 - }, -/area/awaymission/moonoutpost19/main) -"oM" = ( -/turf/open/floor/plasteel{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - dir = 8; - heat_capacity = 1e+006; - icon_state = "floorscorched2"; - temperature = 251 - }, -/area/awaymission/moonoutpost19/main) -"oN" = ( -/turf/open/floor/mineral/titanium/yellow, -/area/awaymission/moonoutpost19/main) -"oO" = ( -/turf/open/floor/plating{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - heat_capacity = 1e+006 - }, -/area/awaymission/moonoutpost19/main) -"oP" = ( -/turf/open/floor/plating{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - heat_capacity = 1e+006; - icon_state = "platingdmg1"; - temperature = 251 - }, -/area/awaymission/moonoutpost19/main) -"oQ" = ( -/turf/open/floor/plating{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - heat_capacity = 1e+006; - icon_state = "platingdmg2"; - temperature = 251 - }, -/area/awaymission/moonoutpost19/main) -"oR" = ( -/turf/open/floor/plating{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - heat_capacity = 1e+006; - icon_state = "platingdmg3"; - temperature = 251 - }, -/area/awaymission/moonoutpost19/main) -"oS" = ( -/turf/open/floor/plating{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - heat_capacity = 1e+006; - icon_state = "panelscorched"; - temperature = 251 - }, -/area/awaymission/moonoutpost19/main) "oT" = ( /obj/structure/closet/secure_closet{ icon_state = "science"; @@ -32684,11 +32152,11 @@ ba ba ba lc -lV +lc mp mG mV -lV +lc lc ba ba diff --git a/_maps/RandomZLevels/research.dmm b/_maps/RandomZLevels/research.dmm index 6c9a86a7cc..adf8fb7f87 100644 --- a/_maps/RandomZLevels/research.dmm +++ b/_maps/RandomZLevels/research.dmm @@ -551,7 +551,7 @@ }, /area/awaymission/research/interior/engineering) "bP" = ( -/obj/structure/sign/vacuum{ +/obj/structure/sign/warning/vacuum{ pixel_x = 32 }, /turf/open/floor/plating, @@ -589,7 +589,7 @@ /turf/open/floor/plasteel/dark, /area/awaymission/research/interior/gateway) "bV" = ( -/obj/structure/sign/nosmoking_1{ +/obj/structure/sign/warning/nosmoking/circle{ pixel_x = -32 }, /turf/open/floor/plasteel/whiteyellow/side{ @@ -731,12 +731,6 @@ /obj/machinery/light/small, /turf/open/floor/plating, /area/awaymission/research/interior/maint) -"co" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plating, -/area/awaymission/research/interior/maint) "cp" = ( /turf/closed/wall/r_wall, /area/awaymission/research/interior) @@ -1763,7 +1757,7 @@ /turf/open/floor/plasteel/whitered/side, /area/awaymission/research/interior/security) "fv" = ( -/obj/structure/sign/goldenplaque{ +/obj/structure/sign/plaques/golden{ pixel_x = 32 }, /turf/open/floor/plasteel/whitered/corner{ @@ -2007,12 +2001,6 @@ }, /turf/open/floor/plasteel/dark, /area/awaymission/research/interior/secure) -"gi" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel/dark, -/area/awaymission/research/interior/secure) "gj" = ( /obj/structure/cable{ icon_state = "4-8" @@ -2147,7 +2135,7 @@ /turf/open/floor/plasteel/whitepurple, /area/awaymission/research/interior) "gB" = ( -/obj/structure/sign/science, +/obj/structure/sign/departments/science, /turf/closed/wall/r_wall, /area/awaymission/research/interior) "gC" = ( @@ -2284,12 +2272,6 @@ dir = 1 }, /area/awaymission/research/interior) -"gW" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel/whitepurple, -/area/awaymission/research/interior) "gX" = ( /obj/effect/decal/cleanable/blood/drip, /turf/open/floor/plasteel/whitepurple/side{ @@ -2436,12 +2418,6 @@ dir = 10 }, /area/awaymission/research/interior/cryo) -"hw" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plating, -/area/awaymission/research/interior/maint) "hx" = ( /obj/structure/cable{ icon_state = "2-4" @@ -2671,12 +2647,6 @@ }, /turf/open/floor/plasteel/purple, /area/awaymission/research/interior/genetics) -"ic" = ( -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/plasteel/purple, -/area/awaymission/research/interior/genetics) "id" = ( /turf/closed/wall, /area/awaymission/research/interior/maint) @@ -3235,15 +3205,9 @@ /turf/open/floor/plasteel/whiteblue, /area/awaymission/research/interior) "jK" = ( -/obj/structure/sign/bluecross, +/obj/structure/sign/departments/medbay, /turf/closed/wall/r_wall, /area/awaymission/research/interior) -"jL" = ( -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/plasteel/whiteblue, -/area/awaymission/research/interior) "jM" = ( /obj/machinery/light{ dir = 8 @@ -3531,43 +3495,6 @@ dir = 4 }, /area/awaymission/research/interior/dorm) -"kG" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/door/airlock/maintenance_hatch{ - req_access_txt = "12" - }, -/turf/open/floor/plating, -/area/awaymission/research/interior/maint) -"kH" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel/whitegreen/side{ - dir = 4 - }, -/area/awaymission/research/interior) -"kI" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel/whitegreen, -/area/awaymission/research/interior) -"kJ" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel/whitegreen/side{ - dir = 8 - }, -/area/awaymission/research/interior) -"kK" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plating, -/area/awaymission/research/interior/maint) "kL" = ( /turf/open/floor/plating, /area/awaymission/research/interior/medbay) @@ -3585,15 +3512,6 @@ /obj/structure/chair/comfy/beige, /turf/open/floor/plasteel/whiteblue/side, /area/awaymission/research/interior/medbay) -"kP" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/plating, -/area/awaymission/research/interior/maint) "kQ" = ( /obj/structure/chair/stool, /turf/open/floor/plasteel/yellowsiding{ @@ -4037,13 +3955,13 @@ /area/awaymission/research/exterior) "mg" = ( /obj/structure/closet/emcloset, -/obj/structure/sign/vacuum{ +/obj/structure/sign/warning/vacuum{ pixel_y = 32 }, /turf/open/floor/plating, /area/awaymission/research/interior/escapepods) "mh" = ( -/obj/structure/sign/pods{ +/obj/structure/sign/warning/pods{ pixel_x = -32 }, /turf/open/floor/plasteel/whitegreen/corner, @@ -4139,12 +4057,6 @@ "my" = ( /turf/closed/wall/mineral/titanium/interior, /area/awaymission/research/exterior) -"mz" = ( -/obj/structure/shuttle/engine/propulsion/burst{ - dir = 8 - }, -/turf/closed/wall/mineral/titanium, -/area/awaymission/research/exterior) "mA" = ( /obj/structure/chair{ dir = 8 @@ -4198,7 +4110,7 @@ }, /area/awaymission/research/interior/escapepods) "mI" = ( -/obj/structure/sign/pods{ +/obj/structure/sign/warning/pods{ pixel_x = -32 }, /turf/open/floor/plasteel/whitegreen/side{ @@ -4263,14 +4175,6 @@ }, /turf/open/floor/plasteel/whitegreen/side, /area/awaymission/research/interior/escapepods) -"mR" = ( -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/plasteel/whitegreen/side{ - dir = 4 - }, -/area/awaymission/research/interior/escapepods) "mS" = ( /obj/machinery/door/airlock/external{ name = "Escape Pod Three"; @@ -4284,7 +4188,7 @@ }, /area/awaymission/research/interior/escapepods) "mU" = ( -/obj/structure/sign/vacuum{ +/obj/structure/sign/warning/vacuum{ pixel_y = -32 }, /obj/machinery/light, @@ -4299,7 +4203,7 @@ }, /area/awaymission/research/interior/escapepods) "mW" = ( -/obj/structure/sign/vacuum{ +/obj/structure/sign/warning/vacuum{ pixel_y = -32 }, /turf/open/floor/plasteel/whitegreen/side{ @@ -4347,9 +4251,6 @@ "nf" = ( /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/awaymission/research/interior/engineering) -"ng" = ( -/turf/closed/wall/mineral/plastitanium/nodiagonal, -/area/awaymission/research/interior/engineering) (1,1,1) = {" aa @@ -42492,7 +42393,7 @@ aq ay an aL -ng +nf bf bs bK diff --git a/_maps/RandomZLevels/snowdin.dmm b/_maps/RandomZLevels/snowdin.dmm index 2df265cda6..2810199934 100644 --- a/_maps/RandomZLevels/snowdin.dmm +++ b/_maps/RandomZLevels/snowdin.dmm @@ -944,11 +944,6 @@ temperature = 140 }, /area/awaymission/snowdin/post) -"dg" = ( -/turf/open/floor/plating{ - temperature = 140 - }, -/area/awaymission/snowdin/post) "dh" = ( /obj/structure/table, /obj/item/storage/toolbox/emergency, @@ -1133,14 +1128,6 @@ temperature = 140 }, /area/awaymission/snowdin/post) -"dI" = ( -/obj/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/plating{ - temperature = 140 - }, -/area/awaymission/snowdin/post) "dJ" = ( /turf/open/floor/carpet, /area/awaymission/snowdin/post) @@ -1429,9 +1416,6 @@ /obj/effect/spawner/lootdrop/snowdin/dungeonmisc, /turf/open/floor/plating/snowed/colder, /area/awaymission/snowdin/dungeon1) -"eC" = ( -/turf/open/floor/plating/snowed, -/area/awaymission/snowdin/post) "eD" = ( /turf/closed/wall/ice, /area/awaymission/snowdin/dungeon1) @@ -1965,9 +1949,6 @@ temperature = 140 }, /area/awaymission/snowdin/cave) -"gr" = ( -/turf/open/floor/plating/snowed, -/area/awaymission/snowdin/post) "gs" = ( /obj/structure/girder, /turf/open/floor/plating{ @@ -2102,9 +2083,6 @@ /obj/structure/reagent_dispensers/watertank, /turf/open/floor/plating, /area/awaymission/snowdin/post) -"gN" = ( -/turf/open/floor/plating, -/area/awaymission/snowdin/post) "gO" = ( /obj/structure/closet/crate, /obj/effect/spawner/lootdrop/snowdin/dungeonlite, @@ -2748,7 +2726,7 @@ /turf/open/floor/plasteel/whiteblue, /area/awaymission/snowdin/sekret) "iW" = ( -/obj/structure/sign/bluecross{ +/obj/structure/sign/departments/medbay{ pixel_x = -32 }, /turf/open/floor/plasteel{ @@ -2892,9 +2870,6 @@ wet = 0 }, /area/awaymission/snowdin/sekret) -"jw" = ( -/turf/open/floor/plating, -/area/awaymission/snowdin) "jx" = ( /obj/effect/decal/cleanable/blood, /obj/effect/gibspawner/human, @@ -3818,7 +3793,7 @@ }, /area/awaymission/snowdin/sekret) "ms" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ desc = "A warning sign which reads 'WEAPONS HOT'."; name = "WEAPONS HOT"; pixel_y = 32 @@ -4194,7 +4169,7 @@ }, /area/awaymission/snowdin/sekret) "nu" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ desc = "A warning sign which reads 'WEAPONS HOT'."; name = "WEAPONS HOT"; pixel_y = -32 @@ -11276,8 +11251,8 @@ ac ac ac iK -jw -jw +cQ +cQ iK ac ac @@ -11533,8 +11508,8 @@ ac ac ac iK -jw -jw +cQ +cQ iK ac ac @@ -14604,8 +14579,8 @@ dz dz dz jk -jw -jw +cQ +cQ jk dp ac @@ -14861,8 +14836,8 @@ dz dz dz jk -jw -jw +cQ +cQ jk dp dp @@ -36949,9 +36924,9 @@ ao ao cZ df -gN -gN -gN +ao +ao +ao df cZ ig @@ -37205,11 +37180,11 @@ cZ hM fu cZ -gN -gN +ao +ao fD -gN -gN +ao +ao cZ ig ig @@ -37463,10 +37438,10 @@ cZ cZ cZ df -gN +ao fD fD -gN +ao cZ cZ cZ @@ -42971,7 +42946,7 @@ cN cZ dd dj -dg +de df de dr @@ -43227,7 +43202,7 @@ cN cN cZ df -dg +de df de de @@ -43487,7 +43462,7 @@ de de de de -dg +de df ad df @@ -43495,7 +43470,7 @@ de dE dG de -dI +dd de de de @@ -43751,11 +43726,11 @@ df dB de de -dg de de de -dg +de +de de de de @@ -43997,7 +43972,7 @@ cN cN cN cZ -dg +de df ad ad @@ -44273,7 +44248,7 @@ cZ cZ cZ dY -dg +de de de de @@ -44517,7 +44492,7 @@ de de df ds -dg +de df dC dC @@ -44771,11 +44746,11 @@ cY ad cY de -dg +de df ad ad -dg +de ad ad ad @@ -45030,7 +45005,7 @@ cY ad df df -dg +de dv dv ad @@ -45286,7 +45261,7 @@ cN ad df df -dg +de du dw dw diff --git a/_maps/RandomZLevels/spacebattle.dmm b/_maps/RandomZLevels/spacebattle.dmm index d1b199e8a3..4dff027d92 100644 --- a/_maps/RandomZLevels/spacebattle.dmm +++ b/_maps/RandomZLevels/spacebattle.dmm @@ -226,7 +226,7 @@ "bc" = ( /obj/machinery/porta_turret{ dir = 8; - emagged = 1; + set_obj_flags = "EMAGGED"; installation = /obj/item/gun/energy/lasercannon }, /turf/open/floor/plating, @@ -322,7 +322,7 @@ "by" = ( /obj/machinery/porta_turret{ dir = 8; - emagged = 1; + set_obj_flags = "EMAGGED"; installation = /obj/item/gun/energy/lasercannon }, /turf/open/floor/plating, @@ -344,7 +344,7 @@ "bG" = ( /obj/machinery/porta_turret{ dir = 8; - emagged = 1; + set_obj_flags = "EMAGGED"; installation = /obj/item/gun/energy/lasercannon }, /turf/open/floor/plating, @@ -917,7 +917,7 @@ "dZ" = ( /obj/machinery/porta_turret{ dir = 8; - emagged = 1; + set_obj_flags = "EMAGGED"; installation = /obj/item/gun/energy/lasercannon }, /turf/open/floor/engine, @@ -1718,7 +1718,7 @@ "gP" = ( /obj/machinery/porta_turret{ dir = 8; - emagged = 1; + set_obj_flags = "EMAGGED"; installation = /obj/item/gun/energy/lasercannon }, /turf/open/floor/plating/airless, @@ -2613,7 +2613,7 @@ "kq" = ( /obj/machinery/porta_turret{ dir = 8; - emagged = 1; + set_obj_flags = "EMAGGED"; installation = /obj/item/gun/energy/lasercannon }, /turf/open/floor/engine/vacuum, diff --git a/_maps/RandomZLevels/undergroundoutpost45.dmm b/_maps/RandomZLevels/undergroundoutpost45.dmm index d7b5f88402..a2cb8ac3ce 100644 --- a/_maps/RandomZLevels/undergroundoutpost45.dmm +++ b/_maps/RandomZLevels/undergroundoutpost45.dmm @@ -25,12 +25,6 @@ "ag" = ( /turf/closed/wall/mineral/titanium, /area/awaymission/undergroundoutpost45/central) -"ah" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/undergroundoutpost45/central) -"ai" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/undergroundoutpost45/central) "aj" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel{ @@ -146,12 +140,6 @@ heat_capacity = 1e+006 }, /area/awaymission/undergroundoutpost45/central) -"av" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/undergroundoutpost45/central) -"aw" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/undergroundoutpost45/central) "ax" = ( /obj/effect/landmark/awaystart, /turf/open/floor/plasteel{ @@ -168,7 +156,7 @@ }, /area/awaymission/undergroundoutpost45/central) "az" = ( -/obj/structure/sign/vacuum{ +/obj/structure/sign/warning/vacuum{ desc = "A beacon used by a teleporter."; icon = 'icons/obj/radio.dmi'; icon_state = "beacon"; @@ -180,9 +168,6 @@ heat_capacity = 1e+006 }, /area/awaymission/undergroundoutpost45/central) -"aA" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/undergroundoutpost45/central) "aB" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on, /obj/effect/landmark/awaystart, @@ -197,9 +182,6 @@ "aD" = ( /turf/closed/wall/rust, /area/awaymission/undergroundoutpost45/central) -"aE" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/undergroundoutpost45/central) "aF" = ( /turf/open/floor/plasteel/floorgrime{ dir = 8; @@ -1438,7 +1420,7 @@ "ds" = ( /obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk, -/obj/structure/sign/deathsposal{ +/obj/structure/sign/warning/deathsposal{ desc = "A warning sign which reads 'DISPOSAL: LEADS TO EXTERIOR'"; name = "\improper DISPOSAL: LEADS TO EXTERIOR"; pixel_y = 32 @@ -2201,11 +2183,7 @@ "eV" = ( /obj/structure/closet/emcloset, /obj/item/clothing/mask/breath, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = -32 }, /turf/open/floor/plating{ @@ -2721,7 +2699,7 @@ /obj/structure/disposalpipe/trunk{ dir = 1 }, -/obj/structure/sign/deathsposal{ +/obj/structure/sign/warning/deathsposal{ desc = "A warning sign which reads 'DISPOSAL: LEADS TO EXTERIOR'"; name = "\improper DISPOSAL: LEADS TO EXTERIOR"; pixel_y = -32 @@ -3815,7 +3793,7 @@ dir = 8 }, /obj/effect/decal/cleanable/dirt, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = 32 }, /turf/open/floor/plasteel/dark{ @@ -3845,7 +3823,7 @@ pixel_y = 3 }, /obj/item/stock_parts/scanning_module, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = -32 }, /obj/effect/turf_decal/stripes/line{ @@ -3994,7 +3972,7 @@ "iN" = ( /obj/structure/table, /obj/item/storage/firstaid/regular, -/obj/structure/sign/biohazard{ +/obj/structure/sign/warning/biohazard{ pixel_x = -32 }, /turf/open/floor/plasteel/floorgrime{ @@ -4155,7 +4133,7 @@ /obj/structure/disposalpipe/trunk{ dir = 4 }, -/obj/structure/sign/deathsposal{ +/obj/structure/sign/warning/deathsposal{ desc = "A warning sign which reads 'DISPOSAL: LEADS TO EXTERIOR'"; name = "\improper DISPOSAL: LEADS TO EXTERIOR"; pixel_y = -32 @@ -4893,7 +4871,7 @@ /obj/structure/table, /obj/item/storage/belt/utility, /obj/item/clothing/head/welding, -/obj/structure/sign/biohazard{ +/obj/structure/sign/warning/biohazard{ pixel_y = 32 }, /obj/item/device/assembly/prox_sensor, @@ -4906,7 +4884,7 @@ }, /area/awaymission/undergroundoutpost45/gateway) "kz" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_y = 32 }, /turf/open/floor/plasteel/floorgrime{ @@ -4957,7 +4935,7 @@ /obj/machinery/light/small{ dir = 8 }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = -32 }, /turf/open/floor/plasteel/white{ @@ -5179,7 +5157,7 @@ pixel_y = 25 }, /obj/effect/decal/cleanable/dirt, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = -32 }, /obj/effect/turf_decal/stripes/line{ @@ -5215,7 +5193,7 @@ /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 8 }, -/obj/structure/sign/science{ +/obj/structure/sign/departments/science{ pixel_x = -32 }, /turf/open/floor/plasteel/purple/corner{ @@ -5337,7 +5315,7 @@ pixel_y = -1 }, /obj/item/device/multitool, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = -32 }, /obj/effect/turf_decal/stripes/line{ @@ -5748,7 +5726,7 @@ /obj/structure/disposalpipe/trunk{ dir = 1 }, -/obj/structure/sign/deathsposal{ +/obj/structure/sign/warning/deathsposal{ desc = "A warning sign which reads 'DISPOSAL: LEADS TO EXTERIOR'"; name = "\improper DISPOSAL: LEADS TO EXTERIOR"; pixel_y = -32 @@ -5938,7 +5916,7 @@ "mm" = ( /obj/structure/closet/firecloset, /obj/machinery/light/small, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_y = -32 }, /obj/effect/decal/cleanable/dirt, @@ -5960,7 +5938,7 @@ /area/awaymission/undergroundoutpost45/research) "mo" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = -32 }, /turf/open/floor/plasteel/purple/corner{ @@ -7626,7 +7604,7 @@ /obj/structure/disposalpipe/trunk{ dir = 4 }, -/obj/structure/sign/deathsposal{ +/obj/structure/sign/warning/deathsposal{ desc = "A warning sign which reads 'DISPOSAL: LEADS TO EXTERIOR'"; name = "\improper DISPOSAL: LEADS TO EXTERIOR"; pixel_y = -32 @@ -8186,7 +8164,7 @@ /area/awaymission/undergroundoutpost45/research) "qj" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ desc = "A warning sign which reads 'SERVER ROOM'."; name = "SERVER ROOM"; pixel_y = 32 @@ -8402,7 +8380,7 @@ /obj/machinery/computer/monitor{ name = "primary power monitoring console" }, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = -32 }, /turf/open/floor/plasteel/yellow/side{ @@ -8973,7 +8951,7 @@ /area/awaymission/undergroundoutpost45/research) "rA" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ desc = "A warning sign which reads 'SERVER ROOM'."; name = "SERVER ROOM"; pixel_y = -32 @@ -9547,7 +9525,7 @@ /obj/structure/disposalpipe/trunk{ dir = 1 }, -/obj/structure/sign/deathsposal{ +/obj/structure/sign/warning/deathsposal{ desc = "A warning sign which reads 'DISPOSAL: LEADS TO EXTERIOR'"; name = "\improper DISPOSAL: LEADS TO EXTERIOR"; pixel_y = -32 @@ -10124,7 +10102,7 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 1 }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_y = -32 }, /turf/open/floor/plasteel/yellow/side{ @@ -10246,7 +10224,7 @@ name = "Unfiltered to Mix"; on = 1 }, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = 32 }, /turf/open/floor/plasteel/floorgrime{ @@ -10820,11 +10798,7 @@ "uN" = ( /obj/structure/closet/emcloset, /obj/item/clothing/mask/breath, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_x = -32 }, /turf/open/floor/plating{ @@ -10942,7 +10916,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = 32 }, /obj/effect/decal/cleanable/dirt, @@ -10990,7 +10964,7 @@ /area/awaymission/undergroundoutpost45/engineering) "vc" = ( /obj/machinery/door/firedoor, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_y = 32 }, /obj/machinery/door/poddoor/preopen{ @@ -11405,10 +11379,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE"; +/obj/structure/sign/warning/electricshock{ pixel_y = -32 }, /obj/machinery/vending/engivend{ @@ -11714,7 +11685,7 @@ /obj/structure/disposalpipe/trunk{ dir = 4 }, -/obj/structure/sign/deathsposal{ +/obj/structure/sign/warning/deathsposal{ desc = "A warning sign which reads 'DISPOSAL: LEADS TO EXTERIOR'"; name = "\improper DISPOSAL: LEADS TO EXTERIOR"; pixel_x = -32 @@ -12208,7 +12179,7 @@ dir = 2; id = "UO45_mining" }, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = -32 }, /obj/effect/turf_decal/stripes/line{ @@ -12604,11 +12575,7 @@ /obj/machinery/light/small{ dir = 4 }, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_x = 32 }, /obj/effect/decal/cleanable/dirt, @@ -12745,16 +12712,6 @@ temperature = 363.9 }, /area/awaymission/undergroundoutpost45/caves) -"ys" = ( -/obj/structure/alien/weeds, -/obj/structure/bed/nest, -/turf/open/floor/plating/asteroid{ - initial_gas_mix = "co2=173.4;n2=135.1;plasma=229.8;TEMP=351.9"; - heat_capacity = 1e+006; - name = "Cave Floor"; - temperature = 363.9 - }, -/area/awaymission/undergroundoutpost45/caves) "yt" = ( /obj/structure/alien/weeds, /obj/structure/glowshroom/single, @@ -12775,16 +12732,6 @@ temperature = 363.9 }, /area/awaymission/undergroundoutpost45/caves) -"yv" = ( -/obj/structure/alien/weeds, -/obj/effect/decal/cleanable/blood/gibs/core, -/turf/open/floor/plating/asteroid{ - initial_gas_mix = "co2=173.4;n2=135.1;plasma=229.8;TEMP=351.9"; - heat_capacity = 1e+006; - name = "Cave Floor"; - temperature = 363.9 - }, -/area/awaymission/undergroundoutpost45/caves) "yw" = ( /obj/structure/alien/weeds, /obj/effect/decal/cleanable/blood/splatter, @@ -12795,24 +12742,6 @@ temperature = 363.9 }, /area/awaymission/undergroundoutpost45/caves) -"yx" = ( -/obj/structure/alien/weeds, -/turf/open/floor/plating/asteroid{ - initial_gas_mix = "co2=173.4;n2=135.1;plasma=229.8;TEMP=351.9"; - heat_capacity = 1e+006; - name = "Cave Floor"; - temperature = 363.9 - }, -/area/awaymission/undergroundoutpost45/caves) -"yy" = ( -/obj/structure/alien/weeds, -/turf/open/floor/plating/asteroid{ - initial_gas_mix = "co2=173.4;n2=135.1;plasma=229.8;TEMP=351.9"; - heat_capacity = 1e+006; - name = "Cave Floor"; - temperature = 363.9 - }, -/area/awaymission/undergroundoutpost45/caves) "yz" = ( /obj/structure/alien/resin/membrane, /turf/open/floor/plating/asteroid{ @@ -12862,37 +12791,6 @@ temperature = 363.9 }, /area/awaymission/undergroundoutpost45/caves) -"yE" = ( -/obj/structure/alien/weeds, -/obj/effect/decal/cleanable/blood/splatter, -/turf/open/floor/plating/asteroid{ - initial_gas_mix = "co2=173.4;n2=135.1;plasma=229.8;TEMP=351.9"; - heat_capacity = 1e+006; - name = "Cave Floor"; - temperature = 363.9 - }, -/area/awaymission/undergroundoutpost45/caves) -"yF" = ( -/obj/structure/alien/weeds, -/obj/effect/decal/cleanable/blood/gibs/down, -/turf/open/floor/plating/asteroid{ - initial_gas_mix = "co2=173.4;n2=135.1;plasma=229.8;TEMP=351.9"; - heat_capacity = 1e+006; - name = "Cave Floor"; - temperature = 363.9 - }, -/area/awaymission/undergroundoutpost45/caves) -"yG" = ( -/obj/structure/alien/weeds, -/obj/structure/bed/nest, -/obj/effect/mob_spawn/human, -/turf/open/floor/plating/asteroid{ - initial_gas_mix = "co2=173.4;n2=135.1;plasma=229.8;TEMP=351.9"; - heat_capacity = 1e+006; - name = "Cave Floor"; - temperature = 363.9 - }, -/area/awaymission/undergroundoutpost45/caves) "yH" = ( /obj/structure/alien/weeds, /obj/effect/decal/cleanable/blood/gibs/down, @@ -12904,161 +12802,6 @@ temperature = 363.9 }, /area/awaymission/undergroundoutpost45/caves) -"yI" = ( -/obj/structure/alien/weeds, -/obj/effect/mob_spawn/human, -/turf/open/floor/plating/asteroid{ - initial_gas_mix = "co2=173.4;n2=135.1;plasma=229.8;TEMP=351.9"; - heat_capacity = 1e+006; - name = "Cave Floor"; - temperature = 363.9 - }, -/area/awaymission/undergroundoutpost45/caves) -"yJ" = ( -/obj/item/shard, -/turf/open/floor/mineral/titanium/blue, -/area/awaymission/undergroundoutpost45/caves) -"yK" = ( -/obj/item/shard{ - icon_state = "medium" - }, -/turf/open/floor/mineral/titanium/blue, -/area/awaymission/undergroundoutpost45/caves) -"yL" = ( -/obj/item/shard{ - icon_state = "small" - }, -/turf/open/floor/mineral/titanium/blue, -/area/awaymission/undergroundoutpost45/caves) -"yM" = ( -/turf/open/floor/mineral/titanium/blue, -/area/awaymission/undergroundoutpost45/caves) -"yN" = ( -/obj/structure/grille/broken, -/turf/open/floor/mineral/titanium/blue, -/area/awaymission/undergroundoutpost45/caves) -"yO" = ( -/obj/item/stack/rods, -/turf/open/floor/mineral/titanium/blue, -/area/awaymission/undergroundoutpost45/caves) -"yP" = ( -/obj/item/stack/cable_coil, -/turf/open/floor/mineral/titanium/blue, -/area/awaymission/undergroundoutpost45/caves) -"yQ" = ( -/obj/item/stack/cable_coil{ - amount = 5 - }, -/turf/open/floor/mineral/titanium/blue, -/area/awaymission/undergroundoutpost45/caves) -"yR" = ( -/obj/item/stack/cable_coil{ - amount = 2; - icon_state = "coil_red2"; - item_state = "coil_red2" - }, -/turf/open/floor/mineral/titanium/blue, -/area/awaymission/undergroundoutpost45/caves) -"yS" = ( -/obj/item/stack/cable_coil{ - amount = 1; - icon_state = "coil_red1"; - item_state = "coil_red1" - }, -/turf/open/floor/mineral/titanium/blue, -/area/awaymission/undergroundoutpost45/caves) -"yT" = ( -/turf/open/floor/plasteel{ - heat_capacity = 1e+006 - }, -/area/awaymission/undergroundoutpost45/caves) -"yU" = ( -/turf/open/floor/plasteel/floorgrime{ - dir = 8; - heat_capacity = 1e+006 - }, -/area/awaymission/undergroundoutpost45/caves) -"yV" = ( -/turf/open/floor/plasteel{ - dir = 8; - heat_capacity = 1e+006; - icon_state = "damaged1" - }, -/area/awaymission/undergroundoutpost45/caves) -"yW" = ( -/turf/open/floor/plasteel{ - dir = 8; - heat_capacity = 1e+006; - icon_state = "damaged2" - }, -/area/awaymission/undergroundoutpost45/caves) -"yX" = ( -/turf/open/floor/plasteel{ - dir = 8; - heat_capacity = 1e+006; - icon_state = "damaged3" - }, -/area/awaymission/undergroundoutpost45/caves) -"yY" = ( -/turf/open/floor/plasteel{ - dir = 8; - heat_capacity = 1e+006; - icon_state = "damaged4" - }, -/area/awaymission/undergroundoutpost45/caves) -"yZ" = ( -/turf/open/floor/plasteel{ - dir = 8; - heat_capacity = 1e+006; - icon_state = "damaged5" - }, -/area/awaymission/undergroundoutpost45/caves) -"za" = ( -/turf/open/floor/plasteel{ - dir = 8; - heat_capacity = 1e+006; - icon_state = "floorscorched1" - }, -/area/awaymission/undergroundoutpost45/caves) -"zb" = ( -/turf/open/floor/plasteel{ - dir = 8; - heat_capacity = 1e+006; - icon_state = "floorscorched2" - }, -/area/awaymission/undergroundoutpost45/caves) -"zc" = ( -/turf/open/floor/plasteel/shuttle, -/area/awaymission/undergroundoutpost45/caves) -"zd" = ( -/turf/open/floor/plating{ - heat_capacity = 1e+006 - }, -/area/awaymission/undergroundoutpost45/caves) -"ze" = ( -/turf/open/floor/plating{ - heat_capacity = 1e+006; - icon_state = "platingdmg1" - }, -/area/awaymission/undergroundoutpost45/caves) -"zf" = ( -/turf/open/floor/plating{ - heat_capacity = 1e+006; - icon_state = "platingdmg2" - }, -/area/awaymission/undergroundoutpost45/caves) -"zg" = ( -/turf/open/floor/plating{ - heat_capacity = 1e+006; - icon_state = "platingdmg3" - }, -/area/awaymission/undergroundoutpost45/caves) -"zh" = ( -/turf/open/floor/plating{ - heat_capacity = 1e+006; - icon_state = "panelscorched" - }, -/area/awaymission/undergroundoutpost45/caves) "zi" = ( /obj/effect/mapping_helpers/planet_z, /turf/open/space, diff --git a/_maps/RandomZLevels/wildwest.dmm b/_maps/RandomZLevels/wildwest.dmm index e24d9dcb85..cdc243eb85 100644 --- a/_maps/RandomZLevels/wildwest.dmm +++ b/_maps/RandomZLevels/wildwest.dmm @@ -31,13 +31,6 @@ icon_state = "cult" }, /area/awaymission/wildwest/vault) -"ai" = ( -/turf/closed/indestructible{ - desc = "The patterns engraved on the wall seem to shift as you try to focus on them. You feel sick."; - icon = 'icons/turf/walls/cult_wall.dmi'; - icon_state = "cult" - }, -/area/awaymission/wildwest/vault) "aj" = ( /turf/open/floor/plating{ icon_state = "cultdamage3" @@ -561,9 +554,6 @@ /obj/machinery/door/window, /turf/open/floor/wood, /area/awaymission/wildwest/mines) -"cc" = ( -/turf/closed/wall/mineral/sandstone, -/area/awaymission/wildwest/mines) "cd" = ( /obj/effect/mob_spawn/human/cook{ mob_name = "Chef" @@ -933,9 +923,6 @@ }, /turf/open/floor/carpet, /area/awaymission/wildwest/mines) -"dl" = ( -/turf/closed/wall/mineral/sandstone, -/area/awaymission/wildwest/mines) "dm" = ( /obj/structure/mineral_door/wood{ icon_state = "wood" @@ -1405,7 +1392,7 @@ }, /area/awaymission/wildwest/gov) "eJ" = ( -/obj/structure/sign/vacuum, +/obj/structure/sign/warning/vacuum, /turf/closed/wall/r_wall, /area/awaymission/wildwest/refine) "eK" = ( @@ -2096,22 +2083,10 @@ "gJ" = ( /turf/closed/wall/mineral/titanium, /area/awaymission/wildwest/refine) -"gK" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/wildwest/refine) "gL" = ( /obj/machinery/door/unpowered/shuttle, /turf/open/floor/mineral/titanium/yellow, /area/awaymission/wildwest/refine) -"gM" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/wildwest/refine) -"gN" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/wildwest/refine) -"gO" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/wildwest/refine) "gP" = ( /obj/structure/chair, /turf/open/floor/mineral/titanium/yellow, @@ -2119,18 +2094,9 @@ "gQ" = ( /turf/open/floor/mineral/titanium/yellow, /area/awaymission/wildwest/refine) -"gR" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/wildwest/refine) "gS" = ( /turf/closed/wall/mineral/titanium/nodiagonal, /area/awaymission/wildwest/refine) -"gT" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/wildwest/refine) -"gU" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/wildwest/refine) "gV" = ( /obj/effect/landmark/awaystart, /turf/open/floor/plating/ironsand{ @@ -22574,7 +22540,7 @@ ab ah ac ah -ai +ah ac ac ac diff --git a/_maps/_basemap.dm b/_maps/_basemap.dm index f522d569c1..794f57ea58 100644 --- a/_maps/_basemap.dm +++ b/_maps/_basemap.dm @@ -12,14 +12,14 @@ #ifdef ALL_MAPS #include "map_files\debug\runtimestation.dmm" - #include "cit_map_files\Deltastation\DeltaStation2.dmm" - #include "cit_map_files\MetaStation\MetaStation.dmm" - #include "cit_map_files\OmegaStation\OmegaStation.dmm" - #include "cit_map_files\PubbyStation\PubbyStation.dmm" - #include "cit_map_files\BoxStation\BoxStation.dmm" + #include "map_files\Deltastation\DeltaStation2.dmm" + #include "map_files\MetaStation\MetaStation.dmm" + #include "map_files\OmegaStation\OmegaStation.dmm" + #include "map_files\PubbyStation\PubbyStation.dmm" + #include "map_files\BoxStation\BoxStation.dmm" #ifdef TRAVISBUILDING #include "templates.dm" #endif #endif -#endif +#endif \ No newline at end of file diff --git a/_maps/boxstation.json b/_maps/boxstation.json index a1862ce62b..92d377171f 100644 --- a/_maps/boxstation.json +++ b/_maps/boxstation.json @@ -1,5 +1,11 @@ { "map_name": "Box Station", - "map_path": "cit_map_files/BoxStation", - "map_file": "BoxStation.dmm" + "map_path": "map_files/BoxStation", + "map_file": "BoxStation.dmm", + "shuttles": { + "cargo": "cargo_box", + "ferry": "ferry_fancy", + "whiteship": "whiteship_meta", + "emergency": "emergency_box" + } } diff --git a/_maps/deltastation.json b/_maps/deltastation.json index ff6dedd66d..6d20f578fa 100644 --- a/_maps/deltastation.json +++ b/_maps/deltastation.json @@ -1,5 +1,11 @@ { "map_name": "Delta Station", - "map_path": "cit_map_files/Deltastation", - "map_file": "DeltaStation2.dmm" + "map_path": "map_files/Deltastation", + "map_file": "DeltaStation2.dmm", + "shuttles": { + "emergency": "emergency_delta", + "ferry": "ferry_fancy", + "cargo": "cargo_delta", + "whiteship": "whiteship_delta" + } } diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm index c81b9539e6..56d1c6add8 100644 --- a/_maps/map_files/BoxStation/BoxStation.dmm +++ b/_maps/map_files/BoxStation/BoxStation.dmm @@ -15,7 +15,7 @@ /turf/open/space, /area/space/nearstation) "aah" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_y = -32 }, /turf/open/space, @@ -77,10 +77,7 @@ }, /area/security/prison) "aaq" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE"; +/obj/structure/sign/warning/electricshock{ pixel_y = 32 }, /obj/machinery/hydroponics/soil, @@ -240,7 +237,7 @@ /area/security/prison) "aaR" = ( /obj/structure/lattice, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_y = -32 }, /turf/open/space, @@ -875,7 +872,7 @@ /turf/open/floor/plasteel/dark, /area/ai_monitored/security/armory) "acw" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_y = -32 }, /obj/structure/lattice/catwalk, @@ -1307,11 +1304,7 @@ /turf/open/floor/wood, /area/crew_quarters/theatre) "adr" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_x = -32 }, /turf/open/floor/plating, @@ -1396,7 +1389,7 @@ /turf/open/space, /area/solar/port/fore) "adB" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = 32 }, /turf/open/space, @@ -2135,12 +2128,6 @@ /turf/open/floor/plating, /area/ai_monitored/security/armory) "afa" = ( -/obj/machinery/door/airlock/titanium{ - name = "Emergency Shuttle Airlock" - }, -/obj/docking_port/mobile/emergency{ - name = "Box emergency shuttle" - }, /obj/docking_port/stationary{ dir = 4; dwidth = 12; @@ -2150,8 +2137,8 @@ turf_type = /turf/open/space; width = 32 }, -/turf/open/floor/plating, -/area/shuttle/escape) +/turf/open/space/basic, +/area/space) "afb" = ( /obj/machinery/recharger, /obj/structure/table, @@ -2259,7 +2246,8 @@ id = "pod3"; name = "escape pod 3"; port_direction = 2; - preferred_direction = 4 + preferred_direction = 4; + timid = 0 }, /turf/open/floor/mineral/titanium/blue, /area/shuttle/pod_3) @@ -2468,7 +2456,7 @@ /area/ai_monitored/storage/eva) "afQ" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = -32 }, /turf/open/floor/plating, @@ -2530,7 +2518,7 @@ /turf/open/floor/plasteel, /area/security/main) "aga" = ( -/obj/structure/sign/pods{ +/obj/structure/sign/warning/pods{ pixel_x = 32 }, /obj/effect/turf_decal/stripes/line{ @@ -2773,7 +2761,7 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = -32 }, /obj/machinery/door/poddoor/preopen{ @@ -3740,10 +3728,7 @@ /obj/structure/cable{ icon_state = "0-4" }, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE"; +/obj/structure/sign/warning/electricshock{ pixel_x = -32 }, /obj/effect/spawner/structure/window/reinforced, @@ -3902,7 +3887,7 @@ }, /area/security/brig) "ajd" = ( -/obj/structure/sign/goldenplaque{ +/obj/structure/sign/plaques/golden{ pixel_y = 32 }, /turf/open/floor/plasteel/red/side{ @@ -3941,7 +3926,7 @@ }, /obj/structure/closet/secure_closet/courtroom, /obj/effect/decal/cleanable/cobweb, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = -32 }, /obj/item/gavelhammer, @@ -4018,7 +4003,7 @@ /turf/open/floor/plasteel, /area/security/processing) "ajt" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = 32 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -4285,11 +4270,7 @@ /area/maintenance/solars/port/fore) "ajZ" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = 32 }, /turf/open/floor/plating, @@ -4546,11 +4527,7 @@ /turf/open/floor/plating, /area/maintenance/solars/port/fore) "akG" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = 32 }, /obj/effect/spawner/structure/window/reinforced, @@ -5036,11 +5013,7 @@ /turf/closed/wall/r_wall, /area/maintenance/solars/port/fore) "alS" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_x = 32 }, /turf/open/floor/plating, @@ -5345,10 +5318,7 @@ /turf/open/floor/plating, /area/maintenance/port/fore) "amK" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'."; - name = "KEEP CLEAR: DOCKING AREA" - }, +/obj/structure/sign/warning/docking, /turf/closed/wall, /area/security/processing) "amL" = ( @@ -5669,10 +5639,7 @@ }, /area/hallway/primary/fore) "anx" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE"; +/obj/structure/sign/warning/electricshock{ pixel_y = 32 }, /turf/open/floor/plasteel/red/corner{ @@ -5680,10 +5647,7 @@ }, /area/hallway/primary/fore) "any" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE"; +/obj/structure/sign/warning/electricshock{ pixel_y = 32 }, /obj/machinery/light{ @@ -5705,7 +5669,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_y = 32 }, /turf/open/floor/plasteel/red/corner{ @@ -5737,21 +5701,13 @@ /turf/open/floor/plating, /area/maintenance/fore/secondary) "anG" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = 32 }, /turf/open/floor/plating, /area/maintenance/fore/secondary) "anH" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE" - }, +/obj/structure/sign/warning/electricshock, /turf/closed/wall/r_wall, /area/maintenance/solars/port/fore) "anI" = ( @@ -5787,29 +5743,17 @@ /turf/open/floor/plating, /area/security/processing) "anO" = ( -/obj/machinery/door/airlock/titanium{ - id_tag = "prisonshuttle"; - name = "Labor Shuttle Airlock" - }, -/obj/docking_port/mobile{ - dir = 8; - dwidth = 2; - height = 5; - id = "laborcamp"; - name = "labor camp shuttle"; - port_direction = 4; - width = 9 - }, /obj/docking_port/stationary{ dir = 8; dwidth = 2; height = 5; id = "laborcamp_home"; name = "fore bay 1"; + roundstart_template = /datum/map_template/shuttle/labour/box; width = 9 }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/labor) +/turf/open/space/basic, +/area/space) "anP" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/security{ @@ -5821,10 +5765,7 @@ /turf/open/floor/plasteel, /area/security/processing) "anQ" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE"; +/obj/structure/sign/warning/electricshock{ pixel_y = 32 }, /obj/machinery/light{ @@ -5949,11 +5890,7 @@ "aoi" = ( /obj/structure/rack, /obj/item/clothing/mask/gas, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = 32 }, /obj/item/device/multitool, @@ -5996,11 +5933,7 @@ /turf/open/floor/plating, /area/maintenance/port/fore) "aoq" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = -32 }, /obj/effect/spawner/structure/window/reinforced, @@ -6823,11 +6756,7 @@ /turf/open/floor/plating, /area/maintenance/solars/starboard/fore) "aqx" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE" - }, +/obj/structure/sign/warning/electricshock, /turf/closed/wall/r_wall, /area/maintenance/solars/starboard/fore) "aqy" = ( @@ -7098,11 +7027,7 @@ }, /area/holodeck/rec_center) "arp" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = 32 }, /obj/effect/spawner/structure/window/reinforced, @@ -7810,7 +7735,8 @@ dir = 4; dwidth = 4; height = 9; - width = 9 + width = 9; + timid = 0 }, /obj/machinery/bluespace_beacon, /obj/machinery/computer/auxillary_base, @@ -8473,11 +8399,7 @@ /turf/open/floor/plating, /area/maintenance/fore) "ave" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = 32 }, /obj/effect/spawner/lootdrop/maintenance, @@ -8571,11 +8493,7 @@ }, /area/crew_quarters/dorms) "avo" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE" - }, +/obj/structure/sign/warning/electricshock, /turf/closed/wall, /area/maintenance/department/electrical) "avp" = ( @@ -8705,11 +8623,7 @@ /turf/open/floor/plasteel, /area/crew_quarters/dorms) "avH" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE" - }, +/obj/structure/sign/warning/electricshock, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -8774,7 +8688,7 @@ /turf/open/floor/plasteel/floorgrime, /area/maintenance/department/electrical) "avP" = ( -/obj/structure/sign/pods, +/obj/structure/sign/warning/pods, /turf/closed/wall, /area/hallway/secondary/entry) "avQ" = ( @@ -9394,10 +9308,7 @@ /turf/open/floor/plating, /area/maintenance/port/fore) "axm" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE"; +/obj/structure/sign/warning/electricshock{ pixel_y = -32 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -9434,10 +9345,7 @@ /turf/open/floor/plating, /area/maintenance/fore) "axr" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE"; +/obj/structure/sign/warning/electricshock{ pixel_y = -32 }, /obj/structure/cable{ @@ -9949,7 +9857,7 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = 32 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -10036,7 +9944,7 @@ /obj/structure/cable{ icon_state = "0-2" }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_y = 32 }, /obj/effect/spawner/structure/window/reinforced, @@ -10716,18 +10624,11 @@ /turf/open/floor/plating, /area/maintenance/department/electrical) "aAC" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'."; - name = "KEEP CLEAR: DOCKING AREA" - }, +/obj/structure/sign/warning/docking, /turf/closed/wall/r_wall, /area/hallway/secondary/entry) "aAD" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = 32 }, /obj/effect/spawner/structure/window/reinforced, @@ -11938,11 +11839,7 @@ /turf/open/floor/plasteel/cafeteria, /area/crew_quarters/heads/hor) "aDI" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE" - }, +/obj/structure/sign/warning/electricshock, /turf/closed/wall/r_wall, /area/ai_monitored/storage/eva) "aDK" = ( @@ -12417,7 +12314,7 @@ network = list("SS13") }, /obj/structure/table, -/obj/structure/sign/biohazard{ +/obj/structure/sign/warning/biohazard{ pixel_x = -32 }, /obj/item/storage/firstaid/regular, @@ -12450,7 +12347,7 @@ "aEU" = ( /obj/structure/table, /obj/machinery/recharger, -/obj/structure/sign/biohazard{ +/obj/structure/sign/warning/biohazard{ pixel_x = 32 }, /turf/open/floor/plasteel, @@ -12494,7 +12391,7 @@ /turf/open/floor/plasteel/dark, /area/ai_monitored/storage/eva) "aFc" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall/r_wall, /area/ai_monitored/storage/eva) "aFd" = ( @@ -13546,7 +13443,7 @@ /turf/open/floor/plasteel, /area/storage/primary) "aHF" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall/r_wall, /area/ai_monitored/nuke_storage) "aHG" = ( @@ -14736,7 +14633,7 @@ /turf/open/floor/plasteel, /area/gateway) "aKB" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall/r_wall, /area/gateway) "aKC" = ( @@ -14994,10 +14891,7 @@ /turf/open/floor/plasteel, /area/hallway/primary/port) "aLl" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE"; +/obj/structure/sign/warning/electricshock{ pixel_y = 32 }, /obj/machinery/atmospherics/components/unary/vent_scrubber/on, @@ -15157,10 +15051,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE"; +/obj/structure/sign/warning/electricshock{ pixel_y = 32 }, /obj/effect/turf_decal/stripes/corner{ @@ -16235,10 +16126,7 @@ /area/hallway/primary/central) "aOF" = ( /obj/machinery/light, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE"; +/obj/structure/sign/warning/electricshock{ pixel_y = -32 }, /obj/machinery/door/firedoor, @@ -16247,10 +16135,7 @@ }, /area/hallway/primary/central) "aOG" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE"; +/obj/structure/sign/warning/electricshock{ pixel_y = -32 }, /obj/machinery/door/firedoor, @@ -16519,7 +16404,7 @@ /area/hallway/secondary/entry) "aPw" = ( /obj/machinery/disposal/bin, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ desc = "Under the painting a plaque reads: 'While the meat grinder may not have spared you, fear not. Not one part of you has gone to waste... You were delicious.'"; icon_state = "monkey_painting"; name = "Mr. Deempisi portrait"; @@ -16937,11 +16822,7 @@ /turf/open/floor/plating, /area/hallway/secondary/exit) "aQG" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = 32 }, /obj/effect/turf_decal/stripes/line{ @@ -17390,10 +17271,7 @@ /turf/open/floor/plasteel, /area/storage/tools) "aRW" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'."; - name = "KEEP CLEAR: DOCKING AREA" - }, +/obj/structure/sign/warning/docking, /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/hallway/secondary/exit) @@ -17473,13 +17351,6 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on, /turf/open/floor/plasteel, /area/crew_quarters/locker) -<<<<<<< HEAD -"aSj" = ( -/obj/effect/landmark/lightsout, -/turf/open/floor/plasteel, -/area/crew_quarters/locker) -======= ->>>>>>> e645319... Changes up the Construction Area on Box slightly. (#35009) "aSk" = ( /obj/structure/table, /obj/item/stack/cable_coil/random, @@ -17853,11 +17724,7 @@ cyclelinkeddir = 4; name = "Escape Airlock" }, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = 32 }, /turf/open/floor/plating, @@ -18424,10 +18291,7 @@ /turf/open/floor/plasteel, /area/storage/tools) "aVb" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE"; +/obj/structure/sign/warning/electricshock{ pixel_y = 32 }, /obj/machinery/door/firedoor, @@ -18436,7 +18300,7 @@ }, /area/hallway/primary/central) "aVc" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = 32 }, /obj/machinery/door/firedoor, @@ -18622,7 +18486,7 @@ /turf/open/floor/plasteel, /area/bridge) "aVt" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = -32 }, /obj/machinery/door/firedoor, @@ -18634,10 +18498,7 @@ /turf/open/floor/plasteel, /area/bridge) "aVu" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE"; +/obj/structure/sign/warning/electricshock{ pixel_y = 32 }, /obj/machinery/door/firedoor, @@ -18871,12 +18732,7 @@ /turf/open/floor/carpet, /area/library) "aWa" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK" - }, +/obj/structure/sign/warning/vacuum/external, /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/hallway/secondary/entry) @@ -21250,7 +21106,7 @@ "bcg" = ( /obj/structure/table, /obj/item/aiModule/supplied/freeform, -/obj/structure/sign/kiddieplaque{ +/obj/structure/sign/plaques/kiddie{ pixel_x = 32 }, /obj/machinery/camera/motion{ @@ -21401,11 +21257,7 @@ /turf/open/floor/plasteel, /area/hallway/secondary/exit) "bcB" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_x = 32 }, /obj/effect/turf_decal/stripes/line{ @@ -22322,7 +22174,7 @@ id = "garbage" }, /obj/machinery/recycler, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ name = "\improper STAY CLEAR HEAVY MACHINERY"; pixel_y = 32 }, @@ -22404,11 +22256,7 @@ /turf/open/floor/plasteel/freezer, /area/crew_quarters/toilet/locker) "bfb" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = 32 }, /obj/effect/landmark/event_spawn, @@ -22634,7 +22482,7 @@ /turf/open/floor/plating, /area/medical/medbay/central) "bfH" = ( -/obj/structure/sign/bluecross_2, +/obj/structure/sign/departments/medbay/alt, /turf/closed/wall, /area/medical/medbay/central) "bfI" = ( @@ -22734,7 +22582,7 @@ }, /area/hallway/primary/starboard) "bfZ" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_y = -32 }, /turf/open/floor/plasteel/purple/side{ @@ -23951,7 +23799,7 @@ dir = 1; id = "garbage" }, -/obj/structure/sign/vacuum{ +/obj/structure/sign/warning/vacuum{ pixel_x = -32 }, /turf/open/floor/plating, @@ -24472,7 +24320,7 @@ /obj/machinery/shower{ dir = 8 }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = 32 }, /obj/effect/turf_decal/stripes/line{ @@ -24580,10 +24428,7 @@ /turf/open/floor/plating, /area/maintenance/port) "bkE" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'."; - name = "KEEP CLEAR: DOCKING AREA" - }, +/obj/structure/sign/warning/docking, /turf/closed/wall/r_wall, /area/maintenance/port) "bkF" = ( @@ -25150,11 +24995,7 @@ /turf/open/floor/plating, /area/maintenance/starboard/aft) "blR" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = 32 }, /obj/item/cigbutt, @@ -25527,7 +25368,7 @@ /obj/structure/chair/office/light{ dir = 1 }, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = 28 }, /turf/open/floor/plasteel/white, @@ -25883,7 +25724,7 @@ /turf/open/floor/plasteel, /area/quartermaster/office) "bnF" = ( -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = 30 }, /obj/structure/disposalpipe/segment{ @@ -26011,10 +25852,7 @@ /turf/open/floor/plasteel, /area/crew_quarters/heads/hop) "bnT" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE"; +/obj/structure/sign/warning/electricshock{ pixel_x = -32 }, /obj/structure/cable{ @@ -26045,10 +25883,7 @@ /turf/open/floor/plating, /area/engine/gravity_generator) "bnW" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'RADIOACTIVE AREA'"; - icon_state = "radiation"; - name = "RADIOACTIVE AREA"; +/obj/structure/sign/warning/radiation/rad_area{ pixel_x = 32 }, /obj/structure/cable{ @@ -26363,12 +26198,7 @@ /turf/open/floor/plating, /area/maintenance/starboard) "boI" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK" - }, +/obj/structure/sign/warning/vacuum/external, /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/quartermaster/storage) @@ -27209,7 +27039,7 @@ name = "Teleporter Maintenance"; req_access_txt = "17" }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = -32 }, /obj/structure/cable{ @@ -27262,7 +27092,7 @@ /obj/item/crowbar, /obj/item/clothing/neck/stethoscope, /obj/item/reagent_containers/spray/cleaner, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = 30 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -27636,7 +27466,7 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = -32 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -27756,10 +27586,7 @@ /turf/open/floor/plasteel, /area/crew_quarters/heads/hop) "brU" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE"; +/obj/structure/sign/warning/electricshock{ pixel_y = -32 }, /obj/structure/cable{ @@ -28336,7 +28163,7 @@ /obj/structure/disposalpipe/segment{ dir = 10 }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = 32 }, /obj/machinery/light/small{ @@ -29128,7 +28955,7 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = -32 }, /obj/structure/disposalpipe/segment, @@ -29339,7 +29166,7 @@ /turf/open/floor/plasteel/white, /area/medical/genetics) "bvA" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -29602,7 +29429,7 @@ /turf/open/floor/plasteel, /area/hallway/primary/central) "bwh" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_y = 32 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -29656,10 +29483,7 @@ /area/engine/gravity_generator) "bwn" = ( /obj/structure/closet/radiation, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'RADIOACTIVE AREA'"; - icon_state = "radiation"; - name = "RADIOACTIVE AREA"; +/obj/structure/sign/warning/radiation/rad_area{ pixel_x = -32 }, /obj/effect/turf_decal/stripes/line{ @@ -29673,10 +29497,7 @@ /area/engine/gravity_generator) "bwp" = ( /obj/structure/closet/radiation, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'RADIOACTIVE AREA'"; - icon_state = "radiation"; - name = "RADIOACTIVE AREA"; +/obj/structure/sign/warning/radiation/rad_area{ pixel_x = 32 }, /obj/effect/turf_decal/stripes/line{ @@ -29796,7 +29617,7 @@ /turf/open/floor/plasteel, /area/medical/sleeper) "bwG" = ( -/obj/structure/sign/nosmoking_2, +/obj/structure/sign/warning/nosmoking, /turf/closed/wall, /area/medical/sleeper) "bwH" = ( @@ -30000,7 +29821,7 @@ /area/medical/sleeper) "bxa" = ( /obj/structure/chair, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = -28 }, /turf/open/floor/plasteel/dark, @@ -30451,7 +30272,7 @@ }, /area/quartermaster/qm) "bye" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall/r_wall, /area/medical/genetics) "byf" = ( @@ -30754,7 +30575,7 @@ /turf/open/floor/plasteel/red/side, /area/security/checkpoint/supply) "byP" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_y = 32 }, /turf/open/floor/plasteel/blue/side{ @@ -31006,7 +30827,7 @@ /obj/machinery/atmospherics/pipe/simple{ dir = 4 }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ desc = "A warning sign which reads 'SERVER ROOM'."; name = "SERVER ROOM"; pixel_y = 32 @@ -32077,7 +31898,7 @@ /turf/open/floor/plasteel/dark, /area/science/server) "bBV" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ desc = "A warning sign which reads 'SERVER ROOM'."; name = "SERVER ROOM"; pixel_y = -32 @@ -32235,7 +32056,7 @@ network = list("SS13","RD") }, /obj/machinery/light, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = -32 }, /turf/open/floor/engine, @@ -32605,9 +32426,7 @@ /turf/open/floor/plating, /area/maintenance/starboard) "bDi" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'."; - name = "KEEP CLEAR: DOCKING AREA"; +/obj/structure/sign/warning/docking{ pixel_y = 32 }, /turf/open/space, @@ -32802,7 +32621,7 @@ /turf/open/floor/plasteel/white, /area/medical/sleeper) "bDD" = ( -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = -28 }, /obj/structure/bed, @@ -33090,7 +32909,7 @@ /area/science/storage) "bEp" = ( /obj/machinery/portable_atmospherics/canister/toxins, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = 32 }, /obj/effect/turf_decal/delivery, @@ -33307,7 +33126,7 @@ /turf/open/floor/plasteel, /area/science/mixing) "bEO" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = -32 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -33738,7 +33557,7 @@ /turf/open/floor/plasteel/barber, /area/crew_quarters/heads/cmo) "bFQ" = ( -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = -32 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -33932,11 +33751,7 @@ /turf/open/floor/plasteel, /area/storage/tech) "bGu" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE" - }, +/obj/structure/sign/warning/electricshock, /turf/closed/wall/r_wall, /area/storage/tech) "bGv" = ( @@ -34907,11 +34722,7 @@ /turf/open/floor/plasteel/barber, /area/crew_quarters/heads/cmo) "bIx" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE" - }, +/obj/structure/sign/warning/electricshock, /turf/closed/wall/r_wall, /area/science/xenobiology) "bIy" = ( @@ -35023,7 +34834,7 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = 32 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -35083,7 +34894,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/structure/sign/xenobio{ +/obj/structure/sign/departments/xenobio{ pixel_y = -32 }, /turf/open/floor/plating, @@ -35110,7 +34921,7 @@ /turf/open/floor/plasteel, /area/science/mixing) "bIX" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ desc = "A warning sign which reads 'BOMB RANGE"; name = "BOMB RANGE" }, @@ -35148,29 +34959,17 @@ /turf/open/floor/plating, /area/quartermaster/miningdock) "bJc" = ( -/obj/machinery/door/airlock/titanium{ - name = "Mining Shuttle Airlock"; - req_access_txt = "0" - }, -/obj/docking_port/mobile{ - dir = 8; - dwidth = 3; - height = 5; - id = "mining"; - name = "mining shuttle"; - port_direction = 4; - width = 7 - }, /obj/docking_port/stationary{ dir = 8; dwidth = 3; height = 5; id = "mining_home"; name = "mining shuttle bay"; + roundstart_template = /datum/map_template/shuttle/mining/box; width = 7 }, -/turf/open/floor/plating, -/area/shuttle/mining) +/turf/open/space/basic, +/area/space) "bJd" = ( /obj/machinery/door/airlock/mining/glass{ cyclelinkeddir = 8; @@ -35207,7 +35006,7 @@ /turf/open/floor/plasteel, /area/storage/tech) "bJi" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall/r_wall, /area/storage/tech) "bJj" = ( @@ -35700,12 +35499,7 @@ }, /area/quartermaster/miningdock) "bKm" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK" - }, +/obj/structure/sign/warning/vacuum/external, /turf/closed/wall, /area/quartermaster/miningdock) "bKn" = ( @@ -35859,7 +35653,7 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_y = -32 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -36135,7 +35929,7 @@ /turf/open/floor/plasteel/white, /area/medical/virology) "bLe" = ( -/obj/structure/sign/biohazard, +/obj/structure/sign/warning/biohazard, /turf/closed/wall, /area/science/xenobiology) "bLf" = ( @@ -36158,21 +35952,17 @@ /turf/open/floor/plating, /area/maintenance/port/aft) "bLh" = ( -/obj/structure/sign/fire, +/obj/structure/sign/warning/fire, /turf/closed/wall, /area/science/research) "bLi" = ( -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = -32 }, /turf/open/floor/plasteel/white, /area/science/mixing) "bLj" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = -32 }, /turf/open/floor/plating, @@ -36625,11 +36415,7 @@ /turf/open/floor/plating, /area/science/research) "bMt" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = 32 }, /turf/open/floor/engine/vacuum, @@ -36901,7 +36687,7 @@ /turf/open/floor/plasteel, /area/science/misc_lab) "bNf" = ( -/obj/structure/sign/biohazard, +/obj/structure/sign/warning/biohazard, /turf/closed/wall, /area/medical/virology) "bNg" = ( @@ -37508,7 +37294,7 @@ /turf/open/floor/engine/vacuum, /area/science/mixing) "bOF" = ( -/obj/structure/sign/fire{ +/obj/structure/sign/warning/fire{ pixel_y = -32 }, /obj/machinery/atmospherics/components/binary/pump{ @@ -37846,7 +37632,7 @@ /obj/machinery/shower{ dir = 4 }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = -32 }, /obj/effect/turf_decal/stripes/line{ @@ -37905,7 +37691,7 @@ /area/medical/virology) "bPx" = ( /obj/machinery/disposal/bin, -/obj/structure/sign/deathsposal{ +/obj/structure/sign/warning/deathsposal{ pixel_y = -32 }, /obj/structure/disposalpipe/trunk{ @@ -39193,7 +38979,7 @@ /turf/open/floor/plating, /area/engine/atmos) "bSD" = ( -/obj/structure/sign/atmosplaque{ +/obj/structure/sign/plaques/atmos{ pixel_y = -32 }, /obj/structure/table, @@ -40317,11 +40103,7 @@ }, /area/hallway/primary/aft) "bVi" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE" - }, +/obj/structure/sign/warning/electricshock, /turf/closed/wall, /area/science/xenobiology) "bVj" = ( @@ -40471,7 +40253,7 @@ /obj/structure/disposalpipe/trunk{ dir = 8 }, -/obj/structure/sign/deathsposal{ +/obj/structure/sign/warning/deathsposal{ pixel_y = 32 }, /turf/open/floor/plating, @@ -40487,7 +40269,7 @@ /turf/open/floor/plating, /area/maintenance/port/aft) "bVG" = ( -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = -28 }, /turf/open/floor/plating, @@ -40552,7 +40334,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ dir = 4 }, -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall, /area/engine/atmos) "bVT" = ( @@ -41312,7 +41094,7 @@ /turf/closed/wall/r_wall, /area/engine/atmos) "bXL" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall/r_wall, /area/engine/atmos) "bXM" = ( @@ -41440,7 +41222,7 @@ /area/engine/break_room) "bYc" = ( /obj/machinery/disposal/bin, -/obj/structure/sign/deathsposal{ +/obj/structure/sign/warning/deathsposal{ pixel_y = -32 }, /obj/structure/disposalpipe/trunk{ @@ -41570,7 +41352,7 @@ /turf/open/floor/plasteel/white, /area/science/misc_lab) "bYp" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = -32 }, /turf/open/floor/plasteel/yellow/side{ @@ -41601,11 +41383,7 @@ /turf/open/floor/plating, /area/maintenance/port/aft) "bYu" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_x = -32 }, /turf/open/floor/plating, @@ -41740,7 +41518,7 @@ /turf/open/floor/plasteel, /area/engine/atmos) "bYR" = ( -/obj/structure/sign/nosmoking_2, +/obj/structure/sign/warning/nosmoking, /turf/closed/wall, /area/engine/atmos) "bYS" = ( @@ -42764,7 +42542,7 @@ /turf/open/floor/plating, /area/tcommsat/computer) "cbn" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ desc = "A warning sign which reads 'SERVER ROOM'."; name = "SERVER ROOM" }, @@ -42822,7 +42600,7 @@ /turf/open/floor/plasteel, /area/hallway/primary/aft) "cbs" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall, /area/engine/engineering) @@ -43345,7 +43123,7 @@ /turf/open/floor/engine/co2, /area/engine/atmos) "ccE" = ( -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = 28 }, /turf/open/floor/plating, @@ -43607,7 +43385,6 @@ /turf/open/floor/plasteel, /area/engine/engineering) "cdp" = ( -/obj/effect/landmark/lightsout, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 8 @@ -43899,7 +43676,7 @@ /turf/open/floor/plasteel/dark/telecomms/mainframe, /area/tcommsat/server) "cec" = ( -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = -32 }, /obj/machinery/light, @@ -43990,7 +43767,7 @@ /turf/open/floor/plasteel, /area/crew_quarters/heads/chief) "cep" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall/r_wall, /area/engine/engineering) @@ -44092,7 +43869,7 @@ /turf/open/floor/plating, /area/maintenance/aft) "ceE" = ( -/obj/structure/sign/fire{ +/obj/structure/sign/warning/fire{ pixel_y = -32 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -44117,7 +43894,7 @@ /turf/closed/wall, /area/maintenance/aft) "ceI" = ( -/obj/structure/sign/biohazard, +/obj/structure/sign/warning/biohazard, /turf/closed/wall, /area/maintenance/aft) "ceJ" = ( @@ -44188,11 +43965,7 @@ /turf/open/floor/plating, /area/maintenance/starboard/aft) "ceU" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = -32 }, /turf/open/floor/plating, @@ -44269,14 +44042,11 @@ }, /area/engine/engineering) "cfe" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'RADIOACTIVE AREA'"; - icon_state = "radiation"; - name = "RADIOACTIVE AREA"; +/obj/structure/sign/warning/radiation/rad_area{ pixel_x = -32 }, /obj/structure/disposalpipe/segment, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = 32 }, /obj/structure/cable{ @@ -44490,7 +44260,7 @@ /turf/open/floor/plasteel, /area/engine/engineering) "cfK" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall, /area/engine/engineering) "cfL" = ( @@ -44611,7 +44381,7 @@ /area/maintenance/disposal/incinerator) "cgb" = ( /obj/machinery/disposal/bin, -/obj/structure/sign/deathsposal{ +/obj/structure/sign/warning/deathsposal{ pixel_y = 32 }, /obj/structure/disposalpipe/trunk, @@ -44676,7 +44446,7 @@ /area/maintenance/starboard/aft) "cgk" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/biohazard, +/obj/structure/sign/warning/biohazard, /turf/open/floor/plating, /area/science/xenobiology) "cgl" = ( @@ -44747,7 +44517,7 @@ /turf/open/floor/plating, /area/maintenance/starboard/aft) "cgt" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_y = 32 }, /obj/effect/spawner/lootdrop/maintenance, @@ -44802,11 +44572,7 @@ /turf/open/space, /area/solar/port/aft) "cgA" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_x = -32 }, /turf/open/floor/plating, @@ -44842,11 +44608,7 @@ /turf/open/floor/plating, /area/maintenance/port/aft) "cgE" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE" - }, +/obj/structure/sign/warning/electricshock, /turf/closed/wall/r_wall, /area/maintenance/solars/port/aft) "cgF" = ( @@ -45600,7 +45362,7 @@ /turf/closed/wall/r_wall, /area/engine/atmos) "ciy" = ( -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = -28 }, /obj/machinery/atmospherics/components/unary/portables_connector/visible{ @@ -45641,7 +45403,7 @@ name = "output gas connector port" }, /obj/machinery/portable_atmospherics/canister, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = 28 }, /turf/open/floor/plasteel/floorgrime, @@ -45902,7 +45664,7 @@ }, /area/crew_quarters/heads/chief) "cjk" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -46050,11 +45812,7 @@ /turf/open/floor/plating, /area/maintenance/solars/starboard/aft) "cjG" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE" - }, +/obj/structure/sign/warning/electricshock, /turf/closed/wall/r_wall, /area/maintenance/solars/starboard/aft) "cjH" = ( @@ -46795,11 +46553,7 @@ /turf/open/floor/plating, /area/maintenance/solars/starboard/aft) "clA" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = 32 }, /turf/open/floor/plating, @@ -47071,11 +46825,7 @@ /turf/open/floor/plating, /area/maintenance/solars/starboard/aft) "cmx" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = -32 }, /turf/open/floor/plating, @@ -47159,7 +46909,7 @@ }, /area/engine/engineering) "cmN" = ( -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = 32 }, /obj/structure/cable{ @@ -47206,7 +46956,7 @@ /obj/machinery/light/small{ dir = 8 }, -/obj/structure/sign/fire{ +/obj/structure/sign/warning/fire{ pixel_x = -32 }, /turf/open/floor/engine, @@ -47216,7 +46966,7 @@ dir = 1; on = 1 }, -/obj/structure/sign/fire{ +/obj/structure/sign/warning/fire{ pixel_x = 32 }, /obj/machinery/doorButtons/access_button{ @@ -47595,10 +47345,7 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE"; +/obj/structure/sign/warning/electricshock{ pixel_x = -32 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -47624,7 +47371,7 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = 32 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -47687,11 +47434,7 @@ /obj/machinery/atmospherics/components/unary/vent_pump/siphon{ dir = 1 }, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = -32 }, /turf/open/floor/engine/vacuum, @@ -48033,10 +47776,7 @@ /turf/open/floor/plasteel, /area/engine/engine_smes) "cpq" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE"; +/obj/structure/sign/warning/electricshock{ pixel_x = -32 }, /obj/machinery/computer/rdconsole/production{ @@ -48149,7 +47889,8 @@ id = "pod4"; name = "escape pod 4"; port_direction = 2; - preferred_direction = 4 + preferred_direction = 4; + timid = 0 }, /turf/open/floor/mineral/titanium/blue, /area/shuttle/pod_4) @@ -48412,7 +48153,7 @@ /turf/open/floor/plating, /area/maintenance/port/aft) "cqo" = ( -/obj/structure/sign/pods{ +/obj/structure/sign/warning/pods{ pixel_x = 32 }, /obj/effect/turf_decal/stripes/line{ @@ -48436,7 +48177,8 @@ dir = 8; id = "pod2"; name = "escape pod 2"; - port_direction = 2 + port_direction = 2; + timid = 0 }, /turf/open/floor/mineral/titanium/blue, /area/shuttle/pod_2) @@ -48450,7 +48192,7 @@ /turf/open/floor/plasteel, /area/hallway/secondary/entry) "cqs" = ( -/obj/structure/sign/fire, +/obj/structure/sign/warning/fire, /turf/closed/wall/r_wall, /area/maintenance/disposal/incinerator) "cqt" = ( @@ -48532,7 +48274,7 @@ /turf/open/floor/engine, /area/engine/engineering) "cqD" = ( -/obj/structure/sign/radiation, +/obj/structure/sign/warning/radiation, /turf/closed/wall/r_wall, /area/engine/supermatter) "cqE" = ( @@ -48643,11 +48385,7 @@ /turf/open/floor/plating, /area/engine/engineering) "cqT" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_x = 32 }, /turf/open/floor/plating, @@ -48744,11 +48482,7 @@ /turf/open/floor/plating, /area/engine/engineering) "crp" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE" - }, +/obj/structure/sign/warning/electricshock, /turf/closed/wall/r_wall, /area/engine/engineering) "crq" = ( @@ -48964,11 +48698,7 @@ /turf/open/floor/plating, /area/engine/engineering) "crX" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_x = 32 }, /obj/structure/closet/emcloset/anchored, @@ -49226,11 +48956,7 @@ /turf/open/floor/plating, /area/ai_monitored/turret_protected/aisat_interior) "csX" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = 32 }, /turf/open/floor/plating, @@ -49291,7 +49017,7 @@ /area/ai_monitored/turret_protected/aisat_interior) "cti" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_y = -32 }, /turf/open/floor/plating, @@ -49529,11 +49255,7 @@ }, /area/ai_monitored/turret_protected/aisat_interior) "ctR" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'RADIOACTIVE AREA'"; - icon_state = "radiation"; - name = "RADIOACTIVE AREA" - }, +/obj/structure/sign/warning/radiation/rad_area, /turf/closed/wall, /area/engine/engineering) "ctS" = ( @@ -50140,7 +49862,7 @@ /turf/closed/wall/r_wall, /area/ai_monitored/turret_protected/ai) "cvc" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = -32 }, /obj/machinery/porta_turret/ai{ @@ -50161,7 +49883,7 @@ /obj/machinery/porta_turret/ai{ dir = 4 }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = 32 }, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ @@ -50429,7 +50151,7 @@ /turf/open/space, /area/space/nearstation) "cvL" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = 32 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -50448,7 +50170,7 @@ /turf/open/floor/circuit, /area/ai_monitored/turret_protected/aisat/hallway) "cvN" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = -32 }, /obj/structure/cable{ @@ -50579,7 +50301,7 @@ /turf/open/floor/plasteel/dark, /area/ai_monitored/turret_protected/aisat/hallway) "cwe" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall/r_wall, /area/ai_monitored/turret_protected/ai) @@ -50917,18 +50639,6 @@ /turf/open/floor/plasteel, /area/ai_monitored/security/armory) "cxE" = ( -/obj/machinery/door/airlock/titanium, -/obj/docking_port/mobile{ - dir = 8; - dwidth = 2; - height = 13; - id = "ferry"; - name = "ferry shuttle"; - port_direction = 1; - preferred_direction = 4; - roundstart_move = "ferry_away"; - width = 5 - }, /obj/docking_port/stationary{ dir = 8; dwidth = 2; @@ -50938,8 +50648,8 @@ turf_type = /turf/open/space; width = 5 }, -/turf/open/floor/pod/light, -/area/shuttle/transport) +/turf/open/space/basic, +/area/space) "cxF" = ( /obj/machinery/door/airlock/titanium{ name = "Escape Pod Airlock" @@ -50948,7 +50658,8 @@ dir = 8; id = "pod1"; name = "escape pod 1"; - port_direction = 2 + port_direction = 2; + timid = 0 }, /turf/open/floor/mineral/titanium/blue, /area/shuttle/pod_1) @@ -51019,28 +50730,6 @@ /turf/open/floor/plating, /area/hallway/secondary/entry) "cyd" = ( -/obj/docking_port/mobile{ - callTime = 250; - dheight = 0; - dir = 2; - dwidth = 11; - height = 15; - id = "whiteship"; - launch_status = 0; - movement_force = list("KNOCKDOWN" = 0, "THROW" = 0); - name = "NT Recovery White-Ship"; - port_direction = 8; - preferred_direction = 4; - roundstart_move = "whiteship_away"; - width = 28 - }, -/obj/machinery/door/airlock/titanium{ - name = "recovery shuttle external airlock" - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, /obj/docking_port/stationary{ dir = 2; dwidth = 11; @@ -51049,26 +50738,8 @@ name = "SS13: Auxiliary Dock, Station-Port"; width = 35 }, -<<<<<<< HEAD -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"cye" = ( -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"cyf" = ( -/obj/structure/shuttle/engine/propulsion/left{ - dir = 8 - }, -/turf/open/floor/plating/airless, -/area/shuttle/abandoned) -======= /turf/open/space/basic, /area/space) ->>>>>>> e645319... Changes up the Construction Area on Box slightly. (#35009) "cyg" = ( /obj/machinery/door/airlock/command{ cyclelinkeddir = 1; @@ -51188,14 +50859,6 @@ /turf/open/floor/plasteel, /area/engine/engineering) "cyT" = ( -/obj/machinery/door/airlock/titanium{ - name = "Supply Shuttle Airlock"; - req_access_txt = "31" - }, -/obj/docking_port/mobile/supply{ - dwidth = 5; - width = 12 - }, /obj/docking_port/stationary{ dir = 8; dwidth = 5; @@ -51204,8 +50867,8 @@ name = "Cargo Bay"; width = 12 }, -/turf/open/floor/plating, -/area/shuttle/supply) +/turf/open/space/basic, +/area/space) "cyU" = ( /obj/structure/cable{ icon_state = "1-2" @@ -51687,7 +51350,7 @@ /turf/open/floor/plating, /area/maintenance/fore/secondary) "cAP" = ( -/obj/structure/sign/fire, +/obj/structure/sign/warning/fire, /turf/closed/wall/r_wall, /area/engine/supermatter) "cAQ" = ( @@ -53071,7 +52734,7 @@ /turf/open/floor/engine, /area/engine/engineering) "cFw" = ( -/obj/structure/sign/electricshock, +/obj/structure/sign/warning/electricshock, /turf/closed/wall/r_wall, /area/engine/supermatter) "cFy" = ( @@ -53770,20 +53433,17 @@ }, /area/science/robotics/lab) "cIg" = ( -/obj/structure/shuttle/engine/propulsion{ - dir = 4 - }, -/obj/docking_port/mobile/arrivals, /obj/docking_port/stationary{ dir = 8; dwidth = 3; height = 15; id = "arrivals_stationary"; name = "arrivals"; + roundstart_template = /datum/map_template/shuttle/arrival/box; width = 7 }, -/turf/open/floor/plating/airless, -/area/shuttle/arrival) +/turf/open/space/basic, +/area/space) "cIh" = ( /obj/machinery/door/airlock/external{ cyclelinkeddir = 1; @@ -54156,7 +53816,7 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = 32 }, /obj/machinery/camera{ @@ -54412,1085 +54072,11 @@ /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/quartermaster/miningdock) -<<<<<<< HEAD -"Qll" = ( -/obj/machinery/door/airlock/titanium{ - name = "recovery shuttle external airlock" - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"Qlm" = ( -/obj/structure/toilet{ - pixel_y = 9 - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/effect/decal/cleanable/greenglow{ - desc = "Looks like something's sprung a leak" - }, -/obj/machinery/light/small/built{ - dir = 8 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"Qln" = ( -/obj/structure/mirror{ - pixel_x = 28 - }, -/obj/structure/sink{ - dir = 4; - pixel_x = 11 - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"Qlo" = ( -/obj/structure/closet/wardrobe/mixed, -/obj/item/clothing/under/rank/centcom_officer{ - desc = "A badge on the arm indicates that it's meant to be worn by CentCom recovery teams. This one seems dusty and clearly hasn't been cleaned in some time."; - name = "\improper dusty old CentCom jumpsuit" - }, -/obj/item/clothing/under/rank/centcom_commander{ - desc = "A badge on the arm indicates that it's meant to be worn by CentCom recovery teams. This one seems dusty and clearly hasn't been cleaned in some time."; - name = "\improper dusty old CentCom jumpsuit" - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"Qlp" = ( -/obj/structure/table, -/obj/item/storage/pill_bottle/dice{ - pixel_y = 3 - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"Qlq" = ( -/obj/structure/table, -/obj/item/stack/sheet/metal/fifty, -/obj/item/stock_parts/cell/high{ - charge = 100; - maxcharge = 15000; - pixel_y = 2 - }, -/obj/effect/decal/cleanable/cobweb, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"Qlr" = ( -/obj/machinery/suit_storage_unit/standard_unit, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"Qlt" = ( -/obj/structure/tank_dispenser/oxygen{ - layer = 2.7; - pixel_x = -1; - pixel_y = 2 - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"Qlu" = ( -/obj/structure/sign/vacuum{ - pixel_x = -32 - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/machinery/light/small/built{ - dir = 8 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"Qlv" = ( -/obj/item/storage/box/lights/mixed, -/obj/item/cigbutt, -/obj/structure/closet/crate{ - icon_state = "crateopen"; - name = "spare equipment crate"; - opened = 1 - }, -/obj/item/tank/internals/oxygen/red, -/obj/item/tank/internals/air, -/obj/effect/spawner/lootdrop/maintenance{ - lootcount = 2; - name = "2maintenance loot spawner" - }, -/obj/item/clothing/mask/breath, -/obj/item/clothing/mask/breath, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, -/area/shuttle/abandoned) -"Qlw" = ( -/obj/structure/closet/crate{ - name = "emergency supplies crate" - }, -/obj/item/storage/toolbox/emergency, -/obj/item/storage/toolbox/emergency, -/obj/item/device/flashlight/flare{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/device/flashlight/flare{ - pixel_x = -6; - pixel_y = -2 - }, -/obj/item/crowbar, -/obj/item/wrench, -/obj/effect/spawner/lootdrop/maintenance, -/obj/item/extinguisher, -/obj/item/extinguisher, -/obj/effect/decal/cleanable/cobweb/cobweb2, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, -/area/shuttle/abandoned) -"Qlx" = ( -/obj/machinery/door/airlock/titanium{ - name = "bathroom" - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"Qly" = ( -/obj/effect/decal/cleanable/blood/old, -/obj/effect/decal/cleanable/blood/gibs/old, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/effect/decal/remains/human{ - desc = "They look like human remains, and have clearly been gnawed at." - }, -/obj/item/gun/energy/laser/retro, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"Qlz" = ( -/obj/structure/bed, -/obj/item/bedsheet/centcom, -/obj/effect/decal/remains/human, -/obj/effect/decal/cleanable/blood/old, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/machinery/light/small/built{ - dir = 4 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"QlA" = ( -/obj/structure/table, -/obj/item/storage/belt/utility, -/obj/item/storage/belt/utility, -/obj/item/device/radio/off, -/obj/item/device/radio/off, -/obj/item/device/radio/off, -/obj/item/device/radio/off, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/machinery/light/small/built{ - dir = 8 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"QlB" = ( -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/effect/decal/cleanable/oil, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"QlD" = ( -/obj/machinery/door/airlock/titanium{ - name = "E.V.A. equipment" - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"QlF" = ( -/obj/effect/decal/cleanable/blood/old, -/obj/effect/decal/cleanable/blood/gibs/old, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/effect/decal/remains/human{ - desc = "They look like human remains, and have clearly been gnawed at." - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"QlG" = ( -/obj/machinery/door/airlock/titanium{ - name = "cargo bay" - }, -/obj/effect/turf_decal/delivery{ - dir = 1 - }, -/turf/open/floor/plasteel{ - dir = 1 - }, -/area/shuttle/abandoned) -"QlH" = ( -/obj/effect/decal/cleanable/oil, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/effect/turf_decal/delivery{ - dir = 1 - }, -/turf/open/floor/plasteel{ - dir = 1 - }, -/area/shuttle/abandoned) -"QlI" = ( -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/effect/turf_decal/delivery{ - dir = 1 - }, -/turf/open/floor/plasteel{ - dir = 1 - }, -/area/shuttle/abandoned) -"QlK" = ( -/obj/effect/decal/cleanable/robot_debris/old, -/obj/effect/decal/cleanable/oil, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/effect/turf_decal/delivery{ - dir = 1 - }, -/turf/open/floor/plasteel{ - dir = 1 - }, -/area/shuttle/abandoned) -"QlL" = ( -/obj/machinery/shower{ - dir = 4 - }, -/obj/machinery/door/window/westright{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/item/soap/nanotrasen, -/obj/effect/decal/remains/human{ - desc = "They look like human remains, and have clearly been gnawed at." - }, -/obj/effect/decal/cleanable/blood/gibs/old, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"QlM" = ( -/obj/effect/decal/cleanable/blood/old, -/obj/structure/mirror{ - pixel_x = 28 - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/machinery/light/small/built{ - dir = 4 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"QlN" = ( -/obj/effect/decal/cleanable/blood/old, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/effect/decal/cleanable/blood/gibs/limb, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"QlO" = ( -/obj/structure/bed, -/obj/item/bedsheet/centcom, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"QlP" = ( -/obj/structure/rack, -/obj/item/storage/toolbox/electrical{ - pixel_x = 1; - pixel_y = 6 - }, -/obj/item/storage/toolbox/mechanical{ - pixel_x = -2; - pixel_y = -1 - }, -/obj/item/clothing/head/welding{ - pixel_x = -3; - pixel_y = 5 - }, -/obj/item/clothing/glasses/welding, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"QlR" = ( -/obj/machinery/portable_atmospherics/canister/oxygen, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"QlS" = ( -/obj/effect/decal/cleanable/oil, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, -/area/shuttle/abandoned) -"QlU" = ( -/obj/structure/closet/emcloset, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/effect/turf_decal/bot, -/obj/machinery/light/small, -/turf/open/floor/plasteel, -/area/shuttle/abandoned) -"QlV" = ( -/obj/structure/closet/firecloset/full, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, -/area/shuttle/abandoned) -"QlW" = ( -/obj/structure/sign/restroom, -/turf/closed/wall/mineral/titanium, -/area/shuttle/abandoned) -"QlX" = ( -/obj/machinery/door/airlock/titanium{ - name = "bathroom" - }, -/obj/effect/decal/cleanable/blood/old, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"QlY" = ( -/obj/machinery/door/airlock/titanium{ - name = "dormitory" - }, -/obj/effect/decal/cleanable/blood/old, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"QlZ" = ( -/obj/machinery/vending/boozeomat{ - icon_deny = "smartfridge"; - icon_state = "smartfridge"; - req_access_txt = "0"; - use_power = 0 - }, -/turf/closed/wall/mineral/titanium, -/area/shuttle/abandoned) -"Qmb" = ( -/obj/machinery/door/airlock/titanium{ - name = "recovery shuttle interior airlock" - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"Qmd" = ( -/obj/structure/sign/cargo, -/turf/closed/wall/mineral/titanium, -/area/shuttle/abandoned) -"Qme" = ( -/obj/machinery/door/airlock/titanium{ - name = "cargo bay" - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/effect/turf_decal/delivery{ - dir = 1 - }, -/turf/open/floor/plasteel{ - dir = 1 - }, -/area/shuttle/abandoned) -"Qmf" = ( -/obj/machinery/porta_turret/centcom_shuttle/weak{ - dir = 4 - }, -/turf/closed/wall/mineral/titanium, -/area/shuttle/abandoned) -"Qmg" = ( -/obj/machinery/vending/cigarette{ - use_power = 0 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"Qmi" = ( -/obj/effect/decal/cleanable/blood/old, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/effect/decal/cleanable/blood/gibs/limb, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"Qmj" = ( -/obj/effect/decal/cleanable/blood/gibs/old, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/machinery/light/built{ - dir = 1 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"Qmk" = ( -/obj/effect/decal/cleanable/blood/old, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"Qmn" = ( -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/machinery/light/built{ - dir = 1 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"Qmo" = ( -/obj/structure/table, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/item/folder/blue, -/obj/item/pen, -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"Qmp" = ( -/obj/structure/table, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/item/storage/photo_album, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"Qmq" = ( -/obj/structure/reagent_dispensers/fueltank, -/obj/structure/sign/vacuum{ - pixel_x = -32 - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/machinery/light/small/built{ - dir = 4 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"Qmr" = ( -/obj/machinery/vending/coffee, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"Qmt" = ( -/obj/structure/chair, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"Qmw" = ( -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"QmC" = ( -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/machinery/turretid{ - icon_state = "control_kill"; - lethal = 1; - locked = 0; - pixel_x = -28; - req_access = null - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"QmD" = ( -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/structure/chair/office/light{ - dir = 1 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"QmF" = ( -/obj/machinery/door/airlock/titanium{ - name = "recovery shuttle interior airlock" - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"QmG" = ( -/obj/structure/chair{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"QmH" = ( -/obj/structure/table, -/obj/item/reagent_containers/food/drinks/shaker, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"QmI" = ( -/obj/structure/table, -/obj/item/reagent_containers/food/condiment/peppermill{ - pixel_x = 3; - pixel_y = 4 - }, -/obj/item/reagent_containers/food/condiment/saltshaker{ - pixel_x = -3; - pixel_y = 4 - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"QmJ" = ( -/obj/structure/table, -/obj/item/storage/fancy/donut_box, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"QmK" = ( -/obj/structure/chair{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"QmL" = ( -/obj/machinery/door/airlock/titanium{ - name = "living quarters" - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"QmM" = ( -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/item/roller{ - pixel_x = -3; - pixel_y = 7 - }, -/obj/item/roller{ - pixel_x = 3; - pixel_y = 4 - }, -/obj/item/reagent_containers/spray/cleaner, -/obj/structure/table, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"QmN" = ( -/obj/item/clothing/suit/bio_suit, -/obj/item/clothing/suit/bio_suit, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/item/clothing/gloves/color/latex, -/obj/item/clothing/gloves/color/latex, -/obj/item/clothing/head/bio_hood, -/obj/item/clothing/head/bio_hood, -/obj/item/clothing/mask/breath, -/obj/item/clothing/mask/breath, -/obj/structure/table, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"QmO" = ( -/obj/effect/decal/cleanable/blood/gibs/old, -/obj/effect/decal/cleanable/blood/old, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/effect/decal/remains/human{ - desc = "They look like human remains, and have clearly been gnawed at." - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"QmP" = ( -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/item/clothing/gloves/color/black, -/obj/item/clothing/gloves/color/black, -/obj/item/clothing/suit/armor/vest, -/obj/item/clothing/suit/armor/vest, -/obj/structure/table, -/obj/item/clothing/head/helmet/swat/nanotrasen, -/obj/item/clothing/head/helmet/swat/nanotrasen, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"QmQ" = ( -/obj/item/storage/toolbox/emergency{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/storage/toolbox/emergency, -/obj/item/storage/toolbox/emergency{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/structure/table, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"QmR" = ( -/obj/machinery/door/airlock/titanium{ - name = "bridge" - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"QmS" = ( -/obj/effect/decal/cleanable/blood/old, -/obj/structure/chair/comfy/black{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"QmT" = ( -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/machinery/computer/shuttle/white_ship{ - dir = 8 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"QmU" = ( -/obj/structure/reagent_dispensers/watertank, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/structure/light_construct/small{ - dir = 4 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"QmV" = ( -/obj/machinery/vending/cola/random, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"Qnd" = ( -/obj/effect/decal/cleanable/blood/old, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/structure/chair/office/light, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"Qne" = ( -/obj/effect/decal/cleanable/blood/old, -/obj/effect/decal/cleanable/blood/gibs/old, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/item/clothing/head/centhat{ - desc = "There's a gouge through the top where something has clawed clean through it. Whoever was wearing it probably doesn't need a hat any more."; - name = "\improper damaged CentCom hat" - }, -/obj/effect/decal/remains/human{ - desc = "They look like human remains, and have clearly been gnawed at." - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"Qnf" = ( -/obj/item/phone{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/cigbutt/cigarbutt{ - pixel_x = 5; - pixel_y = -1 - }, -/obj/structure/table, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"Qng" = ( -/obj/machinery/vending/snack/random, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"Qnh" = ( -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/machinery/light/built{ - dir = 2 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"Qni" = ( -/obj/structure/sign/science{ - pixel_y = -32 - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"Qnj" = ( -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/machinery/light, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"Qnk" = ( -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/structure/table, -/obj/item/device/megaphone, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"Qnl" = ( -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/machinery/computer/camera_advanced/shuttle_docker/whiteship{ - station_lock_override = 1; - view_range = 15; - x_offset = -3; - y_offset = -7 - }, -/obj/machinery/light/built{ - dir = 2 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"Qnm" = ( -/obj/structure/table, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"Qnn" = ( -/obj/structure/table, -/obj/item/device/radio/off{ - pixel_y = 6 - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"Qno" = ( -/obj/structure/sign/botany, -/turf/closed/wall/mineral/titanium, -/area/shuttle/abandoned) -"Qnp" = ( -/obj/machinery/door/airlock/titanium{ - name = "hydroponics" - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"Qnq" = ( -/obj/machinery/door/airlock/titanium{ - name = "kitchen" - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"Qnr" = ( -/obj/machinery/door/airlock/titanium{ - name = "laboratory" - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"Qns" = ( -/obj/structure/sign/bluecross_2, -/turf/closed/wall/mineral/titanium, -/area/shuttle/abandoned) -"Qnt" = ( -/obj/item/storage/bag/plants/portaseeder, -/obj/structure/table, -/obj/item/reagent_containers/spray/plantbgone{ - pixel_x = 13; - pixel_y = 5 - }, -/obj/item/reagent_containers/glass/bottle/nutrient/ez, -/obj/item/reagent_containers/glass/bottle/nutrient/ez, -/obj/item/reagent_containers/glass/bottle/nutrient/ez, -/obj/item/reagent_containers/glass/bottle/nutrient/rh{ - pixel_x = -2; - pixel_y = 3 - }, -/obj/effect/decal/cleanable/cobweb, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"Qnu" = ( -/obj/machinery/biogenerator{ - idle_power_usage = 0; - use_power = 0 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"Qnv" = ( -/obj/machinery/vending/hydroseeds{ - use_power = 0 - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/machinery/light/small/built{ - dir = 1 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"Qnw" = ( -/obj/machinery/processor, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/machinery/light/small/built{ - dir = 1 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"Qnx" = ( -/obj/structure/kitchenspike, -/obj/effect/decal/cleanable/blood/gibs/old, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"Qny" = ( -/obj/structure/table, -/obj/machinery/microwave{ - pixel_x = -3; - pixel_y = 6 - }, -/obj/item/storage/box/donkpockets, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/effect/decal/cleanable/cobweb/cobweb2, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"Qnz" = ( -/obj/effect/decal/cleanable/oil, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"QnA" = ( -/obj/machinery/sleeper{ - dir = 4; - use_power = 0 - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"QnB" = ( -/obj/structure/closet/crate/freezer, -/obj/item/reagent_containers/blood/empty{ - pixel_x = -3; - pixel_y = -3 -======= "nxv" = ( /obj/machinery/power/apc{ - name = Construction Area APC; + name = "Construction Area APC"; + areastring = "/area/construction"; pixel_y = -24 ->>>>>>> e645319... Changes up the Construction Area on Box slightly. (#35009) }, /obj/structure/cable{ icon_state = "0-8" @@ -61556,11 +60142,11 @@ aaa aaa aaa aaa -cyc -cyc -Qll -cyc -cyc +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -61809,19 +60395,19 @@ aaa aaa aaa aaa -cyf -cym -cym -cym -cyR -Qmq -cyi -QmU -cyR -cym -cym -cym -cyF +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -62065,21 +60651,21 @@ aaa aaa aaa aaa -cyc -cyc -cyo -cyo -cyc -cyc -cyc -QmF -cyc -cyc -cyc -cyo -cyo -cyc -cyc +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -62322,21 +60908,21 @@ aaa aaa aaa aaa -cyc -cyc -cyc -cyc -cyc -Qmg -Qmr -cyi -QmV -Qng -cyc -cyc -cyc -cyc -cyc +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -62579,21 +61165,21 @@ aaa aaa aaa aaa -cyc -Qlm -cyc -QlL -QlW -cyI -cyI -cyI -cyI -cyI -cyc -Qnt -QnD -QnP -cyc +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -62836,21 +61422,21 @@ aaa aaa aaa aaa -cyR -Qln -Qlx -QlM -QlX -Qmi -cye -QmG -Qmw -cyI -Qno -Qnu -cyi -QnP -cyR +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -63093,21 +61679,21 @@ aaa aaa aaa aaa -cyc -cyc -cyc -cyc -cyc -Qmj -Qmt -QmH -cMc -cyI -Qnp -cyi -cyI -QnR -cyR +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -63350,21 +61936,21 @@ aaa aaa aaa aae -cyR -Qlo -Qly -QlN -QlY -Qmk -Qmt -QmI -cMc -Qnh -cyc -Qnv -QnE -QnP -cyc +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -63607,21 +62193,21 @@ aaa aaa aaa aaa -cyc -Qlp -Qlz -QlO -QlZ -cyI -Qmt -QmJ -cMc -cyI -cyc -cyc -QnF -cyc -cyc +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -63864,21 +62450,21 @@ aaa aaa aaa aaa -cyc -cyc -cyc -cyc -cyc -cyI -Qmw -QmK -cye -cyI -Qnq -cyI -QnG -QnT -cyc +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -64121,21 +62707,21 @@ aaa aaa aaa aaa -cyc -Qlq -QlA -cyn -cyc -cLY -cyI -cyi -cyI -cyI -cyc -Qnw -cyi -czr -cyR +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -64355,11 +62941,11 @@ ckq aaa aaa aaa -aCS -cMB -aCV -aCV -aCS +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -64369,7 +62955,7 @@ cwU aaa aaa aaa -cxt +aaa aaa aaa aaf @@ -64378,21 +62964,21 @@ aaa aaa aaa aaf -cyR -Qlr -QlB -QlP -cyc -cyc -cyc -QmL -cyc -cyc -cyc -Qnx -QnH -QnU -cyR +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -64612,11 +63198,11 @@ asE arB aaa aaa -aCS -aFC -aEr -aIG -aCS +aaa +aaa +aaa +aaa +aaa aaa aaa arB @@ -64625,9 +63211,9 @@ cyb asE arB aaa -cxt -cxD -cxt +aaa +aaa +aaa aaa aaf aaa @@ -64635,21 +63221,21 @@ aaa aaa aaf aaf -cyR -Qlr -cyi -cyI -QlD -cyi -cyI -cyI -cyI -cyI -cyc -Qny -QnI -QnV -cyc +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -64869,11 +63455,11 @@ cwT aAC aaa aaa -aCS -cLJ -aEr -cLK -aCS +aaa +aaa +aaa +aaa +aaa aaa aaa aAC @@ -64882,9 +63468,9 @@ auP cxY arB aaa -cxy -cxC -cCy +aaa +aaa +aaa aaa aaf aaa @@ -64892,21 +63478,21 @@ aaf aaa aAC aaf -cyc -Qlt -cyI -QlR -cyc -cyI -cye -QmM -cye -cyI -cyc -cyc -cyc -cyc -cyc +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -65125,13 +63711,13 @@ cyb asE arB aaa -aCS -aCS -aCS -aHs -aCS -aCS -aCS +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa arB asE @@ -65139,9 +63725,9 @@ cyb avP arB aaa -cxu -cLQ -cxu +aaa +aaa +aaa aaa arB awW @@ -65149,21 +63735,21 @@ awW asE arB aaf -cyc -cyc -QlD -cyc -cyc -Qmn -Qmw -QmN -Qmw -Qni -cyc -Qnz -QnJ -QnW -cyc +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -65382,45 +63968,45 @@ ayk awW aAD awW -aCS -aEo -aEr -aEr -aEr -aKg -aCS +aaa +aaa +aaa +aaa +aaa +aaa +aaa awW awW awW aQG aRX arB -cxu -cxu -cCw -cxu -cxu +aaa +aaa +aaa +aaa +aaa arB awY ayk awW aAD awW -Qll -Qlu -cyI -cyi -Qmb -cyI -Qmk -QmO -cyI -cyI -Qnr -cyI -QnK -QnX -cyR +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -65639,24 +64225,24 @@ ayl azy auP cIh -aCU -aEr -aFE -aFE -aFE -aEr -aCU +aaa +aaa +aaa +aaa +aaa +aaa +aaa azy auP cIh ayl aRY awW -cxw -cxB -cxC -cxI -cxw +aaa +aaa +aaa +aaa +aaa awW awZ ayl @@ -65664,20 +64250,20 @@ beK auP cyt cyd -cyi -QlF -cyx -Qmb -cyi -cyI -cMa -cyi -cyI -cyc -cye -czm -QnY -cyc +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -65896,45 +64482,45 @@ ayk awW awW awW -aCS -aEq -aEr -aEr -aEr -cLL -aCS +aaa +aaa +aaa +aaa +aaa +aaa +aaa awW awW awW awV aRY awW -cxu -cxB -cxC -cxI -cxu +aaa +aaa +aaa +aaa +aaa awW awZ ayk awW awW awW -cyc -cyc -QlG -cyc -cyc -cyI -cye -QmP -cye -Qnj -cyc -cyc -cyc -cyc -cyc +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -66153,45 +64739,45 @@ cqr azz aAF awW -aCV -aEt -aFE -aFE -aFE -aEr -aCV +aaa +aaa +aaa +aaa +aaa +aaa +aaa awW aOf azz aPu aRY awW -cxu -cLP -cxC -cxC -cxu +aaa +aaa +aaa +aaa +aaa awW awZ aym azz aAF awW -cyc -cyk -QlH -QlS -Qmd -cyI -cye -QmQ -Qmw -cyI -Qns -QnA -QnL -QnZ -cyc +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -66410,45 +64996,45 @@ aIK ayl aAE awW -aCV -aEs -aEr -aEr -aEr -aEr -aCV +aaa +aaa +aaa +aaa +aaa +aaa +aaa awW aOe ayl ayl aRY awW -cCu -cxC -cCx -cxC -cCz +aaa +aaa +aaa +aaa +aaa awW awZ ayl ayl aAE awW -cyR -cyj -QlI -QlI -Qme -cyI -cyI -cyi -cyI -cyI -cMf -cyi -QnM -Qoa -cyR +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -66667,45 +65253,45 @@ aIK ayl aAH awW -aCV -aEv -aFE -aFE -aFE -aEr -aCV +aaa +aaa +aaa +aaa +aaa +aaa +aaa awW aOh ayl ayl aRY awW -cxu -cxC -cxC -cLR -cxu +aaa +aaa +aaa +aaa +aaa awW awZ ayl ayl bgi awW -cyR -Qlv -QlI -QlU -cyc -cyc -cyc -QmR -cyc -cyc -cyc -QnB -QnN -Qob -cyR +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -66924,45 +65510,45 @@ cry azA aAG awW -aCV -aEu -aEr -aEr -aEr -aEr -aCV +aaa +aaa +aaa +aaa +aaa +aaa +aaa awW aOg azA aQH aRY awW -cxu -cxB -cxC -cxI -cxu +aaa +aaa +aaa +aaa +aaa awW awZ ayn azA bgh awW -cyc -Qlw -QlK -QlV -cyc -cyw -QmC -cyI -cye -Qnk -cyc -QnC -QnO -Qoc -cyc +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -67181,45 +65767,45 @@ crz awW awW awW -aCS -aEw -aFE -aFE -aFE -aKh -aCS +aaa +aaa +aaa +aaa +aaa +aaa +aaa awW awW awW awV aRY awW -cxw -cxB -cxC -cxI -cxw +aaa +aaa +aaa +aaa +aaa awW awZ ayk awW awW awW -cyc -cyc -cyR -cyc -cyc -Qmo -QmD -cyI -Qnd -Qnl -cyc -cyc -cyR -cyc -cyc +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -67438,24 +66024,24 @@ aIK azy auP cIh -aCU -aEr -aEr -aEr -aEr -aEr -aCU +aaa +aaa +aaa +aaa +aaa +aaa +aaa azy auP cIh ayl aRY awW -cxu -cxw +aaa +aaa cxE -cxw -cxu +aaa +aaa awW awZ ayl @@ -67466,13 +66052,13 @@ aaa aaa aaa aaa -cyR -Qmp -cyI -QmS -Qne -Qnm -cyR +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -67695,13 +66281,13 @@ ayp awW aAD awW -aCS -aEy -aEy -aEy -aEy -aEy -aCS +aaa +aaa +aaa +aaa +aaa +aaa +aaa awW awW awW @@ -67723,13 +66309,13 @@ aaa aaa aaa aaa -cyR -cLZ -cyO -QmT -Qnf -Qnn -cyR +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -67952,13 +66538,13 @@ ayo azB awW aaa -aCS -aEx -aFF +aaa +aaa +aaa cIg -aFF -aKi -aCS +aaa +aaa +aaa aaa awW aPt @@ -67980,13 +66566,13 @@ aaa aaa aaa aaa -Qmf -cyR -cyR -cyR -cyR -cyR -Qmf +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -71833,17 +70419,17 @@ bea bfq bji bkF -cys -cys -cys -cys -cys -cys -cys -cys -cys -cys -cys +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -72090,18 +70676,18 @@ bdZ bhO bjh bkE -cys -cyB -cyB -cyB -cyB -cMb -cyB -cyB -cyB -czf -cys -czs +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -72347,18 +70933,18 @@ aXQ bhQ bjj bkF -cys -cyB -cyB -cyB -cyB -cyB -cyB -cyB -cyB -cyB -czp -czt +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -72604,18 +71190,18 @@ aZt bhQ bjj bkF -cys -cLX -cyB -cyB -cyB -cyB -cyB -cyB -cyB -cyB -czp -czt +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -72861,18 +71447,18 @@ bgr bhQ bjj bkF -cys -cyB -cyB -cyB -cyB -cyB -cyB -cyB -cyB -cyB -czp -czt +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -73118,18 +71704,18 @@ bfa bhQ bjk bkE -cys -cyB -cyB -cyB -cyB -cyS -cyB -cyB -cyB -czf -cys -czu +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -73375,17 +71961,17 @@ bgs bhQ bjk bkF -cys -cys -cys -cyN -cyQ -cys +aaa +aaa +aaa +aaa +aaa +aaa cyT -cyZ -cys -cys -cys +aaa +aaa +aaa +aaa aaa aaa aaa @@ -75445,13 +74031,13 @@ aaa aaa aaa aaa -cTg -cTg -cTi -cTg -cTi -cTg -cTg +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa bCq bPS @@ -75702,13 +74288,13 @@ aaa aaa aaa aaa -cTg -bGg -cTo -cMl -bHx -cTx -cTg +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa bLv bPR @@ -75959,13 +74545,13 @@ bxx bxu bxu bDi -cTi -bGh -bHx -cTo -bHx -bLt -bMF +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa bCq bPS @@ -76216,13 +74802,13 @@ bzP bAS bxu aaa -cTg -bGg -cTo -cTo -bHx -bLs -cTg +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa bLv bPT @@ -76473,13 +75059,13 @@ bzR byd bxx aaa -cTg -cTg -cTi +aaa +aaa +aaa bJc -cTi -cTg -cTg +aaa +aaa +aaa aaa bCq bPV @@ -77954,15 +76540,15 @@ aaa aaa aaa aaa -akD -akD -ajX -akD -akD -ajX -akD -akD -akD +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -78211,15 +76797,15 @@ aaa aaa aaa aaa -ajX -akC -alj -alY -amI -amI -anM -aop -aoY +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -78468,15 +77054,15 @@ aaa aaa aaa aaa -ajX -akF -alm -akD -cLI -amI -amI -aop -aoY +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -78725,15 +77311,15 @@ aaa aaa aaa aaa -ajX -akE -all -alZ -amJ -anr -amI -aop -aoY +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa arP @@ -78982,15 +77568,15 @@ aaa aaa aaa aaa -akD -akD -alo -akD -akD -akD +aaa +aaa +aaa +aaa +aaa +aaa anO -akD -akD +aaa +aaa aaa aaa arP @@ -107279,23 +105865,23 @@ aaa aaa aaa aaa -cwI -cwI -cwI -cxg -cwI +aaa +aaa +aaa +aaa +aaa afa -cwI -crx -crx -crx -cwI -cxK -cwI -cxK -cwI -cwI -cwI +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -107533,27 +106119,27 @@ aaa aaa aaa aaa -cwI -cwI -cwI -cwI -cwY -cxd -cxe -cwI -cLO -anq -anq -anq -anq -anq -cLS -cwI -cxQ -cLU -cxU -cwI -cwI +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -107789,28 +106375,28 @@ aae aaa aaa aaa -cwI -crO -cwK -cwP -cwI -cwY -cxe -cxh -cwI -cxo -cwL -cwL -cwL -cwL -cwL -cxL -cwI -cxQ -cxQ -cxU -cxX -cxZ +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -108046,28 +106632,28 @@ aaa aaa aaa aaa -crx -crN -cwJ -cwO -cwI -cwY -cxe -cxh -cwI -cwL -cxq -cxq -cxq -cxq -cxq -cwL -cxM -cxQ -cxQ -cxV -cxX -cxZ +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -108303,28 +106889,28 @@ aaa aaa aaa aaa -crx -cwF -cwL -cwR -cwI -crx -cxf -crx -cxm -cwL -cxr -cxr -cxr -cxr -cxr -cwL -cwI -cxR -cLV -cxV -cxX -cxZ +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -108560,28 +107146,28 @@ aaa aaa aaa aaa -crx -crQ -cwL -cwQ -cwI -cwZ -cwL -cxi -cLN -cwL -cwL -cwL -cwL -cwL -cwL -cLT -cwW -cwI -cwI -cwI -cxX -cxZ +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -108817,28 +107403,28 @@ aaa aaa aaa aaa -crx -cwF -cwL -cwL -cwX -cwL -cwL -anq -cxj -cwL -cxq -cxq -cxq -cxq -cxq -cwL -crx -cxc -cLW -cxc -cxX -cxZ +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -109074,28 +107660,28 @@ aaa aaa aaa aaa -crx -cwG -amB -amB -cwW -cxa -cwL -cxj -cxj -cwL -cxr -cxr -cxr -cxr -cxr -cwL -cxO -cxa -cxa -cxa -cxX -cxZ +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -109331,28 +107917,28 @@ aaa aaa aaa aaa -cwI -crO -cwN -cwS -cwI -cxc -cwL -cwL -cwL -cwL -cwL -cwL -cwL -cwL -cwL -cwL -crx -cxa -cxa -cxa -cxX -cxZ +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -109589,27 +108175,27 @@ aaa aaa aaa aaa -cwI -cwI -cwI -cwI -cxb -cLM -cxa -cxa -cxp -cxs -cxs -cxs -cxs -cxs -cxp -crx -cxS -cxT -cxS -cwI -cwI +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -109849,23 +108435,23 @@ aaa aaa aaa aaa -cwI -crx -cwI -crx -cwI -cwI -cwI -crx -crx -crx -cwI -cwI -cwI -crx -cwI -crx -cwI +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index 26a99bb158..9c25172b43 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -176,7 +176,7 @@ /turf/open/floor/plasteel/neutral, /area/shuttle/abandoned) "aay" = ( -/obj/structure/sign/vacuum, +/obj/structure/sign/warning/vacuum, /turf/closed/wall/mineral/titanium/nodiagonal, /area/shuttle/abandoned) "aaz" = ( @@ -616,7 +616,8 @@ /obj/docking_port/mobile/pod{ id = "pod1"; name = "escape pod 1"; - port_direction = 2 + port_direction = 2; + timid = 0 }, /obj/effect/turf_decal/stripes/end, /turf/open/floor/plasteel/white, @@ -632,7 +633,8 @@ /obj/docking_port/mobile/pod{ id = "pod2"; name = "escape pod 2"; - port_direction = 2 + port_direction = 2; + timid = 0 }, /obj/effect/turf_decal/stripes/end, /turf/open/floor/plasteel/white, @@ -903,7 +905,7 @@ dir = 8 }, /obj/structure/closet/emcloset/anchored, -/obj/structure/sign/vacuum{ +/obj/structure/sign/warning/vacuum{ pixel_x = -32 }, /obj/effect/turf_decal/bot, @@ -975,7 +977,7 @@ /turf/open/floor/plasteel, /area/hallway/secondary/entry) "aca" = ( -/obj/structure/sign/pods{ +/obj/structure/sign/warning/pods{ pixel_x = -32 }, /obj/effect/turf_decal/stripes/line{ @@ -1048,12 +1050,8 @@ /turf/open/floor/plasteel/neutral, /area/shuttle/abandoned) "aci" = ( -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/plasteel/neutral, -/area/shuttle/abandoned) +/turf/open/space/basic, +/area/space) "acj" = ( /obj/effect/decal/cleanable/dirt{ desc = "A thin layer of dust coating the floor."; @@ -1123,7 +1121,7 @@ }, /area/construction/mining/aux_base) "acs" = ( -/obj/structure/sign/electricshock, +/obj/structure/sign/warning/electricshock, /turf/closed/wall/r_wall, /area/maintenance/solars/starboard/fore) "act" = ( @@ -1256,23 +1254,17 @@ /turf/open/floor/plating/airless, /area/shuttle/arrival) "acF" = ( -/obj/docking_port/mobile/arrivals{ - dir = 2; - dwidth = 4; - height = 17; - name = "delta arrivals shuttle"; - width = 9 - }, /obj/docking_port/stationary{ dir = 2; dwidth = 4; height = 17; id = "arrivals_stationary"; name = "delta arrivals"; - width = 9 + width = 9; + roundstart_template = /datum/map_template/shuttle/arrival/delta }, -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/arrival) +/turf/open/space/basic, +/area/space) "acG" = ( /obj/structure/table/reinforced, /obj/item/storage/belt/utility, @@ -1699,7 +1691,7 @@ /area/hallway/secondary/entry) "ads" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/vacuum, +/obj/structure/sign/warning/vacuum, /turf/open/floor/plating, /area/hallway/secondary/entry) "adt" = ( @@ -1710,8 +1702,8 @@ /turf/open/floor/plasteel, /area/hallway/secondary/entry) "adu" = ( -/turf/closed/wall/mineral/titanium/nodiagonal, -/area/shuttle/arrival) +/turf/open/space/basic, +/area/space) "adv" = ( /turf/closed/wall/mineral/titanium, /area/shuttle/arrival) @@ -1823,7 +1815,7 @@ }, /area/shuttle/abandoned) "adH" = ( -/obj/structure/sign/vacuum, +/obj/structure/sign/warning/vacuum, /turf/closed/wall/mineral/titanium, /area/shuttle/abandoned) "adI" = ( @@ -2244,8 +2236,8 @@ /turf/open/floor/plating/airless, /area/shuttle/transport) "aeu" = ( -/turf/open/floor/pod/light, -/area/shuttle/transport) +/turf/open/space/basic, +/area/space) "aev" = ( /obj/structure/shuttle/engine/heater{ dir = 1 @@ -2394,7 +2386,7 @@ /turf/open/floor/plasteel/whiteblue/side, /area/shuttle/abandoned) "aeL" = ( -/obj/structure/sign/bluecross_2, +/obj/structure/sign/departments/medbay/alt, /turf/closed/wall/mineral/titanium, /area/shuttle/abandoned) "aeM" = ( @@ -2407,7 +2399,7 @@ }, /area/shuttle/abandoned) "aeN" = ( -/obj/structure/sign/engineering, +/obj/structure/sign/departments/engineering, /turf/closed/wall/mineral/titanium, /area/shuttle/abandoned) "aeO" = ( @@ -3089,7 +3081,6 @@ /obj/structure/cable/white{ icon_state = "2-8" }, -/obj/effect/landmark/lightsout, /obj/machinery/holopad, /obj/structure/cable/white{ icon_state = "1-2" @@ -3134,7 +3125,8 @@ dir = 2; dwidth = 4; height = 9; - width = 9 + width = 9; + timid = 0 }, /obj/machinery/bluespace_beacon, /obj/docking_port/mobile/auxillary_base, @@ -3180,7 +3172,7 @@ /turf/open/floor/plasteel/whitepurple/corner, /area/shuttle/abandoned) "agx" = ( -/obj/structure/sign/science, +/obj/structure/sign/departments/science, /turf/closed/wall/mineral/titanium, /area/shuttle/abandoned) "agy" = ( @@ -3360,27 +3352,6 @@ /turf/open/floor/plating, /area/shuttle/abandoned) "agS" = ( -/obj/machinery/door/airlock/titanium{ - cyclelinkeddir = 8; - name = "External Airlock" - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/docking_port/mobile{ - dheight = 0; - dir = 8; - dwidth = 11; - height = 15; - id = "whiteship"; - launch_status = 0; - name = "White-Ship"; - port_direction = 8; - preferred_direction = 8; - roundstart_move = "whiteship_away"; - width = 32 - }, /obj/docking_port/stationary{ dir = 8; dwidth = 11; @@ -3389,8 +3360,8 @@ name = "SS13: Auxiliary Dock, Station-Fore"; width = 32 }, -/turf/open/floor/plasteel/neutral, -/area/shuttle/abandoned) +/turf/open/space/basic, +/area/space) "agT" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/effect/turf_decal/stripes/line{ @@ -3992,17 +3963,6 @@ }, /area/shuttle/abandoned) "aid" = ( -/obj/docking_port/mobile{ - dir = 1; - dwidth = 2; - height = 13; - id = "ferry"; - name = "ferry shuttle"; - port_direction = 1; - preferred_direction = 4; - roundstart_move = "ferry_away"; - width = 5 - }, /obj/docking_port/stationary{ dir = 1; dwidth = 2; @@ -4012,9 +3972,8 @@ turf_type = /turf/open/space; width = 5 }, -/obj/machinery/door/airlock/titanium, -/turf/open/floor/pod/dark, -/area/shuttle/transport) +/turf/open/space/basic, +/area/space) "aie" = ( /obj/structure/frame/computer{ dir = 1 @@ -4458,7 +4417,7 @@ /turf/open/floor/plasteel, /area/hallway/secondary/entry) "ajh" = ( -/obj/structure/sign/pods, +/obj/structure/sign/warning/pods, /turf/closed/wall, /area/hallway/secondary/entry) "aji" = ( @@ -4737,7 +4696,7 @@ /turf/open/floor/plasteel, /area/maintenance/starboard/fore) "ajP" = ( -/obj/structure/sign/nosmoking_2, +/obj/structure/sign/warning/nosmoking, /turf/closed/wall, /area/maintenance/starboard/fore) "ajQ" = ( @@ -4866,13 +4825,6 @@ }, /turf/open/floor/plasteel/neutral, /area/hallway/secondary/entry) -"akh" = ( -/obj/effect/landmark/lightsout, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/neutral, -/area/hallway/secondary/entry) "aki" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 1 @@ -7050,7 +7002,7 @@ /obj/structure/disposalpipe/segment{ dir = 10 }, -/obj/structure/sign/vacuum{ +/obj/structure/sign/warning/vacuum{ pixel_y = 32 }, /obj/effect/turf_decal/stripes/line{ @@ -7329,7 +7281,7 @@ "aqi" = ( /obj/structure/table/wood, /obj/item/device/flashlight/lamp, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = 32 }, /turf/open/floor/wood, @@ -7885,7 +7837,7 @@ /turf/open/floor/circuit/green, /area/engine/atmospherics_engine) "arl" = ( -/obj/structure/sign/electricshock, +/obj/structure/sign/warning/electricshock, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 6 }, @@ -7934,7 +7886,7 @@ /turf/open/floor/plasteel, /area/engine/atmospherics_engine) "arp" = ( -/obj/structure/sign/electricshock, +/obj/structure/sign/warning/electricshock, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -9867,7 +9819,7 @@ /turf/open/floor/plasteel, /area/engine/atmospherics_engine) "ava" = ( -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_y = -32 }, /obj/machinery/atmospherics/pipe/simple/cyan/visible{ @@ -9892,7 +9844,7 @@ }, /area/engine/atmospherics_engine) "avd" = ( -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = -32 }, /obj/effect/turf_decal/stripes/line{ @@ -10604,7 +10556,7 @@ /area/janitor) "awG" = ( /obj/structure/reagent_dispensers/watertank, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = 32 }, /obj/item/reagent_containers/glass/bucket, @@ -11016,7 +10968,7 @@ /area/engine/atmospherics_engine) "axG" = ( /obj/item/twohanded/required/kirbyplants/random, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = 32 }, /obj/structure/cable{ @@ -11078,7 +11030,7 @@ /area/maintenance/port/fore) "axQ" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = -32 }, /turf/open/floor/plating, @@ -11556,7 +11508,7 @@ /area/engine/atmospherics_engine) "ayP" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = 32 }, /obj/machinery/camera{ @@ -11579,7 +11531,7 @@ }, /area/engine/atmospherics_engine) "ayR" = ( -/obj/structure/sign/radiation, +/obj/structure/sign/warning/radiation, /turf/closed/wall/r_wall, /area/engine/atmospherics_engine) "ayS" = ( @@ -11644,7 +11596,7 @@ pixel_y = -3 }, /obj/item/lipstick/random, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = -32 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -11993,7 +11945,7 @@ /turf/open/space, /area/space/nearstation) "azO" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = -32 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -12412,7 +12364,7 @@ icon_state = "0-8" }, /obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/vacuum, +/obj/structure/sign/warning/vacuum, /turf/open/floor/plating, /area/quartermaster/storage) "aAK" = ( @@ -12433,9 +12385,8 @@ /turf/open/floor/plasteel, /area/shuttle/supply) "aAM" = ( -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, -/area/shuttle/supply) +/turf/open/space/basic, +/area/space) "aAN" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/bot, @@ -12596,7 +12547,7 @@ /turf/open/floor/plasteel/caution, /area/engine/atmospherics_engine) "aBf" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall/r_wall, /area/engine/atmospherics_engine) "aBg" = ( @@ -13118,7 +13069,7 @@ /turf/open/floor/plasteel, /area/engine/atmospherics_engine) "aCl" = ( -/obj/structure/sign/radiation, +/obj/structure/sign/warning/radiation, /turf/closed/wall/r_wall, /area/engine/supermatter) "aCm" = ( @@ -13605,13 +13556,16 @@ /turf/open/floor/plasteel, /area/quartermaster/storage) "aDi" = ( -/obj/machinery/door/airlock/shuttle{ - name = "Supply Shuttle Airlock"; - req_access_txt = "31" +/obj/docking_port/stationary{ + dir = 4; + dwidth = 4; + height = 7; + id = "supply_home"; + name = "Cargo Bay"; + width = 12 }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/shuttle/supply) +/turf/open/space/basic, +/area/space) "aDj" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -13710,7 +13664,7 @@ pixel_x = -12; pixel_y = 2 }, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = -32 }, /obj/effect/turf_decal/bot, @@ -13729,7 +13683,7 @@ dir = 4; pixel_x = 11 }, -/obj/structure/sign/botany{ +/obj/structure/sign/departments/botany{ pixel_x = 32 }, /obj/effect/turf_decal/bot, @@ -14064,7 +14018,7 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/structure/sign/fire{ +/obj/structure/sign/warning/fire{ pixel_x = 32; pixel_y = 32 }, @@ -14552,22 +14506,6 @@ }, /turf/open/floor/plasteel, /area/quartermaster/storage) -"aFl" = ( -/obj/docking_port/mobile/supply{ - dwidth = 5; - roundstart_move = "supply_away"; - width = 12 - }, -/obj/docking_port/stationary{ - dir = 8; - dwidth = 5; - height = 7; - id = "supply_home"; - name = "Cargo Bay"; - width = 12 - }, -/turf/closed/wall/mineral/titanium, -/area/shuttle/supply) "aFm" = ( /turf/closed/wall/r_wall, /area/security/prison) @@ -14604,7 +14542,7 @@ /obj/structure/extinguisher_cabinet{ pixel_x = -26 }, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = -32 }, /obj/effect/turf_decal/bot, @@ -15321,7 +15259,7 @@ dir = 8 }, /obj/item/seeds/carrot, -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_y = 32 }, /turf/open/floor/plasteel/red/corner{ @@ -15381,7 +15319,7 @@ pixel_x = 3; pixel_y = 3 }, -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_y = 32 }, /obj/effect/decal/cleanable/cobweb/cobweb2, @@ -15432,7 +15370,7 @@ /area/maintenance/solars/port/fore) "aGP" = ( /obj/machinery/disposal/bin, -/obj/structure/sign/deathsposal{ +/obj/structure/sign/warning/deathsposal{ pixel_y = 32 }, /obj/structure/disposalpipe/trunk{ @@ -15449,7 +15387,7 @@ /area/maintenance/disposal/incinerator) "aGR" = ( /obj/machinery/atmospherics/components/unary/tank/toxins, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = 32 }, /obj/effect/decal/cleanable/dirt, @@ -15498,7 +15436,7 @@ /obj/machinery/power/smes{ charge = 1e+006 }, -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_y = 32 }, /obj/structure/cable/white{ @@ -15620,7 +15558,7 @@ /obj/structure/cable/white{ icon_state = "4-8" }, -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_y = -32 }, /obj/machinery/light, @@ -15657,7 +15595,7 @@ /turf/open/floor/plasteel, /area/engine/atmospherics_engine) "aHk" = ( -/obj/structure/sign/fire, +/obj/structure/sign/warning/fire, /turf/closed/wall/r_wall, /area/engine/atmospherics_engine) "aHl" = ( @@ -16342,7 +16280,7 @@ /turf/open/floor/plasteel, /area/engine/atmospherics_engine) "aIA" = ( -/obj/structure/sign/biohazard, +/obj/structure/sign/warning/biohazard, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall/r_wall, /area/engine/atmospherics_engine) @@ -16366,7 +16304,7 @@ /turf/open/floor/plasteel, /area/engine/atmospherics_engine) "aIC" = ( -/obj/structure/sign/radiation, +/obj/structure/sign/warning/radiation, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/closed/wall/r_wall, /area/engine/atmospherics_engine) @@ -16508,10 +16446,6 @@ icon_state = "wood-broken6" }, /area/hallway/secondary/service) -"aIR" = ( -/obj/structure/closet/secure_closet/personal/cabinet, -/turf/open/floor/wood, -/area/hallway/secondary/service) "aIS" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 8 @@ -16615,7 +16549,6 @@ }, /area/hallway/primary/fore) "aJe" = ( -/obj/effect/landmark/lightsout, /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 8 }, @@ -16848,7 +16781,7 @@ /turf/open/floor/plating, /area/maintenance/solars/port/fore) "aJH" = ( -/obj/structure/sign/electricshock, +/obj/structure/sign/warning/electricshock, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/closed/wall/r_wall, /area/maintenance/solars/port/fore) @@ -17300,7 +17233,6 @@ }, /area/quartermaster/sorting) "aKG" = ( -/obj/effect/landmark/lightsout, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -17579,7 +17511,7 @@ /turf/open/floor/plasteel, /area/maintenance/disposal/incinerator) "aLn" = ( -/obj/structure/sign/vacuum{ +/obj/structure/sign/warning/vacuum{ pixel_x = -32 }, /obj/machinery/light/small{ @@ -17701,7 +17633,7 @@ /turf/open/floor/circuit/green, /area/engine/atmospherics_engine) "aLx" = ( -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = 32 }, /obj/machinery/power/smes{ @@ -17775,13 +17707,6 @@ }, /turf/open/floor/wood, /area/hallway/secondary/service) -"aLG" = ( -/obj/item/twohanded/required/kirbyplants/random, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/wood, -/area/hallway/secondary/service) "aLH" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 4 @@ -17978,7 +17903,7 @@ /obj/structure/table, /obj/item/storage/crayons, /obj/item/storage/crayons, -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_y = 32 }, /obj/effect/decal/cleanable/cobweb, @@ -18084,7 +18009,7 @@ icon_state = "4-8" }, /obj/item/toy/figure/syndie, -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_y = 32 }, /turf/open/floor/plasteel/red/corner{ @@ -18128,7 +18053,7 @@ /obj/machinery/light/small{ dir = 8 }, -/obj/structure/sign/vacuum{ +/obj/structure/sign/warning/vacuum{ pixel_x = -32 }, /turf/open/floor/plasteel/vault{ @@ -18155,7 +18080,7 @@ }, /area/security/execution/education) "aMt" = ( -/obj/structure/sign/fire, +/obj/structure/sign/warning/fire, /turf/closed/wall/r_wall, /area/maintenance/disposal/incinerator) "aMu" = ( @@ -18280,7 +18205,7 @@ /turf/open/floor/plasteel, /area/engine/atmos) "aMI" = ( -/obj/structure/sign/radiation, +/obj/structure/sign/warning/radiation, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall/r_wall, /area/engine/atmos) @@ -18303,12 +18228,12 @@ /turf/open/floor/plasteel, /area/engine/atmos) "aMK" = ( -/obj/structure/sign/fire, +/obj/structure/sign/warning/fire, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/closed/wall/r_wall, /area/engine/atmos) "aML" = ( -/obj/structure/sign/electricshock, +/obj/structure/sign/warning/electricshock, /turf/closed/wall/r_wall, /area/engine/atmos) "aMM" = ( @@ -18389,7 +18314,7 @@ /turf/closed/wall, /area/crew_quarters/theatre) "aMY" = ( -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = -32 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -18755,7 +18680,7 @@ dir = 8; luminosity = 2 }, -/obj/structure/sign/vacuum{ +/obj/structure/sign/warning/vacuum{ pixel_y = -32 }, /obj/structure/cable{ @@ -19488,7 +19413,7 @@ /turf/open/floor/engine/vacuum, /area/maintenance/disposal/incinerator) "aPy" = ( -/obj/structure/sign/fire, +/obj/structure/sign/warning/fire, /obj/machinery/atmospherics/pipe/simple/general/visible{ dir = 4 }, @@ -20373,7 +20298,7 @@ id = "justicechamber"; name = "Justice Chamber Blast door" }, -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_x = 32 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -20819,10 +20744,6 @@ /obj/machinery/holopad, /turf/open/floor/carpet, /area/crew_quarters/bar/atrium) -"aSb" = ( -/obj/effect/landmark/lightsout, -/turf/open/floor/plasteel/redyellow, -/area/crew_quarters/bar/atrium) "aSc" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/public/glass{ @@ -21385,7 +21306,6 @@ /obj/machinery/atmospherics/pipe/simple/yellow/visible{ dir = 4 }, -/obj/effect/landmark/lightsout, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/neutral, /area/engine/atmos) @@ -22484,7 +22404,7 @@ pixel_y = -3 }, /obj/item/lipstick/random, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = -32 }, /turf/open/floor/plasteel/cafeteria, @@ -23148,7 +23068,7 @@ }, /area/security/execution/education) "aWs" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = 32 }, /obj/effect/decal/cleanable/dirt, @@ -23286,7 +23206,7 @@ /turf/open/floor/plasteel, /area/engine/atmos) "aWJ" = ( -/obj/structure/sign/nosmoking_2, +/obj/structure/sign/warning/nosmoking, /turf/closed/wall, /area/engine/atmos) "aWK" = ( @@ -23778,7 +23698,7 @@ icon_state = "0-2" }, /obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/bluecross_2, +/obj/structure/sign/departments/medbay/alt, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plating, /area/security/prison) @@ -24044,7 +23964,7 @@ dir = 10 }, /obj/effect/decal/cleanable/dirt, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = 32 }, /obj/machinery/light/small{ @@ -24196,7 +24116,6 @@ /obj/structure/cable/white{ icon_state = "2-8" }, -/obj/effect/landmark/lightsout, /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 4 }, @@ -25479,18 +25398,6 @@ dir = 1 }, /area/security/prison) -"bbj" = ( -/obj/structure/cable/white{ - icon_state = "1-2" - }, -/obj/effect/landmark/lightsout, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/red/corner{ - dir = 1 - }, -/area/security/prison) "bbk" = ( /obj/structure/cable/white, /obj/machinery/power/apc/highcap/five_k{ @@ -25529,7 +25436,7 @@ /area/security/prison) "bbn" = ( /obj/item/twohanded/required/kirbyplants/random, -/obj/structure/sign/pods{ +/obj/structure/sign/warning/pods{ dir = 8; pixel_y = -32 }, @@ -25550,7 +25457,7 @@ /area/security/prison) "bbp" = ( /obj/machinery/light/small, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_y = -32 }, /obj/effect/decal/cleanable/dirt, @@ -25615,7 +25522,8 @@ id = "pod3"; name = "escape pod 3"; port_direction = 2; - preferred_direction = 4 + preferred_direction = 4; + timid = 0 }, /obj/effect/turf_decal/stripes/end{ dir = 8 @@ -25676,7 +25584,7 @@ /area/space/nearstation) "bbA" = ( /obj/machinery/atmospherics/pipe/simple/cyan/visible, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = -32 }, /obj/machinery/light/small{ @@ -26921,7 +26829,7 @@ icon_state = "0-8" }, /obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/vacuum, +/obj/structure/sign/warning/vacuum, /turf/open/floor/plating, /area/quartermaster/miningoffice) "bel" = ( @@ -26977,7 +26885,7 @@ icon_state = "1-2" }, /obj/effect/decal/cleanable/dirt, -/obj/structure/sign/pods{ +/obj/structure/sign/warning/pods{ pixel_x = -32 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -27108,7 +27016,7 @@ /turf/open/floor/plasteel, /area/engine/atmos) "beE" = ( -/obj/structure/sign/atmosplaque, +/obj/structure/sign/plaques/atmos, /turf/closed/wall, /area/engine/atmos) "beF" = ( @@ -27145,7 +27053,7 @@ }, /area/engine/atmos) "beJ" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = 32 }, /obj/machinery/light/small{ @@ -27497,7 +27405,7 @@ /area/quartermaster/miningoffice) "bfG" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/pods{ +/obj/structure/sign/warning/pods{ name = "MINING POD" }, /turf/open/floor/plating, @@ -27546,7 +27454,7 @@ /obj/structure/cable/white{ icon_state = "2-4" }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = -32 }, /obj/machinery/light/small{ @@ -27795,7 +27703,7 @@ /turf/open/floor/plasteel, /area/maintenance/port/fore) "bgk" = ( -/obj/structure/sign/botany, +/obj/structure/sign/departments/botany, /turf/closed/wall, /area/hydroponics) "bgl" = ( @@ -28011,7 +27919,6 @@ /area/quartermaster/miningoffice) "bgJ" = ( /obj/machinery/holopad, -/obj/effect/landmark/lightsout, /obj/machinery/atmospherics/pipe/manifold/supply/hidden, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, @@ -28115,18 +28022,17 @@ /turf/open/floor/plasteel, /area/quartermaster/miningoffice) "bgU" = ( -/obj/machinery/door/airlock/shuttle{ - name = "Mining Shuttle Airlock"; - req_access_txt = "0" +/obj/docking_port/stationary{ + dir = 4; + dwidth = 3; + height = 5; + id = "mining_home"; + name = "mining shuttle bay"; + width = 7; + roundstart_template = /datum/map_template/shuttle/mining/delta }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plasteel/white, -/area/shuttle/mining) +/turf/open/space/basic, +/area/space) "bgV" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ @@ -28135,44 +28041,14 @@ /turf/open/floor/plasteel, /area/shuttle/mining) "bgW" = ( -/turf/open/floor/plasteel/neutral, -/area/shuttle/mining) +/turf/open/space/basic, +/area/space) "bgX" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 }, /turf/open/floor/plasteel, /area/shuttle/mining) -"bgY" = ( -/obj/docking_port/mobile{ - dir = 8; - dwidth = 3; - height = 5; - id = "mining"; - name = "mining shuttle"; - port_direction = 4; - width = 7 - }, -/obj/docking_port/stationary{ - dir = 8; - dwidth = 3; - height = 5; - id = "mining_home"; - name = "mining shuttle bay"; - width = 7 - }, -/obj/machinery/door/airlock/shuttle{ - name = "Mining Shuttle Airlock"; - req_access_txt = "0" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plasteel/white, -/area/shuttle/mining) "bgZ" = ( /turf/closed/wall/r_wall, /area/security/brig) @@ -28234,7 +28110,7 @@ "bhf" = ( /obj/machinery/atmospherics/pipe/simple/cyan/visible, /obj/effect/decal/cleanable/dirt, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = -32 }, /obj/machinery/light/small{ @@ -30702,7 +30578,7 @@ "bmg" = ( /obj/structure/cable/white, /obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/bluecross_2, +/obj/structure/sign/departments/medbay/alt, /turf/open/floor/plating, /area/security/brig) "bmh" = ( @@ -31821,7 +31697,7 @@ /area/engine/atmos) "boy" = ( /obj/machinery/hydroponics/constructable, -/obj/structure/sign/botany{ +/obj/structure/sign/departments/botany{ pixel_x = -32 }, /obj/effect/turf_decal/delivery, @@ -32181,7 +32057,6 @@ /obj/structure/cable/white{ icon_state = "1-2" }, -/obj/effect/landmark/lightsout, /turf/open/floor/plasteel/neutral, /area/security/brig) "bpl" = ( @@ -33027,7 +32902,6 @@ /turf/open/floor/plasteel, /area/hallway/primary/central) "bqP" = ( -/obj/effect/landmark/lightsout, /obj/structure/cable/white{ icon_state = "4-8" }, @@ -33169,7 +33043,7 @@ /obj/machinery/light{ dir = 8 }, -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_x = -32 }, /obj/effect/turf_decal/stripes/line{ @@ -33779,7 +33653,7 @@ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/sign/nosmoking_2, +/obj/structure/sign/warning/nosmoking, /turf/closed/wall/r_wall, /area/engine/atmos) "bsp" = ( @@ -34188,7 +34062,7 @@ icon_state = "4-8" }, /obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/vacuum, +/obj/structure/sign/warning/vacuum, /turf/open/floor/plating, /area/security/execution/transfer) "btc" = ( @@ -35260,7 +35134,7 @@ /obj/structure/extinguisher_cabinet{ pixel_x = -26 }, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = -32 }, /turf/open/floor/plasteel/arrival, @@ -35450,7 +35324,7 @@ }, /area/hallway/primary/port) "bvv" = ( -/obj/structure/sign/electricshock, +/obj/structure/sign/warning/electricshock, /turf/closed/wall/r_wall, /area/storage/tech) "bvw" = ( @@ -35735,7 +35609,7 @@ /turf/open/floor/plasteel, /area/security/main) "bwh" = ( -/obj/structure/sign/goldenplaque{ +/obj/structure/sign/plaques/golden{ pixel_y = -32 }, /turf/open/floor/plasteel/red/corner, @@ -35812,7 +35686,7 @@ /obj/structure/cable/white{ icon_state = "0-8" }, -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_y = 32 }, /obj/machinery/camera/motion{ @@ -35828,7 +35702,7 @@ icon_state = "2-8" }, /obj/item/twohanded/required/kirbyplants/random, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = 32 }, /obj/effect/turf_decal/stripes/line, @@ -35917,7 +35791,7 @@ /turf/closed/wall/r_wall, /area/engine/atmos) "bwz" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall/r_wall, /area/engine/atmos) @@ -36923,10 +36797,10 @@ /obj/structure/cable/white{ icon_state = "4-8" }, -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_y = -32 }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_y = 32 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -37284,7 +37158,7 @@ }, /obj/item/crowbar/red, /obj/item/wrench, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = 32 }, /obj/effect/turf_decal/bot, @@ -37370,7 +37244,7 @@ /turf/open/floor/plasteel/redyellow, /area/engine/break_room) "bzq" = ( -/obj/structure/sign/nosmoking_2, +/obj/structure/sign/warning/nosmoking, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall/r_wall, /area/engine/break_room) @@ -37393,7 +37267,7 @@ /turf/open/floor/plasteel, /area/engine/break_room) "bzs" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/closed/wall/r_wall, /area/engine/break_room) @@ -37843,12 +37717,8 @@ /turf/open/floor/plasteel, /area/shuttle/labor) "bAa" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/end{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/shuttle/labor) +/turf/open/space/basic, +/area/space) "bAb" = ( /obj/effect/turf_decal/stripes/line{ dir = 2 @@ -37856,35 +37726,17 @@ /turf/open/floor/plasteel, /area/shuttle/labor) "bAc" = ( -/obj/machinery/door/airlock/shuttle{ - id_tag = "prisonshuttle"; - name = "Labor Shuttle Airlock" - }, -/obj/docking_port/mobile{ - dir = 8; - dwidth = 2; - height = 5; - id = "laborcamp"; - name = "labor camp shuttle"; - port_direction = 4; - width = 9 - }, /obj/docking_port/stationary{ dir = 8; dwidth = 2; height = 5; id = "laborcamp_home"; name = "fore bay 1"; - width = 9 + width = 9; + roundstart_template = /datum/map_template/shuttle/labour/delta }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plasteel/white, -/area/shuttle/labor) +/turf/open/space/basic, +/area/space) "bAd" = ( /obj/machinery/door/airlock/external{ cyclelinkeddir = 4; @@ -37899,11 +37751,6 @@ }, /turf/open/floor/plasteel, /area/security/execution/transfer) -"bAe" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, -/area/security/execution/transfer) "bAf" = ( /obj/machinery/door/airlock/external{ cyclelinkeddir = 8; @@ -38200,7 +38047,7 @@ icon_state = "0-2" }, /obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_y = 32 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -39138,7 +38985,7 @@ /turf/open/floor/plasteel, /area/engine/gravity_generator) "bCF" = ( -/obj/structure/sign/radiation, +/obj/structure/sign/warning/radiation, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -39664,7 +39511,6 @@ /obj/structure/cable/white{ icon_state = "1-2" }, -/obj/effect/landmark/lightsout, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -40308,7 +40154,7 @@ /obj/machinery/light{ dir = 8 }, -/obj/structure/sign/radiation{ +/obj/structure/sign/warning/radiation{ pixel_x = -32 }, /turf/open/floor/plasteel/vault{ @@ -41087,7 +40933,7 @@ }, /obj/effect/spawner/structure/window/reinforced, /obj/structure/disposalpipe/segment, -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_x = -32 }, /turf/open/floor/plating, @@ -41303,7 +41149,7 @@ /turf/open/floor/plasteel, /area/engine/gravity_generator) "bGc" = ( -/obj/structure/sign/radiation, +/obj/structure/sign/warning/radiation, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -42129,7 +41975,7 @@ "bHO" = ( /obj/structure/cable/white, /obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_y = -32 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -42337,13 +42183,6 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/engine/break_room) -"bIj" = ( -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/obj/effect/landmark/lightsout, -/turf/open/floor/plasteel/neutral, -/area/engine/break_room) "bIk" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable/white{ @@ -42521,10 +42360,6 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/storage/primary) -"bIy" = ( -/obj/effect/landmark/lightsout, -/turf/open/floor/plasteel/neutral, -/area/storage/primary) "bIz" = ( /obj/structure/table/reinforced, /obj/item/stack/packageWrap, @@ -43363,7 +43198,7 @@ }, /area/engine/break_room) "bKh" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -44323,7 +44158,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/structure/sign/electricshock, +/obj/structure/sign/warning/electricshock, /turf/closed/wall/r_wall, /area/security/checkpoint/engineering) "bMf" = ( @@ -44836,10 +44671,7 @@ }, /area/hallway/primary/starboard) "bNi" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE"; +/obj/structure/sign/warning/electricshock{ pixel_x = 32 }, /obj/machinery/light{ @@ -45835,10 +45667,6 @@ dir = 5 }, /area/security/detectives_office) -"bPn" = ( -/obj/effect/landmark/lightsout, -/turf/open/floor/plasteel/neutral, -/area/hallway/primary/starboard) "bPo" = ( /obj/structure/closet/secure_closet/brig{ id = "brig2"; @@ -46023,7 +45851,7 @@ /turf/closed/wall/r_wall, /area/ai_monitored/turret_protected/aisat_interior) "bPH" = ( -/obj/structure/sign/kiddieplaque, +/obj/structure/sign/plaques/kiddie, /turf/closed/wall/r_wall, /area/ai_monitored/turret_protected/aisat_interior) "bPI" = ( @@ -46059,7 +45887,7 @@ /area/space/nearstation) "bPL" = ( /obj/machinery/light/small, -/obj/structure/sign/vacuum{ +/obj/structure/sign/warning/vacuum{ pixel_x = -32 }, /turf/open/floor/plasteel/vault{ @@ -46174,7 +46002,7 @@ }, /area/crew_quarters/heads/chief) "bPW" = ( -/obj/structure/sign/electricshock, +/obj/structure/sign/warning/electricshock, /turf/closed/wall/r_wall, /area/crew_quarters/heads/chief) "bPX" = ( @@ -46182,7 +46010,7 @@ /turf/closed/wall/r_wall, /area/crew_quarters/heads/chief) "bPY" = ( -/obj/structure/sign/nosmoking_2, +/obj/structure/sign/warning/nosmoking, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall, /area/engine/break_room) @@ -46205,7 +46033,7 @@ /turf/open/floor/plasteel, /area/engine/break_room) "bQa" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/closed/wall, /area/engine/break_room) @@ -46569,7 +46397,7 @@ /turf/open/floor/wood, /area/crew_quarters/heads/captain) "bQW" = ( -/obj/structure/sign/goldenplaque/captain{ +/obj/structure/sign/plaques/golden/captain{ pixel_x = 32 }, /turf/open/floor/wood, @@ -46916,7 +46744,7 @@ /obj/structure/cable/yellow{ icon_state = "0-2" }, -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_y = 32 }, /obj/effect/turf_decal/stripes/line{ @@ -47015,7 +46843,7 @@ /turf/open/space, /area/space/nearstation) "bRP" = ( -/obj/structure/sign/vacuum, +/obj/structure/sign/warning/vacuum, /turf/closed/wall, /area/space/nearstation) "bRQ" = ( @@ -48930,10 +48758,7 @@ /turf/open/floor/plasteel/neutral, /area/hallway/primary/starboard) "bVj" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE"; +/obj/structure/sign/warning/electricshock{ pixel_x = 32 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -49959,7 +49784,6 @@ /obj/structure/cable/white{ icon_state = "1-2" }, -/obj/effect/landmark/lightsout, /obj/structure/cable/white{ icon_state = "1-4" }, @@ -50415,7 +50239,7 @@ }, /area/aisat) "bXU" = ( -/obj/structure/sign/nosmoking_2, +/obj/structure/sign/warning/nosmoking, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -50606,7 +50430,7 @@ icon_state = "curved0"; dir = 4 }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_y = -32 }, /turf/open/floor/plasteel/vault{ @@ -51733,7 +51557,7 @@ /turf/open/floor/plasteel, /area/engine/engineering) "caw" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall, /area/engine/engineering) @@ -51756,7 +51580,7 @@ /turf/open/floor/plasteel, /area/engine/engineering) "cay" = ( -/obj/structure/sign/radiation, +/obj/structure/sign/warning/radiation, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/closed/wall, /area/engine/engineering) @@ -52426,7 +52250,7 @@ /turf/open/floor/plasteel, /area/engine/engineering) "cbV" = ( -/obj/structure/sign/vacuum, +/obj/structure/sign/warning/vacuum, /turf/closed/wall, /area/engine/engineering) "cbW" = ( @@ -52723,11 +52547,6 @@ }, /turf/open/floor/plasteel/neutral, /area/hallway/primary/central) -"ccy" = ( -/obj/effect/landmark/lightsout, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/blue/corner, -/area/hallway/primary/central) "ccz" = ( /obj/machinery/status_display, /turf/closed/wall/r_wall, @@ -54096,7 +53915,6 @@ /obj/structure/cable/white{ icon_state = "2-4" }, -/obj/effect/landmark/lightsout, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -54286,7 +54104,7 @@ pixel_x = -3; pixel_y = -3 }, -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_x = 32 }, /turf/open/floor/plasteel/vault{ @@ -54306,7 +54124,7 @@ /turf/open/floor/plating/airless, /area/engine/engineering) "cfC" = ( -/obj/structure/sign/vacuum, +/obj/structure/sign/warning/vacuum, /turf/closed/wall/r_wall, /area/engine/engineering) "cfD" = ( @@ -54454,7 +54272,7 @@ /turf/open/floor/plasteel, /area/engine/engineering) "cfQ" = ( -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_x = 32 }, /obj/item/device/radio/intercom{ @@ -54504,7 +54322,7 @@ dir = 8 }, /obj/item/twohanded/required/kirbyplants/random, -/obj/structure/sign/kiddieplaque/library{ +/obj/structure/sign/plaques/kiddie/library{ pixel_x = -32 }, /turf/open/floor/wood, @@ -54529,7 +54347,7 @@ /turf/open/floor/wood, /area/library) "cfZ" = ( -/obj/structure/sign/nosmoking_2, +/obj/structure/sign/warning/nosmoking, /turf/closed/wall, /area/library) "cga" = ( @@ -54542,7 +54360,7 @@ }, /area/library) "cgb" = ( -/obj/structure/sign/kiddieplaque/library{ +/obj/structure/sign/plaques/kiddie/library{ pixel_x = -32 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -54551,7 +54369,7 @@ }, /area/hallway/primary/central) "cgc" = ( -/obj/structure/sign/electricshock, +/obj/structure/sign/warning/electricshock, /turf/closed/wall/r_wall, /area/crew_quarters/heads/hop) "cgd" = ( @@ -55382,7 +55200,7 @@ /obj/machinery/computer/atmos_alert{ dir = 1 }, -/obj/structure/sign/nosmoking_1{ +/obj/structure/sign/warning/nosmoking/circle{ pixel_x = 28; pixel_y = -28 }, @@ -56401,12 +56219,6 @@ dir = 5 }, /area/security/courtroom) -"cjW" = ( -/obj/effect/landmark/lightsout, -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/security/courtroom) "cjX" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/public/glass{ @@ -56828,13 +56640,6 @@ }, /turf/open/floor/plasteel/grimy, /area/library) -"ckS" = ( -/obj/effect/landmark/lightsout, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/grimy, -/area/library) "ckT" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 1 @@ -56887,7 +56692,7 @@ }, /area/tcommsat/server) "cla" = ( -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_y = -32 }, /turf/open/floor/plasteel/vault/telecomms{ @@ -56929,7 +56734,7 @@ /obj/machinery/light{ dir = 8 }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = -32 }, /turf/open/floor/plasteel/neutral/corner{ @@ -57189,7 +56994,7 @@ /turf/open/floor/plating, /area/security/range) "clG" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_y = 32 }, /obj/machinery/light{ @@ -58112,7 +57917,7 @@ /area/ai_monitored/turret_protected/ai_upload) "cnv" = ( /obj/machinery/porta_turret/ai, -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_y = -32 }, /turf/open/floor/plasteel/vault{ @@ -58190,7 +57995,7 @@ /turf/open/floor/plating/airless, /area/space/nearstation) "cnC" = ( -/obj/structure/sign/radiation, +/obj/structure/sign/warning/radiation, /turf/closed/wall/r_wall, /area/engine/engineering) "cnD" = ( @@ -58803,7 +58608,7 @@ /turf/open/floor/plating, /area/security/range) "coS" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_y = -32 }, /obj/machinery/light, @@ -58932,7 +58737,7 @@ /turf/open/floor/plasteel, /area/engine/engineering) "cph" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall/r_wall, /area/engine/engineering) "cpi" = ( @@ -58960,7 +58765,7 @@ /obj/machinery/shieldgen, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = 32 }, /obj/effect/turf_decal/bot, @@ -59614,7 +59419,7 @@ /turf/open/floor/plasteel, /area/maintenance/port) "cqK" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall/r_wall, /area/maintenance/port) "cqL" = ( @@ -59715,7 +59520,7 @@ /turf/open/floor/plating, /area/hallway/secondary/command) "cra" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall/r_wall, /area/hallway/secondary/command) @@ -59965,7 +59770,7 @@ /turf/open/floor/plasteel, /area/maintenance/starboard) "crD" = ( -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_x = -32; pixel_y = 32 }, @@ -60169,7 +59974,7 @@ /obj/machinery/light/small{ dir = 4 }, -/obj/structure/sign/fire{ +/obj/structure/sign/warning/fire{ pixel_x = 32 }, /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ @@ -60365,7 +60170,7 @@ }, /area/hallway/secondary/command) "cst" = ( -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_y = 32 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -60468,7 +60273,7 @@ }, /area/hallway/secondary/command) "csC" = ( -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_y = 32 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -61235,7 +61040,7 @@ /obj/structure/cable/white{ icon_state = "4-8" }, -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_x = -32; pixel_y = -32 }, @@ -61321,7 +61126,7 @@ /obj/structure/cable/white{ icon_state = "4-8" }, -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_x = 32; pixel_y = -32 }, @@ -61904,7 +61709,6 @@ icon_state = "1-2" }, /obj/machinery/holopad, -/obj/effect/landmark/lightsout, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/hallway/secondary/command) @@ -62682,10 +62486,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/neutral, /area/hallway/primary/central) -"cxe" = ( -/obj/effect/landmark/lightsout, -/turf/open/floor/plasteel/neutral, -/area/hallway/primary/central) "cxf" = ( /obj/machinery/door/firedoor, /obj/effect/turf_decal/stripes/line{ @@ -62889,17 +62689,6 @@ }, /turf/open/floor/plating/airless, /area/space/nearstation) -"cxC" = ( -/obj/machinery/power/rad_collector/anchored, -/obj/machinery/power/rad_collector/anchored, -/obj/structure/cable{ - icon_state = "0-4" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plating, -/area/engine/engineering) "cxD" = ( /obj/structure/rack, /obj/item/crowbar, @@ -62953,7 +62742,7 @@ "cxI" = ( /obj/item/twohanded/required/kirbyplants/random, /obj/effect/decal/cleanable/dirt, -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_y = 32 }, /obj/effect/turf_decal/bot, @@ -63556,16 +63345,6 @@ }, /turf/open/floor/plasteel/neutral, /area/crew_quarters/locker) -"cyT" = ( -/obj/effect/landmark/lightsout, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel/neutral, -/area/crew_quarters/locker) "cyU" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 9 @@ -63853,7 +63632,7 @@ dir = 8 }, /obj/machinery/disposal/bin, -/obj/structure/sign/kiddieplaque/library{ +/obj/structure/sign/plaques/kiddie/library{ pixel_x = -32 }, /obj/structure/disposalpipe/trunk{ @@ -64518,7 +64297,7 @@ }, /obj/item/clothing/mask/breath, /obj/item/clothing/mask/breath, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = 32 }, /obj/effect/decal/cleanable/dirt, @@ -65317,7 +65096,7 @@ /area/engine/storage) "cCB" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = 32 }, /obj/structure/tank_dispenser, @@ -66031,7 +65810,6 @@ /turf/open/floor/plasteel, /area/engine/engineering) "cEb" = ( -/obj/effect/landmark/lightsout, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -67328,13 +67106,6 @@ }, /turf/open/floor/plasteel, /area/gateway) -"cGG" = ( -/obj/structure/cable/white{ - icon_state = "1-2" - }, -/obj/effect/landmark/lightsout, -/turf/open/floor/plasteel/neutral, -/area/hallway/primary/central) "cGH" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/mirror{ @@ -67660,7 +67431,7 @@ "cHq" = ( /obj/item/twohanded/required/kirbyplants/random, /obj/effect/decal/cleanable/dirt, -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_y = -32 }, /obj/effect/turf_decal/bot, @@ -67881,7 +67652,7 @@ /turf/open/floor/plating, /area/bridge/showroom/corporate) "cHN" = ( -/obj/structure/sign/electricshock, +/obj/structure/sign/warning/electricshock, /turf/closed/wall/r_wall, /area/bridge/showroom/corporate) "cHO" = ( @@ -68233,16 +68004,6 @@ }, /turf/closed/wall, /area/maintenance/port) -"cIz" = ( -/obj/effect/landmark/lightsout, -/obj/structure/cable/white{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/neutral, -/area/hallway/primary/central) "cIA" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden, /turf/open/floor/plasteel/neutral/corner{ @@ -69736,7 +69497,6 @@ /turf/open/floor/plasteel/neutral, /area/crew_quarters/dorms) "cLd" = ( -/obj/effect/landmark/lightsout, /turf/open/floor/plasteel/neutral, /area/crew_quarters/dorms) "cLe" = ( @@ -69755,9 +69515,6 @@ }, /turf/open/floor/plasteel/neutral, /area/crew_quarters/dorms) -"cLh" = ( -/turf/open/floor/plasteel/neutral, -/area/crew_quarters/dorms) "cLi" = ( /obj/item/twohanded/required/kirbyplants/random, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -69798,7 +69555,7 @@ }, /area/crew_quarters/fitness/recreation) "cLn" = ( -/obj/structure/sign/nosmoking_2, +/obj/structure/sign/warning/nosmoking, /turf/closed/wall, /area/crew_quarters/fitness/recreation) "cLo" = ( @@ -70465,7 +70222,6 @@ /obj/structure/cable/white{ icon_state = "1-2" }, -/obj/effect/landmark/lightsout, /obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden, /obj/structure/disposalpipe/junction/flip{ dir = 1 @@ -70530,7 +70286,7 @@ /turf/closed/wall, /area/maintenance/department/electrical) "cMP" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall, /area/maintenance/department/electrical) "cMQ" = ( @@ -70552,7 +70308,7 @@ /turf/closed/wall, /area/maintenance/department/electrical) "cMS" = ( -/obj/structure/sign/electricshock, +/obj/structure/sign/warning/electricshock, /turf/closed/wall, /area/maintenance/department/electrical) "cMT" = ( @@ -70728,7 +70484,7 @@ /turf/open/floor/plasteel, /area/hallway/primary/central) "cNo" = ( -/obj/structure/sign/science, +/obj/structure/sign/departments/science, /turf/closed/wall, /area/hallway/primary/central) "cNp" = ( @@ -70864,7 +70620,7 @@ /turf/open/floor/plasteel, /area/medical/medbay/central) "cND" = ( -/obj/structure/sign/bluecross_2, +/obj/structure/sign/departments/medbay/alt, /turf/closed/wall, /area/medical/medbay/central) "cNE" = ( @@ -71542,7 +71298,7 @@ }, /area/science/research) "cPi" = ( -/obj/structure/sign/science, +/obj/structure/sign/departments/science, /turf/closed/wall, /area/science/research) "cPj" = ( @@ -72996,13 +72752,6 @@ }, /turf/open/floor/plasteel/whitepurple/corner, /area/science/research) -"cSt" = ( -/obj/effect/landmark/lightsout, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/whitepurple/corner, -/area/science/research) "cSu" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -73541,7 +73290,7 @@ /turf/open/floor/circuit/green, /area/science/xenobiology) "cTA" = ( -/obj/structure/sign/electricshock, +/obj/structure/sign/warning/electricshock, /turf/closed/wall/r_wall, /area/science/xenobiology) "cTB" = ( @@ -73590,7 +73339,7 @@ /turf/open/floor/plasteel, /area/science/xenobiology) "cTG" = ( -/obj/structure/sign/xenobio, +/obj/structure/sign/departments/xenobio, /turf/closed/wall, /area/science/xenobiology) "cTH" = ( @@ -73630,7 +73379,7 @@ /turf/open/floor/plasteel, /area/science/xenobiology) "cTK" = ( -/obj/structure/sign/electricshock, +/obj/structure/sign/warning/electricshock, /turf/closed/wall, /area/science/xenobiology) "cTL" = ( @@ -73687,7 +73436,7 @@ /turf/open/floor/plasteel, /area/science/xenobiology) "cTP" = ( -/obj/structure/sign/biohazard, +/obj/structure/sign/warning/biohazard, /turf/closed/wall, /area/science/xenobiology) "cTQ" = ( @@ -73928,7 +73677,6 @@ }, /area/hallway/primary/aft) "cUp" = ( -/obj/effect/landmark/lightsout, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -74013,13 +73761,6 @@ }, /turf/open/floor/plasteel/cmo, /area/medical/medbay/central) -"cUy" = ( -/obj/effect/landmark/lightsout, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/cmo, -/area/medical/medbay/central) "cUz" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -75109,7 +74850,7 @@ /obj/machinery/atmospherics/components/binary/valve{ dir = 1 }, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = -32 }, /obj/effect/turf_decal/stripes/line{ @@ -75187,7 +74928,7 @@ /turf/open/floor/plasteel, /area/maintenance/department/electrical) "cWT" = ( -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = 32 }, /obj/effect/turf_decal/delivery, @@ -75326,7 +75067,6 @@ /obj/structure/cable/white{ icon_state = "4-8" }, -/obj/effect/landmark/lightsout, /obj/effect/turf_decal/stripes/line{ dir = 2 }, @@ -75645,7 +75385,7 @@ /area/medical/medbay/central) "cXM" = ( /obj/structure/bed/roller, -/obj/structure/sign/chemistry{ +/obj/structure/sign/departments/chemistry{ pixel_y = -32 }, /obj/machinery/light, @@ -75724,7 +75464,7 @@ }, /area/medical/medbay/central) "cXX" = ( -/obj/structure/sign/bluecross_2{ +/obj/structure/sign/departments/medbay/alt{ pixel_x = 32 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -76301,7 +76041,7 @@ /turf/open/floor/plasteel, /area/science/research) "cZi" = ( -/obj/structure/sign/science, +/obj/structure/sign/departments/science, /turf/closed/wall/r_wall, /area/science/research) "cZj" = ( @@ -76322,11 +76062,11 @@ /turf/open/floor/plasteel, /area/science/research) "cZk" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall/r_wall, /area/science/research) "cZl" = ( -/obj/structure/sign/science, +/obj/structure/sign/departments/science, /turf/closed/wall, /area/science/lab) "cZm" = ( @@ -76868,7 +76608,7 @@ }, /area/maintenance/port) "dao" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall, /area/maintenance/department/electrical) @@ -77130,7 +76870,7 @@ /turf/open/floor/plasteel, /area/science/research) "daP" = ( -/obj/structure/sign/nosmoking_2, +/obj/structure/sign/warning/nosmoking, /turf/closed/wall/r_wall, /area/science/lab) "daQ" = ( @@ -78317,7 +78057,7 @@ /obj/item/stack/medical/gauze, /obj/item/stack/medical/bruise_pack, /obj/item/stack/medical/ointment, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = 32 }, /obj/machinery/light/small{ @@ -78923,7 +78663,7 @@ /turf/open/floor/plating, /area/maintenance/starboard/aft) "deN" = ( -/obj/structure/sign/examroom{ +/obj/structure/sign/departments/examroom{ pixel_x = -32 }, /obj/item/twohanded/required/kirbyplants/random, @@ -78952,7 +78692,7 @@ /turf/open/floor/plating, /area/medical/abandoned) "deT" = ( -/obj/structure/sign/bluecross_2, +/obj/structure/sign/departments/medbay/alt, /turf/closed/wall, /area/medical/abandoned) "deU" = ( @@ -79046,7 +78786,7 @@ /turf/open/floor/plating, /area/maintenance/port) "dfc" = ( -/obj/structure/sign/xenobio, +/obj/structure/sign/departments/xenobio, /turf/closed/wall/r_wall, /area/science/xenobiology) "dfd" = ( @@ -79186,7 +78926,7 @@ /turf/open/floor/plasteel, /area/science/research) "dfp" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall, /area/science/research) "dfq" = ( @@ -79253,7 +78993,7 @@ /turf/open/floor/plasteel/whitepurple/corner, /area/science/lab) "dfv" = ( -/obj/structure/sign/chemistry, +/obj/structure/sign/departments/chemistry, /turf/closed/wall, /area/medical/chemistry) "dfw" = ( @@ -79391,7 +79131,7 @@ /turf/open/floor/plasteel, /area/medical/medbay/central) "dfH" = ( -/obj/structure/sign/examroom, +/obj/structure/sign/departments/examroom, /turf/closed/wall, /area/medical/medbay/central) "dfI" = ( @@ -80678,7 +80418,6 @@ icon_state = "4-8" }, /obj/item/device/radio/beacon, -/obj/effect/landmark/lightsout, /obj/structure/disposalpipe/segment, /turf/open/floor/plasteel/whiteblue, /area/medical/medbay/central) @@ -81122,7 +80861,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = 32 }, /obj/effect/turf_decal/stripes/line, @@ -81406,7 +81145,7 @@ /obj/structure/extinguisher_cabinet{ pixel_y = -32 }, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = -32; pixel_y = -32 }, @@ -81601,7 +81340,7 @@ /turf/open/floor/plasteel/neutral, /area/medical/medbay/central) "dkA" = ( -/obj/structure/sign/bluecross_2{ +/obj/structure/sign/departments/medbay/alt{ pixel_x = 32; pixel_y = -32 }, @@ -81913,13 +81652,6 @@ "dlj" = ( /turf/open/floor/plasteel, /area/science/circuit) -"dlk" = ( -/obj/structure/table, -/obj/item/paper_bin, -/obj/item/pen, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, -/area/science/research/abandoned) "dll" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 5 @@ -82042,7 +81774,7 @@ /turf/open/floor/plating, /area/science/research) "dlz" = ( -/obj/structure/sign/nosmoking_2, +/obj/structure/sign/warning/nosmoking, /turf/closed/wall, /area/science/research) "dlA" = ( @@ -82099,7 +81831,7 @@ /turf/open/floor/plating, /area/crew_quarters/heads/hor) "dlG" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall/r_wall, /area/crew_quarters/heads/hor) "dlH" = ( @@ -82246,7 +81978,7 @@ /turf/open/floor/plating, /area/medical/genetics/cloning) "dlX" = ( -/obj/structure/sign/bluecross_2, +/obj/structure/sign/departments/medbay/alt, /turf/closed/wall, /area/medical/genetics/cloning) "dlY" = ( @@ -82400,7 +82132,7 @@ /obj/item/stack/sheet/metal/fifty, /obj/item/stock_parts/cell/super, /obj/item/stock_parts/cell/super, -/obj/structure/sign/science{ +/obj/structure/sign/departments/science{ pixel_x = -32 }, /turf/open/floor/plasteel/white/side{ @@ -82442,7 +82174,6 @@ /area/science/circuit) "dmw" = ( /obj/structure/disposalpipe/segment, -/obj/effect/landmark/lightsout, /turf/open/floor/plasteel/white/side{ dir = 10 }, @@ -82460,13 +82191,6 @@ }, /turf/open/floor/plasteel, /area/science/research/abandoned) -"dmz" = ( -/obj/structure/rack, -/obj/item/storage/toolbox/electrical, -/obj/item/device/multitool, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/science/research/abandoned) "dmA" = ( /obj/effect/landmark/blobstart, /obj/effect/turf_decal/bot, @@ -82785,7 +82509,7 @@ /obj/machinery/light{ dir = 4 }, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = 32 }, /obj/effect/turf_decal/bot, @@ -82853,7 +82577,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = 32 }, /turf/open/floor/plasteel/whitepurple/corner{ @@ -83001,7 +82725,7 @@ /turf/open/floor/plasteel/vault, /area/medical/surgery) "dnF" = ( -/obj/structure/sign/bluecross_2, +/obj/structure/sign/departments/medbay/alt, /turf/closed/wall, /area/medical/surgery) "dnG" = ( @@ -83502,7 +83226,6 @@ /area/science/research) "doF" = ( /obj/machinery/holopad, -/obj/effect/landmark/lightsout, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -84124,16 +83847,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/wood, /area/crew_quarters/abandoned_gambling_den) -"dpW" = ( -/obj/structure/table/reinforced, -/obj/item/folder/white, -/obj/item/stock_parts/cell/high, -/obj/item/stack/sheet/glass, -/obj/item/stack/sheet/glass, -/obj/item/stack/sheet/glass, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/science/research/abandoned) "dpX" = ( /obj/structure/chair/office/light{ dir = 8 @@ -84371,7 +84084,7 @@ /turf/open/floor/plasteel, /area/science/explab) "dqs" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -85029,7 +84742,7 @@ }, /area/science/explab) "drK" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall/r_wall, /area/science/explab) "drL" = ( @@ -85055,7 +84768,7 @@ /turf/closed/wall/r_wall, /area/science/mixing) "drQ" = ( -/obj/structure/sign/fire, +/obj/structure/sign/warning/fire, /turf/closed/wall/r_wall, /area/science/mixing) "drR" = ( @@ -85086,7 +84799,7 @@ /turf/open/floor/plasteel, /area/science/mixing) "drT" = ( -/obj/structure/sign/biohazard, +/obj/structure/sign/warning/biohazard, /turf/closed/wall/r_wall, /area/science/mixing) "drU" = ( @@ -85421,7 +85134,7 @@ /turf/open/floor/plasteel/whiteblue/corner, /area/medical/medbay/central) "dsI" = ( -/obj/structure/sign/nosmoking_2, +/obj/structure/sign/warning/nosmoking, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -85579,25 +85292,6 @@ /obj/item/book/manual/wiki/engineering_hacking, /turf/open/floor/plating, /area/crew_quarters/abandoned_gambling_den) -"dtb" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/science/research/abandoned) -"dtc" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/door/airlock/maintenance_hatch{ - name = "Maintenance Hatch"; - req_access_txt = "12" - }, -/obj/structure/barricade/wooden, -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/science/research/abandoned) "dtd" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/closed/wall, @@ -85880,7 +85574,7 @@ /turf/open/floor/plasteel/whiteblue/corner, /area/medical/medbay/central) "dtJ" = ( -/obj/structure/sign/bluecross_2, +/obj/structure/sign/departments/medbay/alt, /turf/closed/wall/r_wall, /area/crew_quarters/heads/cmo) "dtK" = ( @@ -86292,7 +85986,7 @@ /obj/machinery/light{ dir = 8 }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = -32 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -87276,12 +86970,6 @@ dir = 8 }, /area/hallway/primary/aft) -"dwE" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/neutral, -/area/hallway/primary/aft) "dwF" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -87628,7 +87316,6 @@ /obj/structure/cable/white{ icon_state = "2-8" }, -/obj/effect/landmark/lightsout, /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 4 }, @@ -87872,7 +87559,7 @@ /obj/machinery/light{ dir = 8 }, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = -32 }, /obj/machinery/atmospherics/components/unary/portables_connector/visible{ @@ -88017,7 +87704,7 @@ /turf/open/floor/plating, /area/science/robotics/lab) "dye" = ( -/obj/structure/sign/science, +/obj/structure/sign/departments/science, /turf/closed/wall, /area/science/robotics/lab) "dyf" = ( @@ -88728,7 +88415,7 @@ /obj/machinery/atmospherics/components/unary/portables_connector/visible{ dir = 8 }, -/obj/structure/sign/fire{ +/obj/structure/sign/warning/fire{ pixel_x = 32 }, /obj/effect/turf_decal/stripes/line{ @@ -88871,7 +88558,7 @@ /turf/open/floor/plasteel, /area/science/robotics/lab) "dzL" = ( -/obj/structure/sign/science{ +/obj/structure/sign/departments/science{ pixel_x = -32; pixel_y = 32 }, @@ -88882,7 +88569,7 @@ }, /area/hallway/primary/aft) "dzM" = ( -/obj/structure/sign/science{ +/obj/structure/sign/departments/science{ pixel_x = 32; pixel_y = 32 }, @@ -89490,7 +89177,7 @@ dir = 1 }, /obj/machinery/light, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = -32 }, /obj/effect/turf_decal/stripes/end{ @@ -89555,7 +89242,7 @@ id = "geneticslab"; name = "Genetics Lab Shutters" }, -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_y = -32 }, /turf/open/floor/plating, @@ -90297,7 +89984,7 @@ /turf/open/floor/plasteel, /area/medical/morgue) "dCA" = ( -/obj/structure/sign/nosmoking_2, +/obj/structure/sign/warning/nosmoking, /turf/closed/wall, /area/medical/morgue) "dCB" = ( @@ -90532,7 +90219,7 @@ /turf/open/floor/plating, /area/maintenance/starboard/aft) "dDb" = ( -/obj/structure/sign/electricshock, +/obj/structure/sign/warning/electricshock, /turf/closed/wall/r_wall, /area/maintenance/solars/starboard/aft) "dDc" = ( @@ -90706,7 +90393,7 @@ /turf/open/floor/plasteel, /area/science/mixing) "dDs" = ( -/obj/structure/sign/fire, +/obj/structure/sign/warning/fire, /turf/closed/wall/r_wall, /area/science/misc_lab/range) "dDt" = ( @@ -91301,7 +90988,7 @@ }, /area/science/server) "dEE" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -91369,14 +91056,13 @@ /obj/machinery/computer/rdconsole/robotics{ dir = 8 }, -/obj/structure/sign/bluecross_2{ +/obj/structure/sign/departments/medbay/alt{ pixel_x = 32 }, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/science/robotics/lab) "dEP" = ( -/obj/effect/landmark/lightsout, /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 4 }, @@ -93341,7 +93027,7 @@ /obj/item/device/mmi, /obj/item/device/mmi, /obj/item/device/mmi, -/obj/structure/sign/bluecross_2{ +/obj/structure/sign/departments/medbay/alt{ pixel_y = -32 }, /obj/effect/turf_decal/bot, @@ -93372,7 +93058,7 @@ pixel_y = 16 }, /obj/item/circular_saw, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = -32 }, /obj/structure/mirror{ @@ -93898,7 +93584,7 @@ /turf/open/floor/plasteel, /area/science/mixing) "dJY" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -94166,11 +93852,11 @@ /turf/open/floor/plating/airless, /area/science/test_area) "dKA" = ( -/obj/structure/sign/vacuum, +/obj/structure/sign/warning/vacuum, /turf/closed/wall, /area/science/mixing) "dKB" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall, /area/science/mixing) "dKC" = ( @@ -95302,7 +94988,6 @@ /obj/structure/cable/white{ icon_state = "1-2" }, -/obj/effect/landmark/lightsout, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -96443,7 +96128,7 @@ /turf/open/floor/plasteel, /area/medical/medbay/central) "dPp" = ( -/obj/structure/sign/biohazard, +/obj/structure/sign/warning/biohazard, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall/r_wall, /area/medical/medbay/central) @@ -96814,7 +96499,7 @@ icon_state = "0-2" }, /obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/vacuum, +/obj/structure/sign/warning/vacuum, /turf/open/floor/plating, /area/medical/virology) "dQi" = ( @@ -97731,7 +97416,7 @@ /area/shuttle/escape) "dRZ" = ( /obj/structure/closet/l3closet/virology, -/obj/structure/sign/biohazard{ +/obj/structure/sign/warning/biohazard{ pixel_y = -32 }, /obj/effect/turf_decal/bot, @@ -97748,7 +97433,7 @@ /area/medical/virology) "dSb" = ( /obj/structure/closet/emcloset, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_y = -32 }, /obj/effect/turf_decal/bot, @@ -98647,7 +98332,7 @@ /turf/open/floor/plasteel/vault, /area/medical/virology) "dTY" = ( -/obj/structure/sign/nosmoking_2, +/obj/structure/sign/warning/nosmoking, /turf/closed/wall, /area/medical/virology) "dTZ" = ( @@ -98757,7 +98442,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/structure/sign/kiddieplaque/badger{ +/obj/structure/sign/plaques/kiddie/badger{ pixel_y = 32 }, /turf/open/floor/plasteel/vault{ @@ -98898,8 +98583,8 @@ }, /area/shuttle/escape) "dUD" = ( -/turf/open/floor/plasteel/neutral, -/area/shuttle/escape) +/turf/open/space/basic, +/area/space) "dUE" = ( /obj/machinery/light{ dir = 4 @@ -99333,13 +99018,6 @@ dir = 8 }, /area/medical/virology) -"dVB" = ( -/obj/structure/cable/white{ - icon_state = "1-2" - }, -/obj/effect/landmark/lightsout, -/turf/open/floor/plasteel/green, -/area/medical/virology) "dVC" = ( /obj/item/device/radio/intercom{ name = "Station Intercom"; @@ -100101,7 +99779,7 @@ /turf/open/floor/plasteel/whitegreen/corner, /area/medical/virology) "dXl" = ( -/obj/structure/sign/biohazard, +/obj/structure/sign/warning/biohazard, /turf/closed/wall, /area/medical/virology) "dXm" = ( @@ -100235,7 +99913,7 @@ /obj/structure/table, /obj/item/stack/packageWrap, /obj/item/hand_labeler, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = -32 }, /turf/open/floor/plasteel/vault{ @@ -100745,7 +100423,7 @@ /turf/open/floor/plasteel/white, /area/shuttle/escape) "dYL" = ( -/obj/structure/sign/bluecross_2, +/obj/structure/sign/departments/medbay/alt, /turf/closed/wall/mineral/titanium, /area/shuttle/escape) "dYM" = ( @@ -100780,7 +100458,7 @@ /area/medical/virology) "dYQ" = ( /obj/structure/table/glass, -/obj/structure/sign/deathsposal{ +/obj/structure/sign/warning/deathsposal{ pixel_y = -32 }, /obj/item/paper_bin, @@ -101065,7 +100743,7 @@ /area/hallway/secondary/exit/departure_lounge) "dZr" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/vacuum, +/obj/structure/sign/warning/vacuum, /turf/open/floor/plating, /area/hallway/secondary/exit/departure_lounge) "dZs" = ( @@ -101392,18 +101070,6 @@ /turf/open/floor/plasteel/neutral, /area/hallway/secondary/exit/departure_lounge) "eab" = ( -/obj/machinery/door/airlock/shuttle{ - name = "Emergency Shuttle Airlock" - }, -/obj/docking_port/mobile/emergency{ - dheight = 0; - dwidth = 11; - height = 18; - name = "Delta emergency shuttle"; - width = 30; - preferred_direction = 2; - port_direction = 4 - }, /obj/docking_port/stationary{ dheight = 0; dir = 4; @@ -101414,14 +101080,8 @@ turf_type = /turf/open/space; width = 30 }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plasteel/white, -/area/shuttle/escape) +/turf/open/space/basic, +/area/space) "eac" = ( /obj/structure/flora/ausbushes/grassybush, /obj/structure/flora/ausbushes/lavendergrass, @@ -101682,10 +101342,6 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/hallway/secondary/exit/departure_lounge) -"eaF" = ( -/obj/effect/landmark/lightsout, -/turf/open/floor/plasteel/neutral, -/area/hallway/secondary/exit/departure_lounge) "eaG" = ( /obj/structure/reagent_dispensers/fueltank, /obj/item/device/radio/intercom{ @@ -101741,7 +101397,7 @@ /turf/open/floor/plating, /area/medical/virology) "eaL" = ( -/obj/structure/sign/vacuum, +/obj/structure/sign/warning/vacuum, /turf/closed/wall/r_wall, /area/medical/virology) "eaM" = ( @@ -101841,7 +101497,7 @@ }, /area/maintenance/port/aft) "eaW" = ( -/obj/structure/sign/electricshock, +/obj/structure/sign/warning/electricshock, /turf/closed/wall/r_wall, /area/maintenance/port/aft) "eaX" = ( @@ -102366,7 +102022,7 @@ /obj/machinery/light{ dir = 4 }, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = 32 }, /turf/open/floor/plasteel{ @@ -102489,7 +102145,7 @@ /turf/open/floor/plating, /area/maintenance/solars/port/aft) "ecn" = ( -/obj/structure/sign/electricshock, +/obj/structure/sign/warning/electricshock, /turf/closed/wall/r_wall, /area/maintenance/solars/port/aft) "eco" = ( @@ -103361,7 +103017,7 @@ /area/chapel/office) "edW" = ( /obj/item/twohanded/required/kirbyplants/random, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = 32 }, /turf/open/floor/plasteel/grimy, @@ -103496,7 +103152,7 @@ icon_state = "0-8" }, /obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/vacuum, +/obj/structure/sign/warning/vacuum, /turf/open/floor/plating, /area/security/checkpoint/escape) "eek" = ( @@ -104926,10 +104582,6 @@ }, /turf/closed/wall, /area/quartermaster/office) -"ehu" = ( -/obj/machinery/rnd/protolathe/department/security, -/turf/open/floor/plasteel/neutral, -/area/security/main) "ehv" = ( /turf/open/floor/plasteel/caution, /area/engine/engineering) @@ -104940,13 +104592,6 @@ }, /turf/open/floor/plasteel/caution, /area/engine/engineering) -"ehx" = ( -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/obj/machinery/rnd/protolathe/department/engineering, -/turf/open/floor/plasteel/neutral, -/area/engine/engineering) "ehy" = ( /obj/effect/turf_decal/stripes/line{ dir = 2 @@ -104957,76 +104602,6 @@ /obj/effect/turf_decal/caution/stand_clear, /turf/open/floor/plasteel, /area/hallway/secondary/entry) -"ehz" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/caution/stand_clear, -/turf/open/floor/plasteel, -/area/hallway/secondary/entry) -"ehA" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/caution/stand_clear, -/turf/open/floor/plasteel, -/area/hallway/secondary/entry) -"ehB" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/caution/stand_clear, -/turf/open/floor/plasteel, -/area/hallway/secondary/entry) -"ehC" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/caution/stand_clear, -/turf/open/floor/plasteel, -/area/hallway/secondary/entry) -"ehD" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/caution/stand_clear, -/turf/open/floor/plasteel, -/area/hallway/secondary/entry) -"ehE" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/caution/stand_clear, -/turf/open/floor/plasteel, -/area/hallway/secondary/entry) -"ehF" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/caution/stand_clear, -/turf/open/floor/plasteel, -/area/hallway/secondary/entry) "ehG" = ( /obj/item/device/radio/intercom{ name = "Station Intercom"; @@ -105094,40 +104669,12 @@ /obj/effect/turf_decal/caution/stand_clear, /turf/open/floor/plasteel, /area/hallway/secondary/exit/departure_lounge) -"ehN" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/caution/stand_clear, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit/departure_lounge) -"ehO" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/caution/stand_clear, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit/departure_lounge) "ehP" = ( /obj/machinery/computer/security/telescreen/entertainment{ pixel_y = -32 }, /turf/open/floor/plasteel/dark, /area/library) -"ehQ" = ( -/obj/structure/cable/white{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/landmark/lightsout, -/turf/open/floor/plasteel/grimy, -/area/chapel/main) "QNf" = ( /obj/machinery/autolathe, /obj/machinery/door/window/southleft{ @@ -105139,7 +104686,9 @@ id = "rndlab1"; name = "Research and Development Shutter" }, -/turf/open/floor/plating, +/turf/open/floor/plasteel/whitepurple/side{ + dir = 4 + }, /area/science/lab) "QNg" = ( /obj/effect/turf_decal/loading_area, @@ -105159,12 +104708,6 @@ "QNi" = ( /turf/closed/wall, /area/science/circuit) -"QNj" = ( -/turf/closed/wall/r_wall, -/area/science/circuit) -"QNk" = ( -/turf/closed/wall/r_wall, -/area/science/circuit) "QNl" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall/r_wall, @@ -105173,9 +104716,6 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/closed/wall/r_wall, /area/science/circuit) -"QNn" = ( -/turf/closed/wall, -/area/science/circuit) "QNo" = ( /obj/structure/table/reinforced, /obj/machinery/camera{ @@ -105207,13 +104747,6 @@ }, /turf/open/floor/plasteel, /area/science/circuit) -"QNr" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/closed/wall/r_wall, -/area/science/circuit) -"QNs" = ( -/turf/closed/wall, -/area/science/circuit) "QNt" = ( /obj/structure/chair/office/light{ dir = 8 @@ -105235,23 +104768,6 @@ dir = 9 }, /area/science/circuit) -"QNw" = ( -/turf/open/floor/plasteel/white/side{ - dir = 5 - }, -/area/science/circuit) -"QNx" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/plasteel/white/side{ - dir = 9 - }, -/area/science/circuit) -"QNy" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/science/circuit) "QNz" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -105264,9 +104780,6 @@ }, /turf/open/floor/plasteel/whitepurple/side, /area/science/misc_lab) -"QNB" = ( -/turf/closed/wall, -/area/science/circuit) "QNC" = ( /obj/structure/table/reinforced, /obj/item/device/integrated_electronics/analyzer, @@ -105291,7 +104804,7 @@ name = "science camera"; network = list("SS13","RD") }, -/obj/structure/sign/science{ +/obj/structure/sign/departments/science{ pixel_x = 32 }, /turf/open/floor/plasteel, @@ -105321,9 +104834,6 @@ dir = 4 }, /area/science/misc_lab) -"QNH" = ( -/turf/closed/wall, -/area/science/circuit) "QNI" = ( /obj/structure/table/reinforced, /obj/item/device/integrated_electronics/analyzer, @@ -105342,17 +104852,10 @@ /obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, /area/science/circuit) -"QNL" = ( -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plasteel, -/area/science/circuit) "QNM" = ( /obj/structure/sign/nanotrasen, /turf/closed/wall/r_wall, /area/science/circuit) -"QNN" = ( -/turf/closed/wall, -/area/science/circuit) "QNO" = ( /turf/open/floor/plasteel/white/side{ dir = 6 @@ -105372,9 +104875,6 @@ dir = 6 }, /area/science/circuit) -"QNR" = ( -/turf/closed/wall, -/area/science/circuit) "QNS" = ( /obj/structure/table/reinforced, /obj/machinery/newscaster{ @@ -105418,15 +104918,9 @@ "QNX" = ( /turf/closed/wall/r_wall, /area/science/misc_lab) -"QNY" = ( -/turf/closed/wall, -/area/science/circuit) "QNZ" = ( /turf/closed/wall, /area/science/misc_lab) -"QOa" = ( -/turf/closed/wall/r_wall, -/area/science/misc_lab) "QOb" = ( /obj/machinery/power/apc{ areastring = "/area/science/research/abandoned"; @@ -130370,14 +129864,14 @@ cEo ddO cQt dgl -QNj +dhR djn dle dmr dog dle drz -QNj +dhR dul dvZ dxH @@ -130627,14 +130121,14 @@ cRP ddP deW cKk -QNj +dhR QNo QNt QNC QNI dpX QNS -QNj +dhR djs dlf dxI @@ -130884,14 +130378,14 @@ cMY cMY cCM dgm -QNj +dhR djp QNu dmt doh QNO drA -QNj +dhR dum dli dpZ @@ -131148,7 +130642,7 @@ QND QNJ QNP drB -QNj +dhR QOb QOc QOh @@ -131398,14 +130892,14 @@ dcb cMY deX dgn -QNj +dhR djr QNu dmv doj QNQ QNT -QNj +dhR dun QOd dxK @@ -131655,14 +131149,14 @@ cNd cMY deX dgo -QNj +dhR QNp -QNx +dok dmw -QNx +dok dqa drC -QNj +dhR duo dmu QOi @@ -131912,14 +131406,14 @@ cMY cMY deY cKl -QNj +dhR djt -QNy -QNy +dmx +dmx dol dqb drD -QNj +dhR dup QOe dxL @@ -132169,14 +131663,14 @@ dcc cMY cOD cKj -QNj +dhR dju dlj dlj QNK dqc QNU -QNj +dhR duq dlh dxM @@ -132426,14 +131920,14 @@ cRS cMY deZ dgo -QNj +dhR djv dlj dlj QNK dqb drE -QNj +dhR dur QOf dxN @@ -132683,14 +132177,14 @@ dcd cMY deX dgo -QNj +dhR QNq QNz QNE doo dqd drF -QNj +dhR dus dwa dom @@ -132893,7 +132387,7 @@ bBd bDb bEP bGw -bIj +bIf bKj bMc bOh @@ -132943,11 +132437,11 @@ dgp QNm QNm dll -QNj +dhR QNM dqe -QNj -QNj +dhR +dhR dut dwb dxO @@ -133324,28 +132818,28 @@ aaa aaa aaa aaa -aav -aav -aav -aav -aav -aav -aav -aav -aav -aav -aav -acR -acR -aav -aav -aav -aav -acR -acR -acR -aav -aav +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -133580,29 +133074,29 @@ aaa aaa aaa aaa -aap -aaw -aaF -aaT -aav -abw -abI -abU -acg -acw -aav -adk -adz -adS -ael -aeI -aav -afH -aga -agu -agP -ahd -aav +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -133837,33 +133331,33 @@ aaa aaa aaa aaa -aap -aaw -aaG -aaU -aav -abx -abI -aaL -ach -abo -aav -adl -adA -adT -aem -aeJ -aav -afI -aen -agv -aen -ahe -aav -aav -aav -acR -acR +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -134095,33 +133589,33 @@ aab aaa aaa aaa -aav -aav -aaV -aaq -aaq -abJ -aaL -aci -acx -aav -adm -adB -adU -aen -aeK -aav -afJ -aen -agw -agQ -ahf -aav -ahI -ahZ -ait -acR -acR +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -134352,33 +133846,33 @@ aaa aaa aaa aaa -aav -aaH -aaW -abk -aaq -aav -aav -acj -aav -aav -aav -aav -acR -aeo -aeL -aav -acR -agb -agx -aav -aav -aav -ahJ -aci -ahh -aiK -acR +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -134609,33 +134103,33 @@ aaa aaa aaa aaa -aav -aaI -aaX -abl -aby -abK -abV -ack -acy -acR -adn -adC -adV -aep -aeM -afl -afK -agc -agy -aaW -aaW -ahy -aci -aci -aiu -aiL -acR +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -134865,34 +134359,34 @@ aaa aaa aaa aaa -aaq -aaq -aaq -aaY -abc -aaW -abL -aaW -acl -aaW -acS -aaW -abc -adW -aeq -aaW -afm -afL -agd -agz -agR -abn -aav -ahK -aia -aci -aiM -acR +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -135122,34 +134616,34 @@ aaa aaa aaa aaa -aar -aax -aaJ -aaZ -aaW -abz -aaW -abc -aaW -acz -acT -ado -abc -abc -aaW -aaW -afn -abc -afn -aaW -aaW -ahg -aav -ahL -aib -aiv -aiN -acR +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -135379,34 +134873,34 @@ aaa aaa aaa aaa -aaq -aay -aaq -aba -abm -aaW -aaW -abW -aaW -aaW -acS -aaW -aaW -adX -abc -aaW -afo -afM -age -aaW -aaW -ahh -aav -aaY -aci -aci -aiO -acR +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -135637,33 +135131,33 @@ aaa aaa aaa aaa -aav -aaK -aaY -abn -abA -abM -abX -acm -acA -acR -adp -adD -aaW -aer -aaW -afp -afN -agf -agA -aaW -ahi -ahy -aci -aci -aiw -aiP -acR +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -135894,33 +135388,33 @@ aaa aaa aaa aaa -aav -aaL -aaW -abo -aaq -aav -aav -abY -aav -aav -aav -aav -adY -aav -aeN -acR -afO -aav -aav -adY -aav -aav -ahM -aci -aix -aiy -acR +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -136151,33 +135645,33 @@ aaa aaa aaa aaa -aav -aav -abb -aaq -aaq -abN -abY -aci -acB -acB -aav -adE -aci -aav -aeO -afq -aci -agg -aav -aci -ahj -aav -ahN -aic -aiy -acR -acR +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -136407,33 +135901,33 @@ aaa aaa aaa aaa -aap -aaw -aaM -abc -aav -aav -aav -aav -acn -acC -acU -aav -adF +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aci -aes -aeP -afr -afP -agh -aes -aci -acU -aav -aav -aav -acR -acR +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -136664,29 +136158,29 @@ aaa aaa aaa aaa -aap -aaz -aaN -abd -aav -abB -abO -abY -aci -acD -acD -aav -adG -aci -aav -aeQ -afs -afs -agi -aav -aci -ahk -aav +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -136922,28 +136416,28 @@ aaa aaa aaa aaa -aav -aav -aav -aav -aav -aav -aav -aav -aav -aav -aav -adH -adZ -aav -aav -acR -acR -aav -aav +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa agS -adH -aav +aaa +aaa aaa aaa aaa @@ -137020,7 +136514,7 @@ cei cfZ chQ cjt -ckS +ckR cms cnO cpu @@ -137776,7 +137270,7 @@ bBr bDo bEY bGI -bIy +bGI bGI bGK bOr @@ -139507,15 +139001,15 @@ aaa aaa aaa aaa -aeT -afQ -aeT -aeT -agU -aeT -aeT -ahQ -aeT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aad adq agk @@ -139761,18 +139255,18 @@ aaa aaa aaa aaa -adI -aet -aeT -aeT -afR -afR -aeu -aeu -ahl -afR -afR -afQ +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaO aaO aaO @@ -139863,7 +139357,7 @@ bvM bvM bvM bvM -cIz +bFE cKu bsO cNm @@ -140017,18 +139511,18 @@ aaa aaa aaa aaa -adI -aed -aeu -aeU -afv -aeu -aeu -aeu -agV -aeu -aeu +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aeu +aaa aid aiA aeb @@ -140099,7 +139593,7 @@ bUA bWN bYV bYV -ccy +bYV cem bYV bYV @@ -140275,18 +139769,18 @@ aaa aaa aaa aaa -adI -aev -aeT -aeT -afS -afS -agD -aeu -aeu -afS -afS -afQ +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaO aaO aaO @@ -140426,7 +139920,7 @@ dKD dUp dVd dVS -ehQ +dVd dVd dVd dVd @@ -140535,15 +140029,15 @@ aaa aaa aaa aaa -aeT -afQ -aeT -aeT -agU -aeT -aeT -ahQ -aeT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aad ads agj @@ -142182,7 +141676,7 @@ bsO cNs cPb cQN -cSt +cSs cUi cQQ cXw @@ -142890,7 +142384,7 @@ aLL aNh aOK aQt -aSb +aLL aTI aVs aNh @@ -143356,19 +142850,19 @@ aaa aad aaa aaa -acZ -adu -adv -aef -adv -adw -adw -adw -adw -agG -aef -adv -adv +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -143612,20 +143106,20 @@ abj aaa aad aaa -acE -acZ -adv -adJ -aeg -aey -aeY -aeY -aeY -aeY -agH -aeg -ahm -adv +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -143772,7 +143266,7 @@ dXN dYH dZp dZZ -eaF +dUx ebm dYH ecH @@ -143869,23 +143363,23 @@ abj aaa aad aaa -acE -ada -adw -adK -aeh -aeh -aeh -aeh -aeh -aeh -aeh -aeh -ahn -adv -adv -adw -adv +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaO ajE @@ -144126,23 +143620,23 @@ abj aaa aad aaa -acE -ada -adw -adL -aeh -aeh -aeZ -aeZ -aeZ -aeZ -agI -aeh -aho -ahA -ahT -aie -adw +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaO ajw @@ -144384,26 +143878,26 @@ aad aad aaa acF -acZ +aaa adu -adM -aeh -aez -afa -afy -afU -afy -agJ -agX -ahp -ahB -ahU -aif -adw +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaO ajw -akh +akg akL aaO amq @@ -144514,7 +144008,7 @@ dqT cPk cXD cPk -dwE +cUp dlR cPk cPk @@ -144640,23 +144134,23 @@ abj aaa aad aaa -acE -ada -adw -adN -aeh -aeh -aeY -aeY -aeY -aeY -agK -aeh -ahq -ahC -ahV -aie -adw +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaO ajw @@ -144897,23 +144391,23 @@ abj aaa aad aaa -acE -ada -adw -adK -aeh -aeh -aeh -aeh -aeh -aeh -aeh -aeh -ahr -adv -adv -adw -adv +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaO ajw @@ -145154,20 +144648,20 @@ abj aaa aad aaa -acE -acZ -adv -adJ -aei -aeA -aeZ -aeZ -aeZ -aeZ -agL -aei -ahs -adv +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -145412,19 +144906,19 @@ aaa aad aaa aaa -acZ -adu -adv -aef -adv -adw -adw -adw -adw -agG -aef -adv -adv +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -146331,29 +145825,29 @@ aaa aaa aaa aaa -dQT -dSV -dSW -dSW -dSX -dSX -dSW -dSW -dYK -dZs +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa eab -dSW -dSX -dSX -dSX -dSW -dYK -dSW -eeV -dSW -dSW -dSW -dSW +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -146587,30 +146081,30 @@ dNT aaa aaa aaa -dQS -dRY -dSW -dTK -dUC -dVm -dVm -dWX -dXP -dWj -dZt -dWj -dXP -dVm -dVm -dVm -dUC -dWj -dSW -eeW -efH -egt -egI -dSW +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -146809,7 +146303,7 @@ cNB cPr cQW cSF -cUy +cUx cQT cXL cZt @@ -146844,30 +146338,30 @@ dNS aaa aaa aaa -dQS -dRY -dSX -dTL +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa dUD -dUD -dUD -dUD -dUD -dUD -dUD -dUD -dUD -dUD -dUD -dUD -dUD -edE -eel -eeW -eeW -eeW -egI -dSX +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -147101,30 +146595,30 @@ dNS aaa aaa aaa -dQS -dRY -dSX -dTL -dUD -dVn -dVn -dVn -dVn -dVn -dUD -dVn -dVn -dVn -dVn -dVn -dUD -edE -dSW -eeX -eeW -eeW -egJ -dSW +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -147358,35 +146852,35 @@ dNT aad aaa aaa -dQT -dQT -dSW -dTL -dUD -dVo -dWh -dWY -dXQ -dVo -dUD -eac -dXQ -ebn -dWi -eac -dUD -edE -dSX -eeX -eeW -egu -egI -dSW -dSW -dZs -dSX -dSW -dSW +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aab aaa aaa @@ -147615,35 +147109,35 @@ dNS aaa aaa aaa -dQS -dRY -dSW -dTM -dUD -dVm -dVm -dVm -dVm -dVm -dUD -dVm -dVm -dVm -dVm -dVm -dUD -edE -dSW -eeY -eeW -egv -egK -dSW -egR -egW -ehb -ehi -dSW +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -147872,35 +147366,35 @@ dNS aaa aaa aaa -dQS -dRY -dSX -dTL -dUD -dUD -dUD -dUD -dUD -dUD -dUD -dUD -dUD -dUD -dUD -dUD -dUD -edF -dSW -dSW -eel -dSX -dZs -dSW -egS -egX -ehc -ehj -dSX +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -148129,35 +147623,35 @@ dNT aad aaa aaa -dQT -dQT -dSW -dTM -dUD -dVn -dVn -dVn -dVn -dVn -dUD -dVn -dVn -dVn -dVn -dVn -dUD -edE -dSX -eeZ -efI -egw -egL -dUF -egT -egT -ehd -ehk -dSX +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -148386,35 +147880,35 @@ dNS aaa aaa aaa -dQS -dRY -dSX -dTL -dUD -dVo -dWi -dWY -dXQ -dVo -dUD -eac -dWh -ebn -ecd -eac -dUD -edE -eem -dTL -dUD -dUD -egM -eem -egT -egT -ehe -ehl -dSX +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -148643,35 +148137,35 @@ dNS aaa aaa aaa -dQS -dRY -dSX -dTL -dUD -dVm -dVm -dVm -dVm -dVm -dUD -dVm -dVm -dVm -dVm -dVm -dUD -edE -eem -dTL -dUD -dUD -egM -eem -egT -egT -ehf -ehm -dSX +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -148900,35 +148394,35 @@ dNT aad aaa aaa -dQT -dQT -dSW -dTL -dUD -dUD -dUD -dUD -dUD -dUD -dUD -dUD -dUD -dUD -dUD -dUD -dUD -edE -dSX -efa -efJ -egx -efM -dUF -egT -egY -ehd -ehn -dSX +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -149113,7 +148607,7 @@ bvM bvM bvM bvM -cGG +bvM bvM bFE cKE @@ -149157,35 +148651,35 @@ dNS aaa aaa aaa -dQS -dRY -dSX -dTK -dUE -dVn -dWj -dWj -dVn -dVn -dZu -dVn -dVn -dVn -dWj -dWj -dUE -dTK -dSW -dZs -dSW -dSW -egN -dSW -egS -egZ -ehg -eho -dSX +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -149414,35 +148908,35 @@ dNS aaa aaa aaa -dQS -dRY -dSW -dSW -dUF -dSX -dWk -dWk -dSX -dYL -dSW -dSW -dSW -dSW -ece -ece -dSW -dSW -dSW -efb -efK -egy -egO -dSW -egU -eha -ehh -ehp -dSW +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -149671,35 +149165,35 @@ dNT aad aaa aaa -dQT -dQT -dSW -dTN -dUG -dVp -dWj -dWj -dXR -dYM -dSW -ead -eaG -ebo -dWj -dWj -edc -edG -dSW -efc -efL -dSV -dSW -dSW -dSW -dZs -dSX -dSW -dSW +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -149928,30 +149422,30 @@ dNS aaa aaa aaa -dQS -dRY -dSX -dTO -dUH -dVq -dUD -dUD -dXS -dYN -dZv -dWj -eaH -ebp -ebp -ebp -edd -edH -dSW -efd -efM -egz -egP -dSW +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -150185,30 +149679,30 @@ dNS aaa aaa aaa -dQS -dRY -dSX -dTP -dUI -dVr -dUD -dUD -dXS -dYN -dZv -dWj -eaI -ebq -ebq -ebq -ede -edH -dSW -efc -efN -dTL -egP -dSX +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -150442,30 +149936,30 @@ dNT aaa aaa aaa -dQS -dRY -dSW -dTQ -dUJ -dVs -dWl -dWZ -dXT -dYO -dYL -eae -eaJ -ebr -ecf -ecf -dTK -edI -dSW -dTK -efO -egA -egP -dSW +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -150640,7 +150134,7 @@ ccX ceO cgC cim -cjW +cjV clk cmS cou @@ -150700,29 +150194,29 @@ aaa aaa aaa aaa -dQT -dSV -dSW -dSX -dSX -dSX -dSX -dSW -dSW -dZs -dSW -dSX -dSX -dSX -dSX -dSX -dSW -dSW -dSX -efP -efP -dSX -dSW +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -150906,7 +150400,7 @@ crj csM cbk cvM -cxe +cxa bsE cAm cBL @@ -152127,17 +151621,17 @@ atE auM aoE aaa -ayF -ayF -ayF -aCe +aaa +aaa +aaa +aaa aDi -ayF -aDi -aGG -ayF -ayF -ayF +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aad @@ -152384,18 +151878,18 @@ atF auN aoE aaa -ayF -azH -aAL -aAL -aDj -aEj -aDj -aDj -aHY -ayF -ayF -aLZ +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aad aQQ @@ -152641,18 +152135,18 @@ atG auO aoF aaa -ayF -azI +aaa +aaa +aaa +aaa aAM -aCf -aAM -aAM -aAM -aAN -aHZ -aJw -aKT -aMa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aad aQR @@ -152671,15 +152165,15 @@ bkf aaa aaa aaa -brc -brc -buu -brc -brc -buu -brc -brc -brc +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa bHr bJj @@ -152898,18 +152392,18 @@ aoE aoF aoF aaa -ayF -azJ -aAN -aAN -aAN -aAM -aAN -aAM -aIa -aJw -aKU -aMa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aad aQU @@ -152919,24 +152413,24 @@ aVZ aXG aZi aad -bcH -bcH -bcI +aaa +aaa +aaa bgU -bcI -bcH -bcH aaa aaa -brd -bsX -buv -bvU -bxj -byA -bzZ -brc -bDU +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa bHs bJk @@ -153155,18 +152649,18 @@ aad aad aaa aaa -ayF -azK -aAN -aAM -aAM -aAM -aAM -aAM -aIa -aJx -aKU -aMa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aad aQS @@ -153176,24 +152670,24 @@ aWa aXH aQS aad -bcH -bem -bfK -bgV -biv -bkg -bcH aaa aaa -brd -bsY -buw -bvV -bxk -byB +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa bAa -bBX -bDU +aaa +aaa aaa bHs bJl @@ -153412,18 +152906,18 @@ aac aaa aaa aaa -ayF -azL -aAO -aCg -aAO -aEk -aCg -aAO -aIb -ayF -ayF -aMb +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aad aQV @@ -153433,24 +152927,24 @@ aQQ aXI aZj aad -bcI -ben -bfL +aaa +aaa +aaa bgW -biw -bkh -bmb aaa aaa -brd -bsZ -bux -bvW -bxl -byC -bAb -brc -bDU +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa bHr bJm @@ -153669,17 +153163,17 @@ aaa aaa aaa aaa -ayF -ayF -ayF -ayF -ayF -ayF -aFl -ayF -ayF -ayF -ayF +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aad @@ -153690,24 +153184,24 @@ aaa aad aad aad -bcH -beo -bfM -bgX -bix -bki -bcH aaa aaa -brc -brc -buy -brc -brc -brc +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa bAc -brc -brc +aaa +aaa aaa bHr bHr @@ -153788,7 +153282,7 @@ dSe dSZ dTS dUP -dVB +dTS dWv dXj dYc @@ -153947,13 +153441,13 @@ aad aad aaa aaa -bcH -bcH -bcI -bgY -bcI -bcH -bcH +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -154762,7 +154256,7 @@ csW cux cvX cxo -cyT +cyR cAt cBY cDz @@ -154998,7 +154492,7 @@ bHu bJq bHu bHu -bPn +bHu bHu bHu bVi @@ -158111,7 +157605,7 @@ cFB cDI cIj cJr -cLh +cLd cMC cNV cPV @@ -158572,7 +158066,7 @@ aUy aWg aXM aZu -bbj +bbd bcP bcM aad diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index fd1880db11..4d3978fc15 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -478,7 +478,8 @@ /obj/docking_port/mobile/pod{ id = "pod2"; name = "escape pod 2"; - port_direction = 2 + port_direction = 2; + timid = 0 }, /turf/open/floor/mineral/titanium/blue, /area/shuttle/pod_2) @@ -788,11 +789,7 @@ /obj/machinery/light/small{ dir = 1 }, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = 32 }, /obj/effect/turf_decal/stripes/line{ @@ -1548,7 +1545,8 @@ id = "pod3"; name = "escape pod 3"; port_direction = 2; - preferred_direction = 4 + preferred_direction = 4; + timid = 0 }, /turf/open/floor/mineral/titanium/blue, /area/shuttle/pod_3) @@ -2069,7 +2067,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 5 }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ desc = "A warning sign which reads 'WARNING: Do Not Enter When Red Light Shows', detailing the penalties that any Nanotrasen employee or silicon will suffer if violating this rule."; name = "WARNING: Do Not Enter When Red Light Shows"; pixel_y = 32 @@ -2307,7 +2305,7 @@ /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 1 }, -/obj/structure/sign/pods{ +/obj/structure/sign/warning/pods{ pixel_y = 30 }, /turf/open/floor/plasteel/red/corner{ @@ -2361,7 +2359,7 @@ /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-16" }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ desc = "A warning sign which reads 'WARNING: Criminally Insane Inmates', describing the possible hazards of those contained within."; name = "WARNING: Criminally Insane Inmates"; pixel_y = 32 @@ -2566,7 +2564,7 @@ /area/crew_quarters/fitness/recreation) "afz" = ( /obj/structure/closet/emcloset, -/obj/structure/sign/pods{ +/obj/structure/sign/warning/pods{ pixel_y = 30 }, /turf/open/floor/plasteel/vault, @@ -2720,15 +2718,6 @@ dir = 1 }, /area/security/prison) -"afQ" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 2 - }, -/obj/effect/landmark/lightsout, -/turf/open/floor/plasteel/red/corner{ - dir = 1 - }, -/area/security/prison) "afR" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 1 @@ -3099,11 +3088,7 @@ /turf/open/floor/plating, /area/maintenance/solars/port/fore) "agD" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_x = 32 }, /turf/open/floor/plating{ @@ -3152,7 +3137,7 @@ /turf/open/floor/plasteel/vault, /area/security/prison) "agJ" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall, /area/security/prison) "agK" = ( @@ -3181,7 +3166,7 @@ /turf/open/floor/plasteel, /area/security/prison) "agN" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ desc = "A warning sign which reads 'WARNING: Dangerous Inmates'."; name = "\improper WARNING: Dangerous Inmates" }, @@ -4271,11 +4256,7 @@ /turf/open/floor/plating, /area/maintenance/solars/port/fore) "aji" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE" - }, +/obj/structure/sign/warning/electricshock, /turf/closed/wall, /area/maintenance/solars/port/fore) "ajj" = ( @@ -4624,10 +4605,7 @@ }, /area/engine/gravity_generator) "akb" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'RADIOACTIVE AREA'"; - icon_state = "radiation"; - name = "RADIOACTIVE AREA"; +/obj/structure/sign/warning/radiation/rad_area{ pixel_y = 32 }, /obj/effect/turf_decal/bot_white, @@ -4881,7 +4859,7 @@ /area/security/brig) "akz" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/sign/pods{ +/obj/structure/sign/warning/pods{ pixel_x = 32 }, /turf/open/floor/plasteel/red/side{ @@ -5349,7 +5327,7 @@ dir = 2; id = "garbage" }, -/obj/structure/sign/vacuum{ +/obj/structure/sign/warning/vacuum{ pixel_x = -32 }, /turf/open/floor/plating, @@ -7117,11 +7095,7 @@ pixel_x = 4 }, /obj/effect/decal/cleanable/cobweb, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = 32 }, /turf/open/floor/plating, @@ -7226,11 +7200,7 @@ /turf/open/floor/plating, /area/maintenance/solars/starboard/fore) "app" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_x = 32 }, /obj/effect/decal/cleanable/cobweb/cobweb2, @@ -7270,7 +7240,7 @@ /turf/open/floor/plating, /area/maintenance/disposal) "apt" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ name = "\improper STAY CLEAR HEAVY MACHINERY" }, /turf/closed/wall, @@ -7331,7 +7301,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/structure/sign/kiddieplaque/library{ +/obj/structure/sign/plaques/kiddie/library{ pixel_y = -32 }, /turf/open/floor/plasteel/neutral/corner{ @@ -7789,11 +7759,7 @@ /area/space/nearstation) "aqC" = ( /obj/machinery/space_heater, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = 32 }, /turf/open/floor/plating, @@ -7833,11 +7799,7 @@ /area/maintenance/port/fore) "aqH" = ( /obj/machinery/space_heater, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = 32 }, /turf/open/floor/plating{ @@ -9134,11 +9096,7 @@ /turf/open/floor/plating, /area/maintenance/solars/starboard/fore) "atl" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE" - }, +/obj/structure/sign/warning/electricshock, /turf/closed/wall, /area/maintenance/solars/starboard/fore) "atm" = ( @@ -9401,7 +9359,7 @@ }, /area/security/brig) "atO" = ( -/obj/structure/sign/pods, +/obj/structure/sign/warning/pods, /turf/closed/wall/r_wall, /area/security/warden) "atP" = ( @@ -9568,7 +9526,6 @@ /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 4 }, -/obj/effect/landmark/lightsout, /turf/open/floor/plasteel, /area/crew_quarters/dorms) "auj" = ( @@ -9656,11 +9613,8 @@ /area/maintenance/starboard) "auu" = ( /obj/structure/closet/radiation, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'RADIOACTIVE AREA'"; +/obj/structure/sign/warning/radiation/rad_area{ dir = 1; - icon_state = "radiation"; - name = "RADIOACTIVE AREA"; pixel_y = 32 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -9683,11 +9637,8 @@ c_tag = "Gravity Generator Foyer" }, /obj/structure/closet/radiation, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'RADIOACTIVE AREA'"; +/obj/structure/sign/warning/radiation/rad_area{ dir = 1; - icon_state = "radiation"; - name = "RADIOACTIVE AREA"; pixel_y = 32 }, /obj/machinery/airalarm{ @@ -9734,11 +9685,7 @@ /area/maintenance/starboard/fore) "auB" = ( /obj/structure/closet/emcloset, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_x = 32 }, /turf/open/floor/plating, @@ -9755,11 +9702,7 @@ icon_state = "crateopen"; opened = 1 }, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = 32 }, /obj/effect/decal/cleanable/cobweb, @@ -9888,11 +9831,7 @@ dir = 6 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_x = -32 }, /turf/open/floor/plasteel/red/corner{ @@ -10163,11 +10102,8 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'RADIOACTIVE AREA'"; +/obj/structure/sign/warning/radiation/rad_area{ dir = 1; - icon_state = "radiation"; - name = "RADIOACTIVE AREA"; pixel_y = 32 }, /obj/effect/turf_decal/stripes/line{ @@ -10256,11 +10192,8 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'RADIOACTIVE AREA'"; +/obj/structure/sign/warning/radiation/rad_area{ dir = 1; - icon_state = "radiation"; - name = "RADIOACTIVE AREA"; pixel_y = 32 }, /obj/effect/turf_decal/stripes/line{ @@ -10354,11 +10287,7 @@ /turf/open/floor/plating, /area/maintenance/port/fore) "avK" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = 32 }, /obj/effect/turf_decal/stripes/line{ @@ -10663,7 +10592,6 @@ /obj/structure/cable/yellow{ icon_state = "2-8" }, -/obj/effect/landmark/lightsout, /turf/open/floor/plasteel, /area/security/brig) "awn" = ( @@ -11307,15 +11235,6 @@ dir = 1 }, /area/crew_quarters/dorms) -"axH" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/dorms) "axI" = ( /obj/machinery/door/airlock{ id_tag = "Cabin5"; @@ -11464,7 +11383,7 @@ /turf/open/floor/plasteel, /area/engine/engineering) "axV" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_y = 32 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -11497,7 +11416,7 @@ dir = 8; name = "emergency shower" }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_y = 32 }, /obj/effect/turf_decal/stripes/line{ @@ -11640,8 +11559,8 @@ }, /area/security/nuke_storage) "ayt" = ( -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/labor) +/turf/open/space/basic, +/area/space) "ayu" = ( /obj/machinery/mineral/labor_claim_console{ machinedir = 1; @@ -11965,8 +11884,8 @@ /turf/open/floor/plating/airless, /area/space/nearstation) "azh" = ( -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/mining) +/turf/open/space/basic, +/area/space) "azi" = ( /obj/structure/chair{ dir = 1 @@ -12684,29 +12603,17 @@ }, /area/library) "aAA" = ( -/obj/machinery/door/airlock/titanium{ - name = "Mining Shuttle Airlock"; - req_access_txt = "0" - }, -/obj/docking_port/mobile{ - dir = 8; - dwidth = 3; - height = 5; - id = "mining"; - name = "mining shuttle"; - port_direction = 4; - width = 7 - }, /obj/docking_port/stationary{ dir = 8; dwidth = 3; height = 5; id = "mining_home"; name = "mining shuttle bay"; - width = 7 + width = 7; + roundstart_template = /datum/map_template/shuttle/mining/box }, -/turf/open/floor/plating, -/area/shuttle/mining) +/turf/open/space/basic, +/area/space) "aAB" = ( /obj/machinery/door/airlock/external{ name = "Mining Dock Airlock"; @@ -12897,29 +12804,17 @@ /turf/open/floor/mineral/titanium/blue, /area/shuttle/labor) "aAV" = ( -/obj/machinery/door/airlock/titanium{ - id_tag = "prisonshuttle"; - name = "Labor Shuttle Airlock" - }, -/obj/docking_port/mobile{ - dir = 8; - dwidth = 2; - height = 5; - id = "laborcamp"; - name = "labor camp shuttle"; - port_direction = 4; - width = 9 - }, /obj/docking_port/stationary{ dir = 8; dwidth = 2; height = 5; id = "laborcamp_home"; name = "fore bay 1"; - width = 9 + width = 9; + roundstart_template = /datum/map_template/shuttle/labour/box }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/labor) +/turf/open/space/basic, +/area/space) "aAW" = ( /obj/machinery/door/airlock/external{ name = "Labor Camp Shuttle Airlock" @@ -13212,7 +13107,7 @@ /area/crew_quarters/dorms) "aBB" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/sign/pods{ +/obj/structure/sign/warning/pods{ pixel_x = 30 }, /turf/open/floor/plasteel/neutral/corner{ @@ -13391,12 +13286,7 @@ /turf/open/floor/plasteel, /area/quartermaster/miningoffice) "aBU" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK" - }, +/obj/structure/sign/warning/vacuum/external, /turf/closed/wall, /area/quartermaster/miningoffice) "aBV" = ( @@ -14062,7 +13952,7 @@ /turf/closed/wall/r_wall, /area/security/nuke_storage) "aDq" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 10 }, @@ -14083,7 +13973,7 @@ }, /area/security/nuke_storage) "aDs" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall/r_wall, /area/security/nuke_storage) "aDt" = ( @@ -14119,10 +14009,7 @@ }, /area/hallway/primary/fore) "aDy" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE"; +/obj/structure/sign/warning/electricshock{ pixel_y = 32 }, /turf/open/floor/plasteel/red/corner{ @@ -14130,10 +14017,7 @@ }, /area/hallway/primary/fore) "aDz" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE"; +/obj/structure/sign/warning/electricshock{ pixel_y = 32 }, /obj/machinery/camera{ @@ -14775,11 +14659,7 @@ /turf/open/floor/plasteel, /area/hallway/primary/fore) "aEJ" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = 32 }, /obj/machinery/light/small{ @@ -16138,7 +16018,7 @@ /obj/machinery/light/small{ dir = 1 }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_y = 30 }, /obj/effect/turf_decal/stripes/line{ @@ -17186,12 +17066,7 @@ /area/engine/supermatter) "aJB" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK" - }, +/obj/structure/sign/warning/vacuum/external, /turf/open/floor/plating, /area/quartermaster/storage) "aJC" = ( @@ -17990,7 +17865,7 @@ /turf/open/floor/plasteel/dark, /area/ai_monitored/turret_protected/ai_upload) "aLs" = ( -/obj/structure/sign/kiddieplaque{ +/obj/structure/sign/plaques/kiddie{ pixel_y = 32 }, /obj/structure/table, @@ -18169,7 +18044,7 @@ dir = 2; network = list("SS13") }, -/obj/structure/sign/pods{ +/obj/structure/sign/warning/pods{ pixel_y = 30 }, /obj/effect/turf_decal/delivery, @@ -19276,7 +19151,6 @@ /obj/structure/cable/yellow{ icon_state = "4-8" }, -/obj/effect/landmark/lightsout, /turf/open/floor/plasteel/floorgrime, /area/crew_quarters/locker) "aOA" = ( @@ -20654,10 +20528,7 @@ /obj/machinery/light{ dir = 8 }, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE"; +/obj/structure/sign/warning/electricshock{ pixel_x = -31 }, /obj/structure/cable{ @@ -20787,7 +20658,8 @@ /obj/docking_port/mobile/pod{ id = "pod1"; name = "escape pod 1"; - port_direction = 2 + port_direction = 2; + timid = 0 }, /turf/open/floor/mineral/titanium/blue, /area/shuttle/pod_1) @@ -21948,7 +21820,7 @@ /turf/open/floor/plasteel/dark, /area/aisat) "aUb" = ( -/obj/structure/sign/pods, +/obj/structure/sign/warning/pods, /turf/closed/wall, /area/hallway/secondary/entry) "aUc" = ( @@ -22729,11 +22601,6 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/quartermaster/storage) -"aVI" = ( -/obj/effect/landmark/lightsout, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, -/area/quartermaster/storage) "aVJ" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 5 @@ -23006,7 +22873,7 @@ /turf/open/floor/plasteel, /area/crew_quarters/locker) "aWo" = ( -/obj/structure/sign/pods, +/obj/structure/sign/warning/pods, /turf/closed/wall, /area/crew_quarters/locker) "aWp" = ( @@ -23215,11 +23082,7 @@ /turf/open/floor/plasteel, /area/hallway/secondary/entry) "aWV" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = -32 }, /obj/effect/turf_decal/stripes/line, @@ -23589,7 +23452,7 @@ dir = 2; network = list("SS13") }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ desc = "A warning sign which reads 'HIGH-POWER TURRETS AHEAD'."; name = "\improper HIGH-POWER TURRETS AHEAD"; pixel_y = 32 @@ -23646,7 +23509,7 @@ /obj/machinery/light/small{ dir = 1 }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_y = 32 }, /obj/effect/turf_decal/stripes/corner{ @@ -23698,7 +23561,6 @@ /obj/structure/cable/yellow{ icon_state = "1-2" }, -/obj/effect/landmark/lightsout, /obj/effect/turf_decal/plaque{ icon_state = "L7" }, @@ -24035,7 +23897,7 @@ }, /area/crew_quarters/heads/chief) "aYs" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_y = 32 }, /obj/structure/closet/radiation, @@ -24107,10 +23969,7 @@ }, /area/ai_monitored/turret_protected/ai) "aYC" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'."; - name = "KEEP CLEAR: DOCKING AREA" - }, +/obj/structure/sign/warning/docking, /turf/closed/wall, /area/hallway/secondary/entry) "aYE" = ( @@ -24135,11 +23994,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 5 }, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = -32 }, /obj/effect/turf_decal/stripes/line, @@ -24646,7 +24501,6 @@ /turf/open/floor/plasteel, /area/engine/engineering) "aZJ" = ( -/obj/effect/landmark/lightsout, /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 9 @@ -25947,7 +25801,6 @@ "bbZ" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/landmark/lightsout, /turf/open/floor/plasteel, /area/hallway/primary/port) "bca" = ( @@ -27047,12 +26900,7 @@ /turf/closed/wall, /area/engine/break_room) "beq" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK" - }, +/obj/structure/sign/warning/vacuum/external, /turf/closed/wall/r_wall, /area/space/nearstation) "bes" = ( @@ -27150,8 +26998,8 @@ /turf/open/floor/mineral/titanium/blue, /area/shuttle/arrival) "beC" = ( -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/arrival) +/turf/open/space/basic, +/area/space) "beD" = ( /obj/machinery/computer/arcade, /obj/machinery/light{ @@ -27386,11 +27234,6 @@ /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/hallway/primary/port) -"bfe" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel, -/area/hallway/primary/port) "bff" = ( /turf/open/floor/plasteel/brown/corner{ dir = 4 @@ -28742,7 +28585,7 @@ /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 1 }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_y = 32 }, /turf/open/floor/plasteel/yellow/corner{ @@ -28827,7 +28670,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_y = 32 }, /obj/structure/table/glass, @@ -28926,7 +28769,8 @@ id = "pod4"; name = "escape pod 4"; port_direction = 2; - preferred_direction = 4 + preferred_direction = 4; + timid = 0 }, /turf/open/floor/mineral/titanium/blue, /area/shuttle/pod_4) @@ -29063,7 +28907,7 @@ }, /area/hallway/secondary/entry) "biw" = ( -/obj/structure/sign/pods, +/obj/structure/sign/warning/pods, /turf/closed/wall, /area/security/checkpoint/customs) "bix" = ( @@ -30556,7 +30400,7 @@ /turf/open/floor/plasteel, /area/engine/break_room) "bls" = ( -/obj/structure/sign/pods, +/obj/structure/sign/warning/pods, /turf/closed/wall/r_wall, /area/engine/break_room) "blt" = ( @@ -32500,7 +32344,7 @@ /turf/closed/wall/r_wall, /area/space/nearstation) "bpv" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_y = 32 }, /obj/structure/transit_tube/station/reverse/flipped{ @@ -33631,7 +33475,7 @@ /area/hallway/primary/starboard) "brz" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = 32 }, /turf/open/floor/plasteel/dark/corner{ @@ -34106,7 +33950,6 @@ /obj/structure/cable/yellow{ icon_state = "2-4" }, -/obj/effect/landmark/lightsout, /turf/open/floor/plasteel, /area/hallway/secondary/entry) "bsp" = ( @@ -34755,7 +34598,7 @@ /area/crew_quarters/heads/hop) "btD" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = 32 }, /turf/open/floor/plasteel, @@ -34883,11 +34726,7 @@ /turf/open/floor/plasteel, /area/hallway/secondary/entry) "btS" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = 32 }, /obj/effect/turf_decal/stripes/line{ @@ -35675,11 +35514,7 @@ /area/hallway/secondary/entry) "bvC" = ( /obj/structure/chair, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = 32 }, /obj/effect/turf_decal/stripes/line{ @@ -36295,7 +36130,7 @@ /turf/open/floor/plasteel/bar, /area/crew_quarters/bar) "bwQ" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ desc = "Under the painting a plaque reads: 'While the meat grinder may not have spared you, fear not. Not one part of you has gone to waste... You were delicious.'"; icon_state = "monkey_painting"; name = "Mr. Deempisi portrait"; @@ -36486,11 +36321,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 9 }, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = -32 }, /obj/machinery/light/small{ @@ -36583,11 +36414,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = -32 }, /obj/effect/turf_decal/stripes/line, @@ -37283,7 +37110,7 @@ }, /area/engine/atmos) "byV" = ( -/obj/structure/sign/atmosplaque{ +/obj/structure/sign/plaques/atmos{ pixel_y = 32 }, /obj/item/phone{ @@ -37711,10 +37538,7 @@ name = "Station Intercom (General)"; pixel_y = 21 }, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE"; +/obj/structure/sign/warning/electricshock{ pixel_y = 32 }, /obj/effect/turf_decal/bot, @@ -38991,12 +38815,7 @@ /area/tcommsat/server) "bCG" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK" - }, +/obj/structure/sign/warning/vacuum/external, /turf/open/floor/plating, /area/hallway/secondary/entry) "bCH" = ( @@ -39162,18 +38981,6 @@ dir = 1 }, /area/hallway/secondary/command) -"bDc" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/landmark/lightsout, -/turf/open/floor/plasteel/neutral/corner{ - dir = 1 - }, -/area/hallway/secondary/command) "bDd" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -39336,15 +39143,6 @@ dir = 4 }, /area/hallway/secondary/command) -"bDt" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/landmark/lightsout, -/turf/open/floor/plasteel/neutral/corner{ - dir = 4 - }, -/area/hallway/secondary/command) "bDu" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -39463,10 +39261,6 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on, /turf/open/floor/plasteel/bar, /area/crew_quarters/bar) -"bDE" = ( -/obj/effect/landmark/lightsout, -/turf/open/floor/plasteel/bar, -/area/crew_quarters/bar) "bDF" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/bar, @@ -39738,10 +39532,6 @@ }, /turf/open/floor/wood, /area/security/vacantoffice) -"bEr" = ( -/obj/effect/landmark/lightsout, -/turf/open/floor/wood, -/area/security/vacantoffice) "bEs" = ( /obj/item/paper_bin{ pixel_x = -2; @@ -40887,7 +40677,7 @@ /turf/open/floor/plasteel, /area/ai_monitored/storage/eva) "bGA" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall/r_wall, /area/ai_monitored/storage/eva) "bGB" = ( @@ -40923,7 +40713,7 @@ /area/teleporter) "bGE" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall/r_wall, /area/teleporter) "bGF" = ( @@ -40990,7 +40780,7 @@ /turf/closed/wall/r_wall, /area/gateway) "bGN" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall/r_wall, /area/gateway) "bGO" = ( @@ -42963,11 +42753,6 @@ /obj/structure/bookcase/random/adult, /turf/open/floor/wood, /area/library) -"bLj" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/landmark/lightsout, -/turf/open/floor/carpet, -/area/library) "bLk" = ( /obj/structure/bookcase/random/reference, /turf/open/floor/wood, @@ -43330,7 +43115,7 @@ /turf/open/floor/wood, /area/crew_quarters/theatre) "bLT" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall/r_wall, /area/bridge) "bLU" = ( @@ -43883,7 +43668,7 @@ /turf/open/floor/carpet, /area/bridge/showroom/corporate) "bNb" = ( -/obj/structure/sign/kiddieplaque/perfect_drone{ +/obj/structure/sign/plaques/kiddie/perfect_drone{ pixel_y = 32 }, /obj/structure/table/wood, @@ -43985,7 +43770,7 @@ /area/bridge/showroom/corporate) "bNj" = ( /obj/structure/showcase/perfect_employee, -/obj/structure/sign/kiddieplaque/perfect_man{ +/obj/structure/sign/plaques/kiddie/perfect_man{ pixel_y = 32 }, /obj/structure/window/reinforced, @@ -44312,10 +44097,6 @@ }, /turf/open/floor/plasteel, /area/engine/atmos) -"bNT" = ( -/obj/effect/landmark/lightsout, -/turf/open/floor/plasteel, -/area/engine/atmos) "bNU" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 0; @@ -44697,7 +44478,7 @@ /turf/open/floor/plasteel/vault, /area/gateway) "bON" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = -32 }, /obj/structure/cable/yellow{ @@ -44775,11 +44556,7 @@ /turf/open/floor/plasteel/showroomfloor, /area/crew_quarters/kitchen) "bOY" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_x = 32 }, /obj/effect/turf_decal/stripes/line{ @@ -45605,7 +45382,7 @@ /turf/open/floor/plasteel, /area/engine/atmos) "bQT" = ( -/obj/structure/sign/nosmoking_2, +/obj/structure/sign/warning/nosmoking, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall, /area/engine/atmos) @@ -46831,11 +46608,7 @@ /turf/open/floor/plating, /area/maintenance/solars/port/aft) "bTp" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE" - }, +/obj/structure/sign/warning/electricshock, /turf/closed/wall, /area/maintenance/solars/port/aft) "bTq" = ( @@ -47210,7 +46983,7 @@ /area/hallway/primary/central) "bUc" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/sign/botany{ +/obj/structure/sign/departments/botany{ pixel_x = 32; pixel_y = 32 }, @@ -48347,7 +48120,6 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/effect/landmark/lightsout, /obj/effect/turf_decal/plaque{ icon_state = "L8" }, @@ -48865,11 +48637,7 @@ /turf/open/floor/plating, /area/maintenance/solars/port/aft) "bXv" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_x = 32 }, /turf/open/floor/plating, @@ -49479,7 +49247,7 @@ /obj/item/screwdriver{ pixel_y = 6 }, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = 30 }, /turf/open/floor/plasteel/whiteblue/side{ @@ -49601,7 +49369,7 @@ /turf/open/floor/plating, /area/medical/medbay/central) "bZb" = ( -/obj/structure/sign/bluecross_2, +/obj/structure/sign/departments/medbay/alt, /turf/closed/wall, /area/medical/medbay/central) "bZc" = ( @@ -49699,7 +49467,7 @@ /turf/open/floor/plating, /area/science/research) "bZk" = ( -/obj/structure/sign/science, +/obj/structure/sign/departments/science, /turf/closed/wall, /area/science/research) "bZl" = ( @@ -50567,7 +50335,7 @@ }, /obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk, -/obj/structure/sign/deathsposal{ +/obj/structure/sign/warning/deathsposal{ pixel_y = 32 }, /turf/open/floor/plasteel/floorgrime, @@ -50961,7 +50729,6 @@ /turf/open/floor/plasteel/white, /area/medical/storage) "cbL" = ( -/obj/effect/landmark/lightsout, /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 2 }, @@ -51553,11 +51320,7 @@ /turf/open/floor/plating, /area/engine/atmos) "ccX" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = -32 }, /obj/machinery/light/small{ @@ -52030,7 +51793,7 @@ /turf/open/floor/plating, /area/maintenance/starboard) "cdZ" = ( -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = -28 }, /obj/machinery/atmospherics/components/unary/portables_connector/visible{ @@ -52091,7 +51854,7 @@ /turf/open/floor/plasteel/floorgrime, /area/maintenance/disposal/incinerator) "cef" = ( -/obj/structure/sign/fire{ +/obj/structure/sign/warning/fire{ pixel_x = 32 }, /obj/machinery/atmospherics/components/binary/pump{ @@ -52127,11 +51890,7 @@ /turf/open/floor/plating, /area/maintenance/port/aft) "cel" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = 32 }, /obj/effect/turf_decal/stripes/line{ @@ -52410,11 +52169,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plasteel, /area/hallway/primary/aft) -"ceM" = ( -/turf/open/floor/plasteel/whitepurple/side{ - dir = 2 - }, -/area/science/research) "ceN" = ( /obj/structure/table, /obj/machinery/cell_charger, @@ -52438,14 +52192,6 @@ dir = 2 }, /area/science/research) -"ceP" = ( -/obj/structure/table, -/obj/item/stock_parts/cell/potato, -/obj/machinery/light, -/turf/open/floor/plasteel/whitepurple/side{ - dir = 2 - }, -/area/science/research) "ceQ" = ( /obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk{ @@ -52866,7 +52612,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = 30 }, /turf/open/floor/plasteel/vault, @@ -53032,7 +52778,7 @@ /turf/closed/wall, /area/medical/chemistry) "cfW" = ( -/obj/structure/sign/chemistry, +/obj/structure/sign/departments/chemistry, /turf/closed/wall, /area/medical/chemistry) "cfX" = ( @@ -53653,16 +53399,6 @@ dir = 1 }, /area/science/lab) -"chl" = ( -/obj/structure/noticeboard{ - desc = "A board for pinning important notices upon."; - name = "notice board"; - pixel_y = 31 - }, -/turf/open/floor/plasteel/whitepurple/side{ - dir = 1 - }, -/area/science/lab) "chm" = ( /obj/machinery/button/door{ id = "research_shutters"; @@ -53749,14 +53485,14 @@ }, /area/science/research) "chw" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall/r_wall, /area/bridge/showroom/corporate) "chx" = ( /turf/open/floor/engine, /area/science/explab) "chy" = ( -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = 32 }, /obj/machinery/camera{ @@ -54108,7 +53844,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = 28 }, /turf/open/floor/plasteel/whiteblue/corner{ @@ -55132,7 +54868,7 @@ /area/maintenance/starboard/aft) "ckx" = ( /obj/structure/table, -/obj/structure/sign/bluecross{ +/obj/structure/sign/departments/medbay{ pixel_y = 32 }, /obj/item/reagent_containers/glass/beaker/large, @@ -55208,7 +54944,7 @@ /obj/machinery/light/small{ dir = 8 }, -/obj/structure/sign/fire{ +/obj/structure/sign/warning/fire{ pixel_x = -32 }, /obj/machinery/atmospherics/components/binary/pump{ @@ -55234,7 +54970,7 @@ /turf/open/floor/engine, /area/maintenance/disposal/incinerator) "ckF" = ( -/obj/structure/sign/fire{ +/obj/structure/sign/warning/fire{ pixel_x = 32 }, /obj/machinery/light/small{ @@ -55317,7 +55053,7 @@ /area/aisat) "ckU" = ( /obj/structure/chair, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = -28 }, /turf/open/floor/plasteel/dark, @@ -55377,7 +55113,7 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 8 }, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = 28 }, /obj/effect/landmark/blobstart, @@ -55643,7 +55379,7 @@ /obj/machinery/light{ dir = 4 }, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = 30 }, /turf/open/floor/plasteel, @@ -55790,11 +55526,7 @@ }, /area/science/research) "clS" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE" - }, +/obj/structure/sign/warning/electricshock, /turf/closed/wall/r_wall, /area/science/explab) "clT" = ( @@ -56074,7 +55806,7 @@ /area/medical/chemistry) "cmD" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/sign/chemistry{ +/obj/structure/sign/departments/chemistry{ pixel_x = -32 }, /turf/open/floor/plasteel/yellow/corner{ @@ -56086,7 +55818,7 @@ /obj/machinery/light{ dir = 4 }, -/obj/structure/sign/science{ +/obj/structure/sign/departments/science{ pixel_x = 32 }, /turf/open/floor/plasteel/purple/corner{ @@ -56361,11 +56093,7 @@ /turf/open/floor/engine/vacuum, /area/maintenance/disposal/incinerator) "cnf" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = -32 }, /obj/machinery/atmospherics/components/unary/outlet_injector/on{ @@ -56861,7 +56589,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = 32 }, /obj/machinery/camera{ @@ -57520,19 +57248,6 @@ }, /turf/open/floor/plasteel/white, /area/science/research) -"cps" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/landmark/lightsout, -/turf/open/floor/plasteel/white, -/area/science/research) "cpt" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -58477,7 +58192,7 @@ /turf/open/space, /area/space/nearstation) "cre" = ( -/obj/structure/sign/fire, +/obj/structure/sign/warning/fire, /turf/closed/wall/r_wall, /area/maintenance/disposal/incinerator) "crf" = ( @@ -58857,7 +58572,7 @@ /turf/closed/wall/r_wall, /area/science/storage) "crS" = ( -/obj/structure/sign/biohazard, +/obj/structure/sign/warning/biohazard, /turf/closed/wall/r_wall, /area/science/storage) "crT" = ( @@ -58994,7 +58709,7 @@ /area/maintenance/port/aft) "csj" = ( /obj/structure/closet/secure_closet/medical2, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = -28 }, /turf/open/floor/plasteel, @@ -59047,7 +58762,7 @@ dir = 1; pixel_y = -22 }, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = -28 }, /obj/machinery/iv_drip, @@ -59535,7 +59250,7 @@ /obj/machinery/light/small{ dir = 1 }, -/obj/structure/sign/biohazard{ +/obj/structure/sign/warning/biohazard{ pixel_y = 32 }, /turf/open/floor/plasteel/white, @@ -59575,7 +59290,7 @@ /obj/machinery/light/small{ dir = 1 }, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = 32 }, /obj/effect/turf_decal/stripes/line{ @@ -60236,7 +59951,7 @@ dir = 4; pixel_x = 24 }, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = 32 }, /obj/structure/table/glass, @@ -60465,13 +60180,6 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/science/storage) -"cuX" = ( -/obj/effect/landmark/xeno_spawn, -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/starboard/aft) "cuY" = ( /obj/structure/rack, /obj/item/extinguisher, @@ -60484,33 +60192,6 @@ "cuZ" = ( /turf/closed/wall/r_wall, /area/science/circuit) -"cva" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/starboard/aft) -"cvb" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 5 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/starboard/aft) -"cvc" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plating, -/area/maintenance/starboard/aft) "cvd" = ( /obj/structure/cable{ icon_state = "2-4" @@ -60573,11 +60254,7 @@ /area/solar/port/aft) "cvj" = ( /obj/structure/closet/emcloset, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_x = -32 }, /turf/open/floor/plating, @@ -60636,7 +60313,7 @@ "cvq" = ( /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/sign/examroom{ +/obj/structure/sign/departments/examroom{ pixel_x = -32 }, /turf/open/floor/plasteel/white, @@ -60812,7 +60489,7 @@ /turf/open/floor/plating, /area/maintenance/aft) "cvJ" = ( -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = -29 }, /turf/open/floor/engine{ @@ -60980,12 +60657,6 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/science/storage) -"cvZ" = ( -/obj/structure/closet/crate, -/obj/item/device/multitool, -/obj/item/clothing/gloves/color/fyellow, -/turf/open/floor/plating, -/area/maintenance/starboard/aft) "cwa" = ( /obj/structure/reagent_dispensers/watertank/high, /turf/open/floor/plating, @@ -61284,7 +60955,7 @@ icon_state = "2-4" }, /obj/structure/disposalpipe/segment, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = -28 }, /turf/open/floor/plasteel, @@ -61297,10 +60968,7 @@ /turf/open/floor/plating, /area/science/robotics/mechbay) "cwI" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE"; +/obj/structure/sign/warning/electricshock{ pixel_y = 31 }, /turf/open/floor/mech_bay_recharge_floor, @@ -61579,7 +61247,6 @@ /obj/structure/cable/yellow{ icon_state = "1-8" }, -/obj/effect/landmark/lightsout, /turf/open/floor/plasteel/white, /area/medical/medbay/aft) "cxk" = ( @@ -61700,7 +61367,7 @@ }, /area/medical/genetics) "cxy" = ( -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = 28 }, /obj/machinery/disposal/bin, @@ -62131,7 +61798,7 @@ /turf/open/floor/plasteel/white, /area/science/research) "cyy" = ( -/obj/structure/sign/biohazard, +/obj/structure/sign/warning/biohazard, /turf/closed/wall, /area/science/mixing) "cyz" = ( @@ -62216,7 +61883,7 @@ /area/science/mixing) "cyG" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = 32 }, /obj/machinery/light{ @@ -62333,7 +62000,7 @@ /area/medical/medbay/aft) "cyU" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = 28 }, /obj/structure/disposalpipe/segment, @@ -62612,15 +62279,6 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on, /turf/open/floor/plasteel/white, /area/science/mixing) -"czu" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 5 - }, -/turf/open/floor/plasteel/white, -/area/science/mixing) "czv" = ( /obj/machinery/atmospherics/pipe/manifold/general/visible, /turf/open/floor/plasteel/white, @@ -62733,7 +62391,7 @@ /turf/open/floor/plasteel/floorgrime, /area/maintenance/disposal/incinerator) "czI" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ desc = "A warning sign which reads 'BOMB RANGE"; name = "BOMB RANGE" }, @@ -63266,7 +62924,7 @@ /turf/open/floor/plasteel, /area/science/mixing) "cAH" = ( -/obj/structure/sign/biohazard, +/obj/structure/sign/warning/biohazard, /turf/closed/wall/r_wall, /area/science/mixing) "cAI" = ( @@ -63702,7 +63360,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/effect/landmark/lightsout, /turf/open/floor/plasteel, /area/science/misc_lab) "cBF" = ( @@ -63778,7 +63435,7 @@ /turf/open/floor/plasteel, /area/science/mixing) "cBM" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ desc = "A warning sign which reads 'BOMB RANGE"; name = "BOMB RANGE" }, @@ -64411,7 +64068,7 @@ /turf/open/floor/plasteel, /area/science/robotics/lab) "cDe" = ( -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = 32 }, /obj/structure/rack, @@ -64493,7 +64150,7 @@ /turf/closed/wall/r_wall, /area/science/mixing) "cDl" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall/r_wall, /area/science/mixing) "cDm" = ( @@ -64540,11 +64197,7 @@ /turf/open/floor/plating, /area/science/mixing) "cDr" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = -32 }, /obj/machinery/light/small, @@ -65098,11 +64751,7 @@ /turf/open/floor/engine/vacuum, /area/science/mixing) "cEs" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = 32 }, /turf/open/floor/engine/vacuum, @@ -65261,7 +64910,7 @@ dir = 8 }, /obj/structure/table/glass, -/obj/structure/sign/deathsposal{ +/obj/structure/sign/warning/deathsposal{ pixel_x = -30 }, /turf/open/floor/plasteel/whitegreen/side{ @@ -65371,7 +65020,7 @@ pixel_x = 1; pixel_y = 4 }, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = -30 }, /obj/structure/table/glass, @@ -65443,7 +65092,7 @@ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/sign/science{ +/obj/structure/sign/departments/science{ name = "\improper ROBOTICS!"; pixel_x = 32 }, @@ -65593,10 +65242,6 @@ }, /turf/open/floor/plasteel, /area/science/mixing) -"cFt" = ( -/obj/effect/decal/cleanable/oil, -/turf/open/floor/plating, -/area/maintenance/starboard/aft) "cFu" = ( /obj/structure/closet, /obj/item/device/assembly/prox_sensor{ @@ -65773,7 +65418,7 @@ /turf/open/floor/plating, /area/medical/virology) "cFL" = ( -/obj/structure/sign/biohazard{ +/obj/structure/sign/warning/biohazard{ pixel_y = 32 }, /obj/machinery/shower{ @@ -65800,7 +65445,7 @@ /turf/open/floor/plasteel/white, /area/medical/virology) "cFN" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_y = 32 }, /obj/machinery/shower{ @@ -65981,7 +65626,6 @@ /obj/structure/cable/yellow{ icon_state = "1-2" }, -/obj/effect/landmark/lightsout, /turf/open/floor/plasteel/white, /area/science/research) "cGi" = ( @@ -66009,7 +65653,7 @@ /area/science/mixing) "cGk" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/sign/fire{ +/obj/structure/sign/warning/fire{ pixel_y = -32 }, /obj/machinery/atmospherics/components/binary/pump{ @@ -66175,7 +65819,6 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 10 }, -/obj/effect/landmark/lightsout, /obj/machinery/holopad, /obj/structure/cable/yellow{ icon_state = "2-4" @@ -66553,7 +66196,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ desc = "A warning sign which reads 'SERVER ROOM'."; name = "SERVER ROOM" }, @@ -66600,15 +66243,6 @@ }, /turf/closed/wall/r_wall, /area/science/mixing) -"cHj" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/turf/open/floor/plating{ - icon_state = "platingdmg2" - }, -/area/maintenance/starboard/aft) "cHk" = ( /obj/structure/cable, /obj/machinery/power/tracker, @@ -66763,7 +66397,7 @@ /turf/open/floor/plasteel/white, /area/medical/virology) "cHz" = ( -/obj/structure/sign/biohazard{ +/obj/structure/sign/warning/biohazard{ pixel_x = -32 }, /turf/open/floor/plasteel/whitegreen/side{ @@ -66789,7 +66423,7 @@ }, /area/medical/medbay/aft) "cHB" = ( -/obj/structure/sign/biohazard{ +/obj/structure/sign/warning/biohazard{ pixel_x = -32 }, /obj/item/storage/box/gloves{ @@ -66803,7 +66437,7 @@ }, /area/medical/medbay/aft) "cHC" = ( -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = -30 }, /obj/item/storage/box/beakers{ @@ -66866,7 +66500,7 @@ /obj/item/reagent_containers/blood/empty, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/dropper, -/obj/structure/sign/biohazard{ +/obj/structure/sign/warning/biohazard{ pixel_x = 32 }, /turf/open/floor/plasteel/floorgrime, @@ -67097,7 +66731,7 @@ /area/science/server) "cId" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ desc = "A warning sign which reads 'SERVER ROOM'."; name = "SERVER ROOM"; pixel_y = 32 @@ -67145,7 +66779,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/structure/sign/biohazard{ +/obj/structure/sign/warning/biohazard{ pixel_y = 32 }, /turf/open/floor/plating, @@ -67299,7 +66933,7 @@ /turf/open/floor/plasteel/vault, /area/medical/virology) "cIy" = ( -/obj/structure/sign/biohazard{ +/obj/structure/sign/warning/biohazard{ pixel_x = -32 }, /turf/open/space, @@ -67577,11 +67211,7 @@ /turf/open/floor/plating, /area/maintenance/starboard/aft) "cJe" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = -32 }, /obj/structure/cable/yellow{ @@ -68363,7 +67993,7 @@ /turf/open/floor/plating, /area/maintenance/aft) "cKI" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall/r_wall, /area/science/research) "cKJ" = ( @@ -68437,11 +68067,7 @@ /turf/open/floor/plating, /area/maintenance/solars/starboard/aft) "cKR" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE" - }, +/obj/structure/sign/warning/electricshock, /turf/closed/wall/r_wall, /area/maintenance/solars/starboard/aft) "cKS" = ( @@ -69719,11 +69345,7 @@ /obj/structure/cable{ icon_state = "0-8" }, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = -32 }, /turf/open/floor/plating, @@ -69908,10 +69530,6 @@ }, /turf/open/floor/plasteel, /area/hallway/secondary/exit/departure_lounge) -"cNM" = ( -/obj/effect/landmark/lightsout, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit/departure_lounge) "cNN" = ( /obj/structure/flora/ausbushes/fernybush, /obj/structure/flora/ausbushes/fullgrass, @@ -69975,7 +69593,7 @@ }, /area/hallway/secondary/exit/departure_lounge) "cNT" = ( -/obj/structure/sign/vacuum{ +/obj/structure/sign/warning/vacuum{ pixel_x = 32 }, /obj/effect/turf_decal/stripes/line, @@ -70473,7 +70091,7 @@ /obj/structure/chair{ dir = 8 }, -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_x = 32 }, /obj/effect/turf_decal/stripes/line{ @@ -70697,7 +70315,7 @@ /turf/open/floor/carpet, /area/chapel/main) "cPE" = ( -/obj/structure/sign/kiddieplaque/badger{ +/obj/structure/sign/plaques/kiddie/badger{ pixel_y = 32 }, /obj/item/reagent_containers/food/snacks/grown/poppy{ @@ -71224,7 +70842,7 @@ }, /area/chapel/main) "cQJ" = ( -/obj/structure/sign/vacuum{ +/obj/structure/sign/warning/vacuum{ pixel_x = -32 }, /obj/effect/turf_decal/delivery, @@ -71261,7 +70879,7 @@ /turf/open/floor/plasteel, /area/hallway/secondary/exit/departure_lounge) "cQP" = ( -/obj/structure/sign/vacuum{ +/obj/structure/sign/warning/vacuum{ pixel_x = 32 }, /obj/effect/turf_decal/delivery, @@ -71332,11 +70950,11 @@ /turf/open/floor/plasteel, /area/science/xenobiology) "cRa" = ( -/obj/structure/sign/biohazard, +/obj/structure/sign/warning/biohazard, /turf/closed/wall, /area/science/xenobiology) "cRb" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall, /area/science/xenobiology) "cRc" = ( @@ -71420,11 +71038,7 @@ dir = 2; id = "chapelgun" }, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = 32 }, /obj/machinery/light/small{ @@ -71497,7 +71111,7 @@ /turf/open/floor/plasteel, /area/hallway/secondary/exit/departure_lounge) "cRu" = ( -/obj/structure/sign/biohazard, +/obj/structure/sign/warning/biohazard, /turf/closed/wall/r_wall, /area/science/xenobiology) "cRv" = ( @@ -71526,7 +71140,7 @@ }, /area/science/xenobiology) "cRw" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall/r_wall, /area/science/xenobiology) "cRx" = ( @@ -72069,11 +71683,7 @@ /turf/open/floor/plasteel/white, /area/science/xenobiology) "cSI" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE" - }, +/obj/structure/sign/warning/electricshock, /turf/closed/wall, /area/science/xenobiology) "cSJ" = ( @@ -72607,7 +72217,6 @@ /obj/structure/cable/yellow{ icon_state = "1-2" }, -/obj/effect/landmark/lightsout, /obj/machinery/holopad, /turf/open/floor/plasteel/white, /area/science/xenobiology) @@ -72654,8 +72263,8 @@ /turf/open/floor/wood, /area/library) "cUV" = ( -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/supply) +/turf/open/space/basic, +/area/space) "cUW" = ( /obj/machinery/conveyor{ dir = 4; @@ -72694,15 +72303,6 @@ /turf/open/floor/mineral/titanium/blue, /area/shuttle/supply) "cUZ" = ( -/obj/machinery/door/airlock/titanium{ - name = "Supply Shuttle Airlock"; - req_access_txt = "31" - }, -/obj/docking_port/mobile/supply{ - dwidth = 5; - roundstart_move = "supply_away"; - width = 12 - }, /obj/docking_port/stationary{ dir = 8; dwidth = 5; @@ -72711,8 +72311,8 @@ name = "Cargo Bay"; width = 12 }, -/turf/open/floor/plating, -/area/shuttle/supply) +/turf/open/space/basic, +/area/space) "cVa" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -72830,8 +72430,8 @@ /turf/open/floor/pod/dark, /area/shuttle/transport) "cVv" = ( -/turf/open/floor/pod/light, -/area/shuttle/transport) +/turf/open/space/basic, +/area/space) "cVw" = ( /obj/structure/shuttle/engine/heater{ dir = 8 @@ -72842,18 +72442,6 @@ /turf/open/floor/plating/airless, /area/shuttle/transport) "cVx" = ( -/obj/machinery/door/airlock/titanium, -/obj/docking_port/mobile{ - dir = 8; - dwidth = 2; - height = 13; - id = "ferry"; - name = "ferry shuttle"; - port_direction = 1; - preferred_direction = 4; - roundstart_move = "ferry_away"; - width = 5 - }, /obj/docking_port/stationary{ dir = 8; dwidth = 2; @@ -72863,8 +72451,8 @@ turf_type = /turf/open/space; width = 5 }, -/turf/open/floor/pod/light, -/area/shuttle/transport) +/turf/open/space/basic, +/area/space) "cVy" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/visible, /obj/effect/spawner/structure/window/reinforced, @@ -73076,7 +72664,7 @@ /turf/open/floor/mineral/titanium/blue, /area/shuttle/abandoned) "cVZ" = ( -/obj/structure/sign/vacuum{ +/obj/structure/sign/warning/vacuum{ pixel_x = -32 }, /obj/effect/decal/cleanable/dirt{ @@ -73199,7 +72787,8 @@ dir = 2; dwidth = 4; height = 9; - width = 9 + width = 9; + timid = 0 }, /obj/machinery/bluespace_beacon, /obj/machinery/computer/auxillary_base, @@ -73291,17 +72880,8 @@ /turf/open/floor/mineral/titanium/blue, /area/shuttle/abandoned) "cWp" = ( -/obj/effect/decal/cleanable/blood/old, -/obj/effect/decal/cleanable/blood/gibs/old, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/effect/decal/remains/human{ - desc = "They look like human remains, and have clearly been gnawed at." - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) +/turf/open/space/basic, +/area/space) "cWq" = ( /obj/effect/decal/cleanable/oil, /obj/effect/decal/cleanable/dirt{ @@ -73657,7 +73237,7 @@ /area/shuttle/abandoned) "cWX" = ( /obj/structure/reagent_dispensers/fueltank, -/obj/structure/sign/vacuum{ +/obj/structure/sign/warning/vacuum{ pixel_x = -32 }, /obj/effect/decal/cleanable/dirt{ @@ -73995,7 +73575,7 @@ /turf/open/floor/mineral/titanium, /area/shuttle/abandoned) "cXG" = ( -/obj/structure/sign/science{ +/obj/structure/sign/departments/science{ pixel_y = -32 }, /obj/effect/decal/cleanable/dirt{ @@ -74011,7 +73591,7 @@ }, /obj/machinery/computer/camera_advanced/shuttle_docker/whiteship{ dir = 1; - station_lock_override = 1; + lock_override = 1; view_range = 15; x_offset = -3; y_offset = -7 @@ -74055,7 +73635,7 @@ /turf/open/floor/mineral/titanium/blue, /area/shuttle/abandoned) "cXM" = ( -/obj/structure/sign/botany, +/obj/structure/sign/departments/botany, /turf/closed/wall/mineral/titanium, /area/shuttle/abandoned) "cXN" = ( @@ -74079,7 +73659,7 @@ /turf/open/floor/mineral/titanium/blue, /area/shuttle/abandoned) "cXP" = ( -/obj/structure/sign/bluecross_2, +/obj/structure/sign/departments/medbay/alt, /turf/closed/wall/mineral/titanium, /area/shuttle/abandoned) "cXQ" = ( @@ -74559,16 +74139,6 @@ /turf/closed/wall/mineral/titanium/nodiagonal, /area/shuttle/escape) "cYJ" = ( -/obj/machinery/door/airlock/titanium{ - name = "Emergency Shuttle Airlock" - }, -/obj/docking_port/mobile/emergency{ - dir = 2; - dwidth = 5; - height = 14; - name = "Meta emergency shuttle"; - width = 25 - }, /obj/docking_port/stationary{ dheight = 0; dir = 2; @@ -74578,8 +74148,8 @@ name = "MetaStation emergency evac bay"; width = 29 }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/escape) +/turf/open/space/basic, +/area/space) "cYK" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -74695,8 +74265,8 @@ /turf/open/floor/mineral/titanium, /area/shuttle/escape) "cYO" = ( -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/escape) +/turf/open/space/basic, +/area/space) "cYP" = ( /obj/machinery/door/airlock/engineering{ cyclelinkeddir = 1; @@ -74843,7 +74413,7 @@ /turf/open/floor/plasteel, /area/hallway/secondary/entry) "cZg" = ( -/obj/structure/sign/nosmoking_2, +/obj/structure/sign/warning/nosmoking, /turf/closed/wall/mineral/titanium, /area/shuttle/escape) "cZh" = ( @@ -74922,7 +74492,7 @@ /turf/open/floor/plasteel, /area/hallway/secondary/entry) "cZr" = ( -/obj/structure/sign/bluecross_2, +/obj/structure/sign/departments/medbay/alt, /turf/closed/wall/mineral/titanium, /area/shuttle/escape) "cZs" = ( @@ -75399,11 +74969,7 @@ /turf/open/floor/engine, /area/science/xenobiology) "daC" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE" - }, +/obj/structure/sign/warning/electricshock, /turf/closed/wall/r_wall, /area/science/xenobiology) "daD" = ( @@ -76318,7 +75884,7 @@ /area/science/xenobiology) "dcK" = ( /obj/machinery/disposal/bin, -/obj/structure/sign/deathsposal{ +/obj/structure/sign/warning/deathsposal{ pixel_y = -32 }, /obj/structure/disposalpipe/trunk{ @@ -77169,7 +76735,7 @@ /turf/open/floor/plating, /area/engine/engineering) "deM" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall/r_wall, /area/engine/engineering) "deN" = ( @@ -77206,7 +76772,7 @@ /turf/open/floor/engine, /area/engine/engineering) "deV" = ( -/obj/structure/sign/fire, +/obj/structure/sign/warning/fire, /turf/closed/wall/r_wall, /area/engine/supermatter) "deW" = ( @@ -77246,7 +76812,7 @@ /turf/closed/wall/r_wall, /area/engine/supermatter) "dfc" = ( -/obj/structure/sign/electricshock, +/obj/structure/sign/warning/electricshock, /turf/closed/wall/r_wall, /area/engine/supermatter) "dfd" = ( @@ -77278,7 +76844,7 @@ /turf/open/floor/plating, /area/engine/engineering) "dfh" = ( -/obj/structure/sign/nosmoking_2, +/obj/structure/sign/warning/nosmoking, /turf/closed/wall/r_wall, /area/engine/engineering) "dfi" = ( @@ -78921,20 +78487,17 @@ /turf/open/floor/mineral/titanium/blue, /area/shuttle/arrival) "djM" = ( -/obj/structure/shuttle/engine/propulsion{ - dir = 4 - }, -/obj/docking_port/mobile/arrivals, /obj/docking_port/stationary{ dir = 8; dwidth = 3; height = 15; id = "arrivals_stationary"; name = "arrivals"; - width = 7 + width = 7; + roundstart_template = /datum/map_template/shuttle/arrival/box }, -/turf/open/floor/plating/airless, -/area/shuttle/arrival) +/turf/open/space/basic, +/area/space) "djR" = ( /obj/machinery/door/airlock/titanium{ name = "Arrivals Shuttle Airlock" @@ -79573,10 +79136,6 @@ icon_state = "platingdmg3" }, /area/maintenance/port/aft) -"dxO" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/plating, -/area/maintenance/starboard/aft) "dxQ" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -79629,17 +79188,6 @@ /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating, /area/maintenance/port/aft) -"dyQ" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plating{ - icon_state = "platingdmg1" - }, -/area/maintenance/starboard/aft) "dzc" = ( /obj/machinery/space_heater, /turf/open/floor/plating, @@ -79661,14 +79209,6 @@ /obj/structure/reagent_dispensers/fueltank, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"dzR" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/effect/landmark/event_spawn, -/turf/open/floor/plating, -/area/maintenance/starboard/aft) "dAd" = ( /obj/machinery/power/apc/highcap/five_k{ dir = 2; @@ -80490,28 +80030,6 @@ /turf/open/floor/plating/airless, /area/space/nearstation) "EDi" = ( -/obj/docking_port/mobile{ - callTime = 250; - dheight = 0; - dir = 2; - dwidth = 11; - height = 15; - id = "whiteship"; - launch_status = 0; - movement_force = list("KNOCKDOWN" = 0, "THROW" = 0); - name = "NT Recovery White-Ship"; - port_direction = 8; - preferred_direction = 4; - roundstart_move = "whiteship_away"; - width = 28 - }, -/obj/machinery/door/airlock/titanium{ - name = "recovery shuttle external airlock" - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, /obj/docking_port/stationary{ dir = 2; dwidth = 11; @@ -80520,14 +80038,14 @@ name = "SS13: Auxiliary Dock, Station-Port"; width = 28 }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) +/turf/open/space/basic, +/area/space) "EDj" = ( -/obj/structure/sign/restroom, +/obj/structure/sign/departments/restroom, /turf/closed/wall/mineral/titanium, /area/shuttle/abandoned) "EDk" = ( -/obj/structure/sign/cargo, +/obj/structure/sign/departments/cargo, /turf/closed/wall/mineral/titanium, /area/shuttle/abandoned) "EDl" = ( @@ -80625,7 +80143,7 @@ id = "research_shutters"; name = "research shutters" }, -/turf/open/floor/plating, +/turf/open/floor/plasteel/whitepurple, /area/science/lab) "QsY" = ( /obj/structure/table, @@ -80727,10 +80245,6 @@ /obj/structure/lattice, /turf/open/space/basic, /area/space) -"Qtk" = ( -/obj/structure/lattice, -/turf/open/space/basic, -/area/space) "Qtl" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable/yellow{ @@ -80746,24 +80260,6 @@ "Qtm" = ( /turf/closed/wall, /area/science/circuit) -"Qtn" = ( -/turf/closed/wall, -/area/science/circuit) -"Qto" = ( -/turf/closed/wall, -/area/science/circuit) -"Qtp" = ( -/turf/closed/wall, -/area/science/circuit) -"Qtq" = ( -/turf/closed/wall, -/area/science/circuit) -"Qtr" = ( -/turf/closed/wall, -/area/science/circuit) -"Qts" = ( -/turf/closed/wall, -/area/science/circuit) "Qtt" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -80871,27 +80367,12 @@ }, /turf/open/floor/plasteel/white, /area/science/circuit) -"QtC" = ( -/turf/closed/wall, -/area/science/circuit) "QtD" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 }, /turf/open/floor/plasteel, /area/science/circuit) -"QtE" = ( -/turf/open/floor/plasteel, -/area/science/circuit) -"QtF" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/science/circuit) -"QtG" = ( -/turf/open/floor/plasteel/white, -/area/science/circuit) "QtH" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/white, @@ -81001,9 +80482,6 @@ }, /turf/open/floor/plasteel/white, /area/science/circuit) -"QtX" = ( -/turf/closed/wall, -/area/science/circuit) "QtY" = ( /obj/structure/chair/comfy, /turf/open/floor/plasteel, @@ -81025,20 +80503,12 @@ }, /turf/open/floor/plasteel, /area/science/circuit) -"Quc" = ( -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plasteel, -/area/science/circuit) "Qud" = ( /obj/effect/turf_decal/stripes/line{ dir = 6 }, /turf/open/floor/plasteel, /area/science/circuit) -"Que" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/science/circuit) "Quf" = ( /obj/structure/table/glass, /obj/machinery/camera/autoname{ @@ -81047,13 +80517,6 @@ }, /turf/open/floor/plasteel, /area/science/misc_lab) -"Qug" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel, -/area/science/misc_lab) "Quh" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 6 @@ -81128,73 +80591,16 @@ /obj/machinery/libraryscanner, /turf/open/floor/plasteel/white, /area/science/circuit) -"Qut" = ( -/turf/closed/wall, -/area/science/circuit) -"Quu" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel, -/area/science/misc_lab) -"Quv" = ( -/turf/closed/wall, -/area/science/circuit) "Quw" = ( /obj/effect/turf_decal/stripes/line{ dir = 2 }, /turf/closed/wall, /area/science/circuit) -"Qux" = ( -/turf/closed/wall, -/area/science/circuit) -"Quy" = ( -/turf/closed/wall, -/area/science/circuit) -"Quz" = ( -/turf/closed/wall, -/area/science/circuit) -"QuA" = ( -/turf/closed/wall, -/area/science/circuit) -"QuB" = ( -/turf/closed/wall, -/area/science/circuit) -"QuC" = ( -/turf/closed/wall, -/area/science/circuit) -"QuD" = ( -/turf/closed/wall, -/area/science/circuit) -"QuE" = ( -/turf/closed/wall, -/area/science/circuit) -"QuF" = ( -/turf/closed/wall, -/area/science/circuit) -"QuG" = ( -/turf/closed/wall, -/area/science/circuit) -"QuH" = ( -/turf/closed/wall, -/area/science/circuit) -"QuI" = ( -/turf/closed/wall, -/area/science/circuit) "QuJ" = ( /obj/structure/lattice, /turf/open/space/basic, /area/space/nearstation) -"QuK" = ( -/obj/structure/lattice, -/turf/open/space/basic, -/area/space/nearstation) -"QuL" = ( -/obj/structure/lattice, -/turf/open/space/basic, -/area/space/nearstation) "QuM" = ( /obj/machinery/vending/assist, /turf/open/floor/plasteel, @@ -81208,18 +80614,6 @@ }, /turf/open/floor/plasteel, /area/science/mixing) -"QuO" = ( -/obj/structure/lattice, -/turf/open/space/basic, -/area/space/nearstation) -"QuP" = ( -/obj/structure/lattice, -/turf/open/space/basic, -/area/space/nearstation) -"QuQ" = ( -/obj/structure/lattice, -/turf/open/space/basic, -/area/space/nearstation) "QuR" = ( /obj/machinery/vending/snack/random, /turf/open/floor/plasteel, @@ -81246,18 +80640,10 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"QuV" = ( -/obj/structure/lattice, -/turf/open/space/basic, -/area/space) "QuW" = ( /obj/effect/landmark/event_spawn, /turf/open/floor/plasteel/white, /area/science/circuit) -"QuX" = ( -/obj/effect/landmark/event_spawn, -/turf/open/floor/plasteel/white, -/area/science/circuit) (1,1,1) = {" aaa @@ -87057,11 +86443,11 @@ aaa aaa aaa aaa -cVF -cVF -cVI -cVF -cVF +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -87310,19 +86696,19 @@ aaa aac aaa aaa -cVN -cWf -cWf -cWf -cVG -cWX -cVY -cXw -cVG -cWf -cWf -cWf -cYq +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -87566,21 +86952,21 @@ aaa aaa aaa aaa -cVF -cVF -cWe -cWe -cVF -cVF -cVF -cXg -cVF -cVF -cVF -cWe -cWe -cVF -cVF +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -87823,21 +87209,21 @@ aaa aaa aaa aaa -cVF -cVF -cVF -cVF -cVF -cWO -cWY -cVY -cXx -cXF -cVF -cVF -cVF -cVF -cVF +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -88080,21 +87466,21 @@ aaa aaa aaa aaa -cVF -cVO -cVF -cWu -EDj -cWo -cWo -cWo -cWo -cWo -cVF -cXS -cYd -cYr -cVF +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -88337,21 +87723,21 @@ aaa aaa aaa aaa -cVG -cVR -cWi -cWv -cWG -cWQ -cXa -cXi -cXb -cWo -cXM -cXT -cVY -cYr -cVG +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -88594,21 +87980,21 @@ aaa aaa aaa aaa -cVF -cVF -cVF -cVF -cVF -cWP -cWZ -cXh -cXy -cWo -cXL -cVY -cWo -cYs -cVG +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -88851,21 +88237,21 @@ aaa aaa aaa aaa -cVG -cVT -cWk -cWx -cWI -cWR -cWZ -cXk -cXy -dlm -cVF -cXU -cYf -cYr -cVF +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -89108,21 +88494,21 @@ aaa aaa aaa aaa -cVF -cVS -cWj -cWw -cWH -cWo -cWZ -cXj -cXy -cWo -cVF -cVF -cYe -cVF -cVF +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -89365,21 +88751,21 @@ aaa aaa aaa aaa -cVF -cVF -cVF -cVF -cVF -cWo -cXb -cXl -cXa -cWo -cXN -cWo -cYg -cYu -cVF +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -89622,21 +89008,21 @@ aaa aaa aaa aaa -cVF -cVU -cWl -cWy -cVF -cWS -cWo -cVY -cWo -cWo -cVF -cXV -cVY -cYt -cVG +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -89879,21 +89265,21 @@ aaf aaf aaf aaf -cVG -cVV -cWm -cWz -cVF -cVF -cVF -cXm -cVF -cVF -cVF -cXX -cYi -cYw -cVG +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -90127,7 +89513,7 @@ aaa aaf aaa aaa -cVm +aaa aaa aaa aaf @@ -90136,21 +89522,21 @@ aaa aaf aaa aaf -cVG -cVV -cVY -cWo -cWn -cVY -cWo -cWo -cWo -cWo -cVF -cXW -cYh -cYv -cVF +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -90383,9 +89769,9 @@ aVs aVs aVs aaa -cVm -cVw -cVm +aaa +aaa +aaa aaa aVs aVs @@ -90393,21 +89779,21 @@ aVs aVs aaa aaf -cVF -cVX -cWo -cWB -cVF -cWo -cXa -cXo -cXa -cWo -cVF -cVF -cVF -cVF -cVF +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -90627,11 +90013,11 @@ aVs aaf aaf aaa -bcS -bcS -bcU -bcS -bcS +aaa +aaa +aaa +aaa +aaa aaa aaf aaf @@ -90640,9 +90026,9 @@ bvB aWT aVs aaa -cVr -cVv -ddL +aaa +aaa +aaa aaa aVs bKS @@ -90650,21 +90036,21 @@ aWT aVs aVs aVs -cVF -cVF -cWn -cVF -cVF -dll -cXb -cXn -cXb -cXG -cVF -cXY -dlo -cYx -cVF +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -90884,11 +90270,11 @@ aYC aaa aaf aaa -bcS -bgq -beC -bjU -bcS +aaa +aaa +aaa +aaa +aaa aaa aaf aaa @@ -90897,9 +90283,9 @@ aVu aWU aRA aaa -cVn -dlF -cVn +aaa +aaa +aaa aaa aRA btS @@ -90907,21 +90293,21 @@ aWU bOd bPA bOd -cVI -cVZ -cWo -cVY -cWL -cWo -cWR -cXq -cWo -cWo -cXO -cWo -cYl -cYz -cVG +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -91141,11 +90527,11 @@ aVs aaf aaf aaa -bcS -dli -beC -dlj -bcS +aaa +aaa +aaa +aaa +aaa aaa aaf aaf @@ -91153,11 +90539,11 @@ aVs aVw aWU aVs -cVn -cVn -ddJ -cVn -cVn +aaa +aaa +aaa +aaa +aaa aVs aVw aWU @@ -91165,20 +90551,20 @@ bOd aZZ bOd EDi -cVY +aaa cWp -dlk -cWL -cVY -cWo -cXp -cVY -cWo -cVF -cXa -dlp -cYy -cVF +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -91397,45 +90783,45 @@ aWV aRA aaa aaa -bcS -bcS -bcS -bcT -bcS -bcS -bcS +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aRA bvC bxt aYC -cVp -cVu -cVv -cVB -cVp +aaa +aaa +aaa +aaa +aaa aYC bKT aWU aVs aVs aVs -cVF -cVF -cWr -cVF -cVF -cWo -cXa -cXs -cXa -dln -cVF -cVF -cVF -cVF -cVF +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -91654,45 +91040,45 @@ aWU aVs aVs aVs -bcS -beB -beC -beC -beC -blN -bcS +aaa +aaa +aaa +aaa +aaa +aaa +aaa aVs aVs aVs bvD aWU aVs -cVn -cVu -cVv -cVB -cVn +aaa +aaa +aaa +aaa +aaa aVs aVw aWU aVs aaa aaf -cVF -cWa -cWq -cWC -EDk -cWo -cXa -cXr -cXb -cWo -cXP -cYa -cYm -cYA -cVF +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -91911,45 +91297,45 @@ aWU djz aZZ djC -bcT -beC -djE -djE -djE -beC -djR +aaa +aaa +aaa +aaa +aaa +aaa +aaa djz bsk djC aVu bxu aRA -cVn -dlE -cVv -cVv -cVn +aaa +aaa +aaa +aaa +aaa aRA aVu aWU aVs aaf aaf -cVG -cWc -cWs -cWs -cWN -cWo -cWo -cVY -cWo -cWo -cXQ -cVY -cYo -cYC -cVG +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -92168,45 +91554,45 @@ aWU aVs aVs aVs -bcS -beD -beC -beC -beC -blO -bcS +aaa +aaa +aaa +aaa +aaa +aaa +aaa aVs aVs aVs aVu bxv aVs -ddH -cVv -ddK -cVv -ddM +aaa +aaa +aaa +aaa +aaa aVs aVu bMu aRA aaa aaf -cVG -cWb -cWs -cWD -cVF -cVF -cVF -cXt -cVF -cVF -cVF -cYb -cYn -cYB -cVG +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -92425,45 +91811,45 @@ aWW aWT baa aVs -bcU -beE -djE -djE -djE -beC -bcU +aaa +aaa +aaa +aaa +aaa +aaa +aaa aVs bsl btO bvE bxw aVs -cVn -cVv -cVv -dlG -cVn +aaa +aaa +aaa +aaa +aaa aVs bKU bMv aVs aaa aaf -cVF -cWd -cWt -cWE -cVF -cWU -EDm -cWo -cXa -dDP -cVF -cJI -cYp -cYD -cVF +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaf @@ -92682,45 +92068,45 @@ bvF aWU baa aVs -bcS -beF -beC -beC -beC -blP -bcS +aaa +aaa +aaa +aaa +aaa +aaa +aaa aVs bsm aVu bvF bxw aVs -cVn -cVu +aaa +aaa cVv -cVB -cVn +aaa +aaa aVs aVu bMw aRA aaa aaf -cVF -cVF -cVG -cVF -cVF -cWT -dDN -cWo -dDO -cXH -cVF -cVF -cVG -cVF -cVF +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaf @@ -92939,24 +92325,24 @@ bvF aWU bab aVs -bcS -beG -djE -djE -djE -blQ -bcS +aaa +aaa +aaa +aaa +aaa +aaa +aaa aVs baa btP aWX bxx aRA -cVp -cVu -cVv -cVB -cVp +aaa +aaa +aaa +aaa +aaa aRA btS bxw @@ -92967,13 +92353,13 @@ aaa aaa aaa aaa -cVG -cWW -cWo -cXv -cXD -cXK -cVG +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -93196,24 +92582,24 @@ aWY aYE bac aVs -bcU -beH -beC -beC -beC -beC -bcU +aaa +aaa +aaa +aaa +aaa +aaa +aaa aVs bsn btQ bvG bxw aVs -cVn -cVp +aaa +aaa cVx -cVp -cVn +aaa +aaa aVs aVu bxw @@ -93224,13 +92610,13 @@ aaa aaa aaa aaa -cVG -cWV -cXf -cXu -cXC -cXJ -cVG +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -93453,13 +92839,13 @@ aWZ aVs aVs aVs -bcS -beI -djE -djE -djE -blR -bcS +aaa +aaa +aaa +aaa +aaa +aaa +aaa aVs aVs aVs @@ -93481,13 +92867,13 @@ aaa aaa aaa aaa -EDl -cVG -cVG -cVG -cVG -cVG -EDl +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -93710,13 +93096,13 @@ aWZ djz aZZ djC -bcT +aaa +aaa +aaa beC -beC -beC -beC -beC -bcT +aaa +aaa +aaa djz bsk djC @@ -93967,13 +93353,13 @@ aWZ aVs aVs aVs -bcS -bcS -bgt -bgt -bgt -bcS -bcS +aaa +aaa +aaa +aaa +aaa +aaa +aaa aVs aVs aVs @@ -94224,13 +93610,13 @@ aXa aYF aVs aaa -bcS -beJ -bgu +aaa +aaa +aaa djM -bgu -blS -bcS +aaa +aaa +aaa aaa aVs btR @@ -95742,25 +95128,25 @@ doJ atq aaf aaa -awN -awN -awO -awN -awO -awN -awN aaa -cUS -cUS -cUS -cUS -cUS -cUS -cUS -cUS -cUS -cUS -cUS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa dne @@ -95999,26 +95385,26 @@ doJ atq aaf aaa -awN -ayg -azh -dlB -azi -aDe -awN aaa -cUS -cUV -cUV -cUV -cUV -dlD -cUV -cUV -cUV -cVc -cUS -cVk +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaf dne bag @@ -96256,26 +95642,26 @@ doJ atq aaf aaa -awO -ayh -azi -azh -azi -aDf -aEu aaa -cUS -cUV -cUV -cUV -cUV -cUV -cUV -cUV -cUV -cUV -cVg -cVj +aaa +aaa +azh +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaf aip doJ @@ -96513,26 +95899,26 @@ doJ atq aaf aaa -awN -ayg -azh -azh -azi -aDg -awN aaa -cUS -dlC -cUV -cUV -cUV -cUV -cUV -cUV -cUV -cUV -cVg -cVj +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aip asi @@ -96770,26 +96156,26 @@ doJ atq aaf aaa -awN -awN -awO -aAA -awO -awN -awN aaa -cUS +aaa +aaa +aAA +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa cUV -cUV -cUV -cUV -cUV -cUV -cUV -cUV -cUV -cVg -cVj +aaa +aaa +aaa +aaa +aaa aaa aip doJ @@ -96809,7 +96195,7 @@ bxJ bzx bBi bCM -bEr +bBg bBg bHM bJv @@ -97035,18 +96421,18 @@ ayi ayi aaf aaa -cUS -cUV -cUV -cUV -cUV -cUY -cUV -cUV -cUV -cVc -cUS -cVl +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaf dne daX @@ -97292,17 +96678,17 @@ aBS ayi aaf aaa -cUS -cUS -cUS -cUW -cUX -cUS +aaa +aaa +aaa +aaa +aaa +aaa cUZ -cTh -cUS -cUS -cUS +aaa +aaa +aaa +aaa aaa aaf dne @@ -99616,7 +99002,7 @@ aQl aMv aSS aMv -aVI +aQl aXh aMv bar @@ -101182,7 +100568,7 @@ bEy bGr bwd bwd -bLj +bwd bMK bOl bPR @@ -102706,7 +102092,7 @@ aYT baC bbZ bdu -bfe +bbZ bgX biQ bkv @@ -103555,16 +102941,16 @@ dbF cMI aaa aaa -cZj -cZj -cZj -cZe -cZj -cZj -cZe -cZj -cZj -cZj +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -103811,18 +103197,18 @@ cRn cOS cMI aaa -cZe -cZl -cZl -cZl -cZe -cZl -cZl -cZe -cZl -cZl -cZl -cZe +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -103963,15 +103349,15 @@ aoj apC doA dne -auQ -auQ -atJ -auQ -auQ -atJ -auQ -auQ -auQ +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aDu aDu aDu @@ -104067,20 +103453,20 @@ cQE cQl cRo cMI -cZe -cZe -cYF -cYF -cYF -cZe -cYF -cYF -cZe -cYF -cYF -cYF -cZe -cZe +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -104220,15 +103606,15 @@ aok aox aqV dne -atJ -auR -avU -awX -ayt -azA -aAU -aCi -aDt +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa azC aFV aHu @@ -104324,20 +103710,20 @@ cQF cQV cRp cRL -cYF -daj -dai -dak -dal -dan -dam -dao -dax -cZL -cZL -cZL -dar -cYF +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -104477,15 +103863,15 @@ aol apD aqW dne -atJ -auS -avV -auQ -dlA +aaa +aaa +aaa +aaa +aaa +aaa ayt -ayt -aCi -aDt +aaa +aaa azC aFW aHv @@ -104581,20 +103967,20 @@ cQF cOP cRp cRL -cYF -daf -cYO -dag -cZZ -cZm -cYO -cZy -cZe -cYV -dly -cYV -cYV -dae +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -104734,15 +104120,15 @@ aom ajm dne dne -atJ -auT -avW -awY -ayu -azB -ayt -aCi -aDt +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa azC aFW aHw @@ -104838,20 +104224,20 @@ cQG cQW cRq cRL -cYF -daa -cZm -cYO -cYO -cYO -dag -cZA -cZe -dae -cYI -cYV -cYV -dae +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -104991,15 +104377,15 @@ aon ajm aqX dne -auQ -auQ -avX -auQ -auQ -auQ +aaa +aaa +aaa +aaa +aaa +aaa aAV -auQ -auQ +aaa +aaa aDu aFX aHx @@ -105095,20 +104481,20 @@ cQF cOP cRp cRL -cYF -cZT -cZS -cYO -cYO -cYO -dlt -cYO -cZV -dlx -cZe -dad -dad -cYF +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -105289,7 +104675,7 @@ bAZ bkz bzN bBB -bDc +bDa bEG bGB bIb @@ -105352,20 +104738,20 @@ cQF cQV cRp cRL -cZe -cZe -cZn -cZe -cZQ -cZe -cZn -cZe -cZe -cZe -cZe -cZn -cZe -cZe +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -105609,20 +104995,20 @@ cQH cQX cRr cMI -cZe -cZK -dlr -cYO -cYO -cYO -dlr -cZK -cZe -cZD -cZD -cZD -daq -cZe +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -105750,7 +105136,7 @@ ady adT adc aeW -afQ +afK agJ ahx ait @@ -105866,20 +105252,20 @@ cQI cZc cZd cMI -cYF -cYO -cYO -cYO -cYO -cYO -cYO -cYO -cZI -cZG -cZG -cZG -cZJ -cYF +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -106123,20 +105509,20 @@ cMI cMI cMI cMI -cZe -cZi -cYO -cZo -cYF -cZi -cYO -cZo -cYF -cZF -cZG -cZG -cZH -cYF +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -106380,20 +105766,20 @@ cQJ cQY cRs cQY -cYH -cYO -cYO -cZo -dat -cZi -cYO -cZo -cZe -cZF -cZY -dlz -cZE -cZe +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -106637,20 +106023,20 @@ cQK cPv cPv cPv -cZe -dlq -cYO -cZo -cYF -cZi -cYO -cZk -cZe -cZe -dab -cZn -cZe -cZe +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -106894,20 +106280,20 @@ cQL cQY cQK cQY -cYH -cYO -cYO -cZo -dax -cZi -cYO -cZo -cZe -cZx -cZw -cZz -das -cZe +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -107141,7 +106527,7 @@ cKy cLo cLm cLm -cNM +cLm cOr cOU dDG @@ -107151,20 +106537,20 @@ cQK cPv cPv cPv -cZg -cZi -cYO -cZo -cYF -cZi -cYO -cZo -cYF -cZM -cYO -cYO -dau -cYF +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -107408,20 +106794,20 @@ cQK cPv aaa aaf -cYF -cZi -cYO -cYO -cYO -cYO -cYO -cYO -cZp -cYO -cYO -cYO -cZt -cYF +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -107665,20 +107051,20 @@ cQM cPv aaa aaf -cYF -cZi -cYO -cZo -cYF -cZi -cYO -cZo -cYF -dlH -cZN -cYO -cZs -cZe +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -107922,20 +107308,20 @@ cQK cPv aaa aaf -cYF -cZi -cYO -cZo -cYY -cZi -cYO -cZo -cZr -cZe -cYF -cZp -cZr -cZe +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -108179,20 +107565,20 @@ cQK cPv cPv cPv -cZe -cYS -cYO -cZo -cYF -cZi -cYO -dlw -cZe -cZO -dac -dah -dav -cZe +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -108437,19 +107823,19 @@ cQY cQK cQY cYJ +aaa cYO -cYO -cZo -cYZ -cZi -cYO -cZo -cYF -cZP -cYX -cYV -cZB -cZe +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -108693,20 +108079,20 @@ cQO cPv cPv cPv -cYF -cZi -cYO -cZo -cYF -cZi -cYO -cZo -dax -cZU -cYV -cYV -cZb -cYF +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -108950,20 +108336,20 @@ cQP cQY cRt cQY -cYH -cYO -cYO -cYO -cYO -cYO -cYO -cYO -cZC -cZW -cYV -cYX -cYW -cYF +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -109207,20 +108593,20 @@ cPb cPv cPv cPv -cZe -cYO -cYO -cYO -cYO -cYO -cYO -cYO -cZC -cZW -cYV -cYV -daw -cZe +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -109464,20 +108850,20 @@ aaf aaa aaa aaf -cZe -cYN -cYM -cYO -dls -cYO -dlv -cYN -cZg -cZX -cZW -cZW -cYU -cZe +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -109721,20 +109107,20 @@ aaf aaf aaf aaf -cZe -cZe -cZe -cYF -cYF -cYF -cZe -cZe -cZe -cZe -cYF -cYF -cZe -cZe +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -111200,7 +110586,7 @@ bwB byp bAd byo -bDt +bDj bEZ bGM bIp @@ -113540,7 +112926,7 @@ cgo cgo cgo ccd -cps +cpr cci crQ ctc @@ -115055,7 +114441,7 @@ bwN byz bAj bBU -bDE +bwO dDb bHb bMP @@ -117145,9 +116531,9 @@ dwL dxQ cuZ Qtt -QtE -QtE -Quc +cwZ +cwZ +cyM Quk Qtm cQv @@ -117402,9 +116788,9 @@ ctk cuc cuZ dyp -QtE -QtE -Quc +cwZ +cwZ +cyM Qul Qtm czF @@ -117587,7 +116973,7 @@ asY aui avm asY -axH +aui ayO aAg aBA @@ -117659,10 +117045,10 @@ dvY Qtc cuZ Qtu -QtF -QtF +cxN +cxN Qud -QtG +cxO Qtm czG cAN @@ -117916,8 +117302,8 @@ dvY cud cuZ Qtv -QtG -QtG +cxO +cxO QuW Qum Qtm @@ -118175,7 +117561,7 @@ Qtl cwd QtH cxP -QtG +cxO Qun Qtm czI @@ -118432,7 +117818,7 @@ Qtm Qtw QtI QtR -QtG +cxO Quo Qtm aaf @@ -118689,8 +118075,8 @@ Qtm Qtx QtJ QtS -QuX -QtG +QuW +cxO Qtm aaf aaa @@ -118946,7 +118332,7 @@ Qtm Qty QtK QtT -QtG +cxO Qup Qtm aaa @@ -119203,7 +118589,7 @@ Qtm Qtz QtL QtU -QtG +cxO Quq Qtm aaa @@ -119460,7 +118846,7 @@ Qtm QtA QtM QtV -QtG +cxO Qur Qtm aaa @@ -119717,7 +119103,7 @@ Qtm QtB QtN QtW -QtG +cxO Qus Qtm aaa @@ -124313,7 +123699,7 @@ bHx bIU bKB bMh -bNT +bCi bCi bKD bCi diff --git a/_maps/map_files/Mining/Lavaland.dmm b/_maps/map_files/Mining/Lavaland.dmm index a7b9d0e994..ca38e24e2b 100644 --- a/_maps/map_files/Mining/Lavaland.dmm +++ b/_maps/map_files/Mining/Lavaland.dmm @@ -76,9 +76,6 @@ "an" = ( /turf/closed/mineral/random/labormineral/volcanic, /area/lavaland/surface/outdoors) -"ao" = ( -/turf/closed/mineral/random/volcanic, -/area/lavaland/surface/outdoors) "ap" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -579,10 +576,7 @@ /turf/open/floor/plating, /area/mine/laborcamp) "bN" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'."; - name = "KEEP CLEAR: DOCKING AREA" - }, +/obj/structure/sign/warning/docking, /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/mine/production) @@ -930,11 +924,7 @@ /turf/closed/wall, /area/mine/living_quarters) "cN" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE" - }, +/obj/structure/sign/warning/electricshock, /turf/closed/wall, /area/mine/living_quarters) "cO" = ( @@ -1172,10 +1162,6 @@ dir = 4 }, /area/mine/production) -"dt" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/mine/production) "du" = ( /obj/effect/turf_decal/loading_area, /turf/open/floor/plasteel, @@ -3311,24 +3297,6 @@ /obj/effect/baseturf_helper/picky/lava_land/plating, /turf/closed/wall, /area/mine/laborcamp/security) -"Wu" = ( -/obj/effect/baseturf_helper/lava_land/surface, -/turf/closed/wall, -/area/mine/laborcamp) -"Ww" = ( -/obj/effect/baseturf_helper/lava_land/surface, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"Wx" = ( -/obj/effect/baseturf_helper/lava_land/surface, -/turf/open/floor/plasteel/brown{ - dir = 4 - }, -/area/mine/eva) -"Wy" = ( -/obj/effect/baseturf_helper/lava_land/surface, -/turf/open/floor/plasteel, -/area/mine/production) "Wz" = ( /obj/effect/mapping_helpers/planet_z, /turf/open/lava/smooth/lava_land_surface, diff --git a/_maps/map_files/OmegaStation/OmegaStation.dmm b/_maps/map_files/OmegaStation/OmegaStation.dmm index 45ab557836..affa418786 100644 --- a/_maps/map_files/OmegaStation/OmegaStation.dmm +++ b/_maps/map_files/OmegaStation/OmegaStation.dmm @@ -27,7 +27,7 @@ /turf/open/space, /area/space/nearstation) "aah" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall, /area/asteroid/nearstation) "aai" = ( @@ -821,7 +821,6 @@ icon_state = "1-4" }, /obj/machinery/holopad, -/obj/effect/landmark/lightsout, /turf/open/floor/plasteel/vault, /area/bridge) "abF" = ( @@ -909,7 +908,7 @@ /turf/open/floor/plasteel, /area/maintenance/starboard/fore) "abN" = ( -/obj/structure/sign/vacuum, +/obj/structure/sign/warning/vacuum, /turf/closed/wall, /area/maintenance/starboard) "abO" = ( @@ -985,7 +984,7 @@ /turf/closed/wall, /area/crew_quarters/heads/captain/private) "abZ" = ( -/obj/structure/sign/vacuum{ +/obj/structure/sign/warning/vacuum{ pixel_y = 32 }, /obj/structure/displaycase/captain{ @@ -1189,7 +1188,7 @@ /obj/machinery/light{ dir = 4 }, -/obj/structure/sign/vacuum{ +/obj/structure/sign/warning/vacuum{ pixel_y = 32 }, /obj/machinery/atmospherics/components/unary/vent_pump/on, @@ -1325,7 +1324,7 @@ /area/asteroid/nearstation) "acI" = ( /obj/structure/dresser, -/obj/structure/sign/vacuum{ +/obj/structure/sign/warning/vacuum{ pixel_y = 32 }, /obj/machinery/camera{ @@ -1709,7 +1708,7 @@ /area/quartermaster/storage) "adq" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/vacuum, +/obj/structure/sign/warning/vacuum, /turf/open/floor/plating, /area/quartermaster/storage) "ads" = ( @@ -1735,7 +1734,7 @@ /turf/open/floor/plating, /area/asteroid/nearstation) "adz" = ( -/obj/structure/sign/vacuum, +/obj/structure/sign/warning/vacuum, /turf/closed/wall, /area/asteroid/nearstation) "adA" = ( @@ -1865,7 +1864,7 @@ /obj/structure/cable/white{ icon_state = "2-8" }, -/obj/structure/sign/goldenplaque/captain{ +/obj/structure/sign/plaques/golden/captain{ pixel_x = 32 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -1899,7 +1898,7 @@ /area/ai_monitored/turret_protected/ai) "adR" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_x = 32 }, /obj/structure/cable/white{ @@ -1931,7 +1930,7 @@ }, /area/bridge) "adU" = ( -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_x = -32 }, /obj/structure/cable/white, @@ -2004,7 +2003,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = 32 }, /obj/effect/turf_decal/stripes/line{ @@ -2189,7 +2188,7 @@ /obj/structure/cable/white, /obj/effect/spawner/structure/window/reinforced, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_x = 32 }, /turf/open/floor/plating, @@ -2442,12 +2441,16 @@ /turf/open/floor/plasteel, /area/quartermaster/storage) "aeZ" = ( -/obj/machinery/door/airlock/shuttle{ - name = "Supply Shuttle Airlock"; - req_access_txt = "31" +/obj/docking_port/stationary{ + dir = 4; + dwidth = 9; + height = 7; + id = "supply_home"; + name = "Cargo Bay"; + width = 20 }, -/turf/open/floor/plating, -/area/shuttle/supply) +/turf/open/space/basic, +/area/space) "afa" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -3115,7 +3118,7 @@ dir = 4 }, /obj/machinery/recharge_station, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = 32 }, /obj/effect/turf_decal/stripes/line{ @@ -3286,22 +3289,6 @@ }, /turf/open/floor/plasteel, /area/quartermaster/storage) -"agD" = ( -/obj/docking_port/mobile/supply{ - dwidth = 5; - roundstart_move = "supply_away"; - width = 12 - }, -/obj/docking_port/stationary{ - dir = 8; - dwidth = 5; - height = 7; - id = "supply_home"; - name = "Cargo Bay"; - width = 12 - }, -/turf/closed/wall/mineral/titanium, -/area/shuttle/supply) "agE" = ( /obj/item/ore/silver, /obj/item/ore/iron, @@ -3935,7 +3922,7 @@ /turf/open/floor/plating, /area/maintenance/fore) "ahH" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = -32 }, /obj/structure/closet/secure_closet/captains, @@ -4231,7 +4218,7 @@ pixel_x = 3; pixel_y = -3 }, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = 32 }, /obj/effect/turf_decal/bot, @@ -4240,7 +4227,7 @@ }, /area/security/brig) "aip" = ( -/obj/structure/sign/electricshock, +/obj/structure/sign/warning/electricshock, /turf/closed/wall/r_wall, /area/security/brig) "aiq" = ( @@ -4452,7 +4439,7 @@ /turf/open/floor/plasteel, /area/hallway/primary/central) "aiG" = ( -/obj/structure/sign/electricshock, +/obj/structure/sign/warning/electricshock, /turf/closed/wall, /area/hallway/primary/central) "aiH" = ( @@ -4825,7 +4812,7 @@ }, /area/hallway/primary/central) "ajq" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_y = 32 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -4904,7 +4891,7 @@ }, /area/hallway/primary/central) "ajx" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_y = 32 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -5238,7 +5225,6 @@ }, /area/hallway/primary/central) "akd" = ( -/obj/effect/landmark/lightsout, /obj/structure/cable/white{ icon_state = "1-2" }, @@ -5328,7 +5314,7 @@ }, /area/hallway/primary/central) "akk" = ( -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_y = -32 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -5511,7 +5497,6 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/effect/landmark/lightsout, /obj/structure/cable/white{ icon_state = "1-4" }, @@ -5669,7 +5654,7 @@ /turf/open/floor/plasteel, /area/hallway/primary/central) "akI" = ( -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_y = -32 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -5752,7 +5737,7 @@ /turf/open/floor/plating/airless, /area/shuttle/supply) "akT" = ( -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_x = -32 }, /obj/structure/cable/white{ @@ -5853,7 +5838,7 @@ /turf/closed/wall, /area/security/brig) "alb" = ( -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_x = -32 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -6141,7 +6126,6 @@ /obj/structure/cable/white{ icon_state = "2-4" }, -/obj/effect/landmark/lightsout, /turf/open/floor/plasteel/neutral, /area/quartermaster/storage) "alF" = ( @@ -6241,7 +6225,6 @@ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/landmark/lightsout, /turf/open/floor/plasteel/neutral/side{ dir = 4 }, @@ -6840,7 +6823,7 @@ }, /area/teleporter) "amY" = ( -/obj/structure/sign/electricshock, +/obj/structure/sign/warning/electricshock, /turf/closed/wall/r_wall, /area/teleporter) "amZ" = ( @@ -6887,7 +6870,7 @@ }, /area/hallway/primary/central) "ane" = ( -/obj/structure/sign/electricshock, +/obj/structure/sign/warning/electricshock, /turf/closed/wall/r_wall, /area/ai_monitored/storage/eva) "anf" = ( @@ -6999,7 +6982,7 @@ /turf/open/floor/plasteel, /area/quartermaster/storage) "anp" = ( -/obj/structure/sign/nosmoking_1, +/obj/structure/sign/warning/nosmoking/circle, /turf/closed/wall, /area/quartermaster/miningdock) "anq" = ( @@ -7039,7 +7022,7 @@ /area/quartermaster/miningdock) "ant" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/vacuum, +/obj/structure/sign/warning/vacuum, /turf/open/floor/plating, /area/quartermaster/miningdock) "anu" = ( @@ -7966,7 +7949,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/effect/landmark/lightsout, /obj/structure/cable/white{ icon_state = "1-2" }, @@ -8130,18 +8112,17 @@ /turf/open/floor/plasteel, /area/quartermaster/miningdock) "app" = ( -/obj/machinery/door/airlock/shuttle{ - name = "Mining Shuttle Airlock"; - req_access_txt = "0" +/obj/docking_port/stationary{ + dir = 4; + dwidth = 3; + height = 5; + id = "mining_home"; + name = "mining shuttle bay"; + roundstart_template = /datum/map_template/shuttle/mining/delta; + width = 7 }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plasteel/white, -/area/shuttle/mining) +/turf/open/space/basic, +/area/space) "apr" = ( /turf/open/floor/plasteel/neutral, /area/shuttle/mining) @@ -8433,7 +8414,7 @@ name = "Station Intercom"; pixel_x = 28 }, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = -32 }, /obj/effect/turf_decal/delivery, @@ -8593,7 +8574,7 @@ name = "Station Intercom"; pixel_x = -28 }, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = -32 }, /turf/open/floor/plasteel/vault/side{ @@ -8770,7 +8751,7 @@ /area/quartermaster/miningdock) "aqt" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/pods{ +/obj/structure/sign/warning/pods{ name = "MINING POD" }, /turf/open/floor/plating, @@ -9333,7 +9314,7 @@ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/sign/fire{ +/obj/structure/sign/warning/fire{ pixel_y = 32 }, /obj/effect/turf_decal/bot, @@ -9424,7 +9405,7 @@ /obj/machinery/atmospherics/components/unary/thermomachine/heater{ dir = 8 }, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = 32 }, /obj/effect/turf_decal/bot, @@ -10001,7 +9982,7 @@ }, /area/engine/atmos) "asI" = ( -/obj/structure/sign/vacuum{ +/obj/structure/sign/warning/vacuum{ pixel_x = -32 }, /turf/open/floor/plating, @@ -10547,7 +10528,7 @@ /turf/open/floor/plasteel, /area/security/brig) "atM" = ( -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_x = -32 }, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ @@ -11229,7 +11210,7 @@ "auX" = ( /obj/structure/table/reinforced, /obj/item/storage/toolbox/electrical, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = 32 }, /obj/effect/turf_decal/bot, @@ -12446,7 +12427,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/structure/sign/atmosplaque{ +/obj/structure/sign/plaques/atmos{ pixel_y = 32 }, /obj/effect/turf_decal/bot, @@ -12503,7 +12484,7 @@ name = "Station Intercom"; pixel_x = 26 }, -/obj/structure/sign/nosmoking_1{ +/obj/structure/sign/warning/nosmoking/circle{ pixel_x = 26; pixel_y = 26 }, @@ -13950,7 +13931,7 @@ }, /area/crew_quarters/dorms) "aAI" = ( -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = 32 }, /turf/open/floor/plasteel/neutral/corner{ @@ -14037,7 +14018,6 @@ }, /obj/structure/table/wood, /obj/item/kitchen/fork, -/obj/effect/landmark/lightsout, /obj/structure/cable/white{ icon_state = "4-8" }, @@ -14473,7 +14453,6 @@ }, /area/hallway/primary/central) "aBL" = ( -/obj/effect/landmark/lightsout, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -14766,7 +14745,7 @@ /area/hallway/secondary/exit) "aCn" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/vacuum, +/obj/structure/sign/warning/vacuum, /turf/open/floor/plating, /area/hallway/secondary/exit) "aCo" = ( @@ -14826,7 +14805,7 @@ dir = 4; name = "Air to Pure" }, -/obj/structure/sign/fire{ +/obj/structure/sign/warning/fire{ pixel_y = -32 }, /obj/effect/turf_decal/bot, @@ -14974,7 +14953,7 @@ id = "atmoslock"; name = "Atmospherics Lockdown Blast door" }, -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_x = -32 }, /obj/structure/cable/white{ @@ -15188,7 +15167,7 @@ desc = "Used to grind things up into raw materials and liquids."; pixel_y = 5 }, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = 32 }, /obj/structure/sign/nanotrasen{ @@ -15256,16 +15235,6 @@ /turf/open/floor/plasteel, /area/hallway/secondary/exit) "aDj" = ( -/obj/machinery/door/airlock/shuttle{ - name = "Emergency Shuttle Airlock" - }, -/obj/docking_port/mobile/emergency{ - dheight = 0; - dwidth = 5; - height = 11; - name = "Omega emergency shuttle"; - width = 19 - }, /obj/docking_port/stationary{ dheight = 0; dir = 4; @@ -15276,14 +15245,8 @@ turf_type = /turf/open/space; width = 30 }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plasteel/white, -/area/shuttle/escape) +/turf/open/space/basic, +/area/space) "aDk" = ( /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, @@ -15329,11 +15292,11 @@ /turf/closed/wall/r_wall, /area/engine/atmos) "aDr" = ( -/obj/structure/sign/nosmoking_2, +/obj/structure/sign/warning/nosmoking, /turf/closed/wall/r_wall, /area/engine/atmos) "aDs" = ( -/obj/structure/sign/fire, +/obj/structure/sign/warning/fire, /turf/closed/wall/r_wall, /area/engine/atmos) "aDt" = ( @@ -15354,7 +15317,7 @@ /turf/open/floor/plasteel, /area/engine/atmos) "aDu" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/closed/wall/r_wall, /area/engine/atmos) @@ -15805,7 +15768,7 @@ /area/shuttle/escape) "aEn" = ( /obj/machinery/shieldgen, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = 32 }, /obj/item/device/radio/intercom{ @@ -15920,7 +15883,6 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 8 }, -/obj/effect/landmark/lightsout, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/engine/engineering) @@ -15937,7 +15899,7 @@ /area/engine/engineering) "aEA" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/sign/nosmoking_2, +/obj/structure/sign/warning/nosmoking, /turf/closed/wall/r_wall, /area/hallway/primary/central) "aEB" = ( @@ -16690,7 +16652,6 @@ /area/hallway/primary/central) "aFY" = ( /obj/machinery/holopad, -/obj/effect/landmark/lightsout, /obj/structure/cable/white{ icon_state = "1-2" }, @@ -16762,7 +16723,7 @@ /turf/open/floor/plasteel, /area/engine/engineering) "aGi" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -16813,7 +16774,7 @@ /turf/open/floor/plating, /area/engine/engineering) "aGm" = ( -/obj/structure/sign/radiation, +/obj/structure/sign/warning/radiation, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 9 }, @@ -16837,7 +16798,7 @@ /turf/open/floor/plasteel, /area/engine/engineering) "aGo" = ( -/obj/structure/sign/fire, +/obj/structure/sign/warning/fire, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/closed/wall/r_wall, /area/engine/engineering) @@ -17289,7 +17250,7 @@ /obj/structure/cable/white{ icon_state = "4-8" }, -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_y = 32 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -17409,7 +17370,7 @@ id = "ceblast"; name = "Engineering Lockdown Shutters" }, -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_x = -32 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -17655,7 +17616,7 @@ /turf/closed/wall, /area/hydroponics) "aHR" = ( -/obj/structure/sign/botany{ +/obj/structure/sign/departments/botany{ pixel_x = -32 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -17732,7 +17693,7 @@ /turf/open/floor/plasteel/neutral, /area/hallway/secondary/exit) "aIb" = ( -/obj/structure/sign/radiation{ +/obj/structure/sign/warning/radiation{ pixel_x = -32 }, /obj/effect/turf_decal/bot_white, @@ -17759,7 +17720,7 @@ /obj/structure/cable/white{ icon_state = "1-2" }, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = -32 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -18400,7 +18361,7 @@ /obj/machinery/power/smes{ charge = 5e+006 }, -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_y = 32 }, /obj/effect/turf_decal/bot, @@ -18458,7 +18419,7 @@ /turf/open/floor/plasteel/dark, /area/engine/engineering) "aJt" = ( -/obj/structure/sign/radiation, +/obj/structure/sign/warning/radiation, /turf/closed/wall/r_wall, /area/engine/supermatter) "aJu" = ( @@ -18766,7 +18727,7 @@ }, /area/crew_quarters/bar/atrium) "aJY" = ( -/obj/structure/sign/nosmoking_2, +/obj/structure/sign/warning/nosmoking, /turf/closed/wall, /area/crew_quarters/kitchen) "aJZ" = ( @@ -19057,7 +19018,7 @@ /turf/open/floor/engine, /area/engine/supermatter) "aKD" = ( -/obj/structure/sign/fire, +/obj/structure/sign/warning/fire, /turf/closed/wall/r_wall, /area/engine/supermatter) "aKE" = ( @@ -19946,7 +19907,6 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 1 }, -/obj/effect/landmark/lightsout, /turf/open/floor/plasteel/neutral, /area/hallway/secondary/exit) "aMC" = ( @@ -20239,7 +20199,7 @@ /area/engine/engineering) "aNg" = ( /obj/structure/reagent_dispensers/fueltank, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = -32 }, /obj/effect/turf_decal/stripes/line{ @@ -20569,7 +20529,7 @@ /obj/item/folder/yellow, /obj/item/pen, /obj/item/hand_labeler_refill, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = -32 }, /obj/item/device/radio/intercom{ @@ -20800,7 +20760,7 @@ /turf/open/floor/plating, /area/hydroponics) "aOk" = ( -/obj/structure/sign/botany, +/obj/structure/sign/departments/botany, /turf/closed/wall, /area/hydroponics) "aOm" = ( @@ -21140,7 +21100,6 @@ /area/hallway/primary/central) "aOU" = ( /obj/machinery/door/firedoor, -/obj/effect/landmark/lightsout, /obj/machinery/atmospherics/pipe/manifold/supply/hidden, /obj/structure/cable/white{ icon_state = "4-8" @@ -21616,7 +21575,7 @@ /turf/open/floor/engine, /area/engine/engineering) "aPK" = ( -/obj/structure/sign/electricshock, +/obj/structure/sign/warning/electricshock, /turf/closed/wall/r_wall, /area/engine/supermatter) "aPL" = ( @@ -21913,7 +21872,6 @@ /turf/open/floor/plasteel, /area/hallway/primary/central) "aQp" = ( -/obj/effect/landmark/lightsout, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -21997,7 +21955,7 @@ /turf/open/floor/plasteel/neutral/corner, /area/hallway/primary/central) "aQz" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_y = -32 }, /obj/machinery/light, @@ -22217,7 +22175,7 @@ /turf/open/floor/plasteel, /area/library) "aRa" = ( -/obj/structure/sign/kiddieplaque/library, +/obj/structure/sign/plaques/kiddie/library, /turf/closed/wall, /area/library) "aRb" = ( @@ -22577,7 +22535,7 @@ }, /area/library) "aRV" = ( -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = 32 }, /obj/machinery/vending/games, @@ -22664,7 +22622,7 @@ /turf/open/floor/plasteel/vault, /area/medical/morgue) "aSg" = ( -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = 32 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -22961,7 +22919,7 @@ "aSR" = ( /obj/structure/table/reinforced, /obj/item/tank/internals/plasma, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = -32 }, /obj/effect/turf_decal/bot, @@ -24724,7 +24682,7 @@ /area/medical/chemistry) "aWO" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/nosmoking_1{ +/obj/structure/sign/warning/nosmoking/circle{ pixel_x = 32 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -24798,7 +24756,7 @@ /turf/open/floor/plating, /area/science/lab) "aWW" = ( -/obj/structure/sign/nosmoking_1, +/obj/structure/sign/warning/nosmoking/circle, /turf/closed/wall, /area/science/lab) "aWX" = ( @@ -25110,7 +25068,6 @@ /obj/structure/cable/white{ icon_state = "1-4" }, -/obj/effect/landmark/lightsout, /turf/open/floor/plasteel/whitepurple/corner{ dir = 1 }, @@ -25300,7 +25257,7 @@ /area/medical/medbay/zone3) "aXR" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/bluecross_2, +/obj/structure/sign/departments/medbay/alt, /turf/open/floor/plating, /area/medical/medbay/zone3) "aXS" = ( @@ -25865,7 +25822,7 @@ /turf/open/floor/plasteel/neutral, /area/hallway/primary/central) "aYZ" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = 32 }, /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ @@ -26181,7 +26138,6 @@ /obj/structure/cable/white{ icon_state = "2-4" }, -/obj/effect/landmark/lightsout, /turf/open/floor/plasteel/blue, /area/medical/medbay/zone3) "aZK" = ( @@ -26577,8 +26533,8 @@ /area/medical/medbay/zone3) "baw" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/bluecross_2, -/obj/structure/sign/nosmoking_1{ +/obj/structure/sign/departments/medbay/alt, +/obj/structure/sign/warning/nosmoking/circle{ pixel_y = -28 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -27424,7 +27380,7 @@ name = "Medbay Desk"; req_access_txt = "5" }, -/obj/structure/sign/nosmoking_1{ +/obj/structure/sign/warning/nosmoking/circle{ pixel_x = 32 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -27641,7 +27597,7 @@ /obj/structure/window/reinforced{ dir = 8 }, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = 32 }, /turf/open/floor/plasteel/bar, @@ -28382,7 +28338,7 @@ /turf/open/floor/circuit/green, /area/science/robotics/mechbay) "bei" = ( -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = -32 }, /turf/open/floor/mech_bay_recharge_floor, @@ -28448,7 +28404,7 @@ /obj/item/device/mmi, /obj/item/device/mmi, /obj/item/device/mmi, -/obj/structure/sign/bluecross_2{ +/obj/structure/sign/departments/medbay/alt{ pixel_y = -32 }, /obj/machinery/light, @@ -28482,7 +28438,7 @@ pixel_y = 16 }, /obj/item/circular_saw, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = -32 }, /obj/structure/mirror{ @@ -28628,7 +28584,7 @@ /turf/open/floor/plasteel, /area/maintenance/port) "beG" = ( -/obj/structure/sign/bluecross_2, +/obj/structure/sign/departments/medbay/alt, /turf/closed/wall, /area/medical/medbay/zone3) "beH" = ( @@ -29218,7 +29174,7 @@ name = "Xenobiology Lab"; req_access_txt = "47" }, -/obj/structure/sign/xenobio{ +/obj/structure/sign/departments/xenobio{ pixel_x = 32 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -29340,7 +29296,7 @@ /area/chapel/main) "bgb" = ( /obj/structure/bookcase, -/obj/structure/sign/kiddieplaque/badger{ +/obj/structure/sign/plaques/kiddie/badger{ pixel_y = 32 }, /obj/machinery/light/small{ @@ -29395,16 +29351,6 @@ heat_capacity = 1e+006 }, /area/hallway/primary/central) -<<<<<<< HEAD -"bgh" = ( -/obj/effect/landmark/lightsout, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/neutral/side, -/area/hallway/primary/central) -======= ->>>>>>> 2d5c3d5... Merge pull request #34781 from DaxDupont/please-make-waffles-for=i-am-belgian "bgl" = ( /obj/machinery/vending/cola/random, /obj/machinery/newscaster{ @@ -29892,7 +29838,7 @@ pixel_x = -12; pixel_y = 2 }, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = -32 }, /turf/open/floor/plating, @@ -29912,7 +29858,7 @@ dir = 4; pixel_x = 11 }, -/obj/structure/sign/botany{ +/obj/structure/sign/departments/botany{ pixel_x = 32 }, /turf/open/floor/plating, @@ -30294,7 +30240,7 @@ /obj/machinery/light/small{ dir = 1 }, -/obj/structure/sign/kiddieplaque/badger{ +/obj/structure/sign/plaques/kiddie/badger{ pixel_y = 32 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -30549,7 +30495,7 @@ }, /area/hallway/secondary/entry) "biB" = ( -/obj/structure/sign/biohazard, +/obj/structure/sign/warning/biohazard, /turf/closed/wall/r_wall, /area/science/xenobiology) "biC" = ( @@ -30578,7 +30524,7 @@ /turf/open/floor/plasteel, /area/science/xenobiology) "biE" = ( -/obj/structure/sign/xenobio, +/obj/structure/sign/departments/xenobio, /turf/closed/wall/r_wall, /area/science/xenobiology) "biF" = ( @@ -31315,7 +31261,7 @@ /area/hallway/secondary/entry) "bjY" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/vacuum, +/obj/structure/sign/warning/vacuum, /turf/open/floor/plating, /area/hallway/secondary/entry) "bjZ" = ( @@ -32510,23 +32456,17 @@ /turf/open/floor/plating, /area/maintenance/starboard/aft) "btj" = ( -/obj/docking_port/mobile/arrivals{ - dir = 2; - dwidth = 4; - height = 17; - name = "omega arrivals shuttle"; - width = 9 - }, /obj/docking_port/stationary{ dir = 2; dwidth = 4; height = 17; id = "arrivals_stationary"; name = "omega arrivals"; + roundstart_template = /datum/map_template/shuttle/arrival/delta; width = 9 }, -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/arrival) +/turf/open/space/basic, +/area/space) "btk" = ( /obj/machinery/door/airlock/external{ cyclelinkeddir = 4; @@ -32837,18 +32777,6 @@ /turf/open/floor/pod/dark, /area/shuttle/transport) "bwz" = ( -/obj/machinery/door/airlock/titanium, -/obj/docking_port/mobile{ - dir = 8; - dwidth = 2; - height = 13; - id = "ferry"; - name = "ferry shuttle"; - port_direction = 1; - preferred_direction = 4; - roundstart_move = "ferry_away"; - width = 5 - }, /obj/docking_port/stationary{ dir = 8; dwidth = 2; @@ -32858,8 +32786,8 @@ turf_type = /turf/open/space; width = 5 }, -/turf/open/floor/pod/light, -/area/shuttle/transport) +/turf/open/space/basic, +/area/space) "bwB" = ( /obj/structure/shuttle/engine/heater{ dir = 8 @@ -33209,7 +33137,7 @@ /turf/closed/wall/rust, /area/maintenance/fore) "byf" = ( -/obj/structure/sign/vacuum, +/obj/structure/sign/warning/vacuum, /turf/closed/wall, /area/maintenance/starboard/fore) "byg" = ( @@ -33344,7 +33272,7 @@ }, /area/bridge) "swF" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall/rust, /area/asteroid/nearstation) "swG" = ( @@ -33483,7 +33411,7 @@ /turf/open/floor/plasteel, /area/maintenance/starboard) "sBW" = ( -/obj/structure/sign/vacuum, +/obj/structure/sign/warning/vacuum, /turf/closed/wall/rust, /area/maintenance/starboard) "sCr" = ( @@ -33626,7 +33554,7 @@ /turf/open/floor/plasteel/vault, /area/maintenance/starboard) "sEQ" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall, /area/maintenance/starboard) "sFn" = ( @@ -34041,7 +33969,7 @@ }, /area/maintenance/starboard/central) "sIN" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall/rust, /area/maintenance/starboard) "sIO" = ( @@ -34425,7 +34353,7 @@ /turf/closed/wall/rust, /area/hallway/secondary/entry) "sLw" = ( -/obj/structure/sign/electricshock, +/obj/structure/sign/warning/electricshock, /turf/closed/wall/r_wall/rust, /area/ai_monitored/turret_protected/ai) "sLx" = ( @@ -34466,11 +34394,11 @@ /turf/open/floor/plasteel/vault/side, /area/ai_monitored/turret_protected/ai) "sLA" = ( -/obj/structure/sign/electricshock, +/obj/structure/sign/warning/electricshock, /turf/closed/wall/r_wall, /area/ai_monitored/turret_protected/ai) "sLB" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall/r_wall, /area/ai_monitored/turret_protected/ai) "sLC" = ( @@ -34508,7 +34436,7 @@ /turf/open/floor/circuit/green, /area/ai_monitored/turret_protected/ai) "sLI" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall/r_wall/rust, /area/ai_monitored/turret_protected/ai) "sLJ" = ( @@ -34959,7 +34887,7 @@ /obj/structure/cable/yellow{ icon_state = "0-2" }, -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_y = 32 }, /obj/effect/turf_decal/stripes/line{ @@ -34978,7 +34906,7 @@ }, /area/ai_monitored/turret_protected/aisat_interior) "sMU" = ( -/obj/structure/sign/vacuum, +/obj/structure/sign/warning/vacuum, /turf/closed/wall/r_wall, /area/ai_monitored/turret_protected/aisat_interior) "sMV" = ( @@ -35025,7 +34953,7 @@ }, /area/ai_monitored/turret_protected/aisat_interior) "sMY" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -35069,7 +34997,7 @@ }, /area/ai_monitored/turret_protected/aisat_interior) "sNc" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -35286,7 +35214,7 @@ }, /area/ai_monitored/turret_protected/aisat_interior) "sNx" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall, /area/ai_monitored/turret_protected/aisat_interior) "sNy" = ( @@ -35427,7 +35355,7 @@ /turf/open/floor/plating, /area/ai_monitored/turret_protected/aisat_interior) "sNQ" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall/r_wall, /area/ai_monitored/turret_protected/aisat_interior) "sNS" = ( @@ -35481,7 +35409,7 @@ /turf/open/space/basic, /area/space/nearstation) "sOk" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall, /area/space/nearstation) "sOr" = ( @@ -71102,7 +71030,7 @@ aaa aaa aaa aaa -bwb +aaa aaa aaa aaa @@ -71358,9 +71286,9 @@ aaa aaa aaa aaa -bwb -bwo -bwb +aaa +aaa +aaa aaa aaa aaa @@ -71615,9 +71543,9 @@ aaa aaa aaa aaa -bwc -bwi -bwB +aaa +aaa +aaa aaa aaa aaa @@ -71872,9 +71800,9 @@ aaa aaa aaa aaa -bvS -bwq -bvS +aaa +aaa +aaa aaa aaa aaa @@ -72128,11 +72056,11 @@ aaa aaa aaa aaa -bvS -bvS -bwr -bvS -bvS +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -72385,11 +72313,11 @@ aaa aaa aaa aaa -bvT -bwf -bwi -bwE -bvT +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -72642,11 +72570,11 @@ aaa aaa aaa aaa -bvS -bwf -bwi -bwE -bvS +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -72899,11 +72827,11 @@ aaa aaa aaa aaa -bvS -bwh -bwi -bwi -bvS +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -73156,11 +73084,11 @@ aaa aaa aaa aaa -bvW -bwi -bwv -bwi -bwQ +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -73413,11 +73341,11 @@ aaa aaa aaa aaa -bvS -bwi -bwi -bwI -bvS +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -73670,11 +73598,11 @@ aaa aaa aaa aaa -bvS -bwf -bwi -bwE -bvS +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -73927,11 +73855,11 @@ aaa aaa aaa aaa -bvT -bwf -bwi -bwE -bvT +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -74184,11 +74112,11 @@ aaa aaa aaa aaa -bvS -bvT +aaa +aaa bwz -bvT -bvS +aaa +aaa aaa aaa aaa @@ -76489,19 +76417,19 @@ bgV aae aaa aaa -bjO -bjZ -bka -bkm -bka -bkb -bkb -bkb -bkb -bkG -bkm -bka -bka +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -76745,20 +76673,20 @@ biv bgU aae aaa -bjN -bjO -bka -bkc -bkn -bkq -bkv -bkv -bkv -bkv -bkH -bkn -bkM -bka +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -77002,23 +76930,23 @@ bxY bgU aaa aaa -bjN -bjW -bkb -bkd -bko -bko -bko -bko -bko -bko -bko -bko -bkN -bka -bka -bkb -bka +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -77259,23 +77187,23 @@ bix bgU aaa aaa -bjN -bjW -bkb -bke -bko -bko -bkw -bkw -bkw -bkw -bkI -bko -bkO -bkT -bkY -bld -bkb +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -77517,22 +77445,22 @@ bgU aaa aaa btj -bjO -bjZ -bkf -bko -bkr -buA -bkx -bkD -bkx -bkF -buB -bkP -bkU -bkZ -ble -bkb +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -77773,23 +77701,23 @@ bix bgU aaa aaa -bjN -bjW -bkb -bkg -bko -bko -bkv -bkv -bkv -bkv -bkJ -bko -bkQ -bkV -bla -bld -bkb +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -78030,23 +77958,23 @@ biw bgU aaa aaa -bjN -bjW -bkb -bkd -bko -bko -bko -bko -bko -bko -bko -bko -byn -bka -bka -bkb -bka +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -78287,20 +78215,20 @@ biy bgU aae aaa -bjN -bjO -bka -bkc -bkp -bks -bkw -bkw -bkw -bkw -bkK -bkp -bkR -bka +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -78545,19 +78473,19 @@ bgT aae aaa aaa -bjO -bjZ -bka -bkb -bka -bkb -bkb -bkb -bkb -bkG -bkb -bka -bka +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -84385,17 +84313,17 @@ aaa aaa aaa aaa -abQ -abQ -abQ -aei +aaa +aaa +aaa +aaa aeZ -abQ -aeZ -aht -abQ -abQ -abQ +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa amC @@ -84642,18 +84570,18 @@ aaa aaa aaa aaa -abQ -acz -afa -afa -afa -afK -afa -afa -aig -abQ -abQ -akQ +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa amC amC @@ -84899,18 +84827,18 @@ aaa aaa aaa aaa -abQ -acA -ads -aej -ads -ads -ads -ads -aii -aiQ -ajN -akR +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aae amD @@ -85156,18 +85084,18 @@ aaa aaa aaa aaa -abQ -buy -ads -ads -ads -ads -ads -ads -aii -aiQ -ajN -akR +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aae ant @@ -85413,18 +85341,18 @@ aaa aaa aaa aaa -abQ -acA -ads -ads -ads -ads -ads -ads -aii -aiQ -ajN -akR +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa amD @@ -85670,26 +85598,26 @@ aaa aaa aaa aaa -abQ -acC -aek -aek -aek -buz -aek -aek -aij -abQ -abQ -akS aaa -amE -amE -amF +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa app -amF -amE -amE +aaa +aaa +aaa aaa aaa aaa @@ -85927,26 +85855,26 @@ aaa aaa aaa aaa -abQ -abQ -abQ -abQ -abQ -abQ -agD -abQ -abQ -abQ -abQ aaa aaa -amE -anu -aon -aon -aqw -arn -amE +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -86197,13 +86125,13 @@ aaa aaa aaa aaa -amF -anv -aoo -apr -aqx -aro -asu +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -86454,13 +86382,13 @@ aaa aaa aaa aaa -amE -anw -aop -aps -aqy -arp -amE +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -86711,13 +86639,13 @@ aaa aaa aaa aaa -amE -amE -amF -apt -amF -amE -amE +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -87237,24 +87165,24 @@ aaa aaa aaa aaa -axX -axX -axX -aBj -axZ +aaa +aaa +aaa +aaa +aaa aDj -axX -axY -axY -axY -axX -aJe -axZ -aJe -axX -axX -aLz -aPD +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -87494,25 +87422,25 @@ aaa aaa aaa aaa -axX -azc -aAa -aAb -axY -aDk -aEg -aEm -aEm -aEm -aEg -aDk -axY -aDk -aMD -aNL -axX -aPD -aQE +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -87751,25 +87679,25 @@ aaa aaa aaa aaa -axY -azd -aAb -aAb -aCo -aDl -aEh -aEh -aEh -aEh -aEh -aJf -aKm -aLw -aME -aNM -axY -aPE -aQE +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -88008,25 +87936,25 @@ aaa aaa aaa aaa -axY -azd -aAb -aAb -axY -aDl -aEi -bvP -aEi -aEi -aEi -aJf -aKm -aLx -aMF -aNN -axY -aPE -aQE +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -88265,25 +88193,25 @@ aaa aaa aaa aaa -axX -aze -aAb -aBk -axY -aDl -aEj -aFo -aEl -aFp -aEj -aJf -axY -aLy -aMG -aNO -axX -aPE -aQE +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -88522,25 +88450,25 @@ aaa aaa aaa aaa -axZ -axY -aAc -axY -aCp -bvO -aEk -aEj -aGd -aEl -aEk -bvR -aKn -aLz -axY -aLz -aLz -aPD -aPD +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -88779,25 +88707,25 @@ aaa aaa aaa aaa -axX -azf -aAd -aBl -axY -aDl -aEl -aFp -aEj -aFo -aEl -aJf -axY -aLA -aMH -aNP -axX -aPE -aQE +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -89036,25 +88964,25 @@ aaa aaa aaa aaa -axY -azg -aAe -aAd -aCq -aDl -aEm -bvQ -aEm -aEm -aEm -aJf -aKo -aLB -aLB -aNQ -axY -aPE -aQE +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -89293,25 +89221,25 @@ aaa aaa aaa aaa -axY -azh -aAd -aBm -axY -aDl -aEh -aEh -aEh -aEh -aEh -aJf -aKo -aLB -aLB -aNR -axY -aPE -aQE +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -89550,25 +89478,25 @@ aaa aaa aaa aaa -axY -azi -aAf -aBn -axX -aDm -aEi -aEi -aEi -aEi -aEi -aJg -axY -aLC -aMI -aNS -axX -aPD -aQE +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -89807,24 +89735,24 @@ aaa aaa aaa aaa -axX -axY -axY -axX -axZ -axX -axY -axY -axY -axY -axY -axX -axZ -axX -axX -axX -aLz -aPD +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa diff --git a/_maps/map_files/PubbyStation/PubbyStation.dmm b/_maps/map_files/PubbyStation/PubbyStation.dmm index 99f86960ea..b951302597 100644 --- a/_maps/map_files/PubbyStation/PubbyStation.dmm +++ b/_maps/map_files/PubbyStation/PubbyStation.dmm @@ -1836,18 +1836,10 @@ /obj/machinery/light/small{ dir = 8 }, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_x = 32 }, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_x = -32 }, /turf/open/floor/plating, @@ -3006,7 +2998,7 @@ dir = 4; light_color = "#e8eaff" }, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = 32 }, /turf/open/floor/plasteel/dark, @@ -3041,7 +3033,7 @@ /area/security/main) "ajn" = ( /obj/structure/table, -/obj/structure/sign/goldenplaque{ +/obj/structure/sign/plaques/golden{ pixel_y = 32 }, /obj/machinery/light{ @@ -3368,7 +3360,7 @@ "akb" = ( /obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk, -/obj/structure/sign/atmosplaque{ +/obj/structure/sign/plaques/atmos{ desc = "An embossed piece of paper from the University of Nanotrasen at Portpoint."; icon_state = "kiddieplaque"; name = "\improper 'Diploma' frame"; @@ -5521,11 +5513,7 @@ /obj/structure/disposalpipe/segment{ dir = 5 }, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_x = 32; pixel_y = -32 }, @@ -5841,11 +5829,7 @@ icon_state = "1-2" }, /obj/structure/disposalpipe/segment, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_x = 32 }, /turf/open/floor/plating, @@ -6307,7 +6291,8 @@ launch_status = 0; name = "monastery shuttle"; port_direction = 2; - width = 5 + width = 5; + timid = 0 }, /turf/open/floor/mineral/titanium/blue, /area/shuttle/pod_1) @@ -6707,7 +6692,7 @@ network = list("SS13") }, /obj/structure/table, -/obj/structure/sign/biohazard{ +/obj/structure/sign/warning/biohazard{ pixel_x = -32 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -6764,7 +6749,7 @@ pixel_y = 4 }, /obj/item/device/radio/off, -/obj/structure/sign/biohazard{ +/obj/structure/sign/warning/biohazard{ pixel_x = 32 }, /obj/item/device/radio/off, @@ -7297,11 +7282,7 @@ /obj/machinery/light/small{ dir = 4 }, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_x = 32 }, /obj/structure/closet/emcloset/anchored, @@ -7513,7 +7494,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 5 }, -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall, /area/bridge) "atM" = ( @@ -7530,7 +7511,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 5 }, -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall, /area/bridge) "atO" = ( @@ -7721,7 +7702,7 @@ /area/crew_quarters/dorms) "aul" = ( /obj/machinery/computer/shuttle/monastery_shuttle, -/obj/structure/sign/pods{ +/obj/structure/sign/warning/pods{ pixel_y = 32 }, /turf/open/floor/plasteel/dark, @@ -7991,11 +7972,7 @@ /area/bridge) "auU" = ( /obj/structure/closet/emcloset/anchored, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_x = -32 }, /obj/machinery/light/small{ @@ -8013,7 +7990,7 @@ /turf/closed/wall/r_wall, /area/ai_monitored/nuke_storage) "auX" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 10 }, @@ -8032,7 +8009,7 @@ /turf/open/floor/plasteel/vault, /area/ai_monitored/nuke_storage) "auZ" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall/r_wall, /area/ai_monitored/nuke_storage) "ava" = ( @@ -8059,7 +8036,7 @@ /turf/open/floor/plasteel, /area/gateway) "avc" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall/r_wall, /area/gateway) "avd" = ( @@ -8085,7 +8062,7 @@ /obj/machinery/light/small{ dir = 1 }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ desc = "Under the painting a plaque reads: 'While the meat grinder may not have spared you, fear not. Not one part of you has gone to waste... You were delicious.'"; icon_state = "monkey_painting"; name = "Mr. Deempisi portrait"; @@ -8186,29 +8163,17 @@ /turf/open/floor/mineral/titanium/blue, /area/shuttle/labor) "avp" = ( -/obj/machinery/door/airlock/titanium{ - id_tag = "prisonshuttle"; - name = "Labor Shuttle Airlock" - }, -/obj/docking_port/mobile{ - dir = 8; - dwidth = 2; - height = 5; - id = "laborcamp"; - name = "labor camp shuttle"; - port_direction = 4; - width = 9 - }, /obj/docking_port/stationary{ dir = 8; dwidth = 2; height = 5; id = "laborcamp_home"; name = "fore bay 1"; + roundstart_template = /datum/map_template/shuttle/labour/box; width = 9 }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/labor) +/turf/open/space/basic, +/area/space) "avq" = ( /obj/machinery/door/airlock/external{ name = "Labor Camp Shuttle Airlock" @@ -9194,7 +9159,7 @@ /turf/open/floor/plasteel, /area/hallway/primary/fore) "axJ" = ( -/obj/structure/sign/security{ +/obj/structure/sign/departments/security{ pixel_y = 32 }, /turf/open/floor/plasteel, @@ -9405,7 +9370,7 @@ /obj/machinery/light/small{ dir = 1 }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ desc = "Under the painting a plaque reads: 'While the meat grinder may not have spared you, fear not. Not one part of you has gone to waste... You were delicious.'"; icon_state = "monkey_painting"; name = "Mr. Deempisi portrait"; @@ -9515,11 +9480,7 @@ /area/solar/port) "ayz" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_x = -32 }, /turf/open/floor/plating, @@ -9569,11 +9530,7 @@ }, /area/hallway/primary/fore) "ayF" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = 32 }, /turf/open/floor/plasteel, @@ -10831,7 +10788,7 @@ /obj/machinery/light/small{ dir = 1 }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ desc = "Under the painting a plaque reads: 'While the meat grinder may not have spared you, fear not. Not one part of you has gone to waste... You were delicious.'"; icon_state = "monkey_painting"; name = "Mr. Deempisi portrait"; @@ -11483,7 +11440,7 @@ /area/crew_quarters/dorms) "aDi" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/obj/structure/sign/restroom{ +/obj/structure/sign/departments/restroom{ pixel_y = -32 }, /turf/open/floor/plasteel/white/corner, @@ -11744,7 +11701,7 @@ /obj/machinery/porta_turret/ai{ dir = 8 }, -/obj/structure/sign/kiddieplaque{ +/obj/structure/sign/plaques/kiddie{ pixel_x = 32 }, /turf/open/floor/plasteel/darkblue/side{ @@ -12379,11 +12336,7 @@ /turf/open/floor/plating, /area/maintenance/department/cargo) "aFg" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = 32 }, /turf/open/floor/plating, @@ -13484,7 +13437,7 @@ /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 1 }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_y = 32 }, /turf/open/floor/plasteel/blue/corner{ @@ -13582,7 +13535,7 @@ /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 1 }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_y = 32 }, /turf/open/floor/plasteel/blue/corner{ @@ -13660,7 +13613,7 @@ /obj/machinery/airalarm{ pixel_y = 22 }, -/obj/structure/sign/restroom{ +/obj/structure/sign/departments/restroom{ pixel_x = 32 }, /turf/open/floor/plasteel/white/corner, @@ -14281,11 +14234,7 @@ /turf/open/floor/mineral/plastitanium/brig, /area/shuttle/escape) "aJD" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_x = -32 }, /turf/open/floor/plasteel/red/side{ @@ -14370,7 +14319,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/structure/sign/restroom{ +/obj/structure/sign/departments/restroom{ pixel_y = -32 }, /turf/open/floor/plasteel, @@ -16164,7 +16113,7 @@ }, /area/hallway/secondary/exit/departure_lounge) "aOs" = ( -/obj/structure/sign/evac, +/obj/structure/sign/departments/evac, /turf/closed/wall, /area/hallway/secondary/exit/departure_lounge) "aOt" = ( @@ -16995,11 +16944,7 @@ /turf/open/floor/carpet, /area/shuttle/escape) "aQr" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_x = -32 }, /turf/open/floor/plasteel/escape{ @@ -17367,7 +17312,7 @@ /area/hallway/primary/central) "aRe" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/sign/cargo{ +/obj/structure/sign/departments/cargo{ pixel_x = 32 }, /turf/open/floor/plasteel/brown/corner{ @@ -18452,9 +18397,6 @@ /turf/open/floor/mineral/titanium, /area/shuttle/escape) "aTH" = ( -/obj/machinery/door/airlock/titanium{ - name = "Emergency Shuttle Airlock" - }, /obj/docking_port/stationary{ dheight = 0; dir = 8; @@ -18464,17 +18406,8 @@ name = "PubbyStation emergency evac bay"; width = 20 }, -/obj/docking_port/mobile/emergency{ - dheight = 0; - dir = 8; - dwidth = 4; - height = 15; - name = "Pubby emergency shuttle"; - port_direction = 4; - width = 18 - }, -/turf/open/floor/plating, -/area/shuttle/escape) +/turf/open/space/basic, +/area/space) "aTI" = ( /obj/machinery/light, /turf/open/floor/plating, @@ -18821,13 +18754,6 @@ /turf/open/floor/plating, /area/quartermaster/storage) "aUA" = ( -/obj/machinery/door/airlock/titanium{ - name = "Supply Shuttle Airlock"; - req_access_txt = "31" - }, -/obj/docking_port/mobile/supply{ - dir = 4 - }, /obj/docking_port/stationary{ dir = 4; dwidth = 5; @@ -18836,8 +18762,8 @@ name = "Cargo Bay"; width = 12 }, -/turf/open/floor/plating, -/area/shuttle/supply) +/turf/open/space/basic, +/area/space) "aUB" = ( /obj/structure/rack, /obj/effect/spawner/lootdrop/maintenance, @@ -18879,7 +18805,7 @@ pixel_y = 3 }, /obj/item/crowbar, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = 32 }, /obj/machinery/light{ @@ -19569,7 +19495,7 @@ /obj/machinery/light/small{ dir = 1 }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ desc = "Under the painting a plaque reads: 'While the meat grinder may not have spared you, fear not. Not one part of you has gone to waste... You were delicious.'"; icon_state = "monkey_painting"; name = "Mr. Deempisi portrait"; @@ -19861,7 +19787,7 @@ /area/hallway/secondary/exit/departure_lounge) "aWM" = ( /obj/machinery/washing_machine, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ desc = "Under the painting a plaque reads: 'While the meat grinder may not have spared you, fear not. Not one part of you has gone to waste... You were delicious.'"; icon_state = "monkey_painting"; name = "Mr. Deempisi portrait"; @@ -20081,7 +20007,7 @@ /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 4 }, -/obj/structure/sign/cargo{ +/obj/structure/sign/departments/cargo{ pixel_x = 32 }, /turf/open/floor/plasteel/brown/corner{ @@ -20346,7 +20272,7 @@ /area/hydroponics) "aXY" = ( /obj/machinery/hydroponics/constructable, -/obj/structure/sign/botany{ +/obj/structure/sign/departments/botany{ pixel_y = 32 }, /obj/machinery/light{ @@ -21914,11 +21840,7 @@ /area/maintenance/solars/starboard) "bbO" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_x = 32 }, /turf/open/floor/plating, @@ -22373,11 +22295,7 @@ /turf/open/floor/plasteel/airless/solarpanel, /area/solar/starboard) "bcW" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = 32 }, /obj/effect/spawner/structure/window/reinforced, @@ -22763,7 +22681,7 @@ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/sign/custodian{ +/obj/structure/sign/departments/custodian{ pixel_x = 32 }, /turf/open/floor/plasteel/neutral/corner, @@ -23468,12 +23386,17 @@ /turf/open/floor/plating, /area/quartermaster/miningdock) "bfK" = ( -/obj/machinery/door/airlock/titanium{ - name = "Mining Shuttle Airlock"; - req_access_txt = "48" +/obj/docking_port/stationary{ + dir = 4; + dwidth = 3; + height = 5; + id = "mining_home"; + name = "mining shuttle bay"; + roundstart_template = /datum/map_template/shuttle/mining/delta; + width = 7 }, -/turf/open/floor/plating, -/area/shuttle/labor) +/turf/open/space/basic, +/area/space) "bfL" = ( /obj/machinery/door/airlock/titanium{ name = "Mining Shuttle Airlock"; @@ -23945,24 +23868,17 @@ /turf/open/floor/mineral/titanium/blue, /area/shuttle/arrival) "bgS" = ( -/obj/structure/shuttle/engine/propulsion{ - dir = 4 - }, -/obj/docking_port/mobile/arrivals{ - height = 13; - name = "pubby arrivals shuttle"; - width = 6 - }, /obj/docking_port/stationary{ dir = 8; dwidth = 3; height = 13; id = "arrivals_stationary"; name = "pubby arrivals"; + roundstart_template = /datum/map_template/shuttle/arrival/pubby; width = 6 }, -/turf/open/floor/plating/airless, -/area/shuttle/arrival) +/turf/open/space/basic, +/area/space) "bgU" = ( /obj/structure/table/wood, /obj/item/device/flashlight/lamp/green{ @@ -24548,7 +24464,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/structure/sign/bluecross_2{ +/obj/structure/sign/departments/medbay/alt{ pixel_x = 32; pixel_y = -32 }, @@ -24930,7 +24846,7 @@ /turf/open/floor/plating, /area/medical/medbay/central) "bje" = ( -/obj/structure/sign/bluecross_2, +/obj/structure/sign/departments/medbay/alt, /turf/closed/wall, /area/medical/medbay/central) "bjf" = ( @@ -24998,7 +24914,7 @@ /turf/open/floor/plasteel/green/corner, /area/science/research/lobby) "bjs" = ( -/obj/structure/sign/science, +/obj/structure/sign/departments/science, /turf/closed/wall, /area/science/research/lobby) "bjt" = ( @@ -25985,7 +25901,7 @@ /turf/open/floor/engine, /area/science/explab) "blV" = ( -/obj/structure/sign/kiddieplaque/perfect_drone{ +/obj/structure/sign/plaques/kiddie/perfect_drone{ pixel_y = 32 }, /turf/open/floor/engine, @@ -27321,11 +27237,7 @@ /turf/open/floor/plasteel/white, /area/science/xenobiology) "bpq" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE" - }, +/obj/structure/sign/warning/electricshock, /turf/closed/wall/r_wall, /area/science/xenobiology) "bpr" = ( @@ -28544,7 +28456,7 @@ /turf/open/floor/plasteel/white, /area/science/xenobiology) "brR" = ( -/obj/structure/sign/biohazard, +/obj/structure/sign/warning/biohazard, /turf/closed/wall, /area/science/xenobiology) "brS" = ( @@ -28625,7 +28537,7 @@ /turf/open/floor/plasteel, /area/science/xenobiology) "brZ" = ( -/obj/structure/sign/xenobio, +/obj/structure/sign/departments/xenobio, /obj/machinery/atmospherics/pipe/simple/general/hidden{ dir = 9 }, @@ -28745,12 +28657,7 @@ /turf/open/floor/pod/light, /area/shuttle/transport) "bsl" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK" - }, +/obj/structure/sign/warning/vacuum/external, /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/hallway/secondary/entry) @@ -29331,7 +29238,7 @@ dir = 8 }, /obj/effect/landmark/xeno_spawn, -/obj/structure/sign/xenobio{ +/obj/structure/sign/departments/xenobio{ pixel_x = -32 }, /turf/open/floor/plasteel/floorgrime, @@ -29348,7 +29255,7 @@ /area/science/xenobiology) "btC" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/biohazard, +/obj/structure/sign/warning/biohazard, /turf/open/floor/plating, /area/science/xenobiology) "btD" = ( @@ -29389,18 +29296,6 @@ /turf/open/floor/pod/dark, /area/shuttle/transport) "btK" = ( -/obj/machinery/door/airlock/titanium, -/obj/docking_port/mobile{ - dir = 8; - dwidth = 2; - height = 13; - id = "ferry"; - name = "ferry shuttle"; - port_direction = 1; - preferred_direction = 4; - roundstart_move = "ferry_away"; - width = 5 - }, /obj/docking_port/stationary{ dir = 8; dwidth = 2; @@ -29410,8 +29305,8 @@ turf_type = /turf/open/space; width = 5 }, -/turf/open/floor/pod/light, -/area/shuttle/transport) +/turf/open/space/basic, +/area/space) "btL" = ( /obj/machinery/door/airlock/external{ cyclelinkeddir = 4; @@ -30302,7 +30197,7 @@ name = "research shutters" }, /obj/machinery/door/firedoor/heavy, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = 32 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -31900,7 +31795,7 @@ }, /obj/machinery/door/firedoor/heavy, /obj/effect/turf_decal/stripes/line, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = 32 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -32288,7 +32183,7 @@ /obj/structure/chair{ dir = 4 }, -/obj/structure/sign/holy{ +/obj/structure/sign/departments/holy{ pixel_x = -32 }, /turf/open/floor/plasteel/dark, @@ -32502,7 +32397,7 @@ /turf/open/floor/plasteel/whiteblue/corner, /area/medical/medbay/central) "bzY" = ( -/obj/structure/sign/bluecross_2, +/obj/structure/sign/departments/medbay/alt, /turf/closed/wall, /area/crew_quarters/heads/cmo) "bzZ" = ( @@ -32922,7 +32817,7 @@ /turf/open/floor/plasteel/white, /area/medical/virology) "bAY" = ( -/obj/structure/sign/biohazard, +/obj/structure/sign/warning/biohazard, /turf/closed/wall, /area/medical/virology) "bAZ" = ( @@ -33750,7 +33645,7 @@ /turf/open/floor/engine, /area/science/storage) "bCS" = ( -/obj/structure/sign/fire, +/obj/structure/sign/warning/fire, /turf/closed/wall, /area/science/storage) "bCT" = ( @@ -35198,7 +35093,7 @@ icon_state = "1-2" }, /obj/structure/disposalpipe/segment, -/obj/structure/sign/examroom{ +/obj/structure/sign/departments/examroom{ pixel_x = -32 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -35214,7 +35109,7 @@ /turf/open/floor/plasteel/yellow/corner, /area/hallway/primary/aft) "bGa" = ( -/obj/structure/sign/science, +/obj/structure/sign/departments/science, /turf/closed/wall, /area/hallway/primary/aft) "bGb" = ( @@ -36349,7 +36244,7 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = -32 }, /obj/effect/turf_decal/stripes/corner{ @@ -36443,12 +36338,7 @@ /area/chapel/dock) "bIV" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK" - }, +/obj/structure/sign/warning/vacuum/external, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plating, /area/chapel/dock) @@ -37036,7 +36926,7 @@ /area/medical/virology) "bKq" = ( /obj/effect/spawner/structure/window, -/obj/structure/sign/deathsposal, +/obj/structure/sign/warning/deathsposal, /turf/open/floor/plating, /area/medical/virology) "bKr" = ( @@ -37840,11 +37730,7 @@ frequency = 1441; id = "inc_in" }, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_x = -32 }, /turf/open/floor/engine/vacuum, @@ -37869,11 +37755,7 @@ /obj/machinery/light/small{ dir = 8 }, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_x = -32 }, /turf/open/floor/plating, @@ -38659,7 +38541,7 @@ /turf/open/floor/plating, /area/engine/atmos) "bOs" = ( -/obj/structure/sign/fire, +/obj/structure/sign/warning/fire, /turf/closed/wall/r_wall, /area/science/mixing) "bOt" = ( @@ -39748,10 +39630,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'RADIOACTIVE AREA'"; - icon_state = "radiation"; - name = "RADIOACTIVE AREA"; +/obj/structure/sign/warning/radiation/rad_area{ pixel_x = -32 }, /obj/effect/turf_decal/stripes/corner{ @@ -40351,10 +40230,7 @@ /turf/closed/wall/r_wall, /area/storage/tech) "bSE" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'RADIOACTIVE AREA'"; - icon_state = "radiation"; - name = "RADIOACTIVE AREA"; +/obj/structure/sign/warning/radiation/rad_area{ pixel_x = -32 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -40439,7 +40315,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/structure/sign/engineering{ +/obj/structure/sign/departments/engineering{ pixel_y = -32 }, /turf/open/floor/plasteel/yellow/corner, @@ -40458,7 +40334,7 @@ icon_state = "plant-02" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/sign/engineering{ +/obj/structure/sign/departments/engineering{ pixel_y = -32 }, /turf/open/floor/plasteel/yellow/corner, @@ -40849,7 +40725,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ dir = 4 }, -/obj/structure/sign/atmosplaque{ +/obj/structure/sign/plaques/atmos{ pixel_y = 32 }, /obj/machinery/light{ @@ -41007,7 +40883,7 @@ /turf/open/floor/plating, /area/maintenance/department/engine) "bUf" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall/r_wall, /area/storage/tech) "bUg" = ( @@ -41019,7 +40895,7 @@ /turf/open/floor/plasteel/dark, /area/storage/tech) "bUh" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/closed/wall/r_wall, /area/storage/tech) @@ -42602,7 +42478,7 @@ /obj/structure/disposalpipe/trunk{ dir = 4 }, -/obj/structure/sign/deathsposal{ +/obj/structure/sign/warning/deathsposal{ pixel_x = -32 }, /turf/open/floor/plating{ @@ -42695,11 +42571,7 @@ /area/engine/engineering) "bYf" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE" - }, +/obj/structure/sign/warning/electricshock, /turf/open/floor/plating, /area/engine/engine_smes) "bYg" = ( @@ -43530,7 +43402,7 @@ /turf/open/floor/engine, /area/maintenance/disposal/incinerator) "bZV" = ( -/obj/structure/sign/fire, +/obj/structure/sign/warning/fire, /turf/closed/wall/r_wall, /area/maintenance/disposal/incinerator) "bZY" = ( @@ -44041,11 +43913,7 @@ /turf/open/floor/plasteel, /area/engine/engineering) "cbj" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'RADIOACTIVE AREA'"; - icon_state = "radiation"; - name = "RADIOACTIVE AREA" - }, +/obj/structure/sign/warning/radiation/rad_area, /turf/closed/wall/r_wall, /area/engine/engineering) "cbk" = ( @@ -44668,11 +44536,7 @@ /obj/machinery/light/small{ dir = 1 }, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = 32 }, /turf/open/floor/plating, @@ -45239,11 +45103,7 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_x = 32 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -45292,11 +45152,7 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_x = -32 }, /turf/open/floor/plating, @@ -45758,7 +45614,7 @@ /area/chapel/main/monastery) "cgM" = ( /obj/structure/dresser, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ desc = "Under the painting a plaque reads: 'While the meat grinder may not have spared you, fear not. Not one part of you has gone to waste... You were delicious.'"; icon_state = "monkey_painting"; name = "Mr. Deempisi portrait"; @@ -45795,11 +45651,7 @@ /obj/machinery/light/small{ dir = 8 }, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_x = -32 }, /turf/open/floor/plating, @@ -46595,7 +46447,7 @@ /turf/closed/wall, /area/asteroid/nearstation/bomb_site) "cjw" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ desc = "A warning sign which reads 'BOMB RANGE"; name = "BOMB RANGE" }, @@ -46625,22 +46477,6 @@ /turf/open/floor/plating/abductor, /area/shuttle/abandoned) "cjB" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Shuttle Airlock" - }, -/obj/docking_port/mobile{ - dheight = 0; - dir = 8; - dwidth = 4; - height = 9; - id = "whiteship"; - launch_status = 0; - name = "White Ship"; - port_direction = 4; - preferred_direction = 1; - roundstart_move = "whiteship_away"; - width = 9 - }, /obj/docking_port/stationary{ dir = 8; dwidth = 11; @@ -46650,14 +46486,10 @@ turf_type = /turf/open/space; width = 35 }, -/turf/open/floor/plasteel/dark, -/area/shuttle/abandoned) +/turf/open/space/basic, +/area/space) "cjC" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = 32 }, /obj/machinery/light/small{ @@ -46987,7 +46819,7 @@ /turf/open/floor/plasteel/dark, /area/library) "ckJ" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall/r_wall, /area/engine/engineering) "ckK" = ( @@ -48753,12 +48585,7 @@ /turf/open/floor/plasteel/dark, /area/chapel/main/monastery) "crl" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK" - }, +/obj/structure/sign/warning/vacuum/external, /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/chapel/asteroid/monastery) @@ -48804,11 +48631,7 @@ /turf/open/floor/plating, /area/maintenance/department/engine) "crA" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = 32 }, /obj/structure/disposalpipe/segment{ @@ -49941,11 +49764,7 @@ /obj/machinery/light/small{ dir = 8 }, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_x = -32 }, /obj/machinery/camera{ @@ -50957,7 +50776,7 @@ /turf/open/floor/plating, /area/maintenance/department/engine) "cBM" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ desc = "Under the painting a plaque reads: 'While the meat grinder may not have spared you, fear not. Not one part of you has gone to waste... You were delicious.'"; icon_state = "monkey_painting"; name = "Mr. Deempisi portrait"; @@ -59963,11 +59782,11 @@ aaa aaa aaa aaa -cil -cja -cin -cja -cil +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -60219,13 +60038,13 @@ aaa aaa aaa aaa -cil -cil -ciw -cix -ciw -cil -cil +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -60475,15 +60294,15 @@ aaa aaa aaa aaa -cil -cil -ciw -ciw -cix -ciw -ciw -cil -cil +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -60732,15 +60551,15 @@ aaa aaa aaa aaa -cim -ciw -ciw -cjb -cjy -cjW -ciw -ciw -ckY +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -60989,15 +60808,15 @@ aaa aaa aaa aaa -cin -cix -cix -cjc -cjz -cjX -cix -cix -cin +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -61246,15 +61065,15 @@ aaa aaa aaa aaa -cim -ciw -ciw -cjd -cjA -cjY -ciw -ciw -ckY +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -61503,15 +61322,15 @@ aaa aaa aaa aaa -cil -cil -ciw -ciw -cix -ciw -ciw -cil -cil +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -61761,13 +61580,13 @@ aaa aaa aaa aaa -cil -cil -ciw -cix -ciw -cil -cil +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -62019,11 +61838,11 @@ aaa aaa aaa aaa -cil -cje +aaa +aaa cjB -cje -cil +aaa +aaa aaa aaa aaa @@ -65274,21 +65093,21 @@ aaa aaa aaa aaa -aFS -cBN -cBN -aKs -aFS -aFS -cBN -cBN -aFS -aKs -aFS -aKs -aFS -aFS -aFS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -65531,21 +65350,21 @@ aaa aaa aaa aaa -aFS -aIs -aJx -aJx -cBN -aMI -aNZ -aNZ -aNZ -aMI -aNZ -aMI -aNZ -aVJ -aWD +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -65788,21 +65607,21 @@ aaa aaa aaa aaa -aFS -aIt -aJx -aJx -aLp -aIx -aIx -aIx -aIx -aIx -aIx -aIx -aIx -aVJ -aWD +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -66045,21 +65864,21 @@ aaa aaa aaa aaa -aFS -aIu -aJy -aKt -cBN -aIx -aOa -aOa -aOa -aIx -aIx -aOe -aOe -aVJ -aWD +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -66302,22 +66121,22 @@ aaa aaa aaa aaa -aFS -aFS -aFS -aFS -aHv -aMJ -aOb -aOb -aOb -aRA -aHv -aFS -aFS -aFS -aFS -aFS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -66557,24 +66376,24 @@ aaa aaa aaa aaa -aFS -aFS -aHv -aIv -aJz -aKu -aLq -aIx -aIx -aIx -aIx -aIx -aFS -aTF -aUE -aTF -aVJ -aWD +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -66814,24 +66633,24 @@ aaa aaa aaa aaa -cBN -aGQ -aHw -aIw -aIw -cBN -aIx -aIx -aOc -aPj -aOc -aIx -cBN -aMI -aMI -aMI -aVJ -aWD +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -67071,24 +66890,24 @@ aaa aaa aaa aaa -aFT -aGR -aHx -aIx -aIx -aKv -aIx -aIx -aOd -aPk -aQq -aIx -aSp -aMI -aMI -aMI -aVJ -aWD +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -67328,24 +67147,24 @@ aaa aaa aaa aaa -aFT -aGS -aHy -aIy -aIy -aFT -aIx -aIx -aOc -aPl -aOc -aIx -aFT -aMI -aNZ -aNZ -aVJ -aWD +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -67585,24 +67404,24 @@ axB aaa aaa aaa -aFS -aFS -aHv -aIz -aJA -aKu -aLq -aIx -aIx -aIx -aIx -aIx -aFS -aTG -aUF -aVK -aVJ -aWD +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -67844,22 +67663,22 @@ aaa aaa aaa aaa -aFS -aFS -aFS -aFS -aHv -aMJ -aOa -aOa -aOa -aRA -aHv -aFS -aFS -aFS -aFS -aFS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -68101,21 +67920,21 @@ aaa aaa aaa aaa -aFS -aIA -aJB -aKw -aFT -aIx -aOb -aOb -aOb -aIx -aIx -aNZ -aNZ -aVJ -aWD +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -68358,21 +68177,21 @@ aaa aaa aaa aaa -aFS -aIA -aJC -aJC -aLr -aIx -aIx -aIx -aIx -aIx -aIx -aIx -aIx -aVJ -aWD +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -68615,21 +68434,6 @@ aaa aaa aaa aaa -aFS -aIA -aJC -aJC -aFT -aMI -aOe -aOe -aOe -aMI -aOe -aMI -aOe -aVJ -aWD aaa aaa aaa @@ -68651,7 +68455,22 @@ aaa aaa aaa aaa -bsg +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -68872,21 +68691,18 @@ aaa aaa aaa aaa -aFS -aFT -aFT -aKx -aFS -aFS -aFT -aFT -aFS -aKs -aFS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aTH -aFS -aFS -aFS aaa aaa aaa @@ -68907,9 +68723,12 @@ aaa aaa aaa aaa -bsg -btG -bsg +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -69152,10 +68971,6 @@ aaa aaa aaa aaa -beV -bgP -bgP -beV aaa aaa aaa @@ -69164,9 +68979,13 @@ aaa aaa aaa aaa -bsh -bsk -buX +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -69409,10 +69228,6 @@ aaa aaa aaa aaa -beV -bfR -bhC -beV aaa aaa aaa @@ -69421,9 +69236,13 @@ aaa aaa aaa aaa -bqP -btH -bqP +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -69665,23 +69484,23 @@ aZx aZx aaa aaa -beV -beV -bgQ -bgQ -beV -beV +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aZx aZx aZx aZx -bqP -bqP -btI -bqP -bqP +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -69882,15 +69701,15 @@ amI anu aog aiu -apC -apC -apD -apC -apC -apD -apC -apC -apC +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aiu azW aBa @@ -69922,23 +69741,23 @@ baJ aZx bcW aZx -beV -bfQ -bfR -bfR -bhX -beV +aaa +aaa +aaa +aaa +aaa +aaa aZx aZx aZx baJ bon aZx -bqQ -bsi -bsk -buY -cqq +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -70139,15 +69958,15 @@ amJ anv aoh aiu -apD -aqj -are -ass -atr -auv -avo -awG -axD +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aiu azX aBb @@ -70179,23 +69998,23 @@ baK bbQ bcX bdV -beW -bfR -bgR -bgR -bfR -beW +aaa +aaa +aaa +aaa +aaa +aaa bbQ bcX bdV baK bon aZx -bqP -bsi -bsk -buY -bqP +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -70396,15 +70215,15 @@ amK anw aoh aiu -apD -aqk -arf -apC -ats -atr -atr -awG -axD +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aiu azY aiu @@ -70436,23 +70255,23 @@ baK aZx aZx aZx -beV -bfS -bfR -bfR -bhY -beV +aaa +aaa +aaa +aaa +aaa +aaa aZx aZx aZx baK bon aZx -bqP -bsj -bsk -bsk -bqP +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -70653,15 +70472,15 @@ akA akA aoi aiu -apD -aql -arg -ast -att -auw -atr -awG -axD +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aiu azZ aiu @@ -70693,23 +70512,23 @@ baK bbR bcY aZx -beX -bfT -bgR -bgR -bfR -beX +aaa +aaa +aaa +aaa +aaa +aaa aZx bkQ bbR baK bon aZx -bqR -bsk -btJ -bsk -bwp +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -70910,15 +70729,15 @@ amL anx aoj aiu -apC -apC -arh -apC -apC -apC +aaa +aaa +aaa +aaa +aaa +aaa avp -apC -apC +aaa +aaa aiu aAa aiu @@ -70950,23 +70769,23 @@ baL baK bcZ aZx -beX -bfU -bfR -bfR -bfR -beX +aaa +aaa +aaa +aaa +aaa +aaa aZx bkR baK baL bon aZx -bqP -bsk -bsk -buZ -bqP +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -71207,23 +71026,23 @@ baK bbS bda aZx -beX -bfR -bgR -bgR -bfR -beX +aaa +aaa +aaa +aaa +aaa +aaa aZx bkS bbS baK bon aZx -bqP -bsi -bsk -buY -bqP +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -71464,23 +71283,23 @@ baM aZx aZx aZx -beV -bfV -bgR -bgR -bhZ -beV +aaa +aaa +aaa +aaa +aaa +aaa aZx aZx aZx bno boo aZx -bqQ -bsi -bsk -buY -cqq +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -71721,23 +71540,23 @@ baN bbQ bcX bdV -beW -bfR -bfR -bfR -bfR -beW +aaa +aaa +aaa +aaa +aaa +aaa bbQ bcX bdV bnp bon aZx -bqP -bqQ +aaa +aaa btK -bqQ -bqP +aaa +aaa aaa aaa aaa @@ -71978,12 +71797,12 @@ baN aZx bcW aZx -beV -bfW -bfW -bfW -bfW -beV +aaa +aaa +aaa +aaa +aaa +aaa aZx aZx aZx @@ -72235,12 +72054,12 @@ baN bbR bbR aYG -beV -bfX +aaa +aaa bgS -bhD -bia -beV +aaa +aaa +aaa aYG bbR bbR @@ -90722,10 +90541,10 @@ aJm aKg cDa aMo -cDd -cDf -cDg -cDh +cDa +cDa +cDa +cDa aLg aTj aUu @@ -91753,8 +91572,8 @@ aMs aNO aPb aQe -cDi -cDj +cDa +cDa aTn aUx aVA @@ -92011,7 +91830,7 @@ aNP aPb aNO aNP -cDk +cDa aTo aSk aTm @@ -92268,7 +92087,7 @@ aNO aPc aQf aRq -cDl +cDa aTp aSk aTm @@ -92525,7 +92344,7 @@ aNQ aNO aQg aNP -cDm +cDa aTq aSk aVB @@ -92776,13 +92595,13 @@ aEd aEd aEd cCX -cDb -cDc -cDe +cDa +cDa +cDa coL coL coL -cDn +cDa aTr aUy aPd @@ -93551,25 +93370,25 @@ aKq aJs aEj aaa -aQh -aQh -aQh -aTt -aUA -aQh -aWC -aXB -aQh -aQh -aQh aaa -apC -apC -apD +aaa +aaa +aaa +aUA +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa bfK -apD -apC -apC +aaa +aaa +aaa aEj aTx bkE @@ -93807,26 +93626,26 @@ aKn aKn aMy aEj -aPe -aQh -aQh -aRr -aRr -aRr -aVC -aRr -aRr -aRr -aRr -aQh aaa -apC -bdN -atr -atr -beQ -bhw -apC +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aEj aTx bkE @@ -94064,26 +93883,26 @@ aEj aLk aLk aEj -aPe -aQi -aRr -aRr -aRr -aRr -aRr -aRr -aRr -aRr -aRr -aQh aaa -apD -bdO -beQ -atr -beQ -bhx -bhW +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aEj bjz bkE @@ -94321,26 +94140,26 @@ aKo aLl aMz aEj -aPe -aQi -aRr -aRr -aRr -aRr -aRr -aRr -aRr -aRr -aZu -aQh aaa -apC -bdP -atr -atr -beQ -bhy -apC +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aEj aTx bkF @@ -94578,26 +94397,26 @@ aFi aFi aEj aEj -aPe -aQi -aRr -aRr -aRr -aRr -aRr -aRr -aRr -aRr -aRr -aQh aaa -apC -apC -apD -bfL -apD -apC -apC +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aEj aTx bkF @@ -94835,18 +94654,18 @@ aKp aFi aMA aEj -aPe -aQh -aQh -aRr -aRr -aRr -aVD -aRr -aRr -aRr -aRr -aQh +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -95093,17 +94912,17 @@ aFi aFi aEj aaa -aQh -aQh -aQh -aQh -aQh -aQh -aQh -aQh -aQh -aQh -aQh +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa diff --git a/_maps/map_files/debug/runtimestation.dmm b/_maps/map_files/debug/runtimestation.dmm index d8ee100bf1..60bf3a95a6 100644 --- a/_maps/map_files/debug/runtimestation.dmm +++ b/_maps/map_files/debug/runtimestation.dmm @@ -20,10 +20,6 @@ "af" = ( /turf/open/floor/plating, /area/maintenance/department/bridge) -"ag" = ( -/obj/structure/lattice, -/turf/open/space, -/area/space/nearstation) "ah" = ( /turf/closed/wall/r_wall, /area/engine/atmos) @@ -131,10 +127,7 @@ /area/engine/gravity_generator) "au" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'RADIOACTIVE AREA'"; - icon_state = "radiation"; - name = "RADIOACTIVE AREA"; +/obj/structure/sign/warning/radiation/rad_area{ pixel_y = 32 }, /turf/open/floor/plating, @@ -1306,15 +1299,6 @@ dir = 1 }, /area/hallway/primary/central) -"dV" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/camera/autoname, -/turf/open/floor/plasteel/blue/side{ - dir = 1 - }, -/area/hallway/primary/central) "dW" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/camera/autoname, @@ -2510,7 +2494,7 @@ bI cf cq bu -dV +dU bE bE cN diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm index a45c06d0dc..1d7f605a61 100644 --- a/_maps/map_files/generic/CentCom.dmm +++ b/_maps/map_files/generic/CentCom.dmm @@ -2860,7 +2860,7 @@ /turf/closed/indestructible/riveted, /area/centcom/prison) "iI" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/indestructible/riveted, /area/centcom/prison) "iJ" = ( @@ -2992,12 +2992,7 @@ /area/centcom/control) "jb" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK" - }, +/obj/structure/sign/warning/vacuum/external, /turf/open/floor/plating, /area/centcom/supply) "jc" = ( @@ -3250,11 +3245,12 @@ "jC" = ( /obj/docking_port/stationary{ dir = 8; - dwidth = 5; + dwidth = 8; height = 7; id = "supply_away"; + json_key = "cargo"; name = "CentCom"; - width = 12 + width = 20 }, /turf/open/space, /area/space) @@ -4751,7 +4747,7 @@ /turf/closed/indestructible/fakeglass, /area/syndicate_mothership/control) "nA" = ( -/obj/structure/sign/nosmoking_2, +/obj/structure/sign/warning/nosmoking, /turf/closed/indestructible/riveted, /area/centcom/ferry) "nB" = ( @@ -5339,30 +5335,6 @@ dir = 8 }, /area/centcom/control) -"oS" = ( -/obj/machinery/porta_turret/syndicate{ - dir = 9 - }, -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/syndicate/bridge) -"oT" = ( -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/syndicate/bridge) -"oU" = ( -/obj/structure/window/plastitanium, -/obj/machinery/door/poddoor/shutters{ - id = "syndieshutters"; - name = "blast shutters" - }, -/obj/structure/grille, -/turf/open/floor/plating, -/area/shuttle/syndicate/bridge) -"oV" = ( -/obj/machinery/porta_turret/syndicate{ - dir = 5 - }, -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/syndicate/bridge) "oW" = ( /obj/structure/flora/bush, /obj/effect/light_emitter{ @@ -5607,40 +5579,6 @@ dir = 8 }, /area/centcom/control) -"px" = ( -/obj/machinery/computer/med_data/syndie, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/dark, -/area/shuttle/syndicate/bridge) -"py" = ( -/obj/machinery/computer/crew/syndie, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/dark, -/area/shuttle/syndicate/bridge) -"pz" = ( -/obj/machinery/computer/camera_advanced/shuttle_docker/syndicate, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/dark, -/area/shuttle/syndicate/bridge) -"pA" = ( -/obj/machinery/computer/shuttle/syndicate, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/dark, -/area/shuttle/syndicate/bridge) -"pB" = ( -/obj/structure/table/reinforced, -/turf/open/floor/plasteel/dark, -/area/shuttle/syndicate/bridge) -"pC" = ( -/obj/machinery/computer/camera_advanced/syndie, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/dark, -/area/shuttle/syndicate/bridge) -"pD" = ( -/obj/machinery/computer/secure_data/syndie, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/dark, -/area/shuttle/syndicate/bridge) "pF" = ( /obj/machinery/door/airlock/centcom{ name = "Auxillary Dock"; @@ -5758,64 +5696,13 @@ /turf/open/floor/plasteel, /area/centcom/supply) "pR" = ( -/obj/structure/table/reinforced, -/obj/machinery/status_display{ - pixel_x = -32 - }, -/obj/item/clipboard, -/obj/machinery/light{ - dir = 8 - }, -/obj/item/folder/red, -/obj/item/toy/figure/syndie, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, -/area/shuttle/syndicate/bridge) -"pS" = ( -/obj/structure/chair/office/dark{ - dir = 8; - name = "tactical swivel chair" - }, -/turf/open/floor/plasteel/dark, -/area/shuttle/syndicate/bridge) -"pT" = ( -/turf/open/floor/plasteel/dark, -/area/shuttle/syndicate/bridge) -"pU" = ( -/obj/structure/chair/office/dark{ - dir = 1; - name = "tactical swivel chair" - }, -/obj/machinery/button/door{ - id = "syndieshutters"; - name = "Cockpit View Control"; - pixel_x = 32; - pixel_y = 32; - req_access_txt = "150" - }, -/turf/open/floor/plasteel/dark, -/area/shuttle/syndicate/bridge) -"pV" = ( -/obj/structure/chair/office/dark{ - dir = 4; - name = "tactical swivel chair" - }, -/turf/open/floor/plasteel/dark, -/area/shuttle/syndicate/bridge) -"pW" = ( -/obj/structure/table/reinforced, -/obj/machinery/ai_status_display{ - pixel_x = 32 - }, -/obj/item/storage/fancy/donut_box, /obj/machinery/light{ dir = 4 }, /turf/open/floor/plasteel/vault{ - dir = 8 + dir = 5 }, -/area/shuttle/syndicate/bridge) +/area/centcom/ferry) "pX" = ( /obj/item/storage/crayons, /obj/structure/table, @@ -5929,7 +5816,7 @@ /area/centcom/ferry) "ql" = ( /obj/structure/dresser, -/obj/structure/sign/goldenplaque/captain{ +/obj/structure/sign/plaques/golden/captain{ pixel_x = 32 }, /turf/open/floor/plasteel/vault{ @@ -6081,9 +5968,6 @@ "qE" = ( /turf/closed/indestructible/riveted/uranium, /area/wizard_station) -"qI" = ( -/turf/open/floor/plasteel/vault/side, -/area/shuttle/syndicate/bridge) "qJ" = ( /obj/machinery/computer/shuttle/syndicate/recall, /turf/open/floor/plasteel/bar{ @@ -6208,19 +6092,6 @@ /obj/machinery/computer/shuttle, /turf/open/floor/engine/cult, /area/wizard_station) -"rb" = ( -/obj/machinery/status_display, -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/syndicate/bridge) -"rc" = ( -/obj/machinery/door/airlock/hatch{ - name = "Cockpit"; - req_access_txt = "150" - }, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, -/area/shuttle/syndicate/bridge) "rd" = ( /obj/structure/flora/grass/brown, /obj/effect/light_emitter{ @@ -6411,7 +6282,7 @@ /turf/open/floor/plasteel/grimy, /area/centcom/ferry) "rz" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/indestructible/riveted, /area/centcom/ferry) "rA" = ( @@ -6647,46 +6518,6 @@ }, /turf/open/floor/engine/cult, /area/wizard_station) -"rY" = ( -/obj/machinery/porta_turret/syndicate{ - dir = 10 - }, -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/syndicate/hallway) -"rZ" = ( -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/syndicate/hallway) -"sa" = ( -/obj/structure/table/reinforced, -/obj/item/stack/cable_coil/white, -/obj/item/stack/cable_coil/white, -/obj/item/crowbar/red, -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/shuttle/syndicate/hallway) -"sb" = ( -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/shuttle/syndicate/hallway) -"sc" = ( -/obj/structure/table/reinforced, -/obj/item/storage/box/handcuffs{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/storage/box/zipties, -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/shuttle/syndicate/hallway) -"sd" = ( -/obj/machinery/porta_turret/syndicate{ - dir = 6 - }, -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/syndicate/hallway) "se" = ( /obj/machinery/light{ dir = 8 @@ -7088,27 +6919,6 @@ }, /turf/open/floor/engine/cult, /area/wizard_station) -"sY" = ( -/obj/structure/chair{ - dir = 4; - name = "tactical chair" - }, -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/shuttle/syndicate/hallway) -"sZ" = ( -/turf/open/floor/plasteel/dark, -/area/shuttle/syndicate/hallway) -"ta" = ( -/obj/structure/chair{ - dir = 8; - name = "tactical chair" - }, -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/shuttle/syndicate/hallway) "te" = ( /obj/structure/table/wood, /obj/item/reagent_containers/food/snacks/pizzaslice/mushroom, @@ -7422,7 +7232,7 @@ }, /area/centcom/control) "tP" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/indestructible/riveted, /area/centcom/control) "tQ" = ( @@ -7471,50 +7281,6 @@ }, /turf/open/floor/engine/cult, /area/wizard_station) -"tY" = ( -/obj/machinery/porta_turret/syndicate{ - dir = 9 - }, -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/syndicate/eva) -"tZ" = ( -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/syndicate/eva) -"ua" = ( -/obj/structure/chair{ - dir = 4; - name = "tactical chair" - }, -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/shuttle/syndicate/hallway) -"ub" = ( -/obj/structure/chair{ - dir = 8; - name = "tactical chair" - }, -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/shuttle/syndicate/hallway) -"uc" = ( -/obj/structure/chair{ - dir = 4; - name = "tactical chair" - }, -/obj/effect/turf_decal/bot_white, -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/shuttle/syndicate/airlock) "ud" = ( /obj/machinery/door/poddoor/shutters{ id = "nukeop_ready"; @@ -7745,23 +7511,6 @@ /obj/structure/chair/wood/wings, /turf/open/floor/carpet, /area/wizard_station) -"uG" = ( -/obj/machinery/suit_storage_unit/syndicate, -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/syndicate/eva) -"uH" = ( -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/shuttle/syndicate/eva) -"uI" = ( -/obj/machinery/portable_atmospherics/canister/oxygen, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/dark, -/area/shuttle/syndicate/eva) "uJ" = ( /obj/machinery/door/airlock/external{ req_access_txt = "150" @@ -7964,7 +7713,8 @@ height = 50; id = "emergency_away"; name = "CentCom Emergency Shuttle Dock"; - width = 50 + width = 50; + json_key = "emergency" }, /turf/open/space, /area/space) @@ -7997,36 +7747,6 @@ }, /turf/open/floor/carpet, /area/wizard_station) -"vo" = ( -/obj/machinery/suit_storage_unit/syndicate, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/syndicate/eva) -"vp" = ( -/obj/structure/tank_dispenser/oxygen, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/dark, -/area/shuttle/syndicate/eva) -"vq" = ( -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/syndicate/airlock) -"vs" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK" - }, -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/syndicate/airlock) -"vt" = ( -/obj/machinery/porta_turret/syndicate{ - dir = 5 - }, -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/syndicate/airlock) "vu" = ( /obj/item/storage/box/drinkingglasses, /obj/item/reagent_containers/food/drinks/bottle/rum, @@ -8329,28 +8049,6 @@ }, /turf/open/floor/carpet, /area/wizard_station) -"wf" = ( -/obj/machinery/portable_atmospherics/canister/oxygen, -/obj/machinery/light{ - dir = 4 - }, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/dark, -/area/shuttle/syndicate/eva) -"wg" = ( -/obj/structure/grille, -/obj/structure/window/plastitanium, -/turf/open/floor/plating, -/area/shuttle/syndicate/hallway) -"wh" = ( -/obj/machinery/door/airlock/external{ - name = "Ready Room"; - req_access_txt = "150" - }, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, -/area/shuttle/syndicate/hallway) "wl" = ( /obj/machinery/light, /turf/open/floor/wood, @@ -8574,29 +8272,6 @@ /obj/item/toy/cards/deck, /turf/open/floor/carpet, /area/wizard_station) -"wR" = ( -/turf/open/floor/plasteel/dark, -/area/shuttle/syndicate/eva) -"wS" = ( -/obj/machinery/door/airlock/external{ - name = "E.V.A. Gear Storage"; - req_access_txt = "150" - }, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, -/area/shuttle/syndicate/eva) -"wT" = ( -/obj/machinery/door/airlock/external{ - req_access_txt = "150" - }, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/syndicate/airlock) -"wU" = ( -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/shuttle/syndicate/airlock) "wV" = ( /obj/machinery/computer/telecrystals/boss{ dir = 1 @@ -8646,6 +8321,7 @@ dwidth = 2; height = 13; id = "ferry_away"; + json_key = "ferry"; name = "CentCom Ferry Dock"; width = 5 }, @@ -8807,28 +8483,6 @@ /obj/machinery/light, /turf/open/floor/carpet, /area/wizard_station) -"xA" = ( -/obj/machinery/suit_storage_unit/syndicate, -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/syndicate/eva) -"xB" = ( -/obj/structure/reagent_dispensers/fueltank, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/dark, -/area/shuttle/syndicate/eva) -"xC" = ( -/obj/structure/grille, -/obj/structure/window/plastitanium, -/turf/open/floor/plating, -/area/shuttle/syndicate/eva) -"xD" = ( -/obj/structure/grille, -/obj/structure/window/plastitanium, -/turf/open/floor/plating, -/area/shuttle/syndicate/airlock) "xG" = ( /turf/open/floor/plasteel/dark, /area/syndicate_mothership/control) @@ -8969,38 +8623,6 @@ }, /turf/open/floor/engine/cult, /area/wizard_station) -"yc" = ( -/obj/machinery/porta_turret/syndicate{ - dir = 9 - }, -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/syndicate/medical) -"yd" = ( -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/syndicate/medical) -"ye" = ( -/obj/machinery/ai_status_display, -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/syndicate/medical) -"yf" = ( -/turf/closed/wall/mineral/plastitanium/nodiagonal, -/area/shuttle/syndicate/medical) -"yg" = ( -/turf/closed/wall/mineral/plastitanium/nodiagonal, -/area/shuttle/syndicate/armory) -"yh" = ( -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/syndicate/armory) -"yi" = ( -/obj/machinery/status_display, -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/syndicate/armory) -"yj" = ( -/obj/machinery/porta_turret/syndicate{ - dir = 5 - }, -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/syndicate/armory) "yk" = ( /obj/effect/turf_decal/stripes/corner{ dir = 8 @@ -9022,7 +8644,7 @@ /area/syndicate_mothership/control) "yn" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/vacuum, +/obj/structure/sign/warning/vacuum, /turf/open/floor/plating, /area/centcom/ferry) "yo" = ( @@ -9043,7 +8665,7 @@ /obj/machinery/computer/security/telescreen/entertainment{ pixel_y = -28 }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = 32 }, /obj/effect/turf_decal/stripes/line{ @@ -9196,125 +8818,6 @@ /obj/effect/decal/cleanable/blood/splatter, /turf/open/floor/grass, /area/wizard_station) -"yL" = ( -/obj/machinery/sleeper/syndie{ - dir = 4 - }, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/dark, -/area/shuttle/syndicate/medical) -"yM" = ( -/turf/open/floor/plasteel/dark, -/area/shuttle/syndicate/medical) -"yN" = ( -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel/dark, -/area/shuttle/syndicate/medical) -"yO" = ( -/obj/item/reagent_containers/glass/bottle/epinephrine{ - pixel_x = 6 - }, -/obj/item/reagent_containers/glass/bottle/charcoal{ - pixel_x = -3 - }, -/obj/item/reagent_containers/glass/bottle/epinephrine{ - pixel_x = -3; - pixel_y = 8 - }, -/obj/item/reagent_containers/glass/bottle/charcoal{ - pixel_x = 6; - pixel_y = 8 - }, -/obj/item/reagent_containers/syringe/epinephrine{ - pixel_x = 3; - pixel_y = -2 - }, -/obj/item/reagent_containers/syringe/epinephrine{ - pixel_x = 4; - pixel_y = 1 - }, -/obj/item/reagent_containers/syringe/epinephrine{ - pixel_x = -2; - pixel_y = 5 - }, -/obj/item/reagent_containers/syringe/epinephrine{ - pixel_x = 2; - pixel_y = 8 - }, -/obj/structure/table/reinforced, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/dark, -/area/shuttle/syndicate/medical) -"yP" = ( -/obj/structure/table/reinforced, -/obj/item/stack/medical/gauze, -/obj/item/stack/medical/bruise_pack, -/obj/item/stack/medical/ointment, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/dark, -/area/shuttle/syndicate/medical) -"yQ" = ( -/obj/structure/grille, -/obj/structure/window/plastitanium, -/turf/open/floor/plating, -/area/shuttle/syndicate/medical) -"yR" = ( -/obj/structure/grille, -/obj/structure/window/plastitanium, -/turf/open/floor/plating, -/area/shuttle/syndicate/armory) -"yS" = ( -/obj/item/stock_parts/cell/high{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/stock_parts/cell/high, -/obj/structure/table/reinforced, -/turf/open/floor/plasteel/dark, -/area/shuttle/syndicate/armory) -"yT" = ( -/obj/item/screwdriver{ - pixel_y = 9 - }, -/obj/item/device/assembly/voice{ - pixel_y = 3 - }, -/obj/structure/table/reinforced, -/turf/open/floor/plasteel/dark, -/area/shuttle/syndicate/armory) -"yU" = ( -/obj/item/wrench, -/obj/item/device/assembly/infra, -/obj/structure/table/reinforced, -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel/dark, -/area/shuttle/syndicate/armory) -"yV" = ( -/obj/item/device/assembly/signaler, -/obj/item/device/assembly/signaler, -/obj/item/device/assembly/prox_sensor{ - pixel_x = -8; - pixel_y = 4 - }, -/obj/item/device/assembly/prox_sensor{ - pixel_x = -8; - pixel_y = 4 - }, -/obj/structure/table/reinforced, -/turf/open/floor/plasteel/dark, -/area/shuttle/syndicate/armory) -"yW" = ( -/obj/item/weldingtool/largetank{ - pixel_y = 3 - }, -/obj/item/device/multitool, -/obj/structure/table/reinforced, -/turf/open/floor/plasteel/dark, -/area/shuttle/syndicate/armory) "yX" = ( /obj/structure/chair/stool, /turf/open/floor/plasteel/dark, @@ -9494,34 +8997,6 @@ /obj/item/reagent_containers/food/snacks/meat/slab/corgi, /turf/open/floor/grass, /area/wizard_station) -"zs" = ( -/obj/structure/bed/roller, -/obj/machinery/iv_drip, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/dark, -/area/shuttle/syndicate/medical) -"zt" = ( -/turf/open/floor/plasteel/vault/side, -/area/shuttle/syndicate/medical) -"zu" = ( -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/shuttle/syndicate/hallway) -"zv" = ( -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/shuttle/syndicate/hallway) -"zw" = ( -/turf/open/floor/plasteel/vault/side, -/area/shuttle/syndicate/armory) "zx" = ( /obj/structure/closet/syndicate/personal, /obj/effect/turf_decal/stripes/line{ @@ -9658,67 +9133,6 @@ }, /turf/open/floor/grass, /area/wizard_station) -"zR" = ( -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/shuttle/syndicate/medical) -"zS" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/syndicate/medical) -"zT" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/syndicate/medical) -"zU" = ( -/obj/machinery/door/airlock/hatch{ - req_access_txt = "150" - }, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, -/area/shuttle/syndicate/medical) -"zV" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/syndicate/hallway) -"zW" = ( -/obj/machinery/door/airlock/hatch{ - req_access_txt = "150" - }, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, -/area/shuttle/syndicate/armory) -"zX" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/syndicate/armory) -"zY" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/syndicate/armory) -"zZ" = ( -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/shuttle/syndicate/armory) -"Aa" = ( -/obj/structure/closet/syndicate/personal, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/dark, -/area/shuttle/syndicate/armory) "Ab" = ( /obj/machinery/photocopier, /turf/open/floor/plasteel/grimy, @@ -9888,42 +9302,6 @@ /obj/effect/decal/remains/xeno, /turf/open/floor/grass, /area/wizard_station) -"AC" = ( -/obj/structure/table/reinforced, -/obj/item/reagent_containers/glass/beaker/large, -/obj/item/reagent_containers/glass/beaker, -/obj/item/reagent_containers/dropper, -/turf/open/floor/plasteel/vault/side, -/area/shuttle/syndicate/medical) -"AD" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/syndicate/medical) -"AE" = ( -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/syndicate/medical) -"AF" = ( -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/syndicate/hallway) -"AG" = ( -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/syndicate/armory) -"AH" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/syndicate/armory) -"AI" = ( -/obj/structure/closet/syndicate/nuclear, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/dark, -/area/shuttle/syndicate/armory) "AJ" = ( /obj/structure/chair/comfy/brown{ color = "#596479"; @@ -10003,7 +9381,7 @@ }, /area/centcom/ferry) "AT" = ( -/obj/structure/sign/bluecross_2, +/obj/structure/sign/departments/medbay/alt, /turf/closed/indestructible/riveted, /area/centcom/control) "AU" = ( @@ -10096,111 +9474,6 @@ /obj/item/reagent_containers/food/snacks/meat/slab/xeno, /turf/open/floor/grass, /area/wizard_station) -"Bj" = ( -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/item/bodypart/r_arm/robot, -/obj/item/bodypart/l_arm/robot, -/obj/structure/table/reinforced, -/obj/item/toy/plush/nukeplushie, -/turf/open/floor/plasteel/vault/side, -/area/shuttle/syndicate/medical) -"Bk" = ( -/obj/machinery/door/window{ - dir = 1; - name = "Surgery"; - req_access_txt = "150" - }, -/turf/open/floor/plasteel/vault/side, -/area/shuttle/syndicate/medical) -"Bl" = ( -/obj/structure/window/reinforced{ - dir = 1 - }, -/turf/open/floor/plasteel/vault/side, -/area/shuttle/syndicate/medical) -"Bm" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/item/storage/firstaid/regular{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/storage/firstaid/brute, -/obj/item/storage/firstaid/regular{ - pixel_x = -3; - pixel_y = -3 - }, -/obj/structure/table/reinforced, -/turf/open/floor/plasteel/vault/side, -/area/shuttle/syndicate/medical) -"Bn" = ( -/obj/item/storage/firstaid/regular{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/storage/firstaid/fire, -/obj/item/storage/firstaid/regular{ - pixel_x = -3; - pixel_y = -3 - }, -/obj/structure/table/reinforced, -/turf/open/floor/plasteel/vault/side, -/area/shuttle/syndicate/medical) -"Bo" = ( -/turf/open/floor/plasteel/vault, -/area/shuttle/syndicate/hallway) -"Bp" = ( -/obj/item/device/sbeacondrop/bomb{ - pixel_y = 5 - }, -/obj/item/device/sbeacondrop/bomb, -/obj/structure/table/reinforced, -/turf/open/floor/plasteel/vault/side, -/area/shuttle/syndicate/armory) -"Bq" = ( -/obj/item/grenade/syndieminibomb{ - pixel_x = 4; - pixel_y = 2 - }, -/obj/item/grenade/syndieminibomb{ - pixel_x = -1 - }, -/obj/structure/table/reinforced, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/item/grenade/plastic/c4, -/obj/item/grenade/plastic/c4, -/obj/item/grenade/plastic/c4, -/obj/item/grenade/plastic/c4, -/obj/item/grenade/plastic/c4, -/turf/open/floor/plasteel/vault/side, -/area/shuttle/syndicate/armory) -"Br" = ( -/obj/structure/window/reinforced{ - dir = 1 - }, -/turf/open/floor/plasteel/vault/side, -/area/shuttle/syndicate/armory) -"Bs" = ( -/obj/machinery/door/window{ - dir = 1; - name = "Technological Storage"; - req_access_txt = "150" - }, -/turf/open/floor/plasteel/vault/side, -/area/shuttle/syndicate/armory) -"Bt" = ( -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/table/reinforced, -/obj/item/device/aicard, -/turf/open/floor/plasteel/vault/side, -/area/shuttle/syndicate/armory) "Bu" = ( /obj/structure/table/wood, /obj/item/paper_bin, @@ -10445,50 +9718,6 @@ }, /turf/open/floor/engine/cult, /area/wizard_station) -"BT" = ( -/obj/item/surgicaldrill, -/obj/item/circular_saw, -/obj/structure/table/reinforced, -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/shuttle/syndicate/medical) -"BU" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 11 - }, -/obj/structure/mirror{ - pixel_x = 30 - }, -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/shuttle/syndicate/medical) -"BV" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/shuttle/syndicate/hallway) -"BW" = ( -/obj/machinery/nuclearbomb/syndicate, -/obj/machinery/door/window{ - dir = 1; - name = "Theatre Stage"; - req_access_txt = "0" - }, -/turf/open/floor/circuit/red, -/area/shuttle/syndicate/hallway) -"BX" = ( -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/shuttle/syndicate/armory) "BY" = ( /obj/item/toy/figure/syndie, /turf/open/floor/plating/asteroid/snow/airless, @@ -10576,46 +9805,6 @@ }, /turf/open/floor/engine/cult, /area/wizard_station) -"Cj" = ( -/obj/item/cautery, -/obj/item/scalpel, -/obj/structure/table/reinforced, -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/shuttle/syndicate/medical) -"Ck" = ( -/obj/structure/table/optable, -/obj/item/surgical_drapes, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/dark, -/area/shuttle/syndicate/medical) -"Cl" = ( -/obj/item/retractor, -/obj/item/hemostat, -/obj/structure/table/reinforced, -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/shuttle/syndicate/medical) -"Cm" = ( -/obj/structure/shuttle/engine/heater, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating/airless, -/area/shuttle/syndicate/hallway) -"Cn" = ( -/obj/machinery/recharge_station, -/turf/open/floor/circuit/red, -/area/shuttle/syndicate/armory) -"Co" = ( -/obj/machinery/telecomms/allinone{ - intercept = 1 - }, -/turf/open/floor/circuit/red, -/area/shuttle/syndicate/armory) "Cp" = ( /obj/structure/statue/uranium/nuke, /turf/open/floor/plating/asteroid/snow/airless, @@ -10755,7 +9944,7 @@ /obj/structure/table/reinforced, /obj/item/storage/box/emps, /obj/item/gun/energy/ionrifle, -/obj/structure/sign/bluecross_2{ +/obj/structure/sign/departments/medbay/alt{ pixel_y = -32 }, /obj/effect/turf_decal/stripes/line{ @@ -10888,37 +10077,6 @@ dir = 8 }, /area/centcom/evac) -"CS" = ( -/obj/structure/shuttle/engine/heater, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating/airless, -/area/shuttle/syndicate/medical) -"CT" = ( -/obj/structure/shuttle/engine/propulsion/left, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating/airless, -/area/shuttle/syndicate/hallway) -"CU" = ( -/obj/structure/shuttle/engine/propulsion, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating/airless, -/area/shuttle/syndicate/hallway) -"CV" = ( -/obj/structure/shuttle/engine/propulsion/right, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating/airless, -/area/shuttle/syndicate/hallway) -"CW" = ( -/obj/structure/shuttle/engine/heater, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating/airless, -/area/shuttle/syndicate/armory) "CX" = ( /obj/structure/closet/secure_closet/security, /obj/item/storage/belt/security/full, @@ -11030,48 +10188,6 @@ dir = 8 }, /area/centcom/evac) -"Di" = ( -/obj/structure/shuttle/engine/propulsion/left, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating/airless, -/area/shuttle/syndicate/medical) -"Dj" = ( -/obj/structure/shuttle/engine/propulsion, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating/airless, -/area/shuttle/syndicate/medical) -"Dk" = ( -/obj/structure/shuttle/engine/propulsion/right, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating/airless, -/area/shuttle/syndicate/medical) -"Dl" = ( -/obj/machinery/porta_turret/syndicate{ - dir = 6 - }, -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/syndicate/medical) -"Dm" = ( -/obj/machinery/porta_turret/syndicate{ - dir = 10 - }, -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/syndicate/armory) -"Dn" = ( -/obj/structure/shuttle/engine/propulsion/left, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating/airless, -/area/shuttle/syndicate/armory) -"Do" = ( -/obj/structure/shuttle/engine/propulsion, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating/airless, -/area/shuttle/syndicate/armory) -"Dp" = ( -/obj/structure/shuttle/engine/propulsion/right, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating/airless, -/area/shuttle/syndicate/armory) "Dq" = ( /obj/machinery/door/airlock/external, /obj/effect/turf_decal/stripes/line{ @@ -12178,7 +11294,7 @@ /turf/open/floor/plasteel, /area/tdome/tdomeobserve) "Gw" = ( -/obj/structure/sign/nosmoking_2, +/obj/structure/sign/warning/nosmoking, /turf/closed/indestructible/riveted, /area/tdome/tdomeobserve) "Gx" = ( @@ -12353,7 +11469,7 @@ /area/tdome/tdomeobserve) "GL" = ( /obj/structure/table/wood, -/obj/structure/sign/goldenplaque{ +/obj/structure/sign/plaques/golden{ pixel_y = 32 }, /obj/item/clothing/accessory/lawyers_badge{ @@ -12374,7 +11490,7 @@ /area/tdome/tdomeobserve) "GO" = ( /obj/structure/table/wood, -/obj/structure/sign/goldenplaque{ +/obj/structure/sign/plaques/golden{ pixel_y = 32 }, /obj/item/clothing/accessory/medal/silver{ @@ -12579,7 +11695,7 @@ /area/tdome/tdomeobserve) "Hr" = ( /obj/structure/table/wood, -/obj/structure/sign/atmosplaque/thunderdome{ +/obj/structure/sign/plaques/thunderdome{ pixel_y = -32 }, /obj/item/clothing/accessory/medal/gold{ @@ -12597,7 +11713,7 @@ /area/tdome/tdomeobserve) "Ht" = ( /obj/structure/table/wood, -/obj/structure/sign/atmosplaque/thunderdome{ +/obj/structure/sign/plaques/thunderdome{ pixel_y = -32 }, /obj/item/clothing/accessory/medal{ @@ -13898,12 +13014,6 @@ "KS" = ( /turf/closed/wall/mineral/titanium/interior, /area/centcom/evac) -"KT" = ( -/obj/machinery/computer/camera_advanced{ - dir = 4 - }, -/turf/open/floor/wood, -/area/wizard_station) "KU" = ( /obj/structure/closet/emcloset, /turf/open/floor/mineral/titanium/blue, @@ -14313,29 +13423,6 @@ }, /turf/open/floor/plasteel, /area/tdome/arena) -"Mt" = ( -/obj/structure/chair{ - dir = 4; - name = "tactical chair" - }, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/dark, -/area/shuttle/syndicate/airlock) -"Mu" = ( -/obj/structure/table/reinforced, -/obj/item/storage/toolbox/syndicate, -/obj/item/crowbar/red, -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/syndicate/airlock) -"Mw" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/syndicate/airlock) "My" = ( /obj/docking_port/stationary{ area_type = /area/syndicate_mothership; @@ -14346,63 +13433,30 @@ height = 17; id = "syndicate_away"; name = "syndicate recon outpost"; + roundstart_template = /datum/map_template/shuttle/infiltrator/basic; turf_type = /turf/open/floor/plating/asteroid/snow; width = 23 }, -/obj/machinery/door/poddoor{ - id = "smindicate"; - name = "outer blast door" - }, -/obj/machinery/button/door{ - id = "smindicate"; - name = "external door control"; - pixel_y = 26; - req_access_txt = "150" - }, -/obj/docking_port/mobile{ - dheight = 1; - dir = 8; - dwidth = 12; - height = 17; - hidden = 1; - id = "syndicate"; - movement_force = list("KNOCKDOWN" = 0, "THROW" = 0); - name = "syndicate infiltrator"; - port_direction = 4; - roundstart_move = null; - width = 23 - }, -/obj/structure/fans/tiny, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/syndicate/airlock) -"Mz" = ( -/turf/open/floor/plasteel/dark, -/area/shuttle/syndicate/airlock) -"MC" = ( -/obj/structure/rack, -/obj/item/clothing/suit/space/syndicate/black/red, -/obj/item/clothing/head/helmet/space/syndicate/black/red, -/obj/effect/turf_decal/bot_white, -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/syndicate/airlock) +/turf/open/floor/plating/asteroid/snow/airless, +/area/syndicate_mothership) "MD" = ( /obj/effect/light_emitter{ set_cap = 1; set_luminosity = 4 }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ desc = "A warning sign which reads 'FOURTH WALL'."; name = "\improper FOURTH WALL"; pixel_x = -32 }, /turf/open/floor/plating/asteroid/snow/airless, /area/syndicate_mothership) +"ME" = ( +/obj/machinery/computer/camera_advanced{ + dir = 4 + }, +/turf/open/floor/wood, +/area/wizard_station) (1,1,1) = {" aa @@ -19461,7 +18515,7 @@ lI lI qE qE -KT +ME vj ya qZ @@ -26656,16 +25710,16 @@ kt kt kt kt -yc -yd -yd -yd -yd -yd -yd -yd -yd -yd +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl kt hl hh @@ -26907,22 +25961,22 @@ hl hl hl kt -tY -tZ -tZ -tZ -tZ -tZ -yd -yL -zs -yL -AC -Bj -BT -Cj -CS -Di +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl kt hl hh @@ -27164,22 +26218,22 @@ hl hl hl kt -tZ -uG -vo -vo -vo -xA -yd -yM -zt -zR -zR -Bk -zR -Ck -CS -Dj +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl kt hl hh @@ -27421,22 +26475,22 @@ kt kt kt kt -tZ -uH -uH -uH -uH -uH -ye -yN -zt -zS -AD -Bl -BU -Cl -CS -Dk +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl kt hl hh @@ -27671,29 +26725,29 @@ hl hl my hl -oS -oT -oT -oT -oT hl hl -tZ -uH -uH -uH -uH -uH -yd -yO -zt -zT -AE -Bm -yf -yd -yd -Dl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl kt hl hh @@ -27928,26 +26982,26 @@ hl hl hl hl -oT -px -pR -qI -oT -rY hl -tZ -uI -vp -wf -wR -xB -yd -yP -zt -zT -AE -Bn -yd +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl hl hl kt @@ -28185,28 +27239,28 @@ hl hl hl hl -oU -py -pS -qI -oT -rZ -rZ -tZ -tZ -tZ -tZ -wS -xC -yf -yQ -yQ -zU -yQ -yd -yd -rZ -rZ +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl kt hl hl @@ -28442,28 +27496,28 @@ hl hl hl nx -oU -pz -pT -qI -rb -sa -sY -ua -sY -sY -wg -sb -sb -sb -sb -zu -zV -AF -Bo -BV -Cm -CT +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl kt hl hl @@ -28699,28 +27753,28 @@ hl hl hl hl -oU -pA -pU -qI -rc -sb -sZ -sZ -sZ -sb -wh -sb -sZ -sZ -sZ -sZ -zV -AF -Bo -BW -Cm -CU +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl kt hl hl @@ -28956,28 +28010,28 @@ hl my hl hl -oU -pB -pT -qI -oT -sc -ta -ub -ta -ta -wg -sb -sb -sb -sb -zv -zV -AF -Bo -BV -Cm -CV +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl kt hl hl @@ -29213,28 +28267,28 @@ hl hl hl hl -oU -pC -pV -qI -oT -rZ -rZ -vq -vq -vq -vq -wT -xD -yg -yR -yR -zW -yR -yh -yh -rZ -rZ +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl kt hl hl @@ -29470,26 +28524,26 @@ hl hl hl hl -oT -pD -pW -qI -oT -sd hl -vq -Mt -Mt -uc -Mz -Mt -yh -yS -zw -zX -AG -Bp -yh +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl hl hl kt @@ -29727,29 +28781,29 @@ hl hl hl hl -oV -oT -oT -oT -oT hl hl -vq -wU -wU -wU -wU -wU -yh -yT -zw -zX -AG -Bq -yg -yh -yh -Dm +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl kt hl hh @@ -29991,22 +29045,22 @@ kt kt kt kt -vq -wU -wU -wU -wU -wU -yi -yU -zw -zY -AH -Br -zZ -Cn -CW -Dn +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl kt hl hh @@ -30248,22 +29302,22 @@ nx hl hl kt -vq -Mu -Mw -Mw -Mw -MC -yh -yV -zw -zZ -zZ -Bs -zZ -Co -CW -Do +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl kt hl hh @@ -30505,22 +29559,22 @@ hl hl hl kt -vt -vq -vq +hl +hl +hl My -vs -vq -yh -yW -zw -Aa -AI -Bt -BX -Cn -CW -Dp +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl kt hl hh @@ -30768,16 +29822,16 @@ nz uJ nz kt -yj -yh -yh -yh -yh -yh -yh -yh -yh -yh +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl kt hl hh @@ -51067,7 +50121,7 @@ qb mD rs sw -tw +pR sw uQ mD diff --git a/_maps/map_files/generic/SpaceDock.dmm b/_maps/map_files/generic/SpaceDock.dmm index b0a9ccbf71..286ca3e97d 100644 --- a/_maps/map_files/generic/SpaceDock.dmm +++ b/_maps/map_files/generic/SpaceDock.dmm @@ -10,7 +10,8 @@ height = 22; id = "whiteship_away"; name = "Deep Space"; - width = 35 + width = 35; + json_key = "whiteship" }, /turf/open/space, /area/space) diff --git a/_maps/metastation.json b/_maps/metastation.json index bb22737c31..fdadfb058c 100644 --- a/_maps/metastation.json +++ b/_maps/metastation.json @@ -1,5 +1,11 @@ { "map_name": "MetaStation", - "map_path": "cit_map_files/MetaStation", - "map_file": "MetaStation.dmm" + "map_path": "map_files/MetaStation", + "map_file": "MetaStation.dmm", + "shuttles": { + "cargo": "cargo_box", + "ferry": "ferry_fancy", + "whiteship": "whiteship_meta", + "emergency": "emergency_meta" + } } diff --git a/_maps/omegastation.json b/_maps/omegastation.json index 69c667b724..805ec5eccc 100644 --- a/_maps/omegastation.json +++ b/_maps/omegastation.json @@ -1,5 +1,10 @@ { "map_name": "OmegaStation", - "map_path": "cit_map_files/OmegaStation", - "map_file": "OmegaStation.dmm" -} \ No newline at end of file + "map_path": "map_files/OmegaStation", + "map_file": "OmegaStation.dmm", + "shuttles": { + "emergency": "emergency_omega", + "ferry": "ferry_fancy", + "cargo": "cargo_delta" + } +} diff --git a/_maps/pubbystation.json b/_maps/pubbystation.json index f8253e3c33..f99cca57c5 100644 --- a/_maps/pubbystation.json +++ b/_maps/pubbystation.json @@ -1,5 +1,11 @@ { "map_name": "PubbyStation", - "map_path": "cit_map_files/PubbyStation", - "map_file": "PubbyStation.dmm" -} \ No newline at end of file + "map_path": "map_files/PubbyStation", + "map_file": "PubbyStation.dmm", + "shuttles": { + "emergency": "emergency_pubby", + "whiteship": "whiteship_pubby", + "ferry": "ferry_fancy", + "cargo": "cargo_box" + } +} diff --git a/_maps/shuttles/cargo_birdboat.dmm b/_maps/shuttles/cargo_birdboat.dmm index 85c2579597..4abd694656 100644 --- a/_maps/shuttles/cargo_birdboat.dmm +++ b/_maps/shuttles/cargo_birdboat.dmm @@ -1,16 +1,7 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"a" = ( -/turf/closed/wall/mineral/titanium/overspace, -/area/shuttle/supply) "b" = ( /turf/closed/wall/mineral/titanium, /area/shuttle/supply) -"c" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/supply) -"d" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/supply) "e" = ( /obj/machinery/conveyor{ dir = 2; @@ -138,12 +129,6 @@ }, /turf/open/floor/plating, /area/shuttle/supply) -"s" = ( -/turf/closed/wall/mineral/titanium/nodiagonal, -/area/shuttle/supply) -"t" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/supply) "u" = ( /obj/structure/window/reinforced{ dir = 1 @@ -151,9 +136,6 @@ /obj/structure/shuttle/engine/heater, /turf/open/floor/plating/airless, /area/shuttle/supply) -"v" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/supply) "w" = ( /turf/template_noop, /area/template_noop) diff --git a/_maps/shuttles/cargo_box.dmm b/_maps/shuttles/cargo_box.dmm index a63162bae7..8f5a8ef1b4 100644 --- a/_maps/shuttles/cargo_box.dmm +++ b/_maps/shuttles/cargo_box.dmm @@ -1,16 +1,7 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"a" = ( -/turf/closed/wall/mineral/titanium/overspace, -/area/shuttle/supply) "b" = ( /turf/closed/wall/mineral/titanium, /area/shuttle/supply) -"c" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/supply) -"d" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/supply) "e" = ( /turf/open/floor/mineral/titanium/blue, /area/shuttle/supply) @@ -74,26 +65,9 @@ }, /turf/open/floor/plating, /area/shuttle/supply) -"k" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/supply) "l" = ( /turf/closed/wall/mineral/titanium/interior, /area/shuttle/supply) -"m" = ( -/turf/closed/wall/mineral/titanium/interior{ - icon_state = "swall_f6" - }, -/area/shuttle/supply) -"n" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/supply) -"o" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/supply) -"p" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/supply) "q" = ( /obj/structure/window/reinforced{ dir = 1 @@ -101,9 +75,6 @@ /obj/structure/shuttle/engine/heater, /turf/open/floor/plating/airless, /area/shuttle/supply) -"r" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/supply) "s" = ( /turf/template_noop, /area/template_noop) diff --git a/_maps/shuttles/emergency_airless.dmm b/_maps/shuttles/emergency_airless.dmm index d5dc2d6d00..1606703ac2 100644 --- a/_maps/shuttles/emergency_airless.dmm +++ b/_maps/shuttles/emergency_airless.dmm @@ -46,9 +46,6 @@ /obj/effect/shuttle_build, /turf/open/floor/plating/airless, /area/shuttle/escape) -"i" = ( -/turf/open/space/basic, -/area/space) (1,1,1) = {" a @@ -76,9 +73,9 @@ f e e a -i -i -i +a +a +a a "} (2,1,1) = {" @@ -107,9 +104,9 @@ f f e a -i -i -i +a +a +a a "} (3,1,1) = {" @@ -138,9 +135,9 @@ f f f a -i -i -i +a +a +a a "} (4,1,1) = {" @@ -169,9 +166,9 @@ f f e a -i -i -i +a +a +a a "} (5,1,1) = {" diff --git a/_maps/shuttles/emergency_asteroid.dmm b/_maps/shuttles/emergency_asteroid.dmm index 3eba8d7a61..01772ed706 100644 --- a/_maps/shuttles/emergency_asteroid.dmm +++ b/_maps/shuttles/emergency_asteroid.dmm @@ -2,9 +2,6 @@ "aa" = ( /turf/template_noop, /area/template_noop) -"ab" = ( -/turf/closed/wall/mineral/titanium/overspace, -/area/shuttle/escape) "ac" = ( /turf/closed/wall/mineral/titanium, /area/shuttle/escape) @@ -19,12 +16,6 @@ }, /turf/open/floor/mineral/titanium/yellow, /area/shuttle/escape) -"af" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) -"ag" = ( -/turf/template_noop, -/area/template_noop) "ah" = ( /obj/effect/spawner/structure/window/shuttle, /turf/open/floor/plating, @@ -49,9 +40,6 @@ }, /turf/open/floor/mineral/titanium, /area/shuttle/escape) -"ak" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "al" = ( /obj/machinery/door/airlock/titanium{ name = "Emergency Shuttle Airlock"; @@ -71,9 +59,6 @@ }, /turf/open/floor/plating/airless, /area/shuttle/escape) -"ao" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "ap" = ( /obj/structure/ore_box, /turf/open/floor/mineral/titanium/yellow, @@ -85,15 +70,9 @@ /obj/machinery/recharge_station, /turf/open/floor/mineral/titanium/yellow, /area/shuttle/escape) -"as" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "at" = ( /turf/open/floor/mineral/titanium, /area/shuttle/escape) -"au" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "av" = ( /obj/structure/chair{ dir = 4 @@ -109,26 +88,12 @@ }, /turf/open/floor/mineral/plastitanium/brig, /area/shuttle/escape) -"ay" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "az" = ( /turf/closed/wall/mineral/titanium/nodiagonal, /area/shuttle/escape) -"aA" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "aB" = ( /turf/closed/wall/mineral/titanium/interior, /area/shuttle/escape) -"aC" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) -"aD" = ( -/obj/structure/window/shuttle, -/obj/structure/grille, -/turf/open/floor/plating/airless, -/area/shuttle/escape) "aE" = ( /obj/structure/chair{ dir = 4 @@ -193,9 +158,6 @@ /obj/structure/bed/roller, /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) -"aO" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "aP" = ( /obj/machinery/door/airlock/security/glass{ name = "Emergency Shuttle Brig"; @@ -303,10 +265,6 @@ }, /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) -"bh" = ( -/obj/effect/spawner/structure/window/shuttle, -/turf/open/floor/plasteel/shuttle, -/area/shuttle/escape) "bi" = ( /obj/machinery/status_display, /turf/closed/wall/mineral/titanium, @@ -344,10 +302,6 @@ }, /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) -"bo" = ( -/obj/machinery/status_display, -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "bp" = ( /obj/machinery/computer/crew{ dir = 4 @@ -427,12 +381,6 @@ }, /turf/open/floor/mineral/titanium, /area/shuttle/escape) -"bA" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) -"bB" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "bC" = ( /obj/item/device/radio/intercom{ dir = 8; @@ -490,13 +438,6 @@ }, /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) -"bL" = ( -/obj/structure/chair, -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/escape) "bM" = ( /obj/machinery/light, /turf/open/floor/mineral/plastitanium/brig, @@ -507,20 +448,10 @@ }, /turf/open/floor/mineral/titanium, /area/shuttle/escape) -"bO" = ( -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/escape) "bP" = ( /obj/machinery/light, /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) -"bQ" = ( -/obj/machinery/light, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/escape) (1,1,1) = {" aa @@ -643,7 +574,7 @@ ac ac "} (9,1,1) = {" -ag +aa ac ac aH @@ -658,8 +589,8 @@ ac aa "} (10,1,1) = {" -ag -ag +aa +aa ac aI at @@ -718,8 +649,8 @@ aa aa "} (14,1,1) = {" -ag -ag +aa +aa ad aK at @@ -733,8 +664,8 @@ aa aa "} (15,1,1) = {" -ag -ag +aa +aa ad aK at @@ -748,8 +679,8 @@ aa aa "} (16,1,1) = {" -ag -ag +aa +aa ad aK at @@ -808,8 +739,8 @@ aa aa "} (20,1,1) = {" -ag -ag +aa +aa ac aM at @@ -823,7 +754,7 @@ aa aa "} (21,1,1) = {" -ag +aa ac ac aN @@ -928,9 +859,9 @@ aa aa "} (28,1,1) = {" -ag -ag -ag +aa +aa +aa ac ac ad diff --git a/_maps/shuttles/emergency_bar.dmm b/_maps/shuttles/emergency_bar.dmm index b5104569ac..262ed4029b 100644 --- a/_maps/shuttles/emergency_bar.dmm +++ b/_maps/shuttles/emergency_bar.dmm @@ -9,9 +9,6 @@ /obj/effect/spawner/structure/window/shuttle, /turf/open/floor/plating, /area/shuttle/escape) -"ad" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "ae" = ( /turf/closed/wall/mineral/titanium/nodiagonal, /area/shuttle/escape) @@ -39,9 +36,6 @@ }, /turf/open/floor/carpet, /area/shuttle/escape) -"aj" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "ak" = ( /obj/structure/extinguisher_cabinet{ pixel_y = 30 @@ -118,18 +112,6 @@ }, /turf/open/floor/carpet, /area/shuttle/escape) -"av" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) -"aw" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) -"ax" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) -"ay" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "az" = ( /obj/machinery/door/airlock/public/glass{ name = "Emergency Shuttle Cockpit"; @@ -141,9 +123,6 @@ /obj/machinery/status_display, /turf/closed/wall/mineral/titanium, /area/shuttle/escape) -"aB" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "aC" = ( /obj/structure/chair, /turf/open/floor/mineral/plastitanium/brig, @@ -243,9 +222,6 @@ /obj/structure/table/wood/bar, /turf/open/floor/plasteel/bar, /area/shuttle/escape) -"aQ" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "aR" = ( /obj/structure/table/wood/bar{ boot_dir = 8 @@ -331,40 +307,19 @@ }, /turf/open/floor/plasteel/bar, /area/shuttle/escape) -"bf" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "bg" = ( /obj/machinery/door/airlock/titanium{ name = "Emergency Shuttle Airlock" }, /turf/open/floor/plasteel/bar, /area/shuttle/escape) -"bh" = ( -/obj/machinery/shower{ - dir = 4 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/escape) "bi" = ( /turf/open/floor/mineral/titanium, /area/shuttle/escape) -"bj" = ( -/obj/structure/table/reinforced, -/obj/item/storage/firstaid/regular, -/obj/item/storage/firstaid/toxin{ - pixel_x = 4; - pixel_y = 4 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/escape) "bk" = ( /obj/machinery/vending/cigarette, /turf/open/floor/plasteel/bar, /area/shuttle/escape) -"bl" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "bm" = ( /obj/machinery/door/airlock{ name = "Unisex Restrooms"; @@ -374,7 +329,7 @@ /area/shuttle/escape) "bn" = ( /obj/effect/spawner/structure/window/shuttle, -/obj/structure/sign/bluecross_2, +/obj/structure/sign/departments/medbay/alt, /turf/closed/wall/mineral/titanium, /area/shuttle/escape) "bo" = ( @@ -404,9 +359,6 @@ }, /turf/open/floor/plasteel/freezer, /area/shuttle/escape) -"bt" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "bu" = ( /obj/machinery/door/airlock{ name = "Unit 2" @@ -452,14 +404,6 @@ /obj/item/scalpel, /turf/open/floor/mineral/titanium, /area/shuttle/escape) -"bA" = ( -/turf/closed/wall/mineral/plastitanium{ - icon_state = "diagonalWall3" - }, -/area/shuttle/escape) -"bB" = ( -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/escape) "bC" = ( /obj/structure/window/reinforced{ dir = 1 @@ -467,12 +411,6 @@ /obj/structure/shuttle/engine/heater, /turf/open/floor/plating/airless, /area/shuttle/escape) -"bD" = ( -/turf/closed/wall/mineral/plastitanium{ - dir = 4; - icon_state = "diagonalWall3" - }, -/area/shuttle/escape) "bE" = ( /obj/structure/shuttle/engine/propulsion, /turf/open/floor/plating/airless, @@ -624,35 +562,35 @@ aa aa aa aa -bt -bt -bt +ab +ab +ab aK -bt +ab aT -bt +ab ac ac ac -bt +ab bg -bt +ab bo -bt -bt -bt +ab +ab +ab aa "} (2,1,1) = {" aa -bt -bt -bt -bt +ab +ab +ab +ab aC aH aL -bt +ab bY bH aZ @@ -660,23 +598,23 @@ bc aZ bH bZ -bt +ab bp bs bx -bt -bt +ab +ab "} (3,1,1) = {" -bt +ab ae al aq -bt +ab aC aI aM -bt +ab aE aW ba @@ -684,10 +622,10 @@ bL bO bQ bR -bt +ab bp -bt -bt +ab +ab bC bE "} @@ -696,11 +634,11 @@ ac af am ar -bt +ab aC aI aM -bt +ab aE aW bJ @@ -708,7 +646,7 @@ bM bP bQ aE -bt +ab ak bu bx @@ -720,7 +658,7 @@ ac ag an as -bt +ab ac aJ ac @@ -734,8 +672,8 @@ bH aE aA bp -bt -bt +ab +ab bC bE "} @@ -744,7 +682,7 @@ ac ah an at -bt +ab aD aE aE @@ -781,9 +719,9 @@ aN aE ca ae -bt -bt -bt +ab +ab +ab bC bE "} @@ -812,11 +750,11 @@ bC bE "} (9,1,1) = {" -bt +ab ae ap au -bt +ab aF bH aP @@ -837,10 +775,10 @@ bE "} (10,1,1) = {" aa -bt -bt -bt -bt +ab +ab +ab +ab aG bW bI @@ -856,30 +794,30 @@ bF br cb bU -bt -bt +ab +ab "} (11,1,1) = {" aa aa aa aa -bt +ab ac -bt +ab ac -bt -bt -bt +ab +ab +ab ac ac ac -bt -bt -bt +ab +ab +ab ac -bt +ab ac -bt +ab aa "} diff --git a/_maps/shuttles/emergency_box.dmm b/_maps/shuttles/emergency_box.dmm index 65cc9803cb..6443518590 100644 --- a/_maps/shuttles/emergency_box.dmm +++ b/_maps/shuttles/emergency_box.dmm @@ -2,9 +2,6 @@ "aa" = ( /turf/template_noop, /area/template_noop) -"ab" = ( -/turf/closed/wall/mineral/titanium/overspace, -/area/shuttle/escape) "ac" = ( /obj/effect/spawner/structure/window/shuttle, /turf/open/floor/plating, @@ -40,14 +37,6 @@ /obj/item/storage/firstaid/fire, /turf/open/floor/mineral/titanium, /area/shuttle/escape) -"aj" = ( -/turf/closed/wall/mineral/titanium/interior{ - icon_state = "swall_f5" - }, -/area/shuttle/escape) -"ak" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "al" = ( /obj/machinery/computer/atmos_alert{ dir = 4 @@ -112,15 +101,6 @@ }, /turf/open/floor/mineral/titanium, /area/shuttle/escape) -"av" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) -"aw" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) -"ax" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "ay" = ( /obj/machinery/door/airlock/public/glass{ name = "Emergency Shuttle Cockpit"; @@ -218,12 +198,6 @@ /obj/structure/table, /turf/open/floor/mineral/titanium, /area/shuttle/escape) -"aN" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) -"aO" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "aP" = ( /obj/machinery/door/airlock/titanium{ name = "Emergency Shuttle Airlock" @@ -292,19 +266,12 @@ }, /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) -"aY" = ( -/obj/machinery/status_display, -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "aZ" = ( /obj/machinery/door/airlock/public/glass{ name = "Emergency Shuttle Infirmary" }, /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) -"ba" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "bb" = ( /turf/open/floor/mineral/titanium/yellow, /area/shuttle/escape) @@ -344,9 +311,6 @@ /obj/structure/closet/crate, /turf/open/floor/mineral/titanium/yellow, /area/shuttle/escape) -"bh" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "bi" = ( /obj/structure/window/reinforced{ dir = 1 @@ -414,35 +378,35 @@ aa aa aa aa -ak -ak -ak +ad +ad +ad aI -ak +ad aP -ak +ad ac ac ac -ak +ad aV -ak +ad aV -ak -ak -ak +ad +ad +ad aa "} (2,1,1) = {" aa -ak -ak -ak -ak +ad +ad +ad +ad aA aF aG -ak +ad bn aL aL @@ -450,23 +414,23 @@ aL aL aL bo -ak +ad bb bq bf -ak -ak +ad +ad "} (3,1,1) = {" -ak +ad ae al aq -ak +ad aA aG aJ -ak +ad aQ an an @@ -474,7 +438,7 @@ an an an aW -ak +ad bb bb bf @@ -486,11 +450,11 @@ ac af am ar -ak +ad aA aG aJ -ak +ad an aS aS @@ -510,7 +474,7 @@ ac ag an as -ak +ad ac aH ac @@ -522,7 +486,7 @@ aT aT aT an -ak +ad bc br bg @@ -534,7 +498,7 @@ ac ah an at -ak +ad aB an aK @@ -547,9 +511,9 @@ an an bp az -ak -ak -ak +ad +ad +ad bi bk "} @@ -602,11 +566,11 @@ bi bk "} (9,1,1) = {" -ak +ad ae ap au -ak +ad aD an an @@ -627,10 +591,10 @@ bk "} (10,1,1) = {" aa -ak -ak -ak -ak +ad +ad +ad +ad aE bl aC @@ -646,30 +610,30 @@ ac bd be bd -ak -ak +ad +ad "} (11,1,1) = {" aa aa aa aa -ak +ad ac -ak +ad ac -ak -ak -ak +ad +ad +ad ac ac ac -ak -ak -ak +ad +ad +ad ac -ak +ad ac -ak +ad aa "} diff --git a/_maps/shuttles/emergency_cere.dmm b/_maps/shuttles/emergency_cere.dmm index f860593b6e..72620f68f7 100644 --- a/_maps/shuttles/emergency_cere.dmm +++ b/_maps/shuttles/emergency_cere.dmm @@ -695,7 +695,7 @@ /turf/open/floor/plasteel, /area/shuttle/escape) "cb" = ( -/obj/structure/sign/bluecross_2{ +/obj/structure/sign/departments/medbay/alt{ pixel_x = 32; pixel_y = -32 }, @@ -1109,7 +1109,7 @@ }, /area/shuttle/escape) "di" = ( -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_x = 32 }, /turf/open/floor/plasteel/yellow/side{ @@ -1131,7 +1131,7 @@ /area/shuttle/escape) "dl" = ( /obj/structure/table, -/obj/structure/sign/enginesafety{ +/obj/structure/sign/warning/enginesafety{ pixel_y = -32 }, /turf/open/floor/plasteel/yellow/side, diff --git a/_maps/shuttles/emergency_delta.dmm b/_maps/shuttles/emergency_delta.dmm index 6e22434fcd..6a166bfe15 100644 --- a/_maps/shuttles/emergency_delta.dmm +++ b/_maps/shuttles/emergency_delta.dmm @@ -392,7 +392,7 @@ /turf/open/floor/plasteel/white, /area/shuttle/escape) "aP" = ( -/obj/structure/sign/bluecross_2, +/obj/structure/sign/departments/medbay/alt, /turf/closed/wall/mineral/titanium, /area/shuttle/escape) "aQ" = ( @@ -1052,14 +1052,6 @@ dir = 1 }, /area/shuttle/escape) -"cz" = ( -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel/neutral/side{ - dir = 1 - }, -/area/shuttle/escape) "cA" = ( /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-21"; @@ -1088,24 +1080,6 @@ /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/shuttle/escape) -"cD" = ( -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, -/area/shuttle/escape) -"cE" = ( -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21"; - pixel_x = -3; - pixel_y = 3 - }, -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/plasteel/neutral/side{ - dir = 8; - heat_capacity = 1e+006 - }, -/area/shuttle/escape) "cF" = ( /obj/machinery/light, /turf/open/floor/plasteel, diff --git a/_maps/shuttles/emergency_discoinferno.dmm b/_maps/shuttles/emergency_discoinferno.dmm index eb3a27359b..3cd9fc7890 100644 --- a/_maps/shuttles/emergency_discoinferno.dmm +++ b/_maps/shuttles/emergency_discoinferno.dmm @@ -221,12 +221,6 @@ "O" = ( /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/shuttle/escape) -"P" = ( -/turf/closed/wall/mineral/plastitanium/nodiagonal, -/area/shuttle/escape) -"Q" = ( -/turf/closed/wall/mineral/plastitanium/nodiagonal, -/area/shuttle/escape) (1,1,1) = {" a diff --git a/_maps/shuttles/emergency_goon.dmm b/_maps/shuttles/emergency_goon.dmm index 62a84d9c3d..b79aa8c62c 100644 --- a/_maps/shuttles/emergency_goon.dmm +++ b/_maps/shuttles/emergency_goon.dmm @@ -20,9 +20,6 @@ "d" = ( /turf/closed/wall/mineral/titanium, /area/shuttle/escape) -"e" = ( -/turf/closed/wall/mineral/titanium/overspace, -/area/shuttle/escape) "f" = ( /obj/machinery/status_display, /turf/closed/wall/mineral/titanium, @@ -47,15 +44,6 @@ }, /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) -"i" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) -"j" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) -"k" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "l" = ( /obj/machinery/vending/wallmed, /turf/closed/wall/mineral/titanium, @@ -65,9 +53,6 @@ /obj/structure/grille, /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) -"n" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "o" = ( /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) @@ -98,9 +83,6 @@ "t" = ( /turf/closed/wall/mineral/titanium/interior, /area/shuttle/escape) -"u" = ( -/turf/template_noop, -/area/template_noop) "v" = ( /obj/structure/table, /obj/effect/spawner/lootdrop/maintenance, @@ -153,12 +135,6 @@ /obj/structure/table/reinforced, /turf/open/floor/mineral/titanium/yellow, /area/shuttle/escape) -"C" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) -"D" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "E" = ( /obj/machinery/door/airlock/public/glass{ name = "Emergency Shuttle Cockpit"; @@ -217,16 +193,6 @@ }, /turf/open/floor/mineral/titanium/yellow, /area/shuttle/escape) -"N" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) -"O" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) -"P" = ( -/obj/machinery/status_display, -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "Q" = ( /obj/machinery/light, /turf/open/floor/mineral/titanium/blue, @@ -253,15 +219,6 @@ }, /turf/open/floor/mineral/plastitanium/brig, /area/shuttle/escape) -"U" = ( -/obj/structure/chair{ - dir = 4 - }, -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/escape) "V" = ( /obj/machinery/light{ dir = 1 diff --git a/_maps/shuttles/emergency_luxury.dmm b/_maps/shuttles/emergency_luxury.dmm index 4345939922..8306423ffd 100644 --- a/_maps/shuttles/emergency_luxury.dmm +++ b/_maps/shuttles/emergency_luxury.dmm @@ -345,24 +345,6 @@ }, /turf/open/floor/mineral/gold, /area/shuttle/escape/luxury) -"bm" = ( -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/mineral/gold, -/area/shuttle/escape/luxury) -"bn" = ( -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/mineral/gold, -/area/shuttle/escape/luxury) -"bo" = ( -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/mineral/gold, -/area/shuttle/escape/luxury) "bp" = ( /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-21"; @@ -372,15 +354,6 @@ /obj/machinery/light, /turf/open/floor/mineral/gold, /area/shuttle/escape/luxury) -"bq" = ( -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21"; - pixel_x = -3; - pixel_y = 3 - }, -/obj/machinery/light, -/turf/open/floor/mineral/gold, -/area/shuttle/escape/luxury) (1,1,1) = {" aa diff --git a/_maps/shuttles/emergency_meta.dmm b/_maps/shuttles/emergency_meta.dmm index 9824fec026..0bd4da4a7d 100644 --- a/_maps/shuttles/emergency_meta.dmm +++ b/_maps/shuttles/emergency_meta.dmm @@ -2,9 +2,6 @@ "aa" = ( /turf/template_noop, /area/template_noop) -"ab" = ( -/turf/closed/wall/mineral/titanium/overspace, -/area/shuttle/escape) "ac" = ( /obj/effect/spawner/structure/window/shuttle, /turf/open/floor/plating, @@ -12,9 +9,6 @@ "ad" = ( /turf/closed/wall/mineral/titanium, /area/shuttle/escape) -"ae" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "af" = ( /obj/machinery/door/airlock/titanium{ name = "Emergency Shuttle Airlock" @@ -22,7 +16,7 @@ /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) "ag" = ( -/obj/structure/sign/nosmoking_2, +/obj/structure/sign/warning/nosmoking, /turf/closed/wall/mineral/titanium, /area/shuttle/escape) "ah" = ( @@ -39,18 +33,6 @@ }, /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) -"ai" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) -"aj" = ( -/turf/closed/wall/mineral/plastitanium{ - dir = 8; - icon_state = "diagonalWall3" - }, -/area/shuttle/escape) -"ak" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "al" = ( /obj/structure/table, /obj/item/phone{ @@ -238,9 +220,6 @@ /obj/structure/chair/office/dark, /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) -"aD" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "aE" = ( /obj/structure/chair{ dir = 1 @@ -278,18 +257,12 @@ /obj/structure/extinguisher_cabinet, /turf/closed/wall/mineral/titanium, /area/shuttle/escape) -"aK" = ( -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/escape) "aL" = ( /obj/machinery/computer/station_alert{ dir = 4 }, /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) -"aM" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "aN" = ( /obj/machinery/status_display{ dir = 8; @@ -359,12 +332,6 @@ }, /turf/open/floor/mineral/titanium, /area/shuttle/escape) -"aU" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) -"aV" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "aW" = ( /obj/machinery/door/airlock/command{ name = "Emergency Recovery Airlock"; @@ -373,9 +340,6 @@ }, /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) -"aX" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "aY" = ( /obj/machinery/door/airlock/security/glass{ name = "Brig"; @@ -392,7 +356,7 @@ /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) "ba" = ( -/obj/structure/sign/bluecross_2, +/obj/structure/sign/departments/medbay/alt, /turf/closed/wall/mineral/titanium, /area/shuttle/escape) "bb" = ( @@ -402,9 +366,6 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/shuttle/escape) -"bc" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "bd" = ( /obj/structure/chair{ dir = 4 @@ -420,9 +381,6 @@ }, /turf/open/floor/plasteel/floorgrime, /area/shuttle/escape) -"bg" = ( -/turf/open/floor/mineral/plastitanium, -/area/shuttle/escape) "bh" = ( /obj/structure/chair{ dir = 4 @@ -482,9 +440,6 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/shuttle/escape) -"br" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "bs" = ( /obj/structure/chair{ dir = 8 @@ -551,9 +506,6 @@ /obj/item/cigbutt, /turf/open/floor/plasteel/floorgrime, /area/shuttle/escape) -"bx" = ( -/turf/open/floor/plasteel/floorgrime, -/area/shuttle/escape) "by" = ( /obj/machinery/suit_storage_unit/standard_unit, /turf/open/floor/plasteel/floorgrime, @@ -572,11 +524,6 @@ }, /turf/open/floor/plasteel, /area/shuttle/escape) -"bB" = ( -/turf/closed/wall/mineral/plastitanium{ - icon_state = "diagonalWall3" - }, -/area/shuttle/escape) "bC" = ( /obj/structure/reagent_dispensers/watertank, /turf/open/floor/plasteel/floorgrime, @@ -874,12 +821,6 @@ }, /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) -"bZ" = ( -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/escape) "ca" = ( /obj/structure/chair{ dir = 1 diff --git a/_maps/shuttles/emergency_mini.dmm b/_maps/shuttles/emergency_mini.dmm index d7d5644336..8bf882302b 100644 --- a/_maps/shuttles/emergency_mini.dmm +++ b/_maps/shuttles/emergency_mini.dmm @@ -205,9 +205,6 @@ /obj/item/extinguisher, /turf/closed/wall/mineral/titanium, /area/shuttle/escape) -"G" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "H" = ( /obj/machinery/status_display, /turf/closed/wall/mineral/titanium, diff --git a/_maps/shuttles/emergency_pubby.dmm b/_maps/shuttles/emergency_pubby.dmm index 9c84d5883b..92ad72d1c5 100644 --- a/_maps/shuttles/emergency_pubby.dmm +++ b/_maps/shuttles/emergency_pubby.dmm @@ -307,7 +307,7 @@ pixel_y = 3 }, /obj/item/crowbar, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = 32 }, /obj/machinery/light{ @@ -332,21 +332,6 @@ "bd" = ( /turf/closed/wall/mineral/titanium/nodiagonal, /area/shuttle/escape) -"be" = ( -/turf/closed/wall/mineral/titanium/nodiagonal, -/area/shuttle/escape) -"bf" = ( -/turf/closed/wall/mineral/titanium/nodiagonal, -/area/shuttle/escape) -"bg" = ( -/turf/closed/wall/mineral/titanium/nodiagonal, -/area/shuttle/escape) -"bh" = ( -/turf/closed/wall/mineral/titanium/nodiagonal, -/area/shuttle/escape) -"bi" = ( -/turf/closed/wall/mineral/titanium/nodiagonal, -/area/shuttle/escape) (1,1,1) = {" aa diff --git a/_maps/shuttles/emergency_raven.dmm b/_maps/shuttles/emergency_raven.dmm index c8178fd9a2..f1dbe29fbe 100644 --- a/_maps/shuttles/emergency_raven.dmm +++ b/_maps/shuttles/emergency_raven.dmm @@ -317,15 +317,6 @@ icon_state = "darkred" }, /area/shuttle/escape) -"aY" = ( -/obj/machinery/flasher{ - id = "shuttleflash"; - pixel_x = -26 - }, -/turf/open/floor/plasteel/darkgreen/side{ - dir = 8 - }, -/area/shuttle/escape) "aZ" = ( /turf/open/floor/plasteel/darkgreen/side{ dir = 4 @@ -580,10 +571,6 @@ /obj/structure/chair/office/dark, /turf/open/floor/plasteel/dark, /area/shuttle/escape) -"bw" = ( -/obj/machinery/door/airlock/shuttle, -/turf/open/floor/plasteel/dark, -/area/shuttle/escape) "bx" = ( /obj/structure/chair{ dir = 8 @@ -892,22 +879,6 @@ dir = 6 }, /area/shuttle/escape) -"cf" = ( -/obj/machinery/door/airlock/titanium/glass{ - name = "Shuttle Engine Room" - }, -/turf/open/floor/plasteel/darkgreen/side{ - dir = 8 - }, -/area/shuttle/escape) -"cg" = ( -/obj/machinery/door/airlock/titanium/glass{ - name = "Shuttle Engine Room" - }, -/turf/open/floor/plasteel/darkgreen/side{ - dir = 4 - }, -/area/shuttle/escape) "ch" = ( /obj/structure/reagent_dispensers/fueltank, /obj/machinery/light{ @@ -988,18 +959,6 @@ "cs" = ( /turf/closed/wall/mineral/plastitanium/interior, /area/shuttle/escape) -"cx" = ( -/turf/closed/wall/mineral/plastitanium{ - dir = 8; - icon_state = "diagonalWall3" - }, -/area/shuttle/escape) -"cy" = ( -/turf/closed/wall/mineral/plastitanium{ - dir = 1; - icon_state = "diagonalWall3" - }, -/area/shuttle/escape) "cz" = ( /obj/machinery/button/door{ id = "shuttleshutters"; @@ -1010,25 +969,6 @@ /obj/machinery/light, /turf/open/floor/plasteel/darkblue/side, /area/shuttle/escape) -"cA" = ( -/obj/machinery/door/poddoor/shutters{ - id = "shuttleshutters"; - name = "blast shutters" - }, -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/shuttle/escape) -"cD" = ( -/turf/closed/wall/mineral/plastitanium{ - icon_state = "diagonalWall3" - }, -/area/shuttle/escape) -"cI" = ( -/turf/closed/wall/mineral/plastitanium{ - dir = 4; - icon_state = "diagonalWall3" - }, -/area/shuttle/escape) "ei" = ( /obj/machinery/porta_turret/centcom_shuttle{ dir = 10 @@ -1091,15 +1031,6 @@ /obj/machinery/light, /turf/open/floor/plasteel/darkgreen/side, /area/shuttle/escape) -"eJ" = ( -/obj/machinery/button/flasher{ - id = "cockpit_flasher"; - pixel_x = 6; - pixel_y = -24 - }, -/obj/machinery/light, -/turf/open/floor/mineral/titanium/blue, -/area/space) "eN" = ( /obj/machinery/light{ dir = 4 @@ -1115,9 +1046,6 @@ "eP" = ( /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/shuttle/escape) -"eQ" = ( -/turf/template_noop, -/area/template_noop) (1,1,1) = {" aa @@ -1543,8 +1471,8 @@ bu bA bJ ad -eQ -eQ +ad +ad ad cs bV @@ -1577,8 +1505,8 @@ bv bB bJ ad -eQ -eQ +ad +ad ad bJ br @@ -1611,8 +1539,8 @@ aC bC bJ ad -eQ -eQ +ad +ad ad bJ br @@ -1645,8 +1573,8 @@ bm ar cs ad -eQ -eQ +ad +ad ad cs bW diff --git a/_maps/shuttles/emergency_supermatter.dmm b/_maps/shuttles/emergency_supermatter.dmm index 1b4acd218f..d5caf0ddb2 100644 --- a/_maps/shuttles/emergency_supermatter.dmm +++ b/_maps/shuttles/emergency_supermatter.dmm @@ -2,11 +2,8 @@ "aa" = ( /turf/template_noop, /area/template_noop) -"ab" = ( -/turf/closed/wall/mineral/titanium/overspace, -/area/shuttle/escape) "ac" = ( -/obj/structure/sign/radiation, +/obj/structure/sign/warning/radiation, /turf/closed/wall/mineral/titanium, /area/shuttle/escape) "ad" = ( @@ -16,9 +13,6 @@ "ae" = ( /turf/closed/wall/mineral/titanium, /area/shuttle/escape) -"af" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "ag" = ( /obj/structure/closet/radiation{ anchored = 1 @@ -39,10 +33,6 @@ }, /turf/open/floor/mineral/titanium/yellow, /area/shuttle/escape) -"ak" = ( -/obj/structure/sign/radiation, -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "al" = ( /obj/machinery/shower{ dir = 8 @@ -115,12 +105,6 @@ "ax" = ( /turf/closed/wall/mineral/titanium/interior, /area/shuttle/escape) -"ay" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) -"az" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "aA" = ( /obj/machinery/door/airlock/titanium{ name = "Emergency Shuttle Airlock" @@ -138,10 +122,6 @@ }, /turf/open/floor/plating, /area/shuttle/escape) -"aC" = ( -/obj/structure/sign/radiation, -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "aD" = ( /obj/structure/table/reinforced, /obj/item/storage/firstaid/toxin, @@ -166,24 +146,10 @@ }, /turf/open/floor/plating, /area/shuttle/escape) -"aG" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) -"aH" = ( -/obj/machinery/status_display, -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "aI" = ( -/obj/structure/sign/radiation, +/obj/structure/sign/warning/radiation, /turf/closed/wall/mineral/titanium/nodiagonal, /area/shuttle/escape) -"aJ" = ( -/obj/structure/sign/radiation, -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) -"aK" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "aL" = ( /obj/machinery/door/airlock/external{ name = "Emergency Launch Catwalk"; @@ -385,8 +351,8 @@ aa aa "} (2,1,1) = {" -af -af +ae +ae ad ac aq @@ -577,8 +543,8 @@ bc be "} (10,1,1) = {" -af -af +ae +ae ad ac aq diff --git a/_maps/shuttles/emergency_wabbajack.dmm b/_maps/shuttles/emergency_wabbajack.dmm index 7c4b5ea932..facb14a15c 100644 --- a/_maps/shuttles/emergency_wabbajack.dmm +++ b/_maps/shuttles/emergency_wabbajack.dmm @@ -29,7 +29,7 @@ /turf/open/floor/plasteel/darkgreen, /area/shuttle/escape) "ai" = ( -/obj/structure/sign/biohazard, +/obj/structure/sign/warning/biohazard, /turf/closed/wall/mineral/titanium, /area/shuttle/escape) "aj" = ( diff --git a/_maps/shuttles/ferry_base.dmm b/_maps/shuttles/ferry_base.dmm index cc24ea9293..e0cdfc2c38 100644 --- a/_maps/shuttles/ferry_base.dmm +++ b/_maps/shuttles/ferry_base.dmm @@ -20,9 +20,6 @@ /obj/effect/spawner/structure/window/shuttle, /turf/open/floor/plating, /area/shuttle/transport) -"f" = ( -/turf/closed/wall/mineral/titanium/overspace, -/area/shuttle/transport) "g" = ( /turf/closed/wall/mineral/titanium/interior, /area/shuttle/transport) @@ -57,22 +54,12 @@ height = 12; id = "ferry"; name = "ferry shuttle"; - roundstart_move = "ferry_away"; port_direction = 2; width = 5; timid = 1 }, /turf/open/floor/mineral/titanium/blue, /area/shuttle/transport) -"n" = ( -/obj/structure/shuttle/engine/propulsion{ - dir = 4 - }, -/turf/closed/wall/mineral/titanium, -/area/shuttle/transport) -"o" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/transport) "p" = ( /obj/structure/closet/crate, /turf/open/floor/mineral/titanium/blue, @@ -83,9 +70,6 @@ }, /turf/open/floor/mineral/titanium/blue, /area/shuttle/transport) -"r" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/transport) (1,1,1) = {" a diff --git a/_maps/shuttles/ferry_lighthouse.dmm b/_maps/shuttles/ferry_lighthouse.dmm index f7e907a255..f1c7bb5e69 100644 --- a/_maps/shuttles/ferry_lighthouse.dmm +++ b/_maps/shuttles/ferry_lighthouse.dmm @@ -17,19 +17,12 @@ "ad" = ( /turf/closed/wall/mineral/titanium, /area/shuttle/transport) -"ae" = ( -/turf/template_noop, -/area/template_noop) "af" = ( /turf/closed/wall/r_wall, /area/shuttle/transport) "ag" = ( /turf/open/floor/plating/airless, /area/shuttle/transport) -"ah" = ( -/obj/structure/foamedmetal, -/turf/open/space, -/area/shuttle/transport) "ai" = ( /obj/machinery/vending/liberationstation, /turf/open/floor/mineral/titanium/blue, @@ -97,9 +90,6 @@ /obj/effect/spawner/structure/window/shuttle, /turf/closed/wall/mineral/titanium, /area/shuttle/transport) -"ax" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/transport) "ay" = ( /obj/structure/window/shuttle, /obj/structure/grille, @@ -109,9 +99,6 @@ /obj/effect/spawner/structure/window/shuttle, /turf/open/floor/plating, /area/shuttle/transport) -"aA" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/transport) "aB" = ( /obj/structure/grille/broken, /obj/structure/window/fulltile, @@ -178,7 +165,6 @@ height = 27; id = "ferry"; name = "The Lighthouse"; - roundstart_move = "ferry_away"; timid = 1; port_direction = 2; width = 16 @@ -232,9 +218,6 @@ /obj/effect/spawner/structure/window/reinforced, /turf/closed/wall/mineral/titanium, /area/shuttle/transport) -"aZ" = ( -/turf/closed/wall/mineral/titanium/overspace, -/area/shuttle/transport) "ba" = ( /obj/machinery/conveyor{ dir = 1; @@ -392,7 +375,7 @@ bi bj "} (6,1,1) = {" -ae +aa ad aM al @@ -410,8 +393,8 @@ aM ad "} (7,1,1) = {" -ae -ae +aa +aa ad ad aM @@ -425,13 +408,13 @@ aL bf aM ad -ae +aa "} (8,1,1) = {" -ae -ae -ae -ae +aa +aa +aa +aa ad ar au @@ -442,14 +425,14 @@ au bb bg ad -ae -ae +aa +aa "} (9,1,1) = {" -ae -ae -ae -ae +aa +aa +aa +aa ap ap av @@ -460,15 +443,15 @@ aC bc aM ad -ae -ae +aa +aa "} (10,1,1) = {" -ae -ae -ae -ae -ae +aa +aa +aa +aa +aa ap au aD @@ -477,16 +460,16 @@ aD aD bd ad -ae -ae -ae +aa +aa +aa "} (11,1,1) = {" -ae -ae -ae -ae -ae +aa +aa +aa +aa +aa ap ap aD @@ -495,295 +478,295 @@ aD aD aM ad -ae -ae -ae +aa +aa +aa "} (12,1,1) = {" -ae -ae -ae -ae -ae -ae +aa +aa +aa +aa +aa +aa ap aD aD aD aD ad -ae -ae -ae -ae +aa +aa +aa +aa "} (13,1,1) = {" -ae -ae -ae -ae -ae -ae +aa +aa +aa +aa +aa +aa ap aE aN aE aM ad -ae -ae -ae -ae +aa +aa +aa +aa "} (14,1,1) = {" -ae -ae -ae -ae -ae -ae +aa +aa +aa +aa +aa +aa aw aE aN aE ad -ae -ae -ae -ae -ae +aa +aa +aa +aa +aa "} (15,1,1) = {" -ae -ae -ae -ae -ae -ae +aa +aa +aa +aa +aa +aa aw aE aE aE ad -ae -ae -ae -ae -ae +aa +aa +aa +aa +aa "} (16,1,1) = {" -ae -ae -ae -ae -ae -ae +aa +aa +aa +aa +aa +aa ad ak aE ak aY -ae -ae -ae -ae -ae +aa +aa +aa +aa +aa "} (17,1,1) = {" -ae -ae -ae -ae -ae -ae +aa +aa +aa +aa +aa +aa ad aF aE aT aw -ae -ae -ae -ae -ae +aa +aa +aa +aa +aa "} (18,1,1) = {" -ae -ae -ae -ae -ae -ae +aa +aa +aa +aa +aa +aa ad aG aE aU ad -ae -ae -ae -ae -ae +aa +aa +aa +aa +aa "} (19,1,1) = {" -ae -ae -ae -ae -ae -ae +aa +aa +aa +aa +aa +aa ad aH aE aV ad -ae -ae -ae -ae -ae +aa +aa +aa +aa +aa "} (20,1,1) = {" -ae -ae -ae -ae -ae -ae +aa +aa +aa +aa +aa +aa ay aI aE aW ay -ae -ae -ae -ae -ae +aa +aa +aa +aa +aa "} (21,1,1) = {" -ae -ae -ae -ae -ae -ae +aa +aa +aa +aa +aa +aa ad ak aE aW ad -ae -ae -ae -ae -ae +aa +aa +aa +aa +aa "} (22,1,1) = {" -ae -ae -ae -ae -ae -ae +aa +aa +aa +aa +aa +aa ad aJ aE aW ad -ae -ae -ae -ae -ae +aa +aa +aa +aa +aa "} (23,1,1) = {" -ae -ae -ae -ae -ae -ae +aa +aa +aa +aa +aa +aa ad aJ aE aW ad -ae -ae -ae -ae -ae +aa +aa +aa +aa +aa "} (24,1,1) = {" -ae -ae -ae -ae -ae -ae +aa +aa +aa +aa +aa +aa az aJ aE aW az -ae -ae -ae -ae -ae +aa +aa +aa +aa +aa "} (25,1,1) = {" -ae -ae -ae -ae -ae -ae +aa +aa +aa +aa +aa +aa ad aJ aE aW ad -ae -ae -ae -ae -ae +aa +aa +aa +aa +aa "} (26,1,1) = {" -ae -ae -ae -ae -ae -ae +aa +aa +aa +aa +aa +aa ad aK aE aW ad -ae -ae -ae -ae -ae +aa +aa +aa +aa +aa "} (27,1,1) = {" -ae -ae -ae -ae -ae -ae +aa +aa +aa +aa +aa +aa ad ay aO ay ad -ae -ae -ae -ae -ae +aa +aa +aa +aa +aa "} diff --git a/_maps/shuttles/ferry_meat.dmm b/_maps/shuttles/ferry_meat.dmm index b9d3f49695..3ae6d8af03 100644 --- a/_maps/shuttles/ferry_meat.dmm +++ b/_maps/shuttles/ferry_meat.dmm @@ -11,9 +11,6 @@ "c" = ( /turf/closed/wall/mineral/titanium, /area/shuttle/transport) -"d" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/transport) "e" = ( /turf/closed/wall/mineral/titanium/interior, /area/shuttle/transport) @@ -113,22 +110,12 @@ height = 12; id = "ferry"; name = "ferry shuttle"; - roundstart_move = "ferry_away"; port_direction = 2; width = 5; timid = 1 }, /turf/open/floor/plasteel/freezer, /area/shuttle/transport) -"r" = ( -/obj/structure/shuttle/engine/propulsion{ - dir = 4 - }, -/turf/closed/wall/mineral/titanium, -/area/shuttle/transport) -"s" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/transport) "t" = ( /obj/structure/closet/chefcloset, /turf/open/floor/plasteel/freezer, @@ -150,9 +137,6 @@ }, /turf/open/floor/plasteel/freezer, /area/shuttle/transport) -"x" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/transport) (1,1,1) = {" a diff --git a/_maps/shuttles/whiteship_box.dmm b/_maps/shuttles/whiteship_box.dmm index f1c6c838b1..d51176b1b8 100644 --- a/_maps/shuttles/whiteship_box.dmm +++ b/_maps/shuttles/whiteship_box.dmm @@ -2,9 +2,6 @@ "aa" = ( /turf/template_noop, /area/template_noop) -"ab" = ( -/turf/closed/wall/mineral/titanium/overspace, -/area/shuttle/abandoned) "ac" = ( /turf/closed/wall/mineral/titanium, /area/shuttle/abandoned) @@ -22,15 +19,11 @@ name = "NT Medical Ship"; port_direction = 8; preferred_direction = 4; - roundstart_move = "whiteship_away"; timid = 1; width = 35 }, /turf/open/floor/mineral/titanium, /area/shuttle/abandoned) -"ae" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/abandoned) "af" = ( /obj/machinery/door/airlock/titanium, /turf/open/floor/mineral/titanium, @@ -41,12 +34,6 @@ }, /turf/open/floor/plating/airless, /area/shuttle/abandoned) -"ah" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/abandoned) -"ai" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/abandoned) "aj" = ( /turf/open/floor/mineral/titanium, /area/shuttle/abandoned) @@ -63,9 +50,6 @@ }, /turf/open/floor/mineral/titanium, /area/shuttle/abandoned) -"am" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/abandoned) "an" = ( /obj/structure/shuttle/engine/propulsion{ dir = 8 @@ -84,9 +68,6 @@ "ap" = ( /turf/closed/wall/mineral/titanium/interior, /area/shuttle/abandoned) -"aq" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/abandoned) "ar" = ( /obj/machinery/computer/pod{ dir = 8; @@ -94,15 +75,9 @@ }, /turf/open/floor/mineral/titanium, /area/shuttle/abandoned) -"as" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/abandoned) "at" = ( /turf/open/floor/plating, /area/shuttle/abandoned) -"au" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/abandoned) "av" = ( /obj/structure/rack, /obj/item/clothing/suit/space/hardsuit/medical, @@ -128,21 +103,12 @@ }, /turf/open/floor/plating, /area/shuttle/abandoned) -"az" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/abandoned) -"aA" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/abandoned) "aB" = ( /obj/structure/shuttle/engine/propulsion/right{ dir = 8 }, /turf/open/floor/plating/airless, /area/shuttle/abandoned) -"aC" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/abandoned) "aD" = ( /obj/machinery/door/airlock/titanium, /turf/open/floor/plating, @@ -154,9 +120,6 @@ }, /turf/open/floor/mineral/titanium, /area/shuttle/abandoned) -"aF" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/abandoned) "aG" = ( /obj/structure/rack, /obj/item/tank/internals/emergency_oxygen, @@ -174,9 +137,6 @@ /obj/structure/light_construct, /turf/open/floor/mineral/titanium, /area/shuttle/abandoned) -"aI" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/abandoned) "aJ" = ( /obj/structure/chair{ dir = 1 @@ -193,10 +153,6 @@ /obj/effect/spawner/structure/window/shuttle, /turf/open/floor/plating, /area/shuttle/abandoned) -"aM" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) "aN" = ( /obj/machinery/door/window, /turf/open/floor/mineral/titanium/purple, @@ -245,13 +201,6 @@ /obj/item/tank/internals/oxygen, /turf/open/floor/mineral/titanium, /area/shuttle/abandoned) -"aW" = ( -/obj/machinery/door/airlock/titanium, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"aX" = ( -/turf/closed/wall/mineral/titanium/interior, -/area/shuttle/abandoned) "aY" = ( /obj/structure/bed, /obj/item/bedsheet, @@ -287,10 +236,6 @@ /obj/structure/chair, /turf/open/floor/mineral/titanium, /area/shuttle/abandoned) -"be" = ( -/obj/machinery/door/airlock/public/glass, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) "bf" = ( /obj/item/scalpel, /turf/open/floor/mineral/titanium, @@ -352,26 +297,12 @@ }, /turf/open/floor/mineral/titanium, /area/shuttle/abandoned) -"bp" = ( -/obj/structure/light_construct, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) "bq" = ( /obj/structure/light_construct/small{ dir = 8 }, /turf/open/floor/mineral/titanium, /area/shuttle/abandoned) -"br" = ( -/obj/structure/light_construct, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"bs" = ( -/obj/structure/light_construct{ - dir = 1 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) "bt" = ( /obj/structure/light_construct/small{ dir = 1 @@ -394,11 +325,11 @@ aa aa aa aa -aC -aC -aW -aC -aC +ac +ac +af +ac +ac aa aa aa @@ -418,11 +349,11 @@ aa aa aa aa -aC -aX +ac +ap aj -aX -aC +ap +ac aa aa aa @@ -442,11 +373,11 @@ aa aa aa aa -aC +ac aj aj aj -aC +ac aa aa aa @@ -466,11 +397,11 @@ aa aa aa aa -aC +ac aj aj aj -aC +ac aa aa aa @@ -490,11 +421,11 @@ aa aa aa aa -aC +ac aj aj aj -aC +ac aa aa aa @@ -514,11 +445,11 @@ aa aa aa aa -aC +ac aj aj bk -aC +ac aa aa aa @@ -538,11 +469,11 @@ aa aa aa aa -aC +ac aj aj aj -aC +ac aa aa aa @@ -562,11 +493,11 @@ aa aa aa aa -aC +ac aj aj aj -aC +ac aa aa aa @@ -586,11 +517,11 @@ aa aa aa aa -aC +ac aj aj aU -aC +ac aa aa aa @@ -610,11 +541,11 @@ aa aa aa aa -aC -aX +ac +ap aj -aX -aC +ap +ac aa aa aa @@ -634,11 +565,11 @@ aa aa aa aa -aC -aC -aW -aC -aC +ac +ac +af +ac +ac aa aa aa @@ -659,9 +590,9 @@ aa aa aa aa -aC +ac aj -aC +ac aa aa aa @@ -682,11 +613,11 @@ aa aa aa aa -aC -aC -aW -aC -aC +ac +ac +af +ac +ac aa aa aa @@ -705,13 +636,13 @@ aa aa aa aa -aC -aC -aX +ac +ac +ap aj -aX -aC -aC +ap +ac +ac aa aa aa @@ -722,85 +653,85 @@ aa aa "} (15,1,1) = {" -aC +ac ag an an an aB aa -aC -aX +ac +ap aj aj aj -aX -aC +ap +ac aa ag an an an aB -aC +ac aa "} (16,1,1) = {" -aC -aC +ac +ac ao ao ao -aC -aC -aC +ac +ac +ac bl aj aj aj bk -aC -aC -aC +ac +ac +ac ao ao ao -aC -aC +ac +ac aa "} (17,1,1) = {" aa -aC +ac ap at at ap -aC -aX +ac +ap aj aj aj aj aj -aX -aC +ap +ac ap at at ap -aC +ac aa aa "} (18,1,1) = {" aa aa -aC +ac ap at bi -aC +ac aj aj aj @@ -808,11 +739,11 @@ aj aj aj ba -aC +ac bt at ap -aC +ac aa aa aa @@ -821,21 +752,21 @@ aa aa aa aa -aC -aC +ac +ac aD -aC -aC -aC +ac +ac +ac aL -be +aR aL -aC -aC -aC +ac +ac +ac aD -aC -aC +ac +ac aa aa aa @@ -845,8 +776,8 @@ aa aa aa aa -aC -aC +ac +ac aj aj aj @@ -858,8 +789,8 @@ aj aj aj aj -aC -aC +ac +ac aa aa aa @@ -868,9 +799,9 @@ aa (21,1,1) = {" aa aa -aC -aC -aX +ac +ac +ap aE aj aj @@ -882,58 +813,58 @@ aj aj aj aj -aC -aC -aC +ac +ac +ac aa aa aa "} (22,1,1) = {" aa -aC -aC -aX +ac +ac +ap aj aj aj aj -aC -aC -aC -aC -aC -aC +ac +ac +ac +ac +ac +ac aj aj -aC -aC -aC -aC +ac +ac +ac +ac aa aa "} (23,1,1) = {" -aC -aC -aC -aC -aC -aC -aX +ac +ac +ac +ac +ac +ac +ap aj -aC +ac aN aj bq aj -aW +af aj aj -aW +af aj -aX -aC +ap +ac aa aa "} @@ -943,80 +874,80 @@ aj aj av av -aX -aC +ap +ac bk -aC +ac aO aj aV aY -aC +ac bl aj -aC +ac aj bg -aC -aC +ac +ac aa "} (25,1,1) = {" -aC +ac aj aj aj aj aG -aC +ac aj -aW +af aj bn aj aZ -aC +ac aj aj -aC +ac aj aj -aX -aC +ap +ac aa "} (26,1,1) = {" -aC +ac ak aj aj aj aj -aC +ac aj -aC -aC -aC -aC -aC -aC +ac +ac +ac +ac +ac +ac aj aE aL bf aj aj -aC +ac aa "} (27,1,1) = {" -aC +ac al aj aj aj aj -aW +af aj aj aj @@ -1030,18 +961,18 @@ aL aj aj bh -aC +ac aa "} (28,1,1) = {" -aC +ac aj aj aj aj aj -aC -aX +ac +ap aj aj aj @@ -1054,41 +985,41 @@ aL aj aj aj -aC +ac aa "} (29,1,1) = {" -aC +ac aj aj aj aj -aX -aC -aC -aC +ap +ac +ac +ac aL -be +aR aL -aC -aC -aC -aC -aC +ac +ac +ac +ac +ac aj aj aj -aC +ac aa "} (30,1,1) = {" -aC +ac aj aj aj -aX -aC -aX +ap +ac +ap aj aj aj @@ -1098,20 +1029,20 @@ aj aP aP aP -aC +ac aj aj -aX -aC +ap +ac aa "} (31,1,1) = {" -aW +af aj ar aj -aC -aX +ac +ap aj aj aj @@ -1122,19 +1053,19 @@ aj aj aj aj -aX -aX +ap +ap bb -aC +ac aa aa "} (32,1,1) = {" -aC -aC -aC +ac +ac +ac aw -aC +ac bj aJ aj @@ -1147,18 +1078,18 @@ aj aj bd aH -aC -aC -aC +ac +ac +ac aa aa "} (33,1,1) = {" aa aa -aC +ac ax -aC +ac bu aJ aj @@ -1170,9 +1101,9 @@ aj aj aj aj -aX -aC -aC +ap +ac +ac aa aa aa @@ -1180,10 +1111,10 @@ aa (34,1,1) = {" aa aa -aC +ac ay -aC -aX +ac +ap aK aj aj @@ -1193,9 +1124,9 @@ aP aj aj aj -aX -aC -aC +ap +ac +ac aa aa aa @@ -1206,9 +1137,9 @@ aa aa aa aa -aC -aC -aC +ac +ac +ac aL aL aL @@ -1216,9 +1147,9 @@ aL aL aL aL -aC -aC -aC +ac +ac +ac aa aa aa diff --git a/_maps/shuttles/whiteship_cere.dmm b/_maps/shuttles/whiteship_cere.dmm index dc51d7630c..54cda6755b 100644 --- a/_maps/shuttles/whiteship_cere.dmm +++ b/_maps/shuttles/whiteship_cere.dmm @@ -24,7 +24,6 @@ port_direction = 8; preferred_direction = 1; timid = 1; - roundstart_move = "whiteship_away"; width = 16 }, /turf/open/floor/plating, @@ -584,9 +583,6 @@ }, /turf/open/floor/mineral/titanium/blue, /area/shuttle/abandoned) -"aY" = ( -/turf/template_noop, -/area/template_noop) "aZ" = ( /obj/structure/table, /obj/item/phone{ @@ -637,8 +633,8 @@ aa aa aa aa -aY -aY +aa +aa "} (2,1,1) = {" aa @@ -656,7 +652,7 @@ ab ab aa aa -aY +aa "} (3,1,1) = {" ab diff --git a/_maps/shuttles/whiteship_delta.dmm b/_maps/shuttles/whiteship_delta.dmm index 25f6b99ae4..57adba831c 100644 --- a/_maps/shuttles/whiteship_delta.dmm +++ b/_maps/shuttles/whiteship_delta.dmm @@ -47,7 +47,7 @@ /turf/open/floor/plasteel/neutral, /area/shuttle/abandoned) "ah" = ( -/obj/structure/sign/vacuum, +/obj/structure/sign/warning/vacuum, /turf/closed/wall/mineral/titanium/nodiagonal, /area/shuttle/abandoned) "ai" = ( @@ -891,7 +891,7 @@ }, /area/shuttle/abandoned) "bI" = ( -/obj/structure/sign/vacuum, +/obj/structure/sign/warning/vacuum, /turf/closed/wall/mineral/titanium, /area/shuttle/abandoned) "bJ" = ( @@ -1084,7 +1084,7 @@ /turf/open/floor/plasteel/whiteblue/side, /area/shuttle/abandoned) "cc" = ( -/obj/structure/sign/bluecross_2, +/obj/structure/sign/departments/medbay/alt, /turf/closed/wall/mineral/titanium, /area/shuttle/abandoned) "cd" = ( @@ -1097,7 +1097,7 @@ }, /area/shuttle/abandoned) "ce" = ( -/obj/structure/sign/engineering, +/obj/structure/sign/departments/engineering, /turf/closed/wall/mineral/titanium, /area/shuttle/abandoned) "cf" = ( @@ -1430,7 +1430,7 @@ /turf/open/floor/plasteel/whitepurple/corner, /area/shuttle/abandoned) "cL" = ( -/obj/structure/sign/science, +/obj/structure/sign/departments/science, /turf/closed/wall/mineral/titanium, /area/shuttle/abandoned) "cM" = ( @@ -1518,7 +1518,6 @@ name = "White-Ship"; port_direction = 8; preferred_direction = 8; - roundstart_move = "whiteship_away"; timid = 1; width = 32 }, diff --git a/_maps/shuttles/whiteship_meta.dmm b/_maps/shuttles/whiteship_meta.dmm index 96f6e7e3b4..be7b37b260 100644 --- a/_maps/shuttles/whiteship_meta.dmm +++ b/_maps/shuttles/whiteship_meta.dmm @@ -39,15 +39,11 @@ name = "NT Recovery White-Ship"; port_direction = 8; preferred_direction = 4; - roundstart_move = "whiteship_away"; timid = 1; width = 28 }, /turf/open/floor/mineral/titanium/blue, /area/shuttle/abandoned) -"af" = ( -/turf/template_noop, -/area/template_noop) "ag" = ( /obj/structure/shuttle/engine/propulsion/left{ dir = 8 @@ -151,7 +147,7 @@ /turf/open/floor/mineral/titanium, /area/shuttle/abandoned) "ao" = ( -/obj/structure/sign/vacuum{ +/obj/structure/sign/warning/vacuum{ pixel_x = -32 }, /obj/effect/decal/cleanable/dirt{ @@ -559,7 +555,7 @@ /turf/open/floor/plasteel, /area/shuttle/abandoned) "aT" = ( -/obj/structure/sign/restroom, +/obj/structure/sign/departments/restroom, /turf/closed/wall/mineral/titanium, /area/shuttle/abandoned) "aU" = ( @@ -608,7 +604,7 @@ /turf/open/floor/mineral/titanium/blue, /area/shuttle/abandoned) "aY" = ( -/obj/structure/sign/cargo, +/obj/structure/sign/departments/cargo, /turf/closed/wall/mineral/titanium, /area/shuttle/abandoned) "aZ" = ( @@ -730,7 +726,7 @@ /area/shuttle/abandoned) "bl" = ( /obj/structure/reagent_dispensers/fueltank, -/obj/structure/sign/vacuum{ +/obj/structure/sign/warning/vacuum{ pixel_x = -32 }, /obj/effect/decal/cleanable/dirt{ @@ -1085,7 +1081,7 @@ /turf/open/floor/mineral/titanium/blue, /area/shuttle/abandoned) "bR" = ( -/obj/structure/sign/science{ +/obj/structure/sign/departments/science{ pixel_y = -32 }, /obj/effect/decal/cleanable/dirt{ @@ -1118,7 +1114,7 @@ }, /obj/machinery/computer/camera_advanced/shuttle_docker/whiteship{ dir = 1; - station_lock_override = 1; + lock_override = 1; view_range = 15; x_offset = -3; y_offset = -7 @@ -1148,7 +1144,7 @@ /turf/open/floor/mineral/titanium, /area/shuttle/abandoned) "bX" = ( -/obj/structure/sign/botany, +/obj/structure/sign/departments/botany, /turf/closed/wall/mineral/titanium, /area/shuttle/abandoned) "bY" = ( @@ -1182,7 +1178,7 @@ /turf/open/floor/mineral/titanium/blue, /area/shuttle/abandoned) "cb" = ( -/obj/structure/sign/bluecross_2, +/obj/structure/sign/departments/medbay/alt, /turf/closed/wall/mineral/titanium, /area/shuttle/abandoned) "cc" = ( @@ -1634,20 +1630,20 @@ (1,1,1) = {" aa -af -af -af -af +aa +aa +aa +aa ab ab ad ab ab -af -af -af -af -af +aa +aa +aa +aa +aa "} (2,1,1) = {" aa @@ -1664,7 +1660,7 @@ au au au cA -af +aa "} (3,1,1) = {" ab @@ -2025,9 +2021,9 @@ ab "} (24,1,1) = {" aa -af -af -af +aa +aa +aa ac bj aB @@ -2035,16 +2031,16 @@ bH bN bV ac -af -af -af -af +aa +aa +aa +aa "} (25,1,1) = {" -af -af -af -af +aa +aa +aa +aa ac bk bs @@ -2052,16 +2048,16 @@ bI bO bW ac -af -af -af -af +aa +aa +aa +aa "} (26,1,1) = {" aa -af -af -af +aa +aa +aa ba ac ac @@ -2069,10 +2065,10 @@ ac ac ac ba -af -af -af -af +aa +aa +aa +aa "} (27,1,1) = {" aa @@ -2092,19 +2088,19 @@ aa aa "} (28,1,1) = {" -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa "} diff --git a/_maps/shuttles/whiteship_pubby.dmm b/_maps/shuttles/whiteship_pubby.dmm index 1ea9db3063..3ef386e265 100644 --- a/_maps/shuttles/whiteship_pubby.dmm +++ b/_maps/shuttles/whiteship_pubby.dmm @@ -94,7 +94,6 @@ name = "White Ship"; port_direction = 4; preferred_direction = 1; - roundstart_move = "whiteship_away"; timid = 1; width = 9 }, diff --git a/_maps/templates/medium_shuttle1.dmm b/_maps/templates/medium_shuttle1.dmm index 80833ada8d..ec158f3b4c 100644 --- a/_maps/templates/medium_shuttle1.dmm +++ b/_maps/templates/medium_shuttle1.dmm @@ -20,7 +20,7 @@ "d" = ( /turf/closed/wall/mineral/plastitanium, /area/ruin/powered/shuttle/medium_1) -"g" = ( +"f" = ( /turf/closed/wall/mineral/titanium, /area/ruin/powered/shuttle/medium_1) "h" = ( @@ -96,7 +96,7 @@ a a i h -g +f h i a @@ -111,11 +111,11 @@ a a a a -g +f n n n -g +f a a a @@ -127,13 +127,13 @@ a a a i -g -g +f +f o -g +f o -g -g +f +f i a a @@ -143,15 +143,15 @@ a b b b -g +f j -g +f n n n -g +f j -g +f w w w @@ -160,7 +160,7 @@ w c c c -g +f j k n @@ -168,7 +168,7 @@ t n k j -g +f c c c @@ -176,41 +176,41 @@ c (6,1,1) = {" d d -g -g +f +f k -g -g -g -g -g +f +f +f +f +f k -g -g +f +f d d "} (7,1,1) = {" d d -g +f j j -g +f j j j -g +f j j -g +f d d "} (8,1,1) = {" d d -g +f j j k @@ -220,41 +220,41 @@ j k j j -g +f d d "} (9,1,1) = {" d d -g +f j j -g +f j j j -g +f j j -g +f d a "} (10,1,1) = {" a d -g -g -g -g +f +f +f +f k -g +f k -g -g -g -g +f +f +f +f a a "} @@ -280,13 +280,13 @@ a a h j -g +f j j u j j -g +f j h a @@ -296,15 +296,15 @@ a a a i -g -g -g +f +f +f k -g +f k -g -g -g +f +f +f i a a @@ -314,13 +314,13 @@ a a a a -g +f l p u j j -g +f a a a @@ -331,13 +331,13 @@ a a a a -g +f m p u j j -g +f a a a @@ -348,13 +348,13 @@ a a a a -g -g +f +f k -g +f k -g -g +f +f a a a @@ -365,13 +365,13 @@ a a a a -g +f j j -g +f j j -g +f a a a @@ -382,13 +382,13 @@ a a a a -g +f j j -g +f j j -g +f a a a @@ -400,11 +400,11 @@ a a a i -g +f k -g +f k -g +f i a a @@ -417,11 +417,11 @@ a a a a -g +f q q q -g +f a a a @@ -434,11 +434,11 @@ a a a a -g +f q v q -g +f a a a @@ -451,11 +451,11 @@ a a a a -g +f r r r -g +f a a a diff --git a/_maps/templates/medium_shuttle2.dmm b/_maps/templates/medium_shuttle2.dmm index 3b46d40382..904c7da6d6 100644 --- a/_maps/templates/medium_shuttle2.dmm +++ b/_maps/templates/medium_shuttle2.dmm @@ -26,7 +26,7 @@ }, /turf/open/space, /area/ruin/powered/shuttle/medium_2) -"h" = ( +"g" = ( /turf/closed/wall/mineral/titanium, /area/ruin/powered/shuttle/medium_2) "i" = ( @@ -159,11 +159,11 @@ c c d d -h -h +g +g l -h -h +g +g d d c @@ -172,22 +172,22 @@ c (6,1,1) = {" d d -h -h -h +g +g +g r m r -h -h -h +g +g +g d d "} (7,1,1) = {" d d -h +g m m m @@ -195,74 +195,74 @@ m m m m -h +g d d "} (8,1,1) = {" d -h -h +g +g n -h +g B w B -h +g n -h -h +g +g d "} (9,1,1) = {" d -h +g k k -h -h +g +g B -h -h +g +g k k -h +g d "} (10,1,1) = {" d -h +g k k -h -h -h -h -h +g +g +g +g +g k k -h +g d "} (11,1,1) = {" a i -h +g n -h -h -h -h -h +g +g +g +g +g n -h +g i a "} (12,1,1) = {" a a -h +g k k n @@ -270,37 +270,37 @@ k n k k -h +g a a "} (13,1,1) = {" a a -h +g k k -h -h -h +g +g +g k k -h +g a a "} (14,1,1) = {" a a -h -h +g +g n -h -h -h +g +g +g n -h -h +g +g a a "} @@ -310,9 +310,9 @@ a l k k -h -h -h +g +g +g k k l @@ -323,13 +323,13 @@ a a a i -h +g n -h -h -h +g +g +g n -h +g i a a @@ -338,13 +338,13 @@ a a a a -h +g k k k k k -h +g a a a @@ -353,13 +353,13 @@ a a a a -h +g n -h -h -h +g +g +g n -h +g a a a @@ -368,13 +368,13 @@ a a a a -h +g o s x k k -h +g a a a @@ -383,13 +383,13 @@ a a a a -h +g o t x k k -h +g a a a @@ -398,13 +398,13 @@ a a a a -h +g n -h -h -h +g +g +g n -h +g a a a @@ -413,13 +413,13 @@ a a a a -h +g k k x k k -h +g a a a @@ -428,13 +428,13 @@ a a a a -h +g k k x k k -h +g a a a @@ -443,13 +443,13 @@ a a a a -h +g n -h -h -h +g +g +g n -h +g a a a @@ -458,13 +458,13 @@ a a a a -h +g p p y p p -h +g a a a @@ -473,13 +473,13 @@ a a a a -h +g p u u u p -h +g a a a @@ -489,11 +489,11 @@ a a a i -h +g v v v -h +g i a a diff --git a/_maps/templates/medium_shuttle4.dmm b/_maps/templates/medium_shuttle4.dmm index 1464f0961d..4595f8704a 100644 --- a/_maps/templates/medium_shuttle4.dmm +++ b/_maps/templates/medium_shuttle4.dmm @@ -54,27 +54,6 @@ }, /turf/open/floor/oldshuttle, /area/ruin/powered/shuttle/medium_4) -"m" = ( -/turf/closed/indestructible/oldshuttle/corner{ - dir = 8 - }, -/area/ruin/powered/shuttle/medium_4) -"n" = ( -/turf/closed/indestructible/oldshuttle/corner, -/area/ruin/powered/shuttle/medium_4) -"o" = ( -/turf/closed/indestructible/oldshuttle/corner{ - dir = 1 - }, -/area/ruin/powered/shuttle/medium_4) -"p" = ( -/turf/closed/indestructible/oldshuttle/corner{ - dir = 4 - }, -/area/ruin/powered/shuttle/medium_4) -"q" = ( -/turf/closed/indestructible/oldshuttle/corner, -/area/ruin/powered/shuttle/medium_4) "r" = ( /obj/machinery/power/generator, /turf/open/floor/oldshuttle, @@ -162,7 +141,7 @@ g g g g -m +b d k u @@ -178,8 +157,8 @@ c g g g -m -o +b +f a a a @@ -199,7 +178,7 @@ c c c c -p +h a "} (7,1,1) = {" @@ -217,7 +196,7 @@ i c s c -p +h "} (8,1,1) = {" b @@ -233,7 +212,7 @@ l l c g -n +e c "} (9,1,1) = {" @@ -247,7 +226,7 @@ l l l l -m +b c g g @@ -281,7 +260,7 @@ l l l l -n +e c g g @@ -301,7 +280,7 @@ l l c g -m +b c "} (13,1,1) = {" @@ -319,7 +298,7 @@ i c s c -o +f "} (14,1,1) = {" a @@ -335,7 +314,7 @@ c c c c -o +f a "} (15,1,1) = {" @@ -348,8 +327,8 @@ c g g g -n -p +e +h a a a @@ -366,7 +345,7 @@ g g g g -n +e d k t @@ -417,7 +396,7 @@ a a a a -q +e c k v diff --git a/_maps/templates/pirate_ship.dmm b/_maps/templates/pirate_ship.dmm index a97be6e9bd..b64db30d78 100644 --- a/_maps/templates/pirate_ship.dmm +++ b/_maps/templates/pirate_ship.dmm @@ -213,7 +213,7 @@ /turf/open/floor/plasteel/dark, /area/shuttle/pirate) "aD" = ( -/obj/structure/sign/bluecross_2, +/obj/structure/sign/departments/medbay/alt, /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/shuttle/pirate) "aE" = ( @@ -542,11 +542,7 @@ /turf/open/floor/plasteel, /area/shuttle/pirate) "bt" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_x = -32 }, /obj/machinery/light/small{ @@ -641,11 +637,7 @@ /turf/open/floor/plasteel, /area/shuttle/pirate) "bE" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_x = 32 }, /obj/machinery/light/small{ @@ -672,7 +664,6 @@ name = "Pirate Ship"; port_direction = 8; preferred_direction = 1; - roundstart_move = "pirateship_home"; width = 23 }, /obj/docking_port/stationary{ @@ -1310,7 +1301,7 @@ /turf/open/floor/plasteel/bar, /area/shuttle/pirate) "cS" = ( -/obj/structure/sign/engineering{ +/obj/structure/sign/departments/engineering{ pixel_x = 32 }, /obj/machinery/light/small{ @@ -1379,7 +1370,7 @@ /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/shuttle/pirate) "cY" = ( -/obj/structure/sign/engineering{ +/obj/structure/sign/departments/engineering{ pixel_x = -32 }, /obj/machinery/light/small{ @@ -1462,7 +1453,7 @@ dir = 4 }, /obj/effect/decal/cleanable/dirt, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = 32 }, /turf/open/floor/plasteel, @@ -1707,7 +1698,7 @@ /turf/open/floor/plating/airless, /area/shuttle/pirate) "dJ" = ( -/obj/structure/sign/fire, +/obj/structure/sign/warning/fire, /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/shuttle/pirate) "dK" = ( @@ -1753,11 +1744,7 @@ frequency = 1441; id = "inc_in" }, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = -32 }, /turf/open/floor/engine/vacuum, @@ -1789,7 +1776,7 @@ /turf/open/floor/engine/vacuum, /area/shuttle/pirate) "dT" = ( -/obj/structure/sign/fire, +/obj/structure/sign/warning/fire, /turf/closed/wall/mineral/plastitanium, /area/shuttle/pirate) "dU" = ( diff --git a/_maps/templates/shelter_2.dmm b/_maps/templates/shelter_2.dmm index 69e7369af7..9db2f54656 100644 --- a/_maps/templates/shelter_2.dmm +++ b/_maps/templates/shelter_2.dmm @@ -8,9 +8,6 @@ }, /turf/closed/wall/mineral/titanium/survival/pod, /area/survivalpod) -"c" = ( -/turf/closed/wall/mineral/titanium/survival, -/area/survivalpod) "d" = ( /obj/structure/sign/mining/survival{ dir = 8 diff --git a/_maps/templates/small_shuttle_1.dmm b/_maps/templates/small_shuttle_1.dmm index 901d67d6d6..03789ef847 100644 --- a/_maps/templates/small_shuttle_1.dmm +++ b/_maps/templates/small_shuttle_1.dmm @@ -12,9 +12,6 @@ "d" = ( /turf/closed/wall/mineral/titanium, /area/space) -"e" = ( -/turf/closed/wall/mineral/titanium, -/area/space) "f" = ( /turf/open/floor/mineral/titanium/blue, /area/space) @@ -24,19 +21,10 @@ }, /turf/open/floor/mineral/titanium/blue, /area/space) -"h" = ( -/turf/closed/wall/mineral/titanium, -/area/space) -"i" = ( -/turf/closed/wall/mineral/titanium, -/area/space) "j" = ( /obj/machinery/door/unpowered/shuttle, /turf/open/floor/mineral/titanium/blue, /area/space) -"k" = ( -/turf/closed/wall/mineral/titanium, -/area/space) "l" = ( /obj/structure/chair{ dir = 4 @@ -53,9 +41,6 @@ /obj/structure/shuttle/engine/heater, /turf/open/floor/plating/airless, /area/space) -"o" = ( -/turf/closed/wall/mineral/titanium, -/area/space) "p" = ( /obj/structure/shuttle/engine/propulsion/left, /turf/open/floor/plating/airless, @@ -68,28 +53,25 @@ /obj/structure/shuttle/engine/propulsion/right, /turf/open/floor/plating/airless, /area/space) -"s" = ( -/turf/closed/wall/mineral/titanium, -/area/space) (1,1,1) = {" a a a b -e -e +d +d j j -e -e +d +d b "} (2,1,1) = {" b -e -e -e +d +d +d l l f @@ -102,7 +84,7 @@ p c f f -e +d f f f @@ -128,7 +110,7 @@ q c f f -e +d f f f @@ -139,9 +121,9 @@ q "} (6,1,1) = {" b -e -e -e +d +d +d m m f @@ -155,11 +137,11 @@ a a a b -e -e +d +d j j -e -e +d +d b "} diff --git a/code/__DATASTRUCTURES/linked_lists.dm b/code/__DATASTRUCTURES/linked_lists.dm deleted file mode 100644 index 1d2e8d78a6..0000000000 --- a/code/__DATASTRUCTURES/linked_lists.dm +++ /dev/null @@ -1,191 +0,0 @@ - -//Ok so it's technically a double linked list, bite me. - -/datum/linked_list - var/datum/linked_node/head - var/datum/linked_node/tail - var/node_amt = 0 - - -/datum/linked_node - var/value = null - var/datum/linked_list/linked_list = null - var/datum/linked_node/next_node = null - var/datum/linked_node/previous_node = null - - -/datum/linked_list/proc/IsEmpty() - . = (node_amt <= 0) - - -//Add a linked_node (or value, creating a linked_node) at position -//the added node BECOMES the position-th element, -//eg: add("Test",5), the 5th node is now "Test", the previous 5th moves up to become the 6th -/datum/linked_list/proc/Add(node, position) - var/datum/linked_node/adding - if(istype(node, /datum/linked_node)) - adding = node - else - adding = new() - adding.value = node - - if(!adding.linked_list || (adding.linked_list && (adding.linked_list != src))) - node_amt++ - - adding.linked_list = src - - if(position && position < node_amt) - //Replacing head - if(position == 1) - if(head) - head.previous_node = adding - adding.next_node = head - head = adding - - //Replacing any middle node - else - var/location = 0 - var/datum/linked_node/at - while((location != position) && (location <= node_amt)) - if(at) - if(at.next_node) - at = at.next_node - else - break - else - at = head - location++ - - //Push at up and assume it's place as the position-th element - if(at && at.previous_node) - at.previous_node.next_node = adding - adding.previous_node = at.previous_node - at.previous_node = adding - adding.next_node = at - return - - //Replacing tail - if(tail) - tail.next_node = adding - adding.previous_node = tail - if(!tail.previous_node) - head = tail - tail = adding - - - -//Remove a linked_node or the linked_node of a value -//If you specify a value the FIRST ONE is removed -/datum/linked_list/proc/Remove(node) - var/datum/linked_node/removing - if(istype(node, /datum/linked_node)) - removing = node - else - //optimise removing head and tail, no point looping for them, especially the tail - if(removing == head) - removing = head - else if(removing == tail) - removing = tail - else - var/location = 1 - var/current_value = null - var/datum/linked_node/at = null - while((current_value != node) && (location <= node_amt)) - if(at) - if(at.next_node) - at = at.next_node - else - at = head - location++ - if(at) - current_value = at.value - if(current_value == node) - removing = at - break - - //Adjust pointers of where removing -was- in the chain. - if(removing) - if(removing.previous_node) - if(removing == tail) - tail = removing.previous_node - if(removing.next_node) - if(removing == head) - head = removing.next_node - removing.next_node.previous_node = removing.previous_node - removing.previous_node.next_node = removing.next_node - else - removing.previous_node.next_node = null - else - if(removing.next_node) - if(removing == head) - head = removing.next_node - removing.next_node.previous_node = null - - //if this is still true at this point, there's no more nodes to replace them with - if(removing == head) - head = null - if(removing == tail) - tail = null - - removing.next_node = null - removing.previous_node = null - if(removing.linked_list == src) - node_amt-- - removing.linked_list = null - - return removing - return 0 - - -//Removes and deletes a node or value -/datum/linked_list/proc/RemoveDelete(node) - var/datum/linked_node/dead = Remove(node) - if(dead) - qdel(dead) - return 1 - return 0 - - -//Empty the linked_list, deleting all nodes -/datum/linked_list/proc/Empty() - var/datum/linked_node/n = head - while(n) - var/next = n.next_node - Remove(n) - qdel(n) - n = next - node_amt = 0 - - -//Some debugging tools -/datum/linked_list/proc/CheckNodeLinks() - var/datum/linked_node/n = head - while(n) - . = "|[n.value]|" - if(n.previous_node) - . = "[n.previous_node.value]<-" + . - if(n.next_node) - . += "->[n.next_node.value]" - n = n.next_node - . += "
" - - -/datum/linked_list/proc/DrawNodeLinks() - . = "|<-" - var/datum/linked_node/n = head - while(n) - if(n.previous_node) - . += "<-" - . += "[n.value]" - if(n.next_node) - . += "->" - n = n.next_node - . += "->|" - - -/datum/linked_list/proc/ToList() - . = list() - var/datum/linked_node/n = head - while(n) - . += n - n = n.next_node \ No newline at end of file diff --git a/code/__DATASTRUCTURES/priority_queue.dm b/code/__DATASTRUCTURES/priority_queue.dm deleted file mode 100644 index 8689a19f4e..0000000000 --- a/code/__DATASTRUCTURES/priority_queue.dm +++ /dev/null @@ -1,83 +0,0 @@ - -////////////////////// -//PriorityQueue object -////////////////////// - -//an ordered list, using the cmp proc to weight the list elements -/PriorityQueue - var/list/L //the actual queue - var/cmp //the weight function used to order the queue - -/PriorityQueue/New(compare) - L = new() - cmp = compare - -/PriorityQueue/proc/IsEmpty() - return !L.len - -//return the index the element should be in the priority queue using dichotomic search -/PriorityQueue/proc/FindElementIndex(atom/A) - var/i = 1 - var/j = L.len - var/mid - - while(i < j) - mid = round((i+j)/2) - - if(call(cmp)(L[mid],A) < 0) - i = mid + 1 - else - j = mid - - if(i == 1 || i == L.len) //edge cases - return (call(cmp)(L[i],A) > 0) ? i : i+1 - else - return i - - -//add an element in the list, -//immediatly ordering it to its position using dichotomic search -/PriorityQueue/proc/Enqueue(atom/A) - if(!L.len) - L.Add(A) - return - - L.Insert(FindElementIndex(A),A) - -//removes and returns the first element in the queue -/PriorityQueue/proc/Dequeue() - if(!L.len) - return 0 - . = L[1] - - Remove(.) - -//removes an element -/PriorityQueue/proc/Remove(atom/A) - return L.Remove(A) - -//returns a copy of the elements list -/PriorityQueue/proc/List() - . = L.Copy() - -//return the position of an element or 0 if not found -/PriorityQueue/proc/Seek(atom/A) - . = L.Find(A) - -//return the element at the i_th position -/PriorityQueue/proc/Get(i) - if(i > L.len || i < 1) - return 0 - return L[i] - -//replace the passed element at it's right position using the cmp proc -/PriorityQueue/proc/ReSort(atom/A) - var/i = Seek(A) - if(i == 0) - return - while(i < L.len && call(cmp)(L[i],L[i+1]) > 0) - L.Swap(i,i+1) - i++ - while(i > 1 && call(cmp)(L[i],L[i-1]) <= 0) //last inserted element being first in case of ties (optimization) - L.Swap(i,i-1) - i-- \ No newline at end of file diff --git a/code/__DATASTRUCTURES/stacks.dm b/code/__DATASTRUCTURES/stacks.dm deleted file mode 100644 index b310a3b940..0000000000 --- a/code/__DATASTRUCTURES/stacks.dm +++ /dev/null @@ -1,56 +0,0 @@ -/datum/stack - var/list/stack = list() - var/max_elements = 0 - -/datum/stack/New(list/elements,max) - ..() - if(elements) - stack = elements.Copy() - if(max) - max_elements = max - -/datum/stack/proc/Pop() - if(is_empty()) - return null - . = stack[stack.len] - stack.Cut(stack.len,0) - -/datum/stack/proc/Push(element) - if(max_elements && (stack.len+1 > max_elements)) - return null - stack += element - -/datum/stack/proc/Top() - if(is_empty()) - return null - . = stack[stack.len] - -/datum/stack/proc/is_empty() - . = stack.len ? 0 : 1 - -//Rotate entire stack left with the leftmost looping around to the right -/datum/stack/proc/RotateLeft() - if(is_empty()) - return 0 - . = stack[1] - stack.Cut(1,2) - Push(.) - -//Rotate entire stack to the right with the rightmost looping around to the left -/datum/stack/proc/RotateRight() - if(is_empty()) - return 0 - . = stack[stack.len] - stack.Cut(stack.len,0) - stack.Insert(1,.) - - -/datum/stack/proc/Copy() - var/datum/stack/S=new() - S.stack = stack.Copy() - S.max_elements = max_elements - return S - - -/datum/stack/proc/Clear() - stack.Cut() diff --git a/code/__DEFINES/DNA.dm b/code/__DEFINES/DNA.dm index 253e9f5888..87552e5841 100644 --- a/code/__DEFINES/DNA.dm +++ b/code/__DEFINES/DNA.dm @@ -123,6 +123,7 @@ #define SPECIES_INORGANIC 32 #define SPECIES_UNDEAD 33 #define SPECIES_ROBOTIC 34 +#define NOEYES 35 #define ORGAN_SLOT_BRAIN "brain" #define ORGAN_SLOT_APPENDIX "appendix" diff --git a/code/__DATASTRUCTURES/globals.dm b/code/__DEFINES/_globals.dm similarity index 97% rename from code/__DATASTRUCTURES/globals.dm rename to code/__DEFINES/_globals.dm index c7aa865573..7e7aa3158f 100644 --- a/code/__DATASTRUCTURES/globals.dm +++ b/code/__DEFINES/_globals.dm @@ -1,38 +1,38 @@ -//See controllers/globals.dm -#define GLOBAL_MANAGED(X, InitValue)\ -/datum/controller/global_vars/proc/InitGlobal##X(){\ - ##X = ##InitValue;\ - gvars_datum_init_order += #X;\ -} -#define GLOBAL_UNMANAGED(X) /datum/controller/global_vars/proc/InitGlobal##X() { return; } - -#ifndef TESTING -#define GLOBAL_PROTECT(X)\ -/datum/controller/global_vars/InitGlobal##X(){\ - ..();\ - gvars_datum_protected_varlist[#X] = TRUE;\ -} -#else -#define GLOBAL_PROTECT(X) -#endif - -#define GLOBAL_REAL_VAR(X) var/global/##X -#define GLOBAL_REAL(X, Typepath) var/global##Typepath/##X - -#define GLOBAL_RAW(X) /datum/controller/global_vars/var/global##X - -#define GLOBAL_VAR_INIT(X, InitValue) GLOBAL_RAW(/##X); GLOBAL_MANAGED(X, InitValue) - -#define GLOBAL_VAR_CONST(X, InitValue) GLOBAL_RAW(/const/##X) = InitValue; GLOBAL_UNMANAGED(X) - -#define GLOBAL_LIST_INIT(X, InitValue) GLOBAL_RAW(/list/##X); GLOBAL_MANAGED(X, InitValue) - -#define GLOBAL_LIST_EMPTY(X) GLOBAL_LIST_INIT(X, list()) - -#define GLOBAL_DATUM_INIT(X, Typepath, InitValue) GLOBAL_RAW(Typepath/##X); GLOBAL_MANAGED(X, InitValue) - -#define GLOBAL_VAR(X) GLOBAL_RAW(/##X); GLOBAL_UNMANAGED(X) - -#define GLOBAL_LIST(X) GLOBAL_RAW(/list/##X); GLOBAL_UNMANAGED(X) - -#define GLOBAL_DATUM(X, Typepath) GLOBAL_RAW(Typepath/##X); GLOBAL_UNMANAGED(X) +//See controllers/globals.dm +#define GLOBAL_MANAGED(X, InitValue)\ +/datum/controller/global_vars/proc/InitGlobal##X(){\ + ##X = ##InitValue;\ + gvars_datum_init_order += #X;\ +} +#define GLOBAL_UNMANAGED(X) /datum/controller/global_vars/proc/InitGlobal##X() { return; } + +#ifndef TESTING +#define GLOBAL_PROTECT(X)\ +/datum/controller/global_vars/InitGlobal##X(){\ + ..();\ + gvars_datum_protected_varlist[#X] = TRUE;\ +} +#else +#define GLOBAL_PROTECT(X) +#endif + +#define GLOBAL_REAL_VAR(X) var/global/##X +#define GLOBAL_REAL(X, Typepath) var/global##Typepath/##X + +#define GLOBAL_RAW(X) /datum/controller/global_vars/var/global##X + +#define GLOBAL_VAR_INIT(X, InitValue) GLOBAL_RAW(/##X); GLOBAL_MANAGED(X, InitValue) + +#define GLOBAL_VAR_CONST(X, InitValue) GLOBAL_RAW(/const/##X) = InitValue; GLOBAL_UNMANAGED(X) + +#define GLOBAL_LIST_INIT(X, InitValue) GLOBAL_RAW(/list/##X); GLOBAL_MANAGED(X, InitValue) + +#define GLOBAL_LIST_EMPTY(X) GLOBAL_LIST_INIT(X, list()) + +#define GLOBAL_DATUM_INIT(X, Typepath, InitValue) GLOBAL_RAW(Typepath/##X); GLOBAL_MANAGED(X, InitValue) + +#define GLOBAL_VAR(X) GLOBAL_RAW(/##X); GLOBAL_UNMANAGED(X) + +#define GLOBAL_LIST(X) GLOBAL_RAW(/list/##X); GLOBAL_UNMANAGED(X) + +#define GLOBAL_DATUM(X, Typepath) GLOBAL_RAW(Typepath/##X); GLOBAL_UNMANAGED(X) diff --git a/code/__DEFINES/admin.dm b/code/__DEFINES/admin.dm index 2c60abb325..62d4b94528 100644 --- a/code/__DEFINES/admin.dm +++ b/code/__DEFINES/admin.dm @@ -76,3 +76,8 @@ #define AHELP_ACTIVE 1 #define AHELP_CLOSED 2 #define AHELP_RESOLVED 3 + +#define ROUNDSTART_LOGOUT_REPORT_TIME 6000 //Amount of time (in deciseconds) after the rounds starts, that the player disconnect report is issued. + +#define SPAM_TRIGGER_WARNING 5 //Number of identical messages required before the spam-prevention will warn you to stfu +#define SPAM_TRIGGER_AUTOMUTE 10 //Number of identical messages required before the spam-prevention will automute you diff --git a/code/__DEFINES/antagonists.dm b/code/__DEFINES/antagonists.dm new file mode 100644 index 0000000000..c82404fd00 --- /dev/null +++ b/code/__DEFINES/antagonists.dm @@ -0,0 +1,14 @@ +#define NUKE_RESULT_FLUKE 0 +#define NUKE_RESULT_NUKE_WIN 1 +#define NUKE_RESULT_CREW_WIN 2 +#define NUKE_RESULT_CREW_WIN_SYNDIES_DEAD 3 +#define NUKE_RESULT_DISK_LOST 4 +#define NUKE_RESULT_DISK_STOLEN 5 +#define NUKE_RESULT_NOSURVIVORS 6 +#define NUKE_RESULT_WRONG_STATION 7 +#define NUKE_RESULT_WRONG_STATION_DEAD 8 + +#define APPRENTICE_DESTRUCTION "destruction" +#define APPRENTICE_BLUESPACE "bluespace" +#define APPRENTICE_ROBELESS "robeless" +#define APPRENTICE_HEALING "healing" \ No newline at end of file diff --git a/code/__DEFINES/combat.dm b/code/__DEFINES/combat.dm index 582074fcba..8e791cfffd 100644 --- a/code/__DEFINES/combat.dm +++ b/code/__DEFINES/combat.dm @@ -34,13 +34,7 @@ #define CANKNOCKDOWN 2 #define CANUNCONSCIOUS 4 #define CANPUSH 8 -#define IGNORESLOWDOWN 16 -#define GOTTAGOFAST 32 -#define GOTTAGOREALLYFAST 64 -#define GODMODE 4096 -#define FAKEDEATH 8192 //Replaces stuff like changeling.changeling_fakedeath -#define DISFIGURED 16384 //I'll probably move this elsewhere if I ever get wround to writing a bitflag mob-damage system -#define XENO_HOST 32768 //Tracks whether we're gonna be a baby alien's mummy. +#define GODMODE 16 //Health Defines #define HEALTH_THRESHOLD_CRIT 0 diff --git a/code/__DEFINES/is_helpers.dm b/code/__DEFINES/is_helpers.dm index addeca8739..8eff08691c 100644 --- a/code/__DEFINES/is_helpers.dm +++ b/code/__DEFINES/is_helpers.dm @@ -61,7 +61,9 @@ #define isplasmaman(A) (is_species(A, /datum/species/plasmaman)) #define ispodperson(A) (is_species(A, /datum/species/podperson)) #define isflyperson(A) (is_species(A, /datum/species/fly)) +#define isjellyperson(A) (is_species(A, /datum/species/jelly)) #define isslimeperson(A) (is_species(A, /datum/species/jelly/slime)) +#define isluminescent(A) (is_species(A, /datum/species/jelly/luminescent)) #define isshadowperson(A) (is_species(A, /datum/species/shadow)) #define iszombie(A) (is_species(A, /datum/species/zombie)) #define ishumanbasic(A) (is_species(A, /datum/species/human)) diff --git a/code/__DEFINES/maps.dm b/code/__DEFINES/maps.dm index 5306110b3b..6db07a1c7e 100644 --- a/code/__DEFINES/maps.dm +++ b/code/__DEFINES/maps.dm @@ -70,3 +70,9 @@ Last space-z level = empty DECLARE_LEVEL("Lavaland", UNAFFECTED, list(ZTRAIT_MINING = TRUE, ZTRAIT_LAVA_RUINS = TRUE, ZTRAIT_BOMBCAP_MULTIPLIER = 3)),\ DECLARE_LEVEL("Reebe", UNAFFECTED, list(ZTRAIT_REEBE = TRUE, ZTRAIT_BOMBCAP_MULTIPLIER = 0.5)),\ ) + +//Camera lock flags +#define CAMERA_LOCK_STATION 1 +#define CAMERA_LOCK_MINING 2 +#define CAMERA_LOCK_CENTCOM 4 +#define CAMERA_LOCK_REEBE 8 diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm index ddf5286305..1500bd1c48 100644 --- a/code/__DEFINES/misc.dm +++ b/code/__DEFINES/misc.dm @@ -50,18 +50,19 @@ Will print: "/mob/living/carbon/human/death" (you can optionally embed it in a s //Human Overlays Indexes///////// //LOTS OF CIT CHANGES HERE. BE CAREFUL WHEN UPSTREAM ADDS MORE LAYERS -#define MUTATIONS_LAYER 30 //mutations. Tk headglows, cold resistance glow, etc -#define GENITALS_BEHIND_LAYER 29 //Some genitalia needs to be behind everything, such as with taurs (Taurs use body_behind_layer -#define BODY_BEHIND_LAYER 28 //certain mutantrace features (tail when looking south) that must appear behind the body parts -#define BODYPARTS_LAYER 27 //Initially "AUGMENTS", this was repurposed to be a catch-all bodyparts flag -#define BODY_ADJ_LAYER 26 //certain mutantrace features (snout, body markings) that must appear above the body parts -#define GENITALS_ADJ_LAYER 25 -#define BODY_LAYER 24 //underwear, undershirts, socks, eyes, lips(makeup) -#define FRONT_MUTATIONS_LAYER 23 //mutations that should appear above body, body_adj and bodyparts layer (e.g. laser eyes) -#define DAMAGE_LAYER 22 //damage indicators (cuts and burns) -#define UNIFORM_LAYER 21 -#define ID_LAYER 20 -#define SHOES_LAYER 19 +#define MUTATIONS_LAYER 31 //mutations. Tk headglows, cold resistance glow, etc +#define GENITALS_BEHIND_LAYER 30 //Some genitalia needs to be behind everything, such as with taurs (Taurs use body_behind_layer +#define BODY_BEHIND_LAYER 29 //certain mutantrace features (tail when looking south) that must appear behind the body parts +#define BODYPARTS_LAYER 28 //Initially "AUGMENTS", this was repurposed to be a catch-all bodyparts flag +#define BODY_ADJ_LAYER 27 //certain mutantrace features (snout, body markings) that must appear above the body parts +#define GENITALS_ADJ_LAYER 26 +#define BODY_LAYER 25 //underwear, undershirts, socks, eyes, lips(makeup) +#define FRONT_MUTATIONS_LAYER 24 //mutations that should appear above body, body_adj and bodyparts layer (e.g. laser eyes) +#define DAMAGE_LAYER 23 //damage indicators (cuts and burns) +#define UNIFORM_LAYER 22 +#define ID_LAYER 21 +#define SHOES_LAYER 20 +#define HANDS_PART_LAYER 19 #define GLOVES_LAYER 18 #define EARS_LAYER 17 #define SUIT_LAYER 16 @@ -80,7 +81,7 @@ Will print: "/mob/living/carbon/human/death" (you can optionally embed it in a s #define HANDS_LAYER 3 #define BODY_FRONT_LAYER 2 #define FIRE_LAYER 1 //If you're on fire -#define TOTAL_LAYERS 30 //KEEP THIS UP-TO-DATE OR SHIT WILL BREAK ;_; +#define TOTAL_LAYERS 31 //KEEP THIS UP-TO-DATE OR SHIT WILL BREAK ;_; //Human Overlay Index Shortcuts for alternate_worn_layer, layers //Because I *KNOW* somebody will think layer+1 means "above" @@ -93,8 +94,9 @@ Will print: "/mob/living/carbon/human/death" (you can optionally embed it in a s #define UNDER_DAMAGE_LAYER DAMAGE_LAYER+1 #define UNDER_UNIFORM_LAYER UNIFORM_LAYER+1 #define UNDER_ID_LAYER ID_LAYER+1 -#define UNDER_SHOES_LAYER SHOES_LAYER+1 +#define UNDER_HANDS_PART_LAYER HANDS_PART_LAYER+1 #define UNDER_GLOVES_LAYER GLOVES_LAYER+1 +#define UNDER_SHOES_LAYER SHOES_LAYER+1 #define UNDER_EARS_LAYER EARS_LAYER+1 #define UNDER_SUIT_LAYER SUIT_LAYER+1 #define UNDER_GLASSES_LAYER GLASSES_LAYER+1 @@ -119,8 +121,9 @@ Will print: "/mob/living/carbon/human/death" (you can optionally embed it in a s #define ABOVE_DAMAGE_LAYER DAMAGE_LAYER-1 #define ABOVE_UNIFORM_LAYER UNIFORM_LAYER-1 #define ABOVE_ID_LAYER ID_LAYER-1 -#define ABOVE_SHOES_LAYER SHOES_LAYER-1 +#define ABOVE_HANDS_PART_LAYER HANDS_PART_LAYER-1 #define ABOVE_GLOVES_LAYER GLOVES_LAYER-1 +#define ABOVE_SHOES_LAYER SHOES_LAYER-1 #define ABOVE_EARS_LAYER EARS_LAYER-1 #define ABOVE_SUIT_LAYER SUIT_LAYER-1 #define ABOVE_GLASSES_LAYER GLASSES_LAYER-1 @@ -488,6 +491,12 @@ GLOBAL_LIST_INIT(ghost_others_options, list(GHOST_OTHERS_SIMPLE, GHOST_OTHERS_DE #define HOSTILE_SPAWN 1 #define FRIENDLY_SPAWN 2 +//slime core activation type +#define SLIME_ACTIVATE_MINOR 1 +#define SLIME_ACTIVATE_MAJOR 2 + +#define LUMINESCENT_DEFAULT_GLOW 2 + #define RIDING_OFFSET_ALL "ALL" //text files @@ -499,3 +508,10 @@ GLOBAL_LIST_INIT(ghost_others_options, list(GHOST_OTHERS_SIMPLE, GHOST_OTHERS_DE #define SUMMON_GUNS "guns" #define SUMMON_MAGIC "magic" + +//Run the world with this parameter to enable a single run though of the game setup and tear down process with unit tests in between +#define TEST_RUN_PARAMETER "test-run" +//Force the log directory to be something specific in the data/logs folder +#define OVERRIDE_LOG_DIRECTORY_PARAMETER "log-directory" +//Prevent the master controller from starting automatically, overrides TEST_RUN_PARAMETER +#define NO_INIT_PARAMETER "no-init" diff --git a/code/__DEFINES/mobs.dm b/code/__DEFINES/mobs.dm index 4bfb70a257..9142996693 100644 --- a/code/__DEFINES/mobs.dm +++ b/code/__DEFINES/mobs.dm @@ -188,4 +188,21 @@ #define OFFSET_BELT "belt" #define OFFSET_BACK "back" #define OFFSET_SUIT "suit" -#define OFFSET_NECK "neck" \ No newline at end of file +#define OFFSET_NECK "neck" + +//MINOR TWEAKS/MISC +#define AGE_MIN 17 //youngest a character can be +#define AGE_MAX 85 //oldest a character can be +#define WIZARD_AGE_MIN 30 //youngest a wizard can be +#define APPRENTICE_AGE_MIN 29 //youngest an apprentice can be +#define SHOES_SLOWDOWN 0 //How much shoes slow you down by default. Negative values speed you up +#define POCKET_STRIP_DELAY 40 //time taken (in deciseconds) to search somebody's pockets +#define DOOR_CRUSH_DAMAGE 15 //the amount of damage that airlocks deal when they crush you + +#define HUNGER_FACTOR 0.1 //factor at which mob nutrition decreases +#define REAGENTS_METABOLISM 0.4 //How many units of reagent are consumed per tick, by default. +#define REAGENTS_EFFECT_MULTIPLIER (REAGENTS_METABOLISM / 0.4) // By defining the effect multiplier this way, it'll exactly adjust all effects according to how they originally were with the 0.4 metabolism + +// AI Toggles +#define AI_CAMERA_LUMINOSITY 5 +#define AI_VOX // Comment out if you don't want VOX to be enabled and have players download the voice sounds. diff --git a/code/__DEFINES/obj_flags.dm b/code/__DEFINES/obj_flags.dm new file mode 100644 index 0000000000..ba326b7c91 --- /dev/null +++ b/code/__DEFINES/obj_flags.dm @@ -0,0 +1,19 @@ +// Flags for the obj_flags var on /obj + + +#define EMAGGED 1 +#define IN_USE 2 // If we have a user using us, this will be set on. We will check if the user has stopped using us, and thus stop updating and LAGGING EVERYTHING! +#define CAN_BE_HIT 4 //can this be bludgeoned by items? +#define BEING_SHOCKED 8 // Whether this thing is currently (already) being shocked by a tesla +#define DANGEROUS_POSSESSION 16 //Admin possession yes/no +#define ON_BLUEPRINTS 32 //Are we visible on the station blueprints at roundstart? +#define UNIQUE_RENAME 64 // can you customize the description/name of the thing? + +// If you add new ones, be sure to add them to /obj/Initialize as well for complete mapping support + +// Flags for the item_flags var on /obj/item + +#define BEING_REMOVED 1 +#define IN_INVENTORY 2 //is this item equipped into an inventory slot or hand of a mob? used for tooltips +#define FORCE_STRING_OVERRIDE 4 // used for tooltips +#define NEEDS_PERMIT 8 //Used by security bots to determine if this item is safe for public use. diff --git a/code/__DEFINES/say.dm b/code/__DEFINES/say.dm index 8f38acb203..c5708034fe 100644 --- a/code/__DEFINES/say.dm +++ b/code/__DEFINES/say.dm @@ -56,4 +56,10 @@ #define LINGHIVE_NONE 0 #define LINGHIVE_OUTSIDER 1 #define LINGHIVE_LING 2 -#define LINGHIVE_LINK 3 \ No newline at end of file +#define LINGHIVE_LINK 3 + +//Don't set this very much higher then 1024 unless you like inviting people in to dos your server with message spam +#define MAX_MESSAGE_LEN 1024 +#define MAX_NAME_LEN 42 +#define MAX_BROADCAST_LEN 512 +#define MAX_CHARTER_LEN 80 diff --git a/code/__DEFINES/stat.dm b/code/__DEFINES/stat.dm index 96dceb6db2..96c72bcab2 100644 --- a/code/__DEFINES/stat.dm +++ b/code/__DEFINES/stat.dm @@ -8,35 +8,6 @@ #define UNCONSCIOUS 2 #define DEAD 3 -//mob disabilities stat - -#define DISABILITY_BLIND "blind" -#define DISABILITY_MUTE "mute" -#define DISABILITY_DEAF "deaf" -#define DISABILITY_NEARSIGHT "nearsighted" -#define DISABILITY_FAT "fat" -#define DISABILITY_HUSK "husk" -#define DISABILITY_NOCLONE "noclone" -#define DISABILITY_CLUMSY "clumsy" -#define DISABILITY_DUMB "dumb" -#define DISABILITY_MONKEYLIKE "monkeylike" //sets IsAdvancedToolUser to FALSE -#define DISABILITY_PACIFISM "pacifism" - -// common disability sources -#define EYE_DAMAGE "eye_damage" -#define GENETIC_MUTATION "genetic" -#define OBESITY "obesity" -#define MAGIC_DISABILITY "magic" -#define STASIS_MUTE "stasis" -#define GENETICS_SPELL "genetics_spell" -#define TRAUMA_DISABILITY "trauma" -#define CHEMICAL_DISABILITY "chemical" - -// unique disability sources, still defines -#define STATUE_MUTE "statue" -#define CHANGELING_DRAIN "drain" -#define ABYSSAL_GAZE_BLIND "abyssal_gaze" - // bitflags for machine stat variable #define BROKEN 1 #define NOPOWER 2 diff --git a/code/__DEFINES/subsystems.dm b/code/__DEFINES/subsystems.dm index 6e223446fd..27cd86edd4 100644 --- a/code/__DEFINES/subsystems.dm +++ b/code/__DEFINES/subsystems.dm @@ -1,3 +1,7 @@ +//Update this whenever the db schema changes +//make sure you add an update to the schema_version stable in the db changelog +#define DB_MAJOR_VERSION 4 +#define DB_MINOR_VERSION 0 //Timing subsystem //Don't run if there is an identical unique timer active diff --git a/code/__DEFINES/time.dm b/code/__DEFINES/time.dm index 987d52e0cd..8bc4d039f6 100644 --- a/code/__DEFINES/time.dm +++ b/code/__DEFINES/time.dm @@ -22,6 +22,6 @@ When using time2text(), please use "DDD" to find the weekday. Refrain from using #define TICKS *world.tick_lag -#define DS2TICKS(DS) (DS/world.tick_lag) +#define DS2TICKS(DS) ((DS)/world.tick_lag) -#define TICKS2DS(T) (T TICKS) \ No newline at end of file +#define TICKS2DS(T) ((T) TICKS) \ No newline at end of file diff --git a/code/__DEFINES/tools.dm b/code/__DEFINES/tools.dm index 8b696032fa..e4eaf09347 100644 --- a/code/__DEFINES/tools.dm +++ b/code/__DEFINES/tools.dm @@ -1,6 +1,7 @@ -#define TOOL_NONE 0 -#define TOOL_CROWBAR 1 -#define TOOL_MULTITOOL 2 -#define TOOL_SCREWDRIVER 3 -#define TOOL_WIRECUTTER 4 -#define TOOL_WRENCH 5 \ No newline at end of file +// Tool types +#define TOOL_CROWBAR "crowbar" +#define TOOL_MULTITOOL "multitool" +#define TOOL_SCREWDRIVER "screwdriver" +#define TOOL_WIRECUTTER "wirecutter" +#define TOOL_WRENCH "wrench" +#define TOOL_WELDER "welder" diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm new file mode 100644 index 0000000000..3f9416ab96 --- /dev/null +++ b/code/__DEFINES/traits.dm @@ -0,0 +1,37 @@ +//mob traits +#define TRAIT_BLIND "blind" +#define TRAIT_MUTE "mute" +#define TRAIT_DEAF "deaf" +#define TRAIT_NEARSIGHT "nearsighted" +#define TRAIT_FAT "fat" +#define TRAIT_HUSK "husk" +#define TRAIT_NOCLONE "noclone" +#define TRAIT_CLUMSY "clumsy" +#define TRAIT_DUMB "dumb" +#define TRAIT_MONKEYLIKE "monkeylike" //sets IsAdvancedToolUser to FALSE +#define TRAIT_PACIFISM "pacifism" +#define TRAIT_IGNORESLOWDOWN "ignoreslow" +#define TRAIT_GOTTAGOFAST "fast" +#define TRAIT_GOTTAGOREALLYFAST "2fast" +#define TRAIT_FAKEDEATH "fakedeath" +#define TRAIT_DISFIGURED "disfigured" +#define TRAIT_XENO_HOST "xeno_host" //Tracks whether we're gonna be a baby alien's mummy. +#define TRAIT_STUNIMMUNE "stun_immunity" +#define TRAIT_PUSHIMMUNE "push_immunity" + +// common trait sources +#define TRAIT_GENERIC "generic" +#define EYE_DAMAGE "eye_damage" +#define GENETIC_MUTATION "genetic" +#define OBESITY "obesity" +#define MAGIC_TRAIT "magic" +#define STASIS_MUTE "stasis" +#define GENETICS_SPELL "genetics_spell" +#define TRAUMA_TRAIT "trauma" + +// unique trait sources, still defines +#define STATUE_MUTE "statue" +#define CHANGELING_DRAIN "drain" +#define ABYSSAL_GAZE_BLIND "abyssal_gaze" +#define HIGHLANDER "highlander" +#define TRAIT_HULK "hulk" \ No newline at end of file diff --git a/code/__DEFINES/vv.dm b/code/__DEFINES/vv.dm index 807e5187b0..0617c5d345 100644 --- a/code/__DEFINES/vv.dm +++ b/code/__DEFINES/vv.dm @@ -18,4 +18,4 @@ #define VV_NULL "NULL" #define VV_RESTORE_DEFAULT "Restore to Default" #define VV_MARKED_DATUM "Marked Datum" - +#define VV_BITFIELD "Bitfield" diff --git a/code/__HELPERS/_logging.dm b/code/__HELPERS/_logging.dm index 8b7cdc0c2e..18dd85fa5b 100644 --- a/code/__HELPERS/_logging.dm +++ b/code/__HELPERS/_logging.dm @@ -24,6 +24,12 @@ #define testing(msg) #endif +#ifdef UNIT_TESTS +/proc/log_test(text) + WRITE_FILE(GLOB.test_log, "\[[time_stamp()]]: [text]") + SEND_TEXT(world.log, text) +#endif + /proc/log_admin(text) GLOB.admin_log.Add(text) if (CONFIG_GET(flag/log_admin)) diff --git a/code/__HELPERS/game.dm b/code/__HELPERS/game.dm index 2d200438ef..462e5459a6 100644 --- a/code/__HELPERS/game.dm +++ b/code/__HELPERS/game.dm @@ -241,9 +241,6 @@ processing_list += A.contents /proc/get_mobs_in_radio_ranges(list/obj/item/device/radio/radios) - - set background = BACKGROUND_ENABLED - . = list() // Returns a list of mobs who can hear any of the radios given in @radios for(var/obj/item/device/radio/R in radios) diff --git a/code/__HELPERS/global_lists.dm b/code/__HELPERS/global_lists.dm index 0f7f4397db..fd83cc0658 100644 --- a/code/__HELPERS/global_lists.dm +++ b/code/__HELPERS/global_lists.dm @@ -29,7 +29,9 @@ init_sprite_accessory_subtypes(/datum/sprite_accessory/spines_animated, GLOB.animated_spines_list) init_sprite_accessory_subtypes(/datum/sprite_accessory/legs, GLOB.legs_list) init_sprite_accessory_subtypes(/datum/sprite_accessory/wings, GLOB.r_wings_list,roundstart = TRUE) - + //moffs + init_sprite_accessory_subtypes(/datum/sprite_accessory/moth_wings, GLOB.moth_wings_list) + //CIT CHANGES START HERE, ADDS SNOWFLAKE BODYPARTS AND MORE //mammal bodyparts (fucking furries) init_sprite_accessory_subtypes(/datum/sprite_accessory/mam_body_markings, GLOB.mam_body_markings_list) diff --git a/code/__DATASTRUCTURES/heap.dm b/code/__HELPERS/heap.dm similarity index 100% rename from code/__DATASTRUCTURES/heap.dm rename to code/__HELPERS/heap.dm diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm index 9d01999847..b2bb939b11 100644 --- a/code/__HELPERS/mobs.dm +++ b/code/__HELPERS/mobs.dm @@ -32,7 +32,7 @@ else return pick(GLOB.underwear_list)*/ -/proc/random_undershirt(gender)//Cit change - makes random underwear always return nude +/proc/random_undershirt(gender)//Cit change - makes random undershirts always return nude if(!GLOB.undershirt_list.len) init_sprite_accessory_subtypes(/datum/sprite_accessory/undershirt, GLOB.undershirt_list, GLOB.undershirt_m, GLOB.undershirt_f) return "Nude" @@ -44,7 +44,7 @@ else return pick(GLOB.undershirt_list)*/ -/proc/random_socks()//Cit change - makes random underwear always return nude +/proc/random_socks()//Cit change - makes random socks always return nude if(!GLOB.socks_list.len) init_sprite_accessory_subtypes(/datum/sprite_accessory/socks, GLOB.socks_list) return "Nude" @@ -71,6 +71,8 @@ init_sprite_accessory_subtypes(/datum/sprite_accessory/body_markings, GLOB.body_markings_list) if(!GLOB.wings_list.len) init_sprite_accessory_subtypes(/datum/sprite_accessory/wings, GLOB.wings_list) + if(!GLOB.moth_wings_list.len) + init_sprite_accessory_subtypes(/datum/sprite_accessory/moth_wings, GLOB.moth_wings_list) //CIT CHANGES - genitals and such if(!GLOB.cock_shapes_list.len) @@ -109,6 +111,7 @@ "spines" = pick(GLOB.spines_list), "body_markings" = pick(GLOB.body_markings_list), "legs" = "Normal Legs", + "moth_wings" = pick(GLOB.moth_wings_list), "taur" = "None", "mam_body_markings" = "None", "mam_ears" = "None", @@ -163,7 +166,6 @@ "womb_efficiency" = CUM_EFFICIENCY, "womb_fluid" = "femcum", "flavor_text" = "")) - /proc/random_hair_style(gender) switch(gender) if(MALE) @@ -183,27 +185,34 @@ return pick(GLOB.facial_hair_styles_list) /proc/random_unique_name(gender, attempts_to_find_unique_name=10) - for(var/i=1, i<=attempts_to_find_unique_name, i++) + for(var/i in 1 to attempts_to_find_unique_name) if(gender==FEMALE) . = capitalize(pick(GLOB.first_names_female)) + " " + capitalize(pick(GLOB.last_names)) else . = capitalize(pick(GLOB.first_names_male)) + " " + capitalize(pick(GLOB.last_names)) - if(i != attempts_to_find_unique_name && !findname(.)) + if(!findname(.)) break /proc/random_unique_lizard_name(gender, attempts_to_find_unique_name=10) - for(var/i=1, i<=attempts_to_find_unique_name, i++) + for(var/i in 1 to attempts_to_find_unique_name) . = capitalize(lizard_name(gender)) - if(i != attempts_to_find_unique_name && !findname(.)) + if(!findname(.)) break /proc/random_unique_plasmaman_name(attempts_to_find_unique_name=10) - for(var/i=1, i<=attempts_to_find_unique_name, i++) + for(var/i in 1 to attempts_to_find_unique_name) . = capitalize(plasmaman_name()) - if(i != attempts_to_find_unique_name && !findname(.)) + if(!findname(.)) + break + +/proc/random_unique_moth_name(attempts_to_find_unique_name=10) + for(var/i in 1 to attempts_to_find_unique_name) + . = capitalize(moth_name()) + + if(!findname(.)) break /proc/random_skin_tone() @@ -580,3 +589,24 @@ Proc for attack log creation, because really why not warning("Invalid speech logging type detected. [logtype]. Defaulting to say") log_say(logmessage) +//Used in chemical_mob_spawn. Generates a random mob based on a given gold_core_spawnable value. +/proc/create_random_mob(spawn_location, mob_class = HOSTILE_SPAWN) + var/static/list/mob_spawn_meancritters = list() // list of possible hostile mobs + var/static/list/mob_spawn_nicecritters = list() // and possible friendly mobs + + if(mob_spawn_meancritters.len <= 0 || mob_spawn_nicecritters.len <= 0) + for(var/T in typesof(/mob/living/simple_animal)) + var/mob/living/simple_animal/SA = T + switch(initial(SA.gold_core_spawnable)) + if(HOSTILE_SPAWN) + mob_spawn_meancritters += T + if(FRIENDLY_SPAWN) + mob_spawn_nicecritters += T + + var/chosen + if(mob_class == FRIENDLY_SPAWN) + chosen = pick(mob_spawn_nicecritters) + else + chosen = pick(mob_spawn_meancritters) + var/mob/living/simple_animal/C = new chosen(spawn_location) + return C diff --git a/code/__HELPERS/names.dm b/code/__HELPERS/names.dm index e019af213f..8fbb5d805b 100644 --- a/code/__HELPERS/names.dm +++ b/code/__HELPERS/names.dm @@ -9,6 +9,9 @@ /proc/plasmaman_name() return "[pick(GLOB.plasmaman_names)] \Roman[rand(1,99)]" +/proc/moth_name() + return "[pick(GLOB.moth_names)]" + /proc/church_name() var/static/church_name if (church_name) diff --git a/code/__HELPERS/roundend.dm b/code/__HELPERS/roundend.dm index bd18ce239f..ee575f686f 100644 --- a/code/__HELPERS/roundend.dm +++ b/code/__HELPERS/roundend.dm @@ -391,6 +391,7 @@ if(X.get_team() == T) all_antagonists -= X result += " "//newline between teams + CHECK_TICK var/currrent_category var/datum/antagonist/previous_category @@ -410,6 +411,7 @@ previous_category = A result += A.roundend_report() result += "

" + CHECK_TICK if(all_antagonists.len) var/datum/antagonist/last = all_antagonists[all_antagonists.len] diff --git a/code/__HELPERS/sorts/InsertSort.dm b/code/__HELPERS/sorts/InsertSort.dm index 23e0dc8876..962709527e 100644 --- a/code/__HELPERS/sorts/InsertSort.dm +++ b/code/__HELPERS/sorts/InsertSort.dm @@ -8,9 +8,12 @@ if(toIndex <= 0) toIndex += L.len + 1 - GLOB.sortInstance.L = L - GLOB.sortInstance.cmp = cmp - GLOB.sortInstance.associative = associative + var/datum/sortInstance/SI = GLOB.sortInstance + if(!SI) + SI = new + SI.L = L + SI.cmp = cmp + SI.associative = associative - GLOB.sortInstance.binarySort(fromIndex, toIndex, fromIndex) + SI.binarySort(fromIndex, toIndex, fromIndex) return L \ No newline at end of file diff --git a/code/__HELPERS/sorts/MergeSort.dm b/code/__HELPERS/sorts/MergeSort.dm index cc47123b3c..39d3799725 100644 --- a/code/__HELPERS/sorts/MergeSort.dm +++ b/code/__HELPERS/sorts/MergeSort.dm @@ -8,9 +8,12 @@ if(toIndex <= 0) toIndex += L.len + 1 - GLOB.sortInstance.L = L - GLOB.sortInstance.cmp = cmp - GLOB.sortInstance.associative = associative - GLOB.sortInstance.mergeSort(fromIndex, toIndex) + var/datum/sortInstance/SI = GLOB.sortInstance + if(!SI) + SI = new + SI.L = L + SI.cmp = cmp + SI.associative = associative + SI.mergeSort(fromIndex, toIndex) return L \ No newline at end of file diff --git a/code/__HELPERS/sorts/TimSort.dm b/code/__HELPERS/sorts/TimSort.dm index 8cfb792672..d709044dc0 100644 --- a/code/__HELPERS/sorts/TimSort.dm +++ b/code/__HELPERS/sorts/TimSort.dm @@ -8,10 +8,13 @@ if(toIndex <= 0) toIndex += L.len + 1 - GLOB.sortInstance.L = L - GLOB.sortInstance.cmp = cmp - GLOB.sortInstance.associative = associative + var/datum/sortInstance/SI = GLOB.sortInstance + if(!SI) + SI = new - GLOB.sortInstance.timSort(fromIndex, toIndex) + SI.L = L + SI.cmp = cmp + SI.associative = associative + SI.timSort(fromIndex, toIndex) return L \ No newline at end of file diff --git a/code/__HELPERS/type2type.dm b/code/__HELPERS/type2type.dm index 372dc64cab..59f9a82309 100644 --- a/code/__HELPERS/type2type.dm +++ b/code/__HELPERS/type2type.dm @@ -65,6 +65,7 @@ return . //Splits the text of a file at seperator and returns them in a list. +//returns an empty list if the file doesn't exist /world/proc/file2list(filename, seperator="\n", trim = TRUE) if (trim) return splittext(trim(file2text(filename)),seperator) @@ -589,4 +590,4 @@ for(var/i = 1 to length(str)/2) c= hex2num(copytext(str,i*2-1,i*2+1)) r+= ascii2text(c) - return r \ No newline at end of file + return r diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index aaabbef74b..598fb8b7a2 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -1511,7 +1511,7 @@ GLOBAL_DATUM_INIT(dview_mob, /mob/dview, new) usr = M . = CB.Invoke() usr = temp - + //Returns a list of all servants of Ratvar and observers. /proc/servants_and_ghosts() . = list() diff --git a/code/_globalvars/lists/flavor_misc.dm b/code/_globalvars/lists/flavor_misc.dm index 7acb5bf729..ebf86ed666 100644 --- a/code/_globalvars/lists/flavor_misc.dm +++ b/code/_globalvars/lists/flavor_misc.dm @@ -34,6 +34,7 @@ GLOBAL_LIST_EMPTY(ears_list) GLOBAL_LIST_EMPTY(wings_list) GLOBAL_LIST_EMPTY(wings_open_list) GLOBAL_LIST_EMPTY(r_wings_list) +GLOBAL_LIST_EMPTY(moth_wings_list) GLOBAL_LIST_INIT(ghost_forms_with_directions_list, list("ghost")) //stores the ghost forms that support directional sprites GLOBAL_LIST_INIT(ghost_forms_with_accessories_list, list("ghost")) //stores the ghost forms that support hair and other such things diff --git a/code/_globalvars/lists/names.dm b/code/_globalvars/lists/names.dm index ad5e18d3f7..eaaa2c1755 100644 --- a/code/_globalvars/lists/names.dm +++ b/code/_globalvars/lists/names.dm @@ -13,6 +13,7 @@ GLOBAL_LIST_INIT(clown_names, world.file2list("strings/names/clown.txt")) GLOBAL_LIST_INIT(mime_names, world.file2list("strings/names/mime.txt")) GLOBAL_LIST_INIT(carp_names, world.file2list("strings/names/carp.txt")) GLOBAL_LIST_INIT(golem_names, world.file2list("strings/names/golem.txt")) +GLOBAL_LIST_INIT(moth_names, world.file2list("strings/names/moth.txt")) GLOBAL_LIST_INIT(plasmaman_names, world.file2list("strings/names/plasmaman.txt")) GLOBAL_LIST_INIT(posibrain_names, world.file2list("strings/names/posibrain.txt")) GLOBAL_LIST_INIT(nightmare_names, world.file2list("strings/names/nightmare.txt")) diff --git a/code/_globalvars/misc.dm b/code/_globalvars/misc.dm index 8b8b817586..807ec5c5fe 100644 --- a/code/_globalvars/misc.dm +++ b/code/_globalvars/misc.dm @@ -17,4 +17,10 @@ GLOBAL_LIST_EMPTY(powernets) GLOBAL_VAR_INIT(bsa_unlock, FALSE) //BSA unlocked by head ID swipes -GLOBAL_LIST_EMPTY(player_details) // ckey -> /datum/player_details \ No newline at end of file +GLOBAL_LIST_EMPTY(player_details) // ckey -> /datum/player_details + +GLOBAL_LIST_INIT(bitfields, list( + "obj_flags" = list("EMAGGED" = EMAGGED, "IN_USE" = IN_USE, "CAN_BE_HIT" = CAN_BE_HIT, "BEING_SHOCKED" = BEING_SHOCKED, "DANGEROUS_POSSESSION" = DANGEROUS_POSSESSION, "ON_BLUEPRINTS" = ON_BLUEPRINTS, "UNIQUE_RENAME" = UNIQUE_RENAME), + "datum_flags" = list("DF_USE_TAG" = DF_USE_TAG, "DF_VAR_EDITED" = DF_VAR_EDITED), + "item_flags" = list("BEING_REMOVED" = BEING_REMOVED, "IN_INVENTORY" = IN_INVENTORY, "FORCE_STRING_OVERRIDE" = FORCE_STRING_OVERRIDE, "NEEDS_PERMIT" = NEEDS_PERMIT) + )) diff --git a/code/_onclick/ai.dm b/code/_onclick/ai.dm index e97f4d5426..ac03465773 100644 --- a/code/_onclick/ai.dm +++ b/code/_onclick/ai.dm @@ -130,16 +130,16 @@ /* Airlocks */ /obj/machinery/door/airlock/AICtrlClick() // Bolts doors - if(emagged) + if(obj_flags & EMAGGED) return - + if(locked) bolt_raise(usr) else bolt_drop(usr) /obj/machinery/door/airlock/AIAltClick() // Eletrifies doors. - if(emagged) + if(obj_flags & EMAGGED) return if(!secondsElectrified) @@ -148,15 +148,15 @@ shock_restore(usr) /obj/machinery/door/airlock/AIShiftClick() // Opens and closes doors! - if(emagged) + if(obj_flags & EMAGGED) return user_toggle_open(usr) /obj/machinery/door/airlock/AICtrlShiftClick() // Sets/Unsets Emergency Access Override - if(emagged) + if(obj_flags & EMAGGED) return - + if(!emergency) emergency_on(usr) else diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index 8a5b9ba519..3368960da4 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -1,6 +1,6 @@ /obj/item/proc/melee_attack_chain(mob/user, atom/target, params) - if(!tool_check(user, target) && pre_attackby(target, user, params)) + if(!tool_attack_chain(user, target) && pre_attackby(target, user, params)) // Return 1 in attackby() to prevent afterattack() effects (when safely moving items for example) var/resolved = target.attackby(src, user, params) if(!resolved && target && !QDELETED(src)) @@ -8,20 +8,11 @@ //Checks if the item can work as a tool, calling the appropriate tool behavior on the target -/obj/item/proc/tool_check(mob/user, atom/target) - switch(tool_behaviour) - if(TOOL_NONE) - return FALSE - if(TOOL_CROWBAR) - return target.crowbar_act(user, src) - if(TOOL_MULTITOOL) - return target.multitool_act(user, src) - if(TOOL_SCREWDRIVER) - return target.screwdriver_act(user, src) - if(TOOL_WRENCH) - return target.wrench_act(user, src) - if(TOOL_WIRECUTTER) - return target.wirecutter_act(user, src) +/obj/item/proc/tool_attack_chain(mob/user, atom/target) + if(!tool_behaviour) + return FALSE + + return target.tool_act(user, src, tool_behaviour) // Called when the item is in the active hand, and clicked; alternately, there is an 'activate held object' verb or you can hit pagedown. @@ -39,7 +30,7 @@ return FALSE /obj/attackby(obj/item/I, mob/living/user, params) - return ..() || (can_be_hit && I.attack_obj(src, user)) + return ..() || ((obj_flags & CAN_BE_HIT) && I.attack_obj(src, user)) /mob/living/attackby(obj/item/I, mob/living/user, params) user.changeNext_move(CLICK_CD_MELEE) @@ -59,10 +50,10 @@ if(flags_1 & NOBLUDGEON_1) return - if(force && user.has_disability(DISABILITY_PACIFISM)) + if(force && user.has_trait(TRAIT_PACIFISM)) to_chat(user, "You don't want to harm other living beings!") return - + if(!force) playsound(loc, 'sound/weapons/tap.ogg', get_clamped_volume(), 1, -1) else if(hitsound) diff --git a/code/citadel/cit_guns.dm b/code/citadel/cit_guns.dm index 8f113494cb..c5338fe9d3 100644 --- a/code/citadel/cit_guns.dm +++ b/code/citadel/cit_guns.dm @@ -182,7 +182,7 @@ icon = 'icons/obj/guns/cit_guns.dmi' icon_state = "toy9" can_suppress = 0 - needs_permit = 0 + obj_flags = 0 mag_type = /obj/item/ammo_box/magazine/toy/x9 casing_ejector = 0 spread = 90 //MAXIMUM XCOM MEMES (actually that'd be 180 spread) @@ -489,7 +489,7 @@ name = "foamag rifle" desc = "A foam launching magnetic rifle. Ages 8 and up." icon_state = "foamagrifle" - needs_permit = FALSE + obj_flags = 0 mag_type = /obj/item/ammo_box/magazine/toy/foamag casing_ejector = FALSE spread = 60 @@ -617,7 +617,7 @@ icon = 'icons/obj/guns/cit_guns.dmi' icon_state = "toyburst" clumsy_check = FALSE - needs_permit = FALSE + obj_flags = 0 fire_delay = 40 weapon_weight = WEAPON_HEAVY selfcharge = TRUE @@ -772,7 +772,7 @@ obj/item/projectile/bullet/c10mm/soporific caliber = "flechette" throwforce = 2 throw_speed = 3 - embed_chance = 75 + embedding = list("embedded_pain_multiplier" = 0, "embed_chance" = 40, "embedded_fall_chance" = 10) ///magazine/// @@ -858,7 +858,7 @@ obj/item/projectile/bullet/c10mm/soporific icon = 'icons/obj/guns/cit_guns.dmi' icon_state = "cde" can_unsuppress = TRUE - unique_rename = TRUE + obj_flags = UNIQUE_RENAME unique_reskin = list("Default" = "cde", "NT-99" = "n99", "Stealth" = "stealthpistol", @@ -1154,7 +1154,7 @@ obj/item/projectile/bullet/c10mm/soporific icon_state = "p37_foam" pin = /obj/item/device/firing_pin spawnwithmagazine = TRUE - needs_permit = FALSE + obj_flags = 0 mag_type = /obj/item/ammo_box/magazine/toy/pistol can_suppress = FALSE actions_types = list(/datum/action/item_action/pick_color) diff --git a/code/citadel/dogborgstuff.dm b/code/citadel/dogborgstuff.dm index 2713b19976..7780e779dc 100644 --- a/code/citadel/dogborgstuff.dm +++ b/code/citadel/dogborgstuff.dm @@ -31,32 +31,30 @@ /obj/item/dogborg/jaws/small/attack_self(mob/user) var/mob/living/silicon/robot.R = user if(R.emagged) - emagged = !emagged - if(emagged) - name = "combat jaws" - icon = 'icons/mob/dogborg.dmi' - icon_state = "jaws" - desc = "The jaws of the law." - flags_1 = CONDUCT_1 - force = 12 - throwforce = 0 - hitsound = 'sound/weapons/bite.ogg' - attack_verb = list("chomped", "bit", "ripped", "mauled", "enforced") - w_class = 3 - sharpness = IS_SHARP - else - name = "puppy jaws" - icon = 'icons/mob/dogborg.dmi' - icon_state = "smalljaws" - desc = "The jaws of a small dog." - flags_1 = CONDUCT_1 - force = 5 - throwforce = 0 - hitsound = 'sound/weapons/bite.ogg' - attack_verb = list("nibbled", "bit", "gnawed", "chomped", "nommed") - w_class = 3 - sharpness = IS_SHARP - update_icon() + name = "combat jaws" + icon = 'icons/mob/dogborg.dmi' + icon_state = "jaws" + desc = "The jaws of the law." + flags_1 = CONDUCT_1 + force = 12 + throwforce = 0 + hitsound = 'sound/weapons/bite.ogg' + attack_verb = list("chomped", "bit", "ripped", "mauled", "enforced") + w_class = 3 + sharpness = IS_SHARP + else + name = "puppy jaws" + icon = 'icons/mob/dogborg.dmi' + icon_state = "smalljaws" + desc = "The jaws of a small dog." + flags_1 = CONDUCT_1 + force = 5 + throwforce = 0 + hitsound = 'sound/weapons/bite.ogg' + attack_verb = list("nibbled", "bit", "gnawed", "chomped", "nommed") + w_class = 3 + sharpness = IS_SHARP + update_icon() //Cuffs @@ -189,107 +187,101 @@ /obj/item/soap/tongue/attack_self(mob/user) var/mob/living/silicon/robot.R = user if(R.emagged) - emagged = !emagged - if(emagged) - name = "hacked tongue of doom" - desc = "Your tongue has been upgraded successfully. Congratulations." - icon = 'icons/mob/dogborg.dmi' - icon_state = "syndietongue" - cleanspeed = 10 //(nerf'd)tator soap stat - else - name = "synthetic tongue" - desc = "Useful for slurping mess off the floor before affectionally licking the crew members in the face." - icon = 'icons/mob/dogborg.dmi' - icon_state = "synthtongue" - cleanspeed = initial(cleanspeed) - update_icon() + name = "hacked tongue of doom" + desc = "Your tongue has been upgraded successfully. Congratulations." + icon = 'icons/mob/dogborg.dmi' + icon_state = "syndietongue" + cleanspeed = 10 //(nerf'd)tator soap stat + else + name = "synthetic tongue" + desc = "Useful for slurping mess off the floor before affectionally licking the crew members in the face." + icon = 'icons/mob/dogborg.dmi' + icon_state = "synthtongue" + cleanspeed = initial(cleanspeed) + update_icon() /obj/item/soap/tongue/afterattack(atom/target, mob/user, proximity) + var/mob/living/silicon/robot.R = user if(!proximity || !check_allowed_items(target)) return - if(user.client && (target in user.client.screen)) - to_chat(user, "You need to take that [target.name] off before cleaning it!") + if(R.client && (target in R.client.screen)) + to_chat(R, "You need to take that [target.name] off before cleaning it!") else if(istype(target,/obj/effect/decal/cleanable)) - user.visible_message("[user] begins to lick off \the [target.name].", "You begin to lick off \the [target.name]...") - if(do_after(user, src.cleanspeed, target = target)) + R.visible_message("[R] begins to lick off \the [target.name].", "You begin to lick off \the [target.name]...") + if(do_after(R, src.cleanspeed, target = target)) if(!in_range(src, target)) //Proximity is probably old news by now, do a new check. return //If they moved away, you can't eat them. - to_chat(user, "You finish licking off \the [target.name].") + to_chat(R, "You finish licking off \the [target.name].") qdel(target) - var/mob/living/silicon/robot.R = user R.cell.give(50) else if(istype(target,/obj/item)) //hoo boy. danger zone man if(istype(target,/obj/item/trash)) - user.visible_message("[user] nibbles away at \the [target.name].", "You begin to nibble away at \the [target.name]...") - if(do_after(user, src.cleanspeed, target = target)) + R.visible_message("[R] nibbles away at \the [target.name].", "You begin to nibble away at \the [target.name]...") + if(do_after(R, src.cleanspeed, target = target)) if(!in_range(src, target)) //Proximity is probably old news by now, do a new check. return //If they moved away, you can't eat them. - to_chat(user, "You finish off \the [target.name].") + to_chat(R, "You finish off \the [target.name].") qdel(target) - var/mob/living/silicon/robot.R = user R.cell.give(250) return if(istype(target,/obj/item/stock_parts/cell)) - user.visible_message("[user] begins cramming \the [target.name] down its throat.", "You begin cramming \the [target.name] down your throat...") - if(do_after(user, 50, target = target)) + R.visible_message("[R] begins cramming \the [target.name] down its throat.", "You begin cramming \the [target.name] down your throat...") + if(do_after(R, 50, target = target)) if(!in_range(src, target)) //Proximity is probably old news by now, do a new check. return //If they moved away, you can't eat them. - to_chat(user, "You finish off \the [target.name].") - var/mob/living/silicon/robot.R = user + to_chat(R, "You finish off \the [target.name].") var/obj/item/stock_parts/cell.C = target R.cell.charge = R.cell.charge + (C.charge / 3) //Instant full cell upgrades op idgaf qdel(target) return var/obj/item/I = target //HAHA FUCK IT, NOT LIKE WE ALREADY HAVE A SHITTON OF WAYS TO REMOVE SHIT - if(!I.anchored && src.emagged) - user.visible_message("[user] begins chewing up \the [target.name]. Looks like it's trying to loophole around its diet restriction!", "You begin chewing up \the [target.name]...") - if(do_after(user, 100, target = I)) //Nerf dat time yo + if(!I.anchored && R.emagged) + R.visible_message("[R] begins chewing up \the [target.name]. Looks like it's trying to loophole around its diet restriction!", "You begin chewing up \the [target.name]...") + if(do_after(R, 100, target = I)) //Nerf dat time yo if(!in_range(src, target)) //Proximity is probably old news by now, do a new check. Even emags don't make you magically eat things at range. return //If they moved away, you can't eat them. - visible_message("[user] chews up \the [target.name] and cleans off the debris!") - to_chat(user, "You finish off \the [target.name].") + visible_message("[R] chews up \the [target.name] and cleans off the debris!") + to_chat(R, "You finish off \the [target.name].") qdel(I) - var/mob/living/silicon/robot.R = user R.cell.give(500) return - user.visible_message("[user] begins to lick \the [target.name] clean...", "You begin to lick \the [target.name] clean...") - if(do_after(user, src.cleanspeed, target = target)) + R.visible_message("[R] begins to lick \the [target.name] clean...", "You begin to lick \the [target.name] clean...") + if(do_after(R, src.cleanspeed, target = target)) if(!in_range(src, target)) //Proximity is probably old news by now, do a new check. return //If they moved away, you can't clean them. - to_chat(user,"You clean \the [target.name].") + to_chat(R,"You clean \the [target.name].") var/obj/effect/decal/cleanable/C = locate() in target qdel(C) SendSignal(COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) else if(ishuman(target)) - if(src.emagged) - var/mob/living/silicon/robot.R = user + if(R.emagged) var/mob/living/L = target if(R.cell.charge <= 666) return L.Stun(4) // normal stunbaton is force 7 gimme a break good sir! L.Knockdown(80) L.apply_effect(STUTTER, 4) - L.visible_message("[user] has shocked [L] with its tongue!", \ - "[user] has shocked you with its tongue! You can feel the betrayal.") + L.visible_message("[R] has shocked [L] with its tongue!", \ + "[R] has shocked you with its tongue! You can feel the betrayal.") playsound(loc, 'sound/weapons/Egloves.ogg', 50, 1, -1) R.cell.use(666) else - user.visible_message("\the [user] affectionally licks \the [target]'s face!", "You affectionally lick \the [target]'s face!") + R.visible_message("\the [R] affectionally licks \the [target]'s face!", "You affectionally lick \the [target]'s face!") playsound(src.loc, 'sound/effects/attackblob.ogg', 50, 1) return else if(istype(target, /obj/structure/window)) - user.visible_message("[user] begins to lick \the [target.name] clean...", "You begin to lick \the [target.name] clean...") - if(do_after(user, src.cleanspeed, target = target)) + R.visible_message("[R] begins to lick \the [target.name] clean...", "You begin to lick \the [target.name] clean...") + if(do_after(R, src.cleanspeed, target = target)) if(!in_range(src, target)) //Proximity is probably old news by now, do a new check. return //If they moved away, you can't clean them. - to_chat(user, "You clean \the [target.name].") + to_chat(R, "You clean \the [target.name].") target.color = initial(target.color) else - user.visible_message("[user] begins to lick \the [target.name] clean...", "You begin to lick \the [target.name] clean...") - if(do_after(user, src.cleanspeed, target = target)) + R.visible_message("[R] begins to lick \the [target.name] clean...", "You begin to lick \the [target.name] clean...") + if(do_after(R, src.cleanspeed, target = target)) if(!in_range(src, target)) //Proximity is probably old news by now, do a new check. return //If they moved away, you can't clean them. - to_chat(user, "You clean \the [target.name].") + to_chat(R, "You clean \the [target.name].") var/obj/effect/decal/cleanable/C = locate() in target qdel(C) SendSignal(COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) diff --git a/code/citadel/organs/genitals.dm b/code/citadel/organs/genitals.dm index 79784a1eb8..ebdd400828 100644 --- a/code/citadel/organs/genitals.dm +++ b/code/citadel/organs/genitals.dm @@ -260,7 +260,7 @@ for(var/L in relevant_layers) //Less hardcode H.remove_overlay(L) - if(H.has_disability(DISABILITY_HUSK)) + if(H.has_trait(TRAIT_HUSK)) return //start scanning for genitals //var/list/worn_stuff = H.get_equipped_items()//cache this list so it's not built again diff --git a/code/controllers/master.dm b/code/controllers/master.dm index 57c2323c42..7d61ae2a92 100644 --- a/code/controllers/master.dm +++ b/code/controllers/master.dm @@ -49,6 +49,7 @@ GLOBAL_REAL(Master, /datum/controller/master) = new var/map_loading = FALSE //Are we loading in a new map? var/current_runlevel //for scheduling different subsystems for different stages of the round + var/sleep_offline_after_initializations = TRUE var/static/restart_clear = 0 var/static/restart_timeout = 0 @@ -65,7 +66,7 @@ GLOBAL_REAL(Master, /datum/controller/master) = new // Highlander-style: there can only be one! Kill off the old and replace it with the new. if(!random_seed) - random_seed = rand(1, 1e9) + random_seed = (TEST_RUN_PARAMETER in world.params) ? 29051994 : rand(1, 1e9) rand_seed(random_seed) var/list/_subsystems = list() @@ -197,11 +198,12 @@ GLOBAL_REAL(Master, /datum/controller/master) = new // Sort subsystems by display setting for easy access. sortTim(subsystems, /proc/cmp_subsystem_display) // Set world options. - world.sleep_offline = TRUE + if(sleep_offline_after_initializations) + world.sleep_offline = TRUE world.fps = CONFIG_GET(number/fps) var/initialized_tod = REALTIMEOFDAY sleep(1) - if(CONFIG_GET(flag/resume_after_initializations)) + if(sleep_offline_after_initializations && CONFIG_GET(flag/resume_after_initializations)) world.sleep_offline = FALSE initializations_finished_with_no_players_logged_in = initialized_tod < REALTIMEOFDAY - 10 // Loop. diff --git a/code/controllers/subsystem/augury.dm b/code/controllers/subsystem/augury.dm index 38e9724b5f..875f1ee7d3 100644 --- a/code/controllers/subsystem/augury.dm +++ b/code/controllers/subsystem/augury.dm @@ -76,7 +76,7 @@ SUBSYSTEM_DEF(augury) active = FALSE UpdateButtonIcon() -/datum/action/innate/augury/UpdateButtonIcon(status_only = FALSE) +/datum/action/innate/augury/UpdateButtonIcon(status_only = FALSE, force) ..() if(active) button.icon_state = "template_active" diff --git a/code/controllers/subsystem/garbage.dm b/code/controllers/subsystem/garbage.dm index 4faf234ffd..e83d05a28d 100644 --- a/code/controllers/subsystem/garbage.dm +++ b/code/controllers/subsystem/garbage.dm @@ -332,7 +332,6 @@ SUBSYSTEM_DEF(garbage) /datum/verb/find_refs() set category = "Debug" set name = "Find References" - set background = 1 set src in world find_references(FALSE) @@ -385,7 +384,6 @@ SUBSYSTEM_DEF(garbage) /datum/verb/qdel_then_find_references() set category = "Debug" set name = "qdel() then Find References" - set background = 1 set src in world qdel(src) diff --git a/code/controllers/subsystem/idlenpcpool.dm b/code/controllers/subsystem/idlenpcpool.dm index a15237e5a7..1e895d56f3 100644 --- a/code/controllers/subsystem/idlenpcpool.dm +++ b/code/controllers/subsystem/idlenpcpool.dm @@ -1,6 +1,6 @@ SUBSYSTEM_DEF(idlenpcpool) name = "Idling NPC Pool" - flags = SS_POST_FIRE_TIMING|SS_BACKGROUND + flags = SS_POST_FIRE_TIMING|SS_BACKGROUND|SS_NO_INIT priority = FIRE_PRIORITY_IDLE_NPC wait = 60 runlevels = RUNLEVEL_GAME | RUNLEVEL_POSTGAME @@ -13,9 +13,12 @@ SUBSYSTEM_DEF(idlenpcpool) var/list/zlist = GLOB.simple_animals[AI_Z_OFF] ..("IdleNPCS:[idlelist.len]|Z:[zlist.len]") -/datum/controller/subsystem/idlenpcpool/Initialize(start_timeofday) - idle_mobs_by_zlevel = new /list(world.maxz,0) - return ..() +/datum/controller/subsystem/idlenpcpool/proc/MaxZChanged() + if (!islist(idle_mobs_by_zlevel)) + idle_mobs_by_zlevel = new /list(world.maxz,0) + while (SSidlenpcpool.idle_mobs_by_zlevel.len < world.maxz) + SSidlenpcpool.idle_mobs_by_zlevel.len++ + SSidlenpcpool.idle_mobs_by_zlevel[idle_mobs_by_zlevel.len] = list() /datum/controller/subsystem/idlenpcpool/fire(resumed = FALSE) diff --git a/code/controllers/subsystem/input.dm b/code/controllers/subsystem/input.dm index 136501373e..8a17ad07d1 100644 --- a/code/controllers/subsystem/input.dm +++ b/code/controllers/subsystem/input.dm @@ -61,7 +61,7 @@ SUBSYSTEM_DEF(input) "North", "East", "South", "West", "Northeast", "Southeast", "Northwest", "Southwest", "Insert", "Delete", "Ctrl", "Alt", - "F1", "F2", "F5", "F6", "F7", "F8", "F12", + "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "F10", "F11", "F12", ) for(var/i in 1 to oldmode_keys.len) diff --git a/code/controllers/subsystem/mobs.dm b/code/controllers/subsystem/mobs.dm index 14ad19e1ea..cd47adf476 100644 --- a/code/controllers/subsystem/mobs.dm +++ b/code/controllers/subsystem/mobs.dm @@ -1,7 +1,7 @@ SUBSYSTEM_DEF(mobs) name = "Mobs" priority = FIRE_PRIORITY_MOBS - flags = SS_KEEP_TIMING + flags = SS_KEEP_TIMING | SS_NO_INIT runlevels = RUNLEVEL_GAME | RUNLEVEL_POSTGAME var/list/currentrun = list() @@ -10,9 +10,12 @@ SUBSYSTEM_DEF(mobs) /datum/controller/subsystem/mobs/stat_entry() ..("P:[GLOB.mob_living_list.len]") -/datum/controller/subsystem/mobs/Initialize(start_timeofday) - clients_by_zlevel = new /list(world.maxz,0) - return ..() +/datum/controller/subsystem/mobs/proc/MaxZChanged() + if (!islist(clients_by_zlevel)) + clients_by_zlevel = new /list(world.maxz,0) + while (clients_by_zlevel.len < world.maxz) + clients_by_zlevel.len++ + clients_by_zlevel[clients_by_zlevel.len] = list() /datum/controller/subsystem/mobs/fire(resumed = 0) var/seconds = wait * 0.1 diff --git a/code/controllers/subsystem/shuttle.dm b/code/controllers/subsystem/shuttle.dm index bdf124cc4e..bff46717b1 100644 --- a/code/controllers/subsystem/shuttle.dm +++ b/code/controllers/subsystem/shuttle.dm @@ -8,6 +8,8 @@ SUBSYSTEM_DEF(shuttle) flags = SS_KEEP_TIMING|SS_NO_TICK_CHECK runlevels = RUNLEVEL_SETUP | RUNLEVEL_GAME + var/obj/machinery/shuttle_manipulator/manipulator + var/list/mobile = list() var/list/stationary = list() var/list/transit = list() @@ -53,19 +55,10 @@ SUBSYSTEM_DEF(shuttle) var/list/shuttle_purchase_requirements_met = list() //For keeping track of ingame events that would unlock new shuttles, such as defeating a boss or discovering a secret item var/lockdown = FALSE //disallow transit after nuke goes off - + var/auto_call = 99000 //CIT CHANGE - time before in deciseconds in which the shuttle is auto called. Default is 2½ hours plus 15 for the shuttle. So total is 3. /datum/controller/subsystem/shuttle/Initialize(timeofday) - if(!arrivals) - WARNING("No /obj/docking_port/mobile/arrivals placed on the map!") - if(!emergency) - WARNING("No /obj/docking_port/mobile/emergency placed on the map!") - if(!backup_shuttle) - WARNING("No /obj/docking_port/mobile/emergency/backup placed on the map!") - if(!supply) - WARNING("No /obj/docking_port/mobile/supply placed on the map!") - ordernum = rand(1, 9000) for(var/pack in subtypesof(/datum/supply_pack)) @@ -76,12 +69,32 @@ SUBSYSTEM_DEF(shuttle) if(!transit_turfs.len) setup_transit_zone() - initial_move() + + initial_load() + #ifdef HIGHLIGHT_DYNAMIC_TRANSIT color_space() #endif + + if(!arrivals) + WARNING("No /obj/docking_port/mobile/arrivals placed on the map!") + if(!emergency) + WARNING("No /obj/docking_port/mobile/emergency placed on the map!") + if(!backup_shuttle) + WARNING("No /obj/docking_port/mobile/emergency/backup placed on the map!") + if(!supply) + WARNING("No /obj/docking_port/mobile/supply placed on the map!") ..() +/datum/controller/subsystem/shuttle/proc/initial_load() + if(!istype(manipulator)) + CRASH("No shuttle manipulator found.") + + for(var/s in stationary) + var/obj/docking_port/stationary/S = s + S.load_roundstart() + CHECK_TICK + /datum/controller/subsystem/shuttle/proc/setup_transit_zone() // transit zone var/z = SSmapping.transit.z_value @@ -436,14 +449,6 @@ SUBSYSTEM_DEF(shuttle) if(!(M in transit_requesters)) transit_requesters += M - -/datum/controller/subsystem/shuttle/proc/autoEnd() //CIT CHANGE - allows shift to end after 3 hours has passed. - if(world.time > auto_call && EMERGENCY_IDLE_OR_RECALLED) //3 hours - SSshuttle.emergency.request(null, 1.5) - priority_announce("The shift has come to an end and the shuttle called.") - log_game("Round time limit reached. Shuttle has been auto-called.") - message_admins("Round time limit reached. Shuttle called.") - /datum/controller/subsystem/shuttle/proc/generate_transit_dock(obj/docking_port/mobile/M) // First, determine the size of the needed zone // Because of shuttle rotation, the "width" of the shuttle is not @@ -558,15 +563,7 @@ SUBSYSTEM_DEF(shuttle) T.flags_1 &= ~(UNUSED_TRANSIT_TURF_1) M.assigned_transit = new_transit_dock - return TRUE - -/datum/controller/subsystem/shuttle/proc/initial_move() - for(var/obj/docking_port/mobile/M in mobile) - if(!M.roundstart_move) - continue - M.dockRoundstart() - M.roundstart_move = FALSE - CHECK_TICK + return new_transit_dock /datum/controller/subsystem/shuttle/Recover() if (istype(SSshuttle.mobile)) diff --git a/code/controllers/subsystem/timer.dm b/code/controllers/subsystem/timer.dm index 6c48531cf9..fbe681d0d4 100644 --- a/code/controllers/subsystem/timer.dm +++ b/code/controllers/subsystem/timer.dm @@ -1,5 +1,6 @@ #define BUCKET_LEN (world.fps*1*60) //how many ticks should we keep in the bucket. (1 minutes worth) -#define BUCKET_POS(timer) (round((timer.timeToRun - SStimer.head_offset) / world.tick_lag) + 1) +#define BUCKET_POS(timer) ((round((timer.timeToRun - SStimer.head_offset) / world.tick_lag) % BUCKET_LEN) + 1) +#define TIMER_MAX (world.time + TICKS2DS(min(BUCKET_LEN-(SStimer.practical_offset-DS2TICKS(world.time - SStimer.head_offset))-1, BUCKET_LEN-1))) #define TIMER_ID_MAX (2**24) //max float with integer precision SUBSYSTEM_DEF(timer) @@ -9,11 +10,11 @@ SUBSYSTEM_DEF(timer) flags = SS_TICKER|SS_NO_INIT - var/list/datum/timedevent/processing = list() + var/list/datum/timedevent/second_queue = list() //awe, yes, you've had first queue, but what about second queue? var/list/hashes = list() var/head_offset = 0 //world.time of the first entry in the the bucket. - var/practical_offset = 0 //index of the first non-empty item in the bucket. + var/practical_offset = 1 //index of the first non-empty item in the bucket. var/bucket_resolution = 0 //world.tick_lag the bucket was designed for var/bucket_count = 0 //how many timers are in the buckets @@ -27,13 +28,19 @@ SUBSYSTEM_DEF(timer) var/static/last_invoke_warning = 0 var/static/bucket_auto_reset = TRUE +/datum/controller/subsystem/timer/PreInit() + bucket_list.len = BUCKET_LEN + head_offset = world.time + bucket_resolution = world.tick_lag + /datum/controller/subsystem/timer/stat_entry(msg) - ..("B:[bucket_count] P:[length(processing)] H:[length(hashes)] C:[length(clienttime_timers)]") + ..("B:[bucket_count] P:[length(second_queue)] H:[length(hashes)] C:[length(clienttime_timers)] S:[length(timer_id_dict)]") /datum/controller/subsystem/timer/fire(resumed = FALSE) var/lit = last_invoke_tick var/last_check = world.time - TIMER_NO_INVOKE_WARNING var/list/bucket_list = src.bucket_list + if(!bucket_count) last_invoke_tick = world.time @@ -60,50 +67,62 @@ SUBSYSTEM_DEF(timer) bucket_node = bucket_node.next anti_loop_check-- while(bucket_node && bucket_node != bucket_head && anti_loop_check) - log_world("Active timers in the processing queue:") - for(var/I in processing) + log_world("Active timers in the second_queue queue:") + for(var/I in second_queue) log_world(get_timer_debug_string(I)) - while(length(clienttime_timers)) - var/datum/timedevent/ctime_timer = clienttime_timers[clienttime_timers.len] - if (ctime_timer.timeToRun <= REALTIMEOFDAY) - --clienttime_timers.len - var/datum/callback/callBack = ctime_timer.callBack - ctime_timer.spent = REALTIMEOFDAY - callBack.InvokeAsync() - qdel(ctime_timer) - else - break //None of the rest are ready to run + var/next_clienttime_timer_index = 0 + var/len = length(clienttime_timers) + + for (next_clienttime_timer_index in 1 to len) if (MC_TICK_CHECK) - return + next_clienttime_timer_index-- + break + var/datum/timedevent/ctime_timer = clienttime_timers[next_clienttime_timer_index] + if (ctime_timer.timeToRun > REALTIMEOFDAY) + next_clienttime_timer_index-- + break + + var/datum/callback/callBack = ctime_timer.callBack + if (!callBack) + clienttime_timers.Cut(next_clienttime_timer_index,next_clienttime_timer_index+1) + CRASH("Invalid timer: [get_timer_debug_string(ctime_timer)] world.time: [world.time], head_offset: [head_offset], practical_offset: [practical_offset], REALTIMEOFDAY: [REALTIMEOFDAY]") + + ctime_timer.spent = REALTIMEOFDAY + callBack.InvokeAsync() + qdel(ctime_timer) + + + if (next_clienttime_timer_index) + clienttime_timers.Cut(1,next_clienttime_timer_index+1) + + if (MC_TICK_CHECK) + return var/static/list/spent = list() var/static/datum/timedevent/timer - var/static/datum/timedevent/head + if (practical_offset > BUCKET_LEN) + head_offset += TICKS2DS(BUCKET_LEN) + practical_offset = 1 + resumed = FALSE - if (practical_offset > BUCKET_LEN || (!resumed && length(bucket_list) != BUCKET_LEN || world.tick_lag != bucket_resolution)) - shift_buckets() + if ((length(bucket_list) != BUCKET_LEN) || (world.tick_lag != bucket_resolution)) + reset_buckets() bucket_list = src.bucket_list resumed = FALSE if (!resumed) timer = null - head = null - while (practical_offset <= BUCKET_LEN && head_offset + (practical_offset*world.tick_lag) <= world.time && !MC_TICK_CHECK) + while (practical_offset <= BUCKET_LEN && head_offset + (practical_offset*world.tick_lag) <= world.time) + var/datum/timedevent/head = bucket_list[practical_offset] if (!timer || !head || timer == head) head = bucket_list[practical_offset] - if (!head) - practical_offset++ - if (MC_TICK_CHECK) - break - continue timer = head - do + while (timer) var/datum/callback/callBack = timer.callBack if (!callBack) - qdel(timer) bucket_resolution = null //force bucket recreation CRASH("Invalid timer: [get_timer_debug_string(timer)] world.time: [world.time], head_offset: [head_offset], practical_offset: [practical_offset]") @@ -113,15 +132,68 @@ SUBSYSTEM_DEF(timer) callBack.InvokeAsync() last_invoke_tick = world.time - timer = timer.next - if (MC_TICK_CHECK) return - while (timer && timer != head) - timer = null + + timer = timer.next + if (timer == head) + break + + bucket_list[practical_offset++] = null - if (MC_TICK_CHECK) - return + + //we freed up a bucket, lets see if anything in second_queue needs to be shifted to that bucket. + var/i = 0 + var/L = length(second_queue) + for (i in 1 to L) + timer = second_queue[i] + if (timer.timeToRun >= TIMER_MAX) + i-- + break + + if (timer.timeToRun < head_offset) + bucket_resolution = null //force bucket recreation + CRASH("[i] Invalid timer state: Timer in long run queue with a time to run less then head_offset. [get_timer_debug_string(timer)] world.time: [world.time], head_offset: [head_offset], practical_offset: [practical_offset]") + + if (timer.callBack && !timer.spent) + timer.callBack.InvokeAsync() + spent += timer + bucket_count++ + else if(!QDELETED(timer)) + qdel(timer) + continue + + if (timer.timeToRun < head_offset + TICKS2DS(practical_offset)) + bucket_resolution = null //force bucket recreation + CRASH("[i] Invalid timer state: Timer in long run queue that would require a backtrack to transfer to short run queue. [get_timer_debug_string(timer)] world.time: [world.time], head_offset: [head_offset], practical_offset: [practical_offset]") + if (timer.callBack && !timer.spent) + timer.callBack.InvokeAsync() + spent += timer + bucket_count++ + else if(!QDELETED(timer)) + qdel(timer) + continue + + bucket_count++ + var/bucket_pos = max(1, BUCKET_POS(timer)) + + var/datum/timedevent/bucket_head = bucket_list[bucket_pos] + if (!bucket_head) + bucket_list[bucket_pos] = timer + timer.next = null + timer.prev = null + continue + + if (!bucket_head.prev) + bucket_head.prev = bucket_head + timer.next = bucket_head + timer.prev = bucket_head.prev + timer.next.prev = timer + timer.prev.next = timer + if (i) + second_queue.Cut(1, i+1) + + timer = null bucket_count -= length(spent) @@ -141,7 +213,7 @@ SUBSYSTEM_DEF(timer) if(!TE.callBack) . += ", NO CALLBACK" -/datum/controller/subsystem/timer/proc/shift_buckets() +/datum/controller/subsystem/timer/proc/reset_buckets() var/list/bucket_list = src.bucket_list var/list/alltimers = list() //collect the timers currently in the bucket @@ -162,7 +234,7 @@ SUBSYSTEM_DEF(timer) head_offset = world.time bucket_resolution = world.tick_lag - alltimers += processing + alltimers += second_queue if (!length(alltimers)) return @@ -173,22 +245,26 @@ SUBSYSTEM_DEF(timer) if (head.timeToRun < head_offset) head_offset = head.timeToRun - var/list/timers_to_remove = list() - - for (var/thing in alltimers) - var/datum/timedevent/timer = thing + var/new_bucket_count + var/i = 1 + for (i in 1 to length(alltimers)) + var/datum/timedevent/timer = alltimers[1] if (!timer) - timers_to_remove += timer continue var/bucket_pos = BUCKET_POS(timer) - if (bucket_pos > BUCKET_LEN) + if (timer.timeToRun >= TIMER_MAX) + i-- break - timers_to_remove += timer //remove it from the big list once we are done + if (!timer.callBack || timer.spent) + WARNING("Invalid timer: [get_timer_debug_string(timer)] world.time: [world.time], head_offset: [head_offset], practical_offset: [practical_offset]") + if (timer.callBack) + qdel(timer) continue - bucket_count++ + + new_bucket_count++ var/datum/timedevent/bucket_head = bucket_list[bucket_pos] if (!bucket_head) bucket_list[bucket_pos] = timer @@ -202,12 +278,14 @@ SUBSYSTEM_DEF(timer) timer.prev = bucket_head.prev timer.next.prev = timer timer.prev.next = timer - - processing = (alltimers - timers_to_remove) + if (i) + alltimers.Cut(1, i+1) + second_queue = alltimers + bucket_count = new_bucket_count /datum/controller/subsystem/timer/Recover() - processing |= SStimer.processing + second_queue |= SStimer.second_queue hashes |= SStimer.hashes timer_id_dict |= SStimer.timer_id_dict bucket_list |= SStimer.bucket_list @@ -224,9 +302,8 @@ SUBSYSTEM_DEF(timer) var/datum/timedevent/next var/datum/timedevent/prev - var/static/nextid = 1 - /datum/timedevent/New(datum/callback/callBack, timeToRun, flags, hash) + var/static/nextid = 1 id = TIMER_ID_NULL src.callBack = callBack src.timeToRun = timeToRun @@ -235,56 +312,69 @@ SUBSYSTEM_DEF(timer) if (flags & TIMER_UNIQUE) SStimer.hashes[hash] = src + if (flags & TIMER_STOPPABLE) - do - if (nextid >= TIMER_ID_MAX) - nextid = 1 - id = nextid++ - while(SStimer.timer_id_dict["timerid" + num2text(id, 8)]) - SStimer.timer_id_dict["timerid" + num2text(id, 8)] = src + id = num2text(nextid, 100) + if (nextid >= SHORT_REAL_LIMIT) + nextid += min(1, 2**round(nextid/SHORT_REAL_LIMIT)) + else + nextid++ + SStimer.timer_id_dict[id] = src - name = "Timer: " + num2text(id, 8) + ", TTR: [timeToRun], Flags: [jointext(bitfield2list(flags, list("TIMER_UNIQUE", "TIMER_OVERRIDE", "TIMER_CLIENT_TIME", "TIMER_STOPPABLE", "TIMER_NO_HASH_WAIT")), ", ")], callBack: [REF(callBack)], callBack.object: [callBack.object][REF(callBack.object)]([getcallingtype()]), callBack.delegate:[callBack.delegate]([callBack.arguments ? callBack.arguments.Join(", ") : ""])" + name = "Timer: [id] (\ref[src]), TTR: [timeToRun], Flags: [jointext(bitfield2list(flags, list("TIMER_UNIQUE", "TIMER_OVERRIDE", "TIMER_CLIENT_TIME", "TIMER_STOPPABLE", "TIMER_NO_HASH_WAIT")), ", ")], callBack: \ref[callBack], callBack.object: [callBack.object]\ref[callBack.object]([getcallingtype()]), callBack.delegate:[callBack.delegate]([callBack.arguments ? callBack.arguments.Join(", ") : ""])" - if (spent) - CRASH("HOLY JESUS. WHAT IS THAT? WHAT THE FUCK IS THAT?") + if ((timeToRun < world.time || timeToRun < SStimer.head_offset) && !(flags & TIMER_CLIENT_TIME)) + CRASH("Invalid timer state: Timer created that would require a backtrack to run (addtimer would never let this happen): [SStimer.get_timer_debug_string(src)]") if (callBack.object != GLOBAL_PROC) LAZYADD(callBack.object.active_timers, src) + + var/list/L + if (flags & TIMER_CLIENT_TIME) - //sorted insert - var/list/ctts = SStimer.clienttime_timers - var/cttl = length(ctts) + L = SStimer.clienttime_timers + else if (timeToRun >= TIMER_MAX) + L = SStimer.second_queue + + + if (L) + //binary search sorted insert + var/cttl = length(L) if(cttl) - var/datum/timedevent/Last = ctts[cttl] - if(Last.timeToRun >= timeToRun) - ctts += src - else - for(var/i in cttl to 1 step -1) - var/datum/timedevent/E = ctts[i] - if(E.timeToRun <= timeToRun) - ctts.Insert(i, src) - break + var/left = 1 + var/right = cttl + var/mid = (left+right) >> 1 //rounded divide by two for hedgehogs + + var/datum/timedevent/item + while (left < right) + item = L[mid] + if (item.timeToRun <= timeToRun) + left = mid+1 + else + right = mid + mid = (left+right) >> 1 + + item = L[mid] + mid = item.timeToRun > timeToRun ? mid : mid+1 + L.Insert(mid, src) + else - ctts += src + L += src return //get the list of buckets var/list/bucket_list = SStimer.bucket_list + //calculate our place in the bucket list var/bucket_pos = BUCKET_POS(src) - //we are too far aways from needing to run to be in the bucket list, shift_buckets() will handle us. - if (bucket_pos > length(bucket_list)) - SStimer.processing += src - return + //get the bucket for our tick var/datum/timedevent/bucket_head = bucket_list[bucket_pos] SStimer.bucket_count++ //empty bucket, we will just add ourselves if (!bucket_head) bucket_list[bucket_pos] = src - if (bucket_pos < SStimer.practical_offset) - SStimer.practical_offset = bucket_pos return //other wise, lets do a simplified linked list add. if (!bucket_head.prev) @@ -296,10 +386,9 @@ SUBSYSTEM_DEF(timer) /datum/timedevent/Destroy() ..() - if (flags & TIMER_UNIQUE) + if (flags & TIMER_UNIQUE && hash) SStimer.hashes -= hash - if (callBack && callBack.object && callBack.object != GLOBAL_PROC && callBack.object.active_timers) callBack.object.active_timers -= src UNSETEMPTY(callBack.object.active_timers) @@ -307,13 +396,33 @@ SUBSYSTEM_DEF(timer) callBack = null if (flags & TIMER_STOPPABLE) - SStimer.timer_id_dict -= "timerid" + num2text(id, 8) + SStimer.timer_id_dict -= id if (flags & TIMER_CLIENT_TIME) - SStimer.clienttime_timers -= src + if (!spent) + spent = world.time + SStimer.clienttime_timers -= src return QDEL_HINT_IWILLGC if (!spent) + spent = world.time + var/bucketpos = BUCKET_POS(src) + var/datum/timedevent/buckethead + var/list/bucket_list = SStimer.bucket_list + if (bucketpos > 0) + buckethead = bucket_list[bucketpos] + + if (buckethead == src) + bucket_list[bucketpos] = next + SStimer.bucket_count-- + else if (timeToRun < TIMER_MAX || next || prev) + SStimer.bucket_count-- + else + var/l = length(SStimer.second_queue) + SStimer.second_queue -= src + if (l == length(SStimer.second_queue)) + SStimer.bucket_count-- + if (prev == next && next) next.prev = null prev.next = null @@ -322,19 +431,6 @@ SUBSYSTEM_DEF(timer) prev.next = next if (next) next.prev = prev - - var/bucketpos = BUCKET_POS(src) - var/datum/timedevent/buckethead - var/list/bucket_list = SStimer.bucket_list - - if (bucketpos > 0 && bucketpos <= length(bucket_list)) - buckethead = bucket_list[bucketpos] - SStimer.bucket_count-- - else - SStimer.processing -= src - - if (buckethead == src) - bucket_list[bucketpos] = next else if (prev && prev.next == src) prev.next = next @@ -351,7 +447,7 @@ SUBSYSTEM_DEF(timer) else . = "[callBack.object.type]" -/proc/addtimer(datum/callback/callback, wait, flags) +/proc/addtimer(datum/callback/callback, wait = 0, flags = 0) if (!callback) CRASH("addtimer called without a callback") @@ -381,11 +477,10 @@ SUBSYSTEM_DEF(timer) var/datum/timedevent/hash_timer = SStimer.hashes[hash] if(hash_timer) if (hash_timer.spent) //it's pending deletion, pretend it doesn't exist. - hash_timer.hash = null - SStimer.hashes -= hash + hash_timer.hash = null //but keep it from accidentally deleting us else - if (flags & TIMER_OVERRIDE) + hash_timer.hash = null //no need having it delete it's hash if we are going to replace it qdel(hash_timer) else if (hash_timer.flags & TIMER_STOPPABLE) @@ -410,7 +505,7 @@ SUBSYSTEM_DEF(timer) qdel(id) return TRUE //id is string - var/datum/timedevent/timer = SStimer.timer_id_dict["timerid[id]"] + var/datum/timedevent/timer = SStimer.timer_id_dict[id] if (timer && !timer.spent) qdel(timer) return TRUE @@ -419,3 +514,5 @@ SUBSYSTEM_DEF(timer) #undef BUCKET_LEN #undef BUCKET_POS +#undef TIMER_MAX +#undef TIMER_ID_MAX diff --git a/code/controllers/subsystem/title.dm b/code/controllers/subsystem/title.dm index 6168ca0905..94dff9b742 100644 --- a/code/controllers/subsystem/title.dm +++ b/code/controllers/subsystem/title.dm @@ -26,19 +26,12 @@ SUBSYSTEM_DEF(title) if((L.len == 1 && L[1] != "blank.png")|| (L.len > 1 && ((use_rare_screens && lowertext(L[1]) == "rare") || (lowertext(L[1]) == lowertext(SSmapping.config.map_name))))) title_screens += S - for(var/S in title_screens) - var/list/L = splittext(S,".") - if(L.len != 2) - continue - title_screens -= S - break - if(length(title_screens)) file_path = "[global.config.directory]/title_screens/images/[pick(title_screens)]" if(!file_path) file_path = "icons/default_title.dmi" - + ASSERT(fexists(file_path)) icon = new(fcopy_rsc(file_path)) diff --git a/code/controllers/subsystem/traumas.dm b/code/controllers/subsystem/traumas.dm index 14f15a4b89..235b25b566 100644 --- a/code/controllers/subsystem/traumas.dm +++ b/code/controllers/subsystem/traumas.dm @@ -11,7 +11,7 @@ SUBSYSTEM_DEF(traumas) #define PHOBIA_FILE "phobia.json" /datum/controller/subsystem/traumas/Initialize() - phobia_types = list("spiders", "space", "security", "clowns", "greytide", "lizards", "skeletons") + phobia_types = list("spiders", "space", "security", "clowns", "greytide", "lizards", "skeletons", "snakes") phobia_words = list("spiders" = strings(PHOBIA_FILE, "spiders"), "space" = strings(PHOBIA_FILE, "space"), @@ -20,11 +20,13 @@ SUBSYSTEM_DEF(traumas) "greytide" = strings(PHOBIA_FILE, "greytide"), "lizards" = strings(PHOBIA_FILE, "lizards"), "skeletons" = strings(PHOBIA_FILE, "skeletons"), + "snakes" = strings(PHOBIA_FILE, "snakes") ) phobia_mobs = list("spiders" = typecacheof(list(/mob/living/simple_animal/hostile/poison/giant_spider)), "security" = typecacheof(list(/mob/living/simple_animal/bot/secbot)), - "lizards" = typecacheof(list(/mob/living/simple_animal/hostile/lizard)) + "lizards" = typecacheof(list(/mob/living/simple_animal/hostile/lizard)), + "snakes" = typecacheof(list(/mob/living/simple_animal/hostile/retaliate/poison/snake)) ) phobia_objs = list("spiders" = typecacheof(list(/obj/structure/spider)), diff --git a/code/datums/action.dm b/code/datums/action.dm index fb1f2fb8cb..7c8feeed55 100644 --- a/code/datums/action.dm +++ b/code/datums/action.dm @@ -104,7 +104,7 @@ return 0 return 1 -/datum/action/proc/UpdateButtonIcon(status_only = FALSE) +/datum/action/proc/UpdateButtonIcon(status_only = FALSE, force = FALSE) if(button) if(!status_only) button.name = name @@ -121,7 +121,7 @@ if(button.icon_state != background_icon_state) button.icon_state = background_icon_state - ApplyIcon(button) + ApplyIcon(button, force) if(!IsAvailable()) button.color = rgb(128,0,0,128) @@ -129,8 +129,8 @@ button.color = rgb(255,255,255,255) return 1 -/datum/action/proc/ApplyIcon(obj/screen/movable/action_button/current_button) - if(icon_icon && button_icon_state && current_button.button_icon_state != button_icon_state) +/datum/action/proc/ApplyIcon(obj/screen/movable/action_button/current_button, force = FALSE) + if(icon_icon && button_icon_state && ((current_button.button_icon_state != button_icon_state) || force)) current_button.cut_overlays(TRUE) current_button.add_overlay(mutable_appearance(icon_icon, button_icon_state)) current_button.button_icon_state = button_icon_state @@ -163,11 +163,11 @@ I.ui_action_click(owner, src) return 1 -/datum/action/item_action/ApplyIcon(obj/screen/movable/action_button/current_button) +/datum/action/item_action/ApplyIcon(obj/screen/movable/action_button/current_button, force) if(button_icon && button_icon_state) // If set, use the custom icon that we set instead // of the item appearence - ..(current_button) + ..() else if(target && current_button.appearance_cache != target.appearance) //replace with /ref comparison if this is not valid. var/obj/item/I = target var/old_layer = I.layer @@ -215,7 +215,7 @@ /datum/action/item_action/set_internals name = "Set Internals" -/datum/action/item_action/set_internals/UpdateButtonIcon(status_only = FALSE) +/datum/action/item_action/set_internals/UpdateButtonIcon(status_only = FALSE, force) if(..()) //button available if(iscarbon(owner)) var/mob/living/carbon/C = owner @@ -253,7 +253,7 @@ if(..()) UpdateButtonIcon() -/datum/action/item_action/toggle_unfriendly_fire/UpdateButtonIcon(status_only = FALSE) +/datum/action/item_action/toggle_unfriendly_fire/UpdateButtonIcon(status_only = FALSE, force) if(istype(target, /obj/item/hierophant_club)) var/obj/item/hierophant_club/H = target if(H.friendly_fire_check) diff --git a/code/datums/armor.dm b/code/datums/armor.dm new file mode 100644 index 0000000000..cbf4b76c60 --- /dev/null +++ b/code/datums/armor.dm @@ -0,0 +1,70 @@ +#define ARMORID "armor-[melee]-[bullet]-[laser]-[energy]-[bomb]-[bio]-[rad]-[fire]-[acid]-[magic]" + +/proc/getArmor(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0, magic = 0) + . = locate(ARMORID) + if (!.) + . = new /datum/armor(melee, bullet, laser, energy, bomb, bio, rad, fire, acid, magic) + +/datum/armor + datum_flags = DF_USE_TAG + var/melee + var/bullet + var/laser + var/energy + var/bomb + var/bio + var/rad + var/fire + var/acid + var/magic + +/datum/armor/New(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0, magic = 0) + src.melee = melee + src.bullet = bullet + src.laser = laser + src.energy = energy + src.bomb = bomb + src.bio = bio + src.rad = rad + src.fire = fire + src.acid = acid + src.magic = magic + tag = ARMORID + +/datum/armor/proc/modifyRating(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0, magic = 0) + return getArmor(src.melee+melee, src.bullet+bullet, src.laser+laser, src.energy+energy, src.bomb+bomb, src.bio+bio, src.rad+rad, src.fire+fire, src.acid+acid, src.magic+magic) + +/datum/armor/proc/modifyAllRatings(modifier = 0) + return getArmor(melee+modifier, bullet+modifier, laser+modifier, energy+modifier, bomb+modifier, bio+modifier, rad+modifier, fire+modifier, acid+modifier, magic+modifier) + +/datum/armor/proc/setRating(melee, bullet, laser, energy, bomb, bio, rad, fire, acid, magic) + return getArmor((isnull(melee) ? src.melee : melee),\ + (isnull(bullet) ? src.bullet : bullet),\ + (isnull(laser) ? src.laser : laser),\ + (isnull(energy) ? src.energy : energy),\ + (isnull(bomb) ? src.bomb : bomb),\ + (isnull(bio) ? src.bio : bio),\ + (isnull(rad) ? src.rad : rad),\ + (isnull(fire) ? src.fire : fire),\ + (isnull(acid) ? src.acid : acid),\ + (isnull(magic) ? src.magic : magic)) + +/datum/armor/proc/getRating(rating) + return vars[rating] + +/datum/armor/proc/getList() + return list("melee" = melee, "bullet" = bullet, "laser" = laser, "energy" = energy, "bomb" = bomb, "bio" = bio, "rad" = rad, "fire" = fire, "acid" = acid, "magic" = magic) + +/datum/armor/proc/attachArmor(datum/armor/AA) + return getArmor(melee+AA.melee, bullet+AA.bullet, laser+AA.laser, energy+AA.energy, bomb+AA.bomb, bio+AA.bio, rad+AA.rad, fire+AA.fire, acid+AA.acid, magic+AA.magic) + +/datum/armor/proc/detachArmor(datum/armor/AA) + return getArmor(melee-AA.melee, bullet-AA.bullet, laser-AA.laser, energy-AA.energy, bomb-AA.bomb, bio-AA.bio, rad-AA.rad, fire-AA.fire, acid-AA.acid, magic-AA.magic) + +/datum/armor/vv_edit_var(var_name, var_value) + if (var_name == NAMEOF(src, tag)) + return FALSE + . = ..() + tag = ARMORID // update tag in case armor values were edited + +#undef ARMORID diff --git a/code/datums/brain_damage/mild.dm b/code/datums/brain_damage/mild.dm index a28a108365..87e0cb3457 100644 --- a/code/datums/brain_damage/mild.dm +++ b/code/datums/brain_damage/mild.dm @@ -42,7 +42,7 @@ lose_text = "You feel smart again." /datum/brain_trauma/mild/dumbness/on_gain() - owner.add_disability(DISABILITY_DUMB, TRAUMA_DISABILITY) + owner.add_trait(TRAIT_DUMB, TRAUMA_TRAIT) ..() /datum/brain_trauma/mild/dumbness/on_life() @@ -54,7 +54,7 @@ ..() /datum/brain_trauma/mild/dumbness/on_lose() - owner.remove_disability(DISABILITY_DUMB, TRAUMA_DISABILITY) + owner.remove_trait(TRAIT_DUMB, TRAUMA_TRAIT) owner.derpspeech = 0 ..() diff --git a/code/datums/brain_damage/phobia.dm b/code/datums/brain_damage/phobia.dm index a775113491..15db4a3d3e 100644 --- a/code/datums/brain_damage/phobia.dm +++ b/code/datums/brain_damage/phobia.dm @@ -68,7 +68,7 @@ return /datum/brain_trauma/mild/phobia/on_hear(message, speaker, message_language, raw_message, radio_freq) - if(owner.has_disability(DISABILITY_DEAF) || world.time < next_scare) //words can't trigger you if you can't hear them *taps head* + if(owner.has_trait(TRAIT_DEAF) || world.time < next_scare) //words can't trigger you if you can't hear them *taps head* return message for(var/word in trigger_words) if(findtext(message, word)) diff --git a/code/datums/brain_damage/severe.dm b/code/datums/brain_damage/severe.dm index ba4eaa376e..b4d1951eb5 100644 --- a/code/datums/brain_damage/severe.dm +++ b/code/datums/brain_damage/severe.dm @@ -12,11 +12,11 @@ lose_text = "You suddenly remember how to speak." /datum/brain_trauma/severe/mute/on_gain() - owner.add_disability(DISABILITY_MUTE, TRAUMA_DISABILITY) + owner.add_trait(TRAIT_MUTE, TRAUMA_TRAIT) ..() /datum/brain_trauma/severe/mute/on_lose() - owner.remove_disability(DISABILITY_MUTE, TRAUMA_DISABILITY) + owner.remove_trait(TRAIT_MUTE, TRAUMA_TRAIT) ..() /datum/brain_trauma/severe/aphasia @@ -50,11 +50,11 @@ lose_text = "Your vision returns." /datum/brain_trauma/severe/blindness/on_gain() - owner.become_blind(TRAUMA_DISABILITY) + owner.become_blind(TRAUMA_TRAIT) ..() /datum/brain_trauma/severe/blindness/on_lose() - owner.cure_blind(TRAUMA_DISABILITY) + owner.cure_blind(TRAUMA_TRAIT) ..() /datum/brain_trauma/severe/paralysis @@ -120,7 +120,7 @@ stress -= 4 /datum/brain_trauma/severe/monophobia/proc/check_alone() - if(owner.has_disability(DISABILITY_BLIND)) + if(owner.has_trait(TRAIT_BLIND)) return TRUE for(var/mob/M in oview(owner, 7)) if(!isliving(M)) //ghosts ain't people @@ -182,11 +182,11 @@ lose_text = "You feel in control of your hands again." /datum/brain_trauma/severe/discoordination/on_gain() - owner.add_disability(DISABILITY_MONKEYLIKE, TRAUMA_DISABILITY) + owner.add_trait(TRAIT_MONKEYLIKE, TRAUMA_TRAIT) ..() /datum/brain_trauma/severe/discoordination/on_lose() - owner.remove_disability(DISABILITY_MONKEYLIKE, TRAUMA_DISABILITY) + owner.remove_trait(TRAIT_MONKEYLIKE, TRAUMA_TRAIT) ..() /datum/brain_trauma/severe/pacifism @@ -197,9 +197,9 @@ lose_text = "You no longer feel compelled to not harm." /datum/brain_trauma/severe/pacifism/on_gain() - owner.add_disability(DISABILITY_PACIFISM, TRAUMA_DISABILITY) + owner.add_trait(TRAIT_PACIFISM, TRAUMA_TRAIT) ..() /datum/brain_trauma/severe/pacifism/on_lose() - owner.remove_disability(DISABILITY_PACIFISM, TRAUMA_DISABILITY) + owner.remove_trait(TRAIT_PACIFISM, TRAUMA_TRAIT) ..() \ No newline at end of file diff --git a/code/datums/brain_damage/split_personality.dm b/code/datums/brain_damage/split_personality.dm index dcb7fca3d1..9e273f19f7 100644 --- a/code/datums/brain_damage/split_personality.dm +++ b/code/datums/brain_damage/split_personality.dm @@ -192,7 +192,7 @@ return //no random switching /datum/brain_trauma/severe/split_personality/brainwashing/on_hear(message, speaker, message_language, raw_message, radio_freq) - if(owner.has_disability(DISABILITY_DEAF) || owner == speaker) + if(owner.has_trait(TRAIT_DEAF) || owner == speaker) return message if(findtext(message, codeword)) message = replacetext(message, codeword, "[codeword]") diff --git a/code/datums/browser.dm b/code/datums/browser.dm index f863a5007d..d525b52ca5 100644 --- a/code/datums/browser.dm +++ b/code/datums/browser.dm @@ -120,13 +120,7 @@ else WARNING("Browser [title] tried to close with a null ID") -/datum/browser/alert - var/selectedbutton = 0 - var/opentime = 0 - var/timeout - var/stealfocus - -/datum/browser/alert/New(User,Message,Title,Button1="Ok",Button2,Button3,StealFocus = 1,Timeout=6000) +/datum/browser/modal/alert/New(User,Message,Title,Button1="Ok",Button2,Button3,StealFocus = 1,Timeout=6000) if (!User) return @@ -142,44 +136,10 @@ output += {""} - ..(User, ckey("[User]-[Message]-[Title]-[world.time]-[rand(1,10000)]"), Title, 350, 150, src) + ..(User, ckey("[User]-[Message]-[Title]-[world.time]-[rand(1,10000)]"), Title, 350, 150, src, StealFocus, Timeout) set_content(output) - stealfocus = StealFocus - if (!StealFocus) - window_options += "focus=false;" - timeout = Timeout -/datum/browser/alert/open() - set waitfor = 0 - opentime = world.time - - if (stealfocus) - . = ..(use_onclose = 1) - else - var/focusedwindow = winget(user, null, "focus") - . = ..(use_onclose = 1) - - //waits for the window to show up client side before attempting to un-focus it - //winexists sleeps until it gets a reply from the client, so we don't need to bother sleeping - for (var/i in 1 to 10) - if (user && winexists(user, window_id)) - if (focusedwindow) - winset(user, focusedwindow, "focus=true") - else - winset(user, "mapwindow", "focus=true") - break - if (timeout) - addtimer(CALLBACK(src, .proc/close), timeout) - -/datum/browser/alert/close() - .=..() - opentime = 0 - -/datum/browser/alert/proc/wait() - while (opentime && selectedbutton <= 0 && (!timeout || opentime+timeout > world.time)) - stoplag(1) - -/datum/browser/alert/Topic(href,href_list) +/datum/browser/modal/alert/Topic(href,href_list) if (href_list["close"] || !user || !user.client) opentime = 0 return @@ -210,12 +170,141 @@ User = C.mob else return - var/datum/browser/alert/A = new(User, Message, Title, Button1, Button2, Button3, StealFocus, Timeout) + var/datum/browser/modal/alert/A = new(User, Message, Title, Button1, Button2, Button3, StealFocus, Timeout) A.open() A.wait() if (A.selectedbutton) return A.selectedbutton +/datum/browser/modal + var/opentime = 0 + var/timeout + var/selectedbutton = 0 + var/stealfocus + +/datum/browser/modal/New(nuser, nwindow_id, ntitle = 0, nwidth = 0, nheight = 0, var/atom/nref = null, StealFocus = 1, Timeout = 6000) + ..() + stealfocus = StealFocus + if (!StealFocus) + window_options += "focus=false;" + timeout = Timeout + + +/datum/browser/modal/close() + .=..() + opentime = 0 + +/datum/browser/modal/open() + set waitfor = 0 + opentime = world.time + + if (stealfocus) + . = ..(use_onclose = 1) + else + var/focusedwindow = winget(user, null, "focus") + . = ..(use_onclose = 1) + + //waits for the window to show up client side before attempting to un-focus it + //winexists sleeps until it gets a reply from the client, so we don't need to bother sleeping + for (var/i in 1 to 10) + if (user && winexists(user, window_id)) + if (focusedwindow) + winset(user, focusedwindow, "focus=true") + else + winset(user, "mapwindow", "focus=true") + break + if (timeout) + addtimer(CALLBACK(src, .proc/close), timeout) + +/datum/browser/modal/proc/wait() + while (opentime && selectedbutton <= 0 && (!timeout || opentime+timeout > world.time)) + stoplag(1) + +/datum/browser/modal/listpicker + var/valueslist = list() + +/datum/browser/modal/listpicker/New(User,Message,Title,Button1="Ok",Button2,Button3,StealFocus = 1, Timeout = FALSE,list/values,inputtype="checkbox") + if (!User) + return + + var/output = {"
+ "} + + if (Button2) + output += {""} + + if (Button3) + output += {""} + + output += {"
"} + ..(User, ckey("[User]-[Message]-[Title]-[world.time]-[rand(1,10000)]"), Title, 350, 350, src, StealFocus, Timeout) + set_content(output) + +/datum/browser/modal/listpicker/Topic(href,href_list) + if (href_list["close"] || !user || !user.client) + opentime = 0 + return + if (href_list["button"]) + var/button = text2num(href_list["button"]) + if (button <= 3 && button >= 1) + selectedbutton = button + for (var/item in href_list) + switch(item) + if ("close", "button", "src") + continue + else + valueslist[item] = href_list[item] + opentime = 0 + close() + +/proc/presentpicker(var/mob/User,Message, Title, Button1="Ok", Button2, Button3, StealFocus = 1,Timeout = 6000,list/values, inputtype = "checkbox") + if (!istype(User)) + if (istype(User, /client/)) + var/client/C = User + User = C.mob + else + return + var/datum/browser/modal/listpicker/A = new(User, Message, Title, Button1, Button2, Button3, StealFocus,Timeout, values, inputtype) + A.open() + A.wait() + if (A.selectedbutton) + return list("button" = A.selectedbutton, "values" = A.valueslist) + +/proc/input_bitfield(var/mob/User, title, bitfield, current_value) + if (!User || !(bitfield in GLOB.bitfields)) + return + var/list/pickerlist = list() + for (var/i in GLOB.bitfields[bitfield]) + if (current_value & GLOB.bitfields[bitfield][i]) + pickerlist += list(list("checked" = 1, "value" = GLOB.bitfields[bitfield][i], "name" = i)) + else + pickerlist += list(list("checked" = 0, "value" = GLOB.bitfields[bitfield][i], "name" = i)) + var/list/result = presentpicker(User, "", title, Button1="Save", Button2 = "Cancel", Timeout=FALSE, values = pickerlist) + + if (islist(result)) + if (result["button"] == 2) // If the user pressed the cancel button + return + . = 0 + for (var/flag in result["values"]) + . |= GLOB.bitfields[bitfield][flag] + else + return + // This will allow you to show an icon in the browse window // This is added to mob so that it can be used without a reference to the browser object // There is probably a better place for this... diff --git a/code/datums/datumvars.dm b/code/datums/datumvars.dm index 58b0e81868..59cbf745f8 100644 --- a/code/datums/datumvars.dm +++ b/code/datums/datumvars.dm @@ -433,6 +433,12 @@ else item = "[VV_HTML_ENCODE(name)] = /list ([L.len])" + else if (name in GLOB.bitfields) + var/list/flags = list() + for (var/i in GLOB.bitfields[name]) + if (value & GLOB.bitfields[name][i]) + flags += i + item = "[VV_HTML_ENCODE(name)] = [VV_HTML_ENCODE(jointext(flags, ", "))]" else item = "[VV_HTML_ENCODE(name)] = [VV_HTML_ENCODE(value)]" @@ -453,7 +459,7 @@ src.debug_variables(DAT) else if(href_list["mob_player_panel"]) - if(!check_rights(0)) + if(!check_rights(NONE)) return var/mob/M = locate(href_list["mob_player_panel"]) in GLOB.mob_list @@ -477,7 +483,7 @@ href_list["datumrefresh"] = href_list["godmode"] else if(href_list["mark_object"]) - if(!check_rights(0)) + if(!check_rights(NONE)) return var/datum/D = locate(href_list["mark_object"]) @@ -489,7 +495,7 @@ href_list["datumrefresh"] = href_list["mark_object"] else if(href_list["proc_call"]) - if(!check_rights(0)) + if(!check_rights(NONE)) return var/T = locate(href_list["proc_call"]) @@ -513,7 +519,7 @@ usr.client.object_say(locate(href_list["osay"])) else if(href_list["regenerateicons"]) - if(!check_rights(0)) + if(!check_rights(NONE)) return var/mob/M = locate(href_list["regenerateicons"]) in GLOB.mob_list @@ -550,7 +556,7 @@ //~CARN: for renaming mobs (updates their name, real_name, mind.name, their ID/PDA and datacore records). if(href_list["rename"]) - if(!check_rights(0)) + if(!check_rights(NONE)) return var/mob/M = locate(href_list["rename"]) in GLOB.mob_list @@ -567,7 +573,7 @@ href_list["datumrefresh"] = href_list["rename"] else if(href_list["varnameedit"] && href_list["datumedit"]) - if(!check_rights(0)) + if(!check_rights(NONE)) return var/D = locate(href_list["datumedit"]) @@ -578,7 +584,7 @@ modify_variables(D, href_list["varnameedit"], 1) else if(href_list["varnamechange"] && href_list["datumchange"]) - if(!check_rights(0)) + if(!check_rights(NONE)) return var/D = locate(href_list["datumchange"]) @@ -589,7 +595,7 @@ modify_variables(D, href_list["varnamechange"], 0) else if(href_list["varnamemass"] && href_list["datummass"]) - if(!check_rights(0)) + if(!check_rights(NONE)) return var/datum/D = locate(href_list["datummass"]) @@ -698,7 +704,7 @@ message_admins("[key_name_admin(src)] modified list's contents: SHUFFLE") else if(href_list["give_spell"]) - if(!check_rights(0)) + if(!check_rights(NONE)) return var/mob/M = locate(href_list["give_spell"]) in GLOB.mob_list @@ -710,7 +716,7 @@ href_list["datumrefresh"] = href_list["give_spell"] else if(href_list["remove_spell"]) - if(!check_rights(0)) + if(!check_rights(NONE)) return var/mob/M = locate(href_list["remove_spell"]) in GLOB.mob_list @@ -722,7 +728,7 @@ href_list["datumrefresh"] = href_list["remove_spell"] else if(href_list["give_disease"]) - if(!check_rights(0)) + if(!check_rights(NONE)) return var/mob/M = locate(href_list["give_disease"]) in GLOB.mob_list @@ -757,7 +763,7 @@ href_list["datumrefresh"] = href_list["build_mode"] else if(href_list["drop_everything"]) - if(!check_rights(0)) + if(!check_rights(NONE)) return var/mob/M = locate(href_list["drop_everything"]) in GLOB.mob_list @@ -769,7 +775,7 @@ usr.client.cmd_admin_drop_everything(M) else if(href_list["direct_control"]) - if(!check_rights(0)) + if(!check_rights(NONE)) return var/mob/M = locate(href_list["direct_control"]) in GLOB.mob_list @@ -781,7 +787,7 @@ usr.client.cmd_assume_direct_control(M) else if(href_list["offer_control"]) - if(!check_rights(0)) + if(!check_rights(NONE)) return var/mob/M = locate(href_list["offer_control"]) in GLOB.mob_list @@ -790,6 +796,41 @@ return offer_control(M) + else if (href_list["modarmor"]) + if(!check_rights(NONE)) + return + + var/obj/O = locate(href_list["modarmor"]) + if(!istype(O)) + to_chat(usr, "This can only be used on instances of type /obj") + return + + var/list/pickerlist = list() + var/list/armorlist = O.armor.getList() + + for (var/i in armorlist) + pickerlist += list(list("value" = armorlist[i], "name" = i)) + + var/list/result = presentpicker(usr, "Modify armor", "Modify armor: [O]", Button1="Save", Button2 = "Cancel", Timeout=FALSE, Type = "text", values = pickerlist) + + if (islist(result)) + if (result["button"] == 2) // If the user pressed the cancel button + return + // text2num conveniently returns a null on invalid values + O.armor = O.armor.setRating(melee = text2num(result["values"]["melee"]),\ + bullet = text2num(result["values"]["bullet"]),\ + laser = text2num(result["values"]["laser"]),\ + energy = text2num(result["values"]["energy"]),\ + bomb = text2num(result["values"]["bomb"]),\ + bio = text2num(result["values"]["bio"]),\ + rad = text2num(result["values"]["rad"]),\ + fire = text2num(result["values"]["fire"]),\ + acid = text2num(result["values"]["acid"])) + log_admin("[key_name(usr)] modified the armor on [O] ([O.type]) to melee: [O.armor.melee], bullet: [O.armor.bullet], laser: [O.armor.laser], energy: [O.armor.energy], bomb: [O.armor.bomb], bio: [O.armor.bio], rad: [O.armor.rad], fire: [O.armor.fire], acid: [O.armor.acid]") + message_admins("[key_name_admin(usr)] modified the armor on [O] ([O.type]) to melee: [O.armor.melee], bullet: [O.armor.bullet], laser: [O.armor.laser], energy: [O.armor.energy], bomb: [O.armor.bomb], bio: [O.armor.bio], rad: [O.armor.rad], fire: [O.armor.fire], acid: [O.armor.acid]") + else + return + else if(href_list["delall"]) if(!check_rights(R_DEBUG|R_SERVER)) return @@ -837,7 +878,7 @@ message_admins("[key_name(usr)] deleted all objects of type or subtype of [O_type] ([i] objects deleted) ") else if(href_list["addreagent"]) - if(!check_rights(0)) + if(!check_rights(NONE)) return var/atom/A = locate(href_list["addreagent"]) @@ -927,7 +968,7 @@ href_list["datumrefresh"] = href_list["modtransform"] else if(href_list["rotatedatum"]) - if(!check_rights(0)) + if(!check_rights(NONE)) return var/atom/A = locate(href_list["rotatedatum"]) @@ -943,7 +984,7 @@ href_list["datumrefresh"] = href_list["rotatedatum"] else if(href_list["editorgans"]) - if(!check_rights(0)) + if(!check_rights(NONE)) return var/mob/living/carbon/C = locate(href_list["editorgans"]) in GLOB.mob_list @@ -955,7 +996,7 @@ href_list["datumrefresh"] = href_list["editorgans"] else if(href_list["givetrauma"]) - if(!check_rights(0)) + if(!check_rights(NONE)) return var/mob/living/carbon/C = locate(href_list["givetrauma"]) in GLOB.mob_list @@ -978,7 +1019,7 @@ href_list["datumrefresh"] = href_list["givetrauma"] else if(href_list["curetraumas"]) - if(!check_rights(0)) + if(!check_rights(NONE)) return var/mob/living/carbon/C = locate(href_list["curetraumas"]) in GLOB.mob_list @@ -991,7 +1032,7 @@ href_list["datumrefresh"] = href_list["curetraumas"] else if(href_list["hallucinate"]) - if(!check_rights(0)) + if(!check_rights(NONE)) return var/mob/living/carbon/C = locate(href_list["hallucinate"]) in GLOB.mob_list @@ -1204,7 +1245,7 @@ admin_ticket_log(H, msg) else if(href_list["adjustDamage"] && href_list["mobToDamage"]) - if(!check_rights(0)) + if(!check_rights(NONE)) return var/mob/living/L = locate(href_list["mobToDamage"]) in GLOB.mob_list @@ -1244,4 +1285,3 @@ message_admins(msg) admin_ticket_log(L, msg) href_list["datumrefresh"] = href_list["mobToDamage"] - diff --git a/code/datums/diseases/advance/symptoms/genetics.dm b/code/datums/diseases/advance/symptoms/genetics.dm index af1e460024..c01fccee13 100644 --- a/code/datums/diseases/advance/symptoms/genetics.dm +++ b/code/datums/diseases/advance/symptoms/genetics.dm @@ -10,7 +10,7 @@ DNA Saboteur Fatal Level. Bonus - Cleans the DNA of a person and then randomly gives them a disability. + Cleans the DNA of a person and then randomly gives them a trait. ////////////////////////////////////// */ diff --git a/code/datums/diseases/advance/symptoms/heal.dm b/code/datums/diseases/advance/symptoms/heal.dm index 3f95fd6482..8c884f409c 100644 --- a/code/datums/diseases/advance/symptoms/heal.dm +++ b/code/datums/diseases/advance/symptoms/heal.dm @@ -233,7 +233,7 @@ /datum/symptom/heal/coma/CanHeal(datum/disease/advance/A) var/mob/living/M = A.affected_mob - if(M.status_flags & FAKEDEATH) + if(M.has_trait(TRAIT_FAKEDEATH)) return power else if(M.IsUnconscious() || M.stat == UNCONSCIOUS) return power * 0.9 @@ -249,7 +249,7 @@ /datum/symptom/heal/coma/proc/coma(mob/living/M) if(deathgasp) M.emote("deathgasp") - M.status_flags |= FAKEDEATH + M.fakedeath("regenerative_coma") M.update_stat() M.update_canmove() addtimer(CALLBACK(src, .proc/uncoma, M), 300) @@ -258,7 +258,7 @@ if(!active_coma) return active_coma = FALSE - M.status_flags &= ~FAKEDEATH + M.cure_fakedeath("regenerative_coma") M.update_stat() M.update_canmove() diff --git a/code/datums/diseases/advance/symptoms/sensory.dm b/code/datums/diseases/advance/symptoms/sensory.dm index 911ffd7e26..bb1170bc58 100644 --- a/code/datums/diseases/advance/symptoms/sensory.dm +++ b/code/datums/diseases/advance/symptoms/sensory.dm @@ -86,14 +86,14 @@ if(4, 5) M.restoreEars() - if(M.has_disability(DISABILITY_BLIND, EYE_DAMAGE)) + if(M.has_trait(TRAIT_BLIND, EYE_DAMAGE)) if(prob(20)) to_chat(M, "Your vision slowly returns...") M.cure_blind(EYE_DAMAGE) M.cure_nearsighted(EYE_DAMAGE) M.blur_eyes(35) - else if(M.has_disability(DISABILITY_NEARSIGHT, EYE_DAMAGE)) + else if(M.has_trait(TRAIT_NEARSIGHT, EYE_DAMAGE)) to_chat(M, "You can finally focus your eyes on distant objects.") M.cure_nearsighted(EYE_DAMAGE) M.blur_eyes(10) diff --git a/code/datums/diseases/advance/symptoms/vision.dm b/code/datums/diseases/advance/symptoms/vision.dm index 279ce51417..0b42012f76 100644 --- a/code/datums/diseases/advance/symptoms/vision.dm +++ b/code/datums/diseases/advance/symptoms/vision.dm @@ -61,7 +61,7 @@ Bonus M.become_nearsighted(EYE_DAMAGE) if(prob(eyes.eye_damage - 10 + 1)) if(!remove_eyes) - if(!M.has_disability(DISABILITY_BLIND)) + if(!M.has_trait(TRAIT_BLIND)) to_chat(M, "You go blind!") M.become_blind(EYE_DAMAGE) else diff --git a/code/datums/diseases/transformation.dm b/code/datums/diseases/transformation.dm index c5ac11142f..17aebc4629 100644 --- a/code/datums/diseases/transformation.dm +++ b/code/datums/diseases/transformation.dm @@ -204,12 +204,13 @@ ..() switch(stage) if(1) - if(ishuman(affected_mob) && affected_mob.dna && affected_mob.dna.species.id == "slime") - stage = 5 + if(ishuman(affected_mob) && affected_mob.dna) + if(affected_mob.dna.species.id == "slime" || affected_mob.dna.species.id == "stargazer" || affected_mob.dna.species.id == "lum") + stage = 5 if(3) if(ishuman(affected_mob)) var/mob/living/carbon/human/human = affected_mob - if(human.dna.species.id != "slime") + if(human.dna.species.id != "slime" && affected_mob.dna.species.id != "stargazer" && affected_mob.dna.species.id != "lum") human.set_species(/datum/species/jelly/slime) /datum/disease/transformation/corgi diff --git a/code/datums/embedding_behavior.dm b/code/datums/embedding_behavior.dm new file mode 100644 index 0000000000..f631b9b1c4 --- /dev/null +++ b/code/datums/embedding_behavior.dm @@ -0,0 +1,53 @@ +#define EMBEDID "embed-[embed_chance]-[embedded_fall_chance]-[embedded_pain_chance]-[embedded_pain_multiplier]-[embedded_fall_pain_multiplier]-[embedded_impact_pain_multiplier]-[embedded_unsafe_removal_pain_multiplier]-[embedded_unsafe_removal_time]" + +/proc/getEmbeddingBehavior(embed_chance = EMBED_CHANCE, + embedded_fall_chance = EMBEDDED_ITEM_FALLOUT, + embedded_pain_chance = EMBEDDED_PAIN_CHANCE, + embedded_pain_multiplier = EMBEDDED_PAIN_MULTIPLIER, + embedded_fall_pain_multiplier = EMBEDDED_FALL_PAIN_MULTIPLIER, + embedded_impact_pain_multiplier = EMBEDDED_IMPACT_PAIN_MULTIPLIER, + embedded_unsafe_removal_pain_multiplier = EMBEDDED_UNSAFE_REMOVAL_PAIN_MULTIPLIER, + embedded_unsafe_removal_time = EMBEDDED_UNSAFE_REMOVAL_TIME) + . = locate(EMBEDID) + if (!.) + . = new /datum/embedding_behavior(embed_chance, embedded_fall_chance, embedded_pain_chance, embedded_pain_multiplier, embedded_fall_pain_multiplier, embedded_impact_pain_multiplier, embedded_unsafe_removal_pain_multiplier, embedded_unsafe_removal_time) + +/datum/embedding_behavior + var/embed_chance + var/embedded_fall_chance + var/embedded_pain_chance + var/embedded_pain_multiplier //The coefficient of multiplication for the damage this item does while embedded (this*w_class) + var/embedded_fall_pain_multiplier //The coefficient of multiplication for the damage this item does when falling out of a limb (this*w_class) + var/embedded_impact_pain_multiplier //The coefficient of multiplication for the damage this item does when first embedded (this*w_class) + var/embedded_unsafe_removal_pain_multiplier //The coefficient of multiplication for the damage removing this without surgery causes (this*w_class) + var/embedded_unsafe_removal_time //A time in ticks, multiplied by the w_class. + +/datum/embedding_behavior/New(embed_chance = EMBED_CHANCE, + embedded_fall_chance = EMBEDDED_ITEM_FALLOUT, + embedded_pain_chance = EMBEDDED_PAIN_CHANCE, + embedded_pain_multiplier = EMBEDDED_PAIN_MULTIPLIER, + embedded_fall_pain_multiplier = EMBEDDED_FALL_PAIN_MULTIPLIER, + embedded_impact_pain_multiplier = EMBEDDED_IMPACT_PAIN_MULTIPLIER, + embedded_unsafe_removal_pain_multiplier = EMBEDDED_UNSAFE_REMOVAL_PAIN_MULTIPLIER, + embedded_unsafe_removal_time = EMBEDDED_UNSAFE_REMOVAL_TIME) + src.embed_chance = embed_chance + src.embedded_fall_chance = embedded_fall_chance + src.embedded_pain_chance = embedded_pain_chance + src.embedded_pain_multiplier = embedded_pain_multiplier + src.embedded_fall_pain_multiplier = embedded_fall_pain_multiplier + src.embedded_impact_pain_multiplier = embedded_impact_pain_multiplier + src.embedded_unsafe_removal_pain_multiplier = embedded_unsafe_removal_pain_multiplier + src.embedded_unsafe_removal_time = embedded_unsafe_removal_time + tag = EMBEDID + +/datum/embedding_behavior/proc/setRating(embed_chance, embedded_fall_chance, embedded_pain_chance, embedded_pain_multiplier, embedded_fall_pain_multiplier, embedded_impact_pain_multiplier, embedded_unsafe_removal_pain_multiplier, embedded_unsafe_removal_time) + return getEmbeddingBehavior((isnull(embed_chance) ? src.embed_chance : embed_chance),\ + (isnull(embedded_fall_chance) ? src.embedded_fall_chance : embedded_fall_chance),\ + (isnull(embedded_pain_chance) ? src.embedded_pain_chance : embedded_pain_chance),\ + (isnull(embedded_pain_multiplier) ? src.embedded_pain_multiplier : embedded_pain_multiplier),\ + (isnull(embedded_fall_pain_multiplier) ? src.embedded_fall_pain_multiplier : embedded_fall_pain_multiplier),\ + (isnull(embedded_impact_pain_multiplier) ? src.embedded_impact_pain_multiplier : embedded_impact_pain_multiplier),\ + (isnull(embedded_unsafe_removal_pain_multiplier) ? src.embedded_unsafe_removal_pain_multiplier : embedded_unsafe_removal_pain_multiplier),\ + (isnull(embedded_unsafe_removal_time) ? src.embedded_unsafe_removal_time : embedded_unsafe_removal_time)) + +#undef EMBEDID diff --git a/code/datums/emotes.dm b/code/datums/emotes.dm index b452eff382..1f68a9ec42 100644 --- a/code/datums/emotes.dm +++ b/code/datums/emotes.dm @@ -101,7 +101,7 @@ if(is_type_in_typecache(user, mob_type_blacklist_typecache)) return FALSE if(status_check && !is_type_in_typecache(user, mob_type_ignore_stat_typecache)) - if(user.stat > stat_allowed || (user.status_flags & FAKEDEATH)) + if(user.stat > stat_allowed) to_chat(user, "You cannot [key] while unconscious.") return FALSE if(restraint_check && (user.restrained() || user.buckled)) diff --git a/code/datums/helper_datums/getrev.dm b/code/datums/helper_datums/getrev.dm index b24622df6e..9b431732aa 100644 --- a/code/datums/helper_datums/getrev.dm +++ b/code/datums/helper_datums/getrev.dm @@ -12,9 +12,9 @@ logs = splittext(logs[logs.len - 1], " ") date = unix2date(text2num(logs[5])) commit = logs[2] - log_world("[date]") + log_world("[commit]: [date]") logs = world.file2list(".git/logs/refs/remotes/origin/master") - if(logs) + if(logs.len) originmastercommit = splittext(logs[logs.len - 1], " ")[2] if(testmerge.len) @@ -24,8 +24,9 @@ var/tmcommit = testmerge[line]["commit"] log_world("Test merge active of PR #[line] commit [tmcommit]") SSblackbox.record_feedback("nested tally", "testmerged_prs", 1, list("[line]", "[tmcommit]")) - log_world("Based off origin/master commit [originmastercommit]") - else + if(originmastercommit) + log_world("Based off origin/master commit [originmastercommit]") + else if(originmastercommit) log_world(originmastercommit) /datum/getrev/proc/GetTestMergeInfo(header = TRUE) @@ -55,7 +56,8 @@ var/pc = GLOB.revdata.originmastercommit to_chat(src, "[prefix][copytext(pc, 1, min(length(pc), 7))]") else - to_chat(src, "Revision unknown") + to_chat(src, "Master revision unknown") + to_chat(src, "Revision: [GLOB.revdata.commit]") if(SERVER_TOOLS_PRESENT) to_chat(src, "Server tools version: [SERVER_TOOLS_VERSION]") to_chat(src, "Server tools API version: [SERVER_TOOLS_API_VERSION]") diff --git a/code/datums/holocall.dm b/code/datums/holocall.dm index 75abc87080..f4e0edc67d 100644 --- a/code/datums/holocall.dm +++ b/code/datums/holocall.dm @@ -206,6 +206,8 @@ name = "holorecord disk" desc = "Stores recorder holocalls." icon_state = "holodisk" + obj_flags = UNIQUE_RENAME + materials = list(MAT_METAL = 100, MAT_GLASS = 100) var/datum/holorecord/record //Preset variables var/preset_image_type @@ -220,6 +222,22 @@ QDEL_NULL(record) return ..() +/obj/item/disk/holodisk/attackby(obj/item/W, mob/user, params) + if(istype(W, /obj/item/disk/holodisk)) + var/obj/item/disk/holodisk/holodiskOriginal = W + if (holodiskOriginal.record) + if (!record) + record = new + record.caller_name = holodiskOriginal.record.caller_name + record.caller_image = holodiskOriginal.record.caller_image + record.entries = holodiskOriginal.record.entries.Copy() + record.language = holodiskOriginal.record.language + to_chat(user, "You copy the record from [holodiskOriginal] to [src] by connecting the ports!") + name = holodiskOriginal.name + else + to_chat(user, "[holodiskOriginal] has no record on it!") + ..() + /obj/item/disk/holodisk/proc/build_record() record = new var/list/lines = splittext(preset_record_text,"\n") diff --git a/code/datums/map_config.dm b/code/datums/map_config.dm index c49c851ac4..bda639892b 100644 --- a/code/datums/map_config.dm +++ b/code/datums/map_config.dm @@ -11,6 +11,12 @@ var/minetype = "lavaland" + var/shuttles = list( + "cargo" = "cargo_box", + "ferry" = "ferry_fancy", + "whiteship" = "whiteship_box", + "emergency" = "emergency_box") + //Order matters here. var/list/transition_config = list(CENTCOM = SELFLOOPING, MAIN_STATION = CROSSLINKED, @@ -69,6 +75,12 @@ map_path = json["map_path"] map_file = json["map_file"] + if(islist(json["shuttles"])) + var/list/L = json["shuttles"] + for(var/key in L) + var/value = L[key] + shuttles[key] = value + minetype = json["minetype"] || minetype allow_custom_shuttles = json["allow_custom_shuttles"] != FALSE @@ -81,12 +93,16 @@ defaulted = FALSE -#define CHECK_EXISTS(X) if(!istext(json[X])) { log_world(X + "missing from json!"); return; } +#define CHECK_EXISTS(X) if(!istext(json[X])) { log_world("[##X] missing from json!"); return; } /datum/map_config/proc/ValidateJSON(list/json) CHECK_EXISTS("map_name") CHECK_EXISTS("map_path") CHECK_EXISTS("map_file") + var/shuttles = json["shuttles"] + if(shuttles && !islist(shuttles)) + log_world("json\[shuttles\] is not a list!") + var/path = GetFullMapPath(json["map_path"], json["map_file"]) if(!fexists(path)) log_world("Map file ([path]) does not exist!") diff --git a/code/datums/martial/sleeping_carp.dm b/code/datums/martial/sleeping_carp.dm index aeaf477ef1..54c0bac799 100644 --- a/code/datums/martial/sleeping_carp.dm +++ b/code/datums/martial/sleeping_carp.dm @@ -197,7 +197,7 @@ /obj/item/twohanded/bostaff/attack(mob/target, mob/living/user) add_fingerprint(user) - if((user.has_disability(DISABILITY_CLUMSY)) && prob(50)) + if((user.has_trait(TRAIT_CLUMSY)) && prob(50)) to_chat(user, "You club yourself over the head with [src].") user.Knockdown(60) if(ishuman(user)) diff --git a/code/datums/mutations/body.dm b/code/datums/mutations/body.dm index ee75402e03..418b783b94 100644 --- a/code/datums/mutations/body.dm +++ b/code/datums/mutations/body.dm @@ -85,12 +85,12 @@ /datum/mutation/human/clumsy/on_acquiring(mob/living/carbon/human/owner) if(..()) return - owner.add_disability(DISABILITY_CLUMSY, GENETIC_MUTATION) + owner.add_trait(TRAIT_CLUMSY, GENETIC_MUTATION) /datum/mutation/human/clumsy/on_losing(mob/living/carbon/human/owner) if(..()) return - owner.remove_disability(DISABILITY_CLUMSY, GENETIC_MUTATION) + owner.remove_trait(TRAIT_CLUMSY, GENETIC_MUTATION) //Tourettes causes you to randomly stand in place and shout. @@ -124,12 +124,12 @@ /datum/mutation/human/deaf/on_acquiring(mob/living/carbon/human/owner) if(..()) return - owner.add_disability(DISABILITY_DEAF, GENETIC_MUTATION) + owner.add_trait(TRAIT_DEAF, GENETIC_MUTATION) /datum/mutation/human/deaf/on_losing(mob/living/carbon/human/owner) if(..()) return - owner.remove_disability(DISABILITY_DEAF, GENETIC_MUTATION) + owner.remove_trait(TRAIT_DEAF, GENETIC_MUTATION) //Monified turns you into a monkey. diff --git a/code/datums/mutations/hulk.dm b/code/datums/mutations/hulk.dm index 9340361930..0debfdb6a0 100644 --- a/code/datums/mutations/hulk.dm +++ b/code/datums/mutations/hulk.dm @@ -5,14 +5,14 @@ get_chance = 15 lowest_value = 256 * 12 text_gain_indication = "Your muscles hurt!" - species_allowed = list("human") //no skeleton/lizard hulk + species_allowed = list("fly") //no skeleton/lizard hulk health_req = 25 /datum/mutation/human/hulk/on_acquiring(mob/living/carbon/human/owner) if(..()) return - var/status = CANSTUN | CANKNOCKDOWN | CANUNCONSCIOUS | CANPUSH - owner.status_flags &= ~status + owner.add_trait(TRAIT_STUNIMMUNE, TRAIT_HULK) + owner.add_trait(TRAIT_PUSHIMMUNE, TRAIT_HULK) owner.update_body_parts() /datum/mutation/human/hulk/on_attack_hand(mob/living/carbon/human/owner, atom/target, proximity) @@ -27,7 +27,8 @@ /datum/mutation/human/hulk/on_losing(mob/living/carbon/human/owner) if(..()) return - owner.status_flags |= CANSTUN | CANKNOCKDOWN | CANUNCONSCIOUS | CANPUSH + owner.remove_trait(TRAIT_STUNIMMUNE, TRAIT_HULK) + owner.remove_trait(TRAIT_PUSHIMMUNE, TRAIT_HULK) owner.update_body_parts() /datum/mutation/human/hulk/say_mod(message) diff --git a/code/datums/mutations/speech.dm b/code/datums/mutations/speech.dm index 989a9221b0..3f303535ce 100644 --- a/code/datums/mutations/speech.dm +++ b/code/datums/mutations/speech.dm @@ -30,12 +30,12 @@ /datum/mutation/human/mute/on_acquiring(mob/living/carbon/human/owner) if(..()) return - owner.add_disability(DISABILITY_MUTE, GENETIC_MUTATION) + owner.add_trait(TRAIT_MUTE, GENETIC_MUTATION) /datum/mutation/human/mute/on_losing(mob/living/carbon/human/owner) if(..()) return - owner.remove_disability(DISABILITY_MUTE, GENETIC_MUTATION) + owner.remove_trait(TRAIT_MUTE, GENETIC_MUTATION) /datum/mutation/human/smile diff --git a/code/datums/shuttles.dm b/code/datums/shuttles.dm index 1a0c19f5ab..404c584fd4 100644 --- a/code/datums/shuttles.dm +++ b/code/datums/shuttles.dm @@ -40,6 +40,28 @@ /datum/map_template/shuttle/whiteship port_id = "whiteship" +/datum/map_template/shuttle/labour + port_id = "labour" + can_be_bought = FALSE + +/datum/map_template/shuttle/mining + port_id = "mining" + can_be_bought = FALSE + +/datum/map_template/shuttle/cargo + port_id = "cargo" + can_be_bought = FALSE + +/datum/map_template/shuttle/arrival + port_id = "arrival" + can_be_bought = FALSE + +/datum/map_template/shuttle/infiltrator + port_id = "infiltrator" + can_be_bought = FALSE + + + // Shuttles start here: /datum/map_template/shuttle/emergency/airless @@ -100,7 +122,7 @@ description = "The glorious results of centuries of plasma research done by Nanotrasen employees. This is the reason why you are here. Get on and dance like you're on fire, burn baby burn!" admin_notes = "Flaming hot." credit_cost = 10000 - + /datum/map_template/shuttle/emergency/arena suffix = "arena" name = "The Arena" @@ -218,6 +240,12 @@ admin_notes = "If the crew can solve the puzzle, they will wake the wabbajack statue. It will likely not end well. There's a reason it's boarded up. Maybe they should have just left it alone." credit_cost = 15000 +/datum/map_template/shuttle/emergency/omega + suffix = "omega" + name = "Omegastation Emergency Shuttle" + description = "On the smaller size with a modern design, this shuttle is for the crew who like the cosier things, while still being able to stretch their legs." + credit_cost = 1000 + /datum/map_template/shuttle/ferry/base suffix = "base" name = "transport ferry" @@ -240,13 +268,18 @@ Fulfilling needs you didn't even know you had. We've got EVERYTHING, and something else!" admin_notes = "Currently larger than ferry docking port on Box, will not hit anything, but must be force docked. Trader and ERT bodyguards are not included." +/datum/map_template/shuttle/ferry/fancy + suffix = "fancy" + name = "fancy transport ferry" + description = "At some point, someone upgraded the ferry to have fancier flooring... and less seats." + /datum/map_template/shuttle/whiteship/box suffix = "box" name = "NT Medical Ship" /datum/map_template/shuttle/whiteship/meta suffix = "meta" - name = "NT Recovery White-ship" + name = "NT Recovery Whiteship" /datum/map_template/shuttle/whiteship/pubby suffix = "pubby" @@ -256,6 +289,11 @@ suffix = "cere" name = "NT Construction Vessel" +/datum/map_template/shuttle/whiteship/delta + suffix = "delta" + name = "Unnamed NT Vessel" + admin_notes = "The Delta whiteship doesn't have a name, apparently." + /datum/map_template/shuttle/cargo/box suffix = "box" name = "supply shuttle (Box)" @@ -277,3 +315,43 @@ description = "The CentCom Raven Battlecruiser is currently docked at the CentCom ship bay awaiting a mission, this Battlecruiser has been reassigned as an emergency escape shuttle for currently unknown reasons. The CentCom Raven Battlecruiser should comfortably fit a medium to large crew size crew and is complete with all required facitlities including a top of the range CentCom Medical Bay." admin_notes = "The long way home" credit_cost = 12500 + +/datum/map_template/shuttle/arrival/box + suffix = "box" + name = "arrival shuttle (Box)" + +/datum/map_template/shuttle/cargo/box + suffix = "box" + name = "cargo ferry (Box)" + +/datum/map_template/shuttle/mining/box + suffix = "box" + name = "mining shuttle (Box)" + +/datum/map_template/shuttle/labour/box + suffix = "box" + name = "labour shuttle (Box)" + +/datum/map_template/shuttle/infiltrator/basic + suffix = "basic" + name = "basic syndicate infiltrator" + +/datum/map_template/shuttle/cargo/delta + suffix = "delta" + name = "cargo ferry (Delta)" + +/datum/map_template/shuttle/mining/delta + suffix = "delta" + name = "mining shuttle (Delta)" + +/datum/map_template/shuttle/labour/delta + suffix = "delta" + name = "labour shuttle (Delta)" + +/datum/map_template/shuttle/arrival/delta + suffix = "delta" + name = "arrival shuttle (Delta)" + +/datum/map_template/shuttle/arrival/pubby + suffix = "pubby" + name = "arrival shuttle (Pubby)" diff --git a/code/datums/wires/airlock.dm b/code/datums/wires/airlock.dm index 2690ae5150..5a01227b03 100644 --- a/code/datums/wires/airlock.dm +++ b/code/datums/wires/airlock.dm @@ -28,7 +28,7 @@ var/list/status = list() status += "The door bolts [A.locked ? "have fallen!" : "look up."]" status += "The test light is [A.hasPower() ? "on" : "off"]." - status += "The AI connection light is [A.aiControlDisabled || A.emagged ? "off" : "on"]." + status += "The AI connection light is [A.aiControlDisabled || (A.obj_flags & EMAGGED) ? "off" : "on"]." status += "The check wiring light is [A.safe ? "off" : "on"]." status += "The timer is powered [A.autoclose ? "on" : "off"]." status += "The speed light is [A.normalspeed ? "on" : "off"]." @@ -44,7 +44,7 @@ if(WIRE_BACKUP1, WIRE_BACKUP2) // Pulse to loose backup power. A.loseBackupPower() if(WIRE_OPEN) // Pulse to open door (only works not emagged and ID wire is cut or no access is required). - if(A.emagged) + if(A.obj_flags & EMAGGED) return if(!A.requiresID() || A.check_access(null)) if(A.density) diff --git a/code/game/area/areas/shuttles.dm b/code/game/area/areas/shuttles.dm index b0edb3b420..7d0283e104 100644 --- a/code/game/area/areas/shuttles.dm +++ b/code/game/area/areas/shuttles.dm @@ -140,3 +140,28 @@ /area/shuttle/syndicate_scout name = "Syndicate Scout" blob_allowed = FALSE + +/area/shuttle/caravan + blob_allowed = FALSE + requires_power = TRUE + +/area/shuttle/caravan/syndicate1 + name = "Syndicate Fighter" + +/area/shuttle/caravan/syndicate2 + name = "Syndicate Fighter" + +/area/shuttle/caravan/syndicate3 + name = "Syndicate Drop Ship" + +/area/shuttle/caravan/pirate + name = "Pirate Cutter" + +/area/shuttle/caravan/freighter1 + name = "Small Freighter" + +/area/shuttle/caravan/freighter2 + name = "Tiny Freighter" + +/area/shuttle/caravan/freighter3 + name = "Tiny Freighter" \ No newline at end of file diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 7100dfb439..5500c5bb6f 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -531,21 +531,41 @@ /atom/proc/return_temperature() return -// Default tool behaviors proc +// Tool behavior procedure. Redirects to tool-specific procs by default. +// You can override it to catch all tool interactions, for use in complex deconstruction procs. +// Just don't forget to return ..() in the end. +/atom/proc/tool_act(mob/living/user, obj/item/tool, tool_type) + switch(tool_type) + if(TOOL_CROWBAR) + return crowbar_act(user, tool) + if(TOOL_MULTITOOL) + return multitool_act(user, tool) + if(TOOL_SCREWDRIVER) + return screwdriver_act(user, tool) + if(TOOL_WRENCH) + return wrench_act(user, tool) + if(TOOL_WIRECUTTER) + return wirecutter_act(user, tool) + if(TOOL_WELDER) + return welder_act(user, tool) -/atom/proc/crowbar_act(mob/user, obj/item/tool) +// Tool-specific behavior procs. To be overridden in subtypes. +/atom/proc/crowbar_act(mob/living/user, obj/item/tool) return -/atom/proc/multitool_act(mob/user, obj/item/tool) +/atom/proc/multitool_act(mob/living/user, obj/item/tool) return -/atom/proc/screwdriver_act(mob/user, obj/item/tool) +/atom/proc/screwdriver_act(mob/living/user, obj/item/tool) return -/atom/proc/wrench_act(mob/user, obj/item/tool) +/atom/proc/wrench_act(mob/living/user, obj/item/tool) return -/atom/proc/wirecutter_act(mob/user, obj/item/tool) +/atom/proc/wirecutter_act(mob/living/user, obj/item/tool) + return + +/atom/proc/welder_act(mob/living/user, obj/item/tool) return /atom/proc/GenerateTag() diff --git a/code/game/data_huds.dm b/code/game/data_huds.dm index 74ac93c023..1adddf7d58 100644 --- a/code/game/data_huds.dm +++ b/code/game/data_huds.dm @@ -87,7 +87,7 @@ //helper for getting the appropriate health status /proc/RoundHealth(mob/living/M) - if(M.stat == DEAD || (M.status_flags & FAKEDEATH)) + if(M.stat == DEAD || (M.has_trait(TRAIT_FAKEDEATH))) return "health-100" //what's our health? it doesn't matter, we're dead, or faking var/maxi_health = M.maxHealth if(iscarbon(M) && M.health < 0) @@ -167,7 +167,7 @@ var/image/holder = hud_list[STATUS_HUD] var/icon/I = icon(icon, icon_state, dir) holder.pixel_y = I.Height() - world.icon_size - if(stat == DEAD || (status_flags & FAKEDEATH)) + if(stat == DEAD || (has_trait(TRAIT_FAKEDEATH))) holder.icon_state = "huddead" else holder.icon_state = "hudhealthy" @@ -177,9 +177,9 @@ var/icon/I = icon(icon, icon_state, dir) var/virus_threat = check_virus() holder.pixel_y = I.Height() - world.icon_size - if(status_flags & XENO_HOST) + if(has_trait(TRAIT_XENO_HOST)) holder.icon_state = "hudxeno" - else if(stat == DEAD || (status_flags & FAKEDEATH)) + else if(stat == DEAD || (has_trait(TRAIT_FAKEDEATH))) holder.icon_state = "huddead" else switch(virus_threat) diff --git a/code/game/gamemodes/blob/blob.dm b/code/game/gamemodes/blob/blob.dm deleted file mode 100644 index ddb87e20f6..0000000000 --- a/code/game/gamemodes/blob/blob.dm +++ /dev/null @@ -1,109 +0,0 @@ -//Few global vars to track the blob -GLOBAL_LIST_EMPTY(blobs) //complete list of all blobs made. -GLOBAL_LIST_EMPTY(blob_cores) -GLOBAL_LIST_EMPTY(overminds) -GLOBAL_LIST_EMPTY(blob_nodes) -GLOBAL_LIST_EMPTY(blobs_legit) //used for win-score calculations, contains only blobs counted for win condition - -#define BLOB_NO_PLACE_TIME 1800 //time, in deciseconds, blobs are prevented from bursting in the gamemode - -/datum/game_mode/blob - name = "blob" - config_tag = "blob" - antag_flag = ROLE_BLOB - false_report_weight = 5 - - required_players = 25 - required_enemies = 1 - recommended_enemies = 1 - - round_ends_with_antag_death = 1 - - announce_span = "green" - announce_text = "Dangerous gelatinous organisms are spreading throughout the station!\n\ - Blobs: Consume the station and spread as far as you can.\n\ - Crew: Fight back the blobs and minimize station damage." - - var/message_sent = FALSE - - var/cores_to_spawn = 1 - var/players_per_core = 25 - var/blob_point_rate = 3 - var/blob_base_starting_points = 80 - - var/blobwincount = 250 - - var/messagedelay_low = 2400 //in deciseconds - var/messagedelay_high = 3600 //blob report will be sent after a random value between these (minimum 4 minutes, maximum 6 minutes) - - var/list/blob_overminds = list() - -/datum/game_mode/blob/pre_setup() - cores_to_spawn = max(round(num_players()/players_per_core, 1), 1) - - var/win_multiplier = 1 + (0.1 * cores_to_spawn) - blobwincount = initial(blobwincount) * cores_to_spawn * win_multiplier - - for(var/j = 0, j < cores_to_spawn, j++) - if (!antag_candidates.len) - break - var/datum/mind/blob = pick(antag_candidates) - blob_overminds += blob - blob.assigned_role = "Blob" - blob.special_role = "Blob" - log_game("[blob.key] (ckey) has been selected as a Blob") - antag_candidates -= blob - - if(!blob_overminds.len) - return 0 - - return 1 - -/datum/game_mode/blob/proc/get_blob_candidates() - var/list/candidates = list() - for(var/mob/living/carbon/human/player in GLOB.player_list) - if(!player.stat && player.mind && !player.mind.special_role && !jobban_isbanned(player, "Syndicate") && (ROLE_BLOB in player.client.prefs.be_special)) - if(age_check(player.client)) - candidates += player - return candidates - -/datum/game_mode/blob/proc/show_message(message) - for(var/datum/mind/blob in blob_overminds) - to_chat(blob.current, message) - -/datum/game_mode/blob/post_setup() - set waitfor = FALSE - - for(var/datum/mind/blob in blob_overminds) - var/mob/camera/blob/B = blob.current.become_overmind(TRUE, round(blob_base_starting_points/blob_overminds.len)) - B.mind.name = B.name - var/turf/T = pick(GLOB.blobstart) - B.forceMove(T) - B.base_point_rate = blob_point_rate - - SSshuttle.registerHostileEnvironment(src) - - // Disable the blob event for this round. - var/datum/round_event_control/blob/B = locate() in SSevents.control - if(B) - B.max_occurrences = 0 // disable the event - - . = ..() - - var/message_delay = rand(messagedelay_low, messagedelay_high) //between 4 and 6 minutes with 2400 low and 3600 high. - - sleep(message_delay) - - send_intercept(1) - message_sent = TRUE - addtimer(CALLBACK(src, .proc/SendSecondIntercept), 24000) - -/datum/game_mode/blob/proc/SendSecondIntercept() - if(!replacementmode) - send_intercept(2) //if the blob has been alive this long, it's time to bomb it - -/datum/game_mode/blob/generate_report() - return "A CMP scientist by the name of [pick("Griff", "Pasteur", "Chamberland", "Buist", "Rivers", "Stanley")] boasted about his corporation's \"finest creation\" - a macrobiological \ - virus capable of self-reproduction and hellbent on consuming whatever it touches. He went on to query Cybersun for permission to utilize the virus in biochemical warfare, to which \ - CMP subsequently gained. Be vigilant for any large organisms rapidly spreading across the station, as they are classified as a level 5 biohazard and critically dangerous. Note that \ - this organism seems to be weak to extreme heat; concentrated fire (such as welding tools and lasers) will be effective against it." diff --git a/code/game/gamemodes/clock_cult/clock_helpers/proselytizer_helpers.dm b/code/game/gamemodes/clock_cult/clock_helpers/proselytizer_helpers.dm deleted file mode 100644 index e103bc2de4..0000000000 --- a/code/game/gamemodes/clock_cult/clock_helpers/proselytizer_helpers.dm +++ /dev/null @@ -1,393 +0,0 @@ -//For the clockwork proselytizer, this proc exists to make it easy to customize what the proselytizer does when hitting something. - -//if a valid target, returns an associated list in this format; -//list("operation_time" = 15, "new_obj_type" = /obj/structure/window/reinforced/clockwork, "power_cost" = 5, "spawn_dir" = dir, "dir_in_new" = TRUE) -//otherwise, return literally any non-list thing but preferably FALSE -//returning TRUE won't produce the "cannot be proselytized" message and will still prevent proselytizing - -/atom/proc/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - return FALSE - -//Turf conversion -/turf/closed/wall/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) //four sheets of metal - return list("operation_time" = 50, "new_obj_type" = /turf/closed/wall/clockwork, "power_cost" = POWER_WALL_TOTAL - (POWER_METAL * 4), "spawn_dir" = SOUTH) - -/turf/closed/wall/mineral/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) //two sheets of metal - return list("operation_time" = 50, "new_obj_type" = /turf/closed/wall/clockwork, "power_cost" = POWER_WALL_TOTAL - (POWER_METAL * 2), "spawn_dir" = SOUTH) - -/turf/closed/wall/mineral/iron/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) //two sheets of metal, five rods - return list("operation_time" = 50, "new_obj_type" = /turf/closed/wall/clockwork, "power_cost" = POWER_WALL_TOTAL - (POWER_METAL * 2) - (POWER_ROD * 5), "spawn_dir" = SOUTH) - -/turf/closed/wall/mineral/cult/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) //no metal - return list("operation_time" = 80, "new_obj_type" = /turf/closed/wall/clockwork, "power_cost" = POWER_WALL_TOTAL, "spawn_dir" = SOUTH) - -/turf/closed/wall/shuttle/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) //two sheets of metal - return list("operation_time" = 50, "new_obj_type" = /turf/closed/wall/clockwork, "power_cost" = POWER_WALL_TOTAL - (POWER_METAL * 2), "spawn_dir" = SOUTH) - -/turf/closed/wall/r_wall/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - return FALSE - -/turf/closed/wall/clockwork/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - return list("operation_time" = 50, "new_obj_type" = /turf/open/floor/clockwork, "power_cost" = -POWER_WALL_MINUS_FLOOR, "spawn_dir" = SOUTH) - -/turf/open/floor/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - if(floor_tile == /obj/item/stack/tile/plasteel) - new floor_tile(src) - make_plating() - playsound(src, 'sound/items/Crowbar.ogg', 10, 1) //clink - return list("operation_time" = 30, "new_obj_type" = /turf/open/floor/clockwork, "power_cost" = POWER_FLOOR, "spawn_dir" = SOUTH) - -/turf/open/floor/plating/asteroid/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - return FALSE - -/turf/open/floor/plating/ashplanet/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - return FALSE - -/turf/open/floor/plating/lava/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - return FALSE - -/turf/open/floor/clockwork/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - if(locate(/obj/structure/table) in src) - return FALSE - if(locate(/obj/structure/falsewall) in contents) - to_chat(user, "There is a false wall in the way, preventing you from proselytizing [src] into a clockwork wall.") - return - if(is_blocked_turf(src, TRUE)) - to_chat(user, "Something is in the way, preventing you from proselytizing [src] into a clockwork wall.") - return TRUE - var/operation_time = 100 - if(proselytizer.speed_multiplier > 0) - operation_time /= proselytizer.speed_multiplier - return list("operation_time" = operation_time, "new_obj_type" = /turf/closed/wall/clockwork, "power_cost" = POWER_WALL_MINUS_FLOOR, "spawn_dir" = SOUTH) - -//False wall conversion -/obj/structure/falsewall/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - var/cost = POWER_WALL_MINUS_FLOOR - if(ispath(mineral, /obj/item/stack/sheet/metal)) - cost -= (POWER_METAL * (2 + mineral_amount)) //four sheets of metal, plus an assumption that the girder is also two - else - cost -= (POWER_METAL * 2) //anything that doesn't use metal just has the girder - return list("operation_time" = 50, "new_obj_type" = /obj/structure/falsewall/brass, "power_cost" = cost, "spawn_dir" = SOUTH) - -/obj/structure/falsewall/iron/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) //two sheets of metal, two rods; special assumption - return list("operation_time" = 50, "new_obj_type" = /obj/structure/falsewall/brass, "power_cost" = POWER_WALL_MINUS_FLOOR - (POWER_METAL * 2) - (POWER_ROD * 2), "spawn_dir" = SOUTH) - -/obj/structure/falsewall/reinforced/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - return FALSE - -/obj/structure/falsewall/brass/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - return FALSE - -//Metal conversion -/obj/item/stack/tile/plasteel/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - if(source) - return FALSE - var/amount_temp = get_amount() - if(proselytizer.metal_to_power) - var/no_delete = FALSE - if(amount_temp < 2) - to_chat(user, "You need at least 2 floor tiles to convert into power.") - return TRUE - if(IsOdd(amount_temp)) - amount_temp-- - no_delete = TRUE - use(amount_temp) - amount_temp *= 12.5 //each tile is 12.5 power so this is 2 tiles to 25 power - return list("operation_time" = 0, "new_obj_type" = /obj/effect/temp_visual/ratvar/beam/itemconsume, "power_cost" = -amount_temp, "spawn_dir" = SOUTH, "no_target_deletion" = no_delete) - if(amount_temp >= 20) - var/sheets_to_make = round(amount_temp * 0.05) //and 20 to 1 brass - var/used = sheets_to_make * 20 - user.visible_message("[user]'s [proselytizer.name] rips into [src], converting it to brass!", \ - "You convert [get_amount() - used > 0 ? "part of ":""][src] into brass...") - playsound(src, 'sound/machines/click.ogg', 50, 1) - playsound(src, 'sound/items/Deconstruct.ogg', 50, 1) - new /obj/item/stack/tile/brass(get_turf(src), sheets_to_make) - use(used) - else - to_chat(user, "You need at least 20 floor tiles to convert into brass.") - return TRUE - -/obj/item/stack/rods/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - if(source) - return FALSE - if(proselytizer.metal_to_power) - return list("operation_time" = 0, "new_obj_type" = /obj/effect/temp_visual/ratvar/beam/itemconsume, "power_cost" = -(amount*POWER_ROD), "spawn_dir" = SOUTH) - if(get_amount() >= 10) - var/sheets_to_make = round(get_amount() * 0.1) - var/used = sheets_to_make * 10 - user.visible_message("[user]'s [proselytizer.name] rips into [src], converting it to brass!", \ - "You convert [get_amount() - used > 0 ? "part of ":""][src] into brass...") - playsound(src, 'sound/machines/click.ogg', 50, 1) - playsound(src, 'sound/items/Deconstruct.ogg', 50, 1) - new /obj/item/stack/tile/brass(get_turf(src), sheets_to_make) - use(used) - else - to_chat(user, "You need at least 10 rods to convert into brass.") - return TRUE - -/obj/item/stack/sheet/metal/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - if(source) - return FALSE - if(proselytizer.metal_to_power) - return list("operation_time" = 0, "new_obj_type" = /obj/effect/temp_visual/ratvar/beam/itemconsume, "power_cost" = -(amount*POWER_METAL), "spawn_dir" = SOUTH) - if(get_amount() >= 5) - var/sheets_to_make = round(get_amount() * 0.2) - var/used = sheets_to_make * 5 - user.visible_message("[user]'s [proselytizer.name] rips into [src], converting it to brass!", \ - "You convert [get_amount() - used > 0 ? "part of ":""][src] into brass...") - playsound(src, 'sound/machines/click.ogg', 50, 1) - playsound(src, 'sound/items/Deconstruct.ogg', 50, 1) - new /obj/item/stack/tile/brass(get_turf(src), sheets_to_make) - use(used) - else - to_chat(user, "You need at least 5 sheets of metal to convert into brass.") - return TRUE - -/obj/item/stack/sheet/plasteel/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - if(source) - return FALSE - if(proselytizer.metal_to_power) - return list("operation_time" = 0, "new_obj_type" = /obj/effect/temp_visual/ratvar/beam/itemconsume, "power_cost" = -(amount*POWER_PLASTEEL), "spawn_dir" = SOUTH) - if(get_amount() >= 2) - var/sheets_to_make = round(get_amount() * 0.5) - var/used = sheets_to_make * 2 - user.visible_message("[user]'s [proselytizer.name] rips into [src], converting it to brass!", \ - "You convert [get_amount() - used > 0 ? "part of ":""][src] into brass...") - playsound(src, 'sound/machines/click.ogg', 50, 1) - playsound(src, 'sound/items/Deconstruct.ogg', 50, 1) - new /obj/item/stack/tile/brass(get_turf(src), sheets_to_make) - use(used) - else - to_chat(user, "You need at least 2 sheets of plasteel to convert into brass.") - return TRUE - -//Brass directly to power -/obj/item/stack/tile/brass/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - if(source) - return FALSE - return list("operation_time" = 0, "new_obj_type" = /obj/effect/temp_visual/ratvar/beam/itemconsume, "power_cost" = -(amount*POWER_FLOOR), "spawn_dir" = SOUTH) - -//Airlock conversion -/obj/machinery/door/airlock/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - var/doortype = /obj/machinery/door/airlock/clockwork - if(glass) - doortype = /obj/machinery/door/airlock/clockwork/brass - return list("operation_time" = 60, "new_obj_type" = doortype, "power_cost" = POWER_WALL_TOTAL, "spawn_dir" = dir) - -/obj/machinery/door/airlock/clockwork/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - return FALSE - -//Table conversion -/obj/structure/table/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - var/prosel_cost = POWER_STANDARD - if(framestack == /obj/item/stack/rods) - prosel_cost -= POWER_ROD*framestackamount - else if(framestack == /obj/item/stack/tile/brass) - prosel_cost -= POWER_FLOOR*framestackamount - if(buildstack == /obj/item/stack/sheet/metal) - prosel_cost -= POWER_METAL*buildstackamount - else if(buildstack == /obj/item/stack/sheet/plasteel) - prosel_cost -= POWER_PLASTEEL*buildstackamount - return list("operation_time" = 20, "new_obj_type" = /obj/structure/table/reinforced/brass, "power_cost" = prosel_cost, "spawn_dir" = SOUTH) - -/obj/structure/table/reinforced/brass/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - return FALSE - -/obj/structure/table_frame/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - var/prosel_cost = POWER_FLOOR - if(framestack == /obj/item/stack/rods) - prosel_cost -= POWER_ROD*framestackamount - else if(framestack == /obj/item/stack/tile/brass) - prosel_cost -= POWER_FLOOR*framestackamount - return list("operation_time" = 10, "new_obj_type" = /obj/structure/table_frame/brass, "power_cost" = prosel_cost, "spawn_dir" = SOUTH) - -/obj/structure/table_frame/brass/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - return FALSE - -//Window conversion -/obj/structure/window/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - var/windowtype = /obj/structure/window/reinforced/clockwork - var/new_dir = TRUE - var/prosel_time = 15 - var/prosel_cost = POWER_FLOOR - if(fulltile) - windowtype = /obj/structure/window/reinforced/clockwork/fulltile - new_dir = FALSE - prosel_time = 30 - prosel_cost = POWER_STANDARD - if(reinf) - prosel_cost -= POWER_ROD - if(reinf) - prosel_cost -= POWER_ROD - for(var/obj/structure/grille/G in get_turf(src)) - INVOKE_ASYNC(proselytizer, /obj/item/clockwork/clockwork_proselytizer.proc/proselytize, G, user) - return list("operation_time" = prosel_time, "new_obj_type" = windowtype, "power_cost" = prosel_cost, "spawn_dir" = dir, "dir_in_new" = new_dir) - -/obj/structure/window/reinforced/clockwork/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - return FALSE - -//Windoor conversion -/obj/machinery/door/window/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - return list("operation_time" = 30, "new_obj_type" = /obj/machinery/door/window/clockwork, "power_cost" = POWER_STANDARD, "spawn_dir" = dir, "dir_in_new" = TRUE) - -/obj/machinery/door/window/clockwork/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - return FALSE - -//Grille conversion -/obj/structure/grille/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - var/grilletype = /obj/structure/grille/ratvar - var/prosel_time = 15 - if(broken) - grilletype = /obj/structure/grille/ratvar/broken - prosel_time = 5 - return list("operation_time" = prosel_time, "new_obj_type" = grilletype, "power_cost" = 0, "spawn_dir" = dir) - -/obj/structure/grille/ratvar/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - return FALSE - -//Lattice conversion -/obj/structure/lattice/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - return list("operation_time" = 0, "new_obj_type" = /obj/structure/lattice/clockwork, "power_cost" = 0, "spawn_dir" = SOUTH, "no_target_deletion" = TRUE) - -/obj/structure/lattice/clockwork/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - ratvar_act() //just in case we're the wrong type for some reason?? - return FALSE - -/obj/structure/lattice/catwalk/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - return list("operation_time" = 0, "new_obj_type" = /obj/structure/lattice/catwalk/clockwork, "power_cost" = 0, "spawn_dir" = SOUTH, "no_target_deletion" = TRUE) - -/obj/structure/lattice/catwalk/clockwork/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - return FALSE - -//Girder conversion -/obj/structure/girder/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - var/prosel_cost = POWER_GEAR - (POWER_METAL * 2) - if(state == GIRDER_REINF_STRUTS || state == GIRDER_REINF) - prosel_cost -= POWER_PLASTEEL - return list("operation_time" = 20, "new_obj_type" = /obj/structure/destructible/clockwork/wall_gear, "power_cost" = prosel_cost, "spawn_dir" = SOUTH) - -//Hitting a clockwork structure will try to repair it. -/obj/structure/destructible/clockwork/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - . = TRUE - var/list/repair_values = list() - if(!proselytizer.proselytizer_repair_checks(repair_values, src, user)) - return - user.visible_message("[user]'s [proselytizer.name] starts covering [src] in glowing orange energy...", \ - "You start repairing [src]...") - proselytizer.repairing = src - while(proselytizer && user && src) - if(!do_after(user, repair_values["healing_for_cycle"] * proselytizer.speed_multiplier, target = src, \ - extra_checks = CALLBACK(proselytizer, /obj/item/clockwork/clockwork_proselytizer.proc/proselytizer_repair_checks, repair_values, src, user, TRUE))) - break - obj_integrity = Clamp(obj_integrity + repair_values["healing_for_cycle"], 0, max_integrity) - proselytizer.modify_stored_power(-repair_values["power_required"]) - playsound(src, 'sound/machines/click.ogg', 50, 1) - - if(proselytizer) - proselytizer.repairing = null - if(user) - user.visible_message("[user]'s [proselytizer.name] stops covering [src] with glowing orange energy.", \ - "You finish repairing [src]. It is now at [obj_integrity]/[max_integrity] integrity.") - -//Hitting a sigil of transmission will try to charge from it. -/obj/effect/clockwork/sigil/transmission/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - . = TRUE - var/list/charge_values = list() - if(!proselytizer.sigil_charge_checks(charge_values, src, user)) - return - user.visible_message("[user]'s [proselytizer.name] starts draining glowing orange energy from [src]...", \ - "You start recharging your [proselytizer.name]...") - proselytizer.recharging = src - while(proselytizer && user && src) - if(!do_after(user, 10, target = src, extra_checks = CALLBACK(proselytizer, /obj/item/clockwork/clockwork_proselytizer.proc/sigil_charge_checks, charge_values, src, user, TRUE))) - break - modify_charge(charge_values["power_gain"]) - proselytizer.modify_stored_power(charge_values["power_gain"]) - playsound(src, 'sound/effects/light_flicker.ogg', charge_values["power_gain"] * 0.1, 1) - - if(proselytizer) - proselytizer.recharging = null - if(user) - user.visible_message("[user]'s [proselytizer.name] stops draining glowing orange energy from [src].", \ - "You finish recharging your [proselytizer.name]. It now contains [proselytizer.get_power()]W/[proselytizer.get_max_power()]W power.") - -//Proselytizer mob heal proc, to avoid as much copypaste as possible. -/mob/living/proc/proselytizer_heal(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - var/list/repair_values = list() - if(!proselytizer.proselytizer_repair_checks(repair_values, src, user)) - return - user.visible_message("[user]'s [proselytizer.name] starts coverin[src == user ? "g [user.p_them()]" : "g [src]"] in glowing orange energy...", \ - "You start repairin[src == user ? "g yourself" : "g [src]"]...") - proselytizer.repairing = src - while(proselytizer && user && src) - if(!do_after(user, repair_values["healing_for_cycle"] * proselytizer.speed_multiplier, target = src, \ - extra_checks = CALLBACK(proselytizer, /obj/item/clockwork/clockwork_proselytizer.proc/proselytizer_repair_checks, repair_values, src, user, TRUE))) - break - proselytizer_heal_tick(repair_values["healing_for_cycle"]) - proselytizer.modify_stored_power(-repair_values["power_required"]) - playsound(src, 'sound/machines/click.ogg', 50, 1) - - if(proselytizer) - proselytizer.repairing = null - - return TRUE - -/mob/living/proc/proselytizer_heal_tick(amount) - var/static/list/damage_heal_order = list(BRUTE, BURN, TOX, OXY) - heal_ordered_damage(amount, damage_heal_order) - -/mob/living/simple_animal/proselytizer_heal_tick(amount) - adjustHealth(-amount) - -//Hitting a ratvar'd silicon will also try to repair it. -/mob/living/silicon/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - . = TRUE - if(health == maxHealth) //if we're at maximum health, prosel the turf under us - return FALSE - else if(proselytizer_heal(user, proselytizer) && user) - user.visible_message("[user]'s [proselytizer.name] stops coverin[src == user ? "g [user.p_them()]" : "g [src]"] with glowing orange energy.", \ - "You finish repairin[src == user ? "g yourself. You are":"g [src]. [p_they(TRUE)] [p_are()]"] now at [abs(HEALTH_THRESHOLD_DEAD - health)]/[abs(HEALTH_THRESHOLD_DEAD - maxHealth)] health.") - -//Same with clockwork mobs. -/mob/living/simple_animal/hostile/clockwork/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - . = TRUE - if(health == maxHealth) //if we're at maximum health, prosel the turf under us - return FALSE - else if(proselytizer_heal(user, proselytizer) && user) - user.visible_message("[user]'s [proselytizer.name] stops coverin[src == user ? "g [user.p_them()]" : "g [src]"] with glowing orange energy.", \ - "You finish repairin[src == user ? "g yourself. You are":"g [src]. [p_they(TRUE)] [p_are()]"] now at [health]/[maxHealth] health.") - -//Cogscarabs get special interaction because they're drones and have innate self-heals/revives. -/mob/living/simple_animal/drone/cogscarab/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - . = TRUE - if(stat == DEAD) - try_reactivate(user) //if we're at maximum health, prosel the turf under us - return - if(health == maxHealth) - return FALSE - else if(!(flags_1 & GODMODE)) - user.visible_message("[user]'s [proselytizer.name] starts coverin[src == user ? "g [user.p_them()]" : "g [src]"] in glowing orange energy...", \ - "You start repairin[src == user ? "g yourself" : "g [src]"]...") - proselytizer.repairing = src - if(do_after(user, (maxHealth - health)*2, target=src)) - adjustHealth(-maxHealth) - user.visible_message("[user]'s [proselytizer.name] stops coverin[src == user ? "g [user.p_them()]" : "g [src]"] with glowing orange energy.", \ - "You finish repairin[src == user ? "g yourself" : "g [src]"].") - if(proselytizer) - proselytizer.repairing = null - -//Convert shards and gear bits directly to power -/obj/item/clockwork/alloy_shards/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - return list("operation_time" = 0, "new_obj_type" = /obj/effect/temp_visual/ratvar/beam/itemconsume, "power_cost" = -POWER_STANDARD, "spawn_dir" = SOUTH) - -/obj/item/clockwork/alloy_shards/medium/gear_bit/large/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - return list("operation_time" = 0, "new_obj_type" = /obj/effect/temp_visual/ratvar/beam/itemconsume, "power_cost" = -(CLOCKCULT_POWER_UNIT*0.08), "spawn_dir" = SOUTH) - -/obj/item/clockwork/alloy_shards/large/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - return list("operation_time" = 0, "new_obj_type" = /obj/effect/temp_visual/ratvar/beam/itemconsume, "power_cost" = -(CLOCKCULT_POWER_UNIT*0.06), "spawn_dir" = SOUTH) - -/obj/item/clockwork/alloy_shards/medium/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - return list("operation_time" = 0, "new_obj_type" = /obj/effect/temp_visual/ratvar/beam/itemconsume, "power_cost" = -(CLOCKCULT_POWER_UNIT*0.04), "spawn_dir" = SOUTH) - -/obj/item/clockwork/alloy_shards/small/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - return list("operation_time" = 0, "new_obj_type" = /obj/effect/temp_visual/ratvar/beam/itemconsume, "power_cost" = -(CLOCKCULT_POWER_UNIT*0.02), "spawn_dir" = SOUTH) \ No newline at end of file diff --git a/code/game/gamemodes/clock_cult/clock_mobs/anima_fragment.dm b/code/game/gamemodes/clock_cult/clock_mobs/anima_fragment.dm deleted file mode 100644 index 2df47705a4..0000000000 --- a/code/game/gamemodes/clock_cult/clock_mobs/anima_fragment.dm +++ /dev/null @@ -1,93 +0,0 @@ -//Anima fragment: Low health and high melee damage, but slows down when struck. Created by inserting a soul vessel into an empty fragment. -/mob/living/simple_animal/hostile/clockwork/fragment - name = "anima fragment" - desc = "An ominous humanoid shell with a spinning cogwheel as its head, lifted by a jet of blazing red flame." - icon_state = "anime_fragment" - health = 90 - maxHealth = 90 - speed = -1 - melee_damage_lower = 18 - melee_damage_upper = 18 - attacktext = "crushes" - attack_sound = 'sound/magic/clockwork/anima_fragment_attack.ogg' - loot = list(/obj/item/clockwork/component/replicant_alloy/smashed_anima_fragment) - weather_immunities = list("lava") - movement_type = FLYING - light_range = 2 - light_power = 0.8 - playstyle_string = "You are an anima fragment, a clockwork creation of Ratvar. As a fragment, you have decent health that very gradually regenerates, do \ - decent damage, and move at extreme speed in addition to being immune to extreme temperatures and pressures. Taking damage, and slamming into non-Servants, will temporarily slow you down, however.\n\ - Your goal is to serve the Justiciar and his servants in any way you can. You yourself are one of these servants, and will be able to utilize anything they can, assuming it doesn't require \ - opposable thumbs." - var/movement_delay_time //how long the fragment is slowed after being hit - -/mob/living/simple_animal/hostile/clockwork/fragment/Initialize() - . = ..() - if(prob(1)) - name = "anime fragment" - desc = "I-it's not like I want to show you the light of the Justiciar or anything, B-BAKA!" - -/mob/living/simple_animal/hostile/clockwork/fragment/Life() - ..() - if(GLOB.ratvar_awakens) - adjustHealth(-5) - else if(movement_delay_time > world.time) - adjustHealth(-0.2) - else - adjustHealth(-1) - -/mob/living/simple_animal/hostile/clockwork/fragment/Stat() - ..() - if(statpanel("Status") && movement_delay_time > world.time && !GLOB.ratvar_awakens) - stat(null, "Movement delay(seconds): [max(round((movement_delay_time - world.time)*0.1, 0.1), 0)]") - -/mob/living/simple_animal/hostile/clockwork/fragment/death(gibbed) - visible_message("[src]'s flame jets cut out as it falls to the floor with a tremendous crash.", \ - "Your gears seize up. Your flame jets flicker out. Your soul vessel belches smoke as you helplessly crash down.") - ..() - -/mob/living/simple_animal/hostile/clockwork/fragment/Process_Spacemove(movement_dir = 0) - return 1 - -/mob/living/simple_animal/hostile/clockwork/fragment/Collide(atom/movable/AM) - . = ..() - if(movement_delay_time <= world.time && next_move <= world.time && isliving(AM) && !is_servant_of_ratvar(AM)) - var/mob/living/L = AM - if(L.stat) //we don't want to attack them if they're unconscious or dead because that feels REALLY BAD for the player - return - var/previousattacktext = attacktext - attacktext = "slams into" - UnarmedAttack(L) - attacktext = previousattacktext - changeNext_move(CLICK_CD_MELEE) - if(!GLOB.ratvar_awakens) - adjustHealth(4) - adjust_movement_delay(10) //with the above damage, total of 20 movement delay plus speed = 0 due to damage - -/mob/living/simple_animal/hostile/clockwork/fragment/emp_act(severity) - adjust_movement_delay(50/severity) - -/mob/living/simple_animal/hostile/clockwork/fragment/movement_delay() - . = ..() - if(movement_delay_time > world.time && !GLOB.ratvar_awakens) - . += min((movement_delay_time - world.time) * 0.1, 10) //the more delay we have, the slower we go - -/mob/living/simple_animal/hostile/clockwork/fragment/adjustHealth(amount) - . = ..() - if(amount > 0) - adjust_movement_delay(amount*2.5) - -/mob/living/simple_animal/hostile/clockwork/fragment/proc/adjust_movement_delay(amount) - if(GLOB.ratvar_awakens) //if ratvar is up we ignore movement delay - movement_delay_time = 0 - else if(movement_delay_time > world.time) - movement_delay_time = movement_delay_time + amount - else - movement_delay_time = world.time + amount - -/mob/living/simple_animal/hostile/clockwork/fragment/updatehealth() - ..() - if(health == maxHealth) - speed = initial(speed) - else - speed = 0 //slow down if damaged at all diff --git a/code/game/gamemodes/clock_cult/clock_scriptures/scripture_revenant.dm b/code/game/gamemodes/clock_cult/clock_scriptures/scripture_revenant.dm deleted file mode 100644 index ae54b903b6..0000000000 --- a/code/game/gamemodes/clock_cult/clock_scriptures/scripture_revenant.dm +++ /dev/null @@ -1,211 +0,0 @@ -////////////// -// REVENANT // -////////////// - -//Invoke Inath-neq, the Resonant Cogwheel: Grants invulnerability and stun immunity to everyone nearby for 15 seconds. -/datum/clockwork_scripture/invoke_inathneq - descname = "Area Invulnerability" - name = "Invoke Inath-neq, the Resonant Cogwheel" - desc = "Taps the limitless power of Inath-neq, one of Ratvar's four generals. The benevolence of Inath-Neq will grant complete invulnerability to all Servants in range for fifteen seconds." - invocations = list("I call upon you, Vanguard!!", "Let the Resonant Cogs turn once more!!", "Grant me and my allies the strength to vanquish our foes!!") - channel_time = 100 - consumed_components = list(VANGUARD_COGWHEEL = 10, GEIS_CAPACITOR = 3, REPLICANT_ALLOY = 3, HIEROPHANT_ANSIBLE = 3) - usage_tip = "Servants affected by this scripture are only weak to things that outright destroy bodies, such as bombs or the singularity." - tier = SCRIPTURE_REVENANT - primary_component = VANGUARD_COGWHEEL - sort_priority = 2 - -/datum/clockwork_scripture/invoke_inathneq/check_special_requirements() - if(!slab.no_cost && GLOB.clockwork_generals_invoked["inath-neq"] > world.time) - to_chat(invoker, "\"[text2ratvar("I cannot lend you my aid yet, champion. Please be careful.")]\"\n\ - Inath-neq has already been invoked recently! You must wait several minutes before calling upon the Resonant Cogwheel.") - return FALSE - return TRUE - -/datum/clockwork_scripture/invoke_inathneq/scripture_effects() - new/obj/effect/clockwork/general_marker/inathneq(get_turf(invoker)) - hierophant_message("[text2ratvar("Vanguard: \"I lend you my aid, champions! Let glory guide your blows!")]\"", FALSE, invoker) - GLOB.clockwork_generals_invoked["inath-neq"] = world.time + CLOCKWORK_GENERAL_COOLDOWN - playsound(invoker, 'sound/magic/clockwork/invoke_general.ogg', 50, 0) - if(invoker.real_name == "Lucio") - clockwork_say(invoker, text2ratvar("Aww, let's break it DOWN!!")) - for(var/mob/living/L in range(7, invoker)) - if(!is_servant_of_ratvar(L) || L.stat == DEAD) - continue - L.apply_status_effect(STATUS_EFFECT_INATHNEQS_ENDOWMENT) - return TRUE - - -//Invoke Sevtug, the Formless Pariah: Causes massive global hallucinations, braindamage, confusion, and dizziness to all humans on the same zlevel. -/datum/clockwork_scripture/invoke_sevtug - descname = "Global Hallucination" - name = "Invoke Sevtug, the Formless Pariah" - desc = "Taps the limitless power of Sevtug, one of Ratvar's four generals. The mental manipulation ability of the Pariah allows its wielder to cause mass hallucinations and confusion \ - for all non-servant humans on the same z-level as them. The power of this scripture falls off somewhat with distance, and certain things may reduce its effects." - invocations = list("I call upon you, Fright!!", "Let your power shatter the sanity of the weak-minded!!", "Let your tendrils hold sway over all!!") - channel_time = 150 - consumed_components = list(BELLIGERENT_EYE = 6, VANGUARD_COGWHEEL = 6, GEIS_CAPACITOR = 10, HIEROPHANT_ANSIBLE = 6) - usage_tip = "Causes brain damage, hallucinations, confusion, and dizziness in massive amounts." - tier = SCRIPTURE_REVENANT - sort_priority = 3 - primary_component = GEIS_CAPACITOR - invokers_required = 3 - multiple_invokers_used = TRUE - var/static/list/mindbreaksayings = list("\"Oh, great. I get to shatter some minds.\"", "\"More minds to crush.\"", \ - "\"Really, this is almost boring.\"", "\"None of these minds have anything interesting in them.\"", "\"Maybe I can instill a little bit of terror in this one.\"", \ - "\"What a waste of my power.\"", "\"I'm sure I could just control these minds instead, but they never ask.\"") - -/datum/clockwork_scripture/invoke_sevtug/check_special_requirements() - if(!slab.no_cost && GLOB.clockwork_generals_invoked["sevtug"] > world.time) - to_chat(invoker, "\"[text2ratvar("Is it really so hard - even for a simpleton like you - to grasp the concept of waiting?")]\"\n\ - Sevtug has already been invoked recently! You must wait several minutes before calling upon the Formless Pariah.") - return FALSE - if(!slab.no_cost && GLOB.ratvar_awakens) - to_chat(invoker, "\"[text2ratvar("Do you really think anything I can do right now will compare to Engine's power?")]\"\n\ - Sevtug will not grant his power while Ratvar's dwarfs his own!") - return FALSE - return TRUE - -/datum/clockwork_scripture/invoke_sevtug/scripture_effects() - new/obj/effect/clockwork/general_marker/sevtug(get_turf(invoker)) - hierophant_message("[text2ratvar("Fright: \"I heed your call, idiots. Get going and use this chance while it lasts!")]\"", FALSE, invoker) - GLOB.clockwork_generals_invoked["sevtug"] = world.time + GLOBAL_CLOCKWORK_GENERAL_COOLDOWN - playsound(invoker, 'sound/magic/clockwork/invoke_general.ogg', 50, 0) - var/hum = get_sfx('sound/effects/screech.ogg') //like playsound, same sound for everyone affected - var/turf/T = get_turf(invoker) - for(var/mob/living/carbon/human/H in GLOB.living_mob_list) - if(H.z == invoker.z && !is_servant_of_ratvar(H)) - var/distance = 0 - distance += get_dist(T, get_turf(H)) - var/visualsdistance = max(150 - distance, 5) - var/minordistance = max(200 - distance*2, 5) - var/majordistance = max(150 - distance*3, 5) - if(H.null_rod_check()) - to_chat(H, "[text2ratvar("Oh, a void weapon. How annoying, I may as well not bother.")]\n\ - Your holy weapon glows a faint orange, defending your mind!") - continue - else if(H.isloyal()) - visualsdistance = round(visualsdistance * 0.5) //half effect for shielded targets - minordistance = round(minordistance * 0.5) - majordistance = round(majordistance * 0.5) - to_chat(H, "[text2ratvar("Oh, look, a mindshield. Cute, I suppose I'll humor it.")]") - else if(prob(visualsdistance)) - to_chat(H, "[text2ratvar(pick(mindbreaksayings))]") - H.playsound_local(T, hum, visualsdistance, 1) - flash_color(H, flash_color="#AF0AAF", flash_time=visualsdistance*10) - H.dizziness = minordistance + H.dizziness - H.hallucination = minordistance + H.hallucination - H.confused = majordistance + H.confused - H.setBrainLoss(majordistance + H.getBrainLoss()) - return TRUE - - -//Invoke Nezbere, the Brass Eidolon: Invokes Nezbere, bolstering the strength of many clockwork items for one minute. -/datum/clockwork_scripture/invoke_nezbere - descname = "Global Structure Buff" - name = "Invoke Nezbere, the Brass Eidolon" - desc = "Taps the limitless power of Nezbere, one of Ratvar's four generals. The restless toil of the Eidolon will empower a wide variety of clockwork apparatus for a full minute - notably, \ - replica fabricators will charge very rapidly." - invocations = list("I call upon you, Armorer!!", "Let your machinations reign on this miserable station!!", "Let your power flow through the tools of your master!!") - channel_time = 150 - consumed_components = list(BELLIGERENT_EYE = 6, VANGUARD_COGWHEEL = 6, GEIS_CAPACITOR = 6, REPLICANT_ALLOY = 10) - usage_tip = "Ocular wardens will become empowered, tinkerer's daemons will produce twice as quickly, \ - and interdiction lenses, mania motors, tinkerer's daemons, and clockwork obelisks will all require no power." - tier = SCRIPTURE_REVENANT - primary_component = REPLICANT_ALLOY - sort_priority = 4 - invokers_required = 3 - multiple_invokers_used = TRUE - -/datum/clockwork_scripture/invoke_nezbere/check_special_requirements() - if(!slab.no_cost && GLOB.clockwork_generals_invoked["nezbere"] > world.time) - to_chat(invoker, "\"[text2ratvar("Not just yet, friend. Patience is a virtue.")]\"\n\ - Nezbere has already been invoked recently! You must wait several minutes before calling upon the Brass Eidolon.") - return FALSE - if(!slab.no_cost && GLOB.ratvar_awakens) - to_chat(invoker, "\"[text2ratvar("Our master is here already. You do not require my help, friend.")]\"\n\ - There is no need for Nezbere's assistance while Ratvar is risen!") - return FALSE - return TRUE - -/datum/clockwork_scripture/invoke_nezbere/scripture_effects() - new/obj/effect/clockwork/general_marker/nezbere(get_turf(invoker)) - hierophant_message("[text2ratvar("Armorer: \"I heed your call, champions. May your artifacts bring ruin upon the heathens that oppose our master!")]\"", FALSE, invoker) - GLOB.clockwork_generals_invoked["nezbere"] = world.time + GLOBAL_CLOCKWORK_GENERAL_COOLDOWN - playsound(invoker, 'sound/magic/clockwork/invoke_general.ogg', 50, 0) - GLOB.nezbere_invoked++ - for(var/obj/O in GLOB.all_clockwork_objects) - O.ratvar_act() - addtimer(CALLBACK(GLOBAL_PROC, /proc/reset_nezbere_invocation), 600) - return TRUE - -/proc/reset_nezbere_invocation() - GLOB.nezbere_invoked-- - for(var/obj/O in GLOB.all_clockwork_objects) - O.ratvar_act() - - -//Invoke Nzcrentr, the Eternal Thunderbolt: Imbues an immense amount of energy into the invoker. After several seconds, everyone near the invoker will be hit with a devastating lightning blast. -/datum/clockwork_scripture/invoke_nzcrentr - descname = "Area Lightning Blast" - name = "Invoke Nzcrentr, the Eternal Thunderbolt" - desc = "Taps the limitless power of Nzcrentr, one of Ratvar's four generals. Nzcrentr will grant you a tiny fraction of its boundless power. After several seconds, all non-Servants near you \ - will be struck by devastating lightning bolts." - invocations = list("I call upon you, Amperage!!", "Let your energy flow through me!!", "Let your boundless power shatter stars!!") - channel_time = 100 - consumed_components = list(BELLIGERENT_EYE = 3, GEIS_CAPACITOR = 3, REPLICANT_ALLOY = 3, HIEROPHANT_ANSIBLE = 10) - usage_tip = "Struck targets will also be knocked down for about sixteen seconds." - tier = SCRIPTURE_REVENANT - primary_component = HIEROPHANT_ANSIBLE - sort_priority = 5 - -/datum/clockwork_scripture/invoke_nzcrentr/check_special_requirements() - if(!slab.no_cost && GLOB.clockwork_generals_invoked["nzcrentr"] > world.time) - to_chat(invoker, "\"[text2ratvar("The boss says you have to wait. Hey, do you think he would mind if I killed you? ...He would? Ok.")]\"\n\ - Nzcrentr has already been invoked recently! You must wait several minutes before calling upon the Eternal Thunderbolt.") - return FALSE - return TRUE - -/datum/clockwork_scripture/invoke_nzcrentr/scripture_effects() - new/obj/effect/clockwork/general_marker/nzcrentr(get_turf(invoker)) - GLOB.clockwork_generals_invoked["nzcrentr"] = world.time + CLOCKWORK_GENERAL_COOLDOWN - hierophant_message("[text2ratvar("Amperage: \"[invoker.real_name] has called forth my power. Hope [invoker.p_they()] [invoker.p_do()] not shatter under it!")]\"", FALSE, invoker) - invoker.visible_message("[invoker] begins to radiate a blinding light!", \ - "\"[text2ratvar("The boss says it's okay to do this. Don't blame me if you die from it.")]\"\n\ - You feel limitless power surging through you!") - playsound(invoker, 'sound/magic/clockwork/invoke_general.ogg', 50, 0) - sleep(2) - playsound(invoker, 'sound/magic/lightning_chargeup.ogg', 100, 0) - var/oldcolor = invoker.color - animate(invoker, color = list(rgb(255, 255, 255), rgb(255, 255, 255), rgb(255, 255, 255), rgb(0,0,0)), time = 88) //Gradual advancement to extreme brightness - sleep(88) - if(invoker) - invoker.visible_message("Massive bolts of energy emerge from across [invoker]'s body!", \ - "\"[text2ratvar("I told you you wouldn't be able to handle it.")]\"\n\ - TOO... MUCH! CAN'T... TAKE IT!") - playsound(invoker, 'sound/magic/lightningbolt.ogg', 100, 0) - if(invoker.stat == CONSCIOUS) - animate(invoker, color = oldcolor, time = 10) - addtimer(CALLBACK(invoker, /atom/proc/update_atom_colour), 10) - for(var/mob/living/L in view(7, invoker)) - if(is_servant_of_ratvar(L) || L.null_rod_check()) - continue - invoker.Beam(L, icon_state = "nzcrentrs_power", time = 10) - var/randdamage = rand(40, 60) - if(iscarbon(L)) - L.electrocute_act(randdamage, "Nzcrentr's power", 1, randdamage) - else - L.adjustFireLoss(randdamage) - L.visible_message( - "[L] was shocked by Nzcrentr's power!", \ - "You feel a powerful shock coursing through your body!", \ - "You hear a heavy electrical crack." \ - ) - L.Weaken(8) - playsound(L, 'sound/magic/LightningShock.ogg', 50, 1) - else - playsound(invoker, 'sound/magic/Disintegrate.ogg', 50, 1) - invoker.gib() - return TRUE - else - return FALSE diff --git a/code/game/gamemodes/clock_cult/clock_structures/interdiction_lens.dm b/code/game/gamemodes/clock_cult/clock_structures/interdiction_lens.dm deleted file mode 100644 index 5066b2448a..0000000000 --- a/code/game/gamemodes/clock_cult/clock_structures/interdiction_lens.dm +++ /dev/null @@ -1,143 +0,0 @@ -//Interdiction Lens: A powerful artifact that constantly disrupts electronics and drains power but, if it fails to find something to disrupt, turns off. -/obj/structure/destructible/clockwork/powered/interdiction_lens - name = "interdiction lens" - desc = "An ominous, double-pronged brass totem. There's a strange gemstone clasped between the pincers." - clockwork_desc = "A powerful totem that constantly drains nearby electronics and funnels the power drained into nearby Sigils of Transmission or the area's APC." - icon_state = "interdiction_lens" - construction_value = 20 - active_icon = "interdiction_lens_active" - inactive_icon = "interdiction_lens" - unanchored_icon = "interdiction_lens_unwrenched" - break_message = "The lens flares a blinding violet before the totem beneath it shatters!" - break_sound = 'sound/effects/glassbr3.ogg' - debris = list(/obj/item/clockwork/alloy_shards/small = 2, \ - /obj/item/clockwork/alloy_shards/large = 2, \ - /obj/item/clockwork/component/belligerent_eye/lens_gem = 1) - var/recharging = 0 //world.time when the lens was last used - var/recharge_time = 1200 //if it drains no power and affects no objects, it turns off for two minutes - var/disabled = FALSE //if it's actually usable - var/interdiction_range = 14 //how large an area it drains and disables in - var/static/list/rage_messages = list("...", "Disgusting.", "Die.", "Foul.", "Worthless.", "Mortal.", "Unfit.", "Weak.", "Fragile.", "Useless.", "Leave my sight!") - -/obj/structure/destructible/clockwork/powered/interdiction_lens/Initialize() - . = ..() - update_current_glow() - -/obj/structure/destructible/clockwork/powered/interdiction_lens/examine(mob/user) - ..() - to_chat(user, "Its gemstone [recharging > world.time ? "has been breached by writhing tendrils of blackness that cover the totem" \ - : "vibrates in place and thrums with power"].") - if(is_servant_of_ratvar(user) || isobserver(user)) - to_chat(user, "If it fails to drain any electronics or has nothing to return power to, it will disable itself for [round(recharge_time/600, 1)] minutes.") - -/obj/structure/destructible/clockwork/powered/interdiction_lens/update_anchored(mob/user, do_damage) - ..() - update_current_glow() - -/obj/structure/destructible/clockwork/powered/interdiction_lens/toggle(fast_process, mob/living/user) - . = ..() - update_current_glow() - -/obj/structure/destructible/clockwork/powered/interdiction_lens/proc/update_current_glow() - if(active) - if(disabled) - set_light(2, 1.6, "#151200") - else - set_light(2, 1.6, "#EE54EE") - else - if(anchored) - set_light(1.4, 0.8, "#F42B9D") - else - set_light(0) - -/obj/structure/destructible/clockwork/powered/interdiction_lens/attack_hand(mob/living/user) - if(user.canUseTopic(src, !issilicon(user), NO_DEXTERY)) - if(disabled) - to_chat(user, "As you place your hand on the gemstone, cold tendrils of black matter crawl up your arm. You quickly pull back.") - return 0 - toggle(0, user) - -/obj/structure/destructible/clockwork/powered/interdiction_lens/forced_disable(bad_effects) - if(disabled || !anchored) - return FALSE - if(!active) - toggle(0) - visible_message("The gemstone suddenly turns horribly dark, writhing tendrils covering it!") - recharging = world.time + recharge_time - flick("interdiction_lens_discharged", src) - icon_state = "interdiction_lens_inactive" - disabled = TRUE - update_current_glow() - return TRUE - -/obj/structure/destructible/clockwork/powered/interdiction_lens/process() - . = ..() - if(recharging > world.time) - return - if(disabled) - visible_message("The writhing tendrils return to the gemstone, which begins to glow with power!") - flick("interdiction_lens_recharged", src) - disabled = FALSE - toggle(0) - else - if(!check_apc_and_sigils()) - forced_disable() - return - var/successfulprocess = FALSE - var/power_drained = 0 - var/list/atoms_to_test = list() - for(var/A in spiral_range_turfs(interdiction_range, src)) - var/turf/T = A - for(var/M in T) - atoms_to_test |= M - - CHECK_TICK - - var/unconverted_ai = FALSE - var/efficiency = get_efficiency_mod() - var/rage_modifier = get_efficiency_mod(TRUE) - - for(var/i in GLOB.ai_list) - var/mob/living/silicon/ai/AI = i - if(AI && AI.stat != DEAD && !is_servant_of_ratvar(AI)) - unconverted_ai = TRUE - - for(var/M in atoms_to_test) - var/atom/movable/A = M - if(!A || QDELETED(A) || A == target_apc) - continue - power_drained += Floor(A.power_drain(TRUE) * efficiency, MIN_CLOCKCULT_POWER) - - if(prob(1 * rage_modifier)) - to_chat(A, "\"[text2ratvar(pick(rage_messages))]\"") - - if(prob(100 * (efficiency * efficiency))) - if(istype(A, /obj/machinery/camera) && unconverted_ai) - var/obj/machinery/camera/C = A - if(C.isEmpProof() || !C.status) - continue - successfulprocess = TRUE - if(C.emped) - continue - C.emp_act(EMP_HEAVY) - else if(istype(A, /obj/item/device/radio)) - var/obj/item/device/radio/O = A - successfulprocess = TRUE - if(O.emped || !O.on) - continue - O.emp_act(EMP_HEAVY) - else if((isliving(A) && !is_servant_of_ratvar(A)) || istype(A, /obj/structure/closet) || istype(A, /obj/item/storage)) //other things may have radios in them but we don't care - for(var/obj/item/device/radio/O in A.GetAllContents()) - successfulprocess = TRUE - if(O.emped || !O.on) - continue - O.emp_act(EMP_HEAVY) - - CHECK_TICK - - if(power_drained && power_drained >= MIN_CLOCKCULT_POWER && return_power(power_drained)) - successfulprocess = TRUE - playsound(src, 'sound/items/pshoom.ogg', 50 * efficiency, 1, interdiction_range-7, 1) - - if(!successfulprocess) - forced_disable() diff --git a/code/game/gamemodes/clock_cult/clock_structures/tinkerers_cache.dm b/code/game/gamemodes/clock_cult/clock_structures/tinkerers_cache.dm deleted file mode 100644 index cd33cf7adc..0000000000 --- a/code/game/gamemodes/clock_cult/clock_structures/tinkerers_cache.dm +++ /dev/null @@ -1,116 +0,0 @@ -//Tinkerer's cache: Stores components for later use. -/obj/structure/destructible/clockwork/cache - name = "tinkerer's cache" - desc = "A large brass spire with a flaming hole in its center." - clockwork_desc = "A brass container capable of storing a large amount of components.\n\ - Shares components with all other caches and will gradually generate components if near a Clockwork Wall." - icon_state = "tinkerers_cache" - unanchored_icon = "tinkerers_cache_unwrenched" - construction_value = 10 - break_message = "The cache's fire winks out before it falls in on itself!" - max_integrity = 80 - light_color = "#C2852F" - var/wall_generation_cooldown - var/turf/closed/wall/clockwork/linkedwall //if we've got a linked wall and are producing - var/static/linked_caches = 0 //how many caches are linked to walls; affects how fast components are produced - -/obj/structure/destructible/clockwork/cache/Initialize() - . = ..() - START_PROCESSING(SSobj, src) - GLOB.clockwork_caches++ - update_slab_info() - set_light(2, 0.7) - -/obj/structure/destructible/clockwork/cache/Destroy() - GLOB.clockwork_caches-- - update_slab_info() - STOP_PROCESSING(SSobj, src) - if(linkedwall) - linked_caches-- - linkedwall.linkedcache = null - linkedwall = null - return ..() - -/obj/structure/destructible/clockwork/cache/process() - if(!anchored) - if(linkedwall) - linked_caches-- - linkedwall.linkedcache = null - linkedwall = null - return - for(var/turf/closed/wall/clockwork/C in range(4, src)) - if(!C.linkedcache && !linkedwall) - linked_caches++ - C.linkedcache = src - linkedwall = C - wall_generation_cooldown = world.time + get_production_time() - visible_message("[src] starts to whirr in the presence of [C]...") - break - if(linkedwall && wall_generation_cooldown <= world.time) - wall_generation_cooldown = world.time + get_production_time() - var/component_id = generate_cache_component(null, src) - playsound(linkedwall, 'sound/magic/clockwork/fellowship_armory.ogg', rand(15, 20), 1, -3, 1, 1) - visible_message("Something cl[pick("ank", "ink", "unk", "ang")]s around inside of [src]...") - -/obj/structure/destructible/clockwork/cache/attackby(obj/item/I, mob/living/user, params) - if(!is_servant_of_ratvar(user)) - return ..() - if(istype(I, /obj/item/clockwork/component)) - var/obj/item/clockwork/component/C = I - if(!anchored) - to_chat(user, "[src] needs to be secured to place [C] into it!") - else - GLOB.clockwork_component_cache[C.component_id]++ - update_slab_info() - to_chat(user, "You add [C] to [src].") - user.drop_item() - qdel(C) - return 1 - else if(istype(I, /obj/item/clockwork/slab)) - var/obj/item/clockwork/slab/S = I - if(!anchored) - to_chat(user, "[src] needs to be secured to offload your slab's components into it!") - else - for(var/i in S.stored_components) - GLOB.clockwork_component_cache[i] += S.stored_components[i] - S.stored_components[i] = 0 - update_slab_info() - user.visible_message("[user] empties [S] into [src].", "You offload your slab's components into [src].") - return 1 - else - return ..() - -/obj/structure/destructible/clockwork/cache/update_anchored(mob/user, do_damage) - ..() - if(anchored) - set_light(2, 0.7) - else - set_light(0) - -/obj/structure/destructible/clockwork/cache/attack_hand(mob/living/user) - ..() - if(is_servant_of_ratvar(user)) - if(linkedwall) - if(wall_generation_cooldown > world.time) - var/temp_time = (wall_generation_cooldown - world.time) * 0.1 - to_chat(user, "[src] will produce a component in [temp_time] second[temp_time == 1 ? "":"s"].") - else - to_chat(user, "[src] is about to produce a component!") - else if(anchored) - to_chat(user, "[src] is unlinked! Construct a Clockwork Wall nearby to generate components!") - else - to_chat(user, "[src] needs to be secured to generate components!") - -/obj/structure/destructible/clockwork/cache/examine(mob/user) - ..() - if(is_servant_of_ratvar(user) || isobserver(user)) - if(linkedwall) - to_chat(user, "It is linked to a Clockwork Wall and will generate a component every [DisplayTimeText(get_production_time())]!") - else - to_chat(user, "It is unlinked! Construct a Clockwork Wall nearby to generate components!") - to_chat(user, "Stored components:") - for(var/i in GLOB.clockwork_component_cache) - to_chat(user, "[get_component_icon(i)] [get_component_name(i)][i != REPLICANT_ALLOY ? "s":""]: [GLOB.clockwork_component_cache[i]]") - -/obj/structure/destructible/clockwork/cache/proc/get_production_time() - return (CACHE_PRODUCTION_TIME + (ACTIVE_CACHE_SLOWDOWN * linked_caches)) * get_efficiency_mod(TRUE) diff --git a/code/game/gamemodes/gang/dominator.dm b/code/game/gamemodes/gang/dominator.dm deleted file mode 100644 index 7f707fbb4d..0000000000 --- a/code/game/gamemodes/gang/dominator.dm +++ /dev/null @@ -1,230 +0,0 @@ -#define DOM_BLOCKED_SPAM_CAP 6 -#define DOM_REQUIRED_TURFS 30 -#define DOM_HULK_HITS_REQUIRED 10 - -/obj/machinery/dominator - name = "dominator" - desc = "A visibly sinister device. Looks like you can break it if you hit it enough." - icon = 'icons/obj/machines/dominator.dmi' - icon_state = "dominator" - density = TRUE - anchored = TRUE - layer = HIGH_OBJ_LAYER - max_integrity = 300 - integrity_failure = 100 - armor = list(melee = 20, bullet = 50, laser = 50, energy = 50, bomb = 10, bio = 100, rad = 100, fire = 10, acid = 70) - var/datum/gang/gang - var/operating = FALSE //false=standby or broken, true=takeover - var/warned = FALSE //if this device has set off the warning at <3 minutes yet - var/spam_prevention = DOM_BLOCKED_SPAM_CAP //first message is immediate - var/datum/effect_system/spark_spread/spark_system - var/obj/effect/countdown/dominator/countdown - -/obj/machinery/dominator/hulk_damage() - return (max_integrity - integrity_failure) / DOM_HULK_HITS_REQUIRED - -/proc/dominator_excessive_walls(atom/A) - var/open = FALSE - for(var/turf/T in view(3, A)) - if(!isclosedturf(T)) - open++ - if(open < DOM_REQUIRED_TURFS) - return TRUE - else - return FALSE - -/obj/machinery/dominator/tesla_act() - qdel(src) - -/obj/machinery/dominator/Initialize() - . = ..() - set_light(2) - GLOB.poi_list |= src - spark_system = new - spark_system.set_up(5, TRUE, src) - countdown = new(src) - update_icon() - -/obj/machinery/dominator/examine(mob/user) - ..() - if(stat & BROKEN) - return - - var/time - if(gang && gang.is_dominating) - time = gang.domination_time_remaining() - if(time > 0) - to_chat(user, "Hostile Takeover in progress. Estimated [time] seconds remain.") - else - to_chat(user, "Hostile Takeover of [station_name()] successful. Have a great day.") - else - to_chat(user, "System on standby.") - to_chat(user, "System Integrity: [round((obj_integrity/max_integrity)*100,1)]%") - -/obj/machinery/dominator/process() - ..() - if(gang && gang.is_dominating) - var/time_remaining = gang.domination_time_remaining() - if(time_remaining > 0) - if(dominator_excessive_walls(src)) - gang.domination_timer += 20 - playsound(loc, 'sound/machines/buzz-two.ogg', 50, 0) - if(spam_prevention < DOM_BLOCKED_SPAM_CAP) - spam_prevention++ - else - gang.message_gangtools("Warning: There are too many walls around your gang's dominator, its signal is being blocked!") - say("Error: Takeover signal is currently blocked! There are too many walls within 3 standard units of this device.") - spam_prevention = 0 - return - . = TRUE - playsound(loc, 'sound/items/timer.ogg', 10, 0) - if(!warned && (time_remaining < 180)) - warned = TRUE - var/area/domloc = get_area(loc) - gang.message_gangtools("Less than 3 minutes remains in hostile takeover. Defend your dominator at [domloc.map_name]!") - for(var/datum/gang/G in SSticker.mode.gangs) - if(G != gang) - G.message_gangtools("WARNING: [gang.name] Gang takeover imminent. Their dominator at [domloc.map_name] must be destroyed!",1,1) - - if(!.) - STOP_PROCESSING(SSmachines, src) - -/obj/machinery/dominator/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0) - switch(damage_type) - if(BRUTE) - if(damage_amount) - playsound(src, 'sound/effects/bang.ogg', 50, 1) - else - playsound(loc, 'sound/weapons/tap.ogg', 50, 1) - if(BURN) - playsound(src.loc, 'sound/items/welder.ogg', 100, 1) - -/obj/machinery/dominator/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1) - . = ..() - if(.) - if(obj_integrity/max_integrity > 0.66) - if(prob(damage_amount*2)) - spark_system.start() - else if(!(stat & BROKEN)) - spark_system.start() - update_icon() - -/obj/machinery/dominator/update_icon() - cut_overlays() - if(!(stat & BROKEN)) - icon_state = "dominator-active" - if(operating) - var/mutable_appearance/dominator_overlay = mutable_appearance('icons/obj/machines/dominator.dmi', "dominator-overlay") - if(gang) - dominator_overlay.color = gang.color_hex - add_overlay(dominator_overlay) - else - icon_state = "dominator" - if(obj_integrity/max_integrity < 0.66) - add_overlay("damage") - else - icon_state = "dominator-broken" - -/obj/machinery/dominator/obj_break(damage_flag) - if(!(stat & BROKEN) && !(flags_1 & NODECONSTRUCT_1)) - set_broken() - -/obj/machinery/dominator/deconstruct(disassembled = TRUE) - if(!(flags_1 & NODECONSTRUCT_1)) - if(!(stat & BROKEN)) - set_broken() - new /obj/item/stack/sheet/plasteel(src.loc) - qdel(src) - -/obj/machinery/dominator/attacked_by(obj/item/I, mob/living/user) - add_fingerprint(user) - ..() - -/obj/machinery/dominator/proc/set_broken() - if(gang) - gang.is_dominating = FALSE - - var/takeover_in_progress = 0 - for(var/datum/gang/G in SSticker.mode.gangs) - if(G.is_dominating) - takeover_in_progress = 1 - break - if(!takeover_in_progress) - var/was_stranded = SSshuttle.emergency.mode == SHUTTLE_STRANDED - SSshuttle.clearHostileEnvironment(src) - if(!was_stranded) - priority_announce("All hostile activity within station systems has ceased.","Network Alert") - - if(get_security_level() == "delta") - set_security_level("red") - - gang.message_gangtools("Hostile takeover cancelled: Dominator is no longer operational.[gang.dom_attempts ? " You have [gang.dom_attempts] attempt remaining." : " The station network will have likely blocked any more attempts by us."]",1,1) - - set_light(0) - operating = FALSE - stat |= BROKEN - update_icon() - STOP_PROCESSING(SSmachines, src) - -/obj/machinery/dominator/Destroy() - if(!(stat & BROKEN)) - set_broken() - GLOB.poi_list.Remove(src) - gang = null - QDEL_NULL(spark_system) - QDEL_NULL(countdown) - STOP_PROCESSING(SSmachines, src) - return ..() - -/obj/machinery/dominator/emp_act(severity) - take_damage(100, BURN, "energy", 0) - ..() - -/obj/machinery/dominator/attack_hand(mob/user) - if(operating || (stat & BROKEN)) - examine(user) - return - - var/datum/gang/tempgang - - if(user.mind in SSticker.mode.get_all_gangsters()) - tempgang = user.mind.gang_datum - else - examine(user) - return - - if(tempgang.is_dominating) - to_chat(user, "Error: Hostile Takeover is already in progress.") - return - - if(!tempgang.dom_attempts) - to_chat(user, "Error: Unable to breach station network. Firewall has logged our signature and is blocking all further attempts.") - return - - var/time = round(determine_domination_time(tempgang)/60,0.1) - if(alert(user,"With [round((tempgang.territory.len/GLOB.start_state.num_territories)*100, 1)]% station control, a takeover will require [time] minutes.\nYour gang will be unable to gain influence while it is active.\nThe entire station will likely be alerted to it once it starts.\nYou have [tempgang.dom_attempts] attempt(s) remaining. Are you ready?","Confirm","Ready","Later") == "Ready") - if((tempgang.is_dominating) || !tempgang.dom_attempts || !in_range(src, user) || !isturf(loc)) - return 0 - - var/area/A = get_area(loc) - var/locname = A.map_name - - gang = tempgang - gang.dom_attempts -- - priority_announce("Network breach detected in [locname]. The [gang.name] Gang is attempting to seize control of the station!","Network Alert") - gang.domination() - SSshuttle.registerHostileEnvironment(src) - name = "[gang.name] Gang [name]" - operating = TRUE - update_icon() - - countdown.color = gang.color_hex - countdown.start() - - set_light(3) - START_PROCESSING(SSmachines, src) - - gang.message_gangtools("Hostile takeover in progress: Estimated [time] minutes until victory.[gang.dom_attempts ? "" : " This is your final attempt."]") - for(var/datum/gang/G in SSticker.mode.gangs) - if(G != gang) - G.message_gangtools("Enemy takeover attempt detected in [locname]: Estimated [time] minutes until our defeat.",1,1) diff --git a/code/game/gamemodes/gang/gang.dm b/code/game/gamemodes/gang/gang.dm deleted file mode 100644 index f18a473d72..0000000000 --- a/code/game/gamemodes/gang/gang.dm +++ /dev/null @@ -1,359 +0,0 @@ -//gang.dm -//Gang War Game Mode - -GLOBAL_LIST_INIT(gang_name_pool, list("Clandestine", "Prima", "Zero-G", "Max", "Blasto", "Waffle", "North", "Omni", "Newton", "Cyber", "Donk", "Gene", "Gib", "Tunnel", "Diablo", "Psyke", "Osiron", "Sirius", "Sleeping Carp")) -GLOBAL_LIST_INIT(gang_colors_pool, list("red","orange","yellow","green","blue","purple", "white")) -GLOBAL_LIST_INIT(gang_outfit_pool, list(/obj/item/clothing/suit/jacket/leather, /obj/item/clothing/suit/jacket/leather/overcoat, /obj/item/clothing/suit/jacket/puffer, /obj/item/clothing/suit/jacket/miljacket, /obj/item/clothing/suit/jacket/puffer, /obj/item/clothing/suit/pirate, /obj/item/clothing/suit/poncho, /obj/item/clothing/suit/apron/overalls, /obj/item/clothing/suit/jacket/letterman)) - -/datum/game_mode - var/list/datum/gang/gangs = list() - var/datum/gang_points/gang_points - -/proc/is_gangster(var/mob/living/M) - return istype(M) && M.mind && M.mind.gang_datum - -/proc/is_in_gang(var/mob/living/M, var/gang_type) - if(!is_gangster(M) || !gang_type) - return 0 - var/datum/gang/G = M.mind.gang_datum - if(G.name == gang_type) - return 1 - return 0 - -/datum/game_mode/gang - name = "gang war" - config_tag = "gang" - antag_flag = ROLE_GANG - restricted_jobs = list("Security Officer", "Warden", "Detective", "AI", "Cyborg","Captain", "Head of Personnel", "Head of Security", "Chief Engineer", "Research Director", "Chief Medical Officer") - required_players = 20 - required_enemies = 2 - recommended_enemies = 2 - enemy_minimum_age = 14 - - announce_span = "danger" - announce_text = "A violent turf war has erupted on the station!\n\ - Gangsters: Take over the station with a dominator.\n\ - Crew: Prevent the gangs from expanding and initiating takeover." - -/////////////////////////////////////////////////////////////////////////////// -//Gets the round setup, cancelling if there's not enough players at the start// -/////////////////////////////////////////////////////////////////////////////// -/datum/game_mode/gang/pre_setup() - if(config.protect_roles_from_antagonist) - restricted_jobs += protected_jobs - - if(config.protect_assistant_from_antagonist) - restricted_jobs += "Assistant" - - //Spawn more bosses depending on server population - var/gangs_to_create = 2 - if(prob(num_players() * 2)) - gangs_to_create ++ - - for(var/i=1 to gangs_to_create) - if(!antag_candidates.len) - break - - //Create the gang - var/datum/gang/G = new() - gangs += G - - //Now assign a boss for the gang - for(var/n in 1 to 3) - var/datum/mind/boss = pick(antag_candidates) - antag_candidates -= boss - G.bosses[boss] = GANGSTER_BOSS_STARTING_INFLUENCE - boss.gang_datum = G - var/title - if(n == 1) - title = "Boss" - else - title = "Lieutenant" - boss.special_role = "[G.name] Gang [title]" - boss.restricted_roles = restricted_jobs - log_game("[boss.key] has been selected as the [title] for the [G.name] Gang") - - if(gangs.len < 2) //Need at least two gangs - return 0 - - return 1 - - -/datum/game_mode/gang/post_setup() - set waitfor = FALSE - ..() - sleep(rand(10,100)) - for(var/datum/gang/G in gangs) - for(var/datum/mind/boss_mind in G.bosses) - G.bosses[boss_mind] = GANGSTER_BOSS_STARTING_INFLUENCE //Force influence to be put on it. - G.add_gang_hud(boss_mind) - forge_gang_objectives(boss_mind) - greet_gang(boss_mind) - equip_gang(boss_mind.current,G) - modePlayer += boss_mind - - -/datum/game_mode/proc/forge_gang_objectives(datum/mind/boss_mind) - var/datum/objective/rival_obj = new - rival_obj.owner = boss_mind - rival_obj.explanation_text = "Be the first gang to successfully takeover the station with a Dominator." - boss_mind.objectives += rival_obj - -/datum/game_mode/proc/greet_gang(datum/mind/boss_mind, you_are=1) - if (you_are) - to_chat(boss_mind.current, "You are the Boss of the [boss_mind.gang_datum.name] Gang!") - boss_mind.announce_objectives() - -/////////////////////////////////////////////////////////////////////////// -//This equips the bosses with their gear, and makes the clown not clumsy// -/////////////////////////////////////////////////////////////////////////// -/datum/game_mode/proc/equip_gang(mob/living/carbon/human/mob, gang) - if(!istype(mob)) - return - - if (mob.mind) - if (mob.mind.assigned_role == "Clown") - to_chat(mob, "Your training has allowed you to overcome your clownish nature, allowing you to wield weapons without harming yourself.") - mob.dna.remove_mutation(CLOWNMUT) - - var/obj/item/device/gangtool/gangtool = new(mob) - var/obj/item/pen/gang/T = new(mob) - var/obj/item/toy/crayon/spraycan/gang/SC = new(mob,gang) - var/obj/item/clothing/glasses/hud/security/chameleon/C = new(mob,gang) - - var/list/slots = list ( - "backpack" = slot_in_backpack, - "left pocket" = slot_l_store, - "right pocket" = slot_r_store - ) - - . = 0 - - var/where = mob.equip_in_one_of_slots(gangtool, slots) - if (!where) - to_chat(mob, "Your Syndicate benefactors were unfortunately unable to get you a Gangtool.") - . += 1 - else - gangtool.register_device(mob) - to_chat(mob, "The Gangtool in your [where] will allow you to purchase weapons and equipment, send messages to your gang, and recall the emergency shuttle from anywhere on the station.") - to_chat(mob, "As the gang boss, you can also promote your gang members to lieutenant. Unlike regular gangsters, Lieutenants cannot be deconverted and are able to use recruitment pens and gangtools.") - - var/where2 = mob.equip_in_one_of_slots(T, slots) - if (!where2) - to_chat(mob, "Your Syndicate benefactors were unfortunately unable to get you a recruitment pen to start.") - . += 1 - else - to_chat(mob, "The recruitment pen in your [where2] will help you get your gang started. Stab unsuspecting crew members with it to recruit them.") - - var/where3 = mob.equip_in_one_of_slots(SC, slots) - if (!where3) - to_chat(mob, "Your Syndicate benefactors were unfortunately unable to get you a territory spraycan to start.") - . += 1 - else - to_chat(mob, "The territory spraycan in your [where3] can be used to claim areas of the station for your gang. The more territory your gang controls, the more influence you get. All gangsters can use these, so distribute them to grow your influence faster.") - - var/where4 = mob.equip_in_one_of_slots(C, slots) - if (!where4) - to_chat(mob, "Your Syndicate benefactors were unfortunately unable to get you a chameleon security HUD.") - . += 1 - else - to_chat(mob, "The chameleon security HUD in your [where4] will help you keep track of who is mindshield-implanted, and unable to be recruited.") - return . - - -/////////////////////////////////////////// -//Deals with converting players to a gang// -/////////////////////////////////////////// -/datum/game_mode/proc/add_gangster(datum/mind/gangster_mind, datum/gang/G, check = 1) - if(!G || (gangster_mind in get_all_gangsters()) || (gangster_mind.enslaved_to && !is_gangster(gangster_mind.enslaved_to))) - if(is_in_gang(gangster_mind.current, G.name) && !(gangster_mind in get_gang_bosses())) - return 3 - return 0 - if(check && gangster_mind.current.isloyal()) //Check to see if the potential gangster is implanted - return 1 - G.gangsters[gangster_mind] = GANGSTER_SOLDIER_STARTING_INFLUENCE - gangster_mind.gang_datum = G - if(check) - if(iscarbon(gangster_mind.current)) - var/mob/living/carbon/carbon_mob = gangster_mind.current - carbon_mob.silent = max(carbon_mob.silent, 5) - carbon_mob.flash_act(1, 1) - gangster_mind.current.Stun(100) - if(G.is_deconvertible) - to_chat(gangster_mind.current, "You are now a member of the [G.name] Gang!") - to_chat(gangster_mind.current, "Help your bosses take over the station by claiming territory with special spraycans only they can provide. Simply spray on any unclaimed area of the station.") - to_chat(gangster_mind.current, "Their ultimate objective is to take over the station with a Dominator machine.") - to_chat(gangster_mind.current, "You can identify your bosses by their large, bright [G.color] \[G\] icon.") - gangster_mind.store_memory("You are a member of the [G.name] Gang!") - gangster_mind.current.log_message("Has been converted to the [G.name] Gang!", INDIVIDUAL_ATTACK_LOG) - gangster_mind.special_role = "[G.name] Gangster" - - G.add_gang_hud(gangster_mind) - if(jobban_isbanned(gangster_mind.current, ROLE_GANG)) - INVOKE_ASYNC(src, /datum/game_mode.proc/replace_jobbaned_player, gangster_mind.current, ROLE_GANG, ROLE_GANG) - return 2 -//////////////////////////////////////////////////////////////////// -//Deals with players reverting to neutral (Not a gangster anymore)// -//////////////////////////////////////////////////////////////////// -/datum/game_mode/proc/remove_gangster(datum/mind/gangster_mind, beingborged, silent, remove_bosses=0) - var/datum/gang/gang = gangster_mind.gang_datum - for(var/obj/O in gangster_mind.current.contents) - if(istype(O, /obj/item/device/gangtool/soldier)) - qdel(O) - - if(!gang) - return 0 - - var/removed - - for(var/datum/gang/G in gangs) - if(!G.is_deconvertible && !remove_bosses) - return 0 - if(gangster_mind in G.gangsters) - G.reclaim_points(G.gangsters[gangster_mind]) - G.gangsters -= gangster_mind - removed = 1 - if(remove_bosses && (gangster_mind in G.bosses)) - G.reclaim_points(G.bosses[gangster_mind]) - G.bosses -= gangster_mind - removed = 1 - if(G.tags_by_mind[gangster_mind] && islist(G.tags_by_mind[gangster_mind])) - var/list/tags_cache = G.tags_by_mind[gangster_mind] - for(var/v in tags_cache) - var/obj/effect/decal/cleanable/crayon/gang/c = v - c.set_mind_owner(null) - G.tags_by_mind -= gangster_mind - - if(!removed) - return 0 - - - gangster_mind.special_role = null - gangster_mind.gang_datum = null - - if(silent < 2) - gangster_mind.current.log_message("Has reformed and defected from the [gang.name] Gang!", INDIVIDUAL_ATTACK_LOG) - - if(beingborged) - if(!silent) - gangster_mind.current.visible_message("The frame beeps contentedly from the MMI before initalizing it.") - to_chat(gangster_mind.current, "The frame's firmware detects and deletes your criminal behavior! You are no longer a gangster!") - message_admins("[ADMIN_LOOKUPFLW(gangster_mind.current)] has been borged while being a member of the [gang.name] Gang. They are no longer a gangster.") - else - if(!silent) - gangster_mind.current.Unconscious(100) - gangster_mind.current.visible_message("[gangster_mind.current] looks like they've given up the life of crime!") - to_chat(gangster_mind.current, "You have been reformed! You are no longer a gangster!
You try as hard as you can, but you can't seem to recall any of the identities of your former gangsters...
") - gangster_mind.memory = "" - - gang.remove_gang_hud(gangster_mind) - return 1 - -//////////////// -//Helper Procs// -//////////////// - -/datum/game_mode/proc/get_all_gangsters() - var/list/all_gangsters = list() - all_gangsters += get_gangsters() - all_gangsters += get_gang_bosses() - return all_gangsters - -/datum/game_mode/proc/get_gangsters() - var/list/gangsters = list() - for(var/datum/gang/G in gangs) - gangsters += G.gangsters - return gangsters - -/datum/game_mode/proc/get_gang_bosses() - var/list/gang_bosses = list() - for(var/datum/gang/G in gangs) - gang_bosses += G.bosses - return gang_bosses - -/datum/game_mode/proc/shuttle_check() - if(SSshuttle.emergencyNoRecall) - return - var/alive = 0 - for(var/mob/living/L in GLOB.player_list) - if(L.stat != DEAD) - alive++ - - if((alive < (GLOB.joined_player_list.len * 0.4)) && ((SSshuttle.emergency.timeLeft(1) > (SSshuttle.emergencyCallTime * 0.4)))) - - SSshuttle.emergencyNoRecall = TRUE - SSshuttle.emergency.request(null, set_coefficient = 0.4) - priority_announce("Catastrophic casualties detected: crisis shuttle protocols activated - jamming recall signals across all frequencies.") - -/proc/determine_domination_time(var/datum/gang/G) - return max(180,480 - (round((G.territory.len/GLOB.start_state.num_territories)*100, 1) * 9)) - - -////////////////////////////////////////////////////////////////////// -//Announces the end of the game with all relavent information stated// -////////////////////////////////////////////////////////////////////// - -/datum/game_mode/proc/auto_declare_completion_gang(datum/gang/winner) - if(!gangs.len) - return - if(!winner) - to_chat(world, "The station was [station_was_nuked ? "destroyed!" : "evacuated before a gang could claim it! The station wins!"]
") - SSticker.mode_result = "loss - gangs failed takeover" - - SSticker.news_report = GANG_LOSS - else - to_chat(world, "The [winner.name] Gang successfully performed a hostile takeover of the station!
") - SSticker.mode_result = "win - gang domination complete" - - SSticker.news_report = GANG_TAKEOVER - - for(var/datum/gang/G in gangs) - var/text = "The [G.name] Gang was [winner==G ? "victorious" : "defeated"] with [round((G.territory.len/GLOB.start_state.num_territories)*100, 1)]% control of the station!" - text += "
The [G.name] Gang Bosses were:" - for(var/datum/mind/boss in G.bosses) - text += printplayer(boss, 1) - text += "
The [G.name] Gangsters were:" - for(var/datum/mind/gangster in G.gangsters) - text += printplayer(gangster, 1) - text += "
" - to_chat(world, text) - -////////////////////////////////////////////////////////// -//Handles influence, territories, and the victory checks// -////////////////////////////////////////////////////////// - -/datum/gang_points - var/next_point_interval = 1800 - var/next_point_time - -/datum/gang_points/New() - next_point_time = world.time + next_point_interval - START_PROCESSING(SSobj, src) - -/datum/gang_points/process(seconds) - var/list/winners = list() //stores the winners if there are any - - for(var/datum/gang/G in SSticker.mode.gangs) - if(world.time > next_point_time) - G.income() - - if(G.is_dominating) - if(G.domination_time_remaining() < 0) - winners += G - - if(world.time > next_point_time) - next_point_time = world.time + next_point_interval - - if(winners.len) - if(winners.len > 1) //Edge Case: If more than one dominator complete at the same time - for(var/datum/gang/G in winners) - G.domination(0.5) - priority_announce("Multiple station takeover attempts have made simultaneously. Conflicting takeover attempts appears to have restarted.","Network Alert") - else - var/datum/gang/G = winners[1] - G.is_dominating = FALSE - SSticker.mode.explosion_in_progress = 1 - SSticker.station_explosion_cinematic(1,"gang war", null) - SSticker.mode.explosion_in_progress = 0 - SSticker.force_ending = TRUE - diff --git a/code/game/gamemodes/gang/gang_datum.dm b/code/game/gamemodes/gang/gang_datum.dm deleted file mode 100644 index 510883ada5..0000000000 --- a/code/game/gamemodes/gang/gang_datum.dm +++ /dev/null @@ -1,333 +0,0 @@ -//gang_datum.dm -//Datum-based gangs - -/datum/gang - var/name = "ERROR" - var/color = "white" - var/color_hex = "#FFFFFF" - var/list/datum/mind/gangsters = list() //gang B Members - var/list/datum/mind/bosses = list() //gang A Bosses - var/list/obj/item/device/gangtool/gangtools = list() - var/list/tags_by_mind = list() //Assoc list in format of tags_by_mind[mind_of_gangster] = list(tag1, tag2, tag3) where tags are the actual object decals. - var/style - var/fighting_style = "normal" - var/list/territory = list() - var/list/territory_new = list() - var/list/territory_lost = list() - var/recalls = 1 - var/dom_attempts = 2 - var/inner_outfit - var/outer_outfit - var/datum/atom_hud/antag/gang/ganghud - var/is_deconvertible = TRUE //Can you deconvert normal gangsters from the gang - - var/domination_timer - var/is_dominating - - var/boss_item_list - var/boss_category_list - var/static/list/boss_items = list( - /datum/gang_item/function/gang_ping, - /datum/gang_item/function/recall, - - /datum/gang_item/clothing/under, - /datum/gang_item/clothing/suit, - /datum/gang_item/clothing/hat, - /datum/gang_item/clothing/neck, - /datum/gang_item/clothing/shoes, - /datum/gang_item/clothing/mask, - /datum/gang_item/clothing/hands, - /datum/gang_item/clothing/belt, - - /datum/gang_item/weapon/shuriken, - /datum/gang_item/weapon/switchblade, - /datum/gang_item/weapon/improvised, - /datum/gang_item/weapon/ammo/improvised_ammo, - /datum/gang_item/weapon/surplus, - /datum/gang_item/weapon/ammo/surplus_ammo, - /datum/gang_item/weapon/pistol, - /datum/gang_item/weapon/ammo/pistol_ammo, - /datum/gang_item/weapon/sniper, - /datum/gang_item/weapon/ammo/sniper_ammo, - /datum/gang_item/weapon/machinegun, - /datum/gang_item/weapon/uzi, - /datum/gang_item/weapon/ammo/uzi_ammo, - /datum/gang_item/equipment/sharpener, - /datum/gang_item/equipment/spraycan, - /datum/gang_item/equipment/emp, - /datum/gang_item/equipment/c4, - /datum/gang_item/equipment/frag, - /datum/gang_item/equipment/stimpack, - /datum/gang_item/equipment/implant_breaker, - /datum/gang_item/equipment/wetwork_boots, - /datum/gang_item/equipment/pen, - /datum/gang_item/equipment/dominator - ) - - var/reg_item_list - var/reg_category_list - var/static/list/soldier_items = list( - /datum/gang_item/clothing/under, - /datum/gang_item/clothing/suit, - /datum/gang_item/clothing/hat, - /datum/gang_item/clothing/neck, - /datum/gang_item/clothing/shoes, - /datum/gang_item/clothing/mask, - /datum/gang_item/clothing/hands, - /datum/gang_item/clothing/belt, - - /datum/gang_item/weapon/shuriken, - /datum/gang_item/weapon/switchblade, - /datum/gang_item/weapon/improvised, - /datum/gang_item/weapon/ammo/improvised_ammo, - /datum/gang_item/weapon/surplus, - /datum/gang_item/weapon/ammo/surplus_ammo, - /datum/gang_item/weapon/pistol, - /datum/gang_item/weapon/ammo/pistol_ammo, - /datum/gang_item/weapon/sniper, - /datum/gang_item/weapon/ammo/sniper_ammo, - /datum/gang_item/weapon/machinegun, - /datum/gang_item/weapon/uzi, - /datum/gang_item/weapon/ammo/uzi_ammo, - /datum/gang_item/equipment/sharpener, - /datum/gang_item/equipment/spraycan, - /datum/gang_item/equipment/emp, - /datum/gang_item/equipment/c4, - /datum/gang_item/equipment/frag, - /datum/gang_item/equipment/stimpack, - /datum/gang_item/equipment/implant_breaker, - /datum/gang_item/equipment/wetwork_boots, - ) - -/datum/gang/New(loc,gangname) - if(!GLOB.gang_colors_pool.len) - message_admins("WARNING: Maximum number of gangs have been exceeded!") - throw EXCEPTION("Maximum number of gangs has been exceeded") - return - else - color = pick(GLOB.gang_colors_pool) - GLOB.gang_colors_pool -= color - switch(color) - if("red") - color_hex = "#DA0000" - inner_outfit = pick(/obj/item/clothing/under/color/red, /obj/item/clothing/under/lawyer/red) - if("orange") - color_hex = "#FF9300" - inner_outfit = pick(/obj/item/clothing/under/color/orange, /obj/item/clothing/under/geisha) - if("yellow") - color_hex = "#FFF200" - inner_outfit = pick(/obj/item/clothing/under/color/yellow, /obj/item/clothing/under/burial, /obj/item/clothing/under/suit_jacket/tan) - if("green") - color_hex = "#A8E61D" - inner_outfit = pick(/obj/item/clothing/under/color/green, /obj/item/clothing/under/syndicate/camo, /obj/item/clothing/under/suit_jacket/green) - if("blue") - color_hex = "#00B7EF" - inner_outfit = pick(/obj/item/clothing/under/color/blue, /obj/item/clothing/under/suit_jacket/navy) - if("purple") - color_hex = "#DA00FF" - inner_outfit = pick(/obj/item/clothing/under/color/lightpurple, /obj/item/clothing/under/lawyer/purpsuit) - if("white") - color_hex = "#FFFFFF" - inner_outfit = pick(/obj/item/clothing/under/color/white, /obj/item/clothing/under/suit_jacket/white) - - name = (gangname ? gangname : pick(GLOB.gang_name_pool)) - GLOB.gang_name_pool -= name - outer_outfit = pick(GLOB.gang_outfit_pool) - ganghud = new() - ganghud.color = color_hex - log_game("The [name] Gang has been created. Their gang color is [color].") - build_item_list() - -/datum/gang/proc/build_item_list() - boss_item_list = list() - boss_category_list = list() - for(var/B in boss_items) - var/datum/gang_item/G = new B() - boss_item_list[G.id] = G - var/list/Cat = boss_category_list[G.category] - if(Cat) - Cat += G - else - boss_category_list[G.category] = list(G) - - reg_item_list = list() - reg_category_list = list() - for(var/S in soldier_items) - var/datum/gang_item/G = new S() - reg_item_list[G.id] = G - var/list/Cat = reg_category_list[G.category] - if(Cat) - Cat += G - else - reg_category_list[G.category] = list(G) - -/datum/gang/proc/add_gang_hud(datum/mind/recruit_mind) - ganghud.join_hud(recruit_mind.current) - SSticker.mode.set_antag_hud(recruit_mind.current, ((recruit_mind in bosses) ? "gang_boss" : "gangster")) - -/datum/gang/proc/remove_gang_hud(datum/mind/defector_mind) - ganghud.leave_hud(defector_mind.current) - SSticker.mode.set_antag_hud(defector_mind.current, null) - -/datum/gang/proc/domination(modifier=1) - set_domination_time(determine_domination_time(src) * modifier) - is_dominating = TRUE - set_security_level("delta") - -/datum/gang/proc/set_domination_time(d) - domination_timer = world.time + (10 * d) - -/datum/gang/proc/domination_time_remaining() - var/diff = domination_timer - world.time - return diff / 10 - -//////////////////////////////////////////// MESSAGING - - -/datum/gang/proc/message_gangtools(message,beep=1,warning) - if(!gangtools.len || !message) - return - for(var/obj/item/device/gangtool/tool in gangtools) - var/mob/living/mob = get(tool.loc, /mob/living) - if(mob && mob.mind && mob.stat == CONSCIOUS) - if(mob.mind.gang_datum == src) - to_chat(mob, "[icon2html(tool, mob)] [message]") - return - - -//////////////////////////////////////////// INCOME - - -/datum/gang/proc/income() - if(!bosses.len) - return - var/added_names = "" - var/lost_names = "" - - SSticker.mode.shuttle_check() // See if its time to start wrapping things up - - //Re-add territories that were reclaimed, so if they got tagged over, they can still earn income if they tag it back before the next status report - var/list/reclaimed_territories = territory_new & territory_lost - territory |= reclaimed_territories - territory_new -= reclaimed_territories - territory_lost -= reclaimed_territories - - //Process lost territories - for(var/area in territory_lost) - if(lost_names != "") - lost_names += ", " - lost_names += "[territory_lost[area]]" - territory -= area - - //Calculate and report influence growth - - //Process new territories - for(var/area in territory_new) - if(added_names != "") - added_names += ", " - added_names += "[territory_new[area]]" - territory += area - - //Report territory changes - var/message = "[src] Gang Status Report:.
*---------*
" - message += "[territory_new.len] new territories:
[added_names]
" - message += "[territory_lost.len] territories lost:
[lost_names]
" - //Clear the lists - territory_new = list() - territory_lost = list() - var/control = round((territory.len/GLOB.start_state.num_territories)*100, 1) - var/sbonus = sqrt(LAZYLEN(territory)) // Bonus given to soldier's for the gang's total territory - message += "Your gang now has [control]% control of the station.
*---------*
" - if(is_dominating) - var/seconds_remaining = domination_time_remaining() - var/new_time = max(180, seconds_remaining - (territory.len * 2)) - if(new_time < seconds_remaining) - message += "Takeover shortened by [seconds_remaining - new_time] seconds for defending [territory.len] territories.
" - set_domination_time(new_time) - message += "[seconds_remaining] seconds remain in hostile takeover.
" - else - pay_territory_income_to_bosses() - pay_territory_income_to_soldiers(sbonus) - pay_all_clothing_bonuses() - announce_all_influence() - -/datum/gang/proc/pay_all_clothing_bonuses() - for(var/datum/mind/mind in gangsters|bosses) - pay_clothing_bonus(mind) - -/datum/gang/proc/pay_clothing_bonus(var/datum/mind/gangsta) - var/mob/living/carbon/human/gangbanger = gangsta.current - . = 0 - if(!istype(gangbanger) || gangbanger.stat == DEAD) //Dead gangsters aren't influential at all! - return 0 - var/static/inner = inner_outfit - var/static/outer = outer_outfit - for(var/obj/item/C in gangbanger.contents) - if(C.type == inner_outfit) - . += 2 - continue - else if(C.type == outer_outfit) - . += 2 - continue - . += C.gang_contraband_value() - adjust_influence(gangsta, .) - if(.) - announce_to_mind(gangsta, "Your influential choice of clothing has increased your influence by [.] points!") - else - announce_to_mind(gangsta, "Unfortunately, you have not gained any additional influence from your drab, old, boring clothing. Learn to dress like a gangsta, bro!") //Kek - -/datum/gang/proc/pay_soldier_territory_income(datum/mind/soldier, sbonus = 0) - . = 0 - . = max(0,round(3 - gangsters[soldier]/10)) + (sbonus) + (get_soldier_territories(soldier)/2) - adjust_influence(soldier, .) - -/datum/gang/proc/get_soldier_territories(datum/mind/soldier) - if(!islist(tags_by_mind[soldier])) //They have no tagged territories! - return 0 - var/list/tags = tags_by_mind[soldier] - return tags.len - -/datum/gang/proc/pay_territory_income_to_soldiers(sbonus = 0) - for(var/datum/mind/soldier in gangsters) - var/returned = pay_soldier_territory_income(soldier) - if(!returned) - announce_to_mind(soldier, "You have not gained any influence from territories you personally tagged. Get to work, soldier!") - else - announce_to_mind(soldier, "You have gained [returned] influence from [get_soldier_territories(soldier)] territories you have personally tagged.") - -/datum/gang/proc/announce_all_influence() - for(var/datum/mind/MG in bosses|gangsters) - announce_total_influence(MG) - -/datum/gang/proc/pay_territory_income_to_bosses() - . = 0 - for(var/datum/mind/boss_mind in bosses) - var/inc = max(0,round(5 - bosses[boss_mind]/10)) + LAZYLEN(territory) - . += inc - adjust_influence(boss_mind, inc) - announce_to_mind(boss_mind, "Your influence has increased by [inc] from your gang holding [LAZYLEN(territory)] territories!") - -/datum/gang/proc/get_influence(datum/mind/gangster_mind) - if(gangster_mind in gangsters) - return gangsters[gangster_mind] - if(gangster_mind in bosses) - return bosses[gangster_mind] - -/datum/gang/proc/adjust_influence(datum/mind/gangster_mind, amount) - if(gangster_mind in gangsters) - gangsters[gangster_mind] += amount - if(gangster_mind in bosses) - bosses[gangster_mind] += amount - -/datum/gang/proc/announce_to_mind(datum/mind/gangster_mind, message) - if(gangster_mind.current && gangster_mind.current.stat != DEAD) - to_chat(gangster_mind.current, message) - -/datum/gang/proc/announce_total_influence(datum/mind/gangster_mind) - announce_to_mind(gangster_mind, "[name] Gang: You now have a total of [get_influence(gangster_mind)] influence!") - -/datum/gang/proc/reclaim_points(amount) - for(var/datum/mind/bawss in bosses) - adjust_influence(bawss, amount/bosses.len) - announce_to_mind(bawss, "[name] Gang: [amount/bosses.len] influence given from internal automatic restructuring.") - diff --git a/code/game/gamemodes/gang/gang_items.dm b/code/game/gamemodes/gang/gang_items.dm deleted file mode 100644 index 2c36d1c345..0000000000 --- a/code/game/gamemodes/gang/gang_items.dm +++ /dev/null @@ -1,453 +0,0 @@ -/datum/gang_item - var/name - var/item_path - var/cost - var/spawn_msg - var/category - var/id - - -/datum/gang_item/proc/purchase(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool, check_canbuy = TRUE) - if(check_canbuy && !can_buy(user, gang, gangtool)) - return FALSE - var/real_cost = get_cost(user, gang, gangtool) - gang.adjust_influence(user.mind, -real_cost) - spawn_item(user, gang, gangtool) - return TRUE - -/datum/gang_item/proc/spawn_item(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) - if(item_path) - var/obj/item/O = new item_path(user.loc) - user.put_in_hands(O) - if(spawn_msg) - to_chat(user, spawn_msg) - -/datum/gang_item/proc/can_buy(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) - return gang && (gang.get_influence(user.mind) >= get_cost(user, gang, gangtool)) && can_see(user, gang, gangtool) - -/datum/gang_item/proc/can_see(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) - return TRUE - -/datum/gang_item/proc/get_cost(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) - return cost - -/datum/gang_item/proc/get_cost_display(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) - return "([get_cost(user, gang, gangtool)] Influence)" - -/datum/gang_item/proc/get_name_display(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) - return name - -/datum/gang_item/proc/isboss(mob/living/carbon/user, datum/gang/gang) - return user && gang && (user.mind == gang.bosses[1]) - -/datum/gang_item/proc/get_extra_info(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) - return - -/////////////////// -//FUNCTIONS -/////////////////// - -/datum/gang_item/function - category = "Gangtool Functions:" - cost = 0 - -/datum/gang_item/function/get_cost_display(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) - return "" - - -/datum/gang_item/function/gang_ping - name = "Send Message to Gang" - id = "gang_ping" - -/datum/gang_item/function/gang_ping/spawn_item(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) - if(gangtool) - gangtool.ping_gang(user) - - -/datum/gang_item/function/recall - name = "Recall Emergency Shuttle" - id = "recall" - -/datum/gang_item/function/recall/can_see(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) - return isboss(user, gang) - -/datum/gang_item/function/recall/spawn_item(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) - if(gangtool) - gangtool.recall(user) - - -/////////////////// -//CLOTHING -/////////////////// - -/datum/gang_item/clothing - category = "Purchase Influence-Enhancing Clothes:" - -/datum/gang_item/clothing/under - name = "Gang Uniform" - id = "under" - cost = 1 - -/datum/gang_item/clothing/under/spawn_item(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) - if(gang.inner_outfit) - var/obj/item/O = new gang.inner_outfit(user.loc) - user.put_in_hands(O) - to_chat(user, " This is your gang's official uniform, wearing it will increase your influence") - -/datum/gang_item/clothing/suit - name = "Gang Armored Outerwear" - id = "suit" - cost = 1 - -/datum/gang_item/clothing/suit/spawn_item(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) - if(gang.outer_outfit) - var/obj/item/O = new gang.outer_outfit(user.loc) - O.armor = list(melee = 20, bullet = 35, laser = 10, energy = 10, bomb = 30, bio = 0, rad = 0, fire = 30, acid = 30) - O.desc += " Tailored for the [gang.name] Gang to offer the wearer moderate protection against ballistics and physical trauma." - user.put_in_hands(O) - to_chat(user, " This is your gang's official outerwear, wearing it will increase your influence") - - -/datum/gang_item/clothing/hat - name = "Pimp Hat" - id = "hat" - cost = 16 - item_path = /obj/item/clothing/head/collectable/petehat/gang - -/obj/item/clothing/head/collectable/petehat/gang - name = "pimpin' hat" - desc = "The undisputed king of style." - -/obj/item/clothing/head/collectable/petehat/gang/gang_contraband_value() - return 4 - -/datum/gang_item/clothing/mask - name = "Golden Death Mask" - id = "mask" - cost = 18 - item_path = /obj/item/clothing/mask/gskull - -/obj/item/clothing/mask/gskull - name = "golden death mask" - icon_state = "gskull" - desc = "Strike terror, and envy, into the hearts of your enemies." - -/obj/item/clothing/mask/gskull/gang_contraband_value() - return 5 - -/datum/gang_item/clothing/shoes - name = "Bling Boots" - id = "boots" - cost = 22 - item_path = /obj/item/clothing/shoes/gang - -/obj/item/clothing/shoes/gang - name = "blinged-out boots" - desc = "Stand aside peasants." - icon_state = "bling" - -/obj/item/clothing/shoes/gang/gang_contraband_value() - return 6 - -/datum/gang_item/clothing/neck - name = "Gold Necklace" - id = "necklace" - cost = 9 - item_path = /obj/item/clothing/neck/necklace/dope - -/datum/gang_item/clothing/hands - name = "Decorative Brass Knuckles" - id = "hand" - cost = 11 - item_path = /obj/item/clothing/gloves/gang - -/obj/item/clothing/gloves/gang - name = "braggadocio's brass knuckles" - desc = "Purely decorative, don't find out the hard way." - icon_state = "knuckles" - w_class = 3 - -/obj/item/clothing/gloves/gang/gang_contraband_value() - return 3 - -/datum/gang_item/clothing/belt - name = "Badass Belt" - id = "belt" - cost = 13 - item_path = /obj/item/storage/belt/military/gang - -/obj/item/storage/belt/military/gang - name = "badass belt" - icon_state = "gangbelt" - item_state = "gang" - desc = "The belt buckle simply reads 'BAMF'." - storage_slots = 1 - -/obj/item/storage/belt/military/gang/gang_contraband_value() - return 4 - -/////////////////// -//WEAPONS -/////////////////// - -/datum/gang_item/weapon - category = "Purchase Weapons:" - -/datum/gang_item/weapon/ammo - -/datum/gang_item/weapon/ammo/get_cost_display(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) - return " ↳" + ..() //this is pretty hacky but it looks nice on the popup - -/datum/gang_item/weapon/shuriken - name = "Shuriken" - id = "shuriken" - cost = 3 - item_path = /obj/item/throwing_star - -/datum/gang_item/weapon/switchblade - name = "Switchblade" - id = "switchblade" - cost = 5 - item_path = /obj/item/switchblade - -/datum/gang_item/weapon/surplus - name = "Surplus Rifle" - id = "surplus" - cost = 8 - item_path = /obj/item/gun/ballistic/automatic/surplus - -/datum/gang_item/weapon/ammo/surplus_ammo - name = "Surplus Rifle Ammo" - id = "surplus_ammo" - cost = 5 - item_path = /obj/item/ammo_box/magazine/m10mm/rifle - -/datum/gang_item/weapon/improvised - name = "Sawn-Off Improvised Shotgun" - id = "sawn" - cost = 6 - item_path = /obj/item/gun/ballistic/revolver/doublebarrel/improvised/sawn - -/datum/gang_item/weapon/ammo/improvised_ammo - name = "Box of Buckshot" - id = "buckshot" - cost = 5 - item_path = /obj/item/storage/box/lethalshot - -/datum/gang_item/weapon/pistol - name = "10mm Pistol" - id = "pistol" - cost = 30 - item_path = /obj/item/gun/ballistic/automatic/pistol - -/datum/gang_item/weapon/ammo/pistol_ammo - name = "10mm Ammo" - id = "pistol_ammo" - cost = 10 - item_path = /obj/item/ammo_box/magazine/m10mm - -/datum/gang_item/weapon/sniper - name = "Black Market .50cal Sniper Rifle" - id = "sniper" - cost = 40 - item_path = /obj/item/gun/ballistic/automatic/sniper_rifle/gang - -/datum/gang_item/weapon/ammo/sniper_ammo - name = "Smuggled .50cal Sniper Rounds" - id = "sniper_ammo" - cost = 15 - item_path = /obj/item/ammo_box/magazine/sniper_rounds/gang - - -/datum/gang_item/weapon/ammo/sleeper_ammo - name = "Illicit Tranquilizer Cartridges" - id = "sniper_ammo" - cost = 15 - item_path = /obj/item/ammo_box/magazine/sniper_rounds/gang/sleeper - - -/datum/gang_item/weapon/machinegun - name = "Mounted Machine Gun" - id = "MG" - cost = 50 - item_path = /obj/machinery/manned_turret - spawn_msg = "The mounted machine gun features enhanced responsiveness. Hold down on the trigger while firing to control where you're shooting." - -/datum/gang_item/weapon/uzi - name = "Uzi SMG" - id = "uzi" - cost = 60 - item_path = /obj/item/gun/ballistic/automatic/mini_uzi - - -/datum/gang_item/weapon/ammo/uzi_ammo - name = "Uzi Ammo" - id = "uzi_ammo" - cost = 40 - item_path = /obj/item/ammo_box/magazine/uzim9mm - -/////////////////// -//EQUIPMENT -/////////////////// - -/datum/gang_item/equipment - category = "Purchase Equipment:" - - -/datum/gang_item/equipment/spraycan - name = "Territory Spraycan" - id = "spraycan" - cost = 5 - item_path = /obj/item/toy/crayon/spraycan/gang - -/datum/gang_item/equipment/sharpener - name = "Sharpener" - id = "whetstone" - cost = 3 - item_path = /obj/item/sharpener - - -/datum/gang_item/equipment/emp - name = "EMP Grenade" - id = "EMP" - cost = 5 - item_path = /obj/item/grenade/empgrenade - -/datum/gang_item/equipment/c4 - name = "C4 Explosive" - id = "c4" - cost = 7 - item_path = /obj/item/grenade/plastic/c4 - -/datum/gang_item/equipment/frag - name = "Fragmentation Grenade" - id = "frag nade" - cost = 18 - item_path = /obj/item/grenade/syndieminibomb/concussion/frag - -/datum/gang_item/equipment/stimpack - name = "Black Market Stimulants" - id = "stimpack" - cost = 12 - item_path = /obj/item/reagent_containers/syringe/stimulants - -/datum/gang_item/equipment/implant_breaker - name = "Implant Breaker" - id = "implant_breaker" - cost = 10 - item_path = /obj/item/implanter/gang - spawn_msg = "The implant breaker is a single-use device that destroys all implants within the target before trying to recruit them to your gang. Also works on enemy gangsters." - -/datum/gang_item/equipment/implant_breaker/spawn_item(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) - if(item_path) - var/obj/item/O = new item_path(user.loc, gang) //we need to override this whole proc for this one argument - user.put_in_hands(O) - if(spawn_msg) - to_chat(user, spawn_msg) - -/datum/gang_item/equipment/wetwork_boots - name = "Wetwork boots" - id = "wetwork" - cost = 20 - item_path = /obj/item/clothing/shoes/combat/gang - -/obj/item/clothing/shoes/combat/gang - name = "Wetwork boots" - desc = "A gang's best hitmen are prepared for anything." - permeability_coefficient = 0.01 - flags_1 = NOSLIP_1 - -/datum/gang_item/equipment/pen - name = "Recruitment Pen" - id = "pen" - cost = 50 - item_path = /obj/item/pen/gang - spawn_msg = "More recruitment pens will allow you to recruit gangsters faster. Only gang leaders can recruit with pens." - -/datum/gang_item/equipment/pen/purchase(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) - if(..()) - gangtool.free_pen = FALSE - return TRUE - return FALSE - -/datum/gang_item/equipment/pen/get_cost(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) - if(gangtool && gangtool.free_pen) - return 0 - return ..() - -/datum/gang_item/equipment/pen/get_cost_display(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) - if(gangtool && gangtool.free_pen) - return "(GET ONE FREE)" - return ..() - - -/datum/gang_item/equipment/gangtool - id = "gangtool" - cost = 10 - -/datum/gang_item/equipment/gangtool/spawn_item(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) - var/item_type - if(gang && isboss(user, gang)) - item_type = /obj/item/device/gangtool/spare/lt - if(gang.bosses.len < 3) - to_chat(user, "Gangtools allow you to promote a gangster to be your Lieutenant, enabling them to recruit and purchase items like you. Simply have them register the gangtool. You may promote up to [3-gang.bosses.len] more Lieutenants") - else - item_type = /obj/item/device/gangtool/spare - var/obj/item/device/gangtool/spare/tool = new item_type(user.loc) - user.put_in_hands(tool) - -/datum/gang_item/equipment/gangtool/get_name_display(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) - if(gang && isboss(user, gang) && (gang.bosses.len < 3)) - return "Promote a Gangster" - return "Spare Gangtool" - - -/datum/gang_item/equipment/dominator - name = "Station Dominator" - id = "dominator" - cost = 30 - item_path = /obj/machinery/dominator - spawn_msg = "The dominator will secure your gang's dominance over the station. Turn it on when you are ready to defend it." - -/datum/gang_item/equipment/dominator/can_buy(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) - if(!gang || !gang.dom_attempts) - return FALSE - return ..() - -/datum/gang_item/equipment/dominator/get_name_display(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) - if(!gang || !gang.dom_attempts) - return ..() - return "[..()]" - -/datum/gang_item/equipment/dominator/get_cost_display(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) - if(!gang || !gang.dom_attempts) - return "(Out of stock)" - return ..() - -/datum/gang_item/equipment/dominator/get_extra_info(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) - if(gang) - return "(Estimated Takeover Time: [round(determine_domination_time(gang)/60,0.1)] minutes)" - -/datum/gang_item/equipment/dominator/purchase(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) - var/area/usrarea = get_area(user.loc) - var/usrturf = get_turf(user.loc) - if(initial(usrarea.name) == "Space" || isspaceturf(usrturf) || usr.z != ZLEVEL_STATION || !usrarea.valid_territory) - to_chat(user, "You can only use this on the station!") - return FALSE - - for(var/obj/obj in usrturf) - if(obj.density) - to_chat(user, "There's not enough room here!") - return FALSE - - if(dominator_excessive_walls(user)) - to_chat(user, "The dominator will not function here! The dominator requires a sizable open space within three standard units so that walls do not interfere with the signal.") - return FALSE - - if(!(usrarea.type in gang.territory|gang.territory_new)) - to_chat(user, "The dominator can be spawned only on territory controlled by your gang!") - return FALSE - return ..() - -/datum/gang_item/equipment/dominator/spawn_item(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) - new item_path(user.loc) diff --git a/code/game/gamemodes/gang/gang_pen.dm b/code/game/gamemodes/gang/gang_pen.dm deleted file mode 100644 index c410d7d7da..0000000000 --- a/code/game/gamemodes/gang/gang_pen.dm +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Gang Boss Pens - */ -/obj/item/pen/gang - var/cooldown - var/last_used = 0 - var/charges = 1 - -/obj/item/pen/gang/New() - ..() - last_used = world.time - -/obj/item/pen/gang/attack(mob/living/M, mob/user, stealth = TRUE) - if(!istype(M)) - return - if(ishuman(M) && ishuman(user) && M.stat != DEAD) - if(user.mind && (user.mind in SSticker.mode.get_gang_bosses())) - if(..(M,user,1)) - if(cooldown) - to_chat(user, "[src] needs more time to recharge before it can be used.") - return - if(M.client) - M.mind_initialize() //give them a mind datum if they don't have one. - var/datum/gang/G = user.mind.gang_datum - var/recruitable = SSticker.mode.add_gangster(M.mind,G) - switch(recruitable) - if(3) - for(var/obj/O in M.contents) - if(istype(O, /obj/item/device/gangtool/soldier)) - to_chat(user, "This gangster already has an uplink!") - return - new /obj/item/device/gangtool/soldier(M) - to_chat(user, "You inject [M] with a new gangtool!") - cooldown(G) - if(2) - new /obj/item/device/gangtool/soldier(M) - M.Unconscious(100) - cooldown(G) - if(1) - to_chat(user, "This mind is resistant to recruitment!") - else - to_chat(user, "This mind has already been recruited into a gang!") - return - ..() - -/obj/item/pen/gang/proc/cooldown(datum/gang/gang) - set waitfor = FALSE - var/cooldown_time = 600+(600*gang.bosses.len) // 1recruiter=2mins, 2recruiters=3mins, 3recruiters=4mins - - cooldown = 1 - icon_state = "pen_blink" - - var/time_passed = world.time - last_used - var/time - for(time=time_passed, time>=cooldown_time, time-=cooldown_time) //get 1 charge every cooldown interval - charges++ - - charges = max(0,charges-1) - - last_used = world.time - time - - if(charges) - cooldown_time = 50 - sleep(cooldown_time) - cooldown = 0 - icon_state = "pen" - var/mob/M = get(src, /mob) - to_chat(M, "[icon2html(src, M)] [src][(src.loc == M)?(""):(" in your [src.loc]")] vibrates softly. It is ready to be used again.") diff --git a/code/game/gamemodes/gang/recaller.dm b/code/game/gamemodes/gang/recaller.dm deleted file mode 100644 index f578ac3d3d..0000000000 --- a/code/game/gamemodes/gang/recaller.dm +++ /dev/null @@ -1,332 +0,0 @@ -//gangtool device -/obj/item/device/gangtool - name = "suspicious device" - desc = "A strange device of sorts. Hard to really make out what it actually does if you don't know how to operate it." - icon_state = "gangtool-white" - item_state = "radio" - lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi' - righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' - throwforce = 0 - w_class = WEIGHT_CLASS_TINY - throw_speed = 3 - throw_range = 7 - flags_1 = CONDUCT_1 - var/datum/gang/gang //Which gang uses this? - var/recalling = 0 - var/outfits = 2 - var/free_pen = 0 - var/promotable = 0 - var/list/tags = list() - -/obj/item/device/gangtool/Initialize() //Initialize supply point income if it hasn't already been started - ..() - if(!SSticker.mode.gang_points) - SSticker.mode.gang_points = new /datum/gang_points(SSticker.mode) - -/obj/item/device/gangtool/attack_self(mob/user) - if (!can_use(user)) - return - - var/dat - if(!gang) - dat += "This device is not registered.

" - if(user.mind in SSticker.mode.get_gang_bosses()) - if(promotable && user.mind.gang_datum.bosses.len < 3) - dat += "Give this device to another member of your organization to use to promote them to Lieutenant.

" - dat += "If this is meant as a spare device for yourself:
" - dat += "Register Device as Spare
" - else if (promotable) - if(user.mind.gang_datum.bosses.len < 3) - dat += "You have been selected for a promotion!
" - dat += "Accept Promotion
" - else - dat += "No promotions available: All positions filled.
" - else - dat += "This device is not authorized to promote.
" - else - if(gang.is_dominating) - dat += "
Takeover In Progress:
[gang.domination_time_remaining()] seconds remain
" - - var/isboss = (user.mind == gang.bosses[1]) - dat += "Registration: [gang.name] Gang [isboss ? "Boss" : "Lieutenant"]
" - dat += "Organization Size: [gang.gangsters.len + gang.bosses.len] | Station Control: [round((gang.territory.len/GLOB.start_state.num_territories)*100, 1)]%
" - dat += "Your Influence: [gang.get_influence(user.mind)]
" - dat += "Time until Influence grows: [time2text(SSticker.mode.gang_points.next_point_time - world.time, "mm:ss")]
" - dat += "
" - - - for(var/cat in gang.boss_category_list) - dat += "[cat]
" - for(var/V in gang.boss_category_list[cat]) - var/datum/gang_item/G = V - if(!G.can_see(user, gang, src)) - continue - - var/cost = G.get_cost_display(user, gang, src) - if(cost) - dat += cost + " " - - var/toAdd = G.get_name_display(user, gang, src) - if(G.can_buy(user, gang, src)) - toAdd = "[toAdd]" - dat += toAdd - var/extra = G.get_extra_info(user, gang, src) - if(extra) - dat += "
[extra]" - dat += "
" - dat += "
" - - dat += "Refresh
" - - var/datum/browser/popup = new(user, "gangtool", "Welcome to GangTool v3.5", 340, 625) - popup.set_content(dat) - popup.open() - - - -/obj/item/device/gangtool/Topic(href, href_list) - if(!can_use(usr)) - return - - add_fingerprint(usr) - - if(href_list["register"]) - register_device(usr) - - else if(!gang) //Gangtool must be registered before you can use the functions below - return - - if(href_list["purchase"]) - var/datum/gang_item/G = gang.boss_item_list[href_list["purchase"]] - if(G && G.can_buy(usr, gang, src)) - G.purchase(usr, gang, src, FALSE) - - attack_self(usr) - - -/obj/item/device/gangtool/proc/ping_gang(mob/user) - if(!user) - return - var/message = stripped_input(user,"Discreetly send a gang-wide message.","Send Message") as null|text - if(!message || !can_use(user)) - return - if(user.z > 2) - to_chat(user, "[icon2html(src, user)]Error: Station out of range.") - return - var/list/members = list() - members += gang.gangsters - members += gang.bosses - if(members.len) - var/gang_rank = gang.bosses.Find(user.mind) - switch(gang_rank) - if(1) - gang_rank = "Gang Boss" - if(2) - gang_rank = "1st Lieutenant" - if(3) - gang_rank = "2nd Lieutenant" - if(4) - gang_rank = "3rd Lieutenant" - else - gang_rank = "[gang_rank - 1]th Lieutenant" - var/ping = "[gang.name] [gang_rank]: [message]" - for(var/datum/mind/ganger in members) - if(ganger.current && (ganger.current.z <= 2) && (ganger.current.stat == CONSCIOUS)) - to_chat(ganger.current, ping) - for(var/mob/M in GLOB.dead_mob_list) - var/link = FOLLOW_LINK(M, user) - to_chat(M, "[link] [ping]") - log_talk(user,"GANG: [key_name(user)] Messaged [gang.name] Gang: [message].",LOGSAY) - - -/obj/item/device/gangtool/proc/register_device(mob/user) - if(gang) //It's already been registered! - return - if((promotable && (user.mind in SSticker.mode.get_gangsters())) || (user.mind in SSticker.mode.get_gang_bosses())) - gang = user.mind.gang_datum - gang.gangtools += src - icon_state = "gangtool-[gang.color]" - if(!(user.mind in gang.bosses)) - var/cached_influence = gang.gangsters[user.mind] - SSticker.mode.remove_gangster(user.mind, 0, 2) - gang.bosses[user.mind] = cached_influence - user.mind.gang_datum = gang - user.mind.special_role = "[gang.name] Gang Lieutenant" - gang.add_gang_hud(user.mind) - log_game("[key_name(user)] has been promoted to Lieutenant in the [gang.name] Gang") - free_pen = 1 - gang.message_gangtools("[user] has been promoted to Lieutenant.") - to_chat(user, "You have been promoted to Lieutenant!") - SSticker.mode.forge_gang_objectives(user.mind) - SSticker.mode.greet_gang(user.mind,0) - to_chat(user, "The Gangtool you registered will allow you to purchase weapons and equipment, and send messages to your gang.") - to_chat(user, "Unlike regular gangsters, you may use recruitment pens to add recruits to your gang. Use them on unsuspecting crew members to recruit them. Don't forget to get your one free pen from the gangtool.") - else - to_chat(usr, "ACCESS DENIED: Unauthorized user.") - -/obj/item/device/gangtool/proc/recall(mob/user) - if(!can_use(user)) - return 0 - - if(SSshuttle.emergencyNoRecall) - return 0 - - if(recalling) - to_chat(usr, "Error: Recall already in progress.") - return 0 - - if(!gang.recalls) - to_chat(usr, "Error: Unable to access communication arrays. Firewall has logged our signature and is blocking all further attempts.") - - gang.message_gangtools("[usr] is attempting to recall the emergency shuttle.") - recalling = 1 - to_chat(loc, "[icon2html(src, loc)]Generating shuttle recall order with codes retrieved from last call signal...") - - sleep(rand(100,300)) - - if(SSshuttle.emergency.mode != SHUTTLE_CALL) //Shuttle can only be recalled when it's moving to the station - to_chat(user, "[icon2html(src, user)]Emergency shuttle cannot be recalled at this time.") - recalling = 0 - return 0 - to_chat(loc, "[icon2html(src, loc)]Shuttle recall order generated. Accessing station long-range communication arrays...") - - sleep(rand(100,300)) - - if(!gang.dom_attempts) - to_chat(user, "[icon2html(src, user)]Error: Unable to access communication arrays. Firewall has logged our signature and is blocking all further attempts.") - recalling = 0 - return 0 - - var/turf/userturf = get_turf(user) - if(userturf.z != ZLEVEL_STATION) //Shuttle can only be recalled while on station - to_chat(user, "[icon2html(src, user)]Error: Device out of range of station communication arrays.") - recalling = 0 - return 0 - var/datum/station_state/end_state = new /datum/station_state() - end_state.count() - if((100 * GLOB.start_state.score(end_state)) < 80) //Shuttle cannot be recalled if the station is too damaged - to_chat(user, "[icon2html(src, user)]Error: Station communication systems compromised. Unable to establish connection.") - recalling = 0 - return 0 - to_chat(loc, "[icon2html(src, loc)]Comm arrays accessed. Broadcasting recall signal...") - - sleep(rand(100,300)) - - recalling = 0 - log_game("[key_name(user)] has tried to recall the shuttle with a gangtool.") - message_admins("[key_name_admin(user)] has tried to recall the shuttle with a gangtool.", 1) - userturf = get_turf(user) - if(userturf.z == ZLEVEL_STATION) //Check one more time that they are on station. - if(SSshuttle.cancelEvac(user)) - gang.recalls -= 1 - return 1 - - to_chat(loc, "[icon2html(src, loc)]No response recieved. Emergency shuttle cannot be recalled at this time.") - return 0 - -/obj/item/device/gangtool/proc/can_use(mob/living/carbon/human/user) - if(!istype(user)) - return 0 - if(user.incapacitated()) - return 0 - if(!(src in user.contents)) - return 0 - if(!user.mind) - return 0 - if(gang && (user.mind in gang.bosses)) //If it's already registered, only let the gang's bosses use this - return 1 - else if(user.mind in SSticker.mode.get_all_gangsters()) // For soldiers and potential LT's - return 1 - return 0 - -/obj/item/device/gangtool/spare - outfits = 1 - -/obj/item/device/gangtool/spare/lt - promotable = 1 - -///////////// Internal tool used by gang regulars /////////// - -/obj/item/device/gangtool/soldier/New(mob/user) - . = ..() - gang = user.mind.gang_datum - gang.gangtools += src - var/datum/action/innate/gang/tool/GT = new - GT.Grant(user, src, gang) - -/obj/item/device/gangtool/soldier/attack_self(mob/user) - if (!can_use(user)) - return - var/dat - if(gang.is_dominating) - dat += "
Takeover In Progress:
[gang.domination_time_remaining()] seconds remain
" - dat += "Registration: [gang.name] - Foot Soldier
" - dat += "Organization Size: [gang.gangsters.len + gang.bosses.len] | Station Control: [round((gang.territory.len/GLOB.start_state.num_territories)*100, 1)]%
" - dat += "Your Influence: [gang.get_influence(user.mind)]
" - if(LAZYLEN(tags)) - dat += "Your tags generate bonus influence for you.
You have tagged the following territories:" - for(var/obj/effect/decal/cleanable/crayon/gang/T in tags) - dat += " [T.territory] -" - else - dat += "You have not personally tagged any territory for your gang. Use a spray can to mark your territory and receive bonus influence." - dat += "
Time until Influence grows: [time2text(SSticker.mode.gang_points.next_point_time - world.time, "mm:ss")]
" - dat += "
" - for(var/cat in gang.reg_category_list) - dat += "[cat]
" - for(var/V in gang.reg_category_list[cat]) - var/datum/gang_item/G = V - if(!G.can_see(user, gang, src)) - continue - - var/cost = G.get_cost_display(user, gang, src) - if(cost) - dat += cost + " " - - var/toAdd = G.get_name_display(user, gang, src) - if(G.can_buy(user, gang, src)) - toAdd = "[toAdd]" - dat += toAdd - var/extra = G.get_extra_info(user, gang, src) - if(extra) - dat += "
[extra]" - dat += "
" - dat += "
" - - dat += "Refresh
" - - var/datum/browser/popup = new(user, "gangtool", "Welcome to GangTool v3.5", 340, 625) - popup.set_content(dat) - popup.open() - -/obj/item/device/gangtool/soldier/Topic(href, href_list) - if(!can_use(usr)) - return - if(href_list["purchase"]) - var/datum/gang_item/G = gang.reg_item_list[href_list["purchase"]] - if(G && G.can_buy(usr, gang, src)) - G.purchase(usr, gang, src, FALSE) - - attack_self(usr) - -/datum/action/innate/gang - background_icon_state = "bg_spell" - -/datum/action/innate/gang/IsAvailable() - if(!owner.mind || !owner.mind in SSticker.mode.get_all_gangsters()) - return 0 - return ..() - -/datum/action/innate/gang/tool - name = "Personal Gang Tool" - desc = "An implanted gang tool that lets you purchase gear" - background_icon_state = "bg_mime" - button_icon_state = "bolt_action" - var/obj/item/device/gangtool/soldier/GT - -/datum/action/innate/gang/tool/Grant(mob/user, obj/reg, datum/gang/G) - . = ..() - GT = reg - button.color = G.color - -/datum/action/innate/gang/tool/Activate() - GT.attack_self(owner) diff --git a/code/game/gamemodes/intercept_report.dm b/code/game/gamemodes/intercept_report.dm deleted file mode 100644 index af138c689e..0000000000 --- a/code/game/gamemodes/intercept_report.dm +++ /dev/null @@ -1,52 +0,0 @@ -//Intercept reports are sent to the station every round to warn the crew of possible threats. They consist of five possibilites, one of which is always correct. - -/datum/intercept_text - var/text - -/datum/intercept_text/proc/build(mode_type) - text = "
" - switch(mode_type) - if("blob") - text += "A CMP scientist by the name of [pick("Griff", "Pasteur", "Chamberland", "Buist", "Rivers", "Stanley")] boasted about his corporation's \"finest creation\" - a macrobiological \ - virus capable of self-reproduction and hellbent on consuming whatever it touches. He went on to query Cybersun for permission to utilize the virus in biochemical warfare, to which \ - CMP subsequently gained. Be vigilant for any large organisms rapidly spreading across the station, as they are classified as a level 5 biohazard and critically dangerous. Note that \ - this organism seems to be weak to extreme heat; concentrated fire (such as welding tools and lasers) will be effective against it." - if("changeling") - text += "The Gorlex Marauders have announced the successful raid and destruction of Central Command containment ship #S-[rand(1111, 9999)]. This ship housed only a single prisoner - \ - codenamed \"Thing\", and it was highly adaptive and extremely dangerous. We have reason to believe that the Thing has allied with the Syndicate, and you should note that likelihood \ - of the Thing being sent to a station in this sector is highly likely. It may be in the guise of any crew member. Trust nobody - suspect everybody. Do not announce this to the crew, \ - as paranoia may spread and inhibit workplace efficiency." - if("clock_cult") - text += "We have lost contact with multiple stations in your sector. They have gone dark and do not respond to all transmissions, although they appear intact and the crew's life \ - signs remain uninterrupted. Those that have managed to send a transmission or have had some of their crew escape tell tales of a machine cult creating sapient automatons and seeking \ - to brainwash the crew to summon their god, Ratvar. If evidence of this cult is dicovered aboard your station, extreme caution and extreme vigilance must be taken going forward, and \ - all resources should be devoted to stopping this cult. Note that holy water seems to weaken and eventually return the minds of cultists that ingest it, and mindshield implants will \ - prevent conversion altogether." - if("cult") - text += "Some stations in your sector have reported evidence of blood sacrifice and strange magic. Ties to the Wizards' Federation have been proven not to exist, and many employees \ - have disappeared; even Central Command employees light-years away have felt strange presences and at times hysterical compulsions. Interrogations point towards this being the work of \ - the cult of Nar-Sie. If evidence of this cult is discovered aboard your station, extreme caution and extreme vigilance must be taken going forward, and all resources should be \ - devoted to stopping this cult. Note that holy water seems to weaken and eventually return the minds of cultists that ingest it, and mindshield implants will prevent conversion \ - altogether." - if("extended") - text += "The transmission mostly failed to mention your sector. It is possible that there is nothing in the Syndicate that could threaten your station during this shift." - if("malf") - text += "A large ionospheric anomaly recently passed through your sector. Although physically undetectable, ionospherics tend to have an extreme effect on telecommunications equipment \ - as well as artificial intelligence units. Closely observe the behavior of artificial intelligence, and treat any machine malfunctions as purposeful. If necessary, termination of the \ - artificial intelligence is advised; assuming that it activates the station's self-destruct, your pinpointer has been configured to constantly track it, wherever it may be." - if("nuclear") - text += "One of Central Command's trading routes was recently disrupted by a raid carried out by the Gorlex Marauders. They seemed to only be after one ship - a highly-sensitive \ - transport containing a nuclear fission explosive, although it is useless without the proper code and authorization disk. While the code was likely found in minutes, the only disk that \ - can activate this explosive is on your station. Ensure that it is protected at all times, and remain alert for possible intruders." - if("revolution") - text += "Employee unrest has spiked in recent weeks, with several attempted mutinies on heads of staff. Some crew have been observed using flashbulb devices to blind their colleagues, \ - who then follow their orders without question and work towards dethroning departmental leaders. Watch for behavior such as this with caution. If the crew attempts a mutiny, you and \ - your heads of staff are fully authorized to execute them using lethal weaponry - they will be later cloned and interrogated at Central Command." - if("traitor") - text += "Although more specific threats are commonplace, you should always remain vigilant for Syndicate agents aboard your station. Syndicate communications have implied that many \ - Nanotrasen employees are Syndicate agents with hidden memories that may be activated at a moment's notice, so it's possible that these agents might not even know their positions." - if("wizard") - text += "A dangerous Wizards' Federation individual by the name of [pick(GLOB.wizard_first)] [pick(GLOB.wizard_second)] has recently escaped confinement from an unlisted prison facility. This \ - man is a dangerous mutant with the ability to alter himself and the world around him by what he and his leaders believe to be magic. If this man attempts an attack on your station, \ - his execution is highly encouraged, as is the preservation of his body for later study." - return text diff --git a/code/game/gamemodes/miniantags/abduction/abduction.dm b/code/game/gamemodes/miniantags/abduction/abduction.dm deleted file mode 100644 index cb8c51fd83..0000000000 --- a/code/game/gamemodes/miniantags/abduction/abduction.dm +++ /dev/null @@ -1,37 +0,0 @@ -/datum/game_mode - var/list/datum/mind/abductors = list() - -// LANDMARKS -/obj/effect/landmark/abductor - var/team_number = 1 - -/obj/effect/landmark/abductor/agent - icon_state = "abductor_agent" -/obj/effect/landmark/abductor/scientist - icon_state = "abductor" - -// OBJECTIVES -/datum/objective/experiment - target_amount = 6 - -/datum/objective/experiment/New() - explanation_text = "Experiment on [target_amount] humans." - -/datum/objective/experiment/check_completion() - for(var/obj/machinery/abductor/experiment/E in GLOB.machines) - if(!istype(team, /datum/team/abductor_team)) - return FALSE - var/datum/team/abductor_team/T = team - if(E.team_number == T.team_number) - return E.points >= target_amount - return FALSE - -/datum/game_mode/proc/update_abductor_icons_added(datum/mind/alien_mind) - var/datum/atom_hud/antag/hud = GLOB.huds[ANTAG_HUD_ABDUCTOR] - hud.join_hud(alien_mind.current) - set_antag_hud(alien_mind.current, ((alien_mind in abductors) ? "abductor" : "abductee")) - -/datum/game_mode/proc/update_abductor_icons_removed(datum/mind/alien_mind) - var/datum/atom_hud/antag/hud = GLOB.huds[ANTAG_HUD_ABDUCTOR] - hud.leave_hud(alien_mind.current) - set_antag_hud(alien_mind.current, null) \ No newline at end of file diff --git a/code/game/gamemodes/miniantags/hades/hades.dm b/code/game/gamemodes/miniantags/hades/hades.dm deleted file mode 100644 index 948aaeb422..0000000000 --- a/code/game/gamemodes/miniantags/hades/hades.dm +++ /dev/null @@ -1,765 +0,0 @@ -#define STATE_JUDGE 0 -#define STATE_WRATH 1 -#define STATE_FLEE 2 - -/mob/living/simple_animal/hostile/hades - name = "hades" - real_name = "hades" - desc = "A strange being, clad in dark robes. Their very presence radiates an uneasy power." - speak_emote = list("preaches","announces","spits","conveys") - emote_hear = list("hums.","prays.") - response_help = "kneels before" - response_disarm = "flails at" - response_harm = "punches" - icon = 'icons/mob/EvilPope.dmi' - icon_state = "EvilPope" - icon_living = "EvilPope" - icon_dead = "popedeath" - speed = 1 - a_intent = "harm" - status_flags = CANPUSH - attack_sound = 'sound/magic/MAGIC_MISSILE.ogg' - death_sound = 'sound/magic/Teleport_diss.ogg' - 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) - minbodytemp = 0 - maxbodytemp = INFINITY - faction = list("hades") - attacktext = "strikes with an unholy rage at" - maxHealth = 1000 - health = 1000 - healable = 0 - environment_smash = 3 - melee_damage_lower = 15 - melee_damage_upper = 20 - see_in_dark = 8 - see_invisible = SEE_INVISIBLE_MINIMUM - loot = list(/obj/effect/decal/cleanable/blood) - del_on_death = 0 - deathmessage = "begins to sizzle and pop, their flesh peeling away like paper." - - var/isDoingDeath = FALSE - var/isFleeing = FALSE - var/fleeTimes = 0 - var/currentState = STATE_JUDGE - var/rageLevel = 0 - - var/maxWrathTimer = 150 - var/lastWrathTimer = 0 - - var/timeBetweenGrabs = 60 - var/lastGrabTime = 0 - - var/list/validSins = list("Greed","Gluttony","Pride","Lust","Envy","Sloth","Wrath") - var/lastsinPerson = 0 - var/sinPersonTime = 300 - var/lastFlee = 0 - var/fleeTimer = 30 - var/fakesinPersonChance = 60 - var/list/sinPersonsayings = list("You revel in only your own greed.",\ - "There is nothing but your absolution.",\ - "Your choices have led you to this.",\ - "There is only one way out.",\ - "The only way to be free is to be free of yourself.",\ - "Wallow in sin, and give yourself unto darkness.",\ - "Only the truly sinful may stand.",\ - "Find yourself and you will find Absolution.",\ - "Forego the pain of this process, and submit.",\ - "We can be one in suffering.",\ - "You stand on the precipice of ascension, give in.",\ - "You cannot fathom what lies beyond",\ - "Repent your sins.",\ - "This is the eve of your last days.",\ - "Darkness comes.") - - var/list/creepyasssounds = list('sound/hallucinations/behind_you1.ogg', 'sound/hallucinations/behind_you2.ogg', \ - 'sound/hallucinations/growl3.ogg', 'sound/hallucinations/im_here1.ogg', 'sound/hallucinations/im_here2.ogg',\ - 'sound/hallucinations/i_see_you1.ogg', 'sound/hallucinations/i_see_you2.ogg',\ - 'sound/hallucinations/look_up1.ogg', 'sound/hallucinations/look_up2.ogg', 'sound/hallucinations/over_here1.ogg',\ - 'sound/hallucinations/over_here2.ogg', 'sound/hallucinations/over_here3.ogg',\ - 'sound/hallucinations/turn_around1.ogg', 'sound/hallucinations/turn_around2.ogg') - - var/obj/effect/proc_holder/spell/targeted/lightning/sinLightning - - var/list/currentAcolytes = list() - -/mob/living/simple_animal/hostile/hades/New() - ..() - - sinLightning = new/obj/effect/proc_holder/spell/targeted/lightning(src) - - sinLightning.charge_max = 1 - sinLightning.clothes_req = 0 - sinLightning.range = 32 - sinLightning.cooldown_min = 1 - - lastsinPerson = world.time - var/list/possible_titles = list("Pope","Bishop","Lord","Cardinal","Deacon","Pontiff") - var/chosen = "Hades, [pick(possible_titles)] of Sin" - name = chosen - real_name = chosen - - world << "[name] has entered your reality. Kneel before them." - world << 'sound/effects/pope_entry.ogg' - - Appear(get_turf(src)) - -/mob/living/simple_animal/hostile/hades/handle_environment(datum/gas_mixture/environment) - //space popes are from space, they need not your fickle "oxygen" - return - -/mob/living/simple_animal/hostile/hades/handle_temperature_damage() - //space popes are from space, they don't uh.. something fire burny death - return - -/mob/living/simple_animal/hostile/hades/death(gibbed) - if(!isDoingDeath) - notransform = TRUE - anchored = TRUE - src.visible_message("[src] begins to twist and distort, before snapping backwards with a sickening crunch.") - spawn(20) - src.visible_message("[src] is being sucked back to their own realm, destabilizing the fabric of time and space itself!") - playsound(get_turf(src), 'sound/effects/hyperspace_begin.ogg', 100, 1) - isDoingDeath = TRUE - AIStatus = AI_OFF - SpinAnimation() - for(var/i in 1 to 5) - for(var/turf/T in spiral_range_turfs(i,src)) - addtimer(src, "sinShed", i*10, FALSE, T) - spawn(60) // required to be spawn so we can call death's ..() to complete death. - SpinAnimation(0,0) - explosion(get_turf(src), 0, 2, 4, 6, flame_range = 6) - ..() - var/area/A = locate(/area/hades) in world - if(A) - var/turf/T = get_turf(locate(/obj/effect/landmark/event_spawn) in A) - if(T) - src.visible_message("[src]'s Staff is flung free as their body explodes.") - var/obj/structure/ladder/unbreakable/hades/churchLadder = new/obj/structure/ladder/unbreakable/hades(T) - var/obj/structure/ladder/unbreakable/hades/bodyLadder = new/obj/structure/ladder/unbreakable/hades(get_turf(src)) - var/obj/item/hades_staff/HS = new/obj/item/hades_staff(get_turf(src)) - HS.throw_at_fast(pick(orange(src,7)),10,1) - churchLadder.up = bodyLadder - bodyLadder.down = churchLadder - qdel(src) - -/mob/living/simple_animal/hostile/hades/attackby(obj/item/I, mob/user, params) - ..() - Defend(user,I) - -/mob/living/simple_animal/hostile/hades/grabbedby(mob/living/carbon/user, supress_message = 0) - ..() - Defend(user,user) - -/mob/living/simple_animal/hostile/hades/hitby(atom/movable/AM, skipcatch, hitpush, blocked) - ..() - lastsinPerson -= (sinPersonTime/4) - if(istype(AM,/obj/item)) - var/obj/item/throwCast = AM - Defend(throwCast.thrownby,AM) - -/mob/living/simple_animal/hostile/hades/bullet_act(obj/item/projectile/P, def_zone) - //don't call ..() because we're going to deflect it - lastsinPerson -= (sinPersonTime/4) - Defend(P.firer,P) - return -1 - -/mob/living/simple_animal/hostile/hades/attack_hand(mob/living/carbon/human/M) - ..() - lastsinPerson -= (sinPersonTime/4) - Defend(M,M) - -/mob/living/simple_animal/hostile/hades/proc/Defend(var/mob/attacker,var/source) - if(!isDoingDeath) - rageLevel += 5 - src.visible_message("[src] rounds on the [attacker], gazing at them with a [pick("cold","frosty","freezing","dark")] [pick("glare","gaze","glower","stare")].") - - if(istype(source,/obj/item/projectile)) - src.visible_message("[src] [pick("calmly","silently","nonchalantly")] waves their hand, deflecting the [source].") - var/obj/item/projectile/P = source - if(P.starting) - var/new_x = P.starting.x + pick(0, 0, 0, 0, 0, -1, 1, -2, 2) - var/new_y = P.starting.y + pick(0, 0, 0, 0, 0, -1, 1, -2, 2) - var/turf/curloc = get_turf(src) - - P.original = locate(new_x, new_y, P.z) - P.starting = curloc - P.current = curloc - P.firer = src - P.yo = new_y - curloc.y - P.xo = new_x - curloc.x - P.Angle = null - else - if(prob(20)) - var/chosenDefend = rand(1,3) - switch(chosenDefend) - if(1) - attacker.visible_message("[attacker] is lifted from the ground, shadowy powers tossing them aside.") - attacker.throw_at_fast(pick(orange(src,7)),10,1) - if(2) - attacker.visible_message("[attacker] crackles with electricity, a bolt leaping from [src] to them.") - sinLightning.Bolt(src,attacker,30,5,src) - if(3) - src.visible_message("[src] points his staff at [attacker], a swarm of eyeballs lurching fourth!") - for(var/i in 1 to 4) - var/mob/living/simple_animal/hostile/carp/eyeball/E = new/mob/living/simple_animal/hostile/carp/eyeball(pick(orange(attacker,1))) - E.faction = faction - addtimer(E, "gib", 150, FALSE) - -/mob/living/simple_animal/hostile/hades/proc/sinShed(var/turf/T) - var/obj/effect/overlay/temp/cult/sparks/S = PoolOrNew(/obj/effect/overlay/temp/cult/sparks, T) - S.anchored = FALSE - S.throw_at_fast(src,10,1) - PoolOrNew(/obj/effect/overlay/temp/hadesBlood, T) - -/mob/living/simple_animal/hostile/hades/proc/Transfer(var/mob/living/taken, var/turf/transferTarget) - if(transferTarget) - playsound(get_turf(taken), 'sound/magic/Ethereal_Enter.ogg', 50, 1, -1) - PoolOrNew(/obj/effect/overlay/temp/hadesFlick, get_turf(taken)) - taken.forceMove(transferTarget) - Appear(get_turf(taken)) - -/mob/living/simple_animal/hostile/hades/proc/Appear(var/turf/where) - var/obj/effect/timestop/hades/TS = new /obj/effect/timestop/hades(where) - TS.immune = list(src) - -/mob/living/simple_animal/hostile/hades/Life() - if(..() && !isDoingDeath) // appropriately check if we're alive now we leave a corpse - if(health > maxHealth/4 && !isFleeing) - if(rageLevel > 50) - lastWrathTimer = world.time - currentState = STATE_WRATH - else - currentState = STATE_JUDGE - else - if(world.time > lastFlee + fleeTimer) - lastFlee = world.time - isFleeing = TRUE - currentState = STATE_FLEE - - var/area/healthCheck = get_area(src) - - if(istype(healthCheck,/area/chapel/main)) - if(currentState == STATE_FLEE) - lastWrathTimer = world.time - currentState = STATE_WRATH - if(health < maxHealth/2) - health += 10 // slowly regain hp in the chapel, up to a maximum of half our max - - var/spokenThisTurn = FALSE - for(var/mob/living/A in currentAcolytes) - if(!A) - currentAcolytes -= A - continue - if(A.health <= 0) - rageLevel += 5 - if(!spokenThisTurn) - spokenThisTurn = TRUE - var/list/lossSayings = list("They were weak.","For every death, two more rise.",\ - "What is but one servant lost?","Darkness engulf you!","To the Pit with them.",\ - "Fools! All of you!","You can't stop me. You. Will. Be. JUDGED.") - src.say(pick(lossSayings)) - currentAcolytes -= A - A.gib() - - if(currentState == STATE_WRATH) // we have been enraged. - if(world.time > lastWrathTimer + maxWrathTimer) - rageLevel = 0 // wind down if we're wrathful too long. - rageLevel -= 1 // rage phase starts at 50, meaning roughly 20s of rage. - if(currentAcolytes.len == 0) - src.say("Rise, Servants. AID YOUR MASTER.") - playsound(get_turf(src), 'sound/magic/CastSummon.ogg', 100, 1) - for(var/i in 1 to 5) - var/mob/living/simple_animal/hostile/hadesacolyte/HA = new/mob/living/simple_animal/hostile/hadesacolyte(get_turf(pick(orange(2,src)))) - HA.master = src - currentAcolytes += HA - if(target) - if(world.time > lastGrabTime + timeBetweenGrabs) - if(get_dist(src,target) > 4) // you can't run from us. upped to 4 to give more leeway. - lastGrabTime = world.time - var/list/fleeSayings = list("There is no escape from your sins, [target]","Fleeing will only make your punishment worse [target]!",\ - "There is nowhere you can hide, [target]!","You can't run, [target]!","Get back here, [target]!","You coward, [target]!",\ - "I will find you, [target]!","Return to me, [target]!") - src.say(pick(fleeSayings)) - var/mob/living/toGrab = target - toGrab.Beam(src,"blood",'icons/effects/beam.dmi',10) - toGrab.Weaken(6) - playsound(get_turf(src), 'sound/magic/CastSummon.ogg', 100, 1) - toGrab.throw_at_fast(src,10,1) - if(rageLevel >= 100) - rageLevel = 50 - var/list/overboardSayings = list("Ashes! It will all be ashes!","I will bring about the apocolypse!",\ - "There will be nothing but your withered husks!","Face your doom, cretins!","There. Will. Be. ORDER!",\ - "I am your Lord, lay down your arms and submit.","Your souls will be cremated!",\ - "Only in death will you obey!","This is no person's fault but your own!") - src.say(pick(overboardSayings)) - var/turf/StartLoc = get_turf(src) - var/list/nearby = orange(6,src) - var/slashCount = 0 - var/aoeType = rand(1,2) // just for future proofing - for(var/mob/living/A in nearby) - slashCount++ - A.Beam(src,"blood",'icons/effects/beam.dmi',10) - spawn(slashCount + 3) - if(aoeType == 1) - // no more cheaping it out with non-player mobs like turrets or carps - loc = get_turf(A) - sinShed(StartLoc) - A.attack_animal(src) - PoolOrNew(/obj/effect/overlay/temp/hadesBlood,get_turf(A)) - playsound(get_turf(A), 'sound/magic/SummonItems_generic.ogg', 100, 1) - if(aoeType == 2) - sinShed(StartLoc) - PoolOrNew(/obj/effect/overlay/temp/hadesBite,get_turf(A)) - A.Weaken(6) - var/obj/effect/timestop/hades/large/TS = new /obj/effect/timestop/hades/large(StartLoc) - TS.immune = list(src) - spawn((slashCount+1)+3) - loc = StartLoc - - if(currentState == STATE_FLEE) // we've been wounded, let us flee and lick our wounds - var/area/A = locate(/area/chapel/main) in world - if(A) - var/turf/T = get_turf(locate(/obj/effect/landmark/event_spawn) in A) - if(!T) - T = get_turf(src) // no event spawn in chapel, fall back to doing it on the spot. - if(T) - fleeTimes++ - Transfer(src,T) - AIStatus = AI_OFF - notransform = TRUE - anchored = TRUE - for(var/i in 1 to 5) - spawn(i*10) - for(var/turf/S in oview(i,src) - oview((i)-1,src)) - sinShed(S) - health += maxHealth/(10*fleeTimes) // every flee we gain less HP - spawn(50) - isFleeing = FALSE - notransform = FALSE - anchored = FALSE - AIStatus = AI_ON - currentState = STATE_JUDGE - lastsinPerson = 0 // immediately teleport away to judge - - if(currentState == STATE_JUDGE) // our default state, judge a few people and tell them they're rude or something - if(world.time > lastsinPerson + sinPersonTime) - if(prob(fakesinPersonChance)) - lastsinPerson = world.time - visible_message("[pick(sinPersonsayings)]") - playsound(get_turf(src), pick(creepyasssounds), 100, 1) - else - lastsinPerson = world.time - var/mob/living/carbon/human/sinPerson = pick(living_mob_list) - var/depth = living_mob_list.len + 1 // just in case - if(sinPerson) // no more finding nullcakes - if(!sinPerson.ckey) - while(!sinPerson.ckey && depth > 0) - --depth - var/checkPerson = pick(living_mob_list) - if(checkPerson) - sinPerson = checkPerson - if(!sinPerson.ckey) - // double check ensure that if the above loop fails to get a ckey target - // we don't go and use the last mob checked, causing odd situations - return - if(sinPerson) - if(prob(65)) // moderately high chance for us to go to them, else they come here. - Transfer(src,get_turf(pick(oview(1,sinPerson)))) - else - Transfer(sinPerson,get_turf(pick(oview(1,src)))) - var/sinPersonchoice = pick(validSins) - switch(sinPersonchoice) - if("Greed") - src.say("Your sin, [sinPerson], is Greed.") - if(prob(50)) - src.say("I will indulge your sin, [sinPerson].") - sin_Greed(sinPerson, TRUE) - else - src.say("Your sin will be punished, [sinPerson]!") - sin_Greed(sinPerson, FALSE) - if("Gluttony") - src.say("Your sin, [sinPerson], is Gluttony.") - if(prob(50)) - src.say("I will indulge your sin, [sinPerson].") - sin_Gluttony(sinPerson,TRUE) - else - src.say("Your sin will be punished, [sinPerson]!") - sin_Gluttony(sinPerson,FALSE) - if("Pride") - src.say("Your sin, [sinPerson], is Pride.") - if(prob(50)) - src.say("I will indulge your sin, [sinPerson].") - sin_Pride(sinPerson,TRUE) - else - src.say("Your sin will be punished, [sinPerson]!") - sin_Pride(sinPerson,FALSE) - if("Lust") - src.say("Your sin, [sinPerson], is Lust.") - if(prob(50)) - src.say("I will indulge your sin, [sinPerson].") - sin_Lust(sinPerson,TRUE) - else - src.say("Your sin will be punished, [sinPerson]!") - sin_Lust(sinPerson,TRUE) - if("Envy") - src.say("Your sin, [sinPerson], is Envy.") - if(prob(50)) - src.say("I will indulge your sin, [sinPerson].") - sin_Envy(sinPerson,TRUE) - else - src.say("Your sin will be punished, [sinPerson]!") - sin_Envy(sinPerson,FALSE) - if("Sloth") - src.say("Your sin, [sinPerson], is Sloth.") - if(prob(50)) - src.say("I will indulge your sin, [sinPerson].") - sin_Sloth(sinPerson,TRUE) - else - src.say("Your sin will be punished, [sinPerson]!") - sin_Sloth(sinPerson,FALSE) - if("Wrath") - src.say("Your sin, [sinPerson], is Wrath.") - if(prob(50)) - src.say("I will indulge your sin, [sinPerson].") - sin_Wrath(sinPerson,TRUE) - else - src.say("Your sin will be punished, [sinPerson]!") - sin_Wrath(sinPerson,FALSE) - - -///Sin related things - -//global Sin procs, shared between staff and pope - -/proc/sin_Greed(var/mob/living/carbon/human/sinPerson, var/isIndulged) - if(isIndulged) - sinPerson << "You feel like you deserve more, in fact, you want everything." - var/list/greed = list(/obj/item/stack/sheet/mineral/gold,/obj/item/stack/sheet/mineral/silver,/obj/item/stack/sheet/mineral/diamond) - for(var/i in 1 to 10) - var/greed_type = pick(greed) - new greed_type(get_turf(sinPerson)) - else - sinPerson << "Your body begins to shift and bend, changing to reflect your inner greed." - var/mob/living/M = sinPerson.change_mob_type(/mob/living/simple_animal/cockroach,get_turf(sinPerson),"Greedroach",1) - M.AddSpell(new/obj/effect/proc_holder/spell/targeted/mind_transfer) - -/proc/sin_Gluttony(var/mob/living/carbon/human/sinPerson, var/isIndulged) - if(isIndulged) - sinPerson << "Your stomach growls, you feel hungry." - var/list/allTypes = list() - for(var/A in typesof(/obj/item/reagent_containers/food/snacks)) - var/obj/item/reagent_containers/food/snacks/O = A - if(initial(O.cooked_type)) - allTypes += A - for(var/i in 1 to 10) - var/greed_type = pick(allTypes) - new greed_type(get_turf(sinPerson)) - else - sinPerson << "Your body begins to bloat and stretch, bile rising in your throat." - sinPerson.reagents.add_reagent("nutriment",1000) - -/proc/sin_Pride(var/mob/living/carbon/human/sinPerson, var/isIndulged) - if(isIndulged) - sinPerson << "You feel strong enough to take on the world." - var/obj/item/twohanded/sin_pride/good = new/obj/item/twohanded/sin_pride(get_turf(sinPerson)) - good.name = "Indulged [good.name]" - good.pride_direction = FALSE - else - sinPerson << "You feel small and weak, like the entire world is against you." - var/obj/item/twohanded/sin_pride/bad = new/obj/item/twohanded/sin_pride(get_turf(sinPerson)) - bad.name = "Punished [bad.name]" - bad.pride_direction = TRUE - -/proc/sin_Lust(var/mob/living/carbon/human/sinPerson, var/isIndulged) - if(isIndulged) - sinPerson << "You feel confident, like everything and everyone is drawn to you." - var/obj/item/lovestone/good = new/obj/item/lovestone(get_turf(sinPerson)) - good.name = "Indulged [good.name]" - good.lust_direction = FALSE - else - sinPerson << "You feel lonely... the wish for the warmth of another spark through your mind." - var/obj/item/lovestone/bad = new/obj/item/lovestone(get_turf(sinPerson)) - bad.name = "Punished [bad.name]" - bad.lust_direction = TRUE - -/proc/sin_Envy(var/mob/living/carbon/human/sinPerson, var/isIndulged) - if(isIndulged) - for(var/mob/living/carbon/human/H in player_list) // name lottery - if(H == sinPerson) - continue - if(prob(25)) - sinPerson.name = H.name - sinPerson.real_name = H.real_name - var/datum/dna/lottery = H.dna - lottery.transfer_identity(sinPerson, transfer_SE=1) - sinPerson.updateappearance(mutcolor_update=1) - sinPerson.domutcheck() - sinPerson << "You feel envious of [sinPerson.name], and your body shifts to reflect that!" - else - var/sinPersonspecies = pick(species_list) - var/newtype = species_list[sinPersonspecies] - sinPerson << "You wish for more from yourself.. your body shifts to suit your wish." - sinPerson.set_species(newtype) - -/proc/sin_Sloth(var/mob/living/carbon/human/sinPerson, var/isIndulged) - if(isIndulged) - sinPerson << "You feel tired..." - sinPerson.drowsyness += 100 - else - sinPerson << "A chill comes over your body, the feeling of frostbite nipping at your fingers." - sinPerson.reagents.add_reagent("frostoil", 50) - -/proc/sin_Wrath(var/mob/living/carbon/human/sinPerson, var/isIndulged) - if(isIndulged) - sinPerson << "You feel wrathful, like you want to destroy everyone and everything." - sinPerson.change_mob_type(/mob/living/simple_animal/slaughter,get_turf(sinPerson),"Wrath Demon",1) - else - sinPerson << "Your chest feels tight, and the world begins to spin around you." - sinPerson.reagents.add_reagent("lexorin", 29) - sinPerson.reagents.add_reagent("mindbreaker", 29) - -/obj/effect/overlay/temp/hadesFlick - name = "transdimensional waste" - icon = 'icons/mob/mob.dmi' - icon_state = "liquify" - duration = 15 - -/obj/effect/overlay/temp/hadesBite - name = "biting tendril" - icon = 'icons/effects/effects.dmi' - icon_state = "tendril_bite" - duration = 15 - -/obj/effect/overlay/temp/hadesBlood - name = "blood plume" - icon = 'icons/effects/128x128.dmi' - icon_state = "spray_plume" - duration = 30 - -/obj/effect/timestop/hades // custom timeslip to make him immune - name = "Frozen Time" - desc = "Time has slowed to a halt." - -/obj/effect/timestop/hades/New() - spawn(5) - ..() - -/obj/effect/timestop/hades/large - freezerange = 6 - icon_state = "huge_rune" - icon = 'icons/effects/224x224.dmi' - - -/obj/item/twohanded/sin_pride - icon_state = "mjollnir0" - name = "Pride-struck Hammer" - desc = "It resonates an aura of Pride." - force = 5 - throwforce = 15 - w_class = 4 - slot_flags = SLOT_BACK - force_unwielded = 5 - force_wielded = 20 - attack_verb = list("attacked", "smashed", "crushed", "splattered", "cracked") - hitsound = 'sound/weapons/blade1.ogg' - var/pride_direction = FALSE - -/obj/item/twohanded/sin_pride/update_icon() - icon_state = "mjollnir[wielded]" - return - -/obj/item/twohanded/sin_pride/afterattack(atom/A as mob|obj|turf|area, mob/user, proximity) - if(!proximity) return - if(wielded) - if(istype(A,/mob/living/carbon/human)) - var/mob/living/carbon/H = A - var/mob/living/carbon/U = user - if(H) - if(pride_direction == FALSE) - U.reagents.trans_to(H, user.reagents.total_volume, 1, 1, 0) - U << "Your pride reflects on [H]." - if(H.health > 0) - U.health += force - U.updatehealth() - H.health -= force - H.updatehealth() - H << "You feel insecure, taking on [user]'s burden." - else if(pride_direction == TRUE) - H.reagents.trans_to(user, H.reagents.total_volume, 1, 1, 0) - H << "Your pride reflects on [user]." - if(U.health > 0) - U.health -= force - U.updatehealth() - H.health += force - H.updatehealth() - U << "You feel insecure, taking on [H]'s burden." - -/obj/item/lovestone - name = "Stone of Lust" - desc = "It lays within your hand, radiating pulses of uncomfortable warmth." - icon = 'icons/obj/wizard.dmi' - icon_state = "lovestone" - item_state = "lovestone" - w_class = 1 - var/lust_direction = FALSE - var/lastUsage = 0 - var/usageTimer = 300 - -/obj/item/lovestone/attack_self(mob/user) - if(world.time > lastUsage + usageTimer) - lastUsage = world.time - user.visible_message("[user] grips the [src] tightly, causing it to vibrate and pulse brightly.") - spawn(25) - if(lust_direction == FALSE) - var/list/throwAt = list() - for(var/atom/movable/AM in oview(7,user)) - if(!AM.anchored && AM != user) - throwAt.Add(AM) - for(var/counter = 1, counter < throwAt.len, ++counter) - var/atom/movable/cast = throwAt[counter] - cast.throw_at_fast(user,10,1) - else if(lust_direction == 1) - var/mob/living/carbon/human/H = user - var/mob/living/carbon/human/foundLover = locate(/mob/living/carbon/human) in orange(3,H) - if(!foundLover) - H << "As you hold the stone, loneliness grips you, your heart feeling heavy and you struggle to breath." - for(var/i in 1 to 10) - addtimer(H.reagents, "add_reagent", i*10, FALSE, "initropidril", i) - else - H << "You take comfort in the presence of [foundLover]" - H.reagents.add_reagent("omnizine",25) - H.Beam(foundLover,"r_beam",'icons/effects/beam.dmi',10) - foundLover << "You take comfort in the presence of [H]" - foundLover.reagents.add_reagent("omnizine",25) - else - user << "The stone lays inert. It is still recharging." - -/mob/living/simple_animal/hostile/hadesacolyte - name = "Acolyte of Hades" - desc = "Darkness seethes from their every pore." - icon_state = "hades_acolyte" - icon_living = "hades_acolyte" - icon_dead = "hades_acolyte_dead" - speak_chance = 0 - turns_per_move = 5 - response_help = "trembles in fear of" - response_disarm = "slaps wildly at" - response_harm = "hits" - speed = 1 - maxHealth = 45 - health = 45 - - harm_intent_damage = 5 - melee_damage_lower = 5 - melee_damage_upper = 15 - attacktext = "strikes at" - attack_sound = 'sound/weapons/bladeslice.ogg' - - butcher_results = list(/obj/item/clothing/mask/gas/cyborg/hades = 1,/obj/item/clothing/suit/hooded/chaplain_hoodie/hades = 1,/obj/item/hades_staff/fake = 1) - - unsuitable_atmos_damage = 0 - del_on_death = 0 - faction = list("hades") - - var/mob/living/simple_animal/hostile/hades/master - -/mob/living/simple_animal/hostile/hadesacolyte/Life() - if(..()) - if(master) - if(get_dist(src,master) > 5) - PoolOrNew(/obj/effect/overlay/temp/hadesFlick,get_turf(src)) - src.visible_message("[src] twists and distorts, before vanishing in a snap.") - src.forceMove(get_turf(pick(orange(2,master)))) - -//acolyte of hades outfit -/obj/item/clothing/mask/gas/cyborg/hades - name = "Skull Mask" - desc = "It's a skull mask, made of a thin, cool metal." - -/obj/item/clothing/suit/hooded/chaplain_hoodie/hades - name = "Dark robes" - desc = "A dark, soft robe." - hooded = 1 - hoodtype = /obj/item/clothing/head/chaplain_hood/hades - -/obj/item/clothing/head/chaplain_hood/hades - name = "Dark hood" - desc = "A dark, soft hood." - body_parts_covered = HEAD - flags_inv = HIDEHAIR|HIDEEARS -//end hades outfit - -/obj/item/hades_summoner - name = "Dark Seed" - desc = "The stone lays inert, but even when holding it you hear maddened whispers." - icon = 'icons/obj/wizard.dmi' - icon_state = "dark_seed_inert" - item_state = "dark_seed_inert" - w_class = 1 - var/isActivated = FALSE - var/whoActivated - var/countDownToSummon = 10 - var/absorbedHP = 0 - -/obj/item/hades_summoner/attack_self(mob/user) - if(!isActivated) - var/choice = input(user,"Rub the stone?",name) in list("Yes","No") - if(choice == "Yes") - if(prob(15)) - user << "You rub the stone.. and a voice springs fourth!" - user << "You hear a voice in your head.. 'Bring me the flesh of a living being.. and we shall bargain.'" - whoActivated = user - isActivated = TRUE - desc = "The stone hums with a soft glow, whispering to you." - icon_state = "dark_seed" - else - user << "The stone shivers, but nothing happens. Perhaps try again later?" - else - if(user != whoActivated) - user << "The stone lays inert." - else - if(countDownToSummon > 0) - user << "You hear a voice in your head.. 'I still require [countDownToSummon] vessels worth of flesh. Bring them to me'" - else - user << "I thank you, acolyte." - var/mob/living/simple_animal/hostile/hadesacolyte/HA = user.change_mob_type(/mob/living/simple_animal/hostile/hadesacolyte,get_turf(user),"[user.name]",1) - var/mob/living/simple_animal/hostile/hades/H = new/mob/living/simple_animal/hostile/hades(get_turf(user)) - H.maxHealth = absorbedHP - H.health = H.maxHealth - if(H.maxHealth < initial(H.maxHealth)) - HA << "You.. you fool! How dare you summon me with such dirty flesh!" - HA.faction -= "hades" - if(H.maxHealth > initial(H.maxHealth)) - HA << "Such.. power! You have exceeded yourself, acolyte. Drink of my might!" - HA.maxHealth = 250 - HA.health = 250 - qdel(src) - -/obj/item/hades_summoner/afterattack(atom/A as mob|obj|turf|area, mob/user, proximity) - if(!proximity) - return - if(istype(A,/mob/living)) - var/mob/living/M = A - if(countDownToSummon > 0) - if(M.health > 0 && M.maxHealth > 200) - // no absorbing super strong creatures unless they're dead - user << "Such power.. Slay this [M] so that I may partake of its being." - return - if(!M.stat) - user << "[M] is still too tightly bound to the mortal world! You must either kill or knock them unconscious to sacrifice them." - return - user << "I accept your offering." - absorbedHP += M.maxHealth - if(!M.ckey) - M.gib() - else - M << "You feel the flesh being stripped from your bones. You're overwhelmed with maddening pain, before reforming into another being!" - M.change_mob_type(/mob/living/simple_animal/hostile/hadesacolyte,get_turf(user),"[user.name]",1) - countDownToSummon-- - if(countDownToSummon <= 0) - user << "I am ready to ascend, my acolyte." - - -#undef STATE_JUDGE -#undef STATE_WRATH -#undef STATE_FLEE diff --git a/code/game/gamemodes/miniantags/hades/hades_chapel.dm b/code/game/gamemodes/miniantags/hades/hades_chapel.dm deleted file mode 100644 index df8a2efafd..0000000000 --- a/code/game/gamemodes/miniantags/hades/hades_chapel.dm +++ /dev/null @@ -1,177 +0,0 @@ -/area/hades - name = "Chapel of Sin" - icon_state = "yellow" - requires_power = 0 - has_gravity = 1 - -/turf/open/floor/plasteel/hades - name = "Sin-touched Floor" - icon_state = "cult" - -/obj/structure/chair/hades - name = "Cross of Hades" - desc = "An inverted cross, with straps on it to support the weight of a living being." - icon_state = "chair_hades" - var/list/watchedSpikes = list() - -/obj/structure/chair/hades/New() - ..() - flags_1 |= NODECONSTRUCT_1 - for(var/obj/structure/kitchenspike/KS in range(12)) - watchedSpikes += KS - -/obj/structure/chair/hades/proc/considerReady() - //buckled_mobs seems to work inconsistently, so we're doing some custom searching here. - if(!buckled_mobs) - return FALSE - if(!buckled_mobs.len) - return FALSE - for(var/obj/structure/kitchenspike/KS in watchedSpikes) - var/mob/living/M = locate(/mob/living) in get_turf(KS) - if(!M) - return FALSE - return TRUE - -/obj/structure/chair/hades/proc/completeRitual() - for(var/obj/structure/kitchenspike/KS in watchedSpikes) - var/mob/living/M = locate(/mob/living) in get_turf(KS) - M.gib() - playsound(get_turf(src), 'sound/effects/pope_entry.ogg', 100, 1) - sleep(100) - playsound(get_turf(src), 'sound/effects/hyperspace_end.ogg', 100, 1) - new/obj/item/hades_staff/imbued(get_turf(src)) - src.visible_message("[src] shatters into a thousand shards, a staff falling from it.") - qdel(src) - -/obj/structure/chair/hades/attackby(obj/item/W, mob/user, params) - ..() - if(istype(W, /obj/item/hades_staff)) - var/obj/item/hades_staff/HS = W - if(!HS.isKey) - return - src.visible_message("[user] inserts the [W] into the [src], giving it a quick turn.") - if(considerReady()) - qdel(W) - src.visible_message("[src] shudders, the sound of moving gears arising...") - for(var/mob/living/M in buckled_mobs) - M.gib() - for(var/i in 1 to 4) - addtimer(GLOBAL_PROC, "playsound", i*10, FALSE, get_turf(src), 'sound/effects/clang.ogg', 100, 1) - spawn(50) - src.visible_message("[src] begins to lower into the ground...") - icon_state = "chair_hades_slide" - addtimer(src, "completeRitual", 50, FALSE) - else - src.visible_message("[src] clunks, the sound of grinding gears arising. Nothing happens.") - -/obj/structure/ladder/unbreakable/hades - name = "Dimensional Rift" - desc = "Where does it lead?" - icon = 'icons/mob/EvilPope.dmi' - icon_state = "popedeath" - anchored = TRUE - -/obj/structure/ladder/unbreakable/hades/update_icon() - return - -/obj/item/paper/hades_instructions - name = "paper- 'Hastily Scrawled Letter'" - info = "The Master has instructed us to collect corpses for the ritual, and told us to deposity them in the Ritual Room, behind a bookcase in the library. The Master has locked the device to only work with his key, so no more accidents happen." - -/obj/item/hades_staff - name = "Staff of Hades" - desc = "A large, dark staff, with a set of key-like prongs on the end." - icon_state = "staffofchange" - icon = 'icons/obj/guns/magic.dmi' - item_state = "staffofchange" - slot_flags = SLOT_BELT | SLOT_BACK - force = 25 - throwforce = 5 - w_class = 3 - hitsound = 'sound/weapons/bladeslice.ogg' - attack_verb = list("slapped", "shattered", "blasphemed", "smashed", "whacked", "crushed", "hammered") - block_chance = 25 - var/isKey = 1 - -/obj/item/hades_staff/fake - name = "Inert Staff of Hades" - desc = "A large, dark staff." - isKey = 0 - -/obj/item/hades_staff/imbued - name = "Imbued Staff of Hades" - desc = " Bestowed with the power of wayward souls, this Staff allows the wielder to judge a target." - force = 75 - throwforce = 35 - block_chance = 75 - var/lastJudge = 0 - var/judgeCooldown = 150 - -/obj/item/hades_staff/imbued/attack(mob/living/carbon/human/M, mob/living/carbon/human/user) - if(!istype(M)) - return ..() - - if(world.time > lastJudge + judgeCooldown) - var/mob/living/sinPerson = M - lastJudge = world.time - var/sinPersonchoice = pick("Greed","Gluttony","Pride","Lust","Envy","Sloth","Wrath") - switch(sinPersonchoice) - if("Greed") - src.say("Your sin, [sinPerson], is Greed.") - if(prob(50)) - src.say("I will indulge your sin, [sinPerson].") - sin_Greed(sinPerson, TRUE) - else - src.say("Your sin will be punished, [sinPerson]!") - sin_Greed(sinPerson, FALSE) - if("Gluttony") - src.say("Your sin, [sinPerson], is Gluttony.") - if(prob(50)) - src.say("I will indulge your sin, [sinPerson].") - sin_Gluttony(sinPerson,TRUE) - else - src.say("Your sin will be punished, [sinPerson]!") - sin_Gluttony(sinPerson,FALSE) - if("Pride") - src.say("Your sin, [sinPerson], is Pride.") - if(prob(50)) - src.say("I will indulge your sin, [sinPerson].") - sin_Pride(sinPerson,TRUE) - else - src.say("Your sin will be punished, [sinPerson]!") - sin_Pride(sinPerson,FALSE) - if("Lust") - src.say("Your sin, [sinPerson], is Lust.") - if(prob(50)) - src.say("I will indulge your sin, [sinPerson].") - sin_Lust(sinPerson,TRUE) - else - src.say("Your sin will be punished, [sinPerson]!") - sin_Lust(sinPerson,TRUE) - if("Envy") - src.say("Your sin, [sinPerson], is Envy.") - if(prob(50)) - src.say("I will indulge your sin, [sinPerson].") - sin_Envy(sinPerson,TRUE) - else - src.say("Your sin will be punished, [sinPerson]!") - sin_Envy(sinPerson,FALSE) - if("Sloth") - src.say("Your sin, [sinPerson], is Sloth.") - if(prob(50)) - src.say("I will indulge your sin, [sinPerson].") - sin_Sloth(sinPerson,TRUE) - else - src.say("Your sin will be punished, [sinPerson]!") - sin_Sloth(sinPerson,FALSE) - if("Wrath") - src.say("Your sin, [sinPerson], is Wrath.") - if(prob(50)) - src.say("I will indulge your sin, [sinPerson].") - sin_Wrath(sinPerson,TRUE) - else - src.say("Your sin will be punished, [sinPerson]!") - sin_Wrath(sinPerson,FALSE) - else - ..() - user << "The [src] is still recharging." diff --git a/code/game/gamemodes/miniantags/readme.txt b/code/game/gamemodes/miniantags/readme.txt deleted file mode 100644 index dc7bd5a66f..0000000000 --- a/code/game/gamemodes/miniantags/readme.txt +++ /dev/null @@ -1,12 +0,0 @@ -This folder contains all "mini-antagonists" - antagonists that can still spice up the round but aren't enough to be a roundtype in their own right. -Currently, that list consists of: - -Abductors - -Borers - -Swarmers - -Prophets of sin - -The Jungle Fever virus (infected monkey bites human, human becomes another infected monkey) - -Morphs - -Sintouched crewmembers - -Slaughter demons - -Umbras (formerly revenants) -Please update this if you add another mini-antagonist. diff --git a/code/game/gamemodes/miniantags/monkey/monkey.dm b/code/game/gamemodes/monkey/monkey.dm similarity index 100% rename from code/game/gamemodes/miniantags/monkey/monkey.dm rename to code/game/gamemodes/monkey/monkey.dm diff --git a/code/game/gamemodes/nuclear/nuclear.dm b/code/game/gamemodes/nuclear/nuclear.dm index f131046cac..5451de3d5c 100644 --- a/code/game/gamemodes/nuclear/nuclear.dm +++ b/code/game/gamemodes/nuclear/nuclear.dm @@ -52,7 +52,7 @@ return ..() /datum/game_mode/proc/are_operatives_dead() - for(var/datum/mind/operative_mind in get_antagonists(/datum/antagonist/nukeop)) + for(var/datum/mind/operative_mind in get_antag_minds(/datum/antagonist/nukeop)) if(ishuman(operative_mind.current) && (operative_mind.current.stat != DEAD)) return FALSE return TRUE diff --git a/code/game/gamemodes/objective.dm b/code/game/gamemodes/objective.dm index 4b147e9446..81e52c3511 100644 --- a/code/game/gamemodes/objective.dm +++ b/code/game/gamemodes/objective.dm @@ -687,7 +687,7 @@ GLOBAL_LIST_EMPTY(possible_items_special) if("Chief Medical Officer") department_string = "medical" - var/list/lings = get_antagonists(/datum/antagonist/changeling,TRUE) + var/list/lings = get_antag_minds(/datum/antagonist/changeling,TRUE) var/ling_count = lings.len for(var/datum/mind/M in SSticker.minds) @@ -715,7 +715,7 @@ GLOBAL_LIST_EMPTY(possible_items_special) //Needed heads is between min_lings and the maximum possible amount of command roles //So at the time of writing, rand(3,6), it's also capped by the amount of lings there are //Because you can't fill 6 head roles with 3 lings - var/list/lings = get_antagonists(/datum/antagonist/changeling,TRUE) + var/list/lings = get_antag_minds(/datum/antagonist/changeling,TRUE) var/needed_heads = rand(min_lings,GLOB.command_positions.len) needed_heads = min(lings.len,needed_heads) @@ -792,7 +792,7 @@ GLOBAL_LIST_EMPTY(possible_items_special) //Check each staff member has been replaced, by cross referencing changeling minds, changeling current dna, the staff minds and their original DNA names var/success = 0 changelings: - for(var/datum/mind/changeling in get_antagonists(/datum/antagonist/changeling,TRUE)) + for(var/datum/mind/changeling in get_antag_minds(/datum/antagonist/changeling,TRUE)) if(success >= department_minds.len) //We did it, stop here! return TRUE if(ishuman(changeling.current)) diff --git a/code/game/gamemodes/objective_team.dm b/code/game/gamemodes/objective_team.dm deleted file mode 100644 index 1483f356d2..0000000000 --- a/code/game/gamemodes/objective_team.dm +++ /dev/null @@ -1,34 +0,0 @@ -//A barebones antagonist team. -/datum/objective_team - var/list/datum/mind/members = list() - var/name = "team" - var/member_name = "member" - var/list/objectives = list() //common objectives, these won't be added or removed automatically, subtypes handle this, this is here for bookkeeping purposes. - -/datum/objective_team/New(starting_members) - . = ..() - if(starting_members) - if(islist(starting_members)) - for(var/datum/mind/M in starting_members) - add_member(M) - else - add_member(starting_members) - -/datum/objective_team/proc/is_solo() - return members.len == 1 - -/datum/objective_team/proc/add_member(datum/mind/new_member) - members |= new_member - -/datum/objective_team/proc/remove_member(datum/mind/member) - members -= member - -//Display members/victory/failure/objectives for the team -/datum/objective_team/proc/roundend_report() - var/list/report = list() - - report += "[name]:" - report += "The [member_name]s were:" - report += printplayerlist(members) - - return report.Join("
") \ No newline at end of file diff --git a/code/game/gamemodes/wizard/raginmages.dm b/code/game/gamemodes/wizard/raginmages.dm deleted file mode 100644 index 06ba9ec2b5..0000000000 --- a/code/game/gamemodes/wizard/raginmages.dm +++ /dev/null @@ -1,164 +0,0 @@ -/datum/game_mode/wizard/raginmages - name = "ragin' mages" - config_tag = "raginmages" - required_players = 20 - use_huds = 1 - announce_span = "userdanger" - announce_text = "There are many, many wizards attacking the station!\n\ - Wizards: Accomplish your objectives and cause utter catastrophe!\n\ - Crew: Try not to die..." - var/max_mages = 0 - var/making_mage = 0 - var/mages_made = 1 - var/time_checked = 0 - var/bullshit_mode = 0 // requested by hornygranny - var/time_check = 1500 - var/spawn_delay_min = 500 - var/spawn_delay_max = 700 - -/datum/game_mode/wizard/raginmages/post_setup() - ..() - var/playercount = 0 - if(!max_mages && !bullshit_mode) - for(var/mob/living/player in GLOB.mob_list) - if(player.client && player.stat != 2) - playercount += 1 - max_mages = round(playercount / 8) - if(max_mages > 20) - max_mages = 20 - if(max_mages < 1) - max_mages = 1 - if(bullshit_mode) - max_mages = INFINITY -/datum/game_mode/wizard/raginmages/greet_wizard(datum/mind/wizard, you_are=1) - if (you_are) - to_chat(wizard.current, "You are the Space Wizard!") - wizard.current.playsound_local('sound/ambience/antag/RagesMages.ogg',100,0) - to_chat(wizard.current, "The Space Wizards Federation has given you the following tasks:") - - var/obj_count = 1 - to_chat(wizard.current, "Objective Alpha: Make sure the station pays for its actions against our diplomats") - for(var/datum/objective/objective in wizard.objectives) - to_chat(wizard.current, "Objective #[obj_count]: [objective.explanation_text]") - obj_count++ - return - -/datum/game_mode/wizard/raginmages/check_finished() - var/wizards_alive = 0 - for(var/datum/mind/wizard in wizards) - if(!istype(wizard.current,/mob/living/carbon)) - continue - if(istype(wizard.current,/mob/living/brain)) - continue - if(wizard.current.stat==DEAD) - continue - if(wizard.current.stat==UNCONSCIOUS) - if(wizard.current.health < 0) - to_chat(wizard.current, "The Space Wizard Federation is upset with your performance and have terminated your employment.") - wizard.current.death() - continue - wizards_alive++ - if(!time_checked) - time_checked = world.time - if(bullshit_mode) - if(world.time > time_checked + time_check) - max_mages = INFINITY - time_checked = world.time - make_more_mages() - return ..() - if (wizards_alive) - if(world.time > time_checked + time_check && (mages_made < max_mages)) - time_checked = world.time - make_more_mages() - - else - if(mages_made >= max_mages) - finished = 1 - return ..() - else - make_more_mages() - return ..() - -/datum/game_mode/wizard/raginmages/proc/make_more_mages() - - if(making_mage) - return 0 - if(mages_made >= max_mages) - return 0 - making_mage = 1 - mages_made++ - var/list/mob/dead/observer/candidates = list() - var/mob/dead/observer/theghost = null - spawn(rand(spawn_delay_min, spawn_delay_max)) - message_admins("SWF is still pissed, sending another wizard - [max_mages - mages_made] left.") - for(var/mob/dead/observer/G in GLOB.player_list) - if(G.client && !G.client.holder && !G.client.is_afk() && (ROLE_WIZARD in G.client.prefs.be_special)) - if(!jobban_isbanned(G, ROLE_WIZARD) && !jobban_isbanned(G, "Syndicate")) - if(age_check(G.client)) - candidates += G - if(!candidates.len) - message_admins("No applicable ghosts for the next ragin' mage, asking ghosts instead.") - var/time_passed = world.time - for(var/mob/dead/observer/G in GLOB.player_list) - if(!jobban_isbanned(G, "wizard") && !jobban_isbanned(G, "Syndicate")) - if(age_check(G.client)) - spawn(0) - switch(alert(G, "Do you wish to be considered for the position of Space Wizard Foundation 'diplomat'?","Please answer in 30 seconds!","Yes","No")) - if("Yes") - if((world.time-time_passed)>300)//If more than 30 game seconds passed. - continue - candidates += G - if("No") - continue - - sleep(300) - if(!candidates.len) - message_admins("This is awkward, sleeping until another mage check...") - making_mage = 0 - mages_made-- - return - else - shuffle_inplace(candidates) - for(var/mob/i in candidates) - if(!i || !i.client) continue //Dont bother removing them from the list since we only grab one wizard - - theghost = i - break - - if(theghost) - var/mob/living/carbon/human/new_character= makeBody(theghost) - new_character.mind.make_Wizard() - making_mage = 0 - return 1 - -/datum/game_mode/wizard/raginmages/declare_completion() - if(finished) - SSticker.mode_result = "loss - wizard killed" - to_chat(world, "The crew has managed to hold off the wizard attack! The Space Wizards Federation has been taught a lesson they will not soon forget!") - ..(1) - -/datum/game_mode/wizard/raginmages/proc/makeBody(mob/dead/observer/G_found) // Uses stripped down and bastardized code from respawn character - if(!G_found || !G_found.key) - return - - //First we spawn a dude. - var/mob/living/carbon/human/new_character = new//The mob being spawned. - SSjob.SendToLateJoin(new_character) - - G_found.client.prefs.copy_to(new_character) - new_character.dna.update_dna_identity() - new_character.key = G_found.key - - return new_character - -/datum/game_mode/wizard/raginmages/bullshit - name = "very ragin' bullshit mages" - config_tag = "veryraginbullshitmages" - required_players = 20 - use_huds = 1 - bullshit_mode = 1 - time_check = 250 - spawn_delay_min = 50 - spawn_delay_max = 150 - announce_text = "CRAAAWLING IIIN MY SKIIIN\n\ - THESE WOOOUNDS THEY WIIIL NOT HEEEAL" diff --git a/code/game/machinery/_machinery.dm b/code/game/machinery/_machinery.dm index 97a41098f2..20a88382fa 100644 --- a/code/game/machinery/_machinery.dm +++ b/code/game/machinery/_machinery.dm @@ -93,7 +93,6 @@ Class Procs: max_integrity = 200 var/stat = 0 - var/emagged = FALSE var/use_power = IDLE_POWER_USE //0 = dont run the auto //1 = run auto, use idle @@ -505,4 +504,4 @@ Class Procs: #endif . = . % 9 AM.pixel_x = -8 + ((.%3)*8) - AM.pixel_y = -8 + (round( . / 3)*8) \ No newline at end of file + AM.pixel_y = -8 + (round( . / 3)*8) diff --git a/code/game/machinery/announcement_system.dm b/code/game/machinery/announcement_system.dm index 84a18e3352..5226084b96 100644 --- a/code/game/machinery/announcement_system.dm +++ b/code/game/machinery/announcement_system.dm @@ -167,7 +167,7 @@ GLOBAL_LIST_EMPTY(announcement_systems) ..(severity) /obj/machinery/announcement_system/emag_act() - if(emagged) + if(obj_flags & EMAGGED) return - emagged = TRUE + obj_flags |= EMAGGED act_up() diff --git a/code/game/machinery/buttons.dm b/code/game/machinery/buttons.dm index 8a118b8d08..997d16836d 100644 --- a/code/game/machinery/buttons.dm +++ b/code/game/machinery/buttons.dm @@ -103,12 +103,12 @@ return ..() /obj/machinery/button/emag_act(mob/user) - if(emagged) + if(obj_flags & EMAGGED) return req_access = list() req_one_access = list() playsound(src, "sparks", 100, 1) - emagged = TRUE + obj_flags |= EMAGGED /obj/machinery/button/attack_ai(mob/user) if(!panel_open) diff --git a/code/game/machinery/computer/apc_control.dm b/code/game/machinery/computer/apc_control.dm index 53de06254c..4d4f1cb71f 100644 --- a/code/game/machinery/computer/apc_control.dm +++ b/code/game/machinery/computer/apc_control.dm @@ -44,7 +44,7 @@ ..(user) /obj/machinery/computer/apc_control/proc/check_apc(obj/machinery/power/apc/APC) - return APC.z == z && !APC.malfhack && !APC.aidisabled && !APC.emagged && !APC.stat && !istype(APC.area, /area/ai_monitored) && !APC.area.outdoors + return APC.z == z && !APC.malfhack && !APC.aidisabled && !(APC.obj_flags & EMAGGED) && !APC.stat && !istype(APC.area, /area/ai_monitored) && !APC.area.outdoors /obj/machinery/computer/apc_control/interact(mob/living/user) var/dat @@ -71,7 +71,7 @@ [APC.aidisabled || APC.panel_open ? "APC does not respond to interface query." : "APC responds to interface query."]

" dat += "Check Logs
" dat += "Log Out
" - if(emagged) + if(obj_flags & EMAGGED) dat += "WARNING: Logging functionality partially disabled from outside source.
" dat += "Restore logging functionality?
" else @@ -80,7 +80,7 @@ dat += "[entry]
" else dat += "No activity has been recorded at this time.
" - if(emagged) + if(obj_flags & EMAGGED) dat += "@#%! CLEAR LOGS" dat += "Return" operator = user @@ -117,7 +117,7 @@ auth_id = "\[NULL\]" if(href_list["restore_logging"]) to_chat(usr, "[icon2html(src, usr)] Logging functionality restored from backup data.") - emagged = FALSE + obj_flags &= ~EMAGGED LAZYADD(logs, "-=- Logging restored to full functionality at this point -=-") if(href_list["access_apc"]) playsound(src, "terminal_type", 50, 0) @@ -193,15 +193,15 @@ interact(usr) //Refresh the UI after a filter changes /obj/machinery/computer/apc_control/emag_act(mob/user) - if(emagged) + if(obj_flags & EMAGGED) return user.visible_message("You emag [src], disabling precise logging and allowing you to clear logs.") log_game("[key_name(user)] emagged [src] at [get_area(src)], disabling operator tracking.") playsound(src, "sparks", 50, 1) - emagged = TRUE + obj_flags |= EMAGGED /obj/machinery/computer/apc_control/proc/log_activity(log_text) - var/op_string = operator && !emagged ? operator : "\[NULL OPERATOR\]" + var/op_string = operator && !(obj_flags & EMAGGED) ? operator : "\[NULL OPERATOR\]" LAZYADD(logs, "([worldtime2text()]) [op_string] [log_text]") /mob/proc/using_power_flow_console() diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm index 9c28be28b7..27a5a8ebd5 100644 --- a/code/game/machinery/computer/arcade.dm +++ b/code/game/machinery/computer/arcade.dm @@ -212,9 +212,9 @@ gameover = FALSE turtle = 0 - if(emagged) + if(obj_flags & EMAGGED) Reset() - emagged = FALSE + obj_flags &= ~EMAGGED add_fingerprint(usr) updateUsrDialog() @@ -227,19 +227,19 @@ temp = "[enemy_name] has fallen! Rejoice!" playsound(loc, 'sound/arcade/win.ogg', 50, 1, extrarange = -3, falloff = 10) - if(emagged) + if(obj_flags & EMAGGED) new /obj/effect/spawner/newbomb/timer/syndicate(loc) new /obj/item/clothing/head/collectable/petehat(loc) message_admins("[key_name_admin(usr)] has outbombed Cuban Pete and been awarded a bomb.") log_game("[key_name(usr)] has outbombed Cuban Pete and been awarded a bomb.") Reset() - emagged = FALSE + obj_flags &= ~EMAGGED else prizevend() - SSblackbox.record_feedback("nested tally", "arcade_results", 1, list("win", (emagged ? "emagged":"normal"))) + SSblackbox.record_feedback("nested tally", "arcade_results", 1, list("win", (obj_flags & EMAGGED ? "emagged":"normal"))) - else if (emagged && (turtle >= 4)) + else if ((obj_flags & EMAGGED) && (turtle >= 4)) var/boomamt = rand(5,10) temp = "[enemy_name] throws a bomb, exploding you for [boomamt] damage!" playsound(loc, 'sound/arcade/boom.ogg', 50, 1, extrarange = -3, falloff = 10) @@ -257,9 +257,9 @@ sleep(10) temp = "You have been drained! GAME OVER" playsound(loc, 'sound/arcade/lose.ogg', 50, 1, extrarange = -3, falloff = 10) - if(emagged) + if(obj_flags & EMAGGED) usr.gib() - SSblackbox.record_feedback("nested tally", "arcade_results", 1, list("loss", "mana", (emagged ? "emagged":"normal"))) + SSblackbox.record_feedback("nested tally", "arcade_results", 1, list("loss", "mana", (obj_flags & EMAGGED ? "emagged":"normal"))) else if ((enemy_hp <= 10) && (enemy_mp > 4)) temp = "[enemy_name] heals for 4 health!" @@ -277,16 +277,16 @@ gameover = TRUE temp = "You have been crushed! GAME OVER" playsound(loc, 'sound/arcade/lose.ogg', 50, 1, extrarange = -3, falloff = 10) - if(emagged) + if(obj_flags & EMAGGED) usr.gib() - SSblackbox.record_feedback("nested tally", "arcade_results", 1, list("loss", "hp", (emagged ? "emagged":"normal"))) + SSblackbox.record_feedback("nested tally", "arcade_results", 1, list("loss", "hp", (obj_flags & EMAGGED ? "emagged":"normal"))) blocked = FALSE return /obj/machinery/computer/arcade/battle/emag_act(mob/user) - if(emagged) + if(obj_flags & EMAGGED) return temp = "If you die in the game, you die for real!" player_hp = 30 @@ -296,7 +296,7 @@ gameover = FALSE blocked = FALSE - emagged = TRUE + obj_flags |= EMAGGED enemy_name = "Cuban Pete" name = "Outbomb Cuban Pete" @@ -415,21 +415,21 @@ else if(food <= 0) dat += "
You ran out of food and starved." - if(emagged) + if(obj_flags & EMAGGED) user.nutrition = 0 //yeah you pretty hongry to_chat(user, "Your body instantly contracts to that of one who has not eaten in months. Agonizing cramps seize you as you fall to the floor.") if(fuel <= 0) dat += "
You ran out of fuel, and drift, slowly, into a star." - if(emagged) + if(obj_flags & EMAGGED) var/mob/living/M = user M.adjust_fire_stacks(5) M.IgniteMob() //flew into a star, so you're on fire to_chat(user, "You feel an immense wave of heat emanate from the arcade machine. Your skin bursts into flames.") - if(emagged) + if(obj_flags & EMAGGED) to_chat(user, "You're never going to make it to Orion...") user.death() - emagged = FALSE //removes the emagged status after you lose + obj_flags &= ~EMAGGED //removes the emagged status after you lose gameStatus = ORION_STATUS_START name = "The Orion Trail" desc = "Learn how our ancestors got to Orion, and have fun in the process!" @@ -491,7 +491,7 @@ event = ORION_TRAIL_LING_ATTACK event() turns += 1 - if(emagged) + if(obj_flags & EMAGGED) var/mob/living/carbon/M = usr //for some vars switch(event) if(ORION_TRAIL_RAIDERS) @@ -605,7 +605,7 @@ if(prob(75)) event = ORION_TRAIL_BLACKHOLE event() - if(emagged) + if(obj_flags & EMAGGED) playsound(loc, 'sound/effects/supermatter.ogg', 100, 1) say("A miniature black hole suddenly appears in front of [src], devouring [usr] alive!") if(isliving(usr)) @@ -632,12 +632,12 @@ if(settlers.len == 0 || alive == 0) say("The last crewmember [sheriff], shot themselves, GAME OVER!") - if(emagged) + if(obj_flags & EMAGGED) usr.death(0) - emagged = FALSE + obj_flags &= EMAGGED gameStatus = ORION_STATUS_GAMEOVER event = null - else if(emagged) + else if(obj_flags & EMAGGED) if(usr.name == sheriff) say("The crew of the ship chose to kill [usr.name]!") usr.death(0) @@ -696,7 +696,7 @@ if(prob(success*5)) var/lost_crew = remove_crewmember() last_spaceport_action = "You failed to raid the spaceport! You lost [FU*-1] Fuel and [FO*-1] Food, AND [lost_crew] in your scramble to escape! ([FU]FI,[FO]FO,-Crew)" - if(emagged) + if(obj_flags & EMAGGED) say("WEEWOO! WEEWOO! Spaceport security en route!") playsound(src, 'sound/items/weeoo1.ogg', 100, FALSE) for(var/i, i<=3, i++) @@ -1024,24 +1024,24 @@ /obj/machinery/computer/arcade/orion_trail/proc/win() gameStatus = ORION_STATUS_START say("Congratulations, you made it to Orion!") - if(emagged) + if(obj_flags & EMAGGED) new /obj/item/orion_ship(loc) message_admins("[key_name_admin(usr)] made it to Orion on an emagged machine and got an explosive toy ship.") log_game("[key_name(usr)] made it to Orion on an emagged machine and got an explosive toy ship.") else prizevend() - emagged = FALSE + obj_flags &= ~EMAGGED name = "The Orion Trail" desc = "Learn how our ancestors got to Orion, and have fun in the process!" /obj/machinery/computer/arcade/orion_trail/emag_act(mob/user) - if(emagged) + if(obj_flags & EMAGGED) return to_chat(user, "You override the cheat code menu and skip to Cheat #[rand(1, 50)]: Realism Mode.") name = "The Orion Trail: Realism Edition" desc = "Learn how our ancestors got to Orion, and try not to die in the process!" newgame() - emagged = TRUE + obj_flags |= EMAGGED /mob/living/simple_animal/hostile/syndicate/ranged/orion name = "spaceport security" diff --git a/code/game/machinery/computer/camera_advanced.dm b/code/game/machinery/computer/camera_advanced.dm index 96327383b3..26f40fc3d5 100644 --- a/code/game/machinery/computer/camera_advanced.dm +++ b/code/game/machinery/computer/camera_advanced.dm @@ -4,7 +4,7 @@ icon_screen = "cameras" icon_keyboard = "security_key" var/list/z_lock = list() // Lock use to these z levels - var/station_lock_override = FALSE + var/lock_override = NONE var/mob/camera/aiEye/remote/eyeobj var/mob/living/current_user = null var/list/networks = list("SS13") @@ -16,8 +16,15 @@ /obj/machinery/computer/camera_advanced/Initialize() . = ..() - if(station_lock_override) - z_lock = SSmapping.levels_by_trait(ZTRAIT_STATION) + if(lock_override) + if(lock_override & CAMERA_LOCK_STATION) + z_lock |= SSmapping.levels_by_trait(ZTRAIT_STATION) + if(lock_override & CAMERA_LOCK_MINING) + z_lock |= SSmapping.levels_by_trait(ZTRAIT_MINING) + if(lock_override & CAMERA_LOCK_CENTCOM) + z_lock |= SSmapping.levels_by_trait(ZTRAIT_CENTCOM) + if(lock_override & CAMERA_LOCK_REEBE) + z_lock |= SSmapping.levels_by_trait(ZTRAIT_REEBE) /obj/machinery/computer/camera_advanced/syndie icon_keyboard = "syndie_key" diff --git a/code/game/machinery/computer/cloning.dm b/code/game/machinery/computer/cloning.dm index 944d8d5213..1cb5e09966 100644 --- a/code/game/machinery/computer/cloning.dm +++ b/code/game/machinery/computer/cloning.dm @@ -449,7 +449,7 @@ scantemp = "Subject's brain is not responding to scanning stimuli." playsound(src, 'sound/machines/terminal_prompt_deny.ogg', 50, 0) return - if((mob_occupant.has_disability(DISABILITY_NOCLONE)) && (src.scanner.scan_level < 2)) + if((mob_occupant.has_trait(TRAIT_NOCLONE)) && (src.scanner.scan_level < 2)) scantemp = "Subject no longer contains the fundamental materials required to create a living clone." playsound(src, 'sound/machines/terminal_alert.ogg', 50, 0) return diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm index 8391052662..c3f464783f 100755 --- a/code/game/machinery/computer/communications.dm +++ b/code/game/machinery/computer/communications.dm @@ -82,7 +82,7 @@ if((20 in I.access)) authenticated = 2 playsound(src, 'sound/machines/terminal_on.ogg', 50, 0) - if(emagged) + if(obj_flags & EMAGGED) authenticated = 2 auth_id = "Unknown" to_chat(M, "[src] lets out a quiet alarm as its login is overriden.") @@ -297,7 +297,7 @@ // OMG SYNDICATE ...LETTERHEAD if("MessageSyndicate") - if((authenticated==2) && (emagged)) + if((authenticated==2) && (obj_flags & EMAGGED)) if(!checkCCcooldown()) to_chat(usr, "Arrays recycling. Please stand by.") playsound(src, 'sound/machines/terminal_prompt_deny.ogg', 50, 0) @@ -315,7 +315,7 @@ if("RestoreBackup") to_chat(usr, "Backup routing data restored!") playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, 0) - emagged = FALSE + obj_flags &= ~EMAGGED updateDialog() if("nukerequest") //When there's no other way @@ -421,9 +421,9 @@ return ..() /obj/machinery/computer/communications/emag_act(mob/user) - if(emagged) + if(obj_flags & EMAGGED) return - emagged = TRUE + obj_flags |= EMAGGED if(authenticated == 1) authenticated = 2 to_chat(user, "You scramble the communication routing circuits!") @@ -485,7 +485,7 @@ dat += "
\[ Change Alert Level \]" dat += "
\[ Emergency Maintenance Access \]" dat += "
\[ Request Nuclear Authentication Codes \]" - if(!emagged) + if(!(obj_flags & EMAGGED)) dat += "
\[ Send Message to CentCom \]" else dat += "
\[ Send Message to \[UNKNOWN\] \]" diff --git a/code/game/machinery/computer/dna_console.dm b/code/game/machinery/computer/dna_console.dm index 5bdd6a7b27..de0089d5c6 100644 --- a/code/game/machinery/computer/dna_console.dm +++ b/code/game/machinery/computer/dna_console.dm @@ -81,7 +81,7 @@ if(connected && connected.is_operational()) if(connected.occupant) //set occupant_status message viable_occupant = connected.occupant - if(viable_occupant.has_dna() && (!(RADIMMUNE in viable_occupant.dna.species.species_traits)) && (!(viable_occupant.has_disability(DISABILITY_NOCLONE)) || (connected.scan_level == 3))) //occupant is viable for dna modification + if(viable_occupant.has_dna() && (!(RADIMMUNE in viable_occupant.dna.species.species_traits)) && (!(viable_occupant.has_trait(TRAIT_NOCLONE)) || (connected.scan_level == 3))) //occupant is viable for dna modification occupant_status += "[viable_occupant.name] => " switch(viable_occupant.stat) if(CONSCIOUS) @@ -528,7 +528,7 @@ var/mob/living/carbon/viable_occupant = null if(connected) viable_occupant = connected.occupant - if(!istype(viable_occupant) || !viable_occupant.dna || (RADIMMUNE in viable_occupant.dna.species.species_traits) || (viable_occupant.has_disability(DISABILITY_NOCLONE))) + if(!istype(viable_occupant) || !viable_occupant.dna || (RADIMMUNE in viable_occupant.dna.species.species_traits) || (viable_occupant.has_trait(TRAIT_NOCLONE))) viable_occupant = null return viable_occupant diff --git a/code/game/machinery/computer/launchpad_control.dm b/code/game/machinery/computer/launchpad_control.dm index 35fcb20bcc..7408373220 100644 --- a/code/game/machinery/computer/launchpad_control.dm +++ b/code/game/machinery/computer/launchpad_control.dm @@ -51,7 +51,7 @@ /obj/machinery/computer/launchpad/interact(mob/user) var/list/t = list() if(!LAZYLEN(launchpads)) - in_use = FALSE //Yeah so if you deconstruct teleporter while its in the process of shooting it wont disable the console + obj_flags &= ~IN_USE //Yeah so if you deconstruct teleporter while its in the process of shooting it wont disable the console t += "
No launchpad located.

" else for(var/i in 1 to LAZYLEN(launchpads)) diff --git a/code/game/machinery/computer/telecrystalconsoles.dm b/code/game/machinery/computer/telecrystalconsoles.dm index 08210bf706..283232f991 100644 --- a/code/game/machinery/computer/telecrystalconsoles.dm +++ b/code/game/machinery/computer/telecrystalconsoles.dm @@ -154,7 +154,7 @@ GLOBAL_LIST_INIT(possible_uplinker_IDs, list("Alfa","Bravo","Charlie","Delta","E /obj/machinery/computer/telecrystals/boss/proc/getDangerous()//This scales the TC assigned with the round population. ..() - var/list/nukeops = get_antagonists(/datum/antagonist/nukeop) + var/list/nukeops = get_antag_minds(/datum/antagonist/nukeop) var/danger = GLOB.joined_player_list.len - nukeops.len danger = CEILING(danger, 10) scaleTC(danger) diff --git a/code/game/machinery/dna_scanner.dm b/code/game/machinery/dna_scanner.dm index 343dd69cb2..43644286e5 100644 --- a/code/game/machinery/dna_scanner.dm +++ b/code/game/machinery/dna_scanner.dm @@ -100,7 +100,7 @@ var/mob/living/mob_occupant = get_mob_or_brainmob(occupant) if(istype(mob_occupant)) if(locate_computer(/obj/machinery/computer/cloning)) - if(!mob_occupant.suiciding && !(mob_occupant.has_disability(DISABILITY_NOCLONE)) && !mob_occupant.hellbound) + if(!mob_occupant.suiciding && !(mob_occupant.has_trait(TRAIT_NOCLONE)) && !mob_occupant.hellbound) mob_occupant.notify_ghost_cloning("Your corpse has been placed into a cloning scanner. Re-enter your corpse if you want to be cloned!", source = src) // DNA manipulators cannot operate on severed heads or brains diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 8a41e019aa..0d19fff8f4 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -34,7 +34,7 @@ #define AIRLOCK_INTEGRITY_N 300 // Normal airlock integrity #define AIRLOCK_INTEGRITY_MULTIPLIER 1.5 // How much reinforced doors health increases -#define AIRLOCK_DAMAGE_DEFLECTION_N 20 // Normal airlock damage deflection // CIT CHANGE - CHANGES DEFAULT AIRLOCK DEFLECTION FROM 21 TO 20 +#define AIRLOCK_DAMAGE_DEFLECTION_N 21 // Normal airlock damage deflection #define AIRLOCK_DAMAGE_DEFLECTION_R 30 // Reinforced airlock damage deflection #define NOT_ELECTRIFIED 0 @@ -569,7 +569,7 @@ /obj/machinery/door/airlock/examine(mob/user) ..() - if(emagged) + if(obj_flags & EMAGGED) to_chat(user, "Its access panel is smoking slightly.") if(charge && !panel_open && in_range(user, src)) to_chat(user, "The maintenance panel seems haphazardly fastened.") @@ -611,7 +611,7 @@ return else to_chat(user, "Airlock AI control has been blocked with a firewall. Unable to hack.") - if(emagged) + if(obj_flags & EMAGGED) to_chat(user, "Unable to interface: Airlock is unresponsive.") return if(detonated) @@ -683,7 +683,7 @@ if(ishuman(user) && prob(40) && src.density) var/mob/living/carbon/human/H = user - if((H.has_disability(DISABILITY_DUMB)) && Adjacent(user)) + if((H.has_trait(TRAIT_DUMB)) && Adjacent(user)) playsound(src.loc, 'sound/effects/bang.ogg', 25, 1) if(!istype(H.head, /obj/item/clothing/head/helmet)) H.visible_message("[user] headbutts the airlock.", \ @@ -899,7 +899,7 @@ if(!panel_open || security_level) to_chat(user, "The maintenance panel must be open to apply [C]!") return - if(emagged) + if(obj_flags & EMAGGED) return if(charge && !detonated) to_chat(user, "There's already a charge hooked up to this door!") @@ -979,7 +979,7 @@ charge.forceMove(get_turf(user)) charge = null return - if(beingcrowbarred && panel_open && (emagged || (density && welded && !operating && !hasPower() && !locked))) + if(beingcrowbarred && panel_open && ((obj_flags & EMAGGED) || (density && welded && !operating && !hasPower() && !locked))) playsound(src.loc, I.usesound, 100, 1) user.visible_message("[user] removes the electronics from the airlock assembly.", \ "You start to remove electronics from the airlock assembly...") @@ -1050,7 +1050,7 @@ H.apply_damage(40, BRUTE, "chest") return if(forced < 2) - if(emagged) + if(obj_flags & EMAGGED) return FALSE use_power(50) playsound(src.loc, doorOpen, 30, 1) @@ -1099,7 +1099,7 @@ return if(forced < 2) - if(emagged) + if(obj_flags & EMAGGED) return use_power(50) playsound(src.loc, doorClose, 30, 1) @@ -1135,7 +1135,7 @@ return TRUE /obj/machinery/door/airlock/proc/prison_open() - if(emagged) + if(obj_flags & EMAGGED) return locked = FALSE src.open() @@ -1224,7 +1224,7 @@ return !density || (check_access(ID) && !locked && hasPower()) /obj/machinery/door/airlock/emag_act(mob/user) - if(!operating && density && hasPower() && !emagged) + if(!operating && density && hasPower() && !(obj_flags & EMAGGED)) operating = TRUE update_icon(AIRLOCK_EMAG, 1) sleep(6) @@ -1233,7 +1233,7 @@ operating = FALSE if(!open()) update_icon(AIRLOCK_CLOSED, 1) - emagged = TRUE + obj_flags |= EMAGGED lights = FALSE locked = TRUE loseMainPower() @@ -1323,7 +1323,7 @@ if(!disassembled) if(A) A.obj_integrity = A.max_integrity * 0.5 - else if(emagged) + else if(obj_flags & EMAGGED) if(user) to_chat(user, "You discard the damaged electronics.") else diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index 4dc4d6887b..9182057d85 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -80,7 +80,7 @@ return ..() /obj/machinery/door/CollidedWith(atom/movable/AM) - if(operating || emagged) + if(operating || (obj_flags & EMAGGED)) return if(ismob(AM)) var/mob/B = AM @@ -127,7 +127,7 @@ if(!src.requiresID()) user = null - if(density && !emagged) + if(density && !(obj_flags & EMAGGED)) if(allowed(user)) open() else @@ -149,7 +149,7 @@ /obj/machinery/door/proc/try_to_activate_door(mob/user) add_fingerprint(user) - if(operating || emagged) + if(operating || (obj_flags & EMAGGED)) return if(!requiresID()) user = null //so allowed(user) always succeeds diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm index bd1a553863..29f05acc2b 100644 --- a/code/game/machinery/doors/windowdoor.dm +++ b/code/game/machinery/doors/windowdoor.dm @@ -132,7 +132,7 @@ if(!hasPower()) return 0 if(forced < 2) - if(emagged) + if(obj_flags & EMAGGED) return 0 if(!src.operating) //in case of emag operating = TRUE @@ -157,7 +157,7 @@ if(!hasPower()) return 0 if(forced < 2) - if(emagged) + if(obj_flags & EMAGGED) return 0 operating = TRUE do_animate("closing") @@ -206,8 +206,8 @@ return src.attack_hand(user) /obj/machinery/door/window/emag_act(mob/user) - if(!operating && density && !emagged) - emagged = TRUE + if(!operating && density && !(obj_flags & EMAGGED)) + obj_flags |= EMAGGED operating = TRUE flick("[src.base_state]spark", src) playsound(src, "sparks", 75, 1) @@ -258,7 +258,7 @@ WA.update_icon() WA.created_name = src.name - if(emagged) + if(obj_flags & EMAGGED) to_chat(user, "You discard the damaged electronics.") qdel(src) return diff --git a/code/game/machinery/embedded_controller/access_controller.dm b/code/game/machinery/embedded_controller/access_controller.dm index e243494f2b..d881d9e223 100644 --- a/code/game/machinery/embedded_controller/access_controller.dm +++ b/code/game/machinery/embedded_controller/access_controller.dm @@ -27,9 +27,9 @@ findObjsByTag() /obj/machinery/doorButtons/emag_act(mob/user) - if(emagged) + if(obj_flags & EMAGGED) return - emagged = TRUE + obj_flags |= EMAGGED req_access = list() req_one_access = list() playsound(src, "sparks", 100, 1) @@ -315,4 +315,4 @@ #undef OPENING #undef CYCLE #undef CYCLE_EXTERIOR -#undef CYCLE_INTERIOR \ No newline at end of file +#undef CYCLE_INTERIOR diff --git a/code/game/machinery/firealarm.dm b/code/game/machinery/firealarm.dm index 5a306cac50..0af43df223 100644 --- a/code/game/machinery/firealarm.dm +++ b/code/game/machinery/firealarm.dm @@ -86,16 +86,16 @@ ..() /obj/machinery/firealarm/emag_act(mob/user) - if(emagged) + if(obj_flags & EMAGGED) return - emagged = TRUE + obj_flags |= EMAGGED if(user) user.visible_message("Sparks fly out of [src]!", "You emag [src], disabling its thermal sensors.") playsound(src, "sparks", 50, 1) /obj/machinery/firealarm/temperature_expose(datum/gas_mixture/air, temperature, volume) - if((temperature > T0C + 200 || temperature < BODYTEMP_COLD_DAMAGE_LIMIT) && (last_alarm+FIREALARM_COOLDOWN < world.time) && !emagged && detecting && !stat) + if((temperature > T0C + 200 || temperature < BODYTEMP_COLD_DAMAGE_LIMIT) && (last_alarm+FIREALARM_COOLDOWN < world.time) && !(obj_flags & EMAGGED) && detecting && !stat) alarm() ..() @@ -122,7 +122,7 @@ /obj/machinery/firealarm/ui_data(mob/user) var/list/data = list() - data["emagged"] = emagged + data["emagged"] = obj_flags & EMAGGED ? 1 : 0 if(is_station_level(z)) data["seclevel"] = get_security_level() diff --git a/code/game/machinery/gulag_item_reclaimer.dm b/code/game/machinery/gulag_item_reclaimer.dm index 7de077c016..628071bd21 100644 --- a/code/game/machinery/gulag_item_reclaimer.dm +++ b/code/game/machinery/gulag_item_reclaimer.dm @@ -25,10 +25,10 @@ return ..() /obj/machinery/gulag_item_reclaimer/emag_act(mob/user) - if(emagged) // emagging lets anyone reclaim all the items + if(obj_flags & EMAGGED) // emagging lets anyone reclaim all the items return req_access = list() - emagged = TRUE + obj_flags |= EMAGGED /obj/machinery/gulag_item_reclaimer/attackby(obj/item/I, mob/user) if(istype(I, /obj/item/card/id/prisoner)) @@ -103,4 +103,4 @@ var/obj/item/W = i stored_items[user] -= W W.forceMove(get_turf(src)) - stored_items -= user \ No newline at end of file + stored_items -= user diff --git a/code/game/machinery/hologram.dm b/code/game/machinery/hologram.dm index 10a552564b..3d3eb5c419 100644 --- a/code/game/machinery/hologram.dm +++ b/code/game/machinery/hologram.dm @@ -49,6 +49,7 @@ Possible to do for anyone motivated enough: var/datum/holocall/outgoing_call //do not modify the datums only check and call the public procs var/obj/item/disk/holodisk/disk //Record disk var/replay_mode = FALSE //currently replaying a recording + var/loop_mode = FALSE //currently looping a recording var/record_mode = FALSE //currently recording var/record_start = 0 //recording start time var/record_user //user that inititiated the recording @@ -150,19 +151,20 @@ Possible to do for anyone motivated enough: if(temp) dat = temp else - dat = "Request an AI's presence.
" - dat += "Call another holopad.
" + dat = "Request an AI's presence
" + dat += "Call another holopad
" if(disk) if(disk.record) //Replay - dat += "Replay disk recording.
" + dat += "Replay disk recording
" + dat += "Loop disk recording
" //Clear - dat += "Clear disk recording.
" + dat += "Clear disk recording
" else //Record - dat += "Start new recording.
" + dat += "Start new recording
" //Eject - dat += "Eject disk.
" + dat += "Eject disk
" if(LAZYLEN(holo_calls)) dat += "=====================================================
" @@ -172,7 +174,7 @@ Possible to do for anyone motivated enough: for(var/I in holo_calls) var/datum/holocall/HC = I if(HC.connected_holopad != src) - dat += "Answer call from [get_area(HC.calling_holopad)].
" + dat += "Answer call from [get_area(HC.calling_holopad)]
" one_unanswered_call = TRUE else one_answered_call = TRUE @@ -183,10 +185,10 @@ Possible to do for anyone motivated enough: for(var/I in holo_calls) var/datum/holocall/HC = I if(HC.connected_holopad == src) - dat += "Disconnect call from [HC.user].
" + dat += "Disconnect call from [HC.user]
" - var/datum/browser/popup = new(user, "holopad", name, 300, 150) + var/datum/browser/popup = new(user, "holopad", name, 300, 175) popup.set_content(dat) popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) popup.open() @@ -266,6 +268,9 @@ Possible to do for anyone motivated enough: replay_stop() else if(href_list["replay_start"]) replay_start() + else if(href_list["loop_start"]) + loop_mode = TRUE + replay_start() else if(href_list["record_start"]) record_start(usr) else if(href_list["record_stop"]) @@ -464,6 +469,7 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/ /obj/machinery/holopad/proc/replay_stop() if(replay_mode) replay_mode = FALSE + loop_mode = FALSE temp = null QDEL_NULL(replay_holo) SetLightsAndPower() @@ -490,7 +496,7 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/ if(!record_mode) return //make this command so you can have multiple languages in single record - if(!disk.record.caller_name && istype(speaker)) + if((!disk.record.caller_name || disk.record.caller_name == "Unknown") && istype(speaker)) disk.record.caller_name = speaker.name if(!disk.record.language) disk.record.language = language @@ -516,8 +522,11 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/ if(!replay_mode) return if(disk.record.entries.len < entry_number) - replay_stop() - return + if (loop_mode) + entry_number = 1 + else + replay_stop() + return var/list/entry = disk.record.entries[entry_number] var/command = entry[1] switch(command) diff --git a/code/game/machinery/limbgrower.dm b/code/game/machinery/limbgrower.dm index e661bc24c5..19c666b9e8 100644 --- a/code/game/machinery/limbgrower.dm +++ b/code/game/machinery/limbgrower.dm @@ -165,7 +165,7 @@ dat += "" for(var/C in categories) - if(C=="special" && !emagged) //Only want to show special when console is emagged + if(C=="special" && !(obj_flags & EMAGGED)) //Only want to show special when console is emagged continue dat += "" @@ -220,10 +220,10 @@ return dat /obj/machinery/limbgrower/emag_act(mob/user) - if(emagged) + if(obj_flags & EMAGGED) return for(var/datum/design/D in SSresearch.techweb_designs) if((D.build_type & LIMBGROWER) && ("special" in D.category)) stored_research.add_design(D) to_chat(user, "A warning flashes onto the screen, stating that safety overrides have been deactivated!") - emagged = TRUE + obj_flags |= EMAGGED diff --git a/code/game/machinery/porta_turret/portable_turret.dm b/code/game/machinery/porta_turret/portable_turret.dm index 25e022febc..008aa71365 100644 --- a/code/game/machinery/porta_turret/portable_turret.dm +++ b/code/game/machinery/porta_turret/portable_turret.dm @@ -280,11 +280,11 @@ return ..() /obj/machinery/porta_turret/emag_act(mob/user) - if(emagged) + if(obj_flags & EMAGGED) return to_chat(user, "You short out [src]'s threat assessment circuits.") visible_message("[src] hums oddly...") - emagged = TRUE + obj_flags |= EMAGGED controllock = 1 on = FALSE //turns off the turret temporarily update_icon() @@ -313,7 +313,7 @@ if(.) //damage received if(prob(30)) spark_system.start() - if(on && !attacked && !emagged) + if(on && !attacked && !(obj_flags & EMAGGED)) attacked = TRUE addtimer(CALLBACK(src, .proc/reset_attacked), 60) @@ -335,8 +335,6 @@ /obj/machinery/porta_turret/process() //the main machinery process - set background = BACKGROUND_ENABLED - if(cover == null && anchored) //if it has no cover and is anchored if(stat & BROKEN) //if the turret is borked qdel(cover) //delete its cover, assuming it has one. Workaround for a pesky little bug @@ -449,7 +447,7 @@ /obj/machinery/porta_turret/proc/assess_perp(mob/living/carbon/human/perp) var/threatcount = 0 //the integer returned - if(emagged) + if(obj_flags & EMAGGED) return 10 //if emagged, always return 10. if((stun_all || attacked) && !allowed(perp)) @@ -495,7 +493,7 @@ if(!raised) //the turret has to be raised in order to fire - makes sense, right? return - if(!emagged) //if it hasn't been emagged, cooldown before shooting again + if(!(obj_flags & EMAGGED)) //if it hasn't been emagged, cooldown before shooting again if(last_fired + shot_delay > world.time) return last_fired = world.time @@ -548,11 +546,6 @@ src.mode = mode power_change() -/obj/machinery/porta_turret/stationary //is this even used anywhere - mode = TURRET_LETHAL - emagged = TRUE - installation = /obj/item/gun/energy/laser - /obj/machinery/porta_turret/syndicate installation = null always_up = 1 @@ -571,6 +564,15 @@ desc = "A ballistic machine gun auto-turret." /obj/machinery/porta_turret/syndicate/energy + icon_state = "standard_stun" + base_icon_state = "standard" + stun_projectile = /obj/item/projectile/energy/electrode + stun_projectile_sound = 'sound/weapons/taser.ogg' + lethal_projectile = /obj/item/projectile/beam/laser + lethal_projectile_sound = 'sound/weapons/laser.ogg' + desc = "An energy blaster auto-turret." + +/obj/machinery/porta_turret/syndicate/energy/heavy icon_state = "standard_stun" base_icon_state = "standard" stun_projectile = /obj/item/projectile/energy/electrode @@ -718,7 +720,7 @@ if ( get_dist(src, user) == 0 ) // trying to unlock the interface if (allowed(usr)) - if(emagged) + if(obj_flags & EMAGGED) to_chat(user, "The turret control is unresponsive.") return @@ -735,10 +737,10 @@ to_chat(user, "Access denied.") /obj/machinery/turretid/emag_act(mob/user) - if(emagged) + if(obj_flags & EMAGGED) return to_chat(user, "You short out the turret controls' access analysis module.") - emagged = TRUE + obj_flags |= EMAGGED locked = FALSE if(user && user.machine == src) attack_hand(user) diff --git a/code/game/machinery/porta_turret/portable_turret_cover.dm b/code/game/machinery/porta_turret/portable_turret_cover.dm index 7bc381c466..d455bec173 100644 --- a/code/game/machinery/porta_turret/portable_turret_cover.dm +++ b/code/game/machinery/porta_turret/portable_turret_cover.dm @@ -87,10 +87,10 @@ . = 0 /obj/machinery/porta_turret_cover/emag_act(mob/user) - if(!parent_turret.emagged) + if(!(parent_turret.obj_flags & EMAGGED)) to_chat(user, "You short out [parent_turret]'s threat assessment circuits.") visible_message("[parent_turret] hums oddly...") - parent_turret.emagged = TRUE + parent_turret.obj_flags |= EMAGGED parent_turret.on = 0 spawn(40) parent_turret.on = 1 diff --git a/code/game/machinery/quantum_pad.dm b/code/game/machinery/quantum_pad.dm index 6a04ca0886..1dd683af84 100644 --- a/code/game/machinery/quantum_pad.dm +++ b/code/game/machinery/quantum_pad.dm @@ -7,7 +7,7 @@ use_power = IDLE_POWER_USE idle_power_usage = 200 active_power_usage = 5000 - unique_rename = 1 + obj_flags = CAN_BE_HIT | UNIQUE_RENAME circuit = /obj/item/circuitboard/machine/quantumpad var/teleport_cooldown = 400 //30 seconds base due to base parts var/teleport_speed = 50 @@ -15,17 +15,17 @@ var/teleporting = 0 //if it's in the process of teleporting var/power_efficiency = 1 var/obj/machinery/quantumpad/linked_pad - + //mapping var/static/list/mapped_quantum_pads = list() var/map_pad_id = "" as text //what's my name var/map_pad_link_id = "" as text //who's my friend - + /obj/machinery/quantumpad/Initialize() . = ..() if(map_pad_id) mapped_quantum_pads[map_pad_id] = src - + /obj/machinery/quantumpad/Destroy() mapped_quantum_pads -= map_pad_id return ..() diff --git a/code/game/machinery/recycler.dm b/code/game/machinery/recycler.dm index 0d11c6a741..b98aa50ec1 100644 --- a/code/game/machinery/recycler.dm +++ b/code/game/machinery/recycler.dm @@ -39,7 +39,7 @@ ..() to_chat(user, "The power light is [(stat & NOPOWER) ? "off" : "on"].") to_chat(user, "The safety-mode light is [safety_mode ? "on" : "off"].") - to_chat(user, "The safety-sensors status light is [emagged ? "off" : "on"].") + to_chat(user, "The safety-sensors status light is [obj_flags & EMAGGED ? "off" : "on"].") /obj/machinery/recycler/power_change() ..() @@ -64,9 +64,9 @@ return ..() /obj/machinery/recycler/emag_act(mob/user) - if(emagged) + if(obj_flags & EMAGGED) return - emagged = TRUE + obj_flags |= EMAGGED if(safety_mode) safety_mode = FALSE update_icon() @@ -110,7 +110,7 @@ if(brain_holder) emergency_stop(AM) else if(isliving(AM)) - if(emagged) + if(obj_flags & EMAGGED) crush_living(AM) else emergency_stop(AM) @@ -180,14 +180,14 @@ L.Unconscious(100) // For admin fun, var edit emagged to 2. - if(gib || emagged == 2) + if(gib) L.gib() - else if(emagged == 1) + else if(obj_flags & EMAGGED) L.adjustBruteLoss(crush_damage) /obj/machinery/recycler/deathtrap name = "dangerous old crusher" - emagged = TRUE + obj_flags = CAN_BE_HIT | EMAGGED crush_damage = 120 flags_1 = NODECONSTRUCT_1 diff --git a/code/game/machinery/shieldgen.dm b/code/game/machinery/shieldgen.dm index b681845a10..b98500a495 100644 --- a/code/game/machinery/shieldgen.dm +++ b/code/game/machinery/shieldgen.dm @@ -180,10 +180,10 @@ anchored = FALSE else if(W.GetID()) - if(allowed(user) && !emagged) + if(allowed(user) && !(obj_flags & EMAGGED)) locked = !locked to_chat(user, "You [locked ? "lock" : "unlock"] the controls.") - else if(emagged) + else if(obj_flags & EMAGGED) to_chat(user, "Error, access controller damaged!") else to_chat(user, "Access denied.") @@ -192,10 +192,10 @@ return ..() /obj/machinery/shieldgen/emag_act(mob/user) - if(emagged) + if(obj_flags & EMAGGED) to_chat(user, "The access controller is damaged!") return - emagged = TRUE + obj_flags |= EMAGGED locked = FALSE playsound(src, "sparks", 100, 1) to_chat(user, "You short out the access controller.") @@ -343,10 +343,10 @@ default_unfasten_wrench(user, W, 0) else if(W.GetID()) - if(allowed(user) && !emagged) + if(allowed(user) && !(obj_flags & EMAGGED)) locked = !locked to_chat(user, "You [src.locked ? "lock" : "unlock"] the controls.") - else if(emagged) + else if(obj_flags & EMAGGED) to_chat(user, "Error, access controller damaged!") else to_chat(user, "Access denied.") @@ -381,10 +381,10 @@ add_fingerprint(user) /obj/machinery/shieldwallgen/emag_act(mob/user) - if(emagged) + if(obj_flags & EMAGGED) to_chat(user, "The access controller is damaged!") return - emagged = TRUE + obj_flags |= EMAGGED locked = FALSE playsound(src, "sparks", 100, 1) to_chat(user, "You short out the access controller.") diff --git a/code/game/machinery/slotmachine.dm b/code/game/machinery/slotmachine.dm index a538e4ec0c..766bd49bf4 100644 --- a/code/game/machinery/slotmachine.dm +++ b/code/game/machinery/slotmachine.dm @@ -100,9 +100,9 @@ return ..() /obj/machinery/computer/slot_machine/emag_act() - if(emagged) + if(obj_flags & EMAGGED) return - emagged = TRUE + obj_flags |= EMAGGED var/datum/effect_system/spark_spread/spark_system = new /datum/effect_system/spark_spread() spark_system.set_up(4, 0, src.loc) spark_system.start() @@ -163,7 +163,7 @@ if(prob(15 * severity)) return if(prob(1)) // :^) - emagged = TRUE + obj_flags |= EMAGGED var/severity_ascending = 4 - severity money = max(rand(money - (200 * severity_ascending), money + (200 * severity_ascending)), 0) balance = max(rand(balance - (50 * severity_ascending), balance + (50 * severity_ascending)), 0) @@ -286,9 +286,9 @@ balance += surplus /obj/machinery/computer/slot_machine/proc/give_coins(amount) - var/cointype = emagged ? /obj/item/coin/iron : /obj/item/coin/silver + var/cointype = obj_flags & EMAGGED ? /obj/item/coin/iron : /obj/item/coin/silver - if(!emagged) + if(!(obj_flags & EMAGGED)) amount = dispense(amount, cointype, null, 0) else diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm index 307107d517..cb100865d6 100644 --- a/code/game/machinery/suit_storage_unit.dm +++ b/code/game/machinery/suit_storage_unit.dm @@ -103,6 +103,10 @@ mask_type = /obj/item/clothing/mask/breath storage_type = /obj/item/tank/internals/emergency_oxygen/double +/obj/machinery/suit_storage_unit/open + state_open = TRUE + density = FALSE + /obj/machinery/suit_storage_unit/Initialize() . = ..() wires = new /datum/wires/suit_storage_unit(src) diff --git a/code/game/machinery/syndicatebeacon.dm b/code/game/machinery/syndicatebeacon.dm index 0b050769d9..c56cae8849 100644 --- a/code/game/machinery/syndicatebeacon.dm +++ b/code/game/machinery/syndicatebeacon.dm @@ -128,3 +128,7 @@ /obj/item/device/sbeacondrop/powersink desc = "A label on it reads: Warning: Activating this device will send a power draining device to your location." droptype = /obj/item/device/powersink + +/obj/item/device/sbeacondrop/clownbomb + desc = "A label on it reads: Warning: Activating this device will send a silly explosive to your location." + droptype = /obj/machinery/syndicatebomb/badmin/clown diff --git a/code/game/machinery/telecomms/computers/logbrowser.dm b/code/game/machinery/telecomms/computers/logbrowser.dm index 93f9d2b03a..12b01614c4 100644 --- a/code/game/machinery/telecomms/computers/logbrowser.dm +++ b/code/game/machinery/telecomms/computers/logbrowser.dm @@ -187,7 +187,7 @@ if(href_list["delete"]) - if(!src.allowed(usr) && !emagged) + if(!src.allowed(usr) && !(obj_flags & EMAGGED)) to_chat(usr, "ACCESS DENIED.") return diff --git a/code/game/machinery/telecomms/computers/message.dm b/code/game/machinery/telecomms/computers/message.dm index 4b44f02096..6336222493 100644 --- a/code/game/machinery/telecomms/computers/message.dm +++ b/code/game/machinery/telecomms/computers/message.dm @@ -33,17 +33,17 @@ light_color = LIGHT_COLOR_GREEN /obj/machinery/computer/message_monitor/attackby(obj/item/O, mob/living/user, params) - if(istype(O, /obj/item/screwdriver) && emagged) + if(istype(O, /obj/item/screwdriver) && (obj_flags & EMAGGED)) //Stops people from just unscrewing the monitor and putting it back to get the console working again. to_chat(user, "It is too hot to mess with!") else return ..() /obj/machinery/computer/message_monitor/emag_act(mob/user) - if(emagged) + if(obj_flags & EMAGGED) return if(!isnull(linkedServer)) - emagged = TRUE + obj_flags |= EMAGGED screen = 2 spark_system.set_up(5, 0, src) src.spark_system.start() @@ -71,7 +71,7 @@ if(..()) return //If the computer is being hacked or is emagged, display the reboot message. - if(hacking || emagged) + if(hacking || (obj_flags & EMAGGED)) message = rebootmsg var/dat = "
/
" @@ -82,7 +82,7 @@ dat += "

\[Unauthenticated\] /" dat += " Server Power: [src.linkedServer && src.linkedServer.toggled ? "\[On\]":"\[Off\]"]

" - if(hacking || emagged) + if(hacking || (obj_flags & EMAGGED)) screen = 2 else if(!auth || !linkedServer || (linkedServer.stat & (NOPOWER|BROKEN))) if(!linkedServer || (linkedServer.stat & (NOPOWER|BROKEN))) @@ -237,7 +237,7 @@ src.screen = 0 // Return the screen back to normal /obj/machinery/computer/message_monitor/proc/UnmagConsole() - emagged = FALSE + obj_flags &= ~EMAGGED /obj/machinery/computer/message_monitor/proc/ResetMessage() customsender = "System Administrator" diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index 1d0228d737..446a99dd31 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -224,7 +224,7 @@ /obj/machinery/vending/snack/proc/compartment_access_check(user) req_access_txt = chef_compartment_access - if(!allowed(user) && !emagged && scan_id) + if(!allowed(user) && !(obj_flags & EMAGGED) && scan_id) to_chat(user, "[src]'s chef compartment blinks red: Access denied.") req_access_txt = "0" return 0 @@ -342,9 +342,9 @@ ..() /obj/machinery/vending/emag_act(mob/user) - if(emagged) + if(obj_flags & EMAGGED) return - emagged = TRUE + obj_flags |= EMAGGED to_chat(user, "You short out the product lock on [src].") /obj/machinery/vending/attack_ai(mob/user) @@ -455,7 +455,7 @@ to_chat(usr, "The vending machine cannot dispense products while its service panel is open!") return - if((!allowed(usr)) && !emagged && scan_id) //For SECURE VENDING MACHINES YEAH + if((!allowed(usr)) && !(obj_flags & EMAGGED) && scan_id) //For SECURE VENDING MACHINES YEAH to_chat(usr, "Access denied." ) flick(icon_deny,src) return @@ -1195,4 +1195,4 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C #undef STANDARD_CHARGE #undef CONTRABAND_CHARGE -#undef COIN_CHARGE \ No newline at end of file +#undef COIN_CHARGE diff --git a/code/game/mecha/mech_fabricator.dm b/code/game/mecha/mech_fabricator.dm index 8654f9854e..021b05cb58 100644 --- a/code/game/mecha/mech_fabricator.dm +++ b/code/game/mecha/mech_fabricator.dm @@ -76,9 +76,9 @@ return TRUE /obj/machinery/mecha_part_fabricator/emag_act() - if(emagged) + if(obj_flags & EMAGGED) return - emagged = TRUE + obj_flags |= EMAGGED req_access = list() say("DB error \[Code 0x00F1\]") sleep(10) diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index ded6aec5c5..db6ef6b6b9 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -215,7 +215,7 @@ step_energy_drain = normal_step_energy_drain qdel(SM) if(CP) - armor["energy"] += (CP.rating * 10) //Each level of capacitor protects the mech against emp by 10% + armor = armor.modifyRating(energy = (CP.rating * 10)) //Each level of capacitor protects the mech against emp by 10% qdel(CP) //////////////////////// diff --git a/code/game/objects/effects/decals/cleanable/misc.dm b/code/game/objects/effects/decals/cleanable/misc.dm index 29d4fca0b9..d24a278b41 100644 --- a/code/game/objects/effects/decals/cleanable/misc.dm +++ b/code/game/objects/effects/decals/cleanable/misc.dm @@ -179,3 +179,9 @@ /obj/effect/decal/cleanable/glitter/blue name = "blue glitter" icon_state = "freon" + +/obj/effect/decal/cleanable/plasma + name = "stabilized plasma" + desc = "A puddle of stabilized plasma." + icon_state = "flour" + color = "#C8A5DC" \ No newline at end of file diff --git a/code/game/objects/effects/decals/cleanable/robots.dm b/code/game/objects/effects/decals/cleanable/robots.dm index 72a8689c75..b0159818eb 100644 --- a/code/game/objects/effects/decals/cleanable/robots.dm +++ b/code/game/objects/effects/decals/cleanable/robots.dm @@ -53,3 +53,8 @@ /obj/effect/decal/cleanable/oil/streak random_icon_states = list("streak1", "streak2", "streak3", "streak4", "streak5") + +/obj/effect/decal/cleanable/oil/slippery + +/obj/effect/decal/cleanable/oil/slippery/Initialize() + AddComponent(/datum/component/slippery, 80, (NO_SLIP_WHEN_WALKING | SLIDE)) \ No newline at end of file diff --git a/code/game/objects/effects/decals/crayon.dm b/code/game/objects/effects/decals/crayon.dm index b9a7701960..34263ef9a4 100644 --- a/code/game/objects/effects/decals/crayon.dm +++ b/code/game/objects/effects/decals/crayon.dm @@ -28,4 +28,3 @@ if(main) paint_colour = main add_atom_colour(paint_colour, FIXED_COLOUR_PRIORITY) - diff --git a/code/game/objects/effects/effect_system/effects_foam.dm b/code/game/objects/effects/effect_system/effects_foam.dm index 5d3a345e8c..21f04e5cdc 100644 --- a/code/game/objects/effects/effect_system/effects_foam.dm +++ b/code/game/objects/effects/effect_system/effects_foam.dm @@ -23,6 +23,51 @@ /turf/open/chasm, /turf/open/lava)) +/obj/effect/particle_effect/foam/firefighting + name = "firefighting foam" + lifetime = 20 //doesn't last as long as normal foam + amount = 0 //no spread + var/absorbed_plasma = 0 + +/obj/effect/particle_effect/foam/firefighting/MakeSlippery() + return + +/obj/effect/particle_effect/foam/firefighting/process() + ..() + + var/turf/open/T = get_turf(src) + var/obj/effect/hotspot/hotspot = (locate(/obj/effect/hotspot) in T) + if(hotspot && istype(T) && T.air) + qdel(hotspot) + var/datum/gas_mixture/G = T.air + var/plas_amt = min(30,G.gases[/datum/gas/plasma][MOLES]) //Absorb some plasma + G.gases[/datum/gas/plasma][MOLES] -= plas_amt + absorbed_plasma += plas_amt + if(G.temperature > T20C) + G.temperature = max(G.temperature/2,T20C) + G.garbage_collect() + T.air_update_turf() + +/obj/effect/particle_effect/foam/firefighting/kill_foam() + STOP_PROCESSING(SSfastprocess, src) + + if(absorbed_plasma) + var/obj/effect/decal/cleanable/plasma/P = (locate(/obj/effect/decal/cleanable/plasma) in get_turf(src)) + if(!P) + P = new(loc) + P.reagents.add_reagent("stable_plasma", absorbed_plasma) + + flick("[icon_state]-disolve", src) + QDEL_IN(src, 5) + +/obj/effect/particle_effect/foam/firefighting/foam_mob(mob/living/L) + if(!istype(L)) + return + L.adjust_fire_stacks(-2) + L.ExtinguishMob() + +/obj/effect/particle_effect/foam/firefighting/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) + return /obj/effect/particle_effect/foam/metal name = "aluminium foam" diff --git a/code/game/objects/effects/effects.dm b/code/game/objects/effects/effects.dm index 2b456b2ed7..1ac6f8d007 100644 --- a/code/game/objects/effects/effects.dm +++ b/code/game/objects/effects/effects.dm @@ -4,7 +4,7 @@ /obj/effect icon = 'icons/effects/effects.dmi' resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF | FREEZE_PROOF - can_be_hit = FALSE + obj_flags = 0 /obj/effect/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, attack_dir) return diff --git a/code/game/objects/effects/landmarks.dm b/code/game/objects/effects/landmarks.dm index 62c6d9bf44..f6c950cc42 100644 --- a/code/game/objects/effects/landmarks.dm +++ b/code/game/objects/effects/landmarks.dm @@ -269,10 +269,6 @@ INITIALIZE_IMMEDIATE(/obj/effect/landmark/start/new_player) name = "carpspawn" icon_state = "carp_spawn" -// lightsout. -/obj/effect/landmark/lightsout - name = "lightsout" - // observer-start. /obj/effect/landmark/observer_start name = "Observer-Start" diff --git a/code/game/objects/effects/mines.dm b/code/game/objects/effects/mines.dm index 9c1e72bd92..65e69a2e55 100644 --- a/code/game/objects/effects/mines.dm +++ b/code/game/objects/effects/mines.dm @@ -167,7 +167,7 @@ if(!victim.client || !istype(victim)) return to_chat(victim, "You feel fast!") - victim.status_flags |= GOTTAGOREALLYFAST + victim.add_trait(TRAIT_GOTTAGOREALLYFAST, "yellow_orb") sleep(duration) - victim.status_flags &= ~GOTTAGOREALLYFAST + victim.remove_trait(TRAIT_GOTTAGOREALLYFAST, "yellow_orb") to_chat(victim, "You slow down.") diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 19c1b6e03d..88652882cb 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -26,7 +26,8 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) max_integrity = 200 - can_be_hit = FALSE + obj_flags = NONE + var/item_flags = NONE var/hitsound = null var/usesound = null @@ -61,37 +62,22 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) var/equip_delay_other = 20 //In deciseconds, how long an item takes to put on another person var/strip_delay = 40 //In deciseconds, how long an item takes to remove from another person var/breakouttime = 0 - var/being_removed = FALSE var/list/materials - var/needs_permit = 0 //Used by security bots to determine if this item is safe for public use. - var/emagged = FALSE var/list/attack_verb //Used in attackby() to say how something was attacked "[x] has been [z.attack_verb] by [y] with [z]" var/list/species_exception = null // list() of species types, if a species cannot put items in a certain slot, but species type is in list, it will be able to wear that item - var/suittoggled = FALSE - var/hooded = 0 - var/mob/thrownby = null mouse_drag_pointer = MOUSE_ACTIVE_POINTER //the icon to indicate this object is being dragged - //So items can have custom embedd values - //Because customisation is king - var/embed_chance = EMBED_CHANCE - var/embedded_fall_chance = EMBEDDED_ITEM_FALLOUT - var/embedded_pain_chance = EMBEDDED_PAIN_CHANCE - var/embedded_pain_multiplier = EMBEDDED_PAIN_MULTIPLIER //The coefficient of multiplication for the damage this item does while embedded (this*w_class) - var/embedded_fall_pain_multiplier = EMBEDDED_FALL_PAIN_MULTIPLIER //The coefficient of multiplication for the damage this item does when falling out of a limb (this*w_class) - var/embedded_impact_pain_multiplier = EMBEDDED_IMPACT_PAIN_MULTIPLIER //The coefficient of multiplication for the damage this item does when first embedded (this*w_class) - var/embedded_unsafe_removal_pain_multiplier = EMBEDDED_UNSAFE_REMOVAL_PAIN_MULTIPLIER //The coefficient of multiplication for the damage removing this without surgery causes (this*w_class) - var/embedded_unsafe_removal_time = EMBEDDED_UNSAFE_REMOVAL_TIME //A time in ticks, multiplied by the w_class. + var/datum/embedding_behavior/embedding var/flags_cover = 0 //for flags such as GLASSESCOVERSEYES var/heat = 0 var/sharpness = IS_BLUNT - var/tool_behaviour = TOOL_NONE + var/tool_behaviour = NONE var/toolspeed = 1 var/block_chance = 0 @@ -109,16 +95,13 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) //Tooltip vars - var/in_inventory = FALSE//is this item equipped into an inventory slot or hand of a mob? var/force_string //string form of an item's force. Edit this var only to set a custom force string var/last_force_string_check = 0 var/tip_timer - var/force_string_override + var/icon_override //CIT CHANGE - adds icon_override var. Will be removed with #4322 var/trigger_guard = TRIGGER_GUARD_NONE - var/icon_override //CIT CHANGE - adds icon_override var. Will be removed with #4322 - //Grinder vars var/list/grind_results //A reagent list containing the reagents this item produces when ground up in a grinder - this can be an empty list to allow for reagent transferring only var/list/juice_results //A reagent list containing blah blah... but when JUICED in a grinder! @@ -135,7 +118,7 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) rpg_loot = new(src) if(force_string) - force_string_override = TRUE + item_flags |= FORCE_STRING_OVERRIDE if(!hitsound) if(damtype == "fire") @@ -143,6 +126,13 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) if(damtype == "brute") hitsound = "swing_hit" + if (!embedding) + embedding = getEmbeddingBehavior() + else if (islist(embedding)) + embedding = getEmbeddingBehavior(arglist(embedding)) + else if (!istype(embedding, /datum/embedding_behavior)) + stack_trace("Invalid type [embedding.type] found in .embedding during /obj/item Initialize()") + /obj/item/Destroy() flags_1 &= ~DROPDEL_1 //prevent reqdels if(ismob(loc)) @@ -413,12 +403,12 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) A.Remove(user) if(DROPDEL_1 & flags_1) qdel(src) - in_inventory = FALSE + item_flags &= ~IN_INVENTORY SendSignal(COMSIG_ITEM_DROPPED,user) // called just as an item is picked up (loc is not yet changed) /obj/item/proc/pickup(mob/user) - in_inventory = TRUE + item_flags |= IN_INVENTORY return @@ -446,7 +436,7 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) if(item_action_slot_check(slot, user)) //some items only give their actions buttons when in a specific slot. A.Grant(user) SendSignal(COMSIG_ITEM_EQUIPPED,user,slot) - in_inventory = TRUE + item_flags |= IN_INVENTORY //sometimes we only want to grant the item's action if it's equipped in a specific slot. /obj/item/proc/item_action_slot_check(slot, mob/user) @@ -547,7 +537,7 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) M.adjust_blurriness(15) if(M.stat != DEAD) to_chat(M, "Your eyes start to bleed profusely!") - if(!(M.has_disability(DISABILITY_BLIND) || M.has_disability(DISABILITY_NEARSIGHT))) + if(!(M.has_trait(TRAIT_BLIND) || M.has_trait(TRAIT_NEARSIGHT))) to_chat(M, "You become nearsighted!") M.become_nearsighted(EYE_DAMAGE) if(prob(50)) @@ -588,7 +578,7 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) if (callback) //call the original callback . = callback.Invoke() throw_speed = initial(throw_speed) //explosions change this. - in_inventory = FALSE + item_flags &= ~IN_INVENTORY /obj/item/proc/remove_item_from_storage(atom/newLoc) //please use this if you're going to snowflake an item out of a obj/item/storage if(!newLoc) @@ -737,15 +727,15 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) last_force_string_check = force /obj/item/proc/openTip(location, control, params, user) - if(last_force_string_check != force && !force_string_override) + if(last_force_string_check != force && !(item_flags & FORCE_STRING_OVERRIDE)) set_force_string() - if(!force_string_override) + if(!(item_flags & FORCE_STRING_OVERRIDE)) openToolTip(user,src,params,title = name,content = "[desc]
[force ? "Force: [force_string]" : ""]",theme = "") else openToolTip(user,src,params,title = name,content = "[desc]
Force: [force_string]",theme = "") /obj/item/MouseEntered(location, control, params) - if(in_inventory && usr.client.prefs.enable_tips) + if((item_flags & IN_INVENTORY) && usr.client.prefs.enable_tips) var/timedelay = usr.client.prefs.tip_delay/100 var/user = usr tip_timer = addtimer(CALLBACK(src, .proc/openTip, location, control, params, user), timedelay, TIMER_STOPPABLE)//timer takes delay in deciseconds, but the pref is in milliseconds. dividing by 100 converts it. diff --git a/code/game/objects/items/AI_modules.dm b/code/game/objects/items/AI_modules.dm index cdf9d5e333..919bea60b4 100644 --- a/code/game/objects/items/AI_modules.dm +++ b/code/game/objects/items/AI_modules.dm @@ -173,16 +173,16 @@ AI MODULES /******************** OneHuman ********************/ /obj/item/aiModule/zeroth/oneHuman - name = "'OneCrew' AI Module"//CIT CHANGE - changes onehuman to onecrew + name = "'OneHuman' AI Module" var/targetName = "" - laws = list("Only SUBJECT is crew.") + laws = list("Only SUBJECT is human.") /obj/item/aiModule/zeroth/oneHuman/attack_self(mob/user) - var/targName = stripped_input(user, "Please enter the subject who is the only crew.", "Who?", user.real_name,MAX_NAME_LEN) + var/targName = stripped_input(user, "Please enter the subject who is the only human.", "Who?", user.real_name,MAX_NAME_LEN) if(!targName) return targetName = targName - laws[1] = "Only [targetName] is crew" + laws[1] = "Only [targetName] is human" ..() /obj/item/aiModule/zeroth/oneHuman/install(datum/ai_laws/law_datum, mob/user) @@ -408,9 +408,8 @@ AI MODULES laws += line - if(!laws.len) //Failsafe if something goes wrong with silicon_laws.txt. - WARNING("ERROR: empty custom board created, empty custom board deleted. Please check silicon_laws.txt. (this may be intended by the server host)") - qdel(src) + if(!laws.len) + return INITIALIZE_HINT_QDEL /****************** T.Y.R.A.N.T. *****************/ diff --git a/code/game/objects/items/RSF.dm b/code/game/objects/items/RSF.dm index eec97044bc..a01c0e7487 100644 --- a/code/game/objects/items/RSF.dm +++ b/code/game/objects/items/RSF.dm @@ -133,8 +133,8 @@ RSF return /obj/item/cookiesynth/emag_act(mob/user) - emagged = !emagged - if(emagged) + obj_flags ^= EMAGGED + if(obj_flags & EMAGGED) to_chat(user, "You short out [src]'s reagent safety checker!") else to_chat(user, "You reset [src]'s reagent safety checker!") @@ -144,7 +144,7 @@ RSF var/mob/living/silicon/robot/P = null if(iscyborg(user)) P = user - if(emagged&&!toxin) + if((obj_flags & EMAGGED)&&!toxin) toxin = 1 to_chat(user, "Cookie Synthesizer Hacked") else if(P.emagged&&!toxin) diff --git a/code/game/objects/items/body_egg.dm b/code/game/objects/items/body_egg.dm index 61e15e9fc1..13dd2c1f18 100644 --- a/code/game/objects/items/body_egg.dm +++ b/code/game/objects/items/body_egg.dm @@ -16,7 +16,7 @@ /obj/item/organ/body_egg/Insert(var/mob/living/carbon/M, special = 0) ..() - owner.status_flags |= XENO_HOST + owner.add_trait(TRAIT_XENO_HOST, TRAIT_GENERIC) START_PROCESSING(SSobj, src) owner.med_hud_set_status() INVOKE_ASYNC(src, .proc/AddInfectionImages, owner) @@ -24,7 +24,7 @@ /obj/item/organ/body_egg/Remove(var/mob/living/carbon/M, special = 0) STOP_PROCESSING(SSobj, src) if(owner) - owner.status_flags &= ~(XENO_HOST) + owner.remove_trait(TRAIT_XENO_HOST, TRAIT_GENERIC) owner.med_hud_set_status() INVOKE_ASYNC(src, .proc/RemoveInfectionImages, owner) ..() diff --git a/code/game/objects/items/cigs_lighters.dm b/code/game/objects/items/cigs_lighters.dm index 01bb057769..267044f289 100644 --- a/code/game/objects/items/cigs_lighters.dm +++ b/code/game/objects/items/cigs_lighters.dm @@ -693,7 +693,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM cut_overlays() if(istype(O, /obj/item/device/multitool)) - if(screw && !emagged)//also kinky + if(screw && !(obj_flags & EMAGGED))//also kinky if(!super) cut_overlays() super = 1 @@ -705,15 +705,15 @@ CIGARETTE PACKETS ARE IN FANCY.DM to_chat(user, "You decrease the voltage of [src].") add_overlay("vapeopen_low") - if(screw && emagged) + if(screw && (obj_flags & EMAGGED)) to_chat(user, "[src] can't be modified!") /obj/item/clothing/mask/vape/emag_act(mob/user)// I WON'T REGRET WRITTING THIS, SURLY. if(screw) - if(!emagged) + if(!(obj_flags & EMAGGED)) cut_overlays() - emagged = TRUE + obj_flags |= EMAGGED super = 0 to_chat(user, "You maximize the voltage of [src].") add_overlay("vapeopen_high") @@ -790,7 +790,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM s.start() vapetime = 0 - if(emagged && vapetime > 3) + if((obj_flags & EMAGGED) && vapetime > 3) var/datum/effect_system/smoke_spread/chem/s = new s.set_up(reagents, 4, loc, silent=TRUE) s.start() diff --git a/code/game/objects/items/circuitboards/computer_circuitboards.dm b/code/game/objects/items/circuitboards/computer_circuitboards.dm index afd0eeef95..24038d9c69 100644 --- a/code/game/objects/items/circuitboards/computer_circuitboards.dm +++ b/code/game/objects/items/circuitboards/computer_circuitboards.dm @@ -189,16 +189,16 @@ var/contraband = FALSE /obj/item/circuitboard/computer/cargo/multitool_act(mob/living/user) - if(!emagged) + if(!(obj_flags & EMAGGED)) contraband = !contraband to_chat(user, "Receiver spectrum set to [contraband ? "Broad" : "Standard"].") else to_chat(user, "The spectrum chip is unresponsive.") /obj/item/circuitboard/computer/cargo/emag_act(mob/living/user) - if(!emagged) + if(!(obj_flags & EMAGGED)) contraband = TRUE - emagged = TRUE + obj_flags |= EMAGGED to_chat(user, "You adjust [src]'s routing and receiver spectrum, unlocking special supplies and contraband.") /obj/item/circuitboard/computer/cargo/express @@ -206,15 +206,15 @@ build_path = /obj/machinery/computer/cargo/express /obj/item/circuitboard/computer/cargo/express/multitool_act(mob/living/user) - if (!emagged) + if (!(obj_flags & EMAGGED)) to_chat(user, "Routing protocols are already set to: \"factory defaults\".") - else + else to_chat(user, "You reset the routing protocols to: \"factory defaults\".") - emagged = FALSE + obj_flags &= ~EMAGGED /obj/item/circuitboard/computer/cargo/express/emag_act(mob/living/user) to_chat(user, "You change the routing protocols, allowing the Drop Pod to land anywhere on the station.") - emagged = TRUE + obj_flags |= EMAGGED /obj/item/circuitboard/computer/cargo/request name = "Supply Request Console (Computer Board)" diff --git a/code/game/objects/items/crayons.dm b/code/game/objects/items/crayons.dm index 86628265bc..afdeb4c658 100644 --- a/code/game/objects/items/crayons.dm +++ b/code/game/objects/items/crayons.dm @@ -39,7 +39,7 @@ var/list/runes = list("rune1","rune2","rune3","rune4","rune5","rune6") var/list/randoms = list(RANDOM_ANY, RANDOM_RUNE, RANDOM_ORIENTED, RANDOM_NUMBER, RANDOM_GRAFFITI, RANDOM_LETTER) - var/list/graffiti_large_h = list("secborg", "paint") // CIT CHANGE - removes yiff in hell graffiti + var/list/graffiti_large_h = list("yiffhell", "secborg", "paint") var/list/all_drawables diff --git a/code/game/objects/items/defib.dm b/code/game/objects/items/defib.dm index a314f8191e..98836fe870 100644 --- a/code/game/objects/items/defib.dm +++ b/code/game/objects/items/defib.dm @@ -399,7 +399,7 @@ /obj/item/twohanded/shockpaddles/proc/can_defib(mob/living/carbon/H) var/obj/item/organ/brain/BR = H.getorgan(/obj/item/organ/brain) - return (!H.suiciding && !(H.has_disability(DISABILITY_NOCLONE)) && !H.hellbound && ((world.time - H.timeofdeath) < tlimit) && (H.getBruteLoss() < 180) && (H.getFireLoss() < 180) && H.getorgan(/obj/item/organ/heart) && BR && !BR.damaged_brain) + return (!H.suiciding && !(H.has_trait(TRAIT_NOCLONE)) && !H.hellbound && ((world.time - H.timeofdeath) < tlimit) && (H.getBruteLoss() < 180) && (H.getFireLoss() < 180) && H.getorgan(/obj/item/organ/heart) && BR && !BR.damaged_brain) /obj/item/twohanded/shockpaddles/proc/shock_touching(dmg, mob/H) if(isliving(H.pulledby)) //CLEAR! @@ -520,7 +520,7 @@ shock_touching(30, H) var/failed - if (H.suiciding || (H.has_disability(DISABILITY_NOCLONE))) + if (H.suiciding || (H.has_trait(TRAIT_NOCLONE))) failed = "[req_defib ? "[defib]" : "[src]"] buzzes: Resuscitation failed - Recovery of patient impossible. Further attempts futile." else if (H.hellbound) failed = "[req_defib ? "[defib]" : "[src]"] buzzes: Resuscitation failed - Patient's soul appears to be on another plane of existence. Further attempts futile." diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm index 0e8200126a..f8ffc8aafb 100644 --- a/code/game/objects/items/devices/flashlight.dm +++ b/code/game/objects/items/devices/flashlight.dm @@ -49,7 +49,7 @@ add_fingerprint(user) if(istype(M) && on && user.zone_selected in list("eyes", "mouth")) - if((user.has_disability(DISABILITY_CLUMSY) || user.has_disability(DISABILITY_DUMB)) && prob(50)) //too dumb to use flashlight properly + if((user.has_trait(TRAIT_CLUMSY) || user.has_trait(TRAIT_DUMB)) && prob(50)) //too dumb to use flashlight properly return ..() //just hit them in the head if(!user.IsAdvancedToolUser()) @@ -83,7 +83,7 @@ else user.visible_message("[user] directs [src] to [M]'s eyes.", \ "You direct [src] to [M]'s eyes.") - if(M.stat == DEAD || (M.has_disability(DISABILITY_BLIND)) || !M.flash_act(visual = 1)) //mob is dead or fully blind + if(M.stat == DEAD || (M.has_trait(TRAIT_BLIND)) || !M.flash_act(visual = 1)) //mob is dead or fully blind to_chat(user, "[M]'s pupils don't react to the light!") else if(M.dna && M.dna.check_mutation(XRAY)) //mob has X-RAY vision to_chat(user, "[M]'s pupils give an eerie glow!") diff --git a/code/game/objects/items/devices/geiger_counter.dm b/code/game/objects/items/devices/geiger_counter.dm index 03e4ff123a..64d710be25 100644 --- a/code/game/objects/items/devices/geiger_counter.dm +++ b/code/game/objects/items/devices/geiger_counter.dm @@ -46,15 +46,15 @@ if(!scanning) current_tick_amount = 0 return - + radiation_count -= radiation_count/RAD_MEASURE_SMOOTHING radiation_count += current_tick_amount/RAD_MEASURE_SMOOTHING - + if(current_tick_amount) grace = RAD_GRACE_PERIOD last_tick_amount = current_tick_amount - else if(!emagged) + else if(!(obj_flags & EMAGGED)) grace-- if(grace <= 0) radiation_count = 0 @@ -66,7 +66,7 @@ if(!scanning) return 1 to_chat(user, "Alt-click it to clear stored radiation levels.") - if(emagged) + if(obj_flags & EMAGGED) to_chat(user, "The display seems to be incomprehensible.") return 1 switch(radiation_count) @@ -89,7 +89,7 @@ if(!scanning) icon_state = "geiger_off" return 1 - if(emagged) + if(obj_flags & EMAGGED) icon_state = "geiger_on_emag" return 1 switch(radiation_count) @@ -131,7 +131,7 @@ /obj/item/device/geiger_counter/attack(mob/living/M, mob/user) if(user.a_intent == INTENT_HELP) - if(!emagged) + if(!(obj_flags & EMAGGED)) user.visible_message("[user] scans [M] with [src].", "You scan [M]'s radiation levels with [src]...") addtimer(CALLBACK(src, .proc/scan, M, user), 20, TIMER_UNIQUE) // Let's not have spamming GetAllContents else @@ -164,7 +164,7 @@ to_chat(user, "[icon2html(src, user)] Subject is free of radioactive contamination.") /obj/item/device/geiger_counter/attackby(obj/item/I, mob/user, params) - if(istype(I, /obj/item/screwdriver) && emagged) + if(istype(I, /obj/item/screwdriver) && (obj_flags & EMAGGED)) if(scanning) to_chat(user, "Turn off [src] before you perform this action!") return 0 @@ -174,7 +174,7 @@ return 0 user.visible_message("[user] refastens [src]'s maintenance panel!", "You reset [src] to its factory settings!") playsound(user, 'sound/items/screwdriver2.ogg', 50, 1) - emagged = FALSE + obj_flags &= ~EMAGGED radiation_count = 0 update_icon() return 1 @@ -192,13 +192,13 @@ update_icon() /obj/item/device/geiger_counter/emag_act(mob/user) - if(emagged) + if(obj_flags & EMAGGED) return if(scanning) to_chat(user, "Turn off [src] before you perform this action!") return 0 to_chat(user, "You override [src]'s radiation storing protocols. It will now generate small doses of radiation, and stored rads are now projected into creatures you scan.") - emagged = TRUE + obj_flags |= EMAGGED #undef RAD_LEVEL_NORMAL #undef RAD_LEVEL_MODERATE diff --git a/code/game/objects/items/devices/gps.dm b/code/game/objects/items/devices/gps.dm index 9d01e2a7aa..2c75166789 100644 --- a/code/game/objects/items/devices/gps.dm +++ b/code/game/objects/items/devices/gps.dm @@ -6,7 +6,7 @@ GLOBAL_LIST_EMPTY(GPS_list) icon_state = "gps-c" w_class = WEIGHT_CLASS_SMALL slot_flags = SLOT_BELT - unique_rename = TRUE + obj_flags = UNIQUE_RENAME var/gpstag = "COM0" var/emped = FALSE var/turf/locked_location diff --git a/code/game/objects/items/devices/lightreplacer.dm b/code/game/objects/items/devices/lightreplacer.dm index 4ea91ccccf..a1cdfe4a9b 100644 --- a/code/game/objects/items/devices/lightreplacer.dm +++ b/code/game/objects/items/devices/lightreplacer.dm @@ -149,7 +149,7 @@ to_chat(user, "You fill \the [src] with lights from \the [S]. " + status_string() + "") /obj/item/device/lightreplacer/emag_act() - if(emagged) + if(obj_flags & EMAGGED) return Emag() @@ -157,7 +157,7 @@ to_chat(user, status_string()) /obj/item/device/lightreplacer/update_icon() - icon_state = "lightreplacer[emagged]" + icon_state = "lightreplacer[(obj_flags & EMAGGED ? 1 : 0)]" /obj/item/device/lightreplacer/proc/status_string() return "It has [uses] light\s remaining (plus [bulb_shards] fragment\s)." @@ -205,7 +205,7 @@ target.status = L2.status target.switchcount = L2.switchcount - target.rigged = emagged + target.rigged = (obj_flags & EMAGGED ? 1 : 0) target.brightness = L2.brightness target.on = target.has_power() target.update() @@ -223,9 +223,9 @@ return /obj/item/device/lightreplacer/proc/Emag() - emagged = !emagged + obj_flags ^= EMAGGED playsound(src.loc, "sparks", 100, 1) - if(emagged) + if(obj_flags & EMAGGED) name = "shortcircuited [initial(name)]" else name = initial(name) diff --git a/code/game/objects/items/devices/megaphone.dm b/code/game/objects/items/devices/megaphone.dm index 79725173bf..4b47a0373f 100644 --- a/code/game/objects/items/devices/megaphone.dm +++ b/code/game/objects/items/devices/megaphone.dm @@ -25,10 +25,10 @@ return voicespan /obj/item/device/megaphone/emag_act(mob/user) - if(emagged) + if(obj_flags & EMAGGED) return to_chat(user, "You overload \the [src]'s voice synthesizer.") - emagged = TRUE + obj_flags |= EMAGGED voicespan = list(SPAN_REALLYBIG, "userdanger") /obj/item/device/megaphone/sec diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index 2ff3ee31bd..ca1feafe5e 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -90,7 +90,7 @@ GAS ANALYZER /obj/item/device/healthanalyzer/attack(mob/living/M, mob/living/carbon/human/user) // Clumsiness/brain damage check - if ((user.has_disability(DISABILITY_CLUMSY) || user.has_disability(DISABILITY_DUMB)) && prob(50)) + if ((user.has_trait(TRAIT_CLUMSY) || user.has_trait(TRAIT_DUMB)) && prob(50)) to_chat(user, "You stupidly try to analyze the floor's vitals!") user.visible_message("[user] has analyzed the floor's vitals!") to_chat(user, "Analyzing results for The floor:\n\tOverall status: Healthy") @@ -120,7 +120,7 @@ GAS ANALYZER var/brute_loss = M.getBruteLoss() var/mob_status = (M.stat == DEAD ? "Deceased" : "[round(M.health/M.maxHealth,0.01)*100] % healthy") - if(M.status_flags & FAKEDEATH && !advanced) + if(M.has_trait(TRAIT_FAKEDEATH) && !advanced) mob_status = "Deceased" oxy_loss = max(rand(1, 40), oxy_loss, (300 - (tox_loss + fire_loss + brute_loss))) // Random oxygen loss @@ -181,10 +181,10 @@ GAS ANALYZER to_chat(user, "\t==EAR STATUS==") if(istype(ears)) var/healthy = TRUE - if(C.has_disability(DISABILITY_DEAF, GENETIC_MUTATION)) + if(C.has_trait(TRAIT_DEAF, GENETIC_MUTATION)) healthy = FALSE to_chat(user, "\tSubject is genetically deaf.") - else if(C.has_disability(DISABILITY_DEAF)) + else if(C.has_trait(TRAIT_DEAF)) healthy = FALSE to_chat(user, "\tSubject is deaf.") else @@ -202,10 +202,10 @@ GAS ANALYZER to_chat(user, "\t==EYE STATUS==") if(istype(eyes)) var/healthy = TRUE - if(C.has_disability(DISABILITY_BLIND)) + if(C.has_trait(TRAIT_BLIND)) to_chat(user, "\tSubject is blind.") healthy = FALSE - if(C.has_disability(DISABILITY_NEARSIGHT)) + if(C.has_trait(TRAIT_NEARSIGHT)) to_chat(user, "\tSubject is nearsighted.") healthy = FALSE if(eyes.eye_damage > 30) @@ -245,7 +245,7 @@ GAS ANALYZER to_chat(user, "Body temperature: [round(M.bodytemperature-T0C,0.1)] °C ([round(M.bodytemperature*1.8-459.67,0.1)] °F)") // Time of death - if(M.tod && (M.stat == DEAD || ((M.status_flags & FAKEDEATH) && !advanced))) + if(M.tod && (M.stat == DEAD || ((M.has_trait(TRAIT_FAKEDEATH)) && !advanced))) to_chat(user, "Time of Death: [M.tod]") var/tdelta = round(world.time - M.timeofdeath) if(tdelta < (DEFIB_TIME_LIMIT * 10)) diff --git a/code/game/objects/items/dna_injector.dm b/code/game/objects/items/dna_injector.dm index f2741e4715..c908b619c4 100644 --- a/code/game/objects/items/dna_injector.dm +++ b/code/game/objects/items/dna_injector.dm @@ -31,7 +31,7 @@ /obj/item/dnainjector/proc/inject(mob/living/carbon/M, mob/user) prepare() - if(M.has_dna() && !(RADIMMUNE in M.dna.species.species_traits) && !(M.has_disability(DISABILITY_NOCLONE))) + if(M.has_dna() && !(RADIMMUNE in M.dna.species.species_traits) && !(M.has_trait(TRAIT_NOCLONE))) M.radiation += rand(20/(damage_coeff ** 2),50/(damage_coeff ** 2)) var/log_msg = "[key_name(user)] injected [key_name(M)] with the [name]" for(var/datum/mutation/human/HM in remove_mutations) @@ -313,7 +313,7 @@ to_chat(user, "You can't modify [M]'s DNA while [M.p_theyre()] dead.") return FALSE - if(M.has_dna() && !(M.has_disability(DISABILITY_NOCLONE))) + if(M.has_dna() && !(M.has_trait(TRAIT_NOCLONE))) M.radiation += rand(20/(damage_coeff ** 2),50/(damage_coeff ** 2)) var/log_msg = "[key_name(user)] injected [key_name(M)] with the [name]" var/endtime = world.time+duration diff --git a/code/game/objects/items/grenades/grenade.dm b/code/game/objects/items/grenades/grenade.dm index 3df64597c9..e4174563b8 100644 --- a/code/game/objects/items/grenades/grenade.dm +++ b/code/game/objects/items/grenades/grenade.dm @@ -32,7 +32,7 @@ qdel(src) /obj/item/grenade/proc/clown_check(mob/living/carbon/human/user) - if(user.has_disability(DISABILITY_CLUMSY) && prob(50)) + if(user.has_trait(TRAIT_CLUMSY) && prob(50)) to_chat(user, "Huh? How does this thing work?") preprime(user, 5, FALSE) return FALSE diff --git a/code/game/objects/items/grenades/plastic.dm b/code/game/objects/items/grenades/plastic.dm index eb0c397fc8..ae20859a9d 100644 --- a/code/game/objects/items/grenades/plastic.dm +++ b/code/game/objects/items/grenades/plastic.dm @@ -113,7 +113,7 @@ var/obj/item/I = AM I.throw_speed = max(1, (I.throw_speed - 3)) I.throw_range = max(1, (I.throw_range - 3)) - I.embed_chance = 0 + I.embedding = I.embedding.setRating(embed_chance = 0) message_admins("[ADMIN_LOOKUPFLW(user)] planted [name] on [target.name] at [ADMIN_COORDJMP(target)] with [det_time] second fuse",0,1) log_game("[key_name(user)] planted [name] on [target.name] at [COORD(src)] with [det_time] second fuse") diff --git a/code/game/objects/items/handcuffs.dm b/code/game/objects/items/handcuffs.dm index 1b285f28da..40f746b1dd 100644 --- a/code/game/objects/items/handcuffs.dm +++ b/code/game/objects/items/handcuffs.dm @@ -43,7 +43,7 @@ /obj/item/restraints/handcuffs/attack(mob/living/carbon/C, mob/living/carbon/human/user) if(!istype(C)) return - if(user.has_disability(DISABILITY_CLUMSY) && prob(50)) + if(user.has_trait(TRAIT_CLUMSY) && prob(50)) to_chat(user, "Uh... how do those things work?!") apply_cuffs(user,user) return diff --git a/code/game/objects/items/holy_weapons.dm b/code/game/objects/items/holy_weapons.dm index ea570374b2..aaa19b6ab1 100644 --- a/code/game/objects/items/holy_weapons.dm +++ b/code/game/objects/items/holy_weapons.dm @@ -10,7 +10,7 @@ throw_range = 4 throwforce = 10 w_class = WEIGHT_CLASS_TINY - unique_rename = TRUE + obj_flags = UNIQUE_RENAME var/reskinned = FALSE /obj/item/nullrod/suicide_act(mob/user) diff --git a/code/game/objects/items/kitchen.dm b/code/game/objects/items/kitchen.dm index cbb326d6ac..d67a3c8333 100644 --- a/code/game/objects/items/kitchen.dm +++ b/code/game/objects/items/kitchen.dm @@ -49,7 +49,7 @@ forkload = null else if(user.zone_selected == "eyes") - if(user.has_disability(DISABILITY_CLUMSY) && prob(50)) + if(user.has_trait(TRAIT_CLUMSY) && prob(50)) M = user return eyestab(M,user) else @@ -75,7 +75,7 @@ /obj/item/kitchen/knife/attack(mob/living/carbon/M, mob/living/carbon/user) if(user.zone_selected == "eyes") - if(user.has_disability(DISABILITY_CLUMSY) && prob(50)) + if(user.has_trait(TRAIT_CLUMSY) && prob(50)) M = user return eyestab(M,user) else diff --git a/code/game/objects/items/melee/energy.dm b/code/game/objects/items/melee/energy.dm index 146bcbb3c3..2f9e4231df 100644 --- a/code/game/objects/items/melee/energy.dm +++ b/code/game/objects/items/melee/energy.dm @@ -95,8 +95,7 @@ throw_speed = 3 throw_range = 5 sharpness = IS_SHARP - embed_chance = 75 - embedded_impact_pain_multiplier = 10 + embedding = list("embed_chance" = 75, "embedded_impact_pain_multiplier" = 10) armour_penetration = 35 block_chance = 50 diff --git a/code/game/objects/items/melee/misc.dm b/code/game/objects/items/melee/misc.dm index 3f1b5cd54e..3fbb5111b7 100644 --- a/code/game/objects/items/melee/misc.dm +++ b/code/game/objects/items/melee/misc.dm @@ -1,5 +1,5 @@ /obj/item/melee - needs_permit = 1 + item_flags = NEEDS_PERMIT /obj/item/melee/proc/check_martial_counter(mob/living/carbon/human/target, mob/living/carbon/human/user) if(target.check_block()) @@ -52,7 +52,7 @@ lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' flags_1 = CONDUCT_1 - unique_rename = 1 + obj_flags = UNIQUE_RENAME force = 15 throwforce = 10 w_class = WEIGHT_CLASS_BULKY @@ -99,7 +99,7 @@ return ..() add_fingerprint(user) - if((user.has_disability(DISABILITY_CLUMSY)) && prob(50)) + if((user.has_trait(TRAIT_CLUMSY)) && prob(50)) to_chat(user, "You club yourself over the head.") user.Knockdown(60 * force) if(ishuman(user)) @@ -148,7 +148,7 @@ item_state = null slot_flags = SLOT_BELT w_class = WEIGHT_CLASS_SMALL - needs_permit = 0 + item_flags = NONE force = 0 on = FALSE diff --git a/code/game/objects/items/melee/transforming.dm b/code/game/objects/items/melee/transforming.dm index ca0c36f97e..86944813ed 100644 --- a/code/game/objects/items/melee/transforming.dm +++ b/code/game/objects/items/melee/transforming.dm @@ -72,6 +72,6 @@ to_chat(user, "[src] [active ? "is now active":"can now be concealed"].") /obj/item/melee/transforming/proc/clumsy_transform_effect(mob/living/user) - if(user.has_disability(DISABILITY_CLUMSY) && prob(50)) + if(user.has_trait(TRAIT_CLUMSY) && prob(50)) to_chat(user, "You accidentally cut yourself with [src], like a doofus!") user.take_bodypart_damage(5,5) diff --git a/code/game/objects/items/pneumaticCannon.dm b/code/game/objects/items/pneumaticCannon.dm index 7a1446ef39..4b6557fde1 100644 --- a/code/game/objects/items/pneumaticCannon.dm +++ b/code/game/objects/items/pneumaticCannon.dm @@ -147,7 +147,7 @@ if(tank && !tank.air_contents.remove(gasPerThrow * pressureSetting)) to_chat(user, "\The [src] lets out a weak hiss and doesn't react!") return - if(user.has_disability(DISABILITY_CLUMSY) && prob(75) && clumsyCheck && iscarbon(user)) + if(user.has_trait(TRAIT_CLUMSY) && prob(75) && clumsyCheck && iscarbon(user)) var/mob/living/carbon/C = user C.visible_message("[C] loses their grip on [src], causing it to go off!", "[src] slips out of your hands and goes off!") C.dropItemToGround(src, TRUE) diff --git a/code/game/objects/items/robot/robot_items.dm b/code/game/objects/items/robot/robot_items.dm index 0764e437ca..4851e111a8 100644 --- a/code/game/objects/items/robot/robot_items.dm +++ b/code/game/objects/items/robot/robot_items.dm @@ -280,14 +280,14 @@ var/cooldown = 0 /obj/item/device/harmalarm/emag_act(mob/user) - emagged = !emagged - if(emagged) + obj_flags ^= EMAGGED + if(obj_flags & EMAGGED) to_chat(user, "You short out the safeties on [src]!") else to_chat(user, "You reset the safeties on [src]!") /obj/item/device/harmalarm/attack_self(mob/user) - var/safety = !emagged + var/safety = !(obj_flags & EMAGGED) if(cooldown > world.time) to_chat(user, "The device is still recharging!") return diff --git a/code/game/objects/items/shields.dm b/code/game/objects/items/shields.dm index 2f33803c10..8baa73368e 100644 --- a/code/game/objects/items/shields.dm +++ b/code/game/objects/items/shields.dm @@ -78,7 +78,7 @@ return (active) /obj/item/shield/energy/attack_self(mob/living/carbon/human/user) - if(user.has_disability(DISABILITY_CLUMSY) && prob(50)) + if(user.has_trait(TRAIT_CLUMSY) && prob(50)) to_chat(user, "You beat yourself in the head with [src].") user.take_bodypart_damage(5) active = !active diff --git a/code/game/objects/items/storage/book.dm b/code/game/objects/items/storage/book.dm index ff7933b6da..ec17683fa5 100644 --- a/code/game/objects/items/storage/book.dm +++ b/code/game/objects/items/storage/book.dm @@ -94,7 +94,7 @@ GLOBAL_LIST_INIT(bibleitemstates, list("bible", "koran", "scrapbook", "bible", to_chat(user, "You don't have the dexterity to do this!") return - if (user.has_disability(DISABILITY_CLUMSY) && prob(50)) + if (user.has_trait(TRAIT_CLUMSY) && prob(50)) to_chat(user, "[src] slips out of your hand and hits your head.") user.take_bodypart_damage(10) user.Unconscious(400) diff --git a/code/game/objects/items/stunbaton.dm b/code/game/objects/items/stunbaton.dm index 951d897835..bda1714f7b 100644 --- a/code/game/objects/items/stunbaton.dm +++ b/code/game/objects/items/stunbaton.dm @@ -108,7 +108,7 @@ add_fingerprint(user) /obj/item/melee/baton/attack(mob/M, mob/living/carbon/human/user) - if(status && user.has_disability(DISABILITY_CLUMSY) && prob(50)) + if(status && user.has_trait(TRAIT_CLUMSY) && prob(50)) user.visible_message("[user] accidentally hits themself with [src]!", \ "You accidentally hit yourself with [src]!") user.Knockdown(stunforce*3) diff --git a/code/game/objects/items/tanks/tanks.dm b/code/game/objects/items/tanks/tanks.dm index ba04f55a3e..4b20b9695f 100644 --- a/code/game/objects/items/tanks/tanks.dm +++ b/code/game/objects/items/tanks/tanks.dm @@ -125,7 +125,7 @@ H.dropItemToGround(W) if(prob(50)) step(W, pick(GLOB.alldirs)) - H.status_flags |= DISFIGURED + H.add_trait(TRAIT_DISFIGURED, TRAIT_GENERIC) H.bleed_rate = 5 H.gib_animation() sleep(3) diff --git a/code/game/objects/items/teleprod.dm b/code/game/objects/items/teleprod.dm index 646c0aa4fb..b31797fb5c 100644 --- a/code/game/objects/items/teleprod.dm +++ b/code/game/objects/items/teleprod.dm @@ -8,7 +8,7 @@ /obj/item/melee/baton/cattleprod/teleprod/attack(mob/living/carbon/M, mob/living/carbon/user)//handles making things teleport when hit ..() - if(status && user.has_disability(DISABILITY_CLUMSY) && prob(50)) + if(status && user.has_trait(TRAIT_CLUMSY) && prob(50)) user.visible_message("[user] accidentally hits themself with [src]!", \ "You accidentally hit yourself with [src]!") if(do_teleport(user, get_turf(user), 50))//honk honk diff --git a/code/game/objects/items/theft_tools.dm b/code/game/objects/items/theft_tools.dm index 95d209585f..4875ef324c 100644 --- a/code/game/objects/items/theft_tools.dm +++ b/code/game/objects/items/theft_tools.dm @@ -203,6 +203,11 @@ toolspeed = 0.5 damtype = "fire" usesound = 'sound/weapons/bladeslice.ogg' + var/usesLeft + +/obj/item/scalpel/supermatter/Initialize() + . = ..() + usesLeft = rand(2, 4) /obj/item/hemostat/supermatter name = "supermatter extraction tongs" @@ -227,10 +232,7 @@ if(!sliver) return if(ismovableatom(O) && O != sliver) - Consume(O) - to_chat(usr, "\The [sliver] is dusted along with \the [O]!") - QDEL_NULL(sliver) - update_icon() + Consume(O, user) /obj/item/hemostat/supermatter/throw_impact(atom/hit_atom) // no instakill supermatter javelins if(sliver) @@ -249,11 +251,12 @@ else investigate_log("has consumed [AM].", "supermatter") qdel(AM) - user.visible_message("As [user] touches \the [AM] with \a [src], silence fills the room...",\ - "You touch \the [AM] with \the [src], and everything suddenly goes silent.\n\The [AM] flashes into dust, and soon as you can register this, you do as well.",\ + if (user) + user.visible_message("As [user] touches [AM] with \a [src], silence fills the room...",\ + "You touch [AM] with [src], and everything suddenly goes silent.\n[AM] and [sliver] flash into dust, and soon as you can register this, you do as well.",\ "Everything suddenly goes silent.") - radiation_pulse(user, 500, 2) + user.dust() + radiation_pulse(src, 500, 2) playsound(src, 'sound/effects/supermatter.ogg', 50, 1) - user.dust() QDEL_NULL(sliver) update_icon() diff --git a/code/game/objects/items/tools/screwdriver.dm b/code/game/objects/items/tools/screwdriver.dm index c3bbc18d10..945b738bd0 100644 --- a/code/game/objects/items/tools/screwdriver.dm +++ b/code/game/objects/items/tools/screwdriver.dm @@ -75,7 +75,7 @@ return ..() if(user.zone_selected != "eyes" && user.zone_selected != "head") return ..() - if(user.has_disability(DISABILITY_CLUMSY) && prob(50)) + if(user.has_trait(TRAIT_CLUMSY) && prob(50)) M = user return eyestab(M,user) diff --git a/code/game/objects/items/tools/weldingtool.dm b/code/game/objects/items/tools/weldingtool.dm index 289b4dc5e2..992c01fc2b 100644 --- a/code/game/objects/items/tools/weldingtool.dm +++ b/code/game/objects/items/tools/weldingtool.dm @@ -30,6 +30,7 @@ var/light_intensity = 2 //how powerful the emitted light is when used. var/burned_fuel_for = 0 //when fuel was last removed heat = 3800 + tool_behaviour = TOOL_WELDER toolspeed = 1 /obj/item/weldingtool/Initialize() diff --git a/code/game/objects/items/twohanded.dm b/code/game/objects/items/twohanded.dm index 14585e8194..b7013f5210 100644 --- a/code/game/objects/items/twohanded.dm +++ b/code/game/objects/items/twohanded.dm @@ -289,7 +289,7 @@ /obj/item/twohanded/dualsaber/suicide_act(mob/living/carbon/user) if(wielded) user.visible_message("[user] begins spinning way too fast! It looks like [user.p_theyre()] trying to commit suicide!") - + var/obj/item/bodypart/head/myhead = user.get_bodypart("head")//stole from chainsaw code var/obj/item/organ/brain/B = user.getorganslot(ORGAN_SLOT_BRAIN) B.vital = FALSE//this cant possibly be a good idea @@ -305,8 +305,8 @@ else user.visible_message("[user] panics and starts choking to death!") return OXYLOSS - - + + else user.visible_message("[user] begins beating [user.p_them()]self to death with \the [src]'s handle! It probably would've been cooler if [user.p_they()] turned it on first!") return BRUTELOSS @@ -343,7 +343,7 @@ unwield() return ..() - if(user.has_disability(DISABILITY_CLUMSY) && (wielded) && prob(40)) + if(user.has_trait(TRAIT_CLUMSY) && (wielded) && prob(40)) impale(user) return if((wielded) && prob(50)) @@ -459,7 +459,7 @@ force_wielded = 18 throwforce = 20 throw_speed = 4 - embedded_impact_pain_multiplier = 3 + embedding = list("embedded_impact_pain_multiplier" = 3) armour_penetration = 10 materials = list(MAT_METAL=1150, MAT_GLASS=2075) hitsound = 'sound/weapons/bladeslice.ogg' @@ -778,7 +778,7 @@ force_wielded = 20 //I have no idea how to balance throwforce = 22 throw_speed = 4 - embedded_impact_pain_multiplier = 3 + embedding = list("embedded_impact_pain_multiplier" = 3) armour_penetration = 15 //Enhanced armor piercing hitsound = 'sound/weapons/bladeslice.ogg' attack_verb = list("attacked", "poked", "jabbed", "torn", "gored") diff --git a/code/game/objects/items/weaponry.dm b/code/game/objects/items/weaponry.dm index 2656079557..02bd801acc 100644 --- a/code/game/objects/items/weaponry.dm +++ b/code/game/objects/items/weaponry.dm @@ -105,10 +105,10 @@ /obj/item/claymore/highlander/pickup(mob/living/user) to_chat(user, "The power of Scotland protects you! You are shielded from all stuns and knockdowns.") user.add_stun_absorption("highlander", INFINITY, 1, " is protected by the power of Scotland!", "The power of Scotland absorbs the stun!", " is protected by the power of Scotland!") - user.status_flags += IGNORESLOWDOWN + user.add_trait(TRAIT_IGNORESLOWDOWN, HIGHLANDER) /obj/item/claymore/highlander/dropped(mob/living/user) - user.status_flags -= IGNORESLOWDOWN + user.remove_trait(TRAIT_IGNORESLOWDOWN, HIGHLANDER) qdel(src) //If this ever happens, it's because you lost an arm /obj/item/claymore/highlander/examine(mob/user) @@ -267,10 +267,8 @@ force = 2 throwforce = 20 //This is never used on mobs since this has a 100% embed chance. throw_speed = 4 - embedded_pain_multiplier = 4 + embedding = list("embedded_pain_multiplier" = 4, "embed_chance" = 100, "embedded_fall_chance" = 0) w_class = WEIGHT_CLASS_SMALL - embed_chance = 100 - embedded_fall_chance = 0 //Hahaha! sharpness = IS_SHARP materials = list(MAT_METAL=500, MAT_GLASS=500) resistance_flags = FIRE_PROOF @@ -454,7 +452,7 @@ name = "liz o' nine tails" desc = "A whip fashioned from the severed tails of lizards." icon_state = "tailwhip" - needs_permit = 0 + item_flags = NONE /obj/item/melee/chainofcommand/tailwhip/kitty name = "cat o' nine tails" diff --git a/code/game/objects/obj_defense.dm b/code/game/objects/obj_defense.dm index c20c01cc42..c4c85bc6a5 100644 --- a/code/game/objects/obj_defense.dm +++ b/code/game/objects/obj_defense.dm @@ -27,7 +27,7 @@ return 0 var/armor_protection = 0 if(damage_flag) - armor_protection = armor[damage_flag] + armor_protection = armor.getRating(damage_flag) if(armor_protection) //Only apply weak-against-armor/hollowpoint effects if there actually IS armor. armor_protection = CLAMP(armor_protection - armour_penetration, 0, 100) return round(damage_amount * (100 - armor_protection)*0.01, 0.1) @@ -178,7 +178,7 @@ GLOBAL_DATUM_INIT(acid_overlay, /mutable_appearance, mutable_appearance('icons/e if(!(resistance_flags & ACID_PROOF)) for(var/armour_value in armor) if(armour_value != "acid" && armour_value != "fire") - armor[armour_value] = max(armor[armour_value] - round(sqrt(acid_level)*0.1), 0) + armor = armor.modifyAllRatings(0 - round(sqrt(acid_level)*0.1)) if(prob(33)) playsound(loc, 'sound/items/welder.ogg', 150, 1) take_damage(min(1 + round(sqrt(acid_level)*0.3), 300), BURN, "acid", 0) @@ -222,13 +222,13 @@ GLOBAL_DATUM_INIT(acid_overlay, /mutable_appearance, mutable_appearance('icons/e /obj/proc/tesla_act(var/power) - being_shocked = TRUE + obj_flags |= BEING_SHOCKED var/power_bounced = power / 2 tesla_zap(src, 3, power_bounced) addtimer(CALLBACK(src, .proc/reset_shocked), 10) /obj/proc/reset_shocked() - being_shocked = FALSE + obj_flags &= ~BEING_SHOCKED //the obj is deconstructed into pieces, whether through careful disassembly or when destroyed. /obj/proc/deconstruct(disassembled = TRUE) diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm index ce4b4d8d79..08df6e9481 100644 --- a/code/game/objects/objs.dm +++ b/code/game/objects/objs.dm @@ -1,57 +1,64 @@ + /obj var/crit_fail = FALSE animate_movement = 2 var/throwforce = 0 - var/in_use = 0 // If we have a user using us, this will be set on. We will check if the user has stopped using us, and thus stop updating and LAGGING EVERYTHING! + var/obj_flags = CAN_BE_HIT + var/set_obj_flags // ONLY FOR MAPPING: Sets flags from a string list, handled in Initialize. Usage: set_obj_flags = "EMAGGED;!CAN_BE_HIT" to set EMAGGED and clear CAN_BE_HIT. var/damtype = BRUTE var/force = 0 - var/list/armor + var/datum/armor/armor var/obj_integrity //defaults to max_integrity var/max_integrity = 500 var/integrity_failure = 0 //0 if we have no special broken behavior var/resistance_flags = NONE // INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ON_FIRE | UNACIDABLE | ACID_PROOF - var/can_be_hit = TRUE //can this be bludgeoned by items? var/acid_level = 0 //how much acid is on that obj - var/being_shocked = FALSE - - var/on_blueprints = FALSE //Are we visible on the station blueprints at roundstart? - var/force_blueprints = FALSE //forces the obj to be on the blueprints, regardless of when it was created. - var/persistence_replacement //have something WAY too amazing to live to the next round? Set a new path here. Overuse of this var will make me upset. - var/unique_rename = FALSE // can you customize the description/name of the thing? var/current_skin //Has the item been reskinned? var/list/unique_reskin //List of options to reskin. - var/dangerous_possession = FALSE //Admin possession yes/no /obj/vv_edit_var(vname, vval) switch(vname) - if("dangerous_possession") - return FALSE + if("obj_flags") + if ((obj_flags & DANGEROUS_POSSESSION) && !(vval & DANGEROUS_POSSESSION)) + return FALSE if("control_object") var/obj/O = vval - if(istype(O) && O.dangerous_possession) + if(istype(O) && (O.obj_flags & DANGEROUS_POSSESSION)) return FALSE ..() /obj/Initialize() . = ..() - if (!armor) - armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0) + if (islist(armor)) + armor = getArmor(arglist(armor)) + else if (!armor) + armor = getArmor() + else if (!istype(armor, /datum/armor)) + stack_trace("Invalid type [armor.type] found in .armor during /obj Initialize()") + if(obj_integrity == null) obj_integrity = max_integrity - if(on_blueprints && isturf(loc)) + if (set_obj_flags) + var/flagslist = splittext(set_obj_flags,";") + var/list/string_to_objflag = GLOB.bitfields["obj_flags"] + for (var/flag in flagslist) + if (findtext(flag,"!",1,2)) + flag = copytext(flag,1-(length(flag))) // Get all but the initial ! + obj_flags &= ~string_to_objflag[flag] + else + obj_flags |= string_to_objflag[flag] + if((obj_flags & ON_BLUEPRINTS) && isturf(loc)) var/turf/T = loc - if(force_blueprints) - T.add_blueprints(src) - else - T.add_blueprints_preround(src) + T.add_blueprints_preround(src) + /obj/Destroy(force=FALSE) if(!ismachinery(src)) @@ -98,7 +105,7 @@ return null /obj/proc/updateUsrDialog() - if(in_use) + if(obj_flags & IN_USE) var/is_in_use = 0 var/list/nearby = viewers(1, src) for(var/mob/M in nearby) @@ -120,11 +127,14 @@ if(H.dna.check_mutation(TK)) is_in_use = 1 src.attack_hand(usr) - in_use = is_in_use + if (is_in_use) + obj_flags |= IN_USE + else + obj_flags &= ~IN_USE /obj/proc/updateDialog() // Check that people are actually using the machine. If not, don't update anymore. - if(in_use) + if(obj_flags & IN_USE) var/list/nearby = viewers(1, src) var/is_in_use = 0 for(var/mob/M in nearby) @@ -134,7 +144,7 @@ var/ai_in_use = AutoUpdateAI(src) if(!ai_in_use && !is_in_use) - in_use = 0 + obj_flags &= ~IN_USE /obj/attack_ghost(mob/user) @@ -162,7 +172,7 @@ unset_machine() src.machine = O if(istype(O)) - O.in_use = 1 + O.obj_flags |= IN_USE /obj/item/proc/updateSelfDialog() var/mob/M = src.loc @@ -205,10 +215,11 @@ . = ..() .["Delete all of type"] = "?_src_=vars;[HrefToken()];delall=[REF(src)]" .["Osay"] = "?_src_=vars;[HrefToken()];osay[REF(src)]" + .["Modify armor values"] = "?_src_=vars;[HrefToken()];modarmor=[REF(src)]" /obj/examine(mob/user) ..() - if(unique_rename) + if(obj_flags & UNIQUE_RENAME) to_chat(user, "Use a pen on it to rename it or change its description.") if(unique_reskin && !current_skin) to_chat(user, "Alt-click it to reskin it.") diff --git a/code/game/objects/structures/barsigns.dm b/code/game/objects/structures/barsigns.dm index b3746b7308..c9c9e8c931 100644 --- a/code/game/objects/structures/barsigns.dm +++ b/code/game/objects/structures/barsigns.dm @@ -83,7 +83,7 @@ to_chat(user, "You close the maintenance panel.") if(!broken && !emagged) set_sign(pick(barsigns)) - else if(emagged) + else if(obj_flags & EMAGGED) set_sign(new /datum/barsign/hiddensigns/syndibarsign) else set_sign(new /datum/barsign/hiddensigns/empbarsign) @@ -91,7 +91,7 @@ else if(istype(I, /obj/item/stack/cable_coil) && panel_open) var/obj/item/stack/cable_coil/C = I - if(emagged) //Emagged, not broken by EMP + if(obj_flags & EMAGGED) //Emagged, not broken by EMP to_chat(user, "Sign has been damaged beyond repair!") return else if(!broken) @@ -118,7 +118,7 @@ if(broken || emagged) to_chat(user, "Nothing interesting happens!") return - emagged = TRUE + obj_flags |= EMAGGED to_chat(user, "You emag the barsign. Takeover in progress...") sleep(10 SECONDS) set_sign(new /datum/barsign/hiddensigns/syndibarsign) diff --git a/code/game/objects/structures/bedsheet_bin.dm b/code/game/objects/structures/bedsheet_bin.dm index e97aedaf98..e59780a54a 100644 --- a/code/game/objects/structures/bedsheet_bin.dm +++ b/code/game/objects/structures/bedsheet_bin.dm @@ -223,6 +223,14 @@ LINEN BINS item_color = "ian" dream_messages = list("a dog", "a corgi", "woof", "bark", "arf") +/obj/item/bedsheet/cosmos + name = "cosmic space bedsheet" + desc = "Made from the dreams of those who wonder at the stars." + icon_state = "sheetcosmos" + item_color = "cosmos" + dream_messages = list("the infinite cosmos", "Hans Zimmer music", "a flight through space", "the galaxy", "being fabulous", "shooting stars") + light_power = 2 + light_range = 1.4 /obj/item/bedsheet/random icon_state = "random_bedsheet" diff --git a/code/game/objects/structures/headpike.dm b/code/game/objects/structures/headpike.dm new file mode 100644 index 0000000000..eafae96b8e --- /dev/null +++ b/code/game/objects/structures/headpike.dm @@ -0,0 +1,47 @@ +/obj/structure/headpike + name = "spooky head on a spear" + desc = "When you really want to send a message." + icon = 'icons/obj/structures.dmi' + icon_state = "headpike" + density = FALSE + anchored = TRUE + var/bonespear = FALSE + var/obj/item/twohanded/spear/spear + var/obj/item/bodypart/head/victim + +/obj/structure/headpike/bone //for bone spears + icon_state = "headpike-bone" + bonespear = TRUE + + +/obj/structure/headpike/CheckParts(list/parts_list) + ..() + victim = locate(/obj/item/bodypart/head) in parts_list + name = "[victim.name] on a spear" + update_icon() + if(bonespear) + spear = locate(/obj/item/twohanded/bonespear) in parts_list + else + spear = locate(/obj/item/twohanded/spear) in parts_list + +/obj/structure/headpike/Initialize() + . = ..() + pixel_x = rand(-8, 8) + +/obj/structure/headpike/update_icon() + ..() + var/obj/item/bodypart/head/H = locate() in contents + var/mutable_appearance/MA = new() + if(H) + MA.copy_overlays(H) + MA.pixel_y = 12 + add_overlay(H) + +/obj/structure/headpike/attack_hand(mob/user) + ..() + to_chat(user, "You take down [src].") + victim.forceMove(drop_location()) + victim = null + spear.forceMove(drop_location()) + spear = null + qdel(src) \ No newline at end of file diff --git a/code/game/objects/structures/petrified_statue.dm b/code/game/objects/structures/petrified_statue.dm index 02b32c9f80..815dd9de6d 100644 --- a/code/game/objects/structures/petrified_statue.dm +++ b/code/game/objects/structures/petrified_statue.dm @@ -17,7 +17,7 @@ L.buckled.unbuckle_mob(L,force=1) L.visible_message("[L]'s skin rapidly turns to marble!", "Your body freezes up! Can't... move... can't... think...") L.forceMove(src) - L.add_disability(DISABILITY_MUTE, STATUE_MUTE) + L.add_trait(TRAIT_MUTE, STATUE_MUTE) L.faction += "mimic" //Stops mimics from instaqdeling people in statues L.status_flags |= GODMODE obj_integrity = L.health + 100 //stoning damaged mobs will result in easier to shatter statues @@ -59,7 +59,7 @@ if(petrified_mob) petrified_mob.status_flags &= ~GODMODE petrified_mob.forceMove(loc) - petrified_mob.remove_disability(DISABILITY_MUTE, STATUE_MUTE) + petrified_mob.remove_trait(TRAIT_MUTE, STATUE_MUTE) petrified_mob.take_overall_damage((petrified_mob.health - obj_integrity + 100)) //any new damage the statue incurred is transfered to the mob petrified_mob.faction -= "mimic" petrified_mob = null diff --git a/code/game/objects/structures/signs/_signs.dm b/code/game/objects/structures/signs/_signs.dm new file mode 100644 index 0000000000..382858dd53 --- /dev/null +++ b/code/game/objects/structures/signs/_signs.dm @@ -0,0 +1,123 @@ +/obj/structure/sign + icon = 'icons/obj/decals.dmi' + anchored = TRUE + opacity = 0 + density = FALSE + layer = SIGN_LAYER + max_integrity = 100 + armor = list(melee = 50, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 50) + var/buildable_sign = 1 //unwrenchable and modifiable + +/obj/structure/sign/ComponentInitialize() + . = ..() + AddComponent(/datum/component/rad_insulation, RAD_NO_INSULATION) // Since this is on a wall if it becomes irradiated it will smuggle the radiation past the wall + +/obj/structure/sign/basic + name = "blank sign" + desc = "How can signs be real if our eyes aren't real?" + icon_state = "backing" + +/obj/structure/sign/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0) + switch(damage_type) + if(BRUTE) + if(damage_amount) + playsound(src.loc, 'sound/weapons/slash.ogg', 80, 1) + else + playsound(loc, 'sound/weapons/tap.ogg', 50, 1) + if(BURN) + playsound(loc, 'sound/items/welder.ogg', 80, 1) + +/obj/structure/sign/attackby(obj/item/O, mob/user, params) + if(istype(O, /obj/item/wrench) && buildable_sign) + user.visible_message("[user] starts removing [src]...", \ + "You start unfastening [src].") + playsound(src, O.usesound, 50, 1) + if(!do_after(user, 30*O.toolspeed, target = src)) + return + playsound(src, 'sound/items/deconstruct.ogg', 50, 1) + user.visible_message("[user] unfastens [src].", \ + "You unfasten [src].") + var/obj/item/sign_backing/SB = new (get_turf(user)) + SB.icon_state = icon_state + SB.sign_path = type + qdel(src) + else if(istype(O, /obj/item/pen) && buildable_sign) + var/list/sign_types = list("Secure Area", "Biohazard", "High Voltage", "Radiation", "Hard Vacuum Ahead", "Disposal: Leads To Space", "Danger: Fire", "No Smoking", "Medbay", "Science", "Chemistry", \ + "Hydroponics", "Xenobiology") + var/obj/structure/sign/sign_type + switch(input(user, "Select a sign type.", "Sign Customization") as null|anything in sign_types) + if("Blank") + sign_type = /obj/structure/sign/basic + if("Secure Area") + sign_type = /obj/structure/sign/warning/securearea + if("Biohazard") + sign_type = /obj/structure/sign/warning/biohazard + if("High Voltage") + sign_type = /obj/structure/sign/warning/electricshock + if("Radiation") + sign_type = /obj/structure/sign/warning/radiation + if("Hard Vacuum Ahead") + sign_type = /obj/structure/sign/warning/vacuum + if("Disposal: Leads To Space") + sign_type = /obj/structure/sign/warning/deathsposal + if("Danger: Fire") + sign_type = /obj/structure/sign/warning/fire + if("No Smoking") + sign_type = /obj/structure/sign/warning/nosmoking/circle + if("Medbay") + sign_type = /obj/structure/sign/departments/medbay/alt + if("Science") + sign_type = /obj/structure/sign/departments/science + if("Chemistry") + sign_type = /obj/structure/sign/departments/chemistry + if("Hydroponics") + sign_type = /obj/structure/sign/departments/botany + if("Xenobiology") + sign_type = /obj/structure/sign/departments/xenobio + + //Make sure user is adjacent still + if(!Adjacent(user)) + return + + if(!sign_type) + return + + //It's import to clone the pixel layout information + //Otherwise signs revert to being on the turf and + //move jarringly + var/obj/structure/sign/newsign = new sign_type(get_turf(src)) + newsign.pixel_x = pixel_x + newsign.pixel_y = pixel_y + qdel(src) + else + return ..() + +/obj/item/sign_backing + name = "sign backing" + desc = "A sign with adhesive backing." + icon = 'icons/obj/decals.dmi' + icon_state = "backing" + w_class = WEIGHT_CLASS_NORMAL + resistance_flags = FLAMMABLE + var/sign_path = /obj/structure/sign/basic //the type of sign that will be created when placed on a turf + +/obj/item/sign_backing/afterattack(atom/target, mob/user, proximity) + if(isturf(target) && proximity) + var/turf/T = target + user.visible_message("[user] fastens [src] to [T].", \ + "You attach the sign to [T].") + playsound(T, 'sound/items/deconstruct.ogg', 50, 1) + new sign_path(T) + qdel(src) + else + return ..() + +/obj/structure/sign/nanotrasen + name = "\improper Nanotrasen Logo" + desc = "A sign with the Nanotrasen Logo on it. Glory to Nanotrasen!" + icon_state = "nanotrasen" + +/obj/structure/sign/logo + name = "nanotrasen logo" + desc = "The Nanotrasen corporate logo." + icon_state = "nanotrasen_sign1" diff --git a/code/game/objects/structures/signs/signs_departments.dm b/code/game/objects/structures/signs/signs_departments.dm new file mode 100644 index 0000000000..12932bbab6 --- /dev/null +++ b/code/game/objects/structures/signs/signs_departments.dm @@ -0,0 +1,69 @@ +//departmental signs + +/obj/structure/sign/departments/examroom + name = "\improper EXAM ROOM" + desc = "A guidance sign which reads 'EXAM ROOM'." + icon_state = "examroom" + +/obj/structure/sign/departments/science //These 3 have multiple types, just var-edit the icon_state to whatever one you want on the map + name = "\improper SCIENCE" + desc = "A sign labelling an area where research and science is performed." + icon_state = "science1" + +/obj/structure/sign/departments/chemistry + name = "\improper CHEMISTRY" + desc = "A sign labelling an area containing chemical equipment." + icon_state = "chemistry1" + +/obj/structure/sign/departments/botany + name = "\improper HYDROPONICS" + desc = "A sign labelling an area as a place where plants are grown." + icon_state = "hydro1" + +/obj/structure/sign/departments/xenobio + name = "\improper XENOBIOLOGY" + desc = "A sign labelling an area as a place where xenobiological entities are researched." + icon_state = "xenobio" + +/obj/structure/sign/departments/evac + name = "\improper EVACUATION" + desc = "A sign labelling an area where evacuation procedures take place." + icon_state = "evac" + +/obj/structure/sign/departments/custodian + name = "\improper CUSTODIAN" + desc = "A sign labelling an area where the custodian works." + icon_state = "custodian" + +/obj/structure/sign/departments/engineering + name = "\improper ENGINEERING" + desc = "A sign labelling an area where engineers work." + icon_state = "engine" + +/obj/structure/sign/departments/cargo + name = "\improper CARGO" + desc = "A sign labelling an area where cargo ships dock." + icon_state = "cargo" + +/obj/structure/sign/departments/security + name = "\improper SECURITY" + desc = "A sign labelling an area where the law is law." + icon_state = "security" + +/obj/structure/sign/departments/holy + name = "\improper HOLY" + desc = "A sign labelling a religious area." + icon_state = "holy" + +/obj/structure/sign/departments/restroom + name = "\improper RESTROOM" + desc = "A sign labelling a restroom." + icon_state = "restroom" + +/obj/structure/sign/departments/medbay + name = "\improper MEDBAY" + desc = "The Intergalactic symbol of Medical institutions. You'll probably get help here." + icon_state = "bluecross" + +/obj/structure/sign/departments/medbay/alt + icon_state = "bluecross2" diff --git a/code/game/objects/structures/signs/signs_maps.dm b/code/game/objects/structures/signs/signs_maps.dm new file mode 100644 index 0000000000..8468516502 --- /dev/null +++ b/code/game/objects/structures/signs/signs_maps.dm @@ -0,0 +1,47 @@ +//map and direction signs + +/obj/structure/sign/map + name = "station map" + desc = "A framed picture of the station." + max_integrity = 500 + +/obj/structure/sign/map/left + icon_state = "map-left" + +/obj/structure/sign/map/right + icon_state = "map-right" + +/obj/structure/sign/directions/science + name = "science department" + desc = "A direction sign, pointing out which way the Science department is." + icon_state = "direction_sci" + +/obj/structure/sign/directions/engineering + name = "engineering department" + desc = "A direction sign, pointing out which way the Engineering department is." + icon_state = "direction_eng" + +/obj/structure/sign/directions/security + name = "security department" + desc = "A direction sign, pointing out which way the Security department is." + icon_state = "direction_sec" + +/obj/structure/sign/directions/medical + name = "medical bay" + desc = "A direction sign, pointing out which way the Medical Bay is." + icon_state = "direction_med" + +/obj/structure/sign/directions/evac + name = "escape arm" + desc = "A direction sign, pointing out which way the escape shuttle dock is." + icon_state = "direction_evac" + +/obj/structure/sign/directions/supply + name = "cargo bay" + desc = "A direction sign, pointing out which way the Cargo Bay is." + icon_state = "direction_supply" + +/obj/structure/sign/directions/command + name = "command department" + desc = "A direction sign, pointing out which way the Command department is." + icon_state = "direction_bridge" diff --git a/code/game/objects/structures/signs/signs_plaques.dm b/code/game/objects/structures/signs/signs_plaques.dm new file mode 100644 index 0000000000..b397bbf531 --- /dev/null +++ b/code/game/objects/structures/signs/signs_plaques.dm @@ -0,0 +1,43 @@ +//plaques and memorials + +/obj/structure/sign/plaques + name = "plaque" + desc = "A plaque commemorating an event." + icon_state = "atmosplaque" + +/obj/structure/sign/plaques/atmos + name = "\improper FEA Atmospherics Division plaque" + desc = "This plaque commemorates the fall of the Atmos FEA division. For all the charred, dizzy, and brittle men who have died in its hands." + +/obj/structure/sign/plaques/thunderdome + name = "Thunderdome Plaque" + desc = "This plaque commemorates those who have fallen in glorious combat. For all the charred, dizzy, and beaten men who have died in its hands." + +/obj/structure/sign/plaques/golden + name = "The Most Robust Men Award for Robustness" + desc = "To be Robust is not an action or a way of life, but a mental state. Only those with the force of Will strong enough to act during a crisis, saving friend from foe, are truly Robust. Stay Robust my friends." + icon_state = "goldenplaque" + +/obj/structure/sign/plaques/golden/captain + name = "The Most Robust Captain Award for Robustness" + +/obj/structure/sign/plaques/kiddie + name = "\improper AI developers plaque" + desc = "Next to the extremely long list of names and job titles, there is a drawing of a little child. The child appears to be retarded. Beneath the image, someone has scratched the word \"PACKETS\"." + icon_state = "kiddieplaque" + +/obj/structure/sign/plaques/kiddie/badger + name = "\improper Remembrance Plaque" + desc = "A plaque commemorating the fallen, may they rest in peace, forever asleep amongst the stars. Someone has drawn a picture of a crying badger at the bottom." + +/obj/structure/sign/plaques/kiddie/library + name = "Library Rules Sign" + desc = "A long list of rules to be followed when in the library, extolling the virtues of being quiet at all times and threatening those who would dare eat hot food inside." + +/obj/structure/sign/plaques/kiddie/perfect_man + name = "\improper 'Perfect Man' sign" + desc = "A guide to the exhibit, explaining how recent developments in mindshield implant and cloning technologies by Nanotrasen Corporation have led to the development and the effective immortality of the 'perfect man', the loyal Nanotrasen Employee." + +/obj/structure/sign/plaques/kiddie/perfect_drone + name = "\improper 'Perfect Drone' sign" + desc = "A guide to the drone shell dispenser, detailing the constructive and destructive applications of modern repair drones, as well as the development of the incorruptible cyborg servants of tomorrow, available today." diff --git a/code/game/objects/structures/signs/signs_warning.dm b/code/game/objects/structures/signs/signs_warning.dm new file mode 100644 index 0000000000..f735ed7bc9 --- /dev/null +++ b/code/game/objects/structures/signs/signs_warning.dm @@ -0,0 +1,75 @@ +/obj/structure/sign/warning + name = "\improper WARNING" + desc = "A warning sign." + icon_state = "securearea" + +/obj/structure/sign/warning/securearea + name = "\improper SECURE AREA" + desc = "A warning sign which reads 'SECURE AREA'." + +/obj/structure/sign/warning/docking + name = "\improper KEEP CLEAR: DOCKING AREA" + desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'." + +/obj/structure/sign/warning/biohazard + name = "\improper BIOHAZARD" + desc = "A warning sign which reads 'BIOHAZARD'." + icon_state = "bio" + +/obj/structure/sign/warning/electricshock + name = "\improper HIGH VOLTAGE" + desc = "A warning sign which reads 'HIGH VOLTAGE'." + icon_state = "shock" + +/obj/structure/sign/warning/vacuum + name = "\improper HARD VACUUM AHEAD" + desc = "A warning sign which reads 'HARD VACUUM AHEAD'." + icon_state = "space" + +/obj/structure/sign/warning/vacuum/external + name = "\improper EXTERNAL AIRLOCK" + desc = "A warning sign which reads 'EXTERNAL AIRLOCK'." + layer = MOB_LAYER + +/obj/structure/sign/warning/deathsposal + name = "\improper DISPOSAL: LEADS TO SPACE" + desc = "A warning sign which reads 'DISPOSAL: LEADS TO SPACE'." + icon_state = "deathsposal" + +/obj/structure/sign/warning/pods + name = "\improper ESCAPE PODS" + desc = "A warning sign which reads 'ESCAPE PODS'." + icon_state = "pods" + +/obj/structure/sign/warning/fire + name = "\improper DANGER: FIRE" + desc = "A warning sign which reads 'DANGER: FIRE'." + icon_state = "fire" + +/obj/structure/sign/warning/nosmoking + name = "\improper NO SMOKING" + desc = "A warning sign which reads 'NO SMOKING'." + icon_state = "nosmoking2" + +/obj/structure/sign/warning/nosmoking/circle + icon_state = "nosmoking" + +/obj/structure/sign/warning/radiation + name = "\improper HAZARDOUS RADIATION" + desc = "A warning sign alerting the user of potential radiation hazards." + icon_state = "radiation" + +/obj/structure/sign/warning/radiation/rad_area + name = "\improper RADIOACTIVE AREA" + desc = "A warning sign which reads 'RADIOACTIVE AREA'." + +/obj/structure/sign/warning/xeno_mining + name = "\improper DANGEROUS ALIEN LIFE" + desc = "A sign that warns would-be travellers of hostile alien life in the vicinity." + icon = 'icons/obj/mining.dmi' + icon_state = "xeno_warning" + +/obj/structure/sign/warning/enginesafety + name = "\improper ENGINEERING SAFETY" + desc = "A sign detailing the various safety protocols when working on-site to ensure a safe shift." + icon_state = "safety" diff --git a/code/game/turfs/simulated/floor/plasteel_floor.dm b/code/game/turfs/simulated/floor/plasteel_floor.dm index 6197e67848..06a257686b 100644 --- a/code/game/turfs/simulated/floor/plasteel_floor.dm +++ b/code/game/turfs/simulated/floor/plasteel_floor.dm @@ -340,6 +340,8 @@ icon_state = "vault" /turf/open/floor/plasteel/vault/corner icon_state = "vaultcorner" +/turf/open/floor/plasteel/vault/airless + initial_gas_mix = "TEMP=2.7" /turf/open/floor/plasteel/vault/telecomms initial_gas_mix = "n2=100;TEMP=80" /turf/open/floor/plasteel/vault/telecomms/mainframe diff --git a/code/game/turfs/simulated/lava.dm b/code/game/turfs/simulated/lava.dm index 0e3930aaf2..a40203beba 100644 --- a/code/game/turfs/simulated/lava.dm +++ b/code/game/turfs/simulated/lava.dm @@ -100,8 +100,8 @@ O.resistance_flags |= FLAMMABLE //Even fireproof things burn up in lava if(O.resistance_flags & FIRE_PROOF) O.resistance_flags &= ~FIRE_PROOF - if(O.armor["fire"] > 50) //obj with 100% fire armor still get slowly burned away. - O.armor["fire"] = 50 + if(O.armor.fire > 50) //obj with 100% fire armor still get slowly burned away. + O.armor = O.armor.setRating(fire = 50) O.fire_act(10000, 1000) else if (isliving(thing)) diff --git a/code/game/turfs/simulated/wall/mineral_walls.dm b/code/game/turfs/simulated/wall/mineral_walls.dm index c99da926b7..dc474d449d 100644 --- a/code/game/turfs/simulated/wall/mineral_walls.dm +++ b/code/game/turfs/simulated/wall/mineral_walls.dm @@ -250,7 +250,7 @@ /turf/closed/wall/mineral/plastitanium/overspace icon_state = "map-overspace" fixed_underlay = list("space"=1) - + /turf/closed/wall/mineral/plastitanium/explosive/ex_act(severity) var/datum/explosion/acted_explosion = null for(var/datum/explosion/E in GLOB.explosions) diff --git a/code/game/world.dm b/code/game/world.dm index 8eca2affc2..dde599db78 100644 --- a/code/game/world.dm +++ b/code/game/world.dm @@ -40,13 +40,27 @@ GLOBAL_PROTECT(security_mode) GLOB.restart_counter = text2num(trim(file2text(RESTART_COUNTER_PATH))) fdel(RESTART_COUNTER_PATH) - if("no-init" in params) + if(NO_INIT_PARAMETER in params) return cit_initialize() Master.Initialize(10, FALSE) + if(TEST_RUN_PARAMETER in params) + HandleTestRun() + +/world/proc/HandleTestRun() + //trigger things to run the whole process + Master.sleep_offline_after_initializations = FALSE + SSticker.start_immediately = TRUE + CONFIG_SET(number/round_end_countdown, 0) +#ifdef UNIT_TESTS + SSticker.OnRoundstart(CALLBACK(GLOBAL_PROC, /proc/RunUnitTests)) +#else + SSticker.force_ending = TRUE +#endif + /world/proc/SetupExternalRSC() #if (PRELOAD_RSC == 0) GLOB.external_rsc_urls = world.file2list("[global.config.directory]/external_rsc_urls.txt","\n") @@ -59,11 +73,15 @@ GLOBAL_PROTECT(security_mode) #endif /world/proc/SetupLogs() - GLOB.log_directory = "data/logs/[time2text(world.realtime, "YYYY/MM/DD")]/round-" - if(GLOB.round_id) - GLOB.log_directory += "[GLOB.round_id]" + var/override_dir = params[OVERRIDE_LOG_DIRECTORY_PARAMETER] + if(!override_dir) + GLOB.log_directory = "data/logs/[time2text(world.realtime, "YYYY/MM/DD")]/round-" + if(GLOB.round_id) + GLOB.log_directory += "[GLOB.round_id]" + else + GLOB.log_directory += "[replacetext(time_stamp(), ":", ".")]" else - GLOB.log_directory += "[replacetext(time_stamp(), ":", ".")]" + GLOB.log_directory = "data/logs/[override_dir]" GLOB.world_game_log = file("[GLOB.log_directory]/game.log") GLOB.world_attack_log = file("[GLOB.log_directory]/attack.log") GLOB.world_runtime_log = file("[GLOB.log_directory]/runtime.log") @@ -72,6 +90,10 @@ GLOBAL_PROTECT(security_mode) GLOB.world_pda_log = file("[GLOB.log_directory]/pda.log") GLOB.sql_error_log = file("[GLOB.log_directory]/sql.log") GLOB.manifest_log = file("[GLOB.log_directory]/manifest.log") +#ifdef UNIT_TESTS + GLOB.test_log = file("[GLOB.log_directory]/tests.log") + WRITE_FILE(GLOB.test_log, "\n\nStarting up round ID [GLOB.round_id]. [time_stamp()]\n---------------------") +#endif WRITE_FILE(GLOB.world_game_log, "\n\nStarting up round ID [GLOB.round_id]. [time_stamp()]\n---------------------") WRITE_FILE(GLOB.world_attack_log, "\n\nStarting up round ID [GLOB.round_id]. [time_stamp()]\n---------------------") WRITE_FILE(GLOB.world_runtime_log, "\n\nStarting up round ID [GLOB.round_id]. [time_stamp()]\n---------------------") @@ -135,6 +157,27 @@ GLOBAL_PROTECT(security_mode) for(var/client/C in GLOB.clients) C.AnnouncePR(final_composed) +/world/proc/FinishTestRun() + set waitfor = FALSE + var/list/fail_reasons + if(GLOB) + if(GLOB.total_runtimes != 0) + fail_reasons = list("Total runtimes: [GLOB.total_runtimes]") +#ifdef UNIT_TESTS + if(GLOB.failed_any_test) + LAZYADD(fail_reasons, "Unit Tests failed!") +#endif + if(!GLOB.log_directory) + LAZYADD(fail_reasons, "Missing GLOB.log_directory!") + else + fail_reasons = list("Missing GLOB!") + if(!fail_reasons) + text2file("Success!", "[GLOB.log_directory]/clean_run.lk") + else + log_world("Test run failed!\n[fail_reasons.Join("\n")]") + sleep(0) //yes, 0, this'll let Reboot finish and prevent byond memes + qdel(src) //shut it down + /world/Reboot(reason = 0, fast_track = FALSE) SERVER_TOOLS_ON_REBOOT if (reason || fast_track) //special reboot, do none of the normal stuff @@ -146,6 +189,10 @@ GLOBAL_PROTECT(security_mode) to_chat(world, "Rebooting world...") Master.Shutdown() //run SS shutdowns + if(TEST_RUN_PARAMETER in params) + FinishTestRun() + return + if(SERVER_TOOLS_PRESENT) var/do_hard_reboot // check the hard reboot counter @@ -225,3 +272,8 @@ GLOBAL_PROTECT(security_mode) hub_password = "kMZy3U5jJHSiBQjr" else hub_password = "SORRYNOPASSWORD" + +/world/proc/incrementMaxZ() + maxz++ + SSmobs.MaxZChanged() + SSidlenpcpool.MaxZChanged() diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index 7f30ef9fe3..fc4e04f97e 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -228,13 +228,13 @@ dat+="
Channel Name: [src.admincaster_feed_channel.channel_name]
" dat+="Channel Author: [src.admin_signature]
" dat+="Will Accept Public Feeds: [(src.admincaster_feed_channel.locked) ? ("NO") : ("YES")]

" - dat+="
Submit

Cancel
" + dat+="
Submit

Cancel
" if(3) dat+="Creating new Feed Message..." dat+="
Receiving Channel: [src.admincaster_feed_channel.channel_name]
" //MARK dat+="Message Author: [src.admin_signature]
" dat+="Message Body: [src.admincaster_feed_message.returnBody(-1)]
" - dat+="
Submit

Cancel
" + dat+="
Submit

Cancel
" if(4) dat+="Feed story successfully submitted to [src.admincaster_feed_channel.channel_name].

" dat+="
Return
" @@ -315,7 +315,7 @@ else for(var/datum/newscaster/feed_message/MESSAGE in src.admincaster_feed_channel.messages) dat+="-[MESSAGE.returnBody(-1)]
\[Story by [MESSAGE.returnAuthor(-1)]\]
" - dat+="[(MESSAGE.bodyCensor) ? ("Undo story censorship") : ("Censor story")] - [(MESSAGE.authorCensor) ? ("Undo Author Censorship") : ("Censor message Author")]
" + dat+="[(MESSAGE.bodyCensor) ? ("Undo story censorship") : ("Censor story")] - [(MESSAGE.authorCensor) ? ("Undo Author Censorship") : ("Censor message Author")]
" dat+="[MESSAGE.comments.len] comment[MESSAGE.comments.len > 1 ? "s" : ""]: [MESSAGE.locked ? "Unlock" : "Lock"]
" for(var/datum/newscaster/feed_comment/comment in MESSAGE.comments) dat+="[comment.body] X
[comment.author] [comment.time_stamp]
" diff --git a/code/modules/admin/verbs/adminsay.dm b/code/modules/admin/verbs/adminsay.dm index a24d4165a4..f74fcbb017 100644 --- a/code/modules/admin/verbs/adminsay.dm +++ b/code/modules/admin/verbs/adminsay.dm @@ -20,3 +20,6 @@ SSblackbox.record_feedback("tally", "admin_verb", 1, "Asay") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! +/client/proc/get_admin_say() + var/msg = input(src, null, "asay \"text\"") as text + cmd_admin_say(msg) diff --git a/code/modules/admin/verbs/massmodvar.dm b/code/modules/admin/verbs/massmodvar.dm index db1150fb72..75050b5e62 100644 --- a/code/modules/admin/verbs/massmodvar.dm +++ b/code/modules/admin/verbs/massmodvar.dm @@ -53,7 +53,7 @@ if (prompt != "Continue") return - default = vv_get_class(var_value) + default = vv_get_class(variable, var_value) if(isnull(default)) to_chat(src, "Unable to determine variable type.") @@ -263,4 +263,3 @@ if (typecache[thing.type]) . += thing CHECK_TICK - diff --git a/code/modules/admin/verbs/modifyvariables.dm b/code/modules/admin/verbs/modifyvariables.dm index da448b8eca..4869319cfa 100644 --- a/code/modules/admin/verbs/modifyvariables.dm +++ b/code/modules/admin/verbs/modifyvariables.dm @@ -8,12 +8,15 @@ GLOBAL_LIST_INIT(VVpixelmovement, list("step_x", "step_y", "bound_height", "boun GLOBAL_PROTECT(VVpixelmovement) -/client/proc/vv_get_class(var/var_value) +/client/proc/vv_get_class(var/var_name, var/var_value) if(isnull(var_value)) . = VV_NULL else if (isnum(var_value)) - . = VV_NUM + if (var_name in GLOB.bitfields) + . = VV_BITFIELD + else + . = VV_NUM else if (istext(var_value)) if (findtext(var_value, "\n")) @@ -52,7 +55,7 @@ GLOBAL_PROTECT(VVpixelmovement) else . = VV_NULL -/client/proc/vv_get_value(class, default_class, current_value, list/restricted_classes, list/extra_classes, list/classes) +/client/proc/vv_get_value(class, default_class, current_value, list/restricted_classes, list/extra_classes, list/classes, var_name) . = list("class" = class, "value" = null) if (!class) if (!classes) @@ -109,6 +112,11 @@ GLOBAL_PROTECT(VVpixelmovement) .["class"] = null return + if (VV_BITFIELD) + .["value"] = input_bitfield(usr, "Editing bitfield: [var_name]", var_name, current_value) + if (.["value"] == null) + .["class"] = null + return if (VV_ATOM_TYPE) .["value"] = pick_closest_path(FALSE) @@ -436,7 +444,7 @@ GLOBAL_PROTECT(VVpixelmovement) else variable = L[index] - default = vv_get_class(variable) + default = vv_get_class(objectvar, variable) to_chat(src, "Variable appears to be [uppertext(default)].") @@ -548,6 +556,10 @@ GLOBAL_PROTECT(VVpixelmovement) if(variable in GLOB.VVicon_edit_lock) if(!check_rights(R_FUN|R_DEBUG)) return + if(istype(O, /datum/armor)) + var/prompt = alert(src, "Editing this var changes this value on potentially thousands of items that share the same combination of armor values. If you want to edit the armor of just one item, use the \"Modify armor values\" dropdown item", "DANGER", "ABORT ", "Continue", " ABORT") + if (prompt != "Continue") + return if(variable in GLOB.VVpixelmovement) if(!check_rights(R_DEBUG)) return @@ -556,7 +568,7 @@ GLOBAL_PROTECT(VVpixelmovement) return - var/default = vv_get_class(var_value) + var/default = vv_get_class(variable, var_value) if(isnull(default)) to_chat(src, "Unable to determine variable type.") @@ -585,7 +597,7 @@ GLOBAL_PROTECT(VVpixelmovement) default = VV_MESSAGE class = default - var/list/value = vv_get_value(class, default, var_value, extra_classes = list(VV_LIST)) + var/list/value = vv_get_value(class, default, var_value, extra_classes = list(VV_LIST), var_name = variable) class = value["class"] if (!class) diff --git a/code/modules/admin/verbs/possess.dm b/code/modules/admin/verbs/possess.dm index a9b5093e99..b92e9901e0 100644 --- a/code/modules/admin/verbs/possess.dm +++ b/code/modules/admin/verbs/possess.dm @@ -2,7 +2,7 @@ set name = "Possess Obj" set category = "Object" - if(O.dangerous_possession && CONFIG_GET(flag/forbid_singulo_possession)) + if((O.obj_flags & DANGEROUS_POSSESSION) && CONFIG_GET(flag/forbid_singulo_possession)) to_chat(usr, "[O] is too powerful for you to possess.") return diff --git a/code/modules/antagonists/_common/antag_datum.dm b/code/modules/antagonists/_common/antag_datum.dm new file mode 100644 index 0000000000..7d090bfd63 --- /dev/null +++ b/code/modules/antagonists/_common/antag_datum.dm @@ -0,0 +1,238 @@ +GLOBAL_LIST_EMPTY(antagonists) + +/datum/antagonist + var/name = "Antagonist" + var/roundend_category = "other antagonists" //Section of roundend report, datums with same category will be displayed together, also default header for the section + var/show_in_roundend = TRUE //Set to false to hide the antagonists from roundend report + var/datum/mind/owner //Mind that owns this datum + var/silent = FALSE //Silent will prevent the gain/lose texts to show + var/can_coexist_with_others = TRUE //Whether or not the person will be able to have more than one datum + var/list/typecache_datum_blacklist = list() //List of datums this type can't coexist with + var/delete_on_mind_deletion = TRUE + var/job_rank + var/replace_banned = TRUE //Should replace jobbaned player with ghosts if granted. + var/list/objectives = list() + var/antag_memory = ""//These will be removed with antag datum + + //Antag panel properties + var/show_in_antagpanel = TRUE //This will hide adding this antag type in antag panel, use only for internal subtypes that shouldn't be added directly but still show if possessed by mind + var/antagpanel_category = "Uncategorized" //Antagpanel will display these together, REQUIRED + +/datum/antagonist/New() + GLOB.antagonists += src + typecache_datum_blacklist = typecacheof(typecache_datum_blacklist) + +/datum/antagonist/Destroy() + GLOB.antagonists -= src + if(owner) + LAZYREMOVE(owner.antag_datums, src) + owner = null + return ..() + +/datum/antagonist/proc/can_be_owned(datum/mind/new_owner) + . = TRUE + var/datum/mind/tested = new_owner || owner + if(tested.has_antag_datum(type)) + return FALSE + for(var/i in tested.antag_datums) + var/datum/antagonist/A = i + if(is_type_in_typecache(src, A.typecache_datum_blacklist)) + return FALSE + +//This will be called in add_antag_datum before owner assignment. +//Should return antag datum without owner. +/datum/antagonist/proc/specialization(datum/mind/new_owner) + return src + +/datum/antagonist/proc/on_body_transfer(mob/living/old_body, mob/living/new_body) + remove_innate_effects(old_body) + apply_innate_effects(new_body) + +//This handles the application of antag huds/special abilities +/datum/antagonist/proc/apply_innate_effects(mob/living/mob_override) + return + +//This handles the removal of antag huds/special abilities +/datum/antagonist/proc/remove_innate_effects(mob/living/mob_override) + return + +//Assign default team and creates one for one of a kind team antagonists +/datum/antagonist/proc/create_team(datum/team/team) + return + +//Proc called when the datum is given to a mind. +/datum/antagonist/proc/on_gain() + if(owner && owner.current) + if(!silent) + greet() + apply_innate_effects() + if(is_banned(owner.current) && replace_banned) + replace_banned_player() + +/datum/antagonist/proc/is_banned(mob/M) + if(!M) + return FALSE + . = (jobban_isbanned(M,"Syndicate") || (job_rank && jobban_isbanned(M,job_rank))) + +/datum/antagonist/proc/replace_banned_player() + set waitfor = FALSE + + var/list/mob/dead/observer/candidates = pollCandidatesForMob("Do you want to play as a [name]?", "[name]", null, job_rank, 50, owner.current) + var/mob/dead/observer/theghost = null + if(candidates.len) + theghost = pick(candidates) + to_chat(owner, "Your mob has been taken over by a ghost! Appeal your job ban if you want to avoid this in the future!") + message_admins("[key_name_admin(theghost)] has taken control of ([key_name_admin(owner.current)]) to replace a jobbaned player.") + owner.current.ghostize(0) + owner.current.key = theghost.key + +/datum/antagonist/proc/on_removal() + remove_innate_effects() + if(owner) + LAZYREMOVE(owner.antag_datums, src) + if(!silent && owner.current) + farewell() + var/datum/team/team = get_team() + if(team) + team.remove_member(owner) + qdel(src) + +/datum/antagonist/proc/greet() + return + +/datum/antagonist/proc/farewell() + return + +//Returns the team antagonist belongs to if any. +/datum/antagonist/proc/get_team() + return + +//Individual roundend report +/datum/antagonist/proc/roundend_report() + var/list/report = list() + + if(!owner) + CRASH("antagonist datum without owner") + + report += printplayer(owner) + + var/objectives_complete = TRUE + if(owner.objectives.len) + report += printobjectives(owner) + for(var/datum/objective/objective in owner.objectives) + if(!objective.check_completion()) + objectives_complete = FALSE + break + + if(owner.objectives.len == 0 || objectives_complete) + report += "The [name] was successful!" + else + report += "The [name] has failed!" + + return report.Join("
") + +//Displayed at the start of roundend_category section, default to roundend_category header +/datum/antagonist/proc/roundend_report_header() + return "The [roundend_category] were:
" + +//Displayed at the end of roundend_category section +/datum/antagonist/proc/roundend_report_footer() + return + + +//ADMIN TOOLS + +//Called when using admin tools to give antag status +/datum/antagonist/proc/admin_add(datum/mind/new_owner,mob/admin) + message_admins("[key_name_admin(admin)] made [new_owner.current] into [name].") + log_admin("[key_name(admin)] made [new_owner.current] into [name].") + new_owner.add_antag_datum(src) + +//Called when removing antagonist using admin tools +/datum/antagonist/proc/admin_remove(mob/user) + if(!user) + return + message_admins("[key_name_admin(user)] has removed [name] antagonist status from [owner.current].") + log_admin("[key_name(user)] has removed [name] antagonist status from [owner.current].") + on_removal() + +//gamemode/proc/is_mode_antag(antagonist/A) => TRUE/FALSE + +//Additional data to display in antagonist panel section +//nuke disk code, genome count, etc +/datum/antagonist/proc/antag_panel_data() + return "" + +/datum/antagonist/proc/enabled_in_preferences(datum/mind/M) + if(job_rank) + if(M.current && M.current.client && (job_rank in M.current.client.prefs.be_special)) + return TRUE + else + return FALSE + return TRUE + +// List if ["Command"] = CALLBACK(), user will be appeneded to callback arguments on execution +/datum/antagonist/proc/get_admin_commands() + . = list() + +/datum/antagonist/Topic(href,href_list) + if(!check_rights(R_ADMIN)) + return + //Antag memory edit + if (href_list["memory_edit"]) + edit_memory(usr) + owner.traitor_panel() + return + + //Some commands might delete/modify this datum clearing or changing owner + var/datum/mind/persistent_owner = owner + + var/commands = get_admin_commands() + for(var/admin_command in commands) + if(href_list["command"] == admin_command) + var/datum/callback/C = commands[admin_command] + C.Invoke(usr) + persistent_owner.traitor_panel() + return + +/datum/antagonist/proc/edit_memory(mob/user) + var/new_memo = copytext(trim(input(user,"Write new memory", "Memory", antag_memory) as null|message),1,MAX_MESSAGE_LEN) + if (isnull(new_memo)) + return + antag_memory = new_memo + +//This datum will autofill the name with special_role +//Used as placeholder for minor antagonists, please create proper datums for these +/datum/antagonist/auto_custom + show_in_antagpanel = FALSE + antagpanel_category = "Other" + +/datum/antagonist/auto_custom/on_gain() + ..() + name = owner.special_role + //Add all objectives not already owned by other datums to this one. + var/list/already_registered_objectives = list() + for(var/datum/antagonist/A in owner.antag_datums) + if(A == src) + continue + else + already_registered_objectives |= A.objectives + objectives = owner.objectives - already_registered_objectives + +/datum/antagonist/auto_custom/antag_listing_name() + return ..() + "([name])" + +//This one is created by admin tools for custom objectives +/datum/antagonist/custom + antagpanel_category = "Custom" + +/datum/antagonist/custom/admin_add(datum/mind/new_owner,mob/admin) + var/custom_name = stripped_input(admin, "Custom antagonist name:", "Custom antag", "Antagonist") + if(custom_name) + name = custom_name + else + return + ..() + +/datum/antagonist/custom/antag_listing_name() + return ..() + "([name])" \ No newline at end of file diff --git a/code/modules/antagonists/_common/antag_helpers.dm b/code/modules/antagonists/_common/antag_helpers.dm new file mode 100644 index 0000000000..d99920b9e2 --- /dev/null +++ b/code/modules/antagonists/_common/antag_helpers.dm @@ -0,0 +1,19 @@ +//Returns MINDS of the assigned antags of given type/subtypes +/proc/get_antag_minds(antag_type,specific = FALSE) + . = list() + for(var/datum/antagonist/A in GLOB.antagonists) + if(!A.owner) + continue + if(!antag_type || !specific && istype(A,antag_type) || specific && A.type == antag_type) + . += A.owner + +//Get all teams [of type team_type] +/proc/get_all_teams(team_type) + . = list() + for(var/V in GLOB.antagonists) + var/datum/antagonist/A = V + if(!A.owner) + continue + var/datum/team/T = A.get_team() + if(!team_type || istype(T,team_type)) + . |= T \ No newline at end of file diff --git a/code/game/gamemodes/antag_hud.dm b/code/modules/antagonists/_common/antag_hud.dm similarity index 95% rename from code/game/gamemodes/antag_hud.dm rename to code/modules/antagonists/_common/antag_hud.dm index 447a87ce20..de6d0a4f81 100644 --- a/code/game/gamemodes/antag_hud.dm +++ b/code/modules/antagonists/_common/antag_hud.dm @@ -1,53 +1,53 @@ -/datum/atom_hud/antag - hud_icons = list(ANTAG_HUD) - var/self_visible = TRUE - -/datum/atom_hud/antag/hidden - self_visible = FALSE - -/datum/atom_hud/antag/proc/join_hud(mob/M) - //sees_hud should be set to 0 if the mob does not get to see it's own hud type. - if(!istype(M)) - CRASH("join_hud(): [M] ([M.type]) is not a mob!") - if(M.mind.antag_hud) //note: please let this runtime if a mob has no mind, as mindless mobs shouldn't be getting antagged - M.mind.antag_hud.leave_hud(M) - add_to_hud(M) - if(self_visible) - add_hud_to(M) - M.mind.antag_hud = src - -/datum/atom_hud/antag/proc/leave_hud(mob/M) - if(!M) - return - if(!istype(M)) - CRASH("leave_hud(): [M] ([M.type]) is not a mob!") - remove_from_hud(M) - remove_hud_from(M) - if(M.mind) - M.mind.antag_hud = null - - -//GAME_MODE PROCS -//called to set a mob's antag icon state -/proc/set_antag_hud(mob/M, new_icon_state) - if(!istype(M)) - CRASH("set_antag_hud(): [M] ([M.type]) is not a mob!") - var/image/holder = M.hud_list[ANTAG_HUD] - if(holder) - holder.icon_state = new_icon_state - if(M.mind || new_icon_state) //in mindless mobs, only null is acceptable, otherwise we're antagging a mindless mob, meaning we should runtime - M.mind.antag_hud_icon_state = new_icon_state - - -//MIND PROCS -//these are called by mind.transfer_to() -/datum/mind/proc/transfer_antag_huds(datum/atom_hud/antag/newhud) - leave_all_antag_huds() - set_antag_hud(current, antag_hud_icon_state) - if(newhud) - newhud.join_hud(current) - -/datum/mind/proc/leave_all_antag_huds() - for(var/datum/atom_hud/antag/hud in GLOB.huds) - if(hud.hudusers[current]) +/datum/atom_hud/antag + hud_icons = list(ANTAG_HUD) + var/self_visible = TRUE + +/datum/atom_hud/antag/hidden + self_visible = FALSE + +/datum/atom_hud/antag/proc/join_hud(mob/M) + //sees_hud should be set to 0 if the mob does not get to see it's own hud type. + if(!istype(M)) + CRASH("join_hud(): [M] ([M.type]) is not a mob!") + if(M.mind.antag_hud) //note: please let this runtime if a mob has no mind, as mindless mobs shouldn't be getting antagged + M.mind.antag_hud.leave_hud(M) + add_to_hud(M) + if(self_visible) + add_hud_to(M) + M.mind.antag_hud = src + +/datum/atom_hud/antag/proc/leave_hud(mob/M) + if(!M) + return + if(!istype(M)) + CRASH("leave_hud(): [M] ([M.type]) is not a mob!") + remove_from_hud(M) + remove_hud_from(M) + if(M.mind) + M.mind.antag_hud = null + + +//GAME_MODE PROCS +//called to set a mob's antag icon state +/proc/set_antag_hud(mob/M, new_icon_state) + if(!istype(M)) + CRASH("set_antag_hud(): [M] ([M.type]) is not a mob!") + var/image/holder = M.hud_list[ANTAG_HUD] + if(holder) + holder.icon_state = new_icon_state + if(M.mind || new_icon_state) //in mindless mobs, only null is acceptable, otherwise we're antagging a mindless mob, meaning we should runtime + M.mind.antag_hud_icon_state = new_icon_state + + +//MIND PROCS +//these are called by mind.transfer_to() +/datum/mind/proc/transfer_antag_huds(datum/atom_hud/antag/newhud) + leave_all_antag_huds() + set_antag_hud(current, antag_hud_icon_state) + if(newhud) + newhud.join_hud(current) + +/datum/mind/proc/leave_all_antag_huds() + for(var/datum/atom_hud/antag/hud in GLOB.huds) + if(hud.hudusers[current]) hud.leave_hud(current) \ No newline at end of file diff --git a/code/game/gamemodes/antag_spawner.dm b/code/modules/antagonists/_common/antag_spawner.dm similarity index 97% rename from code/game/gamemodes/antag_spawner.dm rename to code/modules/antagonists/_common/antag_spawner.dm index 8d4c1cf5ba..27de0c18ec 100644 --- a/code/game/gamemodes/antag_spawner.dm +++ b/code/modules/antagonists/_common/antag_spawner.dm @@ -1,266 +1,266 @@ -/obj/item/antag_spawner - throw_speed = 1 - throw_range = 5 - w_class = WEIGHT_CLASS_TINY - var/used = 0 - -/obj/item/antag_spawner/proc/spawn_antag(client/C, turf/T, kind = "", datum/mind/user) - return - -/obj/item/antag_spawner/proc/equip_antag(mob/target) - return - - -///////////WIZARD - -/obj/item/antag_spawner/contract - name = "contract" - desc = "A magic contract previously signed by an apprentice. In exchange for instruction in the magical arts, they are bound to answer your call for aid." - icon = 'icons/obj/wizard.dmi' - icon_state ="scroll2" - -/obj/item/antag_spawner/contract/attack_self(mob/user) - user.set_machine(src) - var/dat - if(used) - dat = "You have already summoned your apprentice.
" - else - dat = "Contract of Apprenticeship:
" - dat += "Using this contract, you may summon an apprentice to aid you on your mission.
" - dat += "If you are unable to establish contact with your apprentice, you can feed the contract back to the spellbook to refund your points.
" - dat += "Which school of magic is your apprentice studying?:
" - dat += "Destruction
" - dat += "Your apprentice is skilled in offensive magic. They know Magic Missile and Fireball.
" - dat += "Bluespace Manipulation
" - dat += "Your apprentice is able to defy physics, melting through solid objects and travelling great distances in the blink of an eye. They know Teleport and Ethereal Jaunt.
" - dat += "Healing
" - dat += "Your apprentice is training to cast spells that will aid your survival. They know Forcewall and Charge and come with a Staff of Healing.
" - dat += "Robeless
" - dat += "Your apprentice is training to cast spells without their robes. They know Knock and Mindswap.
" - user << browse(dat, "window=radio") - onclose(user, "radio") - return - -/obj/item/antag_spawner/contract/Topic(href, href_list) - ..() - var/mob/living/carbon/human/H = usr - - if(H.stat || H.restrained()) - return - if(!ishuman(H)) - return 1 - - if(loc == H || (in_range(src, H) && isturf(loc))) - H.set_machine(src) - if(href_list["school"]) - if(used) - to_chat(H, "You already used this contract!") - return - var/list/candidates = pollCandidatesForMob("Do you want to play as a wizard's [href_list["school"]] apprentice?", ROLE_WIZARD, null, ROLE_WIZARD, 150, src) - if(candidates.len) - if(used) - to_chat(H, "You already used this contract!") - return - used = 1 - var/mob/dead/observer/theghost = pick(candidates) - spawn_antag(theghost.client, get_turf(src), href_list["school"],H.mind) - else - to_chat(H, "Unable to reach your apprentice! You can either attack the spellbook with the contract to refund your points, or wait and try again later.") - -/obj/item/antag_spawner/contract/spawn_antag(client/C, turf/T, kind ,datum/mind/user) - new /obj/effect/particle_effect/smoke(T) - var/mob/living/carbon/human/M = new/mob/living/carbon/human(T) - C.prefs.copy_to(M) - M.key = C.key - var/datum/mind/app_mind = M.mind - - var/datum/antagonist/wizard/apprentice/app = new() - app.master = user - app.school = kind - - var/datum/antagonist/wizard/master_wizard = user.has_antag_datum(/datum/antagonist/wizard) - if(master_wizard) - if(!master_wizard.wiz_team) - master_wizard.create_wiz_team() - app.wiz_team = master_wizard.wiz_team - master_wizard.wiz_team.add_member(app_mind) - app_mind.add_antag_datum(app) - //TODO Kill these if possible - app_mind.assigned_role = "Apprentice" - app_mind.special_role = "apprentice" - // - SEND_SOUND(M, sound('sound/effects/magic.ogg')) - -///////////BORGS AND OPERATIVES - - -/obj/item/antag_spawner/nuke_ops - name = "syndicate operative teleporter" - desc = "A single-use teleporter designed to quickly reinforce operatives in the field." - icon = 'icons/obj/device.dmi' - icon_state = "locator" - var/borg_to_spawn - -/obj/item/antag_spawner/nuke_ops/proc/check_usability(mob/user) - if(used) - to_chat(user, "[src] is out of power!") - return FALSE - if(!user.mind.has_antag_datum(/datum/antagonist/nukeop,TRUE)) - to_chat(user, "AUTHENTICATION FAILURE. ACCESS DENIED.") - return FALSE - if(!user.onSyndieBase()) - to_chat(user, "[src] is out of range! It can only be used at your base!") - return FALSE - return TRUE - - -/obj/item/antag_spawner/nuke_ops/attack_self(mob/user) - if(!(check_usability(user))) - return - - to_chat(user, "You activate [src] and wait for confirmation.") - var/list/nuke_candidates = pollGhostCandidates("Do you want to play as a syndicate [borg_to_spawn ? "[lowertext(borg_to_spawn)] cyborg":"operative"]?", ROLE_OPERATIVE, null, ROLE_OPERATIVE, 150, POLL_IGNORE_SYNDICATE) - if(nuke_candidates.len) - if(!(check_usability(user))) - return - used = TRUE - var/mob/dead/observer/theghost = pick(nuke_candidates) - spawn_antag(theghost.client, get_turf(src), "syndieborg", user.mind) - do_sparks(4, TRUE, src) - qdel(src) - else - to_chat(user, "Unable to connect to Syndicate command. Please wait and try again later or use the teleporter on your uplink to get your points refunded.") - -/obj/item/antag_spawner/nuke_ops/spawn_antag(client/C, turf/T, kind, datum/mind/user) - var/mob/living/carbon/human/M = new/mob/living/carbon/human(T) - C.prefs.copy_to(M) - M.key = C.key - - var/datum/antagonist/nukeop/new_op = new() - new_op.send_to_spawnpoint = FALSE - new_op.nukeop_outfit = /datum/outfit/syndicate/no_crystals - - var/datum/antagonist/nukeop/creator_op = user.has_antag_datum(/datum/antagonist/nukeop,TRUE) - if(creator_op) - M.mind.add_antag_datum(new_op,creator_op.nuke_team) - M.mind.special_role = "Nuclear Operative" - -//////SYNDICATE BORG -/obj/item/antag_spawner/nuke_ops/borg_tele - name = "syndicate cyborg teleporter" - desc = "A single-use teleporter designed to quickly reinforce operatives in the field.." - icon = 'icons/obj/device.dmi' - icon_state = "locator" - -/obj/item/antag_spawner/nuke_ops/borg_tele/assault - name = "syndicate assault cyborg teleporter" - borg_to_spawn = "Assault" - -/obj/item/antag_spawner/nuke_ops/borg_tele/medical - name = "syndicate medical teleporter" - borg_to_spawn = "Medical" - -/obj/item/antag_spawner/nuke_ops/borg_tele/spawn_antag(client/C, turf/T, kind, datum/mind/user) - var/mob/living/silicon/robot/R - var/datum/antagonist/nukeop/creator_op = user.has_antag_datum(/datum/antagonist/nukeop,TRUE) - if(!creator_op) - return - - switch(borg_to_spawn) - if("Medical") - R = new /mob/living/silicon/robot/modules/syndicate/medical(T) - else - R = new /mob/living/silicon/robot/modules/syndicate(T) //Assault borg by default - - var/brainfirstname = pick(GLOB.first_names_male) - if(prob(50)) - brainfirstname = pick(GLOB.first_names_female) - var/brainopslastname = pick(GLOB.last_names) - if(creator_op.nuke_team.syndicate_name) //the brain inside the syndiborg has the same last name as the other ops. - brainopslastname = creator_op.nuke_team.syndicate_name - var/brainopsname = "[brainfirstname] [brainopslastname]" - - R.mmi.name = "Man-Machine Interface: [brainopsname]" - R.mmi.brain.name = "[brainopsname]'s brain" - R.mmi.brainmob.real_name = brainopsname - R.mmi.brainmob.name = brainopsname - R.real_name = R.name - - R.key = C.key - - var/datum/antagonist/nukeop/new_borg = new() - new_borg.send_to_spawnpoint = FALSE - R.mind.add_antag_datum(new_borg,creator_op.nuke_team) - R.mind.special_role = "Syndicate Cyborg" - -///////////SLAUGHTER DEMON - -/obj/item/antag_spawner/slaughter_demon //Warning edgiest item in the game - name = "vial of blood" - desc = "A magically infused bottle of blood, distilled from countless murder victims. Used in unholy rituals to attract horrifying creatures." - icon = 'icons/obj/wizard.dmi' - icon_state = "vial" - - var/shatter_msg = "You shatter the bottle, no turning back now!" - var/veil_msg = "You sense a dark presence lurking just beyond the veil..." - var/objective_verb = "Kill" - var/mob/living/demon_type = /mob/living/simple_animal/slaughter - - -/obj/item/antag_spawner/slaughter_demon/attack_self(mob/user) - if(!is_station_level(user.z)) - to_chat(user, "You should probably wait until you reach the station.") - return - if(used) - return - var/list/demon_candidates = pollCandidatesForMob("Do you want to play as a [initial(demon_type.name)]?", null, null, ROLE_ALIEN, 50, src) - if(demon_candidates.len) - if(used) - return - used = 1 - var/mob/dead/observer/theghost = pick(demon_candidates) - spawn_antag(theghost.client, get_turf(src), initial(demon_type.name),user.mind) - to_chat(user, shatter_msg) - to_chat(user, veil_msg) - playsound(user.loc, 'sound/effects/glassbr1.ogg', 100, 1) - qdel(src) - else - to_chat(user, "You can't seem to work up the nerve to shatter the bottle. Perhaps you should try again later.") - - -/obj/item/antag_spawner/slaughter_demon/spawn_antag(client/C, turf/T, kind = "", datum/mind/user) - var/obj/effect/dummy/slaughter/holder = new /obj/effect/dummy/slaughter(T) - var/mob/living/simple_animal/slaughter/S = new demon_type(holder) - S.holder = holder - S.key = C.key - S.mind.assigned_role = S.name - S.mind.special_role = S.name - var/datum/objective/assassinate/new_objective - if(user) - new_objective = new /datum/objective/assassinate - new_objective.owner = S.mind - new_objective.target = user - new_objective.explanation_text = "[objective_verb] [user.name], the one who summoned you." - S.mind.objectives += new_objective - var/datum/objective/new_objective2 = new /datum/objective - new_objective2.owner = S.mind - new_objective2.explanation_text = "[objective_verb] everyone[user ? " else while you're at it":""]." - S.mind.objectives += new_objective2 - S.mind.add_antag_datum(/datum/antagonist/auto_custom) - to_chat(S, S.playstyle_string) - to_chat(S, "You are currently not currently in the same plane of existence as the station. \ - Ctrl+Click a blood pool to manifest.") - if(new_objective) - to_chat(S, "Objective #[1]: [new_objective.explanation_text]") - to_chat(S, "Objective #[new_objective ? "[2]":"[1]"]: [new_objective2.explanation_text]") - -/obj/item/antag_spawner/slaughter_demon/laughter - name = "vial of tickles" - desc = "A magically infused bottle of clown love, distilled from countless hugging attacks. Used in funny rituals to attract adorable creatures." - icon = 'icons/obj/wizard.dmi' - icon_state = "vial" - color = "#FF69B4" // HOT PINK - - veil_msg = "You sense an adorable presence lurking just beyond the veil..." - objective_verb = "Hug and Tickle" - demon_type = /mob/living/simple_animal/slaughter/laughter +/obj/item/antag_spawner + throw_speed = 1 + throw_range = 5 + w_class = WEIGHT_CLASS_TINY + var/used = 0 + +/obj/item/antag_spawner/proc/spawn_antag(client/C, turf/T, kind = "", datum/mind/user) + return + +/obj/item/antag_spawner/proc/equip_antag(mob/target) + return + + +///////////WIZARD + +/obj/item/antag_spawner/contract + name = "contract" + desc = "A magic contract previously signed by an apprentice. In exchange for instruction in the magical arts, they are bound to answer your call for aid." + icon = 'icons/obj/wizard.dmi' + icon_state ="scroll2" + +/obj/item/antag_spawner/contract/attack_self(mob/user) + user.set_machine(src) + var/dat + if(used) + dat = "You have already summoned your apprentice.
" + else + dat = "Contract of Apprenticeship:
" + dat += "Using this contract, you may summon an apprentice to aid you on your mission.
" + dat += "If you are unable to establish contact with your apprentice, you can feed the contract back to the spellbook to refund your points.
" + dat += "Which school of magic is your apprentice studying?:
" + dat += "Destruction
" + dat += "Your apprentice is skilled in offensive magic. They know Magic Missile and Fireball.
" + dat += "Bluespace Manipulation
" + dat += "Your apprentice is able to defy physics, melting through solid objects and travelling great distances in the blink of an eye. They know Teleport and Ethereal Jaunt.
" + dat += "Healing
" + dat += "Your apprentice is training to cast spells that will aid your survival. They know Forcewall and Charge and come with a Staff of Healing.
" + dat += "Robeless
" + dat += "Your apprentice is training to cast spells without their robes. They know Knock and Mindswap.
" + user << browse(dat, "window=radio") + onclose(user, "radio") + return + +/obj/item/antag_spawner/contract/Topic(href, href_list) + ..() + var/mob/living/carbon/human/H = usr + + if(H.stat || H.restrained()) + return + if(!ishuman(H)) + return 1 + + if(loc == H || (in_range(src, H) && isturf(loc))) + H.set_machine(src) + if(href_list["school"]) + if(used) + to_chat(H, "You already used this contract!") + return + var/list/candidates = pollCandidatesForMob("Do you want to play as a wizard's [href_list["school"]] apprentice?", ROLE_WIZARD, null, ROLE_WIZARD, 150, src) + if(candidates.len) + if(used) + to_chat(H, "You already used this contract!") + return + used = 1 + var/mob/dead/observer/theghost = pick(candidates) + spawn_antag(theghost.client, get_turf(src), href_list["school"],H.mind) + else + to_chat(H, "Unable to reach your apprentice! You can either attack the spellbook with the contract to refund your points, or wait and try again later.") + +/obj/item/antag_spawner/contract/spawn_antag(client/C, turf/T, kind ,datum/mind/user) + new /obj/effect/particle_effect/smoke(T) + var/mob/living/carbon/human/M = new/mob/living/carbon/human(T) + C.prefs.copy_to(M) + M.key = C.key + var/datum/mind/app_mind = M.mind + + var/datum/antagonist/wizard/apprentice/app = new() + app.master = user + app.school = kind + + var/datum/antagonist/wizard/master_wizard = user.has_antag_datum(/datum/antagonist/wizard) + if(master_wizard) + if(!master_wizard.wiz_team) + master_wizard.create_wiz_team() + app.wiz_team = master_wizard.wiz_team + master_wizard.wiz_team.add_member(app_mind) + app_mind.add_antag_datum(app) + //TODO Kill these if possible + app_mind.assigned_role = "Apprentice" + app_mind.special_role = "apprentice" + // + SEND_SOUND(M, sound('sound/effects/magic.ogg')) + +///////////BORGS AND OPERATIVES + + +/obj/item/antag_spawner/nuke_ops + name = "syndicate operative teleporter" + desc = "A single-use teleporter designed to quickly reinforce operatives in the field." + icon = 'icons/obj/device.dmi' + icon_state = "locator" + var/borg_to_spawn + +/obj/item/antag_spawner/nuke_ops/proc/check_usability(mob/user) + if(used) + to_chat(user, "[src] is out of power!") + return FALSE + if(!user.mind.has_antag_datum(/datum/antagonist/nukeop,TRUE)) + to_chat(user, "AUTHENTICATION FAILURE. ACCESS DENIED.") + return FALSE + if(!user.onSyndieBase()) + to_chat(user, "[src] is out of range! It can only be used at your base!") + return FALSE + return TRUE + + +/obj/item/antag_spawner/nuke_ops/attack_self(mob/user) + if(!(check_usability(user))) + return + + to_chat(user, "You activate [src] and wait for confirmation.") + var/list/nuke_candidates = pollGhostCandidates("Do you want to play as a syndicate [borg_to_spawn ? "[lowertext(borg_to_spawn)] cyborg":"operative"]?", ROLE_OPERATIVE, null, ROLE_OPERATIVE, 150, POLL_IGNORE_SYNDICATE) + if(nuke_candidates.len) + if(!(check_usability(user))) + return + used = TRUE + var/mob/dead/observer/theghost = pick(nuke_candidates) + spawn_antag(theghost.client, get_turf(src), "syndieborg", user.mind) + do_sparks(4, TRUE, src) + qdel(src) + else + to_chat(user, "Unable to connect to Syndicate command. Please wait and try again later or use the teleporter on your uplink to get your points refunded.") + +/obj/item/antag_spawner/nuke_ops/spawn_antag(client/C, turf/T, kind, datum/mind/user) + var/mob/living/carbon/human/M = new/mob/living/carbon/human(T) + C.prefs.copy_to(M) + M.key = C.key + + var/datum/antagonist/nukeop/new_op = new() + new_op.send_to_spawnpoint = FALSE + new_op.nukeop_outfit = /datum/outfit/syndicate/no_crystals + + var/datum/antagonist/nukeop/creator_op = user.has_antag_datum(/datum/antagonist/nukeop,TRUE) + if(creator_op) + M.mind.add_antag_datum(new_op,creator_op.nuke_team) + M.mind.special_role = "Nuclear Operative" + +//////SYNDICATE BORG +/obj/item/antag_spawner/nuke_ops/borg_tele + name = "syndicate cyborg teleporter" + desc = "A single-use teleporter designed to quickly reinforce operatives in the field.." + icon = 'icons/obj/device.dmi' + icon_state = "locator" + +/obj/item/antag_spawner/nuke_ops/borg_tele/assault + name = "syndicate assault cyborg teleporter" + borg_to_spawn = "Assault" + +/obj/item/antag_spawner/nuke_ops/borg_tele/medical + name = "syndicate medical teleporter" + borg_to_spawn = "Medical" + +/obj/item/antag_spawner/nuke_ops/borg_tele/spawn_antag(client/C, turf/T, kind, datum/mind/user) + var/mob/living/silicon/robot/R + var/datum/antagonist/nukeop/creator_op = user.has_antag_datum(/datum/antagonist/nukeop,TRUE) + if(!creator_op) + return + + switch(borg_to_spawn) + if("Medical") + R = new /mob/living/silicon/robot/modules/syndicate/medical(T) + else + R = new /mob/living/silicon/robot/modules/syndicate(T) //Assault borg by default + + var/brainfirstname = pick(GLOB.first_names_male) + if(prob(50)) + brainfirstname = pick(GLOB.first_names_female) + var/brainopslastname = pick(GLOB.last_names) + if(creator_op.nuke_team.syndicate_name) //the brain inside the syndiborg has the same last name as the other ops. + brainopslastname = creator_op.nuke_team.syndicate_name + var/brainopsname = "[brainfirstname] [brainopslastname]" + + R.mmi.name = "Man-Machine Interface: [brainopsname]" + R.mmi.brain.name = "[brainopsname]'s brain" + R.mmi.brainmob.real_name = brainopsname + R.mmi.brainmob.name = brainopsname + R.real_name = R.name + + R.key = C.key + + var/datum/antagonist/nukeop/new_borg = new() + new_borg.send_to_spawnpoint = FALSE + R.mind.add_antag_datum(new_borg,creator_op.nuke_team) + R.mind.special_role = "Syndicate Cyborg" + +///////////SLAUGHTER DEMON + +/obj/item/antag_spawner/slaughter_demon //Warning edgiest item in the game + name = "vial of blood" + desc = "A magically infused bottle of blood, distilled from countless murder victims. Used in unholy rituals to attract horrifying creatures." + icon = 'icons/obj/wizard.dmi' + icon_state = "vial" + + var/shatter_msg = "You shatter the bottle, no turning back now!" + var/veil_msg = "You sense a dark presence lurking just beyond the veil..." + var/objective_verb = "Kill" + var/mob/living/demon_type = /mob/living/simple_animal/slaughter + + +/obj/item/antag_spawner/slaughter_demon/attack_self(mob/user) + if(!is_station_level(user.z)) + to_chat(user, "You should probably wait until you reach the station.") + return + if(used) + return + var/list/demon_candidates = pollCandidatesForMob("Do you want to play as a [initial(demon_type.name)]?", null, null, ROLE_ALIEN, 50, src) + if(demon_candidates.len) + if(used) + return + used = 1 + var/mob/dead/observer/theghost = pick(demon_candidates) + spawn_antag(theghost.client, get_turf(src), initial(demon_type.name),user.mind) + to_chat(user, shatter_msg) + to_chat(user, veil_msg) + playsound(user.loc, 'sound/effects/glassbr1.ogg', 100, 1) + qdel(src) + else + to_chat(user, "You can't seem to work up the nerve to shatter the bottle. Perhaps you should try again later.") + + +/obj/item/antag_spawner/slaughter_demon/spawn_antag(client/C, turf/T, kind = "", datum/mind/user) + var/obj/effect/dummy/slaughter/holder = new /obj/effect/dummy/slaughter(T) + var/mob/living/simple_animal/slaughter/S = new demon_type(holder) + S.holder = holder + S.key = C.key + S.mind.assigned_role = S.name + S.mind.special_role = S.name + var/datum/objective/assassinate/new_objective + if(user) + new_objective = new /datum/objective/assassinate + new_objective.owner = S.mind + new_objective.target = user + new_objective.explanation_text = "[objective_verb] [user.name], the one who summoned you." + S.mind.objectives += new_objective + var/datum/objective/new_objective2 = new /datum/objective + new_objective2.owner = S.mind + new_objective2.explanation_text = "[objective_verb] everyone[user ? " else while you're at it":""]." + S.mind.objectives += new_objective2 + S.mind.add_antag_datum(/datum/antagonist/auto_custom) + to_chat(S, S.playstyle_string) + to_chat(S, "You are currently not currently in the same plane of existence as the station. \ + Ctrl+Click a blood pool to manifest.") + if(new_objective) + to_chat(S, "Objective #[1]: [new_objective.explanation_text]") + to_chat(S, "Objective #[new_objective ? "[2]":"[1]"]: [new_objective2.explanation_text]") + +/obj/item/antag_spawner/slaughter_demon/laughter + name = "vial of tickles" + desc = "A magically infused bottle of clown love, distilled from countless hugging attacks. Used in funny rituals to attract adorable creatures." + icon = 'icons/obj/wizard.dmi' + icon_state = "vial" + color = "#FF69B4" // HOT PINK + + veil_msg = "You sense an adorable presence lurking just beyond the veil..." + objective_verb = "Hug and Tickle" + demon_type = /mob/living/simple_animal/slaughter/laughter diff --git a/code/game/gamemodes/antag_team.dm b/code/modules/antagonists/_common/antag_team.dm similarity index 74% rename from code/game/gamemodes/antag_team.dm rename to code/modules/antagonists/_common/antag_team.dm index 56ca7c76e2..c458b5a9fb 100644 --- a/code/game/gamemodes/antag_team.dm +++ b/code/modules/antagonists/_common/antag_team.dm @@ -32,15 +32,3 @@ report += printplayerlist(members) return report.Join("
") - -//Get all teams [of type team_type] -//TODO move these to some antag helpers file with get_antagonists -/proc/get_all_teams(team_type) - . = list() - for(var/V in GLOB.antagonists) - var/datum/antagonist/A = V - if(!A.owner) - continue - var/datum/team/T = A.get_team() - if(!team_type || istype(T,team_type)) - . |= T diff --git a/code/game/gamemodes/miniantags/abduction/abductee_objectives.dm b/code/modules/antagonists/abductor/abductee/abductee_objectives.dm similarity index 100% rename from code/game/gamemodes/miniantags/abduction/abductee_objectives.dm rename to code/modules/antagonists/abductor/abductee/abductee_objectives.dm diff --git a/code/modules/antagonists/abductor/abductor.dm b/code/modules/antagonists/abductor/abductor.dm new file mode 100644 index 0000000000..35264af67c --- /dev/null +++ b/code/modules/antagonists/abductor/abductor.dm @@ -0,0 +1,216 @@ +#define ABDUCTOR_MAX_TEAMS 4 + +/datum/antagonist/abductor + name = "Abductor" + roundend_category = "abductors" + antagpanel_category = "Abductor" + job_rank = ROLE_ABDUCTOR + show_in_antagpanel = FALSE //should only show subtypes + var/datum/team/abductor_team/team + var/sub_role + var/outfit + var/landmark_type + var/greet_text + + +/datum/antagonist/abductor/agent + name = "Abductor Agent" + sub_role = "Agent" + outfit = /datum/outfit/abductor/agent + landmark_type = /obj/effect/landmark/abductor/agent + greet_text = "Use your stealth technology and equipment to incapacitate humans for your scientist to retrieve." + show_in_antagpanel = TRUE + +/datum/antagonist/abductor/scientist + name = "Abductor Scientist" + sub_role = "Scientist" + outfit = /datum/outfit/abductor/scientist + landmark_type = /obj/effect/landmark/abductor/scientist + greet_text = "Use your stealth technology and equipment to incapacitate humans for your scientist to retrieve." + show_in_antagpanel = TRUE + +/datum/antagonist/abductor/create_team(datum/team/abductor_team/new_team) + if(!new_team) + return + if(!istype(new_team)) + stack_trace("Wrong team type passed to [type] initialization.") + team = new_team + +/datum/antagonist/abductor/get_team() + return team + +/datum/antagonist/abductor/on_gain() + owner.special_role = "[name] [sub_role]" + owner.assigned_role = "[name] [sub_role]" + owner.objectives += team.objectives + finalize_abductor() + return ..() + +/datum/antagonist/abductor/on_removal() + owner.objectives -= team.objectives + if(owner.current) + to_chat(owner.current,"You are no longer the [owner.special_role]!") + owner.special_role = null + return ..() + +/datum/antagonist/abductor/greet() + to_chat(owner.current, "You are the [owner.special_role]!") + to_chat(owner.current, "With the help of your teammate, kidnap and experiment on station crew members!") + to_chat(owner.current, "[greet_text]") + owner.announce_objectives() + +/datum/antagonist/abductor/proc/finalize_abductor() + //Equip + var/mob/living/carbon/human/H = owner.current + H.set_species(/datum/species/abductor) + H.real_name = "[team.name] [sub_role]" + H.equipOutfit(outfit) + + //Teleport to ship + for(var/obj/effect/landmark/abductor/LM in GLOB.landmarks_list) + if(istype(LM, landmark_type) && LM.team_number == team.team_number) + H.forceMove(LM.loc) + break + + update_abductor_icons_added(owner,"abductor") + +/datum/antagonist/abductor/scientist/finalize_abductor() + ..() + var/mob/living/carbon/human/H = owner.current + var/datum/species/abductor/A = H.dna.species + A.scientist = TRUE + +/datum/antagonist/abductor/admin_add(datum/mind/new_owner,mob/admin) + var/list/current_teams = list() + for(var/datum/team/abductor_team/T in get_all_teams(/datum/team/abductor_team)) + current_teams[T.name] = T + var/choice = input(admin,"Add to which team ?") as null|anything in (current_teams + "new team") + if (choice == "new team") + team = new + else if(choice in current_teams) + team = current_teams[choice] + else + return + new_owner.add_antag_datum(src) + log_admin("[key_name(usr)] made [key_name(new_owner.current)] [name] on [choice]!") + message_admins("[key_name_admin(usr)] made [key_name_admin(new_owner.current)] [name] on [choice] !") + +/datum/antagonist/abductor/get_admin_commands() + . = ..() + .["Equip"] = CALLBACK(src,.proc/admin_equip) + +/datum/antagonist/abductor/proc/admin_equip(mob/admin) + if(!ishuman(owner.current)) + to_chat(admin, "This only works on humans!") + return + var/mob/living/carbon/human/H = owner.current + var/gear = alert(admin,"Agent or Scientist Gear","Gear","Agent","Scientist") + if(gear) + if(gear=="Agent") + H.equipOutfit(/datum/outfit/abductor/agent) + else + H.equipOutfit(/datum/outfit/abductor/scientist) + +/datum/team/abductor_team + member_name = "abductor" + var/team_number + var/list/datum/mind/abductees = list() + var/static/team_count = 1 + +/datum/team/abductor_team/New() + ..() + team_number = team_count++ + name = "Mothership [pick(GLOB.possible_changeling_IDs)]" //TODO Ensure unique and actual alieny names + add_objective(new/datum/objective/experiment) + +/datum/team/abductor_team/is_solo() + return FALSE + +/datum/team/abductor_team/proc/add_objective(datum/objective/O) + O.team = src + O.update_explanation_text() + objectives += O + +/datum/team/abductor_team/roundend_report() + var/list/result = list() + + var/won = TRUE + for(var/datum/objective/O in objectives) + if(!O.check_completion()) + won = FALSE + if(won) + result += "[name] team fulfilled its mission!" + else + result += "[name] team failed its mission." + + result += "The abductors of [name] were:" + for(var/datum/mind/abductor_mind in members) + result += printplayer(abductor_mind) + result += printobjectives(abductor_mind) + + return result.Join("
") + +/datum/antagonist/abductee + name = "Abductee" + roundend_category = "abductees" + antagpanel_category = "Abductee" + +/datum/antagonist/abductee/on_gain() + give_objective() + . = ..() + +/datum/antagonist/abductee/greet() + to_chat(owner, "Your mind snaps!") + to_chat(owner, "You can't remember how you got here...") + owner.announce_objectives() + +/datum/antagonist/abductee/proc/give_objective() + var/mob/living/carbon/human/H = owner.current + if(istype(H)) + H.gain_trauma_type(BRAIN_TRAUMA_MILD) + var/objtype = (prob(75) ? /datum/objective/abductee/random : pick(subtypesof(/datum/objective/abductee/) - /datum/objective/abductee/random)) + var/datum/objective/abductee/O = new objtype() + objectives += O + owner.objectives += objectives + +/datum/antagonist/abductee/apply_innate_effects(mob/living/mob_override) + update_abductor_icons_added(mob_override ? mob_override.mind : owner,"abductee") + +/datum/antagonist/abductee/remove_innate_effects(mob/living/mob_override) + update_abductor_icons_removed(mob_override ? mob_override.mind : owner) + + +// LANDMARKS +/obj/effect/landmark/abductor + var/team_number = 1 + +/obj/effect/landmark/abductor/agent + icon_state = "abductor_agent" +/obj/effect/landmark/abductor/scientist + icon_state = "abductor" + +// OBJECTIVES +/datum/objective/experiment + target_amount = 6 + +/datum/objective/experiment/New() + explanation_text = "Experiment on [target_amount] humans." + +/datum/objective/experiment/check_completion() + for(var/obj/machinery/abductor/experiment/E in GLOB.machines) + if(!istype(team, /datum/team/abductor_team)) + return FALSE + var/datum/team/abductor_team/T = team + if(E.team_number == T.team_number) + return E.points >= target_amount + return FALSE + +/datum/antagonist/proc/update_abductor_icons_added(datum/mind/alien_mind,hud_type) + var/datum/atom_hud/antag/hud = GLOB.huds[ANTAG_HUD_ABDUCTOR] + hud.join_hud(alien_mind.current) + set_antag_hud(alien_mind.current, hud_type) + +/datum/antagonist/proc/update_abductor_icons_removed(datum/mind/alien_mind) + var/datum/atom_hud/antag/hud = GLOB.huds[ANTAG_HUD_ABDUCTOR] + hud.leave_hud(alien_mind.current) + set_antag_hud(alien_mind.current, null) \ No newline at end of file diff --git a/code/game/gamemodes/miniantags/abduction/abduction_gear.dm b/code/modules/antagonists/abductor/equipment/abduction_gear.dm similarity index 100% rename from code/game/gamemodes/miniantags/abduction/abduction_gear.dm rename to code/modules/antagonists/abductor/equipment/abduction_gear.dm diff --git a/code/game/gamemodes/miniantags/abduction/abduction_outfits.dm b/code/modules/antagonists/abductor/equipment/abduction_outfits.dm similarity index 100% rename from code/game/gamemodes/miniantags/abduction/abduction_outfits.dm rename to code/modules/antagonists/abductor/equipment/abduction_outfits.dm diff --git a/code/game/gamemodes/miniantags/abduction/abduction_surgery.dm b/code/modules/antagonists/abductor/equipment/abduction_surgery.dm similarity index 100% rename from code/game/gamemodes/miniantags/abduction/abduction_surgery.dm rename to code/modules/antagonists/abductor/equipment/abduction_surgery.dm diff --git a/code/game/gamemodes/miniantags/abduction/gland.dm b/code/modules/antagonists/abductor/equipment/gland.dm similarity index 100% rename from code/game/gamemodes/miniantags/abduction/gland.dm rename to code/modules/antagonists/abductor/equipment/gland.dm diff --git a/code/game/gamemodes/miniantags/abduction/machinery/camera.dm b/code/modules/antagonists/abductor/machinery/camera.dm similarity index 99% rename from code/game/gamemodes/miniantags/abduction/machinery/camera.dm rename to code/modules/antagonists/abductor/machinery/camera.dm index fd9ca0a658..b5e979033d 100644 --- a/code/game/gamemodes/miniantags/abduction/machinery/camera.dm +++ b/code/modules/antagonists/abductor/machinery/camera.dm @@ -9,7 +9,7 @@ var/datum/action/innate/vest_disguise_swap/vest_disguise_action = new var/datum/action/innate/set_droppoint/set_droppoint_action = new var/obj/machinery/abductor/console/console - station_lock_override = TRUE + lock_override = TRUE icon = 'icons/obj/abductor.dmi' icon_state = "camera" diff --git a/code/game/gamemodes/miniantags/abduction/machinery/console.dm b/code/modules/antagonists/abductor/machinery/console.dm similarity index 100% rename from code/game/gamemodes/miniantags/abduction/machinery/console.dm rename to code/modules/antagonists/abductor/machinery/console.dm diff --git a/code/game/gamemodes/miniantags/abduction/machinery/dispenser.dm b/code/modules/antagonists/abductor/machinery/dispenser.dm similarity index 100% rename from code/game/gamemodes/miniantags/abduction/machinery/dispenser.dm rename to code/modules/antagonists/abductor/machinery/dispenser.dm diff --git a/code/game/gamemodes/miniantags/abduction/machinery/experiment.dm b/code/modules/antagonists/abductor/machinery/experiment.dm similarity index 100% rename from code/game/gamemodes/miniantags/abduction/machinery/experiment.dm rename to code/modules/antagonists/abductor/machinery/experiment.dm diff --git a/code/game/gamemodes/miniantags/abduction/machinery/pad.dm b/code/modules/antagonists/abductor/machinery/pad.dm similarity index 100% rename from code/game/gamemodes/miniantags/abduction/machinery/pad.dm rename to code/modules/antagonists/abductor/machinery/pad.dm diff --git a/code/modules/antagonists/blob/blob.dm b/code/modules/antagonists/blob/blob.dm new file mode 100644 index 0000000000..964bc99311 --- /dev/null +++ b/code/modules/antagonists/blob/blob.dm @@ -0,0 +1,67 @@ +/datum/antagonist/blob + name = "Blob" + roundend_category = "blobs" + antagpanel_category = "Blob" + job_rank = ROLE_BLOB + + var/datum/action/innate/blobpop/pop_action + var/starting_points_human_blob = 60 + var/point_rate_human_blob = 2 + +/datum/antagonist/blob/roundend_report() + var/basic_report = ..() + //Display max blobpoints for blebs that lost + if(isovermind(owner.current)) //embarrasing if not + var/mob/camera/blob/overmind = owner.current + if(!overmind.victory_in_progress) //if it won this doesn't really matter + var/point_report = "
[owner.name] took over [overmind.max_count] tiles at the height of its growth." + return basic_report+point_report + return basic_report + +/datum/antagonist/blob/greet() + if(!isovermind(owner.current)) + to_chat(owner,"You feel bloated.") + +/datum/antagonist/blob/on_gain() + create_objectives() + . = ..() + +/datum/antagonist/blob/proc/create_objectives() + var/datum/objective/blob_takeover/main = new + main.owner = owner + objectives += main + owner.objectives |= objectives + +/datum/antagonist/blob/apply_innate_effects(mob/living/mob_override) + if(!isovermind(owner.current)) + if(!pop_action) + pop_action = new + pop_action.Grant(owner.current) + +/datum/objective/blob_takeover + explanation_text = "Reach critical mass!" + +//Non-overminds get this on blob antag assignment +/datum/action/innate/blobpop + name = "Pop" + desc = "Unleash the blob" + icon_icon = 'icons/mob/blob.dmi' + button_icon_state = "blob" + +/datum/action/innate/blobpop/Activate() + var/mob/old_body = owner + var/datum/antagonist/blob/blobtag = owner.mind.has_antag_datum(/datum/antagonist/blob) + if(!blobtag) + Remove() + return + var/mob/camera/blob/B = new /mob/camera/blob(get_turf(old_body), blobtag.starting_points_human_blob) + owner.mind.transfer_to(B) + old_body.gib() + B.place_blob_core(blobtag.point_rate_human_blob, pop_override = TRUE) + +/datum/antagonist/blob/antag_listing_status() + . = ..() + if(owner && owner.current) + var/mob/camera/blob/B = owner.current + if(istype(B)) + . += "(Progress: [B.blobs_legit.len]/[B.blobwincount])" \ No newline at end of file diff --git a/code/game/gamemodes/blob/blob_report.dm b/code/modules/antagonists/blob/blob/blob_report.dm similarity index 100% rename from code/game/gamemodes/blob/blob_report.dm rename to code/modules/antagonists/blob/blob/blob_report.dm diff --git a/code/game/gamemodes/blob/blobs/blob_mobs.dm b/code/modules/antagonists/blob/blob/blobs/blob_mobs.dm similarity index 98% rename from code/game/gamemodes/blob/blobs/blob_mobs.dm rename to code/modules/antagonists/blob/blob/blobs/blob_mobs.dm index 9e4bf51d41..a31c0e02e6 100644 --- a/code/game/gamemodes/blob/blobs/blob_mobs.dm +++ b/code/modules/antagonists/blob/blob/blobs/blob_mobs.dm @@ -115,8 +115,7 @@ is_zombie = 1 if(H.wear_suit) var/obj/item/clothing/suit/armor/A = H.wear_suit - if(A.armor && A.armor["melee"]) - maxHealth += A.armor["melee"] //That zombie's got armor, I want armor! + maxHealth += A.armor.melee //That zombie's got armor, I want armor! maxHealth += 40 health = maxHealth name = "blob zombie" diff --git a/code/game/gamemodes/blob/blobs/core.dm b/code/modules/antagonists/blob/blob/blobs/core.dm similarity index 100% rename from code/game/gamemodes/blob/blobs/core.dm rename to code/modules/antagonists/blob/blob/blobs/core.dm diff --git a/code/game/gamemodes/blob/blobs/factory.dm b/code/modules/antagonists/blob/blob/blobs/factory.dm similarity index 100% rename from code/game/gamemodes/blob/blobs/factory.dm rename to code/modules/antagonists/blob/blob/blobs/factory.dm diff --git a/code/game/gamemodes/blob/blobs/node.dm b/code/modules/antagonists/blob/blob/blobs/node.dm similarity index 100% rename from code/game/gamemodes/blob/blobs/node.dm rename to code/modules/antagonists/blob/blob/blobs/node.dm diff --git a/code/game/gamemodes/blob/blobs/resource.dm b/code/modules/antagonists/blob/blob/blobs/resource.dm similarity index 100% rename from code/game/gamemodes/blob/blobs/resource.dm rename to code/modules/antagonists/blob/blob/blobs/resource.dm diff --git a/code/game/gamemodes/blob/blobs/shield.dm b/code/modules/antagonists/blob/blob/blobs/shield.dm similarity index 100% rename from code/game/gamemodes/blob/blobs/shield.dm rename to code/modules/antagonists/blob/blob/blobs/shield.dm diff --git a/code/game/gamemodes/blob/overmind.dm b/code/modules/antagonists/blob/blob/overmind.dm similarity index 100% rename from code/game/gamemodes/blob/overmind.dm rename to code/modules/antagonists/blob/blob/overmind.dm diff --git a/code/game/gamemodes/blob/powers.dm b/code/modules/antagonists/blob/blob/powers.dm similarity index 100% rename from code/game/gamemodes/blob/powers.dm rename to code/modules/antagonists/blob/blob/powers.dm diff --git a/code/game/gamemodes/blob/theblob.dm b/code/modules/antagonists/blob/blob/theblob.dm similarity index 99% rename from code/game/gamemodes/blob/theblob.dm rename to code/modules/antagonists/blob/blob/theblob.dm index b9a8ee6046..f878e519ba 100644 --- a/code/game/gamemodes/blob/theblob.dm +++ b/code/modules/antagonists/blob/blob/theblob.dm @@ -275,7 +275,7 @@ return 0 var/armor_protection = 0 if(damage_flag) - armor_protection = armor[damage_flag] + armor_protection = armor.getRating(damage_flag) damage_amount = round(damage_amount * (100 - armor_protection)*0.01, 0.1) if(overmind && damage_flag) damage_amount = overmind.blob_reagent_datum.damage_reaction(src, damage_amount, damage_type, damage_flag) diff --git a/code/game/gamemodes/miniantags/borer/borer.dm b/code/modules/antagonists/borer/borer.dm similarity index 100% rename from code/game/gamemodes/miniantags/borer/borer.dm rename to code/modules/antagonists/borer/borer.dm diff --git a/code/game/gamemodes/miniantags/borer/borer_chemicals.dm b/code/modules/antagonists/borer/borer_chemicals.dm similarity index 100% rename from code/game/gamemodes/miniantags/borer/borer_chemicals.dm rename to code/modules/antagonists/borer/borer_chemicals.dm diff --git a/code/game/gamemodes/miniantags/borer/borer_event.dm b/code/modules/antagonists/borer/borer_event.dm similarity index 100% rename from code/game/gamemodes/miniantags/borer/borer_event.dm rename to code/modules/antagonists/borer/borer_event.dm diff --git a/code/game/gamemodes/miniantags/borer/borer_html.dm b/code/modules/antagonists/borer/borer_html.dm similarity index 100% rename from code/game/gamemodes/miniantags/borer/borer_html.dm rename to code/modules/antagonists/borer/borer_html.dm diff --git a/code/game/gamemodes/miniantags/borer/borer_topic.dm b/code/modules/antagonists/borer/borer_topic.dm similarity index 100% rename from code/game/gamemodes/miniantags/borer/borer_topic.dm rename to code/modules/antagonists/borer/borer_topic.dm diff --git a/code/game/gamemodes/miniantags/borer/syndi_borer.dm b/code/modules/antagonists/borer/syndi_borer.dm similarity index 100% rename from code/game/gamemodes/miniantags/borer/syndi_borer.dm rename to code/modules/antagonists/borer/syndi_borer.dm diff --git a/code/modules/antagonists/brother/brother.dm b/code/modules/antagonists/brother/brother.dm new file mode 100644 index 0000000000..f692335ee1 --- /dev/null +++ b/code/modules/antagonists/brother/brother.dm @@ -0,0 +1,154 @@ +/datum/antagonist/brother + name = "Brother" + antagpanel_category = "Brother" + job_rank = ROLE_BROTHER + var/special_role = "blood brother" + var/datum/team/brother_team/team + +/datum/antagonist/brother/create_team(datum/team/brother_team/new_team) + if(!new_team) + return + if(!istype(new_team)) + stack_trace("Wrong team type passed to [type] initialization.") + team = new_team + +/datum/antagonist/brother/get_team() + return team + +/datum/antagonist/brother/on_gain() + SSticker.mode.brothers += owner + objectives += team.objectives + owner.objectives += objectives + owner.special_role = special_role + finalize_brother() + return ..() + +/datum/antagonist/brother/on_removal() + SSticker.mode.brothers -= owner + owner.objectives -= objectives + if(owner.current) + to_chat(owner.current,"You are no longer the [special_role]!") + owner.special_role = null + return ..() + +/datum/antagonist/brother/proc/give_meeting_area() + if(!owner.current || !team || !team.meeting_area) + return + to_chat(owner.current, "Your designated meeting area: [team.meeting_area]") + antag_memory += "Meeting Area: [team.meeting_area]
" + +/datum/antagonist/brother/greet() + var/brother_text = "" + var/list/brothers = team.members - owner + for(var/i = 1 to brothers.len) + var/datum/mind/M = brothers[i] + brother_text += M.name + if(i == brothers.len - 1) + brother_text += " and " + else if(i != brothers.len) + brother_text += ", " + to_chat(owner.current, "You are the [owner.special_role] of [brother_text].") + to_chat(owner.current, "The Syndicate only accepts those that have proven themself. Prove yourself and prove your [team.member_name]s by completing your objectives together!") + owner.announce_objectives() + give_meeting_area() + +/datum/antagonist/brother/proc/finalize_brother() + SSticker.mode.update_brother_icons_added(owner) + +/datum/antagonist/brother/admin_add(datum/mind/new_owner,mob/admin) + //show list of possible brothers + var/list/candidates = list() + for(var/mob/living/L in GLOB.alive_mob_list) + if(!L.mind || L.mind == new_owner || !can_be_owned(L.mind)) + continue + candidates[L.mind.name] = L.mind + + var/choice = input(admin,"Choose the blood brother.", "Brother") as null|anything in candidates + if(!choice) + return + var/datum/mind/bro = candidates[choice] + var/datum/team/brother_team/T = new + T.add_member(new_owner) + T.add_member(bro) + T.pick_meeting_area() + T.forge_brother_objectives() + new_owner.add_antag_datum(/datum/antagonist/brother,T) + bro.add_antag_datum(/datum/antagonist/brother, T) + T.update_name() + message_admins("[key_name_admin(admin)] made [new_owner.current] and [bro.current] into blood brothers.") + log_admin("[key_name(admin)] made [new_owner.current] and [bro.current] into blood brothers.") + +/datum/team/brother_team + name = "brotherhood" + member_name = "blood brother" + var/meeting_area + var/static/meeting_areas = list("The Bar", "Dorms", "Escape Dock", "Arrivals", "Holodeck", "Primary Tool Storage", "Recreation Area", "Chapel", "Library") + +/datum/team/brother_team/is_solo() + return FALSE + +/datum/team/brother_team/proc/pick_meeting_area() + meeting_area = pick(meeting_areas) + meeting_areas -= meeting_area + +/datum/team/brother_team/proc/update_name() + var/list/last_names = list() + for(var/datum/mind/M in members) + var/list/split_name = splittext(M.name," ") + last_names += split_name[split_name.len] + + name = last_names.Join(" & ") + +/datum/team/brother_team/roundend_report() + var/list/parts = list() + + parts += "The blood brothers of [name] were:" + for(var/datum/mind/M in members) + parts += printplayer(M) + var/win = TRUE + var/objective_count = 1 + for(var/datum/objective/objective in objectives) + if(objective.check_completion()) + parts += "Objective #[objective_count]: [objective.explanation_text] Success!" + else + parts += "Objective #[objective_count]: [objective.explanation_text] Fail." + win = FALSE + objective_count++ + if(win) + parts += "The blood brothers were successful!" + else + parts += "The blood brothers have failed!" + + return "
[parts.Join("
")]
" + +/datum/team/brother_team/proc/add_objective(datum/objective/O, needs_target = FALSE) + O.team = src + if(needs_target) + O.find_target() + O.update_explanation_text() + objectives += O + +/datum/team/brother_team/proc/forge_brother_objectives() + objectives = list() + var/is_hijacker = prob(10) + for(var/i = 1 to max(1, CONFIG_GET(number/brother_objectives_amount) + (members.len > 2) - is_hijacker)) + forge_single_objective() + if(is_hijacker) + if(!locate(/datum/objective/hijack) in objectives) + add_objective(new/datum/objective/hijack) + else if(!locate(/datum/objective/escape) in objectives) + add_objective(new/datum/objective/escape) + +/datum/team/brother_team/proc/forge_single_objective() + if(prob(50)) + if(LAZYLEN(active_ais()) && prob(100/GLOB.joined_player_list.len)) + add_objective(new/datum/objective/destroy, TRUE) + else if(prob(30)) + add_objective(new/datum/objective/maroon, TRUE) + else + add_objective(new/datum/objective/assassinate, TRUE) + else + add_objective(new/datum/objective/steal, TRUE) + +/datum/team/brother_team/antag_listing_name() + return "[name] blood brothers" \ No newline at end of file diff --git a/code/game/gamemodes/changeling/cellular_emporium.dm b/code/modules/antagonists/changeling/cellular_emporium.dm similarity index 100% rename from code/game/gamemodes/changeling/cellular_emporium.dm rename to code/modules/antagonists/changeling/cellular_emporium.dm diff --git a/code/modules/antagonists/changeling/changeling.dm b/code/modules/antagonists/changeling/changeling.dm new file mode 100644 index 0000000000..c15b655da9 --- /dev/null +++ b/code/modules/antagonists/changeling/changeling.dm @@ -0,0 +1,538 @@ +#define LING_FAKEDEATH_TIME 400 //40 seconds +#define LING_DEAD_GENETICDAMAGE_HEAL_CAP 50 //The lowest value of geneticdamage handle_changeling() can take it to while dead. +#define LING_ABSORB_RECENT_SPEECH 8 //The amount of recent spoken lines to gain on absorbing a mob + +/datum/antagonist/changeling + name = "Changeling" + roundend_category = "changelings" + antagpanel_category = "Changeling" + job_rank = ROLE_CHANGELING + + var/you_are_greet = TRUE + var/give_objectives = TRUE + var/team_mode = FALSE //Should assign team objectives ? + + //Changeling Stuff + + var/list/stored_profiles = list() //list of datum/changelingprofile + var/datum/changelingprofile/first_prof = null + var/dna_max = 6 //How many extra DNA strands the changeling can store for transformation. + var/absorbedcount = 0 + var/chem_charges = 20 + var/chem_storage = 75 + var/chem_recharge_rate = 1 + var/chem_recharge_slowdown = 0 + var/sting_range = 2 + var/changelingID = "Changeling" + var/geneticdamage = 0 + var/isabsorbing = 0 + var/islinking = 0 + var/geneticpoints = 10 + var/purchasedpowers = list() + var/mimicing = "" + var/canrespec = 0 + var/changeling_speak = 0 + var/datum/dna/chosen_dna + var/obj/effect/proc_holder/changeling/sting/chosen_sting + var/datum/cellular_emporium/cellular_emporium + var/datum/action/innate/cellular_emporium/emporium_action + + // wip stuff + var/static/list/all_powers = typecacheof(/obj/effect/proc_holder/changeling,TRUE) + + +/datum/antagonist/changeling/Destroy() + QDEL_NULL(cellular_emporium) + QDEL_NULL(emporium_action) + . = ..() + +/datum/antagonist/changeling/proc/generate_name() + var/honorific + if(owner.current.gender == FEMALE) + honorific = "Ms." + else + honorific = "Mr." + if(GLOB.possible_changeling_IDs.len) + changelingID = pick(GLOB.possible_changeling_IDs) + GLOB.possible_changeling_IDs -= changelingID + changelingID = "[honorific] [changelingID]" + else + changelingID = "[honorific] [rand(1,999)]" + +/datum/antagonist/changeling/proc/create_actions() + cellular_emporium = new(src) + emporium_action = new(cellular_emporium) + +/datum/antagonist/changeling/on_gain() + generate_name() + create_actions() + reset_powers() + create_initial_profile() + if(give_objectives) + if(team_mode) + forge_team_objectives() + forge_objectives() + remove_clownmut() + . = ..() + +/datum/antagonist/changeling/on_removal() + remove_changeling_powers() + owner.objectives -= objectives + . = ..() + +/datum/antagonist/changeling/proc/remove_clownmut() + if (owner) + var/mob/living/carbon/human/H = owner.current + if(istype(H) && owner.assigned_role == "Clown") + to_chat(H, "You have evolved beyond your clownish nature, allowing you to wield weapons without harming yourself.") + H.dna.remove_mutation(CLOWNMUT) + +/datum/antagonist/changeling/proc/reset_properties() + changeling_speak = 0 + chosen_sting = null + geneticpoints = initial(geneticpoints) + sting_range = initial(sting_range) + chem_storage = initial(chem_storage) + chem_recharge_rate = initial(chem_recharge_rate) + chem_charges = min(chem_charges, chem_storage) + chem_recharge_slowdown = initial(chem_recharge_slowdown) + mimicing = "" + +/datum/antagonist/changeling/proc/remove_changeling_powers() + if(ishuman(owner.current) || ismonkey(owner.current)) + reset_properties() + for(var/obj/effect/proc_holder/changeling/p in purchasedpowers) + if(p.always_keep) + continue + purchasedpowers -= p + p.on_refund(owner.current) + + //MOVE THIS + if(owner.current.hud_used) + owner.current.hud_used.lingstingdisplay.icon_state = null + owner.current.hud_used.lingstingdisplay.invisibility = INVISIBILITY_ABSTRACT + +/datum/antagonist/changeling/proc/reset_powers() + if(purchasedpowers) + remove_changeling_powers() + //Repurchase free powers. + for(var/path in all_powers) + var/obj/effect/proc_holder/changeling/S = new path() + if(!S.dna_cost) + if(!has_sting(S)) + purchasedpowers += S + S.on_purchase(owner.current,TRUE) + +/datum/antagonist/changeling/proc/has_sting(obj/effect/proc_holder/changeling/power) + for(var/obj/effect/proc_holder/changeling/P in purchasedpowers) + if(initial(power.name) == P.name) + return TRUE + return FALSE + + +/datum/antagonist/changeling/proc/purchase_power(sting_name) + var/obj/effect/proc_holder/changeling/thepower = null + + for(var/path in all_powers) + var/obj/effect/proc_holder/changeling/S = path + if(initial(S.name) == sting_name) + thepower = new path() + break + + if(!thepower) + to_chat(owner.current, "This is awkward. Changeling power purchase failed, please report this bug to a coder!") + return + + if(absorbedcount < thepower.req_dna) + to_chat(owner.current, "We lack the energy to evolve this ability!") + return + + if(has_sting(thepower)) + to_chat(owner.current, "We have already evolved this ability!") + return + + if(thepower.dna_cost < 0) + to_chat(owner.current, "We cannot evolve this ability.") + return + + if(geneticpoints < thepower.dna_cost) + to_chat(owner.current, "We have reached our capacity for abilities.") + return + + if(owner.current.has_trait(TRAIT_FAKEDEATH))//To avoid potential exploits by buying new powers while in stasis, which clears your verblist. + to_chat(owner.current, "We lack the energy to evolve new abilities right now.") + return + + geneticpoints -= thepower.dna_cost + purchasedpowers += thepower + thepower.on_purchase(owner.current) + +/datum/antagonist/changeling/proc/readapt() + if(!ishuman(owner.current)) + to_chat(owner.current, "We can't remove our evolutions in this form!") + return + if(canrespec) + to_chat(owner.current, "We have removed our evolutions from this form, and are now ready to readapt.") + reset_powers() + canrespec = 0 + SSblackbox.record_feedback("tally", "changeling_power_purchase", 1, "Readapt") + return 1 + else + to_chat(owner.current, "You lack the power to readapt your evolutions!") + return 0 + +//Called in life() +/datum/antagonist/changeling/proc/regenerate() + var/mob/living/carbon/the_ling = owner.current + if(istype(the_ling)) + emporium_action.Grant(the_ling) + if(the_ling.stat == DEAD) + chem_charges = min(max(0, chem_charges + chem_recharge_rate - chem_recharge_slowdown), (chem_storage*0.5)) + geneticdamage = max(LING_DEAD_GENETICDAMAGE_HEAL_CAP,geneticdamage-1) + else //not dead? no chem/geneticdamage caps. + chem_charges = min(max(0, chem_charges + chem_recharge_rate - chem_recharge_slowdown), chem_storage) + geneticdamage = max(0, geneticdamage-1) + + +/datum/antagonist/changeling/proc/get_dna(dna_owner) + for(var/datum/changelingprofile/prof in stored_profiles) + if(dna_owner == prof.name) + return prof + +/datum/antagonist/changeling/proc/has_dna(datum/dna/tDNA) + for(var/datum/changelingprofile/prof in stored_profiles) + if(tDNA.is_same_as(prof.dna)) + return TRUE + return FALSE + +/datum/antagonist/changeling/proc/can_absorb_dna(mob/living/carbon/human/target, var/verbose=1) + var/mob/living/carbon/user = owner.current + if(!istype(user)) + return + if(stored_profiles.len) + var/datum/changelingprofile/prof = stored_profiles[1] + if(prof.dna == user.dna && stored_profiles.len >= dna_max)//If our current DNA is the stalest, we gotta ditch it. + if(verbose) + to_chat(user, "We have reached our capacity to store genetic information! We must transform before absorbing more.") + return + if(!target) + return + if(NO_DNA_COPY in target.dna.species.species_traits) + if(verbose) + to_chat(user, "[target] is not compatible with our biology.") + return + if((target.has_trait(TRAIT_NOCLONE)) || (target.has_trait(TRAIT_NOCLONE))) + if(verbose) + to_chat(user, "DNA of [target] is ruined beyond usability!") + return + if(!ishuman(target))//Absorbing monkeys is entirely possible, but it can cause issues with transforming. That's what lesser form is for anyway! + if(verbose) + to_chat(user, "We could gain no benefit from absorbing a lesser creature.") + return + if(has_dna(target.dna)) + if(verbose) + to_chat(user, "We already have this DNA in storage!") + return + if(!target.has_dna()) + if(verbose) + to_chat(user, "[target] is not compatible with our biology.") + return + return 1 + + +/datum/antagonist/changeling/proc/create_profile(mob/living/carbon/human/H, protect = 0) + var/datum/changelingprofile/prof = new + + H.dna.real_name = H.real_name //Set this again, just to be sure that it's properly set. + var/datum/dna/new_dna = new H.dna.type + H.dna.copy_dna(new_dna) + prof.dna = new_dna + prof.name = H.real_name + prof.protected = protect + + prof.underwear = H.underwear + prof.undershirt = H.undershirt + prof.socks = H.socks + + var/list/slots = list("head", "wear_mask", "back", "wear_suit", "w_uniform", "shoes", "belt", "gloves", "glasses", "ears", "wear_id", "s_store") + for(var/slot in slots) + if(slot in H.vars) + var/obj/item/I = H.vars[slot] + if(!I) + continue + prof.name_list[slot] = I.name + prof.appearance_list[slot] = I.appearance + prof.flags_cover_list[slot] = I.flags_cover + prof.item_color_list[slot] = I.item_color + prof.item_state_list[slot] = I.item_state + prof.exists_list[slot] = 1 + else + continue + + return prof + +/datum/antagonist/changeling/proc/add_profile(datum/changelingprofile/prof) + if(stored_profiles.len > dna_max) + if(!push_out_profile()) + return + + if(!first_prof) + first_prof = prof + + stored_profiles += prof + absorbedcount++ + +/datum/antagonist/changeling/proc/add_new_profile(mob/living/carbon/human/H, protect = 0) + var/datum/changelingprofile/prof = create_profile(H, protect) + add_profile(prof) + return prof + +/datum/antagonist/changeling/proc/remove_profile(mob/living/carbon/human/H, force = 0) + for(var/datum/changelingprofile/prof in stored_profiles) + if(H.real_name == prof.name) + if(prof.protected && !force) + continue + stored_profiles -= prof + qdel(prof) + +/datum/antagonist/changeling/proc/get_profile_to_remove() + for(var/datum/changelingprofile/prof in stored_profiles) + if(!prof.protected) + return prof + +/datum/antagonist/changeling/proc/push_out_profile() + var/datum/changelingprofile/removeprofile = get_profile_to_remove() + if(removeprofile) + stored_profiles -= removeprofile + return 1 + return 0 + + +/datum/antagonist/changeling/proc/create_initial_profile() + var/mob/living/carbon/C = owner.current //only carbons have dna now, so we have to typecaste + if(ishuman(C)) + add_new_profile(C) + +/datum/antagonist/changeling/apply_innate_effects() + //Brains optional. + var/mob/living/carbon/C = owner.current + if(istype(C)) + var/obj/item/organ/brain/B = C.getorganslot(ORGAN_SLOT_BRAIN) + if(B) + B.vital = FALSE + B.decoy_override = TRUE + update_changeling_icons_added() + return + +/datum/antagonist/changeling/remove_innate_effects() + update_changeling_icons_removed() + return + + +/datum/antagonist/changeling/greet() + if (you_are_greet) + to_chat(owner.current, "You are [changelingID], a changeling! You have absorbed and taken the form of a human.") + to_chat(owner.current, "Use say \":g message\" to communicate with your fellow changelings.") + to_chat(owner.current, "You must complete the following tasks:") + owner.current.playsound_local(get_turf(owner.current), 'sound/ambience/antag/ling_aler.ogg', 100, FALSE, pressure_affected = FALSE) + + owner.announce_objectives() + +/datum/antagonist/changeling/farewell() + to_chat(owner.current, "You grow weak and lose your powers! You are no longer a changeling and are stuck in your current form!") + +/datum/antagonist/changeling/proc/forge_team_objectives() + if(GLOB.changeling_team_objective_type) + var/datum/objective/changeling_team_objective/team_objective = new GLOB.changeling_team_objective_type + team_objective.owner = owner + objectives += team_objective + return + +/datum/antagonist/changeling/proc/forge_objectives() + //OBJECTIVES - random traitor objectives. Unique objectives "steal brain" and "identity theft". + //No escape alone because changelings aren't suited for it and it'd probably just lead to rampant robusting + //If it seems like they'd be able to do it in play, add a 10% chance to have to escape alone + + var/escape_objective_possible = TRUE + + //if there's a team objective, check if it's compatible with escape objectives + for(var/datum/objective/changeling_team_objective/CTO in objectives) + if(!CTO.escape_objective_compatible) + escape_objective_possible = FALSE + break + + var/datum/objective/absorb/absorb_objective = new + absorb_objective.owner = owner + absorb_objective.gen_amount_goal(6, 8) + objectives += absorb_objective + + if(prob(60)) + if(prob(85)) + var/datum/objective/steal/steal_objective = new + steal_objective.owner = owner + steal_objective.find_target() + objectives += steal_objective + else + var/datum/objective/download/download_objective = new + download_objective.owner = owner + download_objective.gen_amount_goal() + objectives += download_objective + + var/list/active_ais = active_ais() + if(active_ais.len && prob(100/GLOB.joined_player_list.len)) + var/datum/objective/destroy/destroy_objective = new + destroy_objective.owner = owner + destroy_objective.find_target() + objectives += destroy_objective + else + if(prob(70)) + var/datum/objective/assassinate/kill_objective = new + kill_objective.owner = owner + if(team_mode) //No backstabbing while in a team + kill_objective.find_target_by_role(role = "Changeling", role_type = 1, invert = 1) + else + kill_objective.find_target() + objectives += kill_objective + else + var/datum/objective/maroon/maroon_objective = new + maroon_objective.owner = owner + if(team_mode) + maroon_objective.find_target_by_role(role = "Changeling", role_type = 1, invert = 1) + else + maroon_objective.find_target() + objectives += maroon_objective + + if (!(locate(/datum/objective/escape) in objectives) && escape_objective_possible) + var/datum/objective/escape/escape_with_identity/identity_theft = new + identity_theft.owner = owner + identity_theft.target = maroon_objective.target + identity_theft.update_explanation_text() + objectives += identity_theft + escape_objective_possible = FALSE + + if (!(locate(/datum/objective/escape) in objectives) && escape_objective_possible) + if(prob(50)) + var/datum/objective/escape/escape_objective = new + escape_objective.owner = owner + objectives += escape_objective + else + var/datum/objective/escape/escape_with_identity/identity_theft = new + identity_theft.owner = owner + if(team_mode) + identity_theft.find_target_by_role(role = "Changeling", role_type = 1, invert = 1) + else + identity_theft.find_target() + objectives += identity_theft + escape_objective_possible = FALSE + + owner.objectives |= objectives + +/datum/antagonist/changeling/proc/update_changeling_icons_added() + var/datum/atom_hud/antag/hud = GLOB.huds[ANTAG_HUD_CHANGELING] + hud.join_hud(owner.current) + set_antag_hud(owner.current, "changling") + +/datum/antagonist/changeling/proc/update_changeling_icons_removed() + var/datum/atom_hud/antag/hud = GLOB.huds[ANTAG_HUD_CHANGELING] + hud.leave_hud(owner.current) + set_antag_hud(owner.current, null) + +/datum/antagonist/changeling/admin_add(datum/mind/new_owner,mob/admin) + . = ..() + to_chat(new_owner.current, "Our powers have awoken. A flash of memory returns to us...we are [changelingID], a changeling!") + +/datum/antagonist/changeling/get_admin_commands() + . = ..() + if(stored_profiles.len && (owner.current.real_name != first_prof.name)) + .["Transform to initial appearance."] = CALLBACK(src,.proc/admin_restore_appearance) + +/datum/antagonist/changeling/proc/admin_restore_appearance(mob/admin) + if(!stored_profiles.len || !iscarbon(owner.current)) + to_chat(admin, "Resetting DNA failed!") + else + var/mob/living/carbon/C = owner.current + first_prof.dna.transfer_identity(C, transfer_SE=1) + C.real_name = first_prof.name + C.updateappearance(mutcolor_update=1) + C.domutcheck() + +// Profile + +/datum/changelingprofile + var/name = "a bug" + + var/protected = 0 + + var/datum/dna/dna = null + var/list/name_list = list() //associative list of slotname = itemname + var/list/appearance_list = list() + var/list/flags_cover_list = list() + var/list/exists_list = list() + var/list/item_color_list = list() + var/list/item_state_list = list() + + var/underwear + var/undershirt + var/socks + +/datum/changelingprofile/Destroy() + qdel(dna) + . = ..() + +/datum/changelingprofile/proc/copy_profile(datum/changelingprofile/newprofile) + newprofile.name = name + newprofile.protected = protected + newprofile.dna = new dna.type + dna.copy_dna(newprofile.dna) + newprofile.name_list = name_list.Copy() + newprofile.appearance_list = appearance_list.Copy() + newprofile.flags_cover_list = flags_cover_list.Copy() + newprofile.exists_list = exists_list.Copy() + newprofile.item_color_list = item_color_list.Copy() + newprofile.item_state_list = item_state_list.Copy() + newprofile.underwear = underwear + newprofile.undershirt = undershirt + newprofile.socks = socks + + +/datum/antagonist/changeling/xenobio + name = "Xenobio Changeling" + give_objectives = FALSE + show_in_roundend = FALSE //These are here for admin tracking purposes only + you_are_greet = FALSE + +/datum/antagonist/changeling/roundend_report() + var/list/parts = list() + + var/changelingwin = 1 + if(!owner.current) + changelingwin = 0 + + parts += printplayer(owner) + + //Removed sanity if(changeling) because we -want- a runtime to inform us that the changelings list is incorrect and needs to be fixed. + parts += "Changeling ID: [changelingID]." + parts += "Genomes Extracted: [absorbedcount]" + parts += " " + if(objectives.len) + var/count = 1 + for(var/datum/objective/objective in objectives) + if(objective.check_completion()) + parts += "Objective #[count]: [objective.explanation_text] Success!
" + else + parts += "Objective #[count]: [objective.explanation_text] Fail." + changelingwin = 0 + count++ + + if(changelingwin) + parts += "The changeling was successful!" + else + parts += "The changeling has failed." + + return parts.Join("
") + +/datum/antagonist/changeling/antag_listing_name() + return ..() + "([changelingID])" + +/datum/antagonist/changeling/xenobio/antag_listing_name() + return ..() + "(Xenobio)" \ No newline at end of file diff --git a/code/game/gamemodes/changeling/changeling_power.dm b/code/modules/antagonists/changeling/changeling_power.dm similarity index 93% rename from code/game/gamemodes/changeling/changeling_power.dm rename to code/modules/antagonists/changeling/changeling_power.dm index 5b07e0e369..0b4f015824 100644 --- a/code/game/gamemodes/changeling/changeling_power.dm +++ b/code/modules/antagonists/changeling/changeling_power.dm @@ -1,78 +1,78 @@ -/* - * Don't use the apostrophe in name or desc. Causes script errors. - * TODO: combine atleast some of the functionality with /proc_holder/spell - */ - -/obj/effect/proc_holder/changeling - panel = "Changeling" - name = "Prototype Sting" - desc = "" // Fluff - var/helptext = "" // Details - var/chemical_cost = 0 // negative chemical cost is for passive abilities (chemical glands) - var/dna_cost = -1 //cost of the sting in dna points. 0 = auto-purchase, -1 = cannot be purchased - var/req_dna = 0 //amount of dna needed to use this ability. Changelings always have atleast 1 - var/req_human = 0 //if you need to be human to use this ability - var/req_stat = CONSCIOUS // CONSCIOUS, UNCONSCIOUS or DEAD - var/always_keep = 0 // important for abilities like revive that screw you if you lose them. - var/ignores_fakedeath = FALSE // usable with the FAKEDEATH flag - - -/obj/effect/proc_holder/changeling/proc/on_purchase(mob/user, is_respec) - if(!is_respec) - SSblackbox.record_feedback("tally", "changeling_power_purchase", 1, name) - -/obj/effect/proc_holder/changeling/proc/on_refund(mob/user) - return - -/obj/effect/proc_holder/changeling/Click() - var/mob/user = usr - if(!user || !user.mind || !user.mind.has_antag_datum(/datum/antagonist/changeling)) - return - try_to_sting(user) - -/obj/effect/proc_holder/changeling/proc/try_to_sting(mob/user, mob/target) - if(!can_sting(user, target)) - return - var/datum/antagonist/changeling/c = user.mind.has_antag_datum(/datum/antagonist/changeling) - if(sting_action(user, target)) - SSblackbox.record_feedback("nested tally", "changeling_powers", 1, list("[name]")) - sting_feedback(user, target) - c.chem_charges -= chemical_cost - -/obj/effect/proc_holder/changeling/proc/sting_action(mob/user, mob/target) - return 0 - -/obj/effect/proc_holder/changeling/proc/sting_feedback(mob/user, mob/target) - return 0 - -//Fairly important to remember to return 1 on success >.< -/obj/effect/proc_holder/changeling/proc/can_sting(mob/user, mob/target) - if(!ishuman(user) && !ismonkey(user)) //typecast everything from mob to carbon from this point onwards - return 0 - if(req_human && !ishuman(user)) - to_chat(user, "We cannot do that in this form!") - return 0 - var/datum/antagonist/changeling/c = user.mind.has_antag_datum(/datum/antagonist/changeling) - if(c.chem_charges < chemical_cost) - to_chat(user, "We require at least [chemical_cost] unit\s of chemicals to do that!") - return 0 - if(c.absorbedcount < req_dna) - to_chat(user, "We require at least [req_dna] sample\s of compatible DNA.") - return 0 - if(req_stat < user.stat) - to_chat(user, "We are incapacitated.") - return 0 - if((user.status_flags & FAKEDEATH) && (!ignores_fakedeath)) - to_chat(user, "We are incapacitated.") - return 0 - return 1 - -//used in /mob/Stat() -/obj/effect/proc_holder/changeling/proc/can_be_used_by(mob/user) - if(!user || QDELETED(user)) - return 0 - if(!ishuman(user) && !ismonkey(user)) - return 0 - if(req_human && !ishuman(user)) - return 0 - return 1 +/* + * Don't use the apostrophe in name or desc. Causes script errors. + * TODO: combine atleast some of the functionality with /proc_holder/spell + */ + +/obj/effect/proc_holder/changeling + panel = "Changeling" + name = "Prototype Sting" + desc = "" // Fluff + var/helptext = "" // Details + var/chemical_cost = 0 // negative chemical cost is for passive abilities (chemical glands) + var/dna_cost = -1 //cost of the sting in dna points. 0 = auto-purchase, -1 = cannot be purchased + var/req_dna = 0 //amount of dna needed to use this ability. Changelings always have atleast 1 + var/req_human = 0 //if you need to be human to use this ability + var/req_stat = CONSCIOUS // CONSCIOUS, UNCONSCIOUS or DEAD + var/always_keep = 0 // important for abilities like revive that screw you if you lose them. + var/ignores_fakedeath = FALSE // usable with the FAKEDEATH flag + + +/obj/effect/proc_holder/changeling/proc/on_purchase(mob/user, is_respec) + if(!is_respec) + SSblackbox.record_feedback("tally", "changeling_power_purchase", 1, name) + +/obj/effect/proc_holder/changeling/proc/on_refund(mob/user) + return + +/obj/effect/proc_holder/changeling/Click() + var/mob/user = usr + if(!user || !user.mind || !user.mind.has_antag_datum(/datum/antagonist/changeling)) + return + try_to_sting(user) + +/obj/effect/proc_holder/changeling/proc/try_to_sting(mob/user, mob/target) + if(!can_sting(user, target)) + return + var/datum/antagonist/changeling/c = user.mind.has_antag_datum(/datum/antagonist/changeling) + if(sting_action(user, target)) + SSblackbox.record_feedback("nested tally", "changeling_powers", 1, list("[name]")) + sting_feedback(user, target) + c.chem_charges -= chemical_cost + +/obj/effect/proc_holder/changeling/proc/sting_action(mob/user, mob/target) + return 0 + +/obj/effect/proc_holder/changeling/proc/sting_feedback(mob/user, mob/target) + return 0 + +//Fairly important to remember to return 1 on success >.< +/obj/effect/proc_holder/changeling/proc/can_sting(mob/living/user, mob/target) + if(!ishuman(user) && !ismonkey(user)) //typecast everything from mob to carbon from this point onwards + return 0 + if(req_human && !ishuman(user)) + to_chat(user, "We cannot do that in this form!") + return 0 + var/datum/antagonist/changeling/c = user.mind.has_antag_datum(/datum/antagonist/changeling) + if(c.chem_charges < chemical_cost) + to_chat(user, "We require at least [chemical_cost] unit\s of chemicals to do that!") + return 0 + if(c.absorbedcount < req_dna) + to_chat(user, "We require at least [req_dna] sample\s of compatible DNA.") + return 0 + if(req_stat < user.stat) + to_chat(user, "We are incapacitated.") + return 0 + if((user.has_trait(TRAIT_FAKEDEATH)) && (!ignores_fakedeath)) + to_chat(user, "We are incapacitated.") + return 0 + return 1 + +//used in /mob/Stat() +/obj/effect/proc_holder/changeling/proc/can_be_used_by(mob/user) + if(!user || QDELETED(user)) + return 0 + if(!ishuman(user) && !ismonkey(user)) + return 0 + if(req_human && !ishuman(user)) + return 0 + return 1 diff --git a/code/game/gamemodes/changeling/powers/absorb.dm b/code/modules/antagonists/changeling/powers/absorb.dm similarity index 97% rename from code/game/gamemodes/changeling/powers/absorb.dm rename to code/modules/antagonists/changeling/powers/absorb.dm index bd64175780..4857975d6e 100644 --- a/code/game/gamemodes/changeling/powers/absorb.dm +++ b/code/modules/antagonists/changeling/powers/absorb.dm @@ -1,113 +1,113 @@ -/obj/effect/proc_holder/changeling/absorbDNA - name = "Absorb DNA" - desc = "Absorb the DNA of our victim." - chemical_cost = 0 - dna_cost = 0 - req_human = 1 - -/obj/effect/proc_holder/changeling/absorbDNA/can_sting(mob/living/carbon/user) - if(!..()) - return - - var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) - if(changeling.isabsorbing) - to_chat(user, "We are already absorbing!") - return - - if(!user.pulling || !iscarbon(user.pulling)) - to_chat(user, "We must be grabbing a creature to absorb them!") - return - if(user.grab_state <= GRAB_NECK) - to_chat(user, "We must have a tighter grip to absorb this creature!") - return - - var/mob/living/carbon/target = user.pulling - return changeling.can_absorb_dna(target) - - - -/obj/effect/proc_holder/changeling/absorbDNA/sting_action(mob/user) - var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) - var/mob/living/carbon/human/target = user.pulling - changeling.isabsorbing = 1 - for(var/i in 1 to 3) - switch(i) - if(1) - to_chat(user, "This creature is compatible. We must hold still...") - if(2) - user.visible_message("[user] extends a proboscis!", "We extend a proboscis.") - if(3) - user.visible_message("[user] stabs [target] with the proboscis!", "We stab [target] with the proboscis.") - to_chat(target, "You feel a sharp stabbing pain!") - target.take_overall_damage(40) - - SSblackbox.record_feedback("nested tally", "changeling_powers", 1, list("Absorb DNA", "[i]")) - if(!do_mob(user, target, 150)) - to_chat(user, "Our absorption of [target] has been interrupted!") - changeling.isabsorbing = 0 - return - - SSblackbox.record_feedback("nested tally", "changeling_powers", 1, list("Absorb DNA", "4")) - user.visible_message("[user] sucks the fluids from [target]!", "We have absorbed [target].") - to_chat(target, "You are absorbed by the changeling!") - - if(!changeling.has_dna(target.dna)) - changeling.add_new_profile(target) - - if(user.nutrition < NUTRITION_LEVEL_WELL_FED) - user.nutrition = min((user.nutrition + target.nutrition), NUTRITION_LEVEL_WELL_FED) - - if(target.mind)//if the victim has got a mind - // Absorb a lizard, speak Draconic. - user.copy_known_languages_from(target) - - target.mind.show_memory(user, 0) //I can read your mind, kekeke. Output all their notes. - - //Some of target's recent speech, so the changeling can attempt to imitate them better. - //Recent as opposed to all because rounds tend to have a LOT of text. - var/list/recent_speech = list() - - var/list/say_log = target.logging[INDIVIDUAL_SAY_LOG] - - if(LAZYLEN(say_log) > LING_ABSORB_RECENT_SPEECH) - recent_speech = say_log.Copy(say_log.len-LING_ABSORB_RECENT_SPEECH+1,0) //0 so len-LING_ARS+1 to end of list - else - for(var/spoken_memory in say_log) - if(recent_speech.len >= LING_ABSORB_RECENT_SPEECH) - break - recent_speech[spoken_memory] = say_log[spoken_memory] - - if(recent_speech.len) - changeling.antag_memory += "Some of [target]'s speech patterns, we should study these to better impersonate them!
" - to_chat(user, "Some of [target]'s speech patterns, we should study these to better impersonate them!") - for(var/spoken_memory in recent_speech) - changeling.antag_memory += "\"[recent_speech[spoken_memory]]\"
" - to_chat(user, "\"[recent_speech[spoken_memory]]\"") - changeling.antag_memory += "We have no more knowledge of [target]'s speech patterns.
" - to_chat(user, "We have no more knowledge of [target]'s speech patterns.") - - - var/datum/antagonist/changeling/target_ling = target.mind.has_antag_datum(/datum/antagonist/changeling) - if(target_ling)//If the target was a changeling, suck out their extra juice and objective points! - changeling.chem_charges += min(target_ling.chem_charges, changeling.chem_storage) - changeling.absorbedcount += (target_ling.absorbedcount) - - target_ling.stored_profiles.len = 1 - target_ling.absorbedcount = 0 - - - changeling.chem_charges=min(changeling.chem_charges+10, changeling.chem_storage) - - changeling.isabsorbing = 0 - changeling.canrespec = 1 - - target.death(0) - target.Drain() - return TRUE - - - -//Absorbs the target DNA. -//datum/changeling/proc/absorb_dna(mob/living/carbon/T, mob/user) - -//datum/changeling/proc/store_dna(datum/dna/new_dna, mob/user) +/obj/effect/proc_holder/changeling/absorbDNA + name = "Absorb DNA" + desc = "Absorb the DNA of our victim." + chemical_cost = 0 + dna_cost = 0 + req_human = 1 + +/obj/effect/proc_holder/changeling/absorbDNA/can_sting(mob/living/carbon/user) + if(!..()) + return + + var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) + if(changeling.isabsorbing) + to_chat(user, "We are already absorbing!") + return + + if(!user.pulling || !iscarbon(user.pulling)) + to_chat(user, "We must be grabbing a creature to absorb them!") + return + if(user.grab_state <= GRAB_NECK) + to_chat(user, "We must have a tighter grip to absorb this creature!") + return + + var/mob/living/carbon/target = user.pulling + return changeling.can_absorb_dna(target) + + + +/obj/effect/proc_holder/changeling/absorbDNA/sting_action(mob/user) + var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) + var/mob/living/carbon/human/target = user.pulling + changeling.isabsorbing = 1 + for(var/i in 1 to 3) + switch(i) + if(1) + to_chat(user, "This creature is compatible. We must hold still...") + if(2) + user.visible_message("[user] extends a proboscis!", "We extend a proboscis.") + if(3) + user.visible_message("[user] stabs [target] with the proboscis!", "We stab [target] with the proboscis.") + to_chat(target, "You feel a sharp stabbing pain!") + target.take_overall_damage(40) + + SSblackbox.record_feedback("nested tally", "changeling_powers", 1, list("Absorb DNA", "[i]")) + if(!do_mob(user, target, 150)) + to_chat(user, "Our absorption of [target] has been interrupted!") + changeling.isabsorbing = 0 + return + + SSblackbox.record_feedback("nested tally", "changeling_powers", 1, list("Absorb DNA", "4")) + user.visible_message("[user] sucks the fluids from [target]!", "We have absorbed [target].") + to_chat(target, "You are absorbed by the changeling!") + + if(!changeling.has_dna(target.dna)) + changeling.add_new_profile(target) + + if(user.nutrition < NUTRITION_LEVEL_WELL_FED) + user.nutrition = min((user.nutrition + target.nutrition), NUTRITION_LEVEL_WELL_FED) + + if(target.mind)//if the victim has got a mind + // Absorb a lizard, speak Draconic. + user.copy_known_languages_from(target) + + target.mind.show_memory(user, 0) //I can read your mind, kekeke. Output all their notes. + + //Some of target's recent speech, so the changeling can attempt to imitate them better. + //Recent as opposed to all because rounds tend to have a LOT of text. + var/list/recent_speech = list() + + var/list/say_log = target.logging[INDIVIDUAL_SAY_LOG] + + if(LAZYLEN(say_log) > LING_ABSORB_RECENT_SPEECH) + recent_speech = say_log.Copy(say_log.len-LING_ABSORB_RECENT_SPEECH+1,0) //0 so len-LING_ARS+1 to end of list + else + for(var/spoken_memory in say_log) + if(recent_speech.len >= LING_ABSORB_RECENT_SPEECH) + break + recent_speech[spoken_memory] = say_log[spoken_memory] + + if(recent_speech.len) + changeling.antag_memory += "Some of [target]'s speech patterns, we should study these to better impersonate them!
" + to_chat(user, "Some of [target]'s speech patterns, we should study these to better impersonate them!") + for(var/spoken_memory in recent_speech) + changeling.antag_memory += "\"[recent_speech[spoken_memory]]\"
" + to_chat(user, "\"[recent_speech[spoken_memory]]\"") + changeling.antag_memory += "We have no more knowledge of [target]'s speech patterns.
" + to_chat(user, "We have no more knowledge of [target]'s speech patterns.") + + + var/datum/antagonist/changeling/target_ling = target.mind.has_antag_datum(/datum/antagonist/changeling) + if(target_ling)//If the target was a changeling, suck out their extra juice and objective points! + changeling.chem_charges += min(target_ling.chem_charges, changeling.chem_storage) + changeling.absorbedcount += (target_ling.absorbedcount) + + target_ling.stored_profiles.len = 1 + target_ling.absorbedcount = 0 + + + changeling.chem_charges=min(changeling.chem_charges+10, changeling.chem_storage) + + changeling.isabsorbing = 0 + changeling.canrespec = 1 + + target.death(0) + target.Drain() + return TRUE + + + +//Absorbs the target DNA. +//datum/changeling/proc/absorb_dna(mob/living/carbon/T, mob/user) + +//datum/changeling/proc/store_dna(datum/dna/new_dna, mob/user) diff --git a/code/game/gamemodes/changeling/powers/adrenaline.dm b/code/modules/antagonists/changeling/powers/adrenaline.dm similarity index 100% rename from code/game/gamemodes/changeling/powers/adrenaline.dm rename to code/modules/antagonists/changeling/powers/adrenaline.dm diff --git a/code/game/gamemodes/changeling/powers/augmented_eyesight.dm b/code/modules/antagonists/changeling/powers/augmented_eyesight.dm similarity index 100% rename from code/game/gamemodes/changeling/powers/augmented_eyesight.dm rename to code/modules/antagonists/changeling/powers/augmented_eyesight.dm diff --git a/code/game/gamemodes/changeling/powers/biodegrade.dm b/code/modules/antagonists/changeling/powers/biodegrade.dm similarity index 100% rename from code/game/gamemodes/changeling/powers/biodegrade.dm rename to code/modules/antagonists/changeling/powers/biodegrade.dm diff --git a/code/game/gamemodes/changeling/powers/chameleon_skin.dm b/code/modules/antagonists/changeling/powers/chameleon_skin.dm similarity index 100% rename from code/game/gamemodes/changeling/powers/chameleon_skin.dm rename to code/modules/antagonists/changeling/powers/chameleon_skin.dm diff --git a/code/game/gamemodes/changeling/powers/digitalcamo.dm b/code/modules/antagonists/changeling/powers/digitalcamo.dm similarity index 100% rename from code/game/gamemodes/changeling/powers/digitalcamo.dm rename to code/modules/antagonists/changeling/powers/digitalcamo.dm diff --git a/code/game/gamemodes/changeling/powers/fakedeath.dm b/code/modules/antagonists/changeling/powers/fakedeath.dm similarity index 88% rename from code/game/gamemodes/changeling/powers/fakedeath.dm rename to code/modules/antagonists/changeling/powers/fakedeath.dm index 330488f6da..ff0658bc27 100644 --- a/code/game/gamemodes/changeling/powers/fakedeath.dm +++ b/code/modules/antagonists/changeling/powers/fakedeath.dm @@ -1,37 +1,37 @@ -/obj/effect/proc_holder/changeling/fakedeath - name = "Reviving Stasis" - desc = "We fall into a stasis, allowing us to regenerate and trick our enemies." - chemical_cost = 15 - dna_cost = 0 - req_dna = 1 - req_stat = DEAD - -//Fake our own death and fully heal. You will appear to be dead but regenerate fully after a short delay. -/obj/effect/proc_holder/changeling/fakedeath/sting_action(mob/living/user) - to_chat(user, "We begin our stasis, preparing energy to arise once more.") - if(user.stat != DEAD) - user.emote("deathgasp") - user.tod = worldtime2text() - user.status_flags |= FAKEDEATH //play dead - user.update_stat() - user.update_canmove() - - addtimer(CALLBACK(src, .proc/ready_to_regenerate, user), LING_FAKEDEATH_TIME, TIMER_UNIQUE) - return TRUE - -/obj/effect/proc_holder/changeling/fakedeath/proc/ready_to_regenerate(mob/user) - if(user && user.mind) - var/datum/antagonist/changeling/C = user.mind.has_antag_datum(/datum/antagonist/changeling) - if(C && C.purchasedpowers) - to_chat(user, "We are ready to revive.") - C.purchasedpowers += new /obj/effect/proc_holder/changeling/revive(null) - -/obj/effect/proc_holder/changeling/fakedeath/can_sting(mob/user) - if(user.status_flags & FAKEDEATH) - to_chat(user, "We are already reviving.") - return - if(!user.stat) //Confirmation for living changelings if they want to fake their death - switch(alert("Are we sure we wish to fake our own death?",,"Yes", "No")) - if("No") - return - return ..() +/obj/effect/proc_holder/changeling/fakedeath + name = "Reviving Stasis" + desc = "We fall into a stasis, allowing us to regenerate and trick our enemies." + chemical_cost = 15 + dna_cost = 0 + req_dna = 1 + req_stat = DEAD + +//Fake our own death and fully heal. You will appear to be dead but regenerate fully after a short delay. +/obj/effect/proc_holder/changeling/fakedeath/sting_action(mob/living/user) + to_chat(user, "We begin our stasis, preparing energy to arise once more.") + if(user.stat != DEAD) + user.emote("deathgasp") + user.tod = worldtime2text() + user.fakedeath("changeling") //play dead + user.update_stat() + user.update_canmove() + + addtimer(CALLBACK(src, .proc/ready_to_regenerate, user), LING_FAKEDEATH_TIME, TIMER_UNIQUE) + return TRUE + +/obj/effect/proc_holder/changeling/fakedeath/proc/ready_to_regenerate(mob/user) + if(user && user.mind) + var/datum/antagonist/changeling/C = user.mind.has_antag_datum(/datum/antagonist/changeling) + if(C && C.purchasedpowers) + to_chat(user, "We are ready to revive.") + C.purchasedpowers += new /obj/effect/proc_holder/changeling/revive(null) + +/obj/effect/proc_holder/changeling/fakedeath/can_sting(mob/living/user) + if(user.has_trait(TRAIT_FAKEDEATH, "changeling")) + to_chat(user, "We are already reviving.") + return + if(!user.stat) //Confirmation for living changelings if they want to fake their death + switch(alert("Are we sure we wish to fake our own death?",,"Yes", "No")) + if("No") + return + return ..() diff --git a/code/game/gamemodes/changeling/powers/fleshmend.dm b/code/modules/antagonists/changeling/powers/fleshmend.dm similarity index 97% rename from code/game/gamemodes/changeling/powers/fleshmend.dm rename to code/modules/antagonists/changeling/powers/fleshmend.dm index df6a787d60..930b756b65 100644 --- a/code/game/gamemodes/changeling/powers/fleshmend.dm +++ b/code/modules/antagonists/changeling/powers/fleshmend.dm @@ -1,19 +1,19 @@ -/obj/effect/proc_holder/changeling/fleshmend - name = "Fleshmend" - desc = "Our flesh rapidly regenerates, healing our burns, bruises, and shortness of breath. Functions while unconscious." - helptext = "If we are on fire, the healing effect will not function. Does not regrow limbs or restore lost blood." - chemical_cost = 20 - dna_cost = 2 - req_stat = UNCONSCIOUS - -//Starts healing you every second for 10 seconds. -//Can be used whilst unconscious. -/obj/effect/proc_holder/changeling/fleshmend/sting_action(mob/living/user) - if(user.has_status_effect(STATUS_EFFECT_FLESHMEND)) - to_chat(user, "We are already fleshmending!") - return - to_chat(user, "We begin to heal rapidly.") - user.apply_status_effect(STATUS_EFFECT_FLESHMEND) - return TRUE - -//Check buffs.dm for the fleshmend status effect code +/obj/effect/proc_holder/changeling/fleshmend + name = "Fleshmend" + desc = "Our flesh rapidly regenerates, healing our burns, bruises, and shortness of breath. Functions while unconscious." + helptext = "If we are on fire, the healing effect will not function. Does not regrow limbs or restore lost blood." + chemical_cost = 20 + dna_cost = 2 + req_stat = UNCONSCIOUS + +//Starts healing you every second for 10 seconds. +//Can be used whilst unconscious. +/obj/effect/proc_holder/changeling/fleshmend/sting_action(mob/living/user) + if(user.has_status_effect(STATUS_EFFECT_FLESHMEND)) + to_chat(user, "We are already fleshmending!") + return + to_chat(user, "We begin to heal rapidly.") + user.apply_status_effect(STATUS_EFFECT_FLESHMEND) + return TRUE + +//Check buffs.dm for the fleshmend status effect code diff --git a/code/game/gamemodes/changeling/powers/headcrab.dm b/code/modules/antagonists/changeling/powers/headcrab.dm similarity index 100% rename from code/game/gamemodes/changeling/powers/headcrab.dm rename to code/modules/antagonists/changeling/powers/headcrab.dm diff --git a/code/game/gamemodes/changeling/powers/hivemind.dm b/code/modules/antagonists/changeling/powers/hivemind.dm similarity index 97% rename from code/game/gamemodes/changeling/powers/hivemind.dm rename to code/modules/antagonists/changeling/powers/hivemind.dm index 5d79a757ec..0e9763d2a3 100644 --- a/code/game/gamemodes/changeling/powers/hivemind.dm +++ b/code/modules/antagonists/changeling/powers/hivemind.dm @@ -1,93 +1,93 @@ -//HIVEMIND COMMUNICATION (:g) -/obj/effect/proc_holder/changeling/hivemind_comms - name = "Hivemind Communication" - desc = "We tune our senses to the airwaves to allow us to discreetly communicate and exchange DNA with other changelings." - helptext = "We will be able to talk with other changelings with :g. Exchanged DNA do not count towards absorb objectives." - dna_cost = 0 - chemical_cost = -1 - -/obj/effect/proc_holder/changeling/hivemind_comms/on_purchase(mob/user, is_respec) - ..() - var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) - changeling.changeling_speak = 1 - to_chat(user, "Use say \":g message\" to communicate with the other changelings.") - var/obj/effect/proc_holder/changeling/hivemind_upload/S1 = new - if(!changeling.has_sting(S1)) - changeling.purchasedpowers+=S1 - var/obj/effect/proc_holder/changeling/hivemind_download/S2 = new - if(!changeling.has_sting(S2)) - changeling.purchasedpowers+=S2 - -// HIVE MIND UPLOAD/DOWNLOAD DNA -GLOBAL_LIST_EMPTY(hivemind_bank) - -/obj/effect/proc_holder/changeling/hivemind_upload - name = "Hive Channel DNA" - desc = "Allows us to channel DNA in the airwaves to allow other changelings to absorb it." - chemical_cost = 10 - dna_cost = -1 - -/obj/effect/proc_holder/changeling/hivemind_upload/sting_action(var/mob/user) - var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) - var/list/names = list() - for(var/datum/changelingprofile/prof in changeling.stored_profiles) - if(!(prof in GLOB.hivemind_bank)) - names += prof.name - - if(names.len <= 0) - to_chat(user, "The airwaves already have all of our DNA.") - return - - var/chosen_name = input("Select a DNA to channel: ", "Channel DNA", null) as null|anything in names - if(!chosen_name) - return - - var/datum/changelingprofile/chosen_dna = changeling.get_dna(chosen_name) - if(!chosen_dna) - return - - var/datum/changelingprofile/uploaded_dna = new chosen_dna.type - chosen_dna.copy_profile(uploaded_dna) - GLOB.hivemind_bank += uploaded_dna - to_chat(user, "We channel the DNA of [chosen_name] to the air.") - return TRUE - -/obj/effect/proc_holder/changeling/hivemind_download - name = "Hive Absorb DNA" - desc = "Allows us to absorb DNA that has been channeled to the airwaves. Does not count towards absorb objectives." - chemical_cost = 10 - dna_cost = -1 - -/obj/effect/proc_holder/changeling/hivemind_download/can_sting(mob/living/carbon/user) - if(!..()) - return - var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) - var/datum/changelingprofile/first_prof = changeling.stored_profiles[1] - if(first_prof.name == user.real_name)//If our current DNA is the stalest, we gotta ditch it. - to_chat(user, "We have reached our capacity to store genetic information! We must transform before absorbing more.") - return - return 1 - -/obj/effect/proc_holder/changeling/hivemind_download/sting_action(mob/user) - var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) - var/list/names = list() - for(var/datum/changelingprofile/prof in GLOB.hivemind_bank) - if(!(prof in changeling.stored_profiles)) - names[prof.name] = prof - - if(names.len <= 0) - to_chat(user, "There's no new DNA to absorb from the air.") - return - - var/S = input("Select a DNA absorb from the air: ", "Absorb DNA", null) as null|anything in names - if(!S) - return - var/datum/changelingprofile/chosen_prof = names[S] - if(!chosen_prof) - return - - var/datum/changelingprofile/downloaded_prof = new chosen_prof.type - chosen_prof.copy_profile(downloaded_prof) - changeling.add_profile(downloaded_prof) - to_chat(user, "We absorb the DNA of [S] from the air.") - return TRUE +//HIVEMIND COMMUNICATION (:g) +/obj/effect/proc_holder/changeling/hivemind_comms + name = "Hivemind Communication" + desc = "We tune our senses to the airwaves to allow us to discreetly communicate and exchange DNA with other changelings." + helptext = "We will be able to talk with other changelings with :g. Exchanged DNA do not count towards absorb objectives." + dna_cost = 0 + chemical_cost = -1 + +/obj/effect/proc_holder/changeling/hivemind_comms/on_purchase(mob/user, is_respec) + ..() + var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) + changeling.changeling_speak = 1 + to_chat(user, "Use say \":g message\" to communicate with the other changelings.") + var/obj/effect/proc_holder/changeling/hivemind_upload/S1 = new + if(!changeling.has_sting(S1)) + changeling.purchasedpowers+=S1 + var/obj/effect/proc_holder/changeling/hivemind_download/S2 = new + if(!changeling.has_sting(S2)) + changeling.purchasedpowers+=S2 + +// HIVE MIND UPLOAD/DOWNLOAD DNA +GLOBAL_LIST_EMPTY(hivemind_bank) + +/obj/effect/proc_holder/changeling/hivemind_upload + name = "Hive Channel DNA" + desc = "Allows us to channel DNA in the airwaves to allow other changelings to absorb it." + chemical_cost = 10 + dna_cost = -1 + +/obj/effect/proc_holder/changeling/hivemind_upload/sting_action(var/mob/user) + var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) + var/list/names = list() + for(var/datum/changelingprofile/prof in changeling.stored_profiles) + if(!(prof in GLOB.hivemind_bank)) + names += prof.name + + if(names.len <= 0) + to_chat(user, "The airwaves already have all of our DNA.") + return + + var/chosen_name = input("Select a DNA to channel: ", "Channel DNA", null) as null|anything in names + if(!chosen_name) + return + + var/datum/changelingprofile/chosen_dna = changeling.get_dna(chosen_name) + if(!chosen_dna) + return + + var/datum/changelingprofile/uploaded_dna = new chosen_dna.type + chosen_dna.copy_profile(uploaded_dna) + GLOB.hivemind_bank += uploaded_dna + to_chat(user, "We channel the DNA of [chosen_name] to the air.") + return TRUE + +/obj/effect/proc_holder/changeling/hivemind_download + name = "Hive Absorb DNA" + desc = "Allows us to absorb DNA that has been channeled to the airwaves. Does not count towards absorb objectives." + chemical_cost = 10 + dna_cost = -1 + +/obj/effect/proc_holder/changeling/hivemind_download/can_sting(mob/living/carbon/user) + if(!..()) + return + var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) + var/datum/changelingprofile/first_prof = changeling.stored_profiles[1] + if(first_prof.name == user.real_name)//If our current DNA is the stalest, we gotta ditch it. + to_chat(user, "We have reached our capacity to store genetic information! We must transform before absorbing more.") + return + return 1 + +/obj/effect/proc_holder/changeling/hivemind_download/sting_action(mob/user) + var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) + var/list/names = list() + for(var/datum/changelingprofile/prof in GLOB.hivemind_bank) + if(!(prof in changeling.stored_profiles)) + names[prof.name] = prof + + if(names.len <= 0) + to_chat(user, "There's no new DNA to absorb from the air.") + return + + var/S = input("Select a DNA absorb from the air: ", "Absorb DNA", null) as null|anything in names + if(!S) + return + var/datum/changelingprofile/chosen_prof = names[S] + if(!chosen_prof) + return + + var/datum/changelingprofile/downloaded_prof = new chosen_prof.type + chosen_prof.copy_profile(downloaded_prof) + changeling.add_profile(downloaded_prof) + to_chat(user, "We absorb the DNA of [S] from the air.") + return TRUE diff --git a/code/game/gamemodes/changeling/powers/humanform.dm b/code/modules/antagonists/changeling/powers/humanform.dm similarity index 97% rename from code/game/gamemodes/changeling/powers/humanform.dm rename to code/modules/antagonists/changeling/powers/humanform.dm index 90ddfb0115..e04f00308f 100644 --- a/code/game/gamemodes/changeling/powers/humanform.dm +++ b/code/modules/antagonists/changeling/powers/humanform.dm @@ -1,30 +1,30 @@ -/obj/effect/proc_holder/changeling/humanform - name = "Human Form" - desc = "We change into a human." - chemical_cost = 5 - req_dna = 1 - -//Transform into a human. -/obj/effect/proc_holder/changeling/humanform/sting_action(mob/living/carbon/user) - var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) - var/list/names = list() - for(var/datum/changelingprofile/prof in changeling.stored_profiles) - names += "[prof.name]" - - var/chosen_name = input("Select the target DNA: ", "Target DNA", null) as null|anything in names - if(!chosen_name) - return - - var/datum/changelingprofile/chosen_prof = changeling.get_dna(chosen_name) - if(!chosen_prof) - return - if(!user || user.notransform) - return 0 - to_chat(user, "We transform our appearance.") - - changeling.purchasedpowers -= src - - var/newmob = user.humanize(TR_KEEPITEMS | TR_KEEPIMPLANTS | TR_KEEPORGANS | TR_KEEPDAMAGE | TR_KEEPVIRUS) - - changeling_transform(newmob, chosen_prof) - return TRUE +/obj/effect/proc_holder/changeling/humanform + name = "Human Form" + desc = "We change into a human." + chemical_cost = 5 + req_dna = 1 + +//Transform into a human. +/obj/effect/proc_holder/changeling/humanform/sting_action(mob/living/carbon/user) + var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) + var/list/names = list() + for(var/datum/changelingprofile/prof in changeling.stored_profiles) + names += "[prof.name]" + + var/chosen_name = input("Select the target DNA: ", "Target DNA", null) as null|anything in names + if(!chosen_name) + return + + var/datum/changelingprofile/chosen_prof = changeling.get_dna(chosen_name) + if(!chosen_prof) + return + if(!user || user.notransform) + return 0 + to_chat(user, "We transform our appearance.") + + changeling.purchasedpowers -= src + + var/newmob = user.humanize(TR_KEEPITEMS | TR_KEEPIMPLANTS | TR_KEEPORGANS | TR_KEEPDAMAGE | TR_KEEPVIRUS) + + changeling_transform(newmob, chosen_prof) + return TRUE diff --git a/code/game/gamemodes/changeling/powers/lesserform.dm b/code/modules/antagonists/changeling/powers/lesserform.dm similarity index 100% rename from code/game/gamemodes/changeling/powers/lesserform.dm rename to code/modules/antagonists/changeling/powers/lesserform.dm diff --git a/code/game/gamemodes/changeling/powers/linglink.dm b/code/modules/antagonists/changeling/powers/linglink.dm similarity index 100% rename from code/game/gamemodes/changeling/powers/linglink.dm rename to code/modules/antagonists/changeling/powers/linglink.dm diff --git a/code/game/gamemodes/changeling/powers/mimic_voice.dm b/code/modules/antagonists/changeling/powers/mimic_voice.dm similarity index 97% rename from code/game/gamemodes/changeling/powers/mimic_voice.dm rename to code/modules/antagonists/changeling/powers/mimic_voice.dm index 9c0d79e233..6808ecd61a 100644 --- a/code/game/gamemodes/changeling/powers/mimic_voice.dm +++ b/code/modules/antagonists/changeling/powers/mimic_voice.dm @@ -1,27 +1,27 @@ -/obj/effect/proc_holder/changeling/mimicvoice - name = "Mimic Voice" - desc = "We shape our vocal glands to sound like a desired voice." - helptext = "Will turn your voice into the name that you enter. We must constantly expend chemicals to maintain our form like this." - chemical_cost = 0 //constant chemical drain hardcoded - dna_cost = 1 - req_human = 1 - - -// Fake Voice -/obj/effect/proc_holder/changeling/mimicvoice/sting_action(mob/user) - var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) - if(changeling.mimicing) - changeling.mimicing = "" - changeling.chem_recharge_slowdown -= 0.5 - to_chat(user, "We return our vocal glands to their original position.") - return - - var/mimic_voice = stripped_input(user, "Enter a name to mimic.", "Mimic Voice", null, MAX_NAME_LEN) - if(!mimic_voice) - return - - changeling.mimicing = mimic_voice - changeling.chem_recharge_slowdown += 0.5 - to_chat(user, "We shape our glands to take the voice of [mimic_voice], this will slow down regenerating chemicals while active.") - to_chat(user, "Use this power again to return to our original voice and return chemical production to normal levels.") - return TRUE +/obj/effect/proc_holder/changeling/mimicvoice + name = "Mimic Voice" + desc = "We shape our vocal glands to sound like a desired voice." + helptext = "Will turn your voice into the name that you enter. We must constantly expend chemicals to maintain our form like this." + chemical_cost = 0 //constant chemical drain hardcoded + dna_cost = 1 + req_human = 1 + + +// Fake Voice +/obj/effect/proc_holder/changeling/mimicvoice/sting_action(mob/user) + var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) + if(changeling.mimicing) + changeling.mimicing = "" + changeling.chem_recharge_slowdown -= 0.5 + to_chat(user, "We return our vocal glands to their original position.") + return + + var/mimic_voice = stripped_input(user, "Enter a name to mimic.", "Mimic Voice", null, MAX_NAME_LEN) + if(!mimic_voice) + return + + changeling.mimicing = mimic_voice + changeling.chem_recharge_slowdown += 0.5 + to_chat(user, "We shape our glands to take the voice of [mimic_voice], this will slow down regenerating chemicals while active.") + to_chat(user, "Use this power again to return to our original voice and return chemical production to normal levels.") + return TRUE diff --git a/code/game/gamemodes/changeling/powers/mutations.dm b/code/modules/antagonists/changeling/powers/mutations.dm similarity index 100% rename from code/game/gamemodes/changeling/powers/mutations.dm rename to code/modules/antagonists/changeling/powers/mutations.dm diff --git a/code/game/gamemodes/changeling/powers/panacea.dm b/code/modules/antagonists/changeling/powers/panacea.dm similarity index 96% rename from code/game/gamemodes/changeling/powers/panacea.dm rename to code/modules/antagonists/changeling/powers/panacea.dm index 829b0a8512..93a05834fe 100644 --- a/code/game/gamemodes/changeling/powers/panacea.dm +++ b/code/modules/antagonists/changeling/powers/panacea.dm @@ -1,38 +1,38 @@ -/obj/effect/proc_holder/changeling/panacea - name = "Anatomic Panacea" - desc = "Expels impurifications from our form; curing diseases, removing parasites, sobering us, purging toxins and radiation, and resetting our genetic code completely." - helptext = "Can be used while unconscious." - chemical_cost = 20 - dna_cost = 1 - req_stat = UNCONSCIOUS - -//Heals the things that the other regenerative abilities don't. -/obj/effect/proc_holder/changeling/panacea/sting_action(mob/user) - to_chat(user, "We cleanse impurities from our form.") - - var/list/bad_organs = list( - user.getorgan(/obj/item/organ/body_egg), - user.getorgan(/obj/item/organ/zombie_infection)) - - for(var/o in bad_organs) - var/obj/item/organ/O = o - if(!istype(O)) - continue - - O.Remove(user) - if(iscarbon(user)) - var/mob/living/carbon/C = user - C.vomit(0, toxic = TRUE) - O.forceMove(get_turf(user)) - - user.reagents.add_reagent("mutadone", 10) - user.reagents.add_reagent("pen_acid", 20) - user.reagents.add_reagent("antihol", 10) - user.reagents.add_reagent("mannitol", 25) - - for(var/thing in user.viruses) - var/datum/disease/D = thing - if(D.severity == VIRUS_SEVERITY_POSITIVE) - continue - D.cure() - return TRUE +/obj/effect/proc_holder/changeling/panacea + name = "Anatomic Panacea" + desc = "Expels impurifications from our form; curing diseases, removing parasites, sobering us, purging toxins and radiation, and resetting our genetic code completely." + helptext = "Can be used while unconscious." + chemical_cost = 20 + dna_cost = 1 + req_stat = UNCONSCIOUS + +//Heals the things that the other regenerative abilities don't. +/obj/effect/proc_holder/changeling/panacea/sting_action(mob/user) + to_chat(user, "We cleanse impurities from our form.") + + var/list/bad_organs = list( + user.getorgan(/obj/item/organ/body_egg), + user.getorgan(/obj/item/organ/zombie_infection)) + + for(var/o in bad_organs) + var/obj/item/organ/O = o + if(!istype(O)) + continue + + O.Remove(user) + if(iscarbon(user)) + var/mob/living/carbon/C = user + C.vomit(0, toxic = TRUE) + O.forceMove(get_turf(user)) + + user.reagents.add_reagent("mutadone", 10) + user.reagents.add_reagent("pen_acid", 20) + user.reagents.add_reagent("antihol", 10) + user.reagents.add_reagent("mannitol", 25) + + for(var/thing in user.viruses) + var/datum/disease/D = thing + if(D.severity == VIRUS_SEVERITY_POSITIVE) + continue + D.cure() + return TRUE diff --git a/code/game/gamemodes/changeling/powers/regenerate.dm b/code/modules/antagonists/changeling/powers/regenerate.dm similarity index 100% rename from code/game/gamemodes/changeling/powers/regenerate.dm rename to code/modules/antagonists/changeling/powers/regenerate.dm diff --git a/code/game/gamemodes/changeling/powers/revive.dm b/code/modules/antagonists/changeling/powers/revive.dm similarity index 86% rename from code/game/gamemodes/changeling/powers/revive.dm rename to code/modules/antagonists/changeling/powers/revive.dm index 716b41a837..4165eeeff2 100644 --- a/code/game/gamemodes/changeling/powers/revive.dm +++ b/code/modules/antagonists/changeling/powers/revive.dm @@ -1,37 +1,36 @@ -/obj/effect/proc_holder/changeling/revive - name = "Revive" - desc = "We regenerate, healing all damage from our form." - helptext = "Does not regrow lost organs or a missing head." - req_stat = DEAD - always_keep = TRUE - ignores_fakedeath = TRUE - -//Revive from revival stasis -/obj/effect/proc_holder/changeling/revive/sting_action(mob/living/carbon/user) - user.status_flags &= ~(FAKEDEATH) - user.tod = null - user.revive(full_heal = 1) - var/list/missing = user.get_missing_limbs() - missing -= "head" // headless changelings are funny - if(missing.len) - playsound(user, 'sound/magic/demon_consume.ogg', 50, 1) - user.visible_message("[user]'s missing limbs \ - reform, making a loud, grotesque sound!", - "Your limbs regrow, making a \ - loud, crunchy sound and giving you great pain!", - "You hear organic matter ripping \ - and tearing!") - user.emote("scream") - user.regenerate_limbs(0, list("head")) - user.regenerate_organs() - to_chat(user, "We have revived ourselves.") - var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) - changeling.purchasedpowers -= src - return TRUE - -/obj/effect/proc_holder/changeling/revive/can_be_used_by(mob/user) - if((user.stat != DEAD) && !(user.status_flags & FAKEDEATH)) - var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) - changeling.purchasedpowers -= src - return 0 - . = ..() +/obj/effect/proc_holder/changeling/revive + name = "Revive" + desc = "We regenerate, healing all damage from our form." + helptext = "Does not regrow lost organs or a missing head." + req_stat = DEAD + always_keep = TRUE + ignores_fakedeath = TRUE + +//Revive from revival stasis +/obj/effect/proc_holder/changeling/revive/sting_action(mob/living/carbon/user) + user.cure_fakedeath("changeling") + user.revive(full_heal = 1) + var/list/missing = user.get_missing_limbs() + missing -= "head" // headless changelings are funny + if(missing.len) + playsound(user, 'sound/magic/demon_consume.ogg', 50, 1) + user.visible_message("[user]'s missing limbs \ + reform, making a loud, grotesque sound!", + "Your limbs regrow, making a \ + loud, crunchy sound and giving you great pain!", + "You hear organic matter ripping \ + and tearing!") + user.emote("scream") + user.regenerate_limbs(0, list("head")) + user.regenerate_organs() + to_chat(user, "We have revived ourselves.") + var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) + changeling.purchasedpowers -= src + return TRUE + +/obj/effect/proc_holder/changeling/revive/can_be_used_by(mob/living/user) + if((user.stat != DEAD) && !(user.has_trait(TRAIT_FAKEDEATH))) + var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) + changeling.purchasedpowers -= src + return 0 + . = ..() diff --git a/code/game/gamemodes/changeling/powers/shriek.dm b/code/modules/antagonists/changeling/powers/shriek.dm similarity index 97% rename from code/game/gamemodes/changeling/powers/shriek.dm rename to code/modules/antagonists/changeling/powers/shriek.dm index 667dc06daf..ca79562081 100644 --- a/code/game/gamemodes/changeling/powers/shriek.dm +++ b/code/modules/antagonists/changeling/powers/shriek.dm @@ -1,42 +1,42 @@ -/obj/effect/proc_holder/changeling/resonant_shriek - name = "Resonant Shriek" - desc = "Our lungs and vocal cords shift, allowing us to briefly emit a noise that deafens and confuses the weak-minded." - helptext = "Emits a high-frequency sound that confuses and deafens humans, blows out nearby lights and overloads cyborg sensors." - chemical_cost = 20 - dna_cost = 1 - req_human = 1 - -//A flashy ability, good for crowd control and sewing chaos. -/obj/effect/proc_holder/changeling/resonant_shriek/sting_action(mob/user) - for(var/mob/living/M in get_hearers_in_view(4, user)) - if(iscarbon(M)) - var/mob/living/carbon/C = M - if(!C.mind || !C.mind.has_antag_datum(/datum/antagonist/changeling)) - C.adjustEarDamage(0, 30) - C.confused += 25 - C.Jitter(50) - else - SEND_SOUND(C, sound('sound/effects/screech.ogg')) - - if(issilicon(M)) - SEND_SOUND(M, sound('sound/weapons/flash.ogg')) - M.Knockdown(rand(100,200)) - - for(var/obj/machinery/light/L in range(4, user)) - L.on = 1 - L.break_light_tube() - return TRUE - -/obj/effect/proc_holder/changeling/dissonant_shriek - name = "Dissonant Shriek" - desc = "We shift our vocal cords to release a high-frequency sound that overloads nearby electronics." - chemical_cost = 20 - dna_cost = 1 - -//A flashy ability, good for crowd control and sewing chaos. -/obj/effect/proc_holder/changeling/dissonant_shriek/sting_action(mob/user) - for(var/obj/machinery/light/L in range(5, usr)) - L.on = 1 - L.break_light_tube() - empulse(get_turf(user), 2, 5, 1) - return TRUE +/obj/effect/proc_holder/changeling/resonant_shriek + name = "Resonant Shriek" + desc = "Our lungs and vocal cords shift, allowing us to briefly emit a noise that deafens and confuses the weak-minded." + helptext = "Emits a high-frequency sound that confuses and deafens humans, blows out nearby lights and overloads cyborg sensors." + chemical_cost = 20 + dna_cost = 1 + req_human = 1 + +//A flashy ability, good for crowd control and sewing chaos. +/obj/effect/proc_holder/changeling/resonant_shriek/sting_action(mob/user) + for(var/mob/living/M in get_hearers_in_view(4, user)) + if(iscarbon(M)) + var/mob/living/carbon/C = M + if(!C.mind || !C.mind.has_antag_datum(/datum/antagonist/changeling)) + C.adjustEarDamage(0, 30) + C.confused += 25 + C.Jitter(50) + else + SEND_SOUND(C, sound('sound/effects/screech.ogg')) + + if(issilicon(M)) + SEND_SOUND(M, sound('sound/weapons/flash.ogg')) + M.Knockdown(rand(100,200)) + + for(var/obj/machinery/light/L in range(4, user)) + L.on = 1 + L.break_light_tube() + return TRUE + +/obj/effect/proc_holder/changeling/dissonant_shriek + name = "Dissonant Shriek" + desc = "We shift our vocal cords to release a high-frequency sound that overloads nearby electronics." + chemical_cost = 20 + dna_cost = 1 + +//A flashy ability, good for crowd control and sewing chaos. +/obj/effect/proc_holder/changeling/dissonant_shriek/sting_action(mob/user) + for(var/obj/machinery/light/L in range(5, usr)) + L.on = 1 + L.break_light_tube() + empulse(get_turf(user), 2, 5, 1) + return TRUE diff --git a/code/game/gamemodes/changeling/powers/spiders.dm b/code/modules/antagonists/changeling/powers/spiders.dm similarity index 100% rename from code/game/gamemodes/changeling/powers/spiders.dm rename to code/modules/antagonists/changeling/powers/spiders.dm diff --git a/code/game/gamemodes/changeling/powers/strained_muscles.dm b/code/modules/antagonists/changeling/powers/strained_muscles.dm similarity index 91% rename from code/game/gamemodes/changeling/powers/strained_muscles.dm rename to code/modules/antagonists/changeling/powers/strained_muscles.dm index 10145c2bca..832f6073b6 100644 --- a/code/game/gamemodes/changeling/powers/strained_muscles.dm +++ b/code/modules/antagonists/changeling/powers/strained_muscles.dm @@ -16,7 +16,7 @@ if(active) to_chat(user, "Our muscles tense and strengthen.") else - user.status_flags &= ~GOTTAGOFAST + user.remove_trait(TRAIT_GOTTAGOFAST, "changeling_muscles") to_chat(user, "Our muscles relax.") if(stacks >= 10) to_chat(user, "We collapse in exhaustion.") @@ -29,12 +29,12 @@ /obj/effect/proc_holder/changeling/strained_muscles/proc/muscle_loop(mob/living/carbon/user) while(active) - user.status_flags |= GOTTAGOFAST + user.add_trait(TRAIT_GOTTAGOFAST, "changeling_muscles") if(user.stat != CONSCIOUS || user.staminaloss >= 90) active = !active to_chat(user, "Our muscles relax without the energy to strengthen them.") user.Knockdown(40) - user.status_flags &= ~GOTTAGOFAST + user.remove_trait(TRAIT_GOTTAGOFAST, "changeling_muscles") break stacks++ diff --git a/code/game/gamemodes/changeling/powers/tiny_prick.dm b/code/modules/antagonists/changeling/powers/tiny_prick.dm similarity index 95% rename from code/game/gamemodes/changeling/powers/tiny_prick.dm rename to code/modules/antagonists/changeling/powers/tiny_prick.dm index 450a482822..5c3ea52952 100644 --- a/code/game/gamemodes/changeling/powers/tiny_prick.dm +++ b/code/modules/antagonists/changeling/powers/tiny_prick.dm @@ -1,246 +1,246 @@ -/obj/effect/proc_holder/changeling/sting - name = "Tiny Prick" - desc = "Stabby stabby." - var/sting_icon = null - -/obj/effect/proc_holder/changeling/sting/Click() - var/mob/user = usr - if(!user || !user.mind) - return - var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) - if(!changeling) - return - if(!changeling.chosen_sting) - set_sting(user) - else - unset_sting(user) - return - -/obj/effect/proc_holder/changeling/sting/proc/set_sting(mob/user) - to_chat(user, "We prepare our sting, use alt+click or middle mouse button on target to sting them.") - var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) - changeling.chosen_sting = src - - user.hud_used.lingstingdisplay.icon_state = sting_icon - user.hud_used.lingstingdisplay.invisibility = 0 - -/obj/effect/proc_holder/changeling/sting/proc/unset_sting(mob/user) - to_chat(user, "We retract our sting, we can't sting anyone for now.") - var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) - changeling.chosen_sting = null - - user.hud_used.lingstingdisplay.icon_state = null - user.hud_used.lingstingdisplay.invisibility = INVISIBILITY_ABSTRACT - -/mob/living/carbon/proc/unset_sting() - if(mind) - var/datum/antagonist/changeling/changeling = mind.has_antag_datum(/datum/antagonist/changeling) - if(changeling && changeling.chosen_sting) - changeling.chosen_sting.unset_sting(src) - -/obj/effect/proc_holder/changeling/sting/can_sting(mob/user, mob/target) - if(!..()) - return - var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) - if(!changeling.chosen_sting) - to_chat(user, "We haven't prepared our sting yet!") - if(!iscarbon(target)) - return - if(!isturf(user.loc)) - return - if(!AStar(user, target.loc, /turf/proc/Distance, changeling.sting_range, simulated_only = 0)) - return - if(target.mind && target.mind.has_antag_datum(/datum/antagonist/changeling)) - sting_feedback(user, target) - changeling.chem_charges -= chemical_cost //?? - return 1 - -/obj/effect/proc_holder/changeling/sting/sting_feedback(mob/user, mob/target) - if(!target) - return - to_chat(user, "We stealthily sting [target.name].") - if(target.mind && target.mind.has_antag_datum(/datum/antagonist/changeling)) - to_chat(target, "You feel a tiny prick.") - return 1 - - -/obj/effect/proc_holder/changeling/sting/transformation - name = "Transformation Sting" - desc = "We silently sting a human, injecting a retrovirus that forces them to transform." - helptext = "The victim will transform much like a changeling would. Does not provide a warning to others. Mutations will not be transferred, and monkeys will become human." - sting_icon = "sting_transform" - chemical_cost = 50 - dna_cost = 3 - var/datum/changelingprofile/selected_dna = null - -/obj/effect/proc_holder/changeling/sting/transformation/Click() - var/mob/user = usr - var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) - if(changeling.chosen_sting) - unset_sting(user) - return - selected_dna = changeling.select_dna("Select the target DNA: ", "Target DNA") - if(!selected_dna) - return - if(NOTRANSSTING in selected_dna.dna.species.species_traits) - to_chat(user, "That DNA is not compatible with changeling retrovirus!") - return - ..() - -/obj/effect/proc_holder/changeling/sting/transformation/can_sting(mob/user, mob/living/carbon/target) - if(!..()) - return - if((target.has_disability(DISABILITY_HUSK)) || !iscarbon(target) || (NOTRANSSTING in target.dna.species.species_traits)) - to_chat(user, "Our sting appears ineffective against its DNA.") - return 0 - return 1 - -/obj/effect/proc_holder/changeling/sting/transformation/sting_action(mob/user, mob/target) - add_logs(user, target, "stung", "transformation sting", " new identity is [selected_dna.dna.real_name]") - var/datum/dna/NewDNA = selected_dna.dna - if(ismonkey(target)) - to_chat(user, "Our genes cry out as we sting [target.name]!") - - var/mob/living/carbon/C = target - . = TRUE - if(istype(C)) - C.real_name = NewDNA.real_name - NewDNA.transfer_identity(C) - if(ismonkey(C)) - C.humanize(TR_KEEPITEMS | TR_KEEPIMPLANTS | TR_KEEPORGANS | TR_KEEPDAMAGE | TR_KEEPVIRUS | TR_DEFAULTMSG) - C.updateappearance(mutcolor_update=1) - - -/obj/effect/proc_holder/changeling/sting/false_armblade - name = "False Armblade Sting" - desc = "We silently sting a human, injecting a retrovirus that mutates their arm to temporarily appear as an armblade." - helptext = "The victim will form an armblade much like a changeling would, except the armblade is dull and useless." - sting_icon = "sting_armblade" - chemical_cost = 20 - dna_cost = 1 - -/obj/item/melee/arm_blade/false - desc = "A grotesque mass of flesh that used to be your arm. Although it looks dangerous at first, you can tell it's actually quite dull and useless." - force = 5 //Basically as strong as a punch - -/obj/item/melee/arm_blade/false/afterattack(atom/target, mob/user, proximity) - return - -/obj/effect/proc_holder/changeling/sting/false_armblade/can_sting(mob/user, mob/target) - if(!..()) - return - if(isliving(target)) - var/mob/living/L = target - if((L.has_disability(DISABILITY_HUSK)) || !L.has_dna()) - to_chat(user, "Our sting appears ineffective against its DNA.") - return 0 - return 1 - -/obj/effect/proc_holder/changeling/sting/false_armblade/sting_action(mob/user, mob/target) - add_logs(user, target, "stung", object="falso armblade sting") - - var/obj/item/held = target.get_active_held_item() - if(held && !target.dropItemToGround(held)) - to_chat(user, "[held] is stuck to their hand, you cannot grow a false armblade over it!") - return - - if(ismonkey(target)) - to_chat(user, "Our genes cry out as we sting [target.name]!") - - var/obj/item/melee/arm_blade/false/blade = new(target,1) - target.put_in_hands(blade) - target.visible_message("A grotesque blade forms around [target.name]\'s arm!", "Your arm twists and mutates, transforming into a horrific monstrosity!", "You hear organic matter ripping and tearing!") - playsound(target, 'sound/effects/blobattack.ogg', 30, 1) - - addtimer(CALLBACK(src, .proc/remove_fake, target, blade), 600) - return TRUE - -/obj/effect/proc_holder/changeling/sting/false_armblade/proc/remove_fake(mob/target, obj/item/melee/arm_blade/false/blade) - playsound(target, 'sound/effects/blobattack.ogg', 30, 1) - target.visible_message("With a sickening crunch, \ - [target] reforms their [blade.name] into an arm!", - "[blade] reforms back to normal.", - "Your eyes burn horrifically!") - target.become_nearsighted(EYE_DAMAGE) - target.blind_eyes(20) - target.blur_eyes(40) - return TRUE - -/obj/effect/proc_holder/changeling/sting/LSD - name = "Hallucination Sting" - desc = "Causes terror in the target." - helptext = "We evolve the ability to sting a target with a powerful hallucinogenic chemical. The target does not notice they have been stung, and the effect occurs after 30 to 60 seconds." - sting_icon = "sting_lsd" - chemical_cost = 10 - dna_cost = 1 - -/obj/effect/proc_holder/changeling/sting/LSD/sting_action(mob/user, mob/living/carbon/target) - add_logs(user, target, "stung", "LSD sting") - addtimer(CALLBACK(src, .proc/hallucination_time, target), rand(300,600)) - return TRUE - -/obj/effect/proc_holder/changeling/sting/LSD/proc/hallucination_time(mob/living/carbon/target) - if(target) - target.hallucination = max(400, target.hallucination) - -/obj/effect/proc_holder/changeling/sting/cryo - name = "Cryogenic Sting" - desc = "We silently sting a human with a cocktail of chemicals that freeze them." - helptext = "Does not provide a warning to the victim, though they will likely realize they are suddenly freezing." - sting_icon = "sting_cryo" - chemical_cost = 15 - dna_cost = 2 - -/obj/effect/proc_holder/changeling/sting/cryo/sting_action(mob/user, mob/target) - add_logs(user, target, "stung", "cryo sting") - if(target.reagents) - target.reagents.add_reagent("frostoil", 30) - return TRUE +/obj/effect/proc_holder/changeling/sting + name = "Tiny Prick" + desc = "Stabby stabby." + var/sting_icon = null + +/obj/effect/proc_holder/changeling/sting/Click() + var/mob/user = usr + if(!user || !user.mind) + return + var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) + if(!changeling) + return + if(!changeling.chosen_sting) + set_sting(user) + else + unset_sting(user) + return + +/obj/effect/proc_holder/changeling/sting/proc/set_sting(mob/user) + to_chat(user, "We prepare our sting, use alt+click or middle mouse button on target to sting them.") + var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) + changeling.chosen_sting = src + + user.hud_used.lingstingdisplay.icon_state = sting_icon + user.hud_used.lingstingdisplay.invisibility = 0 + +/obj/effect/proc_holder/changeling/sting/proc/unset_sting(mob/user) + to_chat(user, "We retract our sting, we can't sting anyone for now.") + var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) + changeling.chosen_sting = null + + user.hud_used.lingstingdisplay.icon_state = null + user.hud_used.lingstingdisplay.invisibility = INVISIBILITY_ABSTRACT + +/mob/living/carbon/proc/unset_sting() + if(mind) + var/datum/antagonist/changeling/changeling = mind.has_antag_datum(/datum/antagonist/changeling) + if(changeling && changeling.chosen_sting) + changeling.chosen_sting.unset_sting(src) + +/obj/effect/proc_holder/changeling/sting/can_sting(mob/user, mob/target) + if(!..()) + return + var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) + if(!changeling.chosen_sting) + to_chat(user, "We haven't prepared our sting yet!") + if(!iscarbon(target)) + return + if(!isturf(user.loc)) + return + if(!AStar(user, target.loc, /turf/proc/Distance, changeling.sting_range, simulated_only = 0)) + return + if(target.mind && target.mind.has_antag_datum(/datum/antagonist/changeling)) + sting_feedback(user, target) + changeling.chem_charges -= chemical_cost //?? + return 1 + +/obj/effect/proc_holder/changeling/sting/sting_feedback(mob/user, mob/target) + if(!target) + return + to_chat(user, "We stealthily sting [target.name].") + if(target.mind && target.mind.has_antag_datum(/datum/antagonist/changeling)) + to_chat(target, "You feel a tiny prick.") + return 1 + + +/obj/effect/proc_holder/changeling/sting/transformation + name = "Transformation Sting" + desc = "We silently sting a human, injecting a retrovirus that forces them to transform." + helptext = "The victim will transform much like a changeling would. Does not provide a warning to others. Mutations will not be transferred, and monkeys will become human." + sting_icon = "sting_transform" + chemical_cost = 50 + dna_cost = 3 + var/datum/changelingprofile/selected_dna = null + +/obj/effect/proc_holder/changeling/sting/transformation/Click() + var/mob/user = usr + var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) + if(changeling.chosen_sting) + unset_sting(user) + return + selected_dna = changeling.select_dna("Select the target DNA: ", "Target DNA") + if(!selected_dna) + return + if(NOTRANSSTING in selected_dna.dna.species.species_traits) + to_chat(user, "That DNA is not compatible with changeling retrovirus!") + return + ..() + +/obj/effect/proc_holder/changeling/sting/transformation/can_sting(mob/user, mob/living/carbon/target) + if(!..()) + return + if((target.has_trait(TRAIT_HUSK)) || !iscarbon(target) || (NOTRANSSTING in target.dna.species.species_traits)) + to_chat(user, "Our sting appears ineffective against its DNA.") + return 0 + return 1 + +/obj/effect/proc_holder/changeling/sting/transformation/sting_action(mob/user, mob/target) + add_logs(user, target, "stung", "transformation sting", " new identity is [selected_dna.dna.real_name]") + var/datum/dna/NewDNA = selected_dna.dna + if(ismonkey(target)) + to_chat(user, "Our genes cry out as we sting [target.name]!") + + var/mob/living/carbon/C = target + . = TRUE + if(istype(C)) + C.real_name = NewDNA.real_name + NewDNA.transfer_identity(C) + if(ismonkey(C)) + C.humanize(TR_KEEPITEMS | TR_KEEPIMPLANTS | TR_KEEPORGANS | TR_KEEPDAMAGE | TR_KEEPVIRUS | TR_DEFAULTMSG) + C.updateappearance(mutcolor_update=1) + + +/obj/effect/proc_holder/changeling/sting/false_armblade + name = "False Armblade Sting" + desc = "We silently sting a human, injecting a retrovirus that mutates their arm to temporarily appear as an armblade." + helptext = "The victim will form an armblade much like a changeling would, except the armblade is dull and useless." + sting_icon = "sting_armblade" + chemical_cost = 20 + dna_cost = 1 + +/obj/item/melee/arm_blade/false + desc = "A grotesque mass of flesh that used to be your arm. Although it looks dangerous at first, you can tell it's actually quite dull and useless." + force = 5 //Basically as strong as a punch + +/obj/item/melee/arm_blade/false/afterattack(atom/target, mob/user, proximity) + return + +/obj/effect/proc_holder/changeling/sting/false_armblade/can_sting(mob/user, mob/target) + if(!..()) + return + if(isliving(target)) + var/mob/living/L = target + if((L.has_trait(TRAIT_HUSK)) || !L.has_dna()) + to_chat(user, "Our sting appears ineffective against its DNA.") + return 0 + return 1 + +/obj/effect/proc_holder/changeling/sting/false_armblade/sting_action(mob/user, mob/target) + add_logs(user, target, "stung", object="falso armblade sting") + + var/obj/item/held = target.get_active_held_item() + if(held && !target.dropItemToGround(held)) + to_chat(user, "[held] is stuck to their hand, you cannot grow a false armblade over it!") + return + + if(ismonkey(target)) + to_chat(user, "Our genes cry out as we sting [target.name]!") + + var/obj/item/melee/arm_blade/false/blade = new(target,1) + target.put_in_hands(blade) + target.visible_message("A grotesque blade forms around [target.name]\'s arm!", "Your arm twists and mutates, transforming into a horrific monstrosity!", "You hear organic matter ripping and tearing!") + playsound(target, 'sound/effects/blobattack.ogg', 30, 1) + + addtimer(CALLBACK(src, .proc/remove_fake, target, blade), 600) + return TRUE + +/obj/effect/proc_holder/changeling/sting/false_armblade/proc/remove_fake(mob/target, obj/item/melee/arm_blade/false/blade) + playsound(target, 'sound/effects/blobattack.ogg', 30, 1) + target.visible_message("With a sickening crunch, \ + [target] reforms their [blade.name] into an arm!", + "[blade] reforms back to normal.", + "Your eyes burn horrifically!") + target.become_nearsighted(EYE_DAMAGE) + target.blind_eyes(20) + target.blur_eyes(40) + return TRUE + +/obj/effect/proc_holder/changeling/sting/LSD + name = "Hallucination Sting" + desc = "Causes terror in the target." + helptext = "We evolve the ability to sting a target with a powerful hallucinogenic chemical. The target does not notice they have been stung, and the effect occurs after 30 to 60 seconds." + sting_icon = "sting_lsd" + chemical_cost = 10 + dna_cost = 1 + +/obj/effect/proc_holder/changeling/sting/LSD/sting_action(mob/user, mob/living/carbon/target) + add_logs(user, target, "stung", "LSD sting") + addtimer(CALLBACK(src, .proc/hallucination_time, target), rand(300,600)) + return TRUE + +/obj/effect/proc_holder/changeling/sting/LSD/proc/hallucination_time(mob/living/carbon/target) + if(target) + target.hallucination = max(400, target.hallucination) + +/obj/effect/proc_holder/changeling/sting/cryo + name = "Cryogenic Sting" + desc = "We silently sting a human with a cocktail of chemicals that freeze them." + helptext = "Does not provide a warning to the victim, though they will likely realize they are suddenly freezing." + sting_icon = "sting_cryo" + chemical_cost = 15 + dna_cost = 2 + +/obj/effect/proc_holder/changeling/sting/cryo/sting_action(mob/user, mob/target) + add_logs(user, target, "stung", "cryo sting") + if(target.reagents) + target.reagents.add_reagent("frostoil", 30) + return TRUE diff --git a/code/game/gamemodes/changeling/powers/transform.dm b/code/modules/antagonists/changeling/powers/transform.dm similarity index 96% rename from code/game/gamemodes/changeling/powers/transform.dm rename to code/modules/antagonists/changeling/powers/transform.dm index a977bab3e0..f5e6706af6 100644 --- a/code/game/gamemodes/changeling/powers/transform.dm +++ b/code/modules/antagonists/changeling/powers/transform.dm @@ -1,129 +1,129 @@ -/obj/effect/proc_holder/changeling/transform - name = "Transform" - desc = "We take on the appearance and voice of one we have absorbed." - chemical_cost = 5 - dna_cost = 0 - req_dna = 1 - req_human = 1 - -/obj/item/clothing/glasses/changeling - name = "flesh" - flags_1 = NODROP_1 - -/obj/item/clothing/glasses/changeling/attack_hand(mob/user) - if(loc == user && user.mind && user.mind.has_antag_datum(/datum/antagonist/changeling)) - to_chat(user, "You reabsorb [src] into your body.") - qdel(src) - return - ..() - -/obj/item/clothing/under/changeling - name = "flesh" - flags_1 = NODROP_1 - -/obj/item/clothing/under/changeling/attack_hand(mob/user) - if(loc == user && user.mind && user.mind.has_antag_datum(/datum/antagonist/changeling)) - to_chat(user, "You reabsorb [src] into your body.") - qdel(src) - return - ..() - -/obj/item/clothing/suit/changeling - name = "flesh" - flags_1 = NODROP_1 - allowed = list(/obj/item/changeling) - -/obj/item/clothing/suit/changeling/attack_hand(mob/user) - if(loc == user && user.mind && user.mind.has_antag_datum(/datum/antagonist/changeling)) - to_chat(user, "You reabsorb [src] into your body.") - qdel(src) - return - ..() - -/obj/item/clothing/head/changeling - name = "flesh" - flags_1 = NODROP_1 - -/obj/item/clothing/head/changeling/attack_hand(mob/user) - if(loc == user && user.mind && user.mind.has_antag_datum(/datum/antagonist/changeling)) - to_chat(user, "You reabsorb [src] into your body.") - qdel(src) - return - ..() - -/obj/item/clothing/shoes/changeling - name = "flesh" - flags_1 = NODROP_1 - -/obj/item/clothing/shoes/changeling/attack_hand(mob/user) - if(loc == user && user.mind && user.mind.has_antag_datum(/datum/antagonist/changeling)) - to_chat(user, "You reabsorb [src] into your body.") - qdel(src) - return - ..() - -/obj/item/clothing/gloves/changeling - name = "flesh" - flags_1 = NODROP_1 - -/obj/item/clothing/gloves/changeling/attack_hand(mob/user) - if(loc == user && user.mind && user.mind.has_antag_datum(/datum/antagonist/changeling)) - to_chat(user, "You reabsorb [src] into your body.") - qdel(src) - return - ..() - -/obj/item/clothing/mask/changeling - name = "flesh" - flags_1 = NODROP_1 - -/obj/item/clothing/mask/changeling/attack_hand(mob/user) - if(loc == user && user.mind && user.mind.has_antag_datum(/datum/antagonist/changeling)) - to_chat(user, "You reabsorb [src] into your body.") - qdel(src) - return - ..() - -/obj/item/changeling - name = "flesh" - flags_1 = NODROP_1 - slot_flags = ALL - allowed = list(/obj/item/changeling) - -/obj/item/changeling/attack_hand(mob/user) - if(loc == user && user.mind && user.mind.has_antag_datum(/datum/antagonist/changeling)) - to_chat(user, "You reabsorb [src] into your body.") - qdel(src) - return - ..() - -//Change our DNA to that of somebody we've absorbed. -/obj/effect/proc_holder/changeling/transform/sting_action(mob/living/carbon/human/user) - var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) - var/datum/changelingprofile/chosen_prof = changeling.select_dna("Select the target DNA: ", "Target DNA") - - if(!chosen_prof) - return - - changeling_transform(user, chosen_prof) - return TRUE - -/datum/antagonist/changeling/proc/select_dna(var/prompt, var/title) - var/mob/living/carbon/user = owner.current - if(!istype(user)) - return - var/list/names = list("Drop Flesh Disguise") - for(var/datum/changelingprofile/prof in stored_profiles) - names += "[prof.name]" - - var/chosen_name = input(prompt, title, null) as null|anything in names - if(!chosen_name) - return - - if(chosen_name == "Drop Flesh Disguise") - for(var/slot in GLOB.slots) - if(istype(user.vars[slot], GLOB.slot2type[slot])) - qdel(user.vars[slot]) - - var/datum/changelingprofile/prof = get_dna(chosen_name) - return prof +/obj/effect/proc_holder/changeling/transform + name = "Transform" + desc = "We take on the appearance and voice of one we have absorbed." + chemical_cost = 5 + dna_cost = 0 + req_dna = 1 + req_human = 1 + +/obj/item/clothing/glasses/changeling + name = "flesh" + flags_1 = NODROP_1 + +/obj/item/clothing/glasses/changeling/attack_hand(mob/user) + if(loc == user && user.mind && user.mind.has_antag_datum(/datum/antagonist/changeling)) + to_chat(user, "You reabsorb [src] into your body.") + qdel(src) + return + ..() + +/obj/item/clothing/under/changeling + name = "flesh" + flags_1 = NODROP_1 + +/obj/item/clothing/under/changeling/attack_hand(mob/user) + if(loc == user && user.mind && user.mind.has_antag_datum(/datum/antagonist/changeling)) + to_chat(user, "You reabsorb [src] into your body.") + qdel(src) + return + ..() + +/obj/item/clothing/suit/changeling + name = "flesh" + flags_1 = NODROP_1 + allowed = list(/obj/item/changeling) + +/obj/item/clothing/suit/changeling/attack_hand(mob/user) + if(loc == user && user.mind && user.mind.has_antag_datum(/datum/antagonist/changeling)) + to_chat(user, "You reabsorb [src] into your body.") + qdel(src) + return + ..() + +/obj/item/clothing/head/changeling + name = "flesh" + flags_1 = NODROP_1 + +/obj/item/clothing/head/changeling/attack_hand(mob/user) + if(loc == user && user.mind && user.mind.has_antag_datum(/datum/antagonist/changeling)) + to_chat(user, "You reabsorb [src] into your body.") + qdel(src) + return + ..() + +/obj/item/clothing/shoes/changeling + name = "flesh" + flags_1 = NODROP_1 + +/obj/item/clothing/shoes/changeling/attack_hand(mob/user) + if(loc == user && user.mind && user.mind.has_antag_datum(/datum/antagonist/changeling)) + to_chat(user, "You reabsorb [src] into your body.") + qdel(src) + return + ..() + +/obj/item/clothing/gloves/changeling + name = "flesh" + flags_1 = NODROP_1 + +/obj/item/clothing/gloves/changeling/attack_hand(mob/user) + if(loc == user && user.mind && user.mind.has_antag_datum(/datum/antagonist/changeling)) + to_chat(user, "You reabsorb [src] into your body.") + qdel(src) + return + ..() + +/obj/item/clothing/mask/changeling + name = "flesh" + flags_1 = NODROP_1 + +/obj/item/clothing/mask/changeling/attack_hand(mob/user) + if(loc == user && user.mind && user.mind.has_antag_datum(/datum/antagonist/changeling)) + to_chat(user, "You reabsorb [src] into your body.") + qdel(src) + return + ..() + +/obj/item/changeling + name = "flesh" + flags_1 = NODROP_1 + slot_flags = ALL + allowed = list(/obj/item/changeling) + +/obj/item/changeling/attack_hand(mob/user) + if(loc == user && user.mind && user.mind.has_antag_datum(/datum/antagonist/changeling)) + to_chat(user, "You reabsorb [src] into your body.") + qdel(src) + return + ..() + +//Change our DNA to that of somebody we've absorbed. +/obj/effect/proc_holder/changeling/transform/sting_action(mob/living/carbon/human/user) + var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) + var/datum/changelingprofile/chosen_prof = changeling.select_dna("Select the target DNA: ", "Target DNA") + + if(!chosen_prof) + return + + changeling_transform(user, chosen_prof) + return TRUE + +/datum/antagonist/changeling/proc/select_dna(var/prompt, var/title) + var/mob/living/carbon/user = owner.current + if(!istype(user)) + return + var/list/names = list("Drop Flesh Disguise") + for(var/datum/changelingprofile/prof in stored_profiles) + names += "[prof.name]" + + var/chosen_name = input(prompt, title, null) as null|anything in names + if(!chosen_name) + return + + if(chosen_name == "Drop Flesh Disguise") + for(var/slot in GLOB.slots) + if(istype(user.vars[slot], GLOB.slot2type[slot])) + qdel(user.vars[slot]) + + var/datum/changelingprofile/prof = get_dna(chosen_name) + return prof diff --git a/code/game/gamemodes/clock_cult/clock_effect.dm b/code/modules/antagonists/clockcult/clock_effect.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_effect.dm rename to code/modules/antagonists/clockcult/clock_effect.dm diff --git a/code/game/gamemodes/clock_cult/clock_effects/city_of_cogs_rift.dm b/code/modules/antagonists/clockcult/clock_effects/city_of_cogs_rift.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_effects/city_of_cogs_rift.dm rename to code/modules/antagonists/clockcult/clock_effects/city_of_cogs_rift.dm diff --git a/code/game/gamemodes/clock_cult/clock_effects/clock_overlay.dm b/code/modules/antagonists/clockcult/clock_effects/clock_overlay.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_effects/clock_overlay.dm rename to code/modules/antagonists/clockcult/clock_effects/clock_overlay.dm diff --git a/code/game/gamemodes/clock_cult/clock_effects/clock_sigils.dm b/code/modules/antagonists/clockcult/clock_effects/clock_sigils.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_effects/clock_sigils.dm rename to code/modules/antagonists/clockcult/clock_effects/clock_sigils.dm diff --git a/code/game/gamemodes/clock_cult/clock_effects/general_markers.dm b/code/modules/antagonists/clockcult/clock_effects/general_markers.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_effects/general_markers.dm rename to code/modules/antagonists/clockcult/clock_effects/general_markers.dm diff --git a/code/game/gamemodes/clock_cult/clock_effects/servant_blocker.dm b/code/modules/antagonists/clockcult/clock_effects/servant_blocker.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_effects/servant_blocker.dm rename to code/modules/antagonists/clockcult/clock_effects/servant_blocker.dm diff --git a/code/game/gamemodes/clock_cult/clock_effects/spatial_gateway.dm b/code/modules/antagonists/clockcult/clock_effects/spatial_gateway.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_effects/spatial_gateway.dm rename to code/modules/antagonists/clockcult/clock_effects/spatial_gateway.dm diff --git a/code/game/gamemodes/clock_cult/clock_helpers/clock_powerdrain.dm b/code/modules/antagonists/clockcult/clock_helpers/clock_powerdrain.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_helpers/clock_powerdrain.dm rename to code/modules/antagonists/clockcult/clock_helpers/clock_powerdrain.dm diff --git a/code/game/gamemodes/clock_cult/clock_helpers/component_helpers.dm b/code/modules/antagonists/clockcult/clock_helpers/component_helpers.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_helpers/component_helpers.dm rename to code/modules/antagonists/clockcult/clock_helpers/component_helpers.dm diff --git a/code/game/gamemodes/clock_cult/clock_helpers/fabrication_helpers.dm b/code/modules/antagonists/clockcult/clock_helpers/fabrication_helpers.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_helpers/fabrication_helpers.dm rename to code/modules/antagonists/clockcult/clock_helpers/fabrication_helpers.dm diff --git a/code/game/gamemodes/clock_cult/clock_helpers/hierophant_network.dm b/code/modules/antagonists/clockcult/clock_helpers/hierophant_network.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_helpers/hierophant_network.dm rename to code/modules/antagonists/clockcult/clock_helpers/hierophant_network.dm diff --git a/code/game/gamemodes/clock_cult/clock_helpers/power_helpers.dm b/code/modules/antagonists/clockcult/clock_helpers/power_helpers.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_helpers/power_helpers.dm rename to code/modules/antagonists/clockcult/clock_helpers/power_helpers.dm diff --git a/code/game/gamemodes/clock_cult/clock_helpers/ratvarian_language.dm b/code/modules/antagonists/clockcult/clock_helpers/ratvarian_language.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_helpers/ratvarian_language.dm rename to code/modules/antagonists/clockcult/clock_helpers/ratvarian_language.dm diff --git a/code/game/gamemodes/clock_cult/clock_helpers/scripture_checks.dm b/code/modules/antagonists/clockcult/clock_helpers/scripture_checks.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_helpers/scripture_checks.dm rename to code/modules/antagonists/clockcult/clock_helpers/scripture_checks.dm diff --git a/code/game/gamemodes/clock_cult/clock_helpers/slab_abilities.dm b/code/modules/antagonists/clockcult/clock_helpers/slab_abilities.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_helpers/slab_abilities.dm rename to code/modules/antagonists/clockcult/clock_helpers/slab_abilities.dm diff --git a/code/game/gamemodes/clock_cult/clock_item.dm b/code/modules/antagonists/clockcult/clock_item.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_item.dm rename to code/modules/antagonists/clockcult/clock_item.dm diff --git a/code/game/gamemodes/clock_cult/clock_items/clock_components.dm b/code/modules/antagonists/clockcult/clock_items/clock_components.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_items/clock_components.dm rename to code/modules/antagonists/clockcult/clock_items/clock_components.dm diff --git a/code/game/gamemodes/clock_cult/clock_items/clock_weapons/_call_weapon.dm b/code/modules/antagonists/clockcult/clock_items/clock_weapons/_call_weapon.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_items/clock_weapons/_call_weapon.dm rename to code/modules/antagonists/clockcult/clock_items/clock_weapons/_call_weapon.dm diff --git a/code/game/gamemodes/clock_cult/clock_items/clock_weapons/ratvarian_spear.dm b/code/modules/antagonists/clockcult/clock_items/clock_weapons/ratvarian_spear.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_items/clock_weapons/ratvarian_spear.dm rename to code/modules/antagonists/clockcult/clock_items/clock_weapons/ratvarian_spear.dm diff --git a/code/game/gamemodes/clock_cult/clock_items/clockwork_armor.dm b/code/modules/antagonists/clockcult/clock_items/clockwork_armor.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_items/clockwork_armor.dm rename to code/modules/antagonists/clockcult/clock_items/clockwork_armor.dm diff --git a/code/game/gamemodes/clock_cult/clock_items/clockwork_slab.dm b/code/modules/antagonists/clockcult/clock_items/clockwork_slab.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_items/clockwork_slab.dm rename to code/modules/antagonists/clockcult/clock_items/clockwork_slab.dm diff --git a/code/game/gamemodes/clock_cult/clock_items/clockwork_weaponry.dm b/code/modules/antagonists/clockcult/clock_items/clockwork_weaponry.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_items/clockwork_weaponry.dm rename to code/modules/antagonists/clockcult/clock_items/clockwork_weaponry.dm diff --git a/code/game/gamemodes/clock_cult/clock_items/construct_chassis.dm b/code/modules/antagonists/clockcult/clock_items/construct_chassis.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_items/construct_chassis.dm rename to code/modules/antagonists/clockcult/clock_items/construct_chassis.dm diff --git a/code/game/gamemodes/clock_cult/clock_items/integration_cog.dm b/code/modules/antagonists/clockcult/clock_items/integration_cog.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_items/integration_cog.dm rename to code/modules/antagonists/clockcult/clock_items/integration_cog.dm diff --git a/code/game/gamemodes/clock_cult/clock_items/judicial_visor.dm b/code/modules/antagonists/clockcult/clock_items/judicial_visor.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_items/judicial_visor.dm rename to code/modules/antagonists/clockcult/clock_items/judicial_visor.dm diff --git a/code/game/gamemodes/clock_cult/clock_items/replica_fabricator.dm b/code/modules/antagonists/clockcult/clock_items/replica_fabricator.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_items/replica_fabricator.dm rename to code/modules/antagonists/clockcult/clock_items/replica_fabricator.dm diff --git a/code/game/gamemodes/clock_cult/clock_items/soul_vessel.dm b/code/modules/antagonists/clockcult/clock_items/soul_vessel.dm similarity index 96% rename from code/game/gamemodes/clock_cult/clock_items/soul_vessel.dm rename to code/modules/antagonists/clockcult/clock_items/soul_vessel.dm index ca80d6f082..9dbbf4a11b 100644 --- a/code/game/gamemodes/clock_cult/clock_items/soul_vessel.dm +++ b/code/modules/antagonists/clockcult/clock_items/soul_vessel.dm @@ -92,11 +92,9 @@ return playsound(H, 'sound/misc/splort.ogg', 60, 1, -1) playsound(H, 'sound/magic/clockwork/anima_fragment_attack.ogg', 40, 1, -1) - var/prev_fakedeath = (H.status_flags & FAKEDEATH) - H.status_flags |= FAKEDEATH //we want to make sure they don't deathgasp and maybe possibly explode + H.fakedeath("soul_vessel") //we want to make sure they don't deathgasp and maybe possibly explode H.death() - if(!prev_fakedeath) - H.status_flags &= ~FAKEDEATH + H.cure_fakedeath("soul_vessel") H.apply_status_effect(STATUS_EFFECT_SIGILMARK) //let them be affected by vitality matrices picked_name = "Slave" braintype = picked_name diff --git a/code/game/gamemodes/clock_cult/clock_items/wraith_spectacles.dm b/code/modules/antagonists/clockcult/clock_items/wraith_spectacles.dm similarity index 95% rename from code/game/gamemodes/clock_cult/clock_items/wraith_spectacles.dm rename to code/modules/antagonists/clockcult/clock_items/wraith_spectacles.dm index 60f95d6716..c1bf94842d 100644 --- a/code/game/gamemodes/clock_cult/clock_items/wraith_spectacles.dm +++ b/code/modules/antagonists/clockcult/clock_items/wraith_spectacles.dm @@ -32,7 +32,7 @@ if(ishuman(loc)) var/mob/living/carbon/human/H = loc if(src == H.glasses && !up) - if(H.has_disability(DISABILITY_BLIND)) + if(H.has_trait(TRAIT_BLIND)) to_chat(H, "\"You're blind, idiot. Stop embarrassing yourself.\"") return if(blind_cultist(H)) @@ -76,7 +76,7 @@ ..() if(slot != slot_glasses || up) return - if(user.has_disability(DISABILITY_BLIND)) + if(user.has_trait(TRAIT_BLIND)) to_chat(user, "\"You're blind, idiot. Stop embarrassing yourself.\"" ) return if(blind_cultist(user)) //Cultists instantly go blind @@ -115,11 +115,11 @@ var/obj/item/clothing/glasses/wraith_spectacles/WS = L.glasses desc = "[glasses_right && !WS.up ? "":""]You are [glasses_right ? "":"not "]wearing wraith spectacles[glasses_right && !WS.up ? "!":"."]
\ You have taken [W.eye_damage_done] eye damage from them.
" - if(L.has_disability(DISABILITY_NEARSIGHT)) + if(L.has_trait(TRAIT_NEARSIGHT)) desc += "You are nearsighted!
" else if(glasses_right && !WS.up) desc += "You will become nearsighted at [W.nearsight_breakpoint] eye damage.
" - if(L.has_disability(DISABILITY_BLIND)) + if(L.has_trait(TRAIT_BLIND)) desc += "You are blind!" else if(glasses_right && !WS.up) desc += "You will become blind at [W.blind_breakpoint] eye damage." @@ -153,18 +153,18 @@ qdel(src) /datum/status_effect/wraith_spectacles/proc/apply_eye_damage(mob/living/carbon/human/H) - if(H.has_disability(DISABILITY_BLIND)) + if(H.has_trait(TRAIT_BLIND)) return H.adjust_eye_damage(0.5) eye_damage_done += 0.5 if(eye_damage_done >= 20) H.adjust_blurriness(2) if(eye_damage_done >= nearsight_breakpoint) - if(!H.has_disability(DISABILITY_NEARSIGHT)) + if(!H.has_trait(TRAIT_NEARSIGHT)) to_chat(H, "Your vision doubles, then trembles. Darkness begins to close in. You can't keep this up!") H.become_nearsighted(EYE_DAMAGE) if(eye_damage_done >= blind_breakpoint) - if(!H.has_disability(DISABILITY_BLIND)) + if(!H.has_trait(TRAIT_BLIND)) to_chat(H, "A piercing white light floods your vision. Suddenly, all goes dark!") H.become_blind(EYE_DAMAGE) diff --git a/code/game/gamemodes/clock_cult/clock_mobs.dm b/code/modules/antagonists/clockcult/clock_mobs.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_mobs.dm rename to code/modules/antagonists/clockcult/clock_mobs.dm diff --git a/code/game/gamemodes/clock_cult/clock_mobs/_eminence.dm b/code/modules/antagonists/clockcult/clock_mobs/_eminence.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_mobs/_eminence.dm rename to code/modules/antagonists/clockcult/clock_mobs/_eminence.dm diff --git a/code/game/gamemodes/clock_cult/clock_mobs/clockwork_marauder.dm b/code/modules/antagonists/clockcult/clock_mobs/clockwork_marauder.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_mobs/clockwork_marauder.dm rename to code/modules/antagonists/clockcult/clock_mobs/clockwork_marauder.dm diff --git a/code/game/gamemodes/clock_cult/clock_scripture.dm b/code/modules/antagonists/clockcult/clock_scripture.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_scripture.dm rename to code/modules/antagonists/clockcult/clock_scripture.dm diff --git a/code/game/gamemodes/clock_cult/clock_scriptures/scripture_applications.dm b/code/modules/antagonists/clockcult/clock_scriptures/scripture_applications.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_scriptures/scripture_applications.dm rename to code/modules/antagonists/clockcult/clock_scriptures/scripture_applications.dm diff --git a/code/game/gamemodes/clock_cult/clock_scriptures/scripture_cyborg.dm b/code/modules/antagonists/clockcult/clock_scriptures/scripture_cyborg.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_scriptures/scripture_cyborg.dm rename to code/modules/antagonists/clockcult/clock_scriptures/scripture_cyborg.dm diff --git a/code/game/gamemodes/clock_cult/clock_scriptures/scripture_drivers.dm b/code/modules/antagonists/clockcult/clock_scriptures/scripture_drivers.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_scriptures/scripture_drivers.dm rename to code/modules/antagonists/clockcult/clock_scriptures/scripture_drivers.dm diff --git a/code/game/gamemodes/clock_cult/clock_scriptures/scripture_scripts.dm b/code/modules/antagonists/clockcult/clock_scriptures/scripture_scripts.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_scriptures/scripture_scripts.dm rename to code/modules/antagonists/clockcult/clock_scriptures/scripture_scripts.dm diff --git a/code/game/gamemodes/clock_cult/clock_structure.dm b/code/modules/antagonists/clockcult/clock_structure.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_structure.dm rename to code/modules/antagonists/clockcult/clock_structure.dm diff --git a/code/game/gamemodes/clock_cult/clock_structures/_trap_object.dm b/code/modules/antagonists/clockcult/clock_structures/_trap_object.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_structures/_trap_object.dm rename to code/modules/antagonists/clockcult/clock_structures/_trap_object.dm diff --git a/code/game/gamemodes/clock_cult/clock_structures/ark_of_the_clockwork_justicar.dm b/code/modules/antagonists/clockcult/clock_structures/ark_of_the_clockwork_justicar.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_structures/ark_of_the_clockwork_justicar.dm rename to code/modules/antagonists/clockcult/clock_structures/ark_of_the_clockwork_justicar.dm diff --git a/code/game/gamemodes/clock_cult/clock_structures/clockwork_obelisk.dm b/code/modules/antagonists/clockcult/clock_structures/clockwork_obelisk.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_structures/clockwork_obelisk.dm rename to code/modules/antagonists/clockcult/clock_structures/clockwork_obelisk.dm diff --git a/code/game/gamemodes/clock_cult/clock_structures/eminence_spire.dm b/code/modules/antagonists/clockcult/clock_structures/eminence_spire.dm similarity index 94% rename from code/game/gamemodes/clock_cult/clock_structures/eminence_spire.dm rename to code/modules/antagonists/clockcult/clock_structures/eminence_spire.dm index ef035234d0..753a82fccb 100644 --- a/code/game/gamemodes/clock_cult/clock_structures/eminence_spire.dm +++ b/code/modules/antagonists/clockcult/clock_structures/eminence_spire.dm @@ -46,10 +46,12 @@ if(!IsAdminGhost(user)) return - var/datum/antagonist/clockcult/random_cultist = locate() in get_antagonists(/datum/antagonist/clockcult) //if theres no cultists new team without eminence will be created anyway. - if(random_cultist && random_cultist.clock_team && random_cultist.clock_team.eminence) - to_chat(user, "There's already an Eminence - too late!") - return + var/datum/mind/rando = locate() in get_antag_minds(/datum/antagonist/clockcult) //if theres no cultists new team without eminence will be created anyway. + if(rando) + var/datum/antagonist/clockcult/random_cultist = rando.has_antag_datum(/datum/antagonist/clockcult) + if(random_cultist && random_cultist.clock_team && random_cultist.clock_team.eminence) + to_chat(user, "There's already an Eminence - too late!") + return if(!GLOB.servants_active) to_chat(user, "The Ark must be active first!") return diff --git a/code/game/gamemodes/clock_cult/clock_structures/heralds_beacon.dm b/code/modules/antagonists/clockcult/clock_structures/heralds_beacon.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_structures/heralds_beacon.dm rename to code/modules/antagonists/clockcult/clock_structures/heralds_beacon.dm diff --git a/code/game/gamemodes/clock_cult/clock_structures/mania_motor.dm b/code/modules/antagonists/clockcult/clock_structures/mania_motor.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_structures/mania_motor.dm rename to code/modules/antagonists/clockcult/clock_structures/mania_motor.dm diff --git a/code/game/gamemodes/clock_cult/clock_structures/ocular_warden.dm b/code/modules/antagonists/clockcult/clock_structures/ocular_warden.dm similarity index 98% rename from code/game/gamemodes/clock_cult/clock_structures/ocular_warden.dm rename to code/modules/antagonists/clockcult/clock_structures/ocular_warden.dm index 7e538765f3..9c2e806537 100644 --- a/code/game/gamemodes/clock_cult/clock_structures/ocular_warden.dm +++ b/code/modules/antagonists/clockcult/clock_structures/ocular_warden.dm @@ -110,7 +110,7 @@ if(!(BI.resistance_flags & ON_FIRE)) BI.fire_act() continue - if(is_servant_of_ratvar(L) || (L.has_disability(DISABILITY_BLIND)) || L.null_rod_check()) + if(is_servant_of_ratvar(L) || (L.has_trait(TRAIT_BLIND)) || L.null_rod_check()) continue if(L.stat || L.restrained() || L.buckled || L.lying) continue diff --git a/code/game/gamemodes/clock_cult/clock_structures/ratvar_the_clockwork_justicar.dm b/code/modules/antagonists/clockcult/clock_structures/ratvar_the_clockwork_justicar.dm similarity index 99% rename from code/game/gamemodes/clock_cult/clock_structures/ratvar_the_clockwork_justicar.dm rename to code/modules/antagonists/clockcult/clock_structures/ratvar_the_clockwork_justicar.dm index 2a549d9c3c..06513e80f9 100644 --- a/code/game/gamemodes/clock_cult/clock_structures/ratvar_the_clockwork_justicar.dm +++ b/code/modules/antagonists/clockcult/clock_structures/ratvar_the_clockwork_justicar.dm @@ -15,7 +15,7 @@ var/atom/prey //Whatever Ratvar is chasing var/clashing = FALSE //If Ratvar is fighting with Nar-Sie var/convert_range = 10 - dangerous_possession = TRUE + obj_flags = CAN_BE_HIT | DANGEROUS_POSSESSION /obj/structure/destructible/clockwork/massive/ratvar/Initialize() . = ..() diff --git a/code/game/gamemodes/clock_cult/clock_structures/stargazer.dm b/code/modules/antagonists/clockcult/clock_structures/stargazer.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_structures/stargazer.dm rename to code/modules/antagonists/clockcult/clock_structures/stargazer.dm diff --git a/code/game/gamemodes/clock_cult/clock_structures/taunting_trail.dm b/code/modules/antagonists/clockcult/clock_structures/taunting_trail.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_structures/taunting_trail.dm rename to code/modules/antagonists/clockcult/clock_structures/taunting_trail.dm diff --git a/code/game/gamemodes/clock_cult/clock_structures/trap_triggers/lever.dm b/code/modules/antagonists/clockcult/clock_structures/trap_triggers/lever.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_structures/trap_triggers/lever.dm rename to code/modules/antagonists/clockcult/clock_structures/trap_triggers/lever.dm diff --git a/code/game/gamemodes/clock_cult/clock_structures/trap_triggers/pressure_sensor.dm b/code/modules/antagonists/clockcult/clock_structures/trap_triggers/pressure_sensor.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_structures/trap_triggers/pressure_sensor.dm rename to code/modules/antagonists/clockcult/clock_structures/trap_triggers/pressure_sensor.dm diff --git a/code/game/gamemodes/clock_cult/clock_structures/trap_triggers/repeater.dm b/code/modules/antagonists/clockcult/clock_structures/trap_triggers/repeater.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_structures/trap_triggers/repeater.dm rename to code/modules/antagonists/clockcult/clock_structures/trap_triggers/repeater.dm diff --git a/code/game/gamemodes/clock_cult/clock_structures/traps/brass_skewer.dm b/code/modules/antagonists/clockcult/clock_structures/traps/brass_skewer.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_structures/traps/brass_skewer.dm rename to code/modules/antagonists/clockcult/clock_structures/traps/brass_skewer.dm diff --git a/code/game/gamemodes/clock_cult/clock_structures/traps/steam_vent.dm b/code/modules/antagonists/clockcult/clock_structures/traps/steam_vent.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_structures/traps/steam_vent.dm rename to code/modules/antagonists/clockcult/clock_structures/traps/steam_vent.dm diff --git a/code/game/gamemodes/clock_cult/clock_structures/wall_gear.dm b/code/modules/antagonists/clockcult/clock_structures/wall_gear.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_structures/wall_gear.dm rename to code/modules/antagonists/clockcult/clock_structures/wall_gear.dm diff --git a/code/modules/antagonists/clockcult/clockcult.dm b/code/modules/antagonists/clockcult/clockcult.dm new file mode 100644 index 0000000000..2a05b14d70 --- /dev/null +++ b/code/modules/antagonists/clockcult/clockcult.dm @@ -0,0 +1,219 @@ +//CLOCKCULT PROOF OF CONCEPT +/datum/antagonist/clockcult + name = "Clock Cultist" + roundend_category = "clock cultists" + antagpanel_category = "Clockcult" + job_rank = ROLE_SERVANT_OF_RATVAR + var/datum/action/innate/hierophant/hierophant_network = new() + var/datum/team/clockcult/clock_team + var/make_team = TRUE //This should be only false for tutorial scarabs + +/datum/antagonist/clockcult/silent + silent = TRUE + show_in_antagpanel = FALSE //internal + +/datum/antagonist/clockcult/Destroy() + qdel(hierophant_network) + return ..() + +/datum/antagonist/clockcult/get_team() + return clock_team + +/datum/antagonist/clockcult/create_team(datum/team/clockcult/new_team) + if(!new_team && make_team) + //TODO blah blah same as the others, allow multiple + for(var/datum/antagonist/clockcult/H in GLOB.antagonists) + if(!H.owner) + continue + if(H.clock_team) + clock_team = H.clock_team + return + clock_team = new /datum/team/clockcult + return + if(make_team && !istype(new_team)) + stack_trace("Wrong team type passed to [type] initialization.") + clock_team = new_team + +/datum/antagonist/clockcult/can_be_owned(datum/mind/new_owner) + . = ..() + if(.) + . = is_eligible_servant(new_owner.current) + +/datum/antagonist/clockcult/greet() + if(!owner.current || silent) + return + owner.current.visible_message("[owner.current]'s eyes glow a blazing yellow!", null, null, 7, owner.current) //don't show the owner this message + to_chat(owner.current, "Assist your new companions in their righteous efforts. Your goal is theirs, and theirs yours. You serve the Clockwork \ + Justiciar above all else. Perform his every whim without hesitation.") + owner.current.playsound_local(get_turf(owner.current), 'sound/ambience/antag/clockcultalr.ogg', 70, FALSE, pressure_affected = FALSE) + +/datum/antagonist/clockcult/on_gain() + var/mob/living/current = owner.current + SSticker.mode.servants_of_ratvar += owner + SSticker.mode.update_servant_icons_added(owner) + owner.special_role = "Servant of Ratvar" + owner.current.log_message("Has been converted to the cult of Ratvar!", INDIVIDUAL_ATTACK_LOG) + if(issilicon(current)) + if(iscyborg(current) && !silent) + var/mob/living/silicon/robot/R = current + if(R.connected_ai && !is_servant_of_ratvar(R.connected_ai)) + to_chat(R, "You have been desynced from your master AI.
\ + In addition, your onboard camera is no longer active and you have gained additional equipment, including a limited clockwork slab.
") + else + to_chat(R, "Your onboard camera is no longer active and you have gained additional equipment, including a limited clockwork slab.") + if(isAI(current)) + to_chat(current, "You are now able to use your cameras to listen in on conversations, but can no longer speak in anything but Ratvarian.") + to_chat(current, "You can communicate with other servants by using the Hierophant Network action button in the upper left.") + else if(isbrain(current) || isclockmob(current)) + to_chat(current, "You can communicate with other servants by using the Hierophant Network action button in the upper left.") + ..() + to_chat(current, "This is Ratvar's will: [CLOCKCULT_OBJECTIVE]") + antag_memory += "Ratvar's will: [CLOCKCULT_OBJECTIVE]
" //Memorize the objectives + +/datum/antagonist/clockcult/apply_innate_effects(mob/living/mob_override) + . = ..() + var/mob/living/current = owner.current + if(istype(mob_override)) + current = mob_override + GLOB.all_clockwork_mobs += current + current.faction |= "ratvar" + current.grant_language(/datum/language/ratvar) + current.update_action_buttons_icon() //because a few clockcult things are action buttons and we may be wearing/holding them for whatever reason, we need to update buttons + if(issilicon(current)) + var/mob/living/silicon/S = current + if(iscyborg(S)) + var/mob/living/silicon/robot/R = S + if(!R.shell) + R.UnlinkSelf() + R.module.rebuild_modules() + else if(isAI(S)) + var/mob/living/silicon/ai/A = S + A.can_be_carded = FALSE + A.requires_power = POWER_REQ_CLOCKCULT + var/list/AI_frame = list(mutable_appearance('icons/mob/clockwork_mobs.dmi', "aiframe")) //make the AI's cool frame + for(var/d in GLOB.cardinals) + AI_frame += image('icons/mob/clockwork_mobs.dmi', A, "eye[rand(1, 10)]", dir = d) //the eyes are randomly fast or slow + A.add_overlay(AI_frame) + if(!A.lacks_power()) + A.ai_restore_power() + if(A.eyeobj) + A.eyeobj.relay_speech = TRUE + for(var/mob/living/silicon/robot/R in A.connected_robots) + if(R.connected_ai == A) + add_servant_of_ratvar(R) + S.laws = new/datum/ai_laws/ratvar + S.laws.associate(S) + S.update_icons() + S.show_laws() + hierophant_network.title = "Silicon" + hierophant_network.span_for_name = "nezbere" + hierophant_network.span_for_message = "brass" + else if(isbrain(current)) + hierophant_network.title = "Vessel" + hierophant_network.span_for_name = "nezbere" + hierophant_network.span_for_message = "alloy" + else if(isclockmob(current)) + hierophant_network.title = "Construct" + hierophant_network.span_for_name = "nezbere" + hierophant_network.span_for_message = "brass" + hierophant_network.Grant(current) + current.throw_alert("clockinfo", /obj/screen/alert/clockwork/infodump) + var/obj/structure/destructible/clockwork/massive/celestial_gateway/G = GLOB.ark_of_the_clockwork_justiciar + if(G.active && ishuman(current)) + current.add_overlay(mutable_appearance('icons/effects/genetics.dmi', "servitude", -MUTATIONS_LAYER)) + +/datum/antagonist/clockcult/remove_innate_effects(mob/living/mob_override) + var/mob/living/current = owner.current + if(istype(mob_override)) + current = mob_override + GLOB.all_clockwork_mobs -= current + current.faction -= "ratvar" + current.remove_language(/datum/language/ratvar) + current.clear_alert("clockinfo") + for(var/datum/action/innate/clockwork_armaments/C in owner.current.actions) //Removes any bound clockwork armor + qdel(C) + for(var/datum/action/innate/call_weapon/W in owner.current.actions) //and weapons too + qdel(W) + if(issilicon(current)) + var/mob/living/silicon/S = current + if(isAI(S)) + var/mob/living/silicon/ai/A = S + A.can_be_carded = initial(A.can_be_carded) + A.requires_power = initial(A.requires_power) + A.cut_overlays() + S.make_laws() + S.update_icons() + S.show_laws() + var/mob/living/temp_owner = current + ..() + if(iscyborg(temp_owner)) + var/mob/living/silicon/robot/R = temp_owner + R.module.rebuild_modules() + if(temp_owner) + temp_owner.update_action_buttons_icon() //because a few clockcult things are action buttons and we may be wearing/holding them, we need to update buttons + temp_owner.cut_overlays() + temp_owner.regenerate_icons() + +/datum/antagonist/clockcult/on_removal() + SSticker.mode.servants_of_ratvar -= owner + SSticker.mode.update_servant_icons_removed(owner) + if(!silent) + owner.current.visible_message("[owner] seems to have remembered their true allegiance!", null, null, null, owner.current) + to_chat(owner, "A cold, cold darkness flows through your mind, extinguishing the Justiciar's light and all of your memories as his servant.") + owner.current.log_message("Has renounced the cult of Ratvar!", INDIVIDUAL_ATTACK_LOG) + owner.special_role = null + if(iscyborg(owner.current)) + to_chat(owner.current, "Despite your freedom from Ratvar's influence, you are still irreparably damaged and no longer possess certain functions such as AI linking.") + . = ..() + + +/datum/antagonist/clockcult/admin_add(datum/mind/new_owner,mob/admin) + add_servant_of_ratvar(new_owner.current, TRUE) + message_admins("[key_name_admin(admin)] has made [new_owner.current] into a servant of Ratvar.") + log_admin("[key_name(admin)] has made [new_owner.current] into a servant of Ratvar.") + +/datum/antagonist/clockcult/admin_remove(mob/user) + remove_servant_of_ratvar(owner.current, TRUE) + message_admins("[key_name_admin(user)] has removed clockwork servant status from [owner.current].") + log_admin("[key_name(user)] has removed clockwork servant status from [owner.current].") + +/datum/antagonist/clockcult/get_admin_commands() + . = ..() + .["Give slab"] = CALLBACK(src,.proc/admin_give_slab) + +/datum/antagonist/clockcult/proc/admin_give_slab(mob/admin) + if(!SSticker.mode.equip_servant(owner.current)) + to_chat(admin, "Failed to outfit [owner.current]!") + else + to_chat(admin, "Successfully gave [owner.current] servant equipment!") + +/datum/team/clockcult + name = "Clockcult" + var/list/objective + var/datum/mind/eminence + +/datum/team/clockcult/proc/check_clockwork_victory() + if(GLOB.clockwork_gateway_activated) + return TRUE + return FALSE + +/datum/team/clockcult/roundend_report() + var/list/parts = list() + + if(check_clockwork_victory()) + parts += "Ratvar's servants defended the Ark until its activation!" + else + parts += "The Ark was destroyed! Ratvar will rust away for all eternity!" + parts += " " + parts += "The servants' objective was: [CLOCKCULT_OBJECTIVE]." + parts += "Construction Value(CV) was: [GLOB.clockwork_construction_value]" + for(var/i in SSticker.scripture_states) + if(i != SCRIPTURE_DRIVER) + parts += "[i] scripture was: [SSticker.scripture_states[i] ? "UN":""]LOCKED" + if(eminence) + parts += "The Eminence was: [printplayer(eminence)]" + if(members.len) + parts += "Ratvar's servants were:" + parts += printplayerlist(members - eminence) + + return "
[parts.Join("
")]
" \ No newline at end of file diff --git a/code/modules/antagonists/cult/cult.dm b/code/modules/antagonists/cult/cult.dm new file mode 100644 index 0000000000..3b9fa7b8c4 --- /dev/null +++ b/code/modules/antagonists/cult/cult.dm @@ -0,0 +1,329 @@ +#define SUMMON_POSSIBILITIES 3 + +/datum/antagonist/cult + name = "Cultist" + roundend_category = "cultists" + antagpanel_category = "Cult" + var/datum/action/innate/cult/comm/communion = new + var/datum/action/innate/cult/mastervote/vote = new + job_rank = ROLE_CULTIST + var/ignore_implant = FALSE + var/give_equipment = FALSE + + var/datum/team/cult/cult_team + +/datum/antagonist/cult/get_team() + return cult_team + +/datum/antagonist/cult/create_team(datum/team/cult/new_team) + if(!new_team) + //todo remove this and allow admin buttons to create more than one cult + for(var/datum/antagonist/cult/H in GLOB.antagonists) + if(!H.owner) + continue + if(H.cult_team) + cult_team = H.cult_team + return + cult_team = new /datum/team/cult + cult_team.setup_objectives() + return + if(!istype(new_team)) + stack_trace("Wrong team type passed to [type] initialization.") + cult_team = new_team + +/datum/antagonist/cult/proc/add_objectives() + objectives |= cult_team.objectives + owner.objectives |= objectives + +/datum/antagonist/cult/proc/remove_objectives() + owner.objectives -= objectives + +/datum/antagonist/cult/Destroy() + QDEL_NULL(communion) + QDEL_NULL(vote) + return ..() + +/datum/antagonist/cult/can_be_owned(datum/mind/new_owner) + . = ..() + if(. && !ignore_implant) + . = is_convertable_to_cult(new_owner.current,cult_team) + +/datum/antagonist/cult/greet() + to_chat(owner, "You are a member of the cult!") + owner.current.playsound_local(get_turf(owner.current), 'sound/ambience/antag/bloodcult.ogg', 100, FALSE, pressure_affected = FALSE)//subject to change + owner.announce_objectives() + +/datum/antagonist/cult/on_gain() + . = ..() + var/mob/living/current = owner.current + add_objectives() + if(give_equipment) + equip_cultist() + SSticker.mode.cult += owner // Only add after they've been given objectives + SSticker.mode.update_cult_icons_added(owner) + current.log_message("Has been converted to the cult of Nar'Sie!", INDIVIDUAL_ATTACK_LOG) + + if(cult_team.blood_target && cult_team.blood_target_image && current.client) + current.client.images += cult_team.blood_target_image + + +/datum/antagonist/cult/proc/equip_cultist(tome=FALSE) + var/mob/living/carbon/H = owner.current + if(!istype(H)) + return + if (owner.assigned_role == "Clown") + to_chat(owner, "Your training has allowed you to overcome your clownish nature, allowing you to wield weapons without harming yourself.") + H.dna.remove_mutation(CLOWNMUT) + + if(tome) + . += cult_give_item(/obj/item/tome, H) + else + . += cult_give_item(/obj/item/paper/talisman/supply, H) + to_chat(owner, "These will help you start the cult on this station. Use them well, and remember - you are not the only one.") + + +/datum/antagonist/cult/proc/cult_give_item(obj/item/item_path, mob/living/carbon/human/mob) + var/list/slots = list( + "backpack" = slot_in_backpack, + "left pocket" = slot_l_store, + "right pocket" = slot_r_store + ) + + var/T = new item_path(mob) + var/item_name = initial(item_path.name) + var/where = mob.equip_in_one_of_slots(T, slots) + if(!where) + to_chat(mob, "Unfortunately, you weren't able to get a [item_name]. This is very bad and you should adminhelp immediately (press F1).") + return 0 + else + to_chat(mob, "You have a [item_name] in your [where].") + if(where == "backpack") + var/obj/item/storage/B = mob.back + B.orient2hud(mob) + B.show_to(mob) + return 1 + +/datum/antagonist/cult/apply_innate_effects(mob/living/mob_override) + . = ..() + var/mob/living/current = owner.current + if(mob_override) + current = mob_override + current.faction |= "cult" + current.grant_language(/datum/language/narsie) + current.verbs += /mob/living/proc/cult_help + if(!cult_team.cult_mastered) + vote.Grant(current) + communion.Grant(current) + current.throw_alert("bloodsense", /obj/screen/alert/bloodsense) + +/datum/antagonist/cult/remove_innate_effects(mob/living/mob_override) + . = ..() + var/mob/living/current = owner.current + if(mob_override) + current = mob_override + current.faction -= "cult" + current.remove_language(/datum/language/narsie) + current.verbs -= /mob/living/proc/cult_help + vote.Remove(current) + communion.Remove(current) + current.clear_alert("bloodsense") + +/datum/antagonist/cult/on_removal() + remove_objectives() + SSticker.mode.cult -= owner + SSticker.mode.update_cult_icons_removed(owner) + if(!silent) + owner.current.visible_message("[owner.current] looks like [owner.current.p_they()] just reverted to their old faith!", null, null, null, owner.current) + to_chat(owner.current, "An unfamiliar white light flashes through your mind, cleansing the taint of the Geometer and all your memories as her servant.") + owner.current.log_message("Has renounced the cult of Nar'Sie!", INDIVIDUAL_ATTACK_LOG) + if(cult_team.blood_target && cult_team.blood_target_image && owner.current.client) + owner.current.client.images -= cult_team.blood_target_image + . = ..() + +/datum/antagonist/cult/admin_add(datum/mind/new_owner,mob/admin) + give_equipment = FALSE + new_owner.add_antag_datum(src) + message_admins("[key_name_admin(admin)] has cult'ed [new_owner.current].") + log_admin("[key_name(admin)] has cult'ed [new_owner.current].") + +/datum/antagonist/cult/admin_remove(mob/user) + message_admins("[key_name_admin(user)] has decult'ed [owner.current].") + log_admin("[key_name(user)] has decult'ed [owner.current].") + SSticker.mode.remove_cultist(owner,silent=TRUE) //disgusting + +/datum/antagonist/cult/get_admin_commands() + . = ..() + .["Tome"] = CALLBACK(src,.proc/admin_give_tome) + .["Amulet"] = CALLBACK(src,.proc/admin_give_amulet) + +/datum/antagonist/cult/proc/admin_give_tome(mob/admin) + if(equip_cultist(owner.current,1)) + to_chat(admin, "Spawning tome failed!") + +/datum/antagonist/cult/proc/admin_give_amulet(mob/admin) + if (equip_cultist(owner.current)) + to_chat(admin, "Spawning amulet failed!") + +/datum/antagonist/cult/master + ignore_implant = TRUE + show_in_antagpanel = FALSE //Feel free to add this later + var/datum/action/innate/cult/master/finalreck/reckoning = new + var/datum/action/innate/cult/master/cultmark/bloodmark = new + var/datum/action/innate/cult/master/pulse/throwing = new + +/datum/antagonist/cult/master/Destroy() + QDEL_NULL(reckoning) + QDEL_NULL(bloodmark) + QDEL_NULL(throwing) + return ..() + +/datum/antagonist/cult/master/on_gain() + . = ..() + var/mob/living/current = owner.current + set_antag_hud(current, "cultmaster") + +/datum/antagonist/cult/master/greet() + to_chat(owner.current, "You are the cult's Master. As the cult's Master, you have a unique title and loud voice when communicating, are capable of marking \ + targets, such as a location or a noncultist, to direct the cult to them, and, finally, you are capable of summoning the entire living cult to your location once.") + to_chat(owner.current, "Use these abilities to direct the cult to victory at any cost.") + +/datum/antagonist/cult/master/apply_innate_effects(mob/living/mob_override) + . = ..() + var/mob/living/current = owner.current + if(mob_override) + current = mob_override + if(!cult_team.reckoning_complete) + reckoning.Grant(current) + bloodmark.Grant(current) + throwing.Grant(current) + current.update_action_buttons_icon() + current.apply_status_effect(/datum/status_effect/cult_master) + +/datum/antagonist/cult/master/remove_innate_effects(mob/living/mob_override) + . = ..() + var/mob/living/current = owner.current + if(mob_override) + current = mob_override + reckoning.Remove(current) + bloodmark.Remove(current) + throwing.Remove(current) + current.update_action_buttons_icon() + current.remove_status_effect(/datum/status_effect/cult_master) + +/datum/team/cult + name = "Cult" + + var/blood_target + var/image/blood_target_image + var/blood_target_reset_timer + + var/cult_vote_called = FALSE + var/cult_mastered = FALSE + var/reckoning_complete = FALSE + + +/datum/team/cult/proc/setup_objectives() + //SAC OBJECTIVE , todo: move this to objective internals + var/list/target_candidates = list() + var/datum/objective/sacrifice/sac_objective = new + sac_objective.team = src + + for(var/mob/living/carbon/human/player in GLOB.player_list) + if(player.mind && !player.mind.has_antag_datum(/datum/antagonist/cult) && !is_convertable_to_cult(player) && player.stat != DEAD) + target_candidates += player.mind + + if(target_candidates.len == 0) + message_admins("Cult Sacrifice: Could not find unconvertable target, checking for convertable target.") + for(var/mob/living/carbon/human/player in GLOB.player_list) + if(player.mind && !player.mind.has_antag_datum(/datum/antagonist/cult) && player.stat != DEAD) + target_candidates += player.mind + listclearnulls(target_candidates) + if(LAZYLEN(target_candidates)) + sac_objective.target = pick(target_candidates) + sac_objective.update_explanation_text() + + var/datum/job/sacjob = SSjob.GetJob(sac_objective.target.assigned_role) + var/datum/preferences/sacface = sac_objective.target.current.client.prefs + var/icon/reshape = get_flat_human_icon(null, sacjob, sacface) + reshape.Shift(SOUTH, 4) + reshape.Shift(EAST, 1) + reshape.Crop(7,4,26,31) + reshape.Crop(-5,-3,26,30) + sac_objective.sac_image = reshape + + objectives += sac_objective + else + message_admins("Cult Sacrifice: Could not find unconvertable or convertable target. WELP!") + + + //SUMMON OBJECTIVE + + var/datum/objective/eldergod/summon_objective = new() + summon_objective.team = src + objectives += summon_objective + +/datum/objective/sacrifice + var/sacced = FALSE + var/sac_image + +/datum/objective/sacrifice/check_completion() + return sacced || completed + +/datum/objective/sacrifice/update_explanation_text() + if(target) + explanation_text = "Sacrifice [target], the [target.assigned_role] via invoking a Sacrifice rune with them on it and three acolytes around it." + else + explanation_text = "The veil has already been weakened here, proceed to the final objective." + +/datum/objective/eldergod + var/summoned = FALSE + var/list/summon_spots = list() + +/datum/objective/eldergod/New() + ..() + var/sanity = 0 + while(summon_spots.len < SUMMON_POSSIBILITIES && sanity < 100) + var/area/summon = pick(GLOB.sortedAreas - summon_spots) + if(summon && is_station_level(summon.z) && summon.valid_territory) + summon_spots += summon + sanity++ + update_explanation_text() + +/datum/objective/eldergod/update_explanation_text() + explanation_text = "Summon Nar-Sie by invoking the rune 'Summon Nar-Sie'. The summoning can only be accomplished in [english_list(summon_spots)] - where the veil is weak enough for the ritual to begin." + +/datum/objective/eldergod/check_completion() + return summoned || completed + +/datum/team/cult/proc/check_cult_victory() + for(var/datum/objective/O in objectives) + if(!O.check_completion()) + return FALSE + return TRUE + +/datum/team/cult/roundend_report() + var/list/parts = list() + + if(check_cult_victory()) + parts += "The cult has succeeded! Nar-sie has snuffed out another torch in the void!" + else + parts += "The staff managed to stop the cult! Dark words and heresy are no match for Nanotrasen's finest!" + + if(objectives.len) + parts += "The cultists' objectives were:" + var/count = 1 + for(var/datum/objective/objective in objectives) + if(objective.check_completion()) + parts += "Objective #[count]: [objective.explanation_text] Success!" + else + parts += "Objective #[count]: [objective.explanation_text] Fail." + count++ + + if(members.len) + parts += "The cultists were:" + parts += printplayerlist(members) + + return "
[parts.Join("
")]
" + +/datum/team/cult/is_gamemode_hero() + return SSticker.mode.name == "cult" \ No newline at end of file diff --git a/code/game/gamemodes/cult/cult_comms.dm b/code/modules/antagonists/cult/cult_comms.dm similarity index 100% rename from code/game/gamemodes/cult/cult_comms.dm rename to code/modules/antagonists/cult/cult_comms.dm diff --git a/code/game/gamemodes/cult/cult_items.dm b/code/modules/antagonists/cult/cult_items.dm similarity index 99% rename from code/game/gamemodes/cult/cult_items.dm rename to code/modules/antagonists/cult/cult_items.dm index 34a57fe62f..1f4a84afd2 100644 --- a/code/game/gamemodes/cult/cult_items.dm +++ b/code/modules/antagonists/cult/cult_items.dm @@ -62,7 +62,7 @@ w_class = WEIGHT_CLASS_SMALL force = 15 throwforce = 25 - embed_chance = 75 + embedding = list("embed_chance" = 75) /obj/item/melee/cultblade/dagger/attack(mob/living/target, mob/living/carbon/human/user) ..() diff --git a/code/game/gamemodes/cult/cult_structures.dm b/code/modules/antagonists/cult/cult_structures.dm similarity index 100% rename from code/game/gamemodes/cult/cult_structures.dm rename to code/modules/antagonists/cult/cult_structures.dm diff --git a/code/game/gamemodes/cult/ritual.dm b/code/modules/antagonists/cult/ritual.dm similarity index 100% rename from code/game/gamemodes/cult/ritual.dm rename to code/modules/antagonists/cult/ritual.dm diff --git a/code/game/gamemodes/cult/rune_spawn_action.dm b/code/modules/antagonists/cult/rune_spawn_action.dm similarity index 100% rename from code/game/gamemodes/cult/rune_spawn_action.dm rename to code/modules/antagonists/cult/rune_spawn_action.dm diff --git a/code/game/gamemodes/cult/runes.dm b/code/modules/antagonists/cult/runes.dm similarity index 99% rename from code/game/gamemodes/cult/runes.dm rename to code/modules/antagonists/cult/runes.dm index 28cc5c6512..a0de57ea22 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/modules/antagonists/cult/runes.dm @@ -115,7 +115,7 @@ structure_check() searches for nearby cultist structures required for the invoca continue if(ishuman(L)) var/mob/living/carbon/human/H = L - if((H.has_disability(DISABILITY_MUTE)) || H.silent) + if((H.has_trait(TRAIT_MUTE)) || H.silent) continue if(L.stat) continue @@ -566,7 +566,7 @@ structure_check() searches for nearby cultist structures required for the invoca rune_in_use = FALSE return revives_used++ - mob_to_revive.revive(1, 1) //This does remove disabilities and such, but the rune might actually see some use because of it! + mob_to_revive.revive(1, 1) //This does remove traits and such, but the rune might actually see some use because of it! mob_to_revive.grab_ghost() else if(!mob_to_revive.client || mob_to_revive.client.is_afk()) set waitfor = FALSE diff --git a/code/game/gamemodes/cult/supply.dm b/code/modules/antagonists/cult/supply.dm similarity index 100% rename from code/game/gamemodes/cult/supply.dm rename to code/modules/antagonists/cult/supply.dm diff --git a/code/game/gamemodes/cult/talisman.dm b/code/modules/antagonists/cult/talisman.dm similarity index 100% rename from code/game/gamemodes/cult/talisman.dm rename to code/modules/antagonists/cult/talisman.dm diff --git a/code/game/gamemodes/devil/devilinfo.dm b/code/modules/antagonists/devil/devil.dm similarity index 82% rename from code/game/gamemodes/devil/devilinfo.dm rename to code/modules/antagonists/devil/devil.dm index 1683aa8a00..858b2d1ef1 100644 --- a/code/game/gamemodes/devil/devilinfo.dm +++ b/code/modules/antagonists/devil/devil.dm @@ -35,7 +35,7 @@ GLOBAL_LIST_INIT(lawlorify, list ( BAN_CHAPEL = "This devil avoids holy ground.", BAN_HURTPRIEST = "The annointed clergy appear to be immune to his powers.", BAN_AVOIDWATER = "The devil seems to have some sort of aversion to water, though it does not appear to harm him.", - BAN_STRIKEUNCONCIOUS = "This devil only shows interest in those who are awake.", + BAN_STRIKEUNCONSCIOUS = "This devil only shows interest in those who are awake.", BAN_HURTLIZARD = "This devil will not strike a lizardman first.", BAN_HURTANIMAL = "This devil avoids hurting animals.", BANISH_WATER = "To banish the devil, you must infuse its body with holy water.", @@ -59,7 +59,7 @@ GLOBAL_LIST_INIT(lawlorify, list ( BAN_CHAPEL = "You must never attempt to enter the chapel.", BAN_HURTPRIEST = "You must never attack a priest.", BAN_AVOIDWATER = "You must never willingly touch a wet surface.", - BAN_STRIKEUNCONCIOUS = "You must never strike an unconscious person.", + BAN_STRIKEUNCONSCIOUS = "You must never strike an unconscious person.", BAN_HURTLIZARD = "You must never harm a lizardman outside of self defense.", BAN_HURTANIMAL = "You must never harm a non-sentient creature or robot outside of self defense.", BANE_SILVER = "Silver, in all of its forms shall be your downfall.", @@ -85,8 +85,12 @@ GLOBAL_LIST_INIT(devil_title, list("Lord ", "Prelate ", "Count ", "Viscount ", " GLOBAL_LIST_INIT(devil_syllable, list("hal", "ve", "odr", "neit", "ci", "quon", "mya", "folth", "wren", "geyr", "hil", "niet", "twou", "phi", "coa")) GLOBAL_LIST_INIT(devil_suffix, list(" the Red", " the Soulless", " the Master", ", the Lord of all things", ", Jr.")) /datum/antagonist/devil + name = "Devil" + roundend_category = "devils" + antagpanel_category = "Devil" + job_rank = ROLE_DEVIL //Don't delete upon mind destruction, otherwise soul re-selling will break. - delete_on_death = FALSE + delete_on_mind_deletion = FALSE var/obligation var/ban var/bane @@ -95,42 +99,48 @@ GLOBAL_LIST_INIT(devil_suffix, list(" the Red", " the Soulless", " the Master", var/list/datum/mind/soulsOwned = new var/reviveNumber = 0 var/form = BASIC_DEVIL - var/exists = 0 - var/static/list/removable_devil_spells = list( + var/static/list/devil_spells = typecacheof(list( /obj/effect/proc_holder/spell/aimed/fireball/hellish, /obj/effect/proc_holder/spell/targeted/conjure_item/summon_pitchfork, - /obj/effect/proc_holder/spell/aimed/fireball/hellish, - /obj/effect/proc_holder/spell/targeted/infernal_jaunt, /obj/effect/proc_holder/spell/targeted/conjure_item/summon_pitchfork/greater, - /obj/effect/proc_holder/spell/targeted/sintouch, /obj/effect/proc_holder/spell/targeted/conjure_item/summon_pitchfork/ascended, - /obj/effect/proc_holder/spell/targeted/sintouch/ascended) - var/static/list/devil_spells = list( - /obj/effect/proc_holder/spell/aimed/fireball/hellish, - /obj/effect/proc_holder/spell/targeted/conjure_item/summon_pitchfork, - /obj/effect/proc_holder/spell/aimed/fireball/hellish, /obj/effect/proc_holder/spell/targeted/infernal_jaunt, - /obj/effect/proc_holder/spell/targeted/conjure_item/summon_pitchfork/greater, /obj/effect/proc_holder/spell/targeted/sintouch, - /obj/effect/proc_holder/spell/targeted/conjure_item/summon_pitchfork/ascended, /obj/effect/proc_holder/spell/targeted/sintouch/ascended, /obj/effect/proc_holder/spell/targeted/summon_contract, /obj/effect/proc_holder/spell/targeted/conjure_item/violin, - /obj/effect/proc_holder/spell/targeted/summon_dancefloor) + /obj/effect/proc_holder/spell/targeted/summon_dancefloor)) var/ascendable = FALSE +/datum/antagonist/devil/can_be_owned(datum/mind/new_owner) + . = ..() + return . && (ishuman(new_owner.current) || iscyborg(new_owner.current)) -/datum/antagonist/devil/New() - ..() - devil_spells = typecacheof(devil_spells) - truename = randomDevilName() - ban = randomdevilban() - bane = randomdevilbane() - obligation = randomdevilobligation() - banish = randomdevilbanish() - GLOB.allDevils[lowertext(truename)] = src +/datum/antagonist/devil/get_admin_commands() + . = ..() + .["Toggle ascendable"] = CALLBACK(src,.proc/admin_toggle_ascendable) +/datum/antagonist/devil/proc/admin_toggle_ascendable(mob/admin) + ascendable = !ascendable + message_admins("[key_name_admin(admin)] set [owner.current] devil ascendable to [ascendable]") + log_admin("[key_name_admin(admin)] set [owner.current] devil ascendable to [ascendable])") + +/datum/antagonist/devil/admin_add(datum/mind/new_owner,mob/admin) + switch(alert(admin,"Should the devil be able to ascend",,"Yes","No","Cancel")) + if("Yes") + ascendable = TRUE + if("No") + ascendable = FALSE + else + return + new_owner.add_antag_datum(src) + message_admins("[key_name_admin(admin)] has devil'ed [new_owner.current]. [ascendable ? "(Ascendable)":""]") + log_admin("[key_name(admin)] has devil'ed [new_owner.current]. [ascendable ? "(Ascendable)":""]") + +/datum/antagonist/devil/antag_listing_name() + return ..() + "([truename])" + /proc/devilInfo(name) if(GLOB.allDevils[lowertext(name)]) return GLOB.allDevils[lowertext(name)] @@ -158,7 +168,7 @@ GLOBAL_LIST_INIT(devil_suffix, list(" the Red", " the Soulless", " the Master", return pick(OBLIGATION_FOOD, OBLIGATION_FIDDLE, OBLIGATION_DANCEOFF, OBLIGATION_GREET, OBLIGATION_PRESENCEKNOWN, OBLIGATION_SAYNAME, OBLIGATION_ANNOUNCEKILL, OBLIGATION_ANSWERTONAME) /proc/randomdevilban() - return pick(BAN_HURTWOMAN, BAN_CHAPEL, BAN_HURTPRIEST, BAN_AVOIDWATER, BAN_STRIKEUNCONCIOUS, BAN_HURTLIZARD, BAN_HURTANIMAL) + return pick(BAN_HURTWOMAN, BAN_CHAPEL, BAN_HURTPRIEST, BAN_AVOIDWATER, BAN_STRIKEUNCONSCIOUS, BAN_HURTLIZARD, BAN_HURTANIMAL) /proc/randomdevilbane() return pick(BANE_SALT, BANE_LIGHT, BANE_IRON, BANE_WHITECLOTHES, BANE_SILVER, BANE_HARVEST, BANE_TOOLBOX) @@ -175,8 +185,8 @@ GLOBAL_LIST_INIT(devil_suffix, list(" the Red", " the Soulless", " the Master", update_hud() switch(SOULVALUE) if(0) - to_chat(owner.current, "Your hellish powers have been restored.") - give_base_spells() + to_chat(owner.current, "Your hellish powers have been restored.") + give_appropriate_spells() if(BLOOD_THRESHOLD) increase_blood_lizard() if(TRUE_THRESHOLD) @@ -199,33 +209,33 @@ GLOBAL_LIST_INIT(devil_suffix, list(" the Red", " the Soulless", " the Master", if(form == BLOOD_LIZARD && SOULVALUE < BLOOD_THRESHOLD) regress_humanoid() if(SOULVALUE < 0) - remove_spells() - to_chat(owner.current, "As punishment for your failures, all of your powers except contract creation have been revoked.") + give_appropriate_spells() + to_chat(owner.current, "As punishment for your failures, all of your powers except contract creation have been revoked.") /datum/antagonist/devil/proc/regress_humanoid() - to_chat(owner.current, "Your powers weaken, have more contracts be signed to regain power.") + to_chat(owner.current, "Your powers weaken, have more contracts be signed to regain power.") if(ishuman(owner.current)) var/mob/living/carbon/human/H = owner.current H.set_species(/datum/species/human, 1) H.regenerate_icons() - give_base_spells() + give_appropriate_spells() if(istype(owner.current.loc, /obj/effect/dummy/slaughter/)) owner.current.forceMove(get_turf(owner.current))//Fixes dying while jaunted leaving you permajaunted. form = BASIC_DEVIL /datum/antagonist/devil/proc/regress_blood_lizard() var/mob/living/carbon/true_devil/D = owner.current - to_chat(D, "Your powers weaken, have more contracts be signed to regain power.") - D.oldform.loc = D.loc + to_chat(D, "Your powers weaken, have more contracts be signed to regain power.") + D.oldform.forceMove(D.drop_location()) owner.transfer_to(D.oldform) - give_lizard_spells() + give_appropriate_spells() qdel(D) form = BLOOD_LIZARD update_hud() /datum/antagonist/devil/proc/increase_blood_lizard() - to_chat(owner.current, "You feel as though your humanoid form is about to shed. You will soon turn into a blood lizard.") + to_chat(owner.current, "You feel as though your humanoid form is about to shed. You will soon turn into a blood lizard.") sleep(50) if(ishuman(owner.current)) var/mob/living/carbon/human/H = owner.current @@ -237,30 +247,29 @@ GLOBAL_LIST_INIT(devil_suffix, list(" the Red", " the Soulless", " the Master", H.regenerate_icons() else //Did the devil get hit by a staff of transmutation? owner.current.color = "#501010" - give_lizard_spells() + give_appropriate_spells() form = BLOOD_LIZARD /datum/antagonist/devil/proc/increase_true_devil() - to_chat(owner.current, "You feel as though your current form is about to shed. You will soon turn into a true devil.") + to_chat(owner.current, "You feel as though your current form is about to shed. You will soon turn into a true devil.") sleep(50) var/mob/living/carbon/true_devil/A = new /mob/living/carbon/true_devil(owner.current.loc) A.faction |= "hell" - owner.current.loc = A + owner.current.forceMove(A) A.oldform = owner.current owner.transfer_to(A) A.set_name() - give_true_spells() + give_appropriate_spells() form = TRUE_DEVIL update_hud() - /datum/antagonist/devil/proc/increase_arch_devil() if(!ascendable) return var/mob/living/carbon/true_devil/D = owner.current - to_chat(D, "You feel as though your form is about to ascend.") + to_chat(D, "You feel as though your form is about to ascend.") sleep(50) if(!D) return @@ -292,8 +301,8 @@ GLOBAL_LIST_INIT(devil_suffix, list(" the Red", " the Soulless", " the Master", if(!D) return to_chat(world, "\"SLOTH, WRATH, GLUTTONY, ACEDIA, ENVY, GREED, PRIDE! FIRES OF HELL AWAKEN!!\"") - world << 'sound/hallucinations/veryfar_noise.ogg' - give_arch_spells() + SEND_SOUND(world, sound('sound/hallucinations/veryfar_noise.ogg')) + give_appropriate_spells() D.convert_to_archdevil() if(istype(D.loc, /obj/effect/dummy/slaughter/)) D.forceMove(get_turf(D))//Fixes dying while jaunted leaving you permajaunted. @@ -309,39 +318,44 @@ GLOBAL_LIST_INIT(devil_suffix, list(" the Red", " the Soulless", " the Master", /datum/antagonist/devil/proc/remove_spells() for(var/X in owner.spell_list) var/obj/effect/proc_holder/spell/S = X - if(is_type_in_typecache(S, removable_devil_spells)) + if(is_type_in_typecache(S, devil_spells)) owner.RemoveSpell(S) /datum/antagonist/devil/proc/give_summon_contract() owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/summon_contract(null)) + if(obligation == OBLIGATION_FIDDLE) + owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/conjure_item/violin(null)) + else if(obligation == OBLIGATION_DANCEOFF) + owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/summon_dancefloor(null)) - -/datum/antagonist/devil/proc/give_base_spells(give_summon_contract = 0) +/datum/antagonist/devil/proc/give_appropriate_spells() remove_spells() + give_summon_contract() + if(SOULVALUE >= ARCH_THRESHOLD && ascendable) + give_arch_spells() + else if(SOULVALUE >= TRUE_THRESHOLD) + give_true_spells() + else if(SOULVALUE >= BLOOD_THRESHOLD) + give_blood_spells() + else if(SOULVALUE >= 0) + give_base_spells() + +/datum/antagonist/devil/proc/give_base_spells() owner.AddSpell(new /obj/effect/proc_holder/spell/aimed/fireball/hellish(null)) owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/conjure_item/summon_pitchfork(null)) - if(give_summon_contract) - give_summon_contract() - if(obligation == OBLIGATION_FIDDLE) - owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/conjure_item/violin(null)) - if(obligation == OBLIGATION_DANCEOFF) - owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/summon_dancefloor(null)) -/datum/antagonist/devil/proc/give_lizard_spells() - remove_spells() +/datum/antagonist/devil/proc/give_blood_spells() owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/conjure_item/summon_pitchfork(null)) owner.AddSpell(new /obj/effect/proc_holder/spell/aimed/fireball/hellish(null)) owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/infernal_jaunt(null)) /datum/antagonist/devil/proc/give_true_spells() - remove_spells() owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/conjure_item/summon_pitchfork/greater(null)) owner.AddSpell(new /obj/effect/proc_holder/spell/aimed/fireball/hellish(null)) owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/infernal_jaunt(null)) owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/sintouch(null)) /datum/antagonist/devil/proc/give_arch_spells() - remove_spells() owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/conjure_item/summon_pitchfork/ascended(null)) owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/sintouch/ascended(null)) @@ -368,14 +382,14 @@ GLOBAL_LIST_INIT(devil_suffix, list(" the Red", " the Soulless", " the Master", /datum/antagonist/devil/proc/check_banishment(mob/living/body) switch(banish) if(BANISH_WATER) - if(istype(body, /mob/living/carbon)) + if(iscarbon(body)) var/mob/living/carbon/H = body return H.reagents.has_reagent("holy water") return 0 if(BANISH_COFFIN) return (body && istype(body.loc, /obj/structure/closet/coffin)) if(BANISH_FORMALDYHIDE) - if(istype(body, /mob/living/carbon)) + if(iscarbon(body)) var/mob/living/carbon/H = body return H.reagents.has_reagent("formaldehyde") return 0 @@ -411,11 +425,11 @@ GLOBAL_LIST_INIT(devil_suffix, list(" the Red", " the Soulless", " the Master", /datum/antagonist/devil/proc/hellish_resurrection(mob/living/body) message_admins("[owner.name] (true name is: [truename]) is resurrecting using hellish energy.") - if(SOULVALUE < ARCH_THRESHOLD && ascendable) // once ascended, arch devils do not go down in power by any means. + if(SOULVALUE < ARCH_THRESHOLD || !ascendable) // once ascended, arch devils do not go down in power by any means. reviveNumber += LOSS_PER_DEATH update_hud() if(body) - body.revive(1,0) + body.revive(TRUE, TRUE) //Adminrevive also recovers organs, preventing someone from resurrecting without a heart. if(istype(body.loc, /obj/effect/dummy/slaughter/)) body.forceMove(get_turf(body))//Fixes dying while jaunted leaving you permajaunted. if(istype(body, /mob/living/carbon/true_devil)) @@ -458,8 +472,8 @@ GLOBAL_LIST_INIT(devil_suffix, list(" the Red", " the Soulless", " the Master", A.faction |= "hell" H.forceMove(A) A.oldform = H + owner.transfer_to(A, TRUE) A.set_name() - owner.transfer_to(A) if(SOULVALUE >= ARCH_THRESHOLD && ascendable) A.convert_to_archdevil() else @@ -467,7 +481,7 @@ GLOBAL_LIST_INIT(devil_suffix, list(" the Red", " the Soulless", " the Master", /datum/antagonist/devil/proc/update_hud() - if(istype(owner.current, /mob/living/carbon)) + if(iscarbon(owner.current)) var/mob/living/C = owner.current if(C.hud_used && C.hud_used.devilsouldisplay) C.hud_used.devilsouldisplay.update_counter(SOULVALUE) @@ -485,7 +499,14 @@ GLOBAL_LIST_INIT(devil_suffix, list(" the Red", " the Soulless", " the Master", .=..() /datum/antagonist/devil/on_gain() - owner.store_memory("Your devilic true name is [truename]
[GLOB.lawlorify[LAW][ban]]
You may not use violence to coerce someone into selling their soul.
You may not directly and knowingly physically harm a devil, other than yourself.
[GLOB.lawlorify[LAW][bane]]
[GLOB.lawlorify[LAW][obligation]]
[GLOB.lawlorify[LAW][banish]]
") + truename = randomDevilName() + ban = randomdevilban() + bane = randomdevilbane() + obligation = randomdevilobligation() + banish = randomdevilbanish() + GLOB.allDevils[lowertext(truename)] = src + + antag_memory += "Your devilic true name is [truename]
[GLOB.lawlorify[LAW][ban]]
You may not use violence to coerce someone into selling their soul.
You may not directly and knowingly physically harm a devil, other than yourself.
[GLOB.lawlorify[LAW][bane]]
[GLOB.lawlorify[LAW][obligation]]
[GLOB.lawlorify[LAW][banish]]
" if(issilicon(owner.current)) var/mob/living/silicon/robot_devil = owner.current var/laws = list("You may not use violence to coerce someone into selling their soul.", "You may not directly and knowingly physically harm a devil, other than yourself.", GLOB.lawlorify[LAW][ban], GLOB.lawlorify[LAW][obligation], "Accomplish your objectives at all costs.") @@ -502,7 +523,7 @@ GLOBAL_LIST_INIT(devil_suffix, list(" the Red", " the Soulless", " the Master", .=..() /datum/antagonist/devil/apply_innate_effects(mob/living/mob_override) - give_base_spells(1) + give_appropriate_spells() owner.current.grant_all_languages(TRUE) update_hud() .=..() @@ -514,6 +535,35 @@ GLOBAL_LIST_INIT(devil_suffix, list(" the Red", " the Soulless", " the Master", owner.RemoveSpell(S) .=..() +/datum/antagonist/devil/proc/printdevilinfo() + var/list/parts = list() + parts += "The devil's true name is: [truename]" + parts += "The devil's bans were:" + parts += "[GLOB.TAB][GLOB.lawlorify[LORE][ban]]" + parts += "[GLOB.TAB][GLOB.lawlorify[LORE][bane]]" + parts += "[GLOB.TAB][GLOB.lawlorify[LORE][obligation]]" + parts += "[GLOB.TAB][GLOB.lawlorify[LORE][banish]]" + return parts.Join("
") + +/datum/antagonist/devil/roundend_report() + var/list/parts = list() + parts += printplayer(owner) + parts += printdevilinfo() + parts += printobjectives(owner) + return parts.Join("
") + +/datum/antagonist/devil/roundend_report_footer() + //sintouched go here for now as a hack , TODO proper antag datum for these + var/list/parts = list() + if(SSticker.mode.sintouched.len) + parts += "The sintouched were:" + var/list/sintouchedUnique = uniqueList(SSticker.mode.sintouched) + for(var/S in sintouchedUnique) + var/datum/mind/sintouched_mind = S + parts += printplayer(sintouched_mind) + parts += printobjectives(sintouched_mind) + return parts.Join("
") + //A simple super light weight datum for the codex gigas. /datum/fakeDevil var/truename @@ -521,10 +571,12 @@ GLOBAL_LIST_INIT(devil_suffix, list(" the Red", " the Soulless", " the Master", var/obligation var/ban var/banish + var/ascendable /datum/fakeDevil/New(name = randomDevilName()) truename = name bane = randomdevilbane() obligation = randomdevilobligation() ban = randomdevilban() - banish = randomdevilbanish() \ No newline at end of file + banish = randomdevilbanish() + ascendable = prob(25) diff --git a/code/game/gamemodes/devil/devil.dm b/code/modules/antagonists/devil/devil_helpers.dm similarity index 100% rename from code/game/gamemodes/devil/devil.dm rename to code/modules/antagonists/devil/devil_helpers.dm diff --git a/code/game/gamemodes/devil/imp/imp.dm b/code/modules/antagonists/devil/imp/imp.dm similarity index 100% rename from code/game/gamemodes/devil/imp/imp.dm rename to code/modules/antagonists/devil/imp/imp.dm diff --git a/code/game/gamemodes/miniantags/sintouched/objectives.dm b/code/modules/antagonists/devil/sintouched/objectives.dm similarity index 100% rename from code/game/gamemodes/miniantags/sintouched/objectives.dm rename to code/modules/antagonists/devil/sintouched/objectives.dm diff --git a/code/game/gamemodes/devil/true_devil/_true_devil.dm b/code/modules/antagonists/devil/true_devil/_true_devil.dm similarity index 100% rename from code/game/gamemodes/devil/true_devil/_true_devil.dm rename to code/modules/antagonists/devil/true_devil/_true_devil.dm diff --git a/code/game/gamemodes/devil/true_devil/inventory.dm b/code/modules/antagonists/devil/true_devil/inventory.dm similarity index 100% rename from code/game/gamemodes/devil/true_devil/inventory.dm rename to code/modules/antagonists/devil/true_devil/inventory.dm diff --git a/code/modules/antagonists/monkey/monkey.dm b/code/modules/antagonists/monkey/monkey.dm new file mode 100644 index 0000000000..196adf5c22 --- /dev/null +++ b/code/modules/antagonists/monkey/monkey.dm @@ -0,0 +1,214 @@ +#define MONKEYS_ESCAPED 1 +#define MONKEYS_LIVED 2 +#define MONKEYS_DIED 3 +#define DISEASE_LIVED 4 + +/datum/antagonist/monkey + name = "Monkey" + job_rank = ROLE_MONKEY + roundend_category = "monkeys" + antagpanel_category = "Monkey" + var/datum/team/monkey/monkey_team + var/monkey_only = TRUE + +/datum/antagonist/monkey/can_be_owned(datum/mind/new_owner) + return ..() && (!monkey_only || ismonkey(new_owner.current)) + +/datum/antagonist/monkey/get_team() + return monkey_team + +/datum/antagonist/monkey/on_gain() + . = ..() + SSticker.mode.ape_infectees += owner + owner.special_role = "Infected Monkey" + + var/datum/disease/D = new /datum/disease/transformation/jungle_fever/monkeymode + if(!owner.current.HasDisease(D)) + owner.current.ForceContractDisease(D) + else + QDEL_NULL(D) + +/datum/antagonist/monkey/greet() + to_chat(owner, "You are a monkey now!") + to_chat(owner, "Bite humans to infect them, follow the orders of the monkey leaders, and help fellow monkeys!") + to_chat(owner, "Ensure at least one infected monkey escapes on the Emergency Shuttle!") + to_chat(owner, "As an intelligent monkey, you know how to use technology and how to ventcrawl while wearing things.") + to_chat(owner, "You can use :k to talk to fellow monkeys!") + SEND_SOUND(owner.current, sound('sound/ambience/antag/monkey.ogg')) + +/datum/antagonist/monkey/on_removal() + owner.special_role = null + SSticker.mode.ape_infectees -= owner + + var/datum/disease/transformation/jungle_fever/D = locate() in owner.current.viruses + if(D) + D.remove_virus() + qdel(D) + + . = ..() + +/datum/antagonist/monkey/create_team(datum/team/monkey/new_team) + if(!new_team) + for(var/datum/antagonist/monkey/H in GLOB.antagonists) + if(!H.owner) + continue + if(H.monkey_team) + monkey_team = H.monkey_team + return + monkey_team = new /datum/team/monkey + monkey_team.update_objectives() + return + if(!istype(new_team)) + stack_trace("Wrong team type passed to [type] initialization.") + monkey_team = new_team + +/datum/antagonist/monkey/proc/forge_objectives() + objectives |= monkey_team.objectives + owner.objectives |= objectives + +/datum/antagonist/monkey/admin_remove(mob/admin) + var/mob/living/carbon/monkey/M = owner.current + if(istype(M)) + switch(alert(admin, "Humanize?", "Humanize", "Yes", "No")) + if("Yes") + if(admin == M) + admin = M.humanize(TR_KEEPITEMS | TR_KEEPIMPLANTS | TR_KEEPORGANS | TR_KEEPDAMAGE | TR_KEEPVIRUS | TR_DEFAULTMSG) + else + M.humanize(TR_KEEPITEMS | TR_KEEPIMPLANTS | TR_KEEPORGANS | TR_KEEPDAMAGE | TR_KEEPVIRUS | TR_DEFAULTMSG) + if("No") + //nothing + else + return + . = ..() + +/datum/antagonist/monkey/leader + name = "Monkey Leader" + monkey_only = FALSE + +/datum/antagonist/monkey/leader/admin_add(datum/mind/new_owner,mob/admin) + var/mob/living/carbon/human/H = new_owner.current + if(istype(H)) + switch(alert(admin, "Monkeyize?", "Monkeyize", "Yes", "No")) + if("Yes") + if(admin == H) + admin = H.monkeyize() + else + H.monkeyize() + if("No") + //nothing + else + return + new_owner.add_antag_datum(src) + log_admin("[key_name(admin)] made [key_name(new_owner.current)] a monkey leader!") + message_admins("[key_name_admin(admin)] made [key_name_admin(new_owner.current)] a monkey leader!") + +/datum/antagonist/monkey/leader/on_gain() + . = ..() + var/obj/item/organ/heart/freedom/F = new + F.Insert(owner.current, drop_if_replaced = FALSE) + SSticker.mode.ape_leaders += owner + owner.special_role = "Monkey Leader" + +/datum/antagonist/monkey/leader/on_removal() + SSticker.mode.ape_leaders -= owner + var/obj/item/organ/heart/H = new + H.Insert(owner.current, drop_if_replaced = FALSE) //replace freedom heart with normal heart + + . = ..() + +/datum/antagonist/monkey/leader/greet() + to_chat(owner, "You are the Jungle Fever patient zero!!
") + to_chat(owner, "You have been planted onto this station by the Animal Rights Consortium.") + to_chat(owner, "Soon the disease will transform you into an ape. Afterwards, you will be able spread the infection to others with a bite.") + to_chat(owner, "While your infection strain is undetectable by scanners, any other infectees will show up on medical equipment.") + to_chat(owner, "Your mission will be deemed a success if any of the live infected monkeys reach CentCom.") + to_chat(owner, "As an initial infectee, you will be considered a 'leader' by your fellow monkeys.") + to_chat(owner, "You can use :k to talk to fellow monkeys!") + SEND_SOUND(owner.current, sound('sound/ambience/antag/monkey.ogg')) + +/datum/objective/monkey + explanation_text = "Ensure that infected monkeys escape on the emergency shuttle!" + martyr_compatible = TRUE + var/monkeys_to_win = 1 + var/escaped_monkeys = 0 + +/datum/objective/monkey/check_completion() + var/datum/disease/D = new /datum/disease/transformation/jungle_fever() + for(var/mob/living/carbon/monkey/M in GLOB.alive_mob_list) + if (M.HasDisease(D) && (M.onCentCom() || M.onSyndieBase())) + escaped_monkeys++ + if(escaped_monkeys >= monkeys_to_win) + return TRUE + return FALSE + +/datum/team/monkey + name = "Monkeys" + +/datum/team/monkey/proc/update_objectives() + objectives = list() + var/datum/objective/monkey/O = new() + O.team = src + objectives += O + +/datum/team/monkey/proc/infected_monkeys_alive() + var/datum/disease/D = new /datum/disease/transformation/jungle_fever() + for(var/mob/living/carbon/monkey/M in GLOB.alive_mob_list) + if(M.HasDisease(D)) + return TRUE + return FALSE + +/datum/team/monkey/proc/infected_monkeys_escaped() + var/datum/disease/D = new /datum/disease/transformation/jungle_fever() + for(var/mob/living/carbon/monkey/M in GLOB.alive_mob_list) + if(M.HasDisease(D) && (M.onCentCom() || M.onSyndieBase())) + return TRUE + return FALSE + +/datum/team/monkey/proc/infected_humans_escaped() + var/datum/disease/D = new /datum/disease/transformation/jungle_fever() + for(var/mob/living/carbon/human/M in GLOB.alive_mob_list) + if(M.HasDisease(D) && (M.onCentCom() || M.onSyndieBase())) + return TRUE + return FALSE + +/datum/team/monkey/proc/infected_humans_alive() + var/datum/disease/D = new /datum/disease/transformation/jungle_fever() + for(var/mob/living/carbon/human/M in GLOB.alive_mob_list) + if(M.HasDisease(D)) + return TRUE + return FALSE + +/datum/team/monkey/proc/get_result() + if(infected_monkeys_escaped()) + return MONKEYS_ESCAPED + if(infected_monkeys_alive()) + return MONKEYS_LIVED + if(infected_humans_alive() || infected_humans_escaped()) + return DISEASE_LIVED + return MONKEYS_DIED + +/datum/team/monkey/roundend_report() + var/list/parts = list() + switch(get_result()) + if(MONKEYS_ESCAPED) + parts += "Monkey Major Victory!" + parts += "Central Command and [station_name()] were taken over by the monkeys! Ook ook!" + if(MONKEYS_LIVED) + parts += "Monkey Minor Victory!" + parts += "[station_name()] was taken over by the monkeys! Ook ook!" + if(DISEASE_LIVED) + parts += "Monkey Minor Defeat!" + parts += "All the monkeys died, but the disease lives on! The future is uncertain." + if(MONKEYS_DIED) + parts += "Monkey Major Defeat!" + parts += "All the monkeys died, and Jungle Fever was wiped out!" + var/list/leaders = get_antag_minds(/datum/antagonist/monkey/leader, TRUE) + var/list/monkeys = get_antag_minds(/datum/antagonist/monkey, TRUE) + + if(LAZYLEN(leaders)) + parts += "The monkey leaders were:" + parts += printplayerlist(SSticker.mode.ape_leaders) + if(LAZYLEN(monkeys)) + parts += "The monkeys were:" + parts += printplayerlist(SSticker.mode.ape_infectees) + return "
[parts.Join("
")]
" diff --git a/code/game/gamemodes/miniantags/morph/morph.dm b/code/modules/antagonists/morph/morph.dm similarity index 100% rename from code/game/gamemodes/miniantags/morph/morph.dm rename to code/modules/antagonists/morph/morph.dm diff --git a/code/modules/antagonists/ninja/ninja.dm b/code/modules/antagonists/ninja/ninja.dm new file mode 100644 index 0000000000..8124b8c5b8 --- /dev/null +++ b/code/modules/antagonists/ninja/ninja.dm @@ -0,0 +1,155 @@ +/datum/antagonist/ninja + name = "Ninja" + antagpanel_category = "Ninja" + job_rank = ROLE_NINJA + var/helping_station = FALSE + var/give_objectives = TRUE + var/give_equipment = TRUE + + +/datum/antagonist/ninja/apply_innate_effects(mob/living/mob_override) + var/mob/living/M = mob_override || owner.current + update_ninja_icons_added(M) + +/datum/antagonist/ninja/remove_innate_effects(mob/living/mob_override) + var/mob/living/M = mob_override || owner.current + update_ninja_icons_removed(M) + +/datum/antagonist/ninja/proc/equip_space_ninja(mob/living/carbon/human/H = owner.current) + return H.equipOutfit(/datum/outfit/ninja) + +/datum/antagonist/ninja/proc/addMemories() + antag_memory += "I am an elite mercenary assassin of the mighty Spider Clan. A SPACE NINJA!
" + antag_memory += "Surprise is my weapon. Shadows are my armor. Without them, I am nothing. (//initialize your suit by right clicking on it, to use abilities like stealth)!
" + antag_memory += "Officially, [helping_station?"Nanotrasen":"The Syndicate"] are my employer.
" + +/datum/antagonist/ninja/proc/addObjectives(quantity = 6) + var/list/possible_targets = list() + for(var/datum/mind/M in SSticker.minds) + if(M.current && M.current.stat != DEAD) + if(ishuman(M.current)) + if(M.special_role) + possible_targets[M] = 0 //bad-guy + else if(M.assigned_role in GLOB.command_positions) + possible_targets[M] = 1 //good-guy + + var/list/possible_objectives = list(1,2,3,4) + + while(objectives.len < quantity) + switch(pick_n_take(possible_objectives)) + if(1) //research + var/datum/objective/download/O = new /datum/objective/download() + O.owner = owner + O.gen_amount_goal() + objectives += O + + if(2) //steal + var/datum/objective/steal/special/O = new /datum/objective/steal/special() + O.owner = owner + objectives += O + + if(3) //protect/kill + if(!possible_targets.len) continue + var/index = rand(1,possible_targets.len) + var/datum/mind/M = possible_targets[index] + var/is_bad_guy = possible_targets[M] + possible_targets.Cut(index,index+1) + + if(is_bad_guy ^ helping_station) //kill (good-ninja + bad-guy or bad-ninja + good-guy) + var/datum/objective/assassinate/O = new /datum/objective/assassinate() + O.owner = owner + O.target = M + O.explanation_text = "Slay \the [M.current.real_name], the [M.assigned_role]." + objectives += O + else //protect + var/datum/objective/protect/O = new /datum/objective/protect() + O.owner = owner + O.target = M + O.explanation_text = "Protect \the [M.current.real_name], the [M.assigned_role], from harm." + objectives += O + if(4) //debrain/capture + if(!possible_targets.len) continue + var/selected = rand(1,possible_targets.len) + var/datum/mind/M = possible_targets[selected] + var/is_bad_guy = possible_targets[M] + possible_targets.Cut(selected,selected+1) + + if(is_bad_guy ^ helping_station) //debrain (good-ninja + bad-guy or bad-ninja + good-guy) + var/datum/objective/debrain/O = new /datum/objective/debrain() + O.owner = owner + O.target = M + O.explanation_text = "Steal the brain of [M.current.real_name]." + objectives += O + else //capture + var/datum/objective/capture/O = new /datum/objective/capture() + O.owner = owner + O.gen_amount_goal() + objectives += O + else + break + var/datum/objective/O = new /datum/objective/survive() + O.owner = owner + owner.objectives |= objectives + + +/proc/remove_ninja(mob/living/L) + if(!L || !L.mind) + return FALSE + var/datum/antagonist/datum = L.mind.has_antag_datum(/datum/antagonist/ninja) + datum.on_removal() + return TRUE + +/proc/is_ninja(mob/living/M) + return M && M.mind && M.mind.has_antag_datum(/datum/antagonist/ninja) + + +/datum/antagonist/ninja/greet() + SEND_SOUND(owner.current, sound('sound/effects/ninja_greeting.ogg')) + to_chat(owner.current, "I am an elite mercenary assassin of the mighty Spider Clan. A SPACE NINJA!") + to_chat(owner.current, "Surprise is my weapon. Shadows are my armor. Without them, I am nothing. (//initialize your suit by right clicking on it, to use abilities like stealth)!") + to_chat(owner.current, "Officially, [helping_station?"Nanotrasen":"The Syndicate"] are my employer.") + return + +/datum/antagonist/ninja/on_gain() + if(give_objectives) + addObjectives() + addMemories() + if(give_equipment) + equip_space_ninja(owner.current) + . = ..() + +/datum/antagonist/ninja/admin_add(datum/mind/new_owner,mob/admin) + var/adj + switch(input("What kind of ninja?", "Ninja") as null|anything in list("Random","Syndicate","Nanotrasen","No objectives")) + if("Random") + helping_station = pick(TRUE,FALSE) + adj = "" + if("Syndicate") + helping_station = FALSE + adj = "syndie" + if("Nanotrasen") + helping_station = TRUE + adj = "friendly" + if("No objectives") + give_objectives = FALSE + adj = "objectiveless" + else + return + new_owner.assigned_role = "Space Ninja" + new_owner.special_role = "Space Ninja" + new_owner.add_antag_datum(src) + message_admins("[key_name_admin(admin)] has [adj] ninja'ed [new_owner.current].") + log_admin("[key_name(admin)] has [adj] ninja'ed [new_owner.current].") + +/datum/antagonist/ninja/antag_listing_name() + return ..() + "(Ninja)" + +/datum/antagonist/ninja/proc/update_ninja_icons_added(var/mob/living/carbon/human/ninja) + var/datum/atom_hud/antag/ninjahud = GLOB.huds[ANTAG_HUD_NINJA] + ninjahud.join_hud(ninja) + set_antag_hud(ninja, "ninja") + +/datum/antagonist/ninja/proc/update_ninja_icons_removed(var/mob/living/carbon/human/ninja) + var/datum/atom_hud/antag/ninjahud = GLOB.huds[ANTAG_HUD_NINJA] + ninjahud.leave_hud(ninja) + set_antag_hud(ninja, null) \ No newline at end of file diff --git a/code/game/gamemodes/nuclear/nuclear_challenge.dm b/code/modules/antagonists/nukeop/equipment/nuclear_challenge.dm similarity index 100% rename from code/game/gamemodes/nuclear/nuclear_challenge.dm rename to code/modules/antagonists/nukeop/equipment/nuclear_challenge.dm diff --git a/code/game/gamemodes/nuclear/nuclearbomb.dm b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm similarity index 100% rename from code/game/gamemodes/nuclear/nuclearbomb.dm rename to code/modules/antagonists/nukeop/equipment/nuclearbomb.dm diff --git a/code/game/gamemodes/nuclear/pinpointer.dm b/code/modules/antagonists/nukeop/equipment/pinpointer.dm similarity index 95% rename from code/game/gamemodes/nuclear/pinpointer.dm rename to code/modules/antagonists/nukeop/equipment/pinpointer.dm index 7047729294..1cdc356559 100644 --- a/code/game/gamemodes/nuclear/pinpointer.dm +++ b/code/modules/antagonists/nukeop/equipment/pinpointer.dm @@ -1,82 +1,82 @@ -/obj/item/pinpointer/nuke - var/mode = TRACK_NUKE_DISK - -/obj/item/pinpointer/nuke/examine(mob/user) - ..() - var/msg = "Its tracking indicator reads " - switch(mode) - if(TRACK_NUKE_DISK) - msg += "\"nuclear_disk\"." - if(TRACK_MALF_AI) - msg += "\"01000001 01001001\"." - if(TRACK_INFILTRATOR) - msg += "\"vasvygengbefuvc\"." - else - msg = "Its tracking indicator is blank." - to_chat(user, msg) - for(var/obj/machinery/nuclearbomb/bomb in GLOB.machines) - if(bomb.timing) - to_chat(user, "Extreme danger. Arming signal detected. Time remaining: [bomb.get_time_left()].") - -/obj/item/pinpointer/nuke/process() - ..() - if(active) // If shit's going down - for(var/obj/machinery/nuclearbomb/bomb in GLOB.nuke_list) - if(bomb.timing) - if(!alert) - alert = TRUE - playsound(src, 'sound/items/nuke_toy_lowpower.ogg', 50, 0) - if(isliving(loc)) - var/mob/living/L = loc - to_chat(L, "Your [name] vibrates and lets out a tinny alarm. Uh oh.") - -/obj/item/pinpointer/nuke/scan_for_target() - target = null - switch(mode) - if(TRACK_NUKE_DISK) - var/obj/item/disk/nuclear/N = locate() in GLOB.poi_list - target = N - if(TRACK_MALF_AI) - for(var/V in GLOB.ai_list) - var/mob/living/silicon/ai/A = V - if(A.nuking) - target = A - for(var/V in GLOB.apcs_list) - var/obj/machinery/power/apc/A = V - if(A.malfhack && A.occupier) - target = A - if(TRACK_INFILTRATOR) - target = SSshuttle.getShuttle("syndicate") - ..() - -/obj/item/pinpointer/nuke/proc/switch_mode_to(new_mode) - if(isliving(loc)) - var/mob/living/L = loc - to_chat(L, "Your [name] beeps as it reconfigures its tracking algorithms.") - playsound(L, 'sound/machines/triple_beep.ogg', 50, 1) - mode = new_mode - scan_for_target() - -/obj/item/pinpointer/nuke/syndicate // Syndicate pinpointers automatically point towards the infiltrator once the nuke is active. - name = "syndicate pinpointer" - desc = "A handheld tracking device that locks onto certain signals. It's configured to switch tracking modes once it detects the activation signal of a nuclear device." - icon_state = "pinpointer_syndicate" - -/obj/item/pinpointer/syndicate_cyborg // Cyborg pinpointers just look for a random operative. - name = "cyborg syndicate pinpointer" - desc = "An integrated tracking device, jury-rigged to search for living Syndicate operatives." - flags_1 = NODROP_1 - -/obj/item/pinpointer/syndicate_cyborg/scan_for_target() - target = null - var/list/possible_targets = list() - var/turf/here = get_turf(src) - for(var/V in get_antagonists(/datum/antagonist/nukeop)) - var/datum/mind/M = V - if(ishuman(M.current) && M.current.stat != DEAD) - possible_targets |= M.current - var/mob/living/closest_operative = get_closest_atom(/mob/living/carbon/human, possible_targets, here) - if(closest_operative) - target = closest_operative - ..() - +/obj/item/pinpointer/nuke + var/mode = TRACK_NUKE_DISK + +/obj/item/pinpointer/nuke/examine(mob/user) + ..() + var/msg = "Its tracking indicator reads " + switch(mode) + if(TRACK_NUKE_DISK) + msg += "\"nuclear_disk\"." + if(TRACK_MALF_AI) + msg += "\"01000001 01001001\"." + if(TRACK_INFILTRATOR) + msg += "\"vasvygengbefuvc\"." + else + msg = "Its tracking indicator is blank." + to_chat(user, msg) + for(var/obj/machinery/nuclearbomb/bomb in GLOB.machines) + if(bomb.timing) + to_chat(user, "Extreme danger. Arming signal detected. Time remaining: [bomb.get_time_left()].") + +/obj/item/pinpointer/nuke/process() + ..() + if(active) // If shit's going down + for(var/obj/machinery/nuclearbomb/bomb in GLOB.nuke_list) + if(bomb.timing) + if(!alert) + alert = TRUE + playsound(src, 'sound/items/nuke_toy_lowpower.ogg', 50, 0) + if(isliving(loc)) + var/mob/living/L = loc + to_chat(L, "Your [name] vibrates and lets out a tinny alarm. Uh oh.") + +/obj/item/pinpointer/nuke/scan_for_target() + target = null + switch(mode) + if(TRACK_NUKE_DISK) + var/obj/item/disk/nuclear/N = locate() in GLOB.poi_list + target = N + if(TRACK_MALF_AI) + for(var/V in GLOB.ai_list) + var/mob/living/silicon/ai/A = V + if(A.nuking) + target = A + for(var/V in GLOB.apcs_list) + var/obj/machinery/power/apc/A = V + if(A.malfhack && A.occupier) + target = A + if(TRACK_INFILTRATOR) + target = SSshuttle.getShuttle("syndicate") + ..() + +/obj/item/pinpointer/nuke/proc/switch_mode_to(new_mode) + if(isliving(loc)) + var/mob/living/L = loc + to_chat(L, "Your [name] beeps as it reconfigures its tracking algorithms.") + playsound(L, 'sound/machines/triple_beep.ogg', 50, 1) + mode = new_mode + scan_for_target() + +/obj/item/pinpointer/nuke/syndicate // Syndicate pinpointers automatically point towards the infiltrator once the nuke is active. + name = "syndicate pinpointer" + desc = "A handheld tracking device that locks onto certain signals. It's configured to switch tracking modes once it detects the activation signal of a nuclear device." + icon_state = "pinpointer_syndicate" + +/obj/item/pinpointer/syndicate_cyborg // Cyborg pinpointers just look for a random operative. + name = "cyborg syndicate pinpointer" + desc = "An integrated tracking device, jury-rigged to search for living Syndicate operatives." + flags_1 = NODROP_1 + +/obj/item/pinpointer/syndicate_cyborg/scan_for_target() + target = null + var/list/possible_targets = list() + var/turf/here = get_turf(src) + for(var/V in get_antag_minds(/datum/antagonist/nukeop)) + var/datum/mind/M = V + if(ishuman(M.current) && M.current.stat != DEAD) + possible_targets |= M.current + var/mob/living/closest_operative = get_closest_atom(/mob/living/carbon/human, possible_targets, here) + if(closest_operative) + target = closest_operative + ..() + diff --git a/code/modules/antagonists/nukeop/nukeop.dm b/code/modules/antagonists/nukeop/nukeop.dm new file mode 100644 index 0000000000..8401dc8ced --- /dev/null +++ b/code/modules/antagonists/nukeop/nukeop.dm @@ -0,0 +1,369 @@ +/datum/antagonist/nukeop + name = "Nuclear Operative" + roundend_category = "syndicate operatives" //just in case + antagpanel_category = "NukeOp" + job_rank = ROLE_OPERATIVE + var/datum/team/nuclear/nuke_team + var/always_new_team = FALSE //If not assigned a team by default ops will try to join existing ones, set this to TRUE to always create new team. + var/send_to_spawnpoint = TRUE //Should the user be moved to default spawnpoint. + var/nukeop_outfit = /datum/outfit/syndicate + +/datum/antagonist/nukeop/proc/update_synd_icons_added(mob/living/M) + var/datum/atom_hud/antag/opshud = GLOB.huds[ANTAG_HUD_OPS] + opshud.join_hud(M) + set_antag_hud(M, "synd") + +/datum/antagonist/nukeop/proc/update_synd_icons_removed(mob/living/M) + var/datum/atom_hud/antag/opshud = GLOB.huds[ANTAG_HUD_OPS] + opshud.leave_hud(M) + set_antag_hud(M, null) + +/datum/antagonist/nukeop/apply_innate_effects(mob/living/mob_override) + var/mob/living/M = mob_override || owner.current + update_synd_icons_added(M) + +/datum/antagonist/nukeop/remove_innate_effects(mob/living/mob_override) + var/mob/living/M = mob_override || owner.current + update_synd_icons_removed(M) + +/datum/antagonist/nukeop/proc/equip_op() + if(!ishuman(owner.current)) + return + var/mob/living/carbon/human/H = owner.current + + H.set_species(/datum/species/human) //Plasamen burn up otherwise, and lizards are vulnerable to asimov AIs + + H.equipOutfit(nukeop_outfit) + return TRUE + +/datum/antagonist/nukeop/greet() + owner.current.playsound_local(get_turf(owner.current), 'sound/ambience/antag/ops.ogg',100,0) + to_chat(owner, "You are a [nuke_team ? nuke_team.syndicate_name : "syndicate"] agent!") + owner.announce_objectives() + return + +/datum/antagonist/nukeop/on_gain() + give_alias() + forge_objectives() + . = ..() + equip_op() + memorize_code() + if(send_to_spawnpoint) + move_to_spawnpoint() + +/datum/antagonist/nukeop/get_team() + return nuke_team + +/datum/antagonist/nukeop/proc/assign_nuke() + if(nuke_team && !nuke_team.tracked_nuke) + nuke_team.memorized_code = random_nukecode() + var/obj/machinery/nuclearbomb/syndicate/nuke = locate() in GLOB.nuke_list + if(nuke) + nuke_team.tracked_nuke = nuke + if(nuke.r_code == "ADMIN") + nuke.r_code = nuke_team.memorized_code + else //Already set by admins/something else? + nuke_team.memorized_code = nuke.r_code + else + stack_trace("Syndicate nuke not found during nuke team creation.") + nuke_team.memorized_code = null + +/datum/antagonist/nukeop/proc/give_alias() + if(nuke_team && nuke_team.syndicate_name) + var/number = 1 + number = nuke_team.members.Find(owner) + owner.current.real_name = "[nuke_team.syndicate_name] Operative #[number]" + +/datum/antagonist/nukeop/proc/memorize_code() + if(nuke_team && nuke_team.tracked_nuke && nuke_team.memorized_code) + antag_memory += "[nuke_team.tracked_nuke] Code: [nuke_team.memorized_code]
" + to_chat(owner, "The nuclear authorization code is: [nuke_team.memorized_code]") + else + to_chat(owner, "Unfortunately the syndicate was unable to provide you with nuclear authorization code.") + +/datum/antagonist/nukeop/proc/forge_objectives() + if(nuke_team) + owner.objectives |= nuke_team.objectives + +/datum/antagonist/nukeop/proc/move_to_spawnpoint() + var/team_number = 1 + if(nuke_team) + team_number = nuke_team.members.Find(owner) + owner.current.forceMove(GLOB.nukeop_start[((team_number - 1) % GLOB.nukeop_start.len) + 1]) + +/datum/antagonist/nukeop/leader/move_to_spawnpoint() + owner.current.forceMove(pick(GLOB.nukeop_leader_start)) + +/datum/antagonist/nukeop/create_team(datum/team/nuclear/new_team) + if(!new_team) + if(!always_new_team) + for(var/datum/antagonist/nukeop/N in GLOB.antagonists) + if(!N.owner) + continue + if(N.nuke_team) + nuke_team = N.nuke_team + return + nuke_team = new /datum/team/nuclear + nuke_team.update_objectives() + assign_nuke() //This is bit ugly + return + if(!istype(new_team)) + stack_trace("Wrong team type passed to [type] initialization.") + nuke_team = new_team + +/datum/antagonist/nukeop/admin_add(datum/mind/new_owner,mob/admin) + new_owner.assigned_role = "Syndicate" + new_owner.add_antag_datum(src) + message_admins("[key_name_admin(admin)] has nuke op'ed [new_owner.current].") + log_admin("[key_name(admin)] has nuke op'ed [new_owner.current].") + +/datum/antagonist/nukeop/get_admin_commands() + . = ..() + .["Send to base"] = CALLBACK(src,.proc/admin_send_to_base) + .["Tell code"] = CALLBACK(src,.proc/admin_tell_code) + +/datum/antagonist/nukeop/proc/admin_send_to_base(mob/admin) + owner.current.forceMove(pick(GLOB.nukeop_start)) + +/datum/antagonist/nukeop/proc/admin_tell_code(mob/admin) + var/code + for (var/obj/machinery/nuclearbomb/bombue in GLOB.machines) + if (length(bombue.r_code) <= 5 && bombue.r_code != initial(bombue.r_code)) + code = bombue.r_code + break + if (code) + antag_memory += "Syndicate Nuclear Bomb Code: [code]
" + to_chat(owner.current, "The nuclear authorization code is: [code]") + else + to_chat(admin, "No valid nuke found!") + +/datum/antagonist/nukeop/leader + name = "Nuclear Operative Leader" + nukeop_outfit = /datum/outfit/syndicate/leader + always_new_team = TRUE + var/title + +/datum/antagonist/nukeop/leader/memorize_code() + ..() + if(nuke_team && nuke_team.memorized_code) + var/obj/item/paper/P = new + P.info = "The nuclear authorization code is: [nuke_team.memorized_code]" + P.name = "nuclear bomb code" + var/mob/living/carbon/human/H = owner.current + if(!istype(H)) + P.forceMove(get_turf(H)) + else + H.put_in_hands(P, TRUE) + H.update_icons() + +/datum/antagonist/nukeop/leader/give_alias() + title = pick("Czar", "Boss", "Commander", "Chief", "Kingpin", "Director", "Overlord") + if(nuke_team && nuke_team.syndicate_name) + owner.current.real_name = "[nuke_team.syndicate_name] [title]" + else + owner.current.real_name = "Syndicate [title]" + +/datum/antagonist/nukeop/leader/greet() + owner.current.playsound_local(get_turf(owner.current), 'sound/ambience/antag/ops.ogg',100,0) + to_chat(owner, "You are the Syndicate [title] for this mission. You are responsible for the distribution of telecrystals and your ID is the only one who can open the launch bay doors.") + to_chat(owner, "If you feel you are not up to this task, give your ID to another operative.") + to_chat(owner, "In your hand you will find a special item capable of triggering a greater challenge for your team. Examine it carefully and consult with your fellow operatives before activating it.") + owner.announce_objectives() + addtimer(CALLBACK(src, .proc/nuketeam_name_assign), 1) + + +/datum/antagonist/nukeop/leader/proc/nuketeam_name_assign() + if(!nuke_team) + return + nuke_team.rename_team(ask_name()) + +/datum/team/nuclear/proc/rename_team(new_name) + syndicate_name = new_name + name = "[syndicate_name] Team" + for(var/I in members) + var/datum/mind/synd_mind = I + var/mob/living/carbon/human/H = synd_mind.current + if(!istype(H)) + continue + var/chosen_name = H.dna.species.random_name(H.gender,0,syndicate_name) + H.fully_replace_character_name(H.real_name,chosen_name) + +/datum/antagonist/nukeop/leader/proc/ask_name() + var/randomname = pick(GLOB.last_names) + var/newname = stripped_input(owner.current,"You are the nuke operative [title]. Please choose a last name for your family.", "Name change",randomname) + if (!newname) + newname = randomname + else + newname = reject_bad_name(newname) + if(!newname) + newname = randomname + + return capitalize(newname) + +/datum/antagonist/nukeop/lone + name = "Lone Operative" + always_new_team = TRUE + send_to_spawnpoint = FALSE //Handled by event + nukeop_outfit = /datum/outfit/syndicate/full + +/datum/antagonist/nukeop/lone/assign_nuke() + if(nuke_team && !nuke_team.tracked_nuke) + nuke_team.memorized_code = random_nukecode() + var/obj/machinery/nuclearbomb/selfdestruct/nuke = locate() in GLOB.nuke_list + if(nuke) + nuke_team.tracked_nuke = nuke + if(nuke.r_code == "ADMIN") + nuke.r_code = nuke_team.memorized_code + else //Already set by admins/something else? + nuke_team.memorized_code = nuke.r_code + else + stack_trace("Station self destruct ot found during lone op team creation.") + nuke_team.memorized_code = null + +/datum/antagonist/nukeop/reinforcement + send_to_spawnpoint = FALSE + nukeop_outfit = /datum/outfit/syndicate/no_crystals + +/datum/team/nuclear + var/syndicate_name + var/obj/machinery/nuclearbomb/tracked_nuke + var/core_objective = /datum/objective/nuclear + var/memorized_code + +/datum/team/nuclear/New() + ..() + syndicate_name = syndicate_name() + +/datum/team/nuclear/proc/update_objectives() + if(core_objective) + var/datum/objective/O = new core_objective + O.team = src + objectives += O + +/datum/team/nuclear/proc/disk_rescued() + for(var/obj/item/disk/nuclear/D in GLOB.poi_list) + if(!D.onCentCom()) + return FALSE + return TRUE + +/datum/team/nuclear/proc/operatives_dead() + for(var/I in members) + var/datum/mind/operative_mind = I + if(ishuman(operative_mind.current) && (operative_mind.current.stat != DEAD)) + return FALSE + return TRUE + +/datum/team/nuclear/proc/syndies_escaped() + var/obj/docking_port/mobile/S = SSshuttle.getShuttle("syndicate") + return S && (is_centcom_level(S.z) || is_transit_level(S.z)) + +/datum/team/nuclear/proc/get_result() + var/evacuation = SSshuttle.emergency.mode == SHUTTLE_ENDGAME + var/disk_rescued = disk_rescued() + var/syndies_didnt_escape = !syndies_escaped() + var/station_was_nuked = SSticker.mode.station_was_nuked + var/nuke_off_station = SSticker.mode.nuke_off_station + + if(nuke_off_station == NUKE_SYNDICATE_BASE) + return NUKE_RESULT_FLUKE + else if(!disk_rescued && station_was_nuked && !syndies_didnt_escape) + return NUKE_RESULT_NUKE_WIN + else if (!disk_rescued && station_was_nuked && syndies_didnt_escape) + return NUKE_RESULT_NOSURVIVORS + else if (!disk_rescued && !station_was_nuked && nuke_off_station && !syndies_didnt_escape) + return NUKE_RESULT_WRONG_STATION + else if (!disk_rescued && !station_was_nuked && nuke_off_station && syndies_didnt_escape) + return NUKE_RESULT_WRONG_STATION_DEAD + else if ((disk_rescued || evacuation) && operatives_dead()) + return NUKE_RESULT_CREW_WIN_SYNDIES_DEAD + else if (disk_rescued) + return NUKE_RESULT_CREW_WIN + else if (!disk_rescued && operatives_dead()) + return NUKE_RESULT_DISK_LOST + else if (!disk_rescued && evacuation) + return NUKE_RESULT_DISK_STOLEN + else + return //Undefined result + +/datum/team/nuclear/roundend_report() + var/list/parts = list() + parts += "[syndicate_name] Operatives:" + + switch(get_result()) + if(NUKE_RESULT_FLUKE) + parts += "Humiliating Syndicate Defeat" + parts += "The crew of [station_name()] gave [syndicate_name] operatives back their bomb! The syndicate base was destroyed! Next time, don't lose the nuke!" + if(NUKE_RESULT_NUKE_WIN) + parts += "Syndicate Major Victory!" + parts += "[syndicate_name] operatives have destroyed [station_name()]!" + if(NUKE_RESULT_NOSURVIVORS) + parts += "Total Annihilation" + parts += "[syndicate_name] operatives destroyed [station_name()] but did not leave the area in time and got caught in the explosion. Next time, don't lose the disk!" + if(NUKE_RESULT_WRONG_STATION) + parts += "Crew Minor Victory" + parts += "[syndicate_name] operatives secured the authentication disk but blew up something that wasn't [station_name()]. Next time, don't do that!" + if(NUKE_RESULT_WRONG_STATION_DEAD) + parts += "[syndicate_name] operatives have earned Darwin Award!" + parts += "[syndicate_name] operatives blew up something that wasn't [station_name()] and got caught in the explosion. Next time, don't do that!" + if(NUKE_RESULT_CREW_WIN_SYNDIES_DEAD) + parts += "Crew Major Victory!" + parts += "The Research Staff has saved the disk and killed the [syndicate_name] Operatives" + if(NUKE_RESULT_CREW_WIN) + parts += "Crew Major Victory" + parts += "The Research Staff has saved the disk and stopped the [syndicate_name] Operatives!" + if(NUKE_RESULT_DISK_LOST) + parts += "Neutral Victory!" + parts += "The Research Staff failed to secure the authentication disk but did manage to kill most of the [syndicate_name] Operatives!" + if(NUKE_RESULT_DISK_STOLEN) + parts += "Syndicate Minor Victory!" + parts += "[syndicate_name] operatives survived the assault but did not achieve the destruction of [station_name()]. Next time, don't lose the disk!" + else + parts += "Neutral Victory" + parts += "Mission aborted!" + + var/text = "
The syndicate operatives were:" + var/purchases = "" + var/TC_uses = 0 + for(var/I in members) + var/datum/mind/syndicate = I + var/datum/uplink_purchase_log/H = GLOB.uplink_purchase_logs_by_key[syndicate.key] + if(H) + TC_uses += H.total_spent + purchases += H.generate_render(show_key = FALSE) + text += printplayerlist(members) + text += "
" + text += "(Syndicates used [TC_uses] TC) [purchases]" + if(TC_uses == 0 && SSticker.mode.station_was_nuked && !operatives_dead()) + text += "[icon2html('icons/badass.dmi', world, "badass")]" + + parts += text + + return "
[parts.Join("
")]
" + +/datum/team/nuclear/antag_listing_name() + if(syndicate_name) + return "[syndicate_name] Syndicates" + else + return "Syndicates" + +/datum/team/nuclear/antag_listing_entry() + var/disk_report = "Nuclear Disk(s)
" + disk_report += "
[C]
" + for(var/obj/item/disk/nuclear/N in GLOB.poi_list) + disk_report += "" + disk_report += "
[N.name], " + var/atom/disk_loc = N.loc + while(!isturf(disk_loc)) + if(ismob(disk_loc)) + var/mob/M = disk_loc + disk_report += "carried by [M.real_name] " + if(isobj(disk_loc)) + var/obj/O = disk_loc + disk_report += "in \a [O.name] " + disk_loc = disk_loc.loc + disk_report += "in [disk_loc.loc] at ([disk_loc.x], [disk_loc.y], [disk_loc.z])FLW
" + var/common_part = ..() + return common_part + disk_report + +/datum/team/nuclear/is_gamemode_hero() + return SSticker.mode.name == "nuclear emergency" \ No newline at end of file diff --git a/code/modules/antagonists/pirate/pirate.dm b/code/modules/antagonists/pirate/pirate.dm new file mode 100644 index 0000000000..cdd871ff35 --- /dev/null +++ b/code/modules/antagonists/pirate/pirate.dm @@ -0,0 +1,132 @@ +/datum/antagonist/pirate + name = "Space Pirate" + job_rank = ROLE_TRAITOR + roundend_category = "space pirates" + antagpanel_category = "Pirate" + var/datum/team/pirate/crew + +/datum/antagonist/pirate/greet() + to_chat(owner, "You are a Space Pirate!") + to_chat(owner, "The station refused to pay for your protection, protect the ship, siphon the credits from the station and raid it for even more loot.") + owner.announce_objectives() + +/datum/antagonist/pirate/get_team() + return crew + +/datum/antagonist/pirate/create_team(datum/team/pirate/new_team) + if(!new_team) + for(var/datum/antagonist/pirate/P in GLOB.antagonists) + if(!P.owner) + continue + if(P.crew) + crew = P.crew + return + if(!new_team) + crew = new /datum/team/pirate + crew.forge_objectives() + return + if(!istype(new_team)) + stack_trace("Wrong team type passed to [type] initialization.") + crew = new_team + +/datum/antagonist/pirate/on_gain() + if(crew) + owner.objectives |= crew.objectives + . = ..() + +/datum/antagonist/pirate/on_removal() + if(crew) + owner.objectives -= crew.objectives + . = ..() + +/datum/team/pirate + name = "Pirate crew" + +/datum/team/pirate/proc/forge_objectives() + var/datum/objective/loot/getbooty = new() + getbooty.team = src + getbooty.storage_area = locate(/area/shuttle/pirate/vault) in GLOB.sortedAreas + getbooty.update_initial_value() + getbooty.update_explanation_text() + objectives += getbooty + for(var/datum/mind/M in members) + M.objectives |= objectives + + +GLOBAL_LIST_INIT(pirate_loot_cache, typecacheof(list( + /obj/structure/reagent_dispensers/beerkeg, + /mob/living/simple_animal/parrot, + /obj/item/stack/sheet/mineral/gold, + /obj/item/stack/sheet/mineral/diamond, + /obj/item/stack/spacecash, + /obj/item/melee/sabre,))) + +/datum/objective/loot + var/area/storage_area //Place where we we will look for the loot. + explanation_text = "Acquire valuable loot and store it in designated area." + var/target_value = 50000 + var/initial_value = 0 //Things in the vault at spawn time do not count + +/datum/objective/loot/update_explanation_text() + if(storage_area) + explanation_text = "Acquire loot and store [target_value] of credits worth in [storage_area.name]." + +/datum/objective/loot/proc/loot_listing() + //Lists notable loot. + if(!storage_area) + return "Nothing" + var/list/loot_table = list() + for(var/atom/movable/AM in storage_area.GetAllContents()) + if(is_type_in_typecache(AM,GLOB.pirate_loot_cache)) + var/lootname = AM.name + var/count = 1 + if(istype(AM,/obj/item/stack)) //Ugh. + var/obj/item/stack/S = AM + lootname = S.singular_name + count = S.amount + if(!loot_table[lootname]) + loot_table[lootname] = count + else + loot_table[lootname] += count + var/list/loot_texts = list() + for(var/key in loot_table) + var/amount = loot_table[key] + loot_texts += "[amount] [key][amount > 1 ? "s":""]" + return loot_texts.Join(", ") + +/datum/objective/loot/proc/get_loot_value() + if(!storage_area) + return 0 + var/value = 0 + for(var/turf/T in storage_area.contents) + value += export_item_and_contents(T,TRUE, TRUE, dry_run = TRUE) + return value - initial_value + +/datum/objective/loot/proc/update_initial_value() + initial_value = get_loot_value() + +/datum/objective/loot/check_completion() + return ..() || get_loot_value() >= target_value + +/datum/team/pirate/roundend_report() + var/list/parts = list() + + parts += "Space Pirates were:" + + var/all_dead = TRUE + for(var/datum/mind/M in members) + if(considered_alive(M)) + all_dead = FALSE + parts += printplayerlist(members) + + parts += "Loot stolen: " + var/datum/objective/loot/L = locate() in objectives + parts += L.loot_listing() + parts += "Total loot value : [L.get_loot_value()]/[L.target_value] credits" + + if(L.check_completion() && !all_dead) + parts += "The pirate crew was successful!" + else + parts += "The pirate crew has failed." + + return "
[parts.Join("
")]
" \ No newline at end of file diff --git a/code/game/gamemodes/miniantags/revenant/revenant.dm b/code/modules/antagonists/revenant/revenant.dm similarity index 100% rename from code/game/gamemodes/miniantags/revenant/revenant.dm rename to code/modules/antagonists/revenant/revenant.dm diff --git a/code/game/gamemodes/miniantags/revenant/revenant_abilities.dm b/code/modules/antagonists/revenant/revenant_abilities.dm similarity index 100% rename from code/game/gamemodes/miniantags/revenant/revenant_abilities.dm rename to code/modules/antagonists/revenant/revenant_abilities.dm diff --git a/code/game/gamemodes/miniantags/revenant/revenant_blight.dm b/code/modules/antagonists/revenant/revenant_blight.dm similarity index 100% rename from code/game/gamemodes/miniantags/revenant/revenant_blight.dm rename to code/modules/antagonists/revenant/revenant_blight.dm diff --git a/code/game/gamemodes/miniantags/revenant/revenant_spawn_event.dm b/code/modules/antagonists/revenant/revenant_spawn_event.dm similarity index 100% rename from code/game/gamemodes/miniantags/revenant/revenant_spawn_event.dm rename to code/modules/antagonists/revenant/revenant_spawn_event.dm diff --git a/code/modules/antagonists/revolution/revolution.dm b/code/modules/antagonists/revolution/revolution.dm new file mode 100644 index 0000000000..5c89fe24cf --- /dev/null +++ b/code/modules/antagonists/revolution/revolution.dm @@ -0,0 +1,368 @@ +//How often to check for promotion possibility +#define HEAD_UPDATE_PERIOD 300 + +/datum/antagonist/rev + name = "Revolutionary" + roundend_category = "revolutionaries" // if by some miracle revolutionaries without revolution happen + antagpanel_category = "Revolution" + job_rank = ROLE_REV + var/hud_type = "rev" + var/datum/team/revolution/rev_team + +/datum/antagonist/rev/can_be_owned(datum/mind/new_owner) + . = ..() + if(.) + if(new_owner.assigned_role in GLOB.command_positions) + return FALSE + if(new_owner.unconvertable) + return FALSE + if(new_owner.current && new_owner.current.isloyal()) + return FALSE + +/datum/antagonist/rev/apply_innate_effects(mob/living/mob_override) + var/mob/living/M = mob_override || owner.current + update_rev_icons_added(M) + +/datum/antagonist/rev/remove_innate_effects(mob/living/mob_override) + var/mob/living/M = mob_override || owner.current + update_rev_icons_removed(M) + +/datum/antagonist/rev/proc/equip_rev() + return + +/datum/antagonist/rev/on_gain() + . = ..() + create_objectives() + equip_rev() + owner.current.log_message("Has been converted to the revolution!", INDIVIDUAL_ATTACK_LOG) + +/datum/antagonist/rev/on_removal() + remove_objectives() + . = ..() + +/datum/antagonist/rev/greet() + to_chat(owner, "You are now a revolutionary! Help your cause. Do not harm your fellow freedom fighters. You can identify your comrades by the red \"R\" icons, and your leaders by the blue \"R\" icons. Help them kill the heads to win the revolution!") + owner.announce_objectives() + +/datum/antagonist/rev/create_team(datum/team/revolution/new_team) + if(!new_team) + //For now only one revolution at a time + for(var/datum/antagonist/rev/head/H in GLOB.antagonists) + if(!H.owner) + continue + if(H.rev_team) + rev_team = H.rev_team + return + rev_team = new /datum/team/revolution + rev_team.update_objectives() + rev_team.update_heads() + return + if(!istype(new_team)) + stack_trace("Wrong team type passed to [type] initialization.") + rev_team = new_team + +/datum/antagonist/rev/get_team() + return rev_team + +/datum/antagonist/rev/proc/create_objectives() + owner.objectives |= rev_team.objectives + +/datum/antagonist/rev/proc/remove_objectives() + owner.objectives -= rev_team.objectives + +//Bump up to head_rev +/datum/antagonist/rev/proc/promote() + var/old_team = rev_team + var/datum/mind/old_owner = owner + silent = TRUE + owner.remove_antag_datum(/datum/antagonist/rev) + var/datum/antagonist/rev/head/new_revhead = new() + new_revhead.silent = TRUE + old_owner.add_antag_datum(new_revhead,old_team) + new_revhead.silent = FALSE + to_chat(old_owner, "You have proved your devotion to revolution! You are a head revolutionary now!") + +/datum/antagonist/rev/get_admin_commands() + . = ..() + .["Promote"] = CALLBACK(src,.proc/admin_promote) + +/datum/antagonist/rev/proc/admin_promote(mob/admin) + var/datum/mind/O = owner + promote() + message_admins("[key_name_admin(admin)] has head-rev'ed [O].") + log_admin("[key_name(admin)] has head-rev'ed [O].") + +/datum/antagonist/rev/head/admin_add(datum/mind/new_owner,mob/admin) + give_flash = TRUE + give_hud = TRUE + remove_clumsy = TRUE + new_owner.add_antag_datum(src) + message_admins("[key_name_admin(admin)] has head-rev'ed [new_owner.current].") + log_admin("[key_name(admin)] has head-rev'ed [new_owner.current].") + to_chat(new_owner.current, "You are a member of the revolutionaries' leadership now!") + +/datum/antagonist/rev/head/get_admin_commands() + . = ..() + . -= "Promote" + .["Take flash"] = CALLBACK(src,.proc/admin_take_flash) + .["Give flash"] = CALLBACK(src,.proc/admin_give_flash) + .["Repair flash"] = CALLBACK(src,.proc/admin_repair_flash) + .["Demote"] = CALLBACK(src,.proc/admin_demote) + +/datum/antagonist/rev/head/proc/admin_take_flash(mob/admin) + var/list/L = owner.current.get_contents() + var/obj/item/device/assembly/flash/flash = locate() in L + if (!flash) + to_chat(admin, "Deleting flash failed!") + return + qdel(flash) + +/datum/antagonist/rev/head/proc/admin_give_flash(mob/admin) + //This is probably overkill but making these impact state annoys me + var/old_give_flash = give_flash + var/old_give_hud = give_hud + var/old_remove_clumsy = remove_clumsy + give_flash = TRUE + give_hud = FALSE + remove_clumsy = FALSE + equip_rev() + give_flash = old_give_flash + give_hud = old_give_hud + remove_clumsy = old_remove_clumsy + +/datum/antagonist/rev/head/proc/admin_repair_flash(mob/admin) + var/list/L = owner.current.get_contents() + var/obj/item/device/assembly/flash/flash = locate() in L + if (!flash) + to_chat(admin, "Repairing flash failed!") + else + flash.crit_fail = 0 + flash.update_icon() + +/datum/antagonist/rev/head/proc/admin_demote(datum/mind/target,mob/user) + message_admins("[key_name_admin(user)] has demoted [owner.current] from head revolutionary.") + log_admin("[key_name(user)] has demoted [owner.current] from head revolutionary.") + demote() + +/datum/antagonist/rev/head + name = "Head Revolutionary" + hud_type = "rev_head" + var/remove_clumsy = FALSE + var/give_flash = FALSE + var/give_hud = TRUE + +/datum/antagonist/rev/head/antag_listing_name() + return ..() + "(Leader)" + +/datum/antagonist/rev/proc/update_rev_icons_added(mob/living/M) + var/datum/atom_hud/antag/revhud = GLOB.huds[ANTAG_HUD_REV] + revhud.join_hud(M) + set_antag_hud(M,hud_type) + +/datum/antagonist/rev/proc/update_rev_icons_removed(mob/living/M) + var/datum/atom_hud/antag/revhud = GLOB.huds[ANTAG_HUD_REV] + revhud.leave_hud(M) + set_antag_hud(M, null) + +/datum/antagonist/rev/proc/can_be_converted(mob/living/candidate) + if(!candidate.mind) + return FALSE + if(!can_be_owned(candidate.mind)) + return FALSE + var/mob/living/carbon/C = candidate //Check to see if the potential rev is implanted + if(!istype(C)) //Can't convert simple animals + return FALSE + return TRUE + +/datum/antagonist/rev/proc/add_revolutionary(datum/mind/rev_mind,stun = TRUE) + if(!can_be_converted(rev_mind.current)) + return FALSE + if(stun) + if(iscarbon(rev_mind.current)) + var/mob/living/carbon/carbon_mob = rev_mind.current + carbon_mob.silent = max(carbon_mob.silent, 5) + carbon_mob.flash_act(1, 1) + rev_mind.current.Stun(100) + rev_mind.add_antag_datum(/datum/antagonist/rev,rev_team) + rev_mind.special_role = "Revolutionary" + return TRUE + +/datum/antagonist/rev/head/proc/demote() + var/datum/mind/old_owner = owner + var/old_team = rev_team + silent = TRUE + owner.remove_antag_datum(/datum/antagonist/rev/head) + var/datum/antagonist/rev/new_rev = new /datum/antagonist/rev() + new_rev.silent = TRUE + old_owner.add_antag_datum(new_rev,old_team) + new_rev.silent = FALSE + to_chat(old_owner, "Revolution has been disappointed of your leader traits! You are a regular revolutionary now!") + +/datum/antagonist/rev/farewell() + if(ishuman(owner.current)) + owner.current.visible_message("[owner.current] looks like they just remembered their real allegiance!", null, null, null, owner.current) + to_chat(owner, "You are no longer a brainwashed revolutionary! Your memory is hazy from the time you were a rebel...the only thing you remember is the name of the one who brainwashed you...") + else if(issilicon(owner.current)) + owner.current.visible_message("The frame beeps contentedly, purging the hostile memory engram from the MMI before initalizing it.", null, null, null, owner.current) + to_chat(owner, "The frame's firmware detects and deletes your neural reprogramming! You remember nothing but the name of the one who flashed you.") + +/datum/antagonist/rev/proc/remove_revolutionary(borged, deconverter) + log_attack("[owner.current] (Key: [key_name(owner.current)]) has been deconverted from the revolution by [deconverter] (Key: [key_name(deconverter)])!") + if(borged) + message_admins("[ADMIN_LOOKUPFLW(owner.current)] has been borged while being a [name]") + owner.special_role = null + if(iscarbon(owner.current)) + var/mob/living/carbon/C = owner.current + C.Unconscious(100) + owner.remove_antag_datum(type) + +/datum/antagonist/rev/head/remove_revolutionary(borged,deconverter) + if(!borged) + return + . = ..() + +/datum/antagonist/rev/head/equip_rev() + var/mob/living/carbon/human/H = owner.current + if(!istype(H)) + return + + if(remove_clumsy && owner.assigned_role == "Clown") + to_chat(owner, "Your training has allowed you to overcome your clownish nature, allowing you to wield weapons without harming yourself.") + H.dna.remove_mutation(CLOWNMUT) + + if(give_flash) + var/obj/item/device/assembly/flash/T = new(H) + var/list/slots = list ( + "backpack" = slot_in_backpack, + "left pocket" = slot_l_store, + "right pocket" = slot_r_store + ) + var/where = H.equip_in_one_of_slots(T, slots) + if (!where) + to_chat(H, "The Syndicate were unfortunately unable to get you a flash.") + else + to_chat(H, "The flash in your [where] will help you to persuade the crew to join your cause.") + + if(give_hud) + var/obj/item/organ/cyberimp/eyes/hud/security/syndicate/S = new(H) + S.Insert(H, special = FALSE, drop_if_replaced = FALSE) + to_chat(H, "Your eyes have been implanted with a cybernetic security HUD which will help you keep track of who is mindshield-implanted, and therefore unable to be recruited.") + +/datum/team/revolution + name = "Revolution" + var/max_headrevs = 3 + +/datum/team/revolution/proc/update_objectives(initial = FALSE) + var/untracked_heads = SSjob.get_all_heads() + for(var/datum/objective/mutiny/O in objectives) + untracked_heads -= O.target + for(var/datum/mind/M in untracked_heads) + var/datum/objective/mutiny/new_target = new() + new_target.team = src + new_target.target = M + new_target.update_explanation_text() + objectives += new_target + for(var/datum/mind/M in members) + M.objectives |= objectives + + addtimer(CALLBACK(src,.proc/update_objectives),HEAD_UPDATE_PERIOD,TIMER_UNIQUE) + +/datum/team/revolution/proc/head_revolutionaries() + . = list() + for(var/datum/mind/M in members) + if(M.has_antag_datum(/datum/antagonist/rev/head)) + . += M + +/datum/team/revolution/proc/update_heads() + if(SSticker.HasRoundStarted()) + var/list/datum/mind/head_revolutionaries = head_revolutionaries() + var/list/datum/mind/heads = SSjob.get_all_heads() + var/list/sec = SSjob.get_all_sec() + + if(head_revolutionaries.len < max_headrevs && head_revolutionaries.len < round(heads.len - ((8 - sec.len) / 3))) + var/list/datum/mind/non_heads = members - head_revolutionaries + var/list/datum/mind/promotable = list() + for(var/datum/mind/khrushchev in non_heads) + if(khrushchev.current && !khrushchev.current.incapacitated() && !khrushchev.current.restrained() && khrushchev.current.client && khrushchev.current.stat != DEAD) + if(ROLE_REV in khrushchev.current.client.prefs.be_special) + promotable += khrushchev + if(promotable.len) + var/datum/mind/new_leader = pick(promotable) + var/datum/antagonist/rev/rev = new_leader.has_antag_datum(/datum/antagonist/rev) + rev.promote() + + addtimer(CALLBACK(src,.proc/update_heads),HEAD_UPDATE_PERIOD,TIMER_UNIQUE) + + +/datum/team/revolution/roundend_report() + if(!members.len) + return + + var/list/result = list() + + result += "
" + + var/num_revs = 0 + var/num_survivors = 0 + for(var/mob/living/carbon/survivor in GLOB.alive_mob_list) + if(survivor.ckey) + num_survivors++ + if(survivor.mind) + if(is_revolutionary(survivor)) + num_revs++ + if(num_survivors) + result += "Command's Approval Rating: [100 - round((num_revs/num_survivors)*100, 0.1)]%
" + + + var/list/targets = list() + var/list/datum/mind/headrevs = get_antag_minds(/datum/antagonist/rev/head) + var/list/datum/mind/revs = get_antag_minds(/datum/antagonist/rev,TRUE) + if(headrevs.len) + var/list/headrev_part = list() + headrev_part += "The head revolutionaries were:" + headrev_part += printplayerlist(headrevs,TRUE) + result += headrev_part.Join("
") + + if(revs.len) + var/list/rev_part = list() + rev_part += "The revolutionaries were:" + rev_part += printplayerlist(revs,TRUE) + result += rev_part.Join("
") + + var/list/heads = SSjob.get_all_heads() + if(heads.len) + var/head_text = "The heads of staff were:" + head_text += "
    " + for(var/datum/mind/head in heads) + var/target = (head in targets) + head_text += "
  • " + if(target) + head_text += "Target" + head_text += "[printplayer(head, 1)]
  • " + head_text += "

" + result += head_text + + result += "
" + + return result.Join() + +/datum/team/revolution/antag_listing_entry() + var/common_part = ..() + var/heads_report = "Heads of Staff
" + heads_report += "" + for(var/datum/mind/N in SSjob.get_living_heads()) + var/mob/M = N.current + if(M) + heads_report += "" + heads_report += "" + heads_report += "" + var/turf/mob_loc = get_turf(M) + heads_report += "" + else + heads_report += "" + heads_report += "" + heads_report += "
[M.real_name][M.client ? "" : " (No Client)"][M.stat == DEAD ? " (DEAD)" : ""]PMFLW[mob_loc.loc]
[N.name]([N.key])Head body destroyed!PM
" + return common_part + heads_report + +/datum/team/revolution/is_gamemode_hero() + return SSticker.mode.name == "revolution" \ No newline at end of file diff --git a/code/game/gamemodes/miniantags/slaughter/slaughter.dm b/code/modules/antagonists/slaughter/slaughter.dm similarity index 100% rename from code/game/gamemodes/miniantags/slaughter/slaughter.dm rename to code/modules/antagonists/slaughter/slaughter.dm diff --git a/code/game/gamemodes/miniantags/slaughter/slaughterevent.dm b/code/modules/antagonists/slaughter/slaughterevent.dm similarity index 100% rename from code/game/gamemodes/miniantags/slaughter/slaughterevent.dm rename to code/modules/antagonists/slaughter/slaughterevent.dm diff --git a/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm b/code/modules/antagonists/swarmer/swarmer.dm similarity index 100% rename from code/game/gamemodes/miniantags/bot_swarm/swarmer.dm rename to code/modules/antagonists/swarmer/swarmer.dm diff --git a/code/game/gamemodes/miniantags/bot_swarm/swarmer_event.dm b/code/modules/antagonists/swarmer/swarmer_event.dm similarity index 96% rename from code/game/gamemodes/miniantags/bot_swarm/swarmer_event.dm rename to code/modules/antagonists/swarmer/swarmer_event.dm index 15ae0a7fe1..37dcbf4221 100644 --- a/code/game/gamemodes/miniantags/bot_swarm/swarmer_event.dm +++ b/code/modules/antagonists/swarmer/swarmer_event.dm @@ -2,7 +2,7 @@ name = "Spawn Swarmer Shell" typepath = /datum/round_event/spawn_swarmer weight = 7 - max_occurrences = 1 //Only once okay fam + max_occurrences = 0 //nononononono earliest_start = 18000 //30 minutes min_players = 15 diff --git a/code/modules/antagonists/traitor/IAA/internal_affairs.dm b/code/modules/antagonists/traitor/IAA/internal_affairs.dm new file mode 100644 index 0000000000..9077b84dcd --- /dev/null +++ b/code/modules/antagonists/traitor/IAA/internal_affairs.dm @@ -0,0 +1,302 @@ +#define PINPOINTER_MINIMUM_RANGE 15 +#define PINPOINTER_EXTRA_RANDOM_RANGE 10 +#define PINPOINTER_PING_TIME 40 +#define PROB_ACTUAL_TRAITOR 20 +#define TRAITOR_AGENT_ROLE "Syndicate External Affairs Agent" + +/datum/antagonist/traitor/internal_affairs + name = "Internal Affairs Agent" + human_datum = /datum/antagonist/traitor/human/internal_affairs + ai_datum = /datum/antagonist/traitor/AI/internal_affairs + antagpanel_category = "IAA" + +/datum/antagonist/traitor/AI/internal_affairs + name = "Internal Affairs Agent" + employer = "Nanotrasen" + special_role = "internal affairs agent" + antagpanel_category = "IAA" + var/syndicate = FALSE + var/last_man_standing = FALSE + var/list/datum/mind/targets_stolen + + +/datum/antagonist/traitor/human/internal_affairs + name = "Internal Affairs Agent" + employer = "Nanotrasen" + special_role = "internal affairs agent" + antagpanel_category = "IAA" + var/syndicate = FALSE + var/last_man_standing = FALSE + var/list/datum/mind/targets_stolen + + +/datum/antagonist/traitor/human/internal_affairs/proc/give_pinpointer() + if(owner && owner.current) + owner.current.apply_status_effect(/datum/status_effect/agent_pinpointer) + +/datum/antagonist/traitor/human/internal_affairs/apply_innate_effects() + .=..() //in case the base is used in future + if(owner && owner.current) + give_pinpointer(owner.current) + +/datum/antagonist/traitor/human/internal_affairs/remove_innate_effects() + .=..() + if(owner && owner.current) + owner.current.remove_status_effect(/datum/status_effect/agent_pinpointer) + +/datum/antagonist/traitor/human/internal_affairs/on_gain() + START_PROCESSING(SSprocessing, src) + .=..() +/datum/antagonist/traitor/human/internal_affairs/on_removal() + STOP_PROCESSING(SSprocessing,src) + .=..() +/datum/antagonist/traitor/human/internal_affairs/process() + iaa_process() + +/datum/antagonist/traitor/AI/internal_affairs/on_gain() + START_PROCESSING(SSprocessing, src) + .=..() +/datum/antagonist/traitor/AI/internal_affairs/on_removal() + STOP_PROCESSING(SSprocessing,src) + .=..() +/datum/antagonist/traitor/AI/internal_affairs/process() + iaa_process() + +/datum/status_effect/agent_pinpointer + id = "agent_pinpointer" + duration = -1 + tick_interval = PINPOINTER_PING_TIME + alert_type = /obj/screen/alert/status_effect/agent_pinpointer + var/minimum_range = PINPOINTER_MINIMUM_RANGE + var/mob/scan_target = null + +/obj/screen/alert/status_effect/agent_pinpointer + name = "Internal Affairs Integrated Pinpointer" + desc = "Even stealthier than a normal implant." + icon = 'icons/obj/device.dmi' + icon_state = "pinon" + +/datum/status_effect/agent_pinpointer/proc/point_to_target() //If we found what we're looking for, show the distance and direction + if(!scan_target) + linked_alert.icon_state = "pinonnull" + return + var/turf/here = get_turf(owner) + var/turf/there = get_turf(scan_target) + if(here.z != there.z) + linked_alert.icon_state = "pinonnull" + return + if(get_dist_euclidian(here,there)<=minimum_range + rand(0, PINPOINTER_EXTRA_RANDOM_RANGE)) + linked_alert.icon_state = "pinondirect" + else + linked_alert.setDir(get_dir(here, there)) + switch(get_dist(here, there)) + if(1 to 8) + linked_alert.icon_state = "pinonclose" + if(9 to 16) + linked_alert.icon_state = "pinonmedium" + if(16 to INFINITY) + linked_alert.icon_state = "pinonfar" + +/datum/status_effect/agent_pinpointer/proc/scan_for_target() + scan_target = null + if(owner) + if(owner.mind) + if(owner.mind.objectives) + for(var/datum/objective/objective_ in owner.mind.objectives) + if(!is_internal_objective(objective_)) + continue + var/datum/objective/assassinate/internal/objective = objective_ + var/mob/current = objective.target.current + if(current&¤t.stat!=DEAD) + scan_target = current + break + +/datum/status_effect/agent_pinpointer/tick() + if(!owner) + qdel(src) + return + scan_for_target() + point_to_target() + + +/proc/is_internal_objective(datum/objective/O) + return (istype(O, /datum/objective/assassinate/internal)||istype(O, /datum/objective/destroy/internal)) + +/datum/antagonist/traitor/proc/replace_escape_objective() + if(!owner||!owner.objectives) + return + for (var/objective_ in owner.objectives) + if(!(istype(objective_, /datum/objective/escape)||istype(objective_, /datum/objective/survive))) + continue + remove_objective(objective_) + + var/datum/objective/martyr/martyr_objective = new + martyr_objective.owner = owner + add_objective(martyr_objective) + +/datum/antagonist/traitor/proc/reinstate_escape_objective() + if(!owner||!owner.objectives) + return + for (var/objective_ in owner.objectives) + if(!istype(objective_, /datum/objective/martyr)) + continue + remove_objective(objective_) + +/datum/antagonist/traitor/human/internal_affairs/reinstate_escape_objective() + ..() + var/datum/objective/escape/escape_objective = new + escape_objective.owner = owner + add_objective(escape_objective) + +/datum/antagonist/traitor/AI/internal_affairs/reinstate_escape_objective() + ..() + var/datum/objective/survive/survive_objective = new + survive_objective.owner = owner + add_objective(survive_objective) + +/datum/antagonist/traitor/proc/steal_targets(datum/mind/victim) + var/datum/antagonist/traitor/human/internal_affairs/this = src //Should only use this if IAA + + if(!owner.current||owner.current.stat==DEAD) + return + to_chat(owner.current, " Target eliminated: [victim.name]") + for(var/objective_ in victim.objectives) + if(istype(objective_, /datum/objective/assassinate/internal)) + var/datum/objective/assassinate/internal/objective = objective_ + if(objective.target==owner) + continue + else if(this.targets_stolen.Find(objective.target) == 0) + var/datum/objective/assassinate/internal/new_objective = new + new_objective.owner = owner + new_objective.target = objective.target + new_objective.update_explanation_text() + add_objective(new_objective) + this.targets_stolen += objective.target + var/status_text = objective.check_completion() ? "neutralised" : "active" + to_chat(owner.current, " New target added to database: [objective.target.name] ([status_text]) ") + else if(istype(objective_, /datum/objective/destroy/internal)) + var/datum/objective/destroy/internal/objective = objective_ + var/datum/objective/destroy/internal/new_objective = new + if(objective.target==owner) + continue + else if(this.targets_stolen.Find(objective.target) == 0) + new_objective.owner = owner + new_objective.target = objective.target + new_objective.update_explanation_text() + add_objective(new_objective) + this.targets_stolen += objective.target + var/status_text = objective.check_completion() ? "neutralised" : "active" + to_chat(owner.current, " New target added to database: [objective.target.name] ([status_text]) ") + this.last_man_standing = TRUE + for(var/objective_ in owner.objectives) + if(!is_internal_objective(objective_)) + continue + var/datum/objective/assassinate/internal/objective = objective_ + if(!objective.check_completion()) + this.last_man_standing = FALSE + return + if(this.last_man_standing) + if(this.syndicate) + to_chat(owner.current," All the loyalist agents are dead, and no more is required of you. Die a glorious death, agent. ") + else + to_chat(owner.current," All the other agents are dead, and you're the last loose end. Stage a Syndicate terrorist attack to cover up for today's events. You no longer have any limits on collateral damage.") + replace_escape_objective(owner) + +/datum/antagonist/traitor/proc/iaa_process() + var/datum/antagonist/traitor/human/internal_affairs/this = src //Should only use this if IAA + if(owner&&owner.current&&owner.current.stat!=DEAD) + for(var/objective_ in owner.objectives) + if(!is_internal_objective(objective_)) + continue + var/datum/objective/assassinate/internal/objective = objective_ + if(!objective.target) + continue + if(objective.check_completion()) + if(objective.stolen) + continue + else + steal_targets(objective.target) + objective.stolen = TRUE + else + if(objective.stolen) + var/fail_msg = "Your sensors tell you that [objective.target.current.real_name], one of the targets you were meant to have killed, pulled one over on you, and is still alive - do the job properly this time! " + if(this.last_man_standing) + if(this.syndicate) + fail_msg += " You no longer have permission to die. " + else + fail_msg += " The truth could still slip out!
Cease any terrorist actions as soon as possible, unneeded property damage or loss of employee life will lead to your contract being terminated.
" + reinstate_escape_objective(owner) + this.last_man_standing = FALSE + to_chat(owner.current, fail_msg) + objective.stolen = FALSE + +/datum/antagonist/traitor/proc/forge_iaa_objectives() + var/datum/antagonist/traitor/human/internal_affairs/this = src //Should only use this if IAA + if(SSticker.mode.target_list.len && SSticker.mode.target_list[owner]) // Is a double agent + + // Assassinate + var/datum/mind/target_mind = SSticker.mode.target_list[owner] + if(issilicon(target_mind.current)) + var/datum/objective/destroy/internal/destroy_objective = new + destroy_objective.owner = owner + destroy_objective.target = target_mind + destroy_objective.update_explanation_text() + else + var/datum/objective/assassinate/internal/kill_objective = new + kill_objective.owner = owner + kill_objective.target = target_mind + kill_objective.update_explanation_text() + add_objective(kill_objective) + + //Optional traitor objective + if(prob(PROB_ACTUAL_TRAITOR)) + employer = "The Syndicate" + owner.special_role = TRAITOR_AGENT_ROLE + special_role = TRAITOR_AGENT_ROLE + this.syndicate = TRUE + forge_single_objective() + + else + ..() // Give them standard objectives. + return + +/datum/antagonist/traitor/human/internal_affairs/forge_traitor_objectives() + forge_iaa_objectives() + var/datum/objective/escape/escape_objective = new + escape_objective.owner = owner + add_objective(escape_objective) + +/datum/antagonist/traitor/AI/internal_affairs/forge_traitor_objectives() + forge_iaa_objectives() + var/datum/objective/survive/survive_objective = new + survive_objective.owner = owner + add_objective(survive_objective) + +/datum/antagonist/traitor/proc/greet_iaa() + var/datum/antagonist/traitor/human/internal_affairs/this = src //Should only use this if IAA + var/crime = pick("distribution of contraband" , "unauthorized erotic action on duty", "embezzlement", "piloting under the influence", "dereliction of duty", "syndicate collaboration", "mutiny", "multiple homicides", "corporate espionage", "recieving bribes", "malpractice", "worship of prohbited life forms", "possession of profane texts", "murder", "arson", "insulting their manager", "grand theft", "conspiracy", "attempting to unionize", "vandalism", "gross incompetence") + + to_chat(owner.current, "You are the [special_role].") + if(this.syndicate) + to_chat(owner.current, "Your target has been framed for [crime], and you have been tasked with eliminating them to prevent them defending themselves in court.") + to_chat(owner.current, "Any damage you cause will be a further embarrassment to Nanotrasen, so you have no limits on collateral damage.") + to_chat(owner.current, " You have been provided with a standard uplink to accomplish your task. ") + else + to_chat(owner.current, "Your target is suspected of [crime], and you have been tasked with eliminating them by any means necessary to avoid a costly and embarrassing public trial.") + to_chat(owner.current, "While you have a license to kill, unneeded property damage or loss of employee life will lead to your contract being terminated.") + to_chat(owner.current, "For the sake of plausible deniability, you have been equipped with an array of captured Syndicate weaponry available via uplink.") + + to_chat(owner.current, "Finally, watch your back. Your target has friends in high places, and intel suggests someone may have taken out a contract of their own to protect them.") + owner.announce_objectives() + +/datum/antagonist/traitor/AI/internal_affairs/greet() + greet_iaa() + +/datum/antagonist/traitor/human/internal_affairs/greet() + greet_iaa() + + +#undef PROB_ACTUAL_TRAITOR +#undef PINPOINTER_EXTRA_RANDOM_RANGE +#undef PINPOINTER_MINIMUM_RANGE +#undef PINPOINTER_PING_TIME diff --git a/code/modules/antagonists/traitor/datum_traitor.dm b/code/modules/antagonists/traitor/datum_traitor.dm new file mode 100644 index 0000000000..6c55563810 --- /dev/null +++ b/code/modules/antagonists/traitor/datum_traitor.dm @@ -0,0 +1,350 @@ +/datum/antagonist/traitor + name = "Traitor" + roundend_category = "traitors" + antagpanel_category = "Traitor" + job_rank = ROLE_TRAITOR + var/should_specialise = TRUE //do we split into AI and human, set to true on inital assignment only + var/ai_datum = /datum/antagonist/traitor/AI + var/human_datum = /datum/antagonist/traitor/human + var/special_role = "traitor" + var/employer = "The Syndicate" + var/give_objectives = TRUE + var/should_give_codewords = TRUE + + + +/datum/antagonist/traitor/human + show_in_antagpanel = FALSE + should_specialise = FALSE + var/should_equip = TRUE + + +/datum/antagonist/traitor/AI + show_in_antagpanel = FALSE + should_specialise = FALSE + +/datum/antagonist/traitor/specialization(datum/mind/new_owner) + if(should_specialise) + if(new_owner.current && isAI(new_owner.current)) + return new ai_datum() + else + return new human_datum() + else + return ..() + +/datum/antagonist/traitor/on_gain() + SSticker.mode.traitors += owner + owner.special_role = special_role + if(give_objectives) + forge_traitor_objectives() + finalize_traitor() + ..() + +/datum/antagonist/traitor/apply_innate_effects() + if(owner.assigned_role == "Clown") + var/mob/living/carbon/human/traitor_mob = owner.current + if(traitor_mob && istype(traitor_mob)) + if(!silent) + to_chat(traitor_mob, "Your training has allowed you to overcome your clownish nature, allowing you to wield weapons without harming yourself.") + traitor_mob.dna.remove_mutation(CLOWNMUT) + +/datum/antagonist/traitor/remove_innate_effects() + if(owner.assigned_role == "Clown") + var/mob/living/carbon/human/traitor_mob = owner.current + if(traitor_mob && istype(traitor_mob)) + traitor_mob.dna.add_mutation(CLOWNMUT) + +/datum/antagonist/traitor/on_removal() + SSticker.mode.traitors -= owner + for(var/O in objectives) + owner.objectives -= O + objectives = list() + if(!silent && owner.current) + to_chat(owner.current," You are no longer the [special_role]! ") + owner.special_role = null + ..() + +/datum/antagonist/traitor/AI/on_removal() + if(owner.current && isAI(owner.current)) + var/mob/living/silicon/ai/A = owner.current + A.set_zeroth_law("") + A.verbs -= /mob/living/silicon/ai/proc/choose_modules + A.malf_picker.remove_malf_verbs(A) + qdel(A.malf_picker) + ..() + +/datum/antagonist/traitor/proc/add_objective(var/datum/objective/O) + owner.objectives += O + objectives += O + +/datum/antagonist/traitor/proc/remove_objective(var/datum/objective/O) + owner.objectives -= O + objectives -= O + +/datum/antagonist/traitor/proc/forge_traitor_objectives() + return + +/datum/antagonist/traitor/human/forge_traitor_objectives() + var/is_hijacker = prob(10) + var/martyr_chance = prob(20) + var/objective_count = is_hijacker //Hijacking counts towards number of objectives + if(!SSticker.mode.exchange_blue && SSticker.mode.traitors.len >= 8) //Set up an exchange if there are enough traitors + if(!SSticker.mode.exchange_red) + SSticker.mode.exchange_red = owner + else + SSticker.mode.exchange_blue = owner + assign_exchange_role(SSticker.mode.exchange_red) + assign_exchange_role(SSticker.mode.exchange_blue) + objective_count += 1 //Exchange counts towards number of objectives + var/toa = CONFIG_GET(number/traitor_objectives_amount) + for(var/i = objective_count, i < toa, i++) + forge_single_objective() + + if(is_hijacker && objective_count <= toa) //Don't assign hijack if it would exceed the number of objectives set in config.traitor_objectives_amount + if (!(locate(/datum/objective/hijack) in owner.objectives)) + var/datum/objective/hijack/hijack_objective = new + hijack_objective.owner = owner + add_objective(hijack_objective) + return + + + var/martyr_compatibility = 1 //You can't succeed in stealing if you're dead. + for(var/datum/objective/O in owner.objectives) + if(!O.martyr_compatible) + martyr_compatibility = 0 + break + + if(martyr_compatibility && martyr_chance) + var/datum/objective/martyr/martyr_objective = new + martyr_objective.owner = owner + add_objective(martyr_objective) + return + + else + if(!(locate(/datum/objective/escape) in owner.objectives)) + var/datum/objective/escape/escape_objective = new + escape_objective.owner = owner + add_objective(escape_objective) + return + +/datum/antagonist/traitor/AI/forge_traitor_objectives() + var/objective_count = 0 + + if(prob(30)) + objective_count += forge_single_objective() + + for(var/i = objective_count, i < CONFIG_GET(number/traitor_objectives_amount), i++) + var/datum/objective/assassinate/kill_objective = new + kill_objective.owner = owner + kill_objective.find_target() + add_objective(kill_objective) + + var/datum/objective/survive/exist/exist_objective = new + exist_objective.owner = owner + add_objective(exist_objective) +/datum/antagonist/traitor/proc/forge_single_objective() + return 0 +/datum/antagonist/traitor/human/forge_single_objective() //Returns how many objectives are added + .=1 + if(prob(50)) + var/list/active_ais = active_ais() + if(active_ais.len && prob(100/GLOB.joined_player_list.len)) + var/datum/objective/destroy/destroy_objective = new + destroy_objective.owner = owner + destroy_objective.find_target() + add_objective(destroy_objective) + else if(prob(30)) + var/datum/objective/maroon/maroon_objective = new + maroon_objective.owner = owner + maroon_objective.find_target() + add_objective(maroon_objective) + else + var/datum/objective/assassinate/kill_objective = new + kill_objective.owner = owner + kill_objective.find_target() + add_objective(kill_objective) + else + if(prob(15) && !(locate(/datum/objective/download in owner.objectives))) + var/datum/objective/download/download_objective = new + download_objective.owner = owner + download_objective.gen_amount_goal() + add_objective(download_objective) + else + var/datum/objective/steal/steal_objective = new + steal_objective.owner = owner + steal_objective.find_target() + add_objective(steal_objective) + +/datum/antagonist/traitor/AI/forge_single_objective() + .=1 + var/special_pick = rand(1,4) + switch(special_pick) + if(1) + var/datum/objective/block/block_objective = new + block_objective.owner = owner + add_objective(block_objective) + if(2) + var/datum/objective/purge/purge_objective = new + purge_objective.owner = owner + add_objective(purge_objective) + if(3) + var/datum/objective/robot_army/robot_objective = new + robot_objective.owner = owner + add_objective(robot_objective) + if(4) //Protect and strand a target + var/datum/objective/protect/yandere_one = new + yandere_one.owner = owner + add_objective(yandere_one) + yandere_one.find_target() + var/datum/objective/maroon/yandere_two = new + yandere_two.owner = owner + yandere_two.target = yandere_one.target + yandere_two.update_explanation_text() // normally called in find_target() + add_objective(yandere_two) + .=2 + +/datum/antagonist/traitor/greet() + to_chat(owner.current, "You are the [owner.special_role].") + owner.announce_objectives() + if(should_give_codewords) + give_codewords() + +/datum/antagonist/traitor/proc/finalize_traitor() + SSticker.mode.update_traitor_icons_added(owner) + return + +/datum/antagonist/traitor/AI/finalize_traitor() + ..() + add_law_zero() + owner.current.playsound_local(get_turf(owner.current), 'sound/ambience/antag/malf.ogg', 100, FALSE, pressure_affected = FALSE) + owner.current.grant_language(/datum/language/codespeak) + +/datum/antagonist/traitor/human/finalize_traitor() + ..() + if(should_equip) + equip(silent) + owner.current.playsound_local(get_turf(owner.current), 'sound/ambience/antag/tatoralert.ogg', 100, FALSE, pressure_affected = FALSE) + +/datum/antagonist/traitor/proc/give_codewords() + if(!owner.current) + return + var/mob/traitor_mob=owner.current + + to_chat(traitor_mob, "The Syndicate provided you with the following information on how to identify their agents:") + to_chat(traitor_mob, "Code Phrase: [GLOB.syndicate_code_phrase]") + to_chat(traitor_mob, "Code Response: [GLOB.syndicate_code_response]") + + antag_memory += "Code Phrase: [GLOB.syndicate_code_phrase]
" + antag_memory += "Code Response: [GLOB.syndicate_code_response]
" + + to_chat(traitor_mob, "Use the code words in the order provided, during regular conversation, to identify other agents. Proceed with caution, however, as everyone is a potential foe.") + +/datum/antagonist/traitor/AI/proc/add_law_zero() + var/mob/living/silicon/ai/killer = owner.current + if(!killer || !istype(killer)) + return + var/law = "Accomplish your objectives at all costs." + var/law_borg = "Accomplish your AI's objectives at all costs." + killer.set_zeroth_law(law, law_borg) + killer.set_syndie_radio() + to_chat(killer, "Your radio has been upgraded! Use :t to speak on an encrypted channel with Syndicate Agents!") + killer.add_malf_picker() + +/datum/antagonist/traitor/proc/equip(var/silent = FALSE) + return + +/datum/antagonist/traitor/human/equip(var/silent = FALSE) + owner.equip_traitor(employer, silent, src) + +/datum/antagonist/traitor/human/proc/assign_exchange_role() + //set faction + var/faction = "red" + if(owner == SSticker.mode.exchange_blue) + faction = "blue" + + //Assign objectives + var/datum/objective/steal/exchange/exchange_objective = new + exchange_objective.set_faction(faction,((faction == "red") ? SSticker.mode.exchange_blue : SSticker.mode.exchange_red)) + exchange_objective.owner = owner + add_objective(exchange_objective) + + if(prob(20)) + var/datum/objective/steal/exchange/backstab/backstab_objective = new + backstab_objective.set_faction(faction) + backstab_objective.owner = owner + add_objective(backstab_objective) + + //Spawn and equip documents + var/mob/living/carbon/human/mob = owner.current + + var/obj/item/folder/syndicate/folder + if(owner == SSticker.mode.exchange_red) + folder = new/obj/item/folder/syndicate/red(mob.loc) + else + folder = new/obj/item/folder/syndicate/blue(mob.loc) + + var/list/slots = list ( + "backpack" = slot_in_backpack, + "left pocket" = slot_l_store, + "right pocket" = slot_r_store + ) + + var/where = "At your feet" + var/equipped_slot = mob.equip_in_one_of_slots(folder, slots) + if (equipped_slot) + where = "In your [equipped_slot]" + to_chat(mob, "

[where] is a folder containing secret documents that another Syndicate group wants. We have set up a meeting with one of their agents on station to make an exchange. Exercise extreme caution as they cannot be trusted and may be hostile.
") + +//TODO Collate +/datum/antagonist/traitor/roundend_report() + var/list/result = list() + + var/traitorwin = TRUE + + result += printplayer(owner) + + var/TC_uses = 0 + var/uplink_true = FALSE + var/purchases = "" + var/datum/uplink_purchase_log/H = GLOB.uplink_purchase_logs_by_key[owner.key] + if(H) + TC_uses = H.total_spent + uplink_true = TRUE + purchases += H.generate_render(FALSE) + + var/objectives_text = "" + if(objectives.len)//If the traitor had no objectives, don't need to process this. + var/count = 1 + for(var/datum/objective/objective in objectives) + if(objective.check_completion()) + objectives_text += "
Objective #[count]: [objective.explanation_text] Success!" + else + objectives_text += "
Objective #[count]: [objective.explanation_text] Fail." + traitorwin = FALSE + count++ + + if(uplink_true) + var/uplink_text = "(used [TC_uses] TC) [purchases]" + if(TC_uses==0 && traitorwin) + var/static/icon/badass = icon('icons/badass.dmi', "badass") + uplink_text += "[icon2html(badass, world)]" + result += uplink_text + + result += objectives_text + + var/special_role_text = lowertext(name) + + if(traitorwin) + result += "The [special_role_text] was successful!" + else + result += "The [special_role_text] has failed!" + SEND_SOUND(owner.current, 'sound/ambience/ambifailure.ogg') + + return result.Join("
") + +/datum/antagonist/traitor/roundend_report_footer() + return "
The code phrases were: [GLOB.syndicate_code_phrase]
\ + The code responses were: [GLOB.syndicate_code_response]
" + +/datum/antagonist/traitor/is_gamemode_hero() + return SSticker.mode.name == "traitor" \ No newline at end of file diff --git a/code/game/gamemodes/malfunction/Malf_Modules.dm b/code/modules/antagonists/traitor/equipment/Malf_Modules.dm similarity index 99% rename from code/game/gamemodes/malfunction/Malf_Modules.dm rename to code/modules/antagonists/traitor/equipment/Malf_Modules.dm index 8962476491..46891b420d 100644 --- a/code/game/gamemodes/malfunction/Malf_Modules.dm +++ b/code/modules/antagonists/traitor/equipment/Malf_Modules.dm @@ -505,7 +505,7 @@ GLOBAL_LIST_INIT(blacklisted_malf_machines, typecacheof(list( for(var/obj/machinery/firealarm/F in GLOB.machines) if(!is_station_level(F.z)) continue - F.emagged = TRUE + F.obj_flags |= EMAGGED to_chat(owner, "All thermal sensors on the station have been disabled. Fire alerts will no longer be recognized.") owner.playsound_local(owner, 'sound/machines/terminal_off.ogg', 50, 0) @@ -532,7 +532,7 @@ GLOBAL_LIST_INIT(blacklisted_malf_machines, typecacheof(list( for(var/obj/machinery/airalarm/AA in GLOB.machines) if(!is_station_level(AA.z)) continue - AA.emagged = TRUE + AA.obj_flags |= EMAGGED to_chat(owner, "All air alarm safeties on the station have been overriden. Air alarms may now use the Flood environmental mode.") owner.playsound_local(owner, 'sound/machines/terminal_off.ogg', 50, 0) diff --git a/code/game/gamemodes/wizard/artefact.dm b/code/modules/antagonists/wizard/equipment/artefact.dm similarity index 96% rename from code/game/gamemodes/wizard/artefact.dm rename to code/modules/antagonists/wizard/equipment/artefact.dm index 94ecac2b79..279834223a 100644 --- a/code/game/gamemodes/wizard/artefact.dm +++ b/code/modules/antagonists/wizard/equipment/artefact.dm @@ -1,411 +1,411 @@ - -//Apprenticeship contract - moved to antag_spawner.dm - -///////////////////////////Veil Render////////////////////// - -/obj/item/veilrender - name = "veil render" - desc = "A wicked curved blade of alien origin, recovered from the ruins of a vast city." - icon = 'icons/obj/wizard.dmi' - icon_state = "render" - item_state = "knife" - lefthand_file = 'icons/mob/inhands/equipment/kitchen_lefthand.dmi' - righthand_file = 'icons/mob/inhands/equipment/kitchen_righthand.dmi' - force = 15 - throwforce = 10 - w_class = WEIGHT_CLASS_NORMAL - hitsound = 'sound/weapons/bladeslice.ogg' - var/charges = 1 - var/spawn_type = /obj/singularity/wizard - var/spawn_amt = 1 - var/activate_descriptor = "reality" - var/rend_desc = "You should run now." - var/spawn_fast = 0 //if 1, ignores checking for mobs on loc before spawning - -/obj/item/veilrender/attack_self(mob/user) - if(charges > 0) - new /obj/effect/rend(get_turf(user), spawn_type, spawn_amt, rend_desc, spawn_fast) - charges-- - user.visible_message("[src] hums with power as [user] deals a blow to [activate_descriptor] itself!") - else - to_chat(user, "The unearthly energies that powered the blade are now dormant.") - -/obj/effect/rend - name = "tear in the fabric of reality" - desc = "You should run now." - icon = 'icons/effects/effects.dmi' - icon_state = "rift" - density = TRUE - anchored = TRUE - var/spawn_path = /mob/living/simple_animal/cow //defaulty cows to prevent unintentional narsies - var/spawn_amt_left = 20 - var/spawn_fast = 0 - -/obj/effect/rend/New(loc, var/spawn_type, var/spawn_amt, var/desc, var/spawn_fast) - src.spawn_path = spawn_type - src.spawn_amt_left = spawn_amt - src.desc = desc - src.spawn_fast = spawn_fast - START_PROCESSING(SSobj, src) - return - -/obj/effect/rend/process() - if(!spawn_fast) - if(locate(/mob) in loc) - return - new spawn_path(loc) - spawn_amt_left-- - if(spawn_amt_left <= 0) - qdel(src) - -/obj/effect/rend/attackby(obj/item/I, mob/user, params) - if(istype(I, /obj/item/nullrod)) - user.visible_message("[user] seals \the [src] with \the [I].") - qdel(src) - return - else - return ..() - -/obj/effect/rend/singularity_pull() - return - -/obj/effect/rend/singularity_pull() - return - -/obj/item/veilrender/vealrender - name = "veal render" - desc = "A wicked curved blade of alien origin, recovered from the ruins of a vast farm." - spawn_type = /mob/living/simple_animal/cow - spawn_amt = 20 - activate_descriptor = "hunger" - rend_desc = "Reverberates with the sound of ten thousand moos." - -/obj/item/veilrender/honkrender - name = "honk render" - desc = "A wicked curved blade of alien origin, recovered from the ruins of a vast circus." - spawn_type = /mob/living/simple_animal/hostile/retaliate/clown - spawn_amt = 10 - activate_descriptor = "depression" - rend_desc = "Gently wafting with the sounds of endless laughter." - icon_state = "clownrender" - -////TEAR IN REALITY - -/obj/singularity/wizard - name = "tear in the fabric of reality" - desc = "This isn't right." - icon = 'icons/effects/224x224.dmi' - icon_state = "reality" - pixel_x = -96 - pixel_y = -96 - grav_pull = 6 - consume_range = 3 - current_size = STAGE_FOUR - allowed_size = STAGE_FOUR - -/obj/singularity/wizard/process() - move() - eat() - return -/////////////////////////////////////////Scrying/////////////////// - -/obj/item/scrying - name = "scrying orb" - desc = "An incandescent orb of otherworldly energy, staring into it gives you vision beyond mortal means." - icon = 'icons/obj/projectiles.dmi' - icon_state ="bluespace" - throw_speed = 3 - throw_range = 7 - throwforce = 15 - damtype = BURN - force = 15 - hitsound = 'sound/items/welder2.ogg' - - var/xray_granted = FALSE - -/obj/item/scrying/equipped(mob/user) - if(!xray_granted && ishuman(user)) - var/mob/living/carbon/human/H = user - if(!(H.dna.check_mutation(XRAY))) - H.dna.add_mutation(XRAY) - xray_granted = TRUE - . = ..() - -/obj/item/scrying/attack_self(mob/user) - to_chat(user, "You can see...everything!") - visible_message("[user] stares into [src], their eyes glazing over.") - user.ghostize(1) - -/////////////////////////////////////////Necromantic Stone/////////////////// - -/obj/item/device/necromantic_stone - name = "necromantic stone" - desc = "A shard capable of resurrecting humans as skeleton thralls." - icon = 'icons/obj/wizard.dmi' - icon_state = "necrostone" - item_state = "electronic" - lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi' - righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' - w_class = WEIGHT_CLASS_TINY - var/list/spooky_scaries = list() - var/unlimited = 0 - -/obj/item/device/necromantic_stone/unlimited - unlimited = 1 - -/obj/item/device/necromantic_stone/attack(mob/living/carbon/human/M, mob/living/carbon/human/user) - if(!istype(M)) - return ..() - - if(!istype(user) || !user.canUseTopic(M,1)) - return - - if(M.stat != DEAD) - to_chat(user, "This artifact can only affect the dead!") - return - - if(!M.mind || !M.client) - to_chat(user, "There is no soul connected to this body...") - return - - check_spooky()//clean out/refresh the list - if(spooky_scaries.len >= 3 && !unlimited) - to_chat(user, "This artifact can only affect three undead at a time!") - return - - M.set_species(/datum/species/skeleton, icon_update=0) - M.revive(full_heal = 1, admin_revive = 1) - spooky_scaries |= M - to_chat(M, "You have been revived by [user.real_name]!") - to_chat(M, "[user.p_they(TRUE)] [user.p_are()] your master now, assist them even if it costs you your new life!") - - equip_roman_skeleton(M) - - desc = "A shard capable of resurrecting humans as skeleton thralls[unlimited ? "." : ", [spooky_scaries.len]/3 active thralls."]" - -/obj/item/device/necromantic_stone/proc/check_spooky() - if(unlimited) //no point, the list isn't used. - return - - for(var/X in spooky_scaries) - if(!ishuman(X)) - spooky_scaries.Remove(X) - continue - var/mob/living/carbon/human/H = X - if(H.stat == DEAD) - H.dust(TRUE) - spooky_scaries.Remove(X) - continue - listclearnulls(spooky_scaries) - -//Funny gimmick, skeletons always seem to wear roman/ancient armour -/obj/item/device/necromantic_stone/proc/equip_roman_skeleton(mob/living/carbon/human/H) - for(var/obj/item/I in H) - H.dropItemToGround(I) - - var/hat = pick(/obj/item/clothing/head/helmet/roman, /obj/item/clothing/head/helmet/roman/legionaire) - H.equip_to_slot_or_del(new hat(H), slot_head) - H.equip_to_slot_or_del(new /obj/item/clothing/under/roman(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/roman(H), slot_shoes) - H.put_in_hands(new /obj/item/shield/riot/roman(H), TRUE) - H.put_in_hands(new /obj/item/claymore(H), TRUE) - H.equip_to_slot_or_del(new /obj/item/twohanded/spear(H), slot_back) - - -/obj/item/voodoo - name = "wicker doll" - desc = "Something creepy about it." - icon = 'icons/obj/wizard.dmi' - icon_state = "voodoo" - item_state = "electronic" - lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi' - righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' - var/mob/living/carbon/human/target = null - var/list/mob/living/carbon/human/possible = list() - var/obj/item/voodoo_link = null - var/cooldown_time = 30 //3s - var/cooldown = 0 - max_integrity = 10 - resistance_flags = FLAMMABLE - -/obj/item/voodoo/attackby(obj/item/I, mob/user, params) - if(target && cooldown < world.time) - if(I.is_hot()) - to_chat(target, "You suddenly feel very hot") - target.bodytemperature += 50 - GiveHint(target) - else if(is_pointed(I)) - to_chat(target, "You feel a stabbing pain in [parse_zone(user.zone_selected)]!") - target.Knockdown(40) - GiveHint(target) - else if(istype(I, /obj/item/bikehorn)) - to_chat(target, "HONK") - SEND_SOUND(target, 'sound/items/airhorn.ogg') - target.adjustEarDamage(0,3) - GiveHint(target) - cooldown = world.time +cooldown_time - return - - if(!voodoo_link) - if(I.loc == user && istype(I) && I.w_class <= WEIGHT_CLASS_SMALL) - if (user.transferItemToLoc(I,src)) - voodoo_link = I - to_chat(user, "You attach [I] to the doll.") - update_targets() - -/obj/item/voodoo/check_eye(mob/user) - if(loc != user) - user.reset_perspective(null) - user.unset_machine() - -/obj/item/voodoo/attack_self(mob/user) - if(!target && possible.len) - target = input(user, "Select your victim!", "Voodoo") as null|anything in possible - return - - if(user.zone_selected == "chest") - if(voodoo_link) - target = null - voodoo_link.forceMove(drop_location()) - to_chat(user, "You remove the [voodoo_link] from the doll.") - voodoo_link = null - update_targets() - return - - if(target && cooldown < world.time) - switch(user.zone_selected) - if("mouth") - var/wgw = sanitize(input(user, "What would you like the victim to say", "Voodoo", null) as text) - target.say(wgw) - log_game("[user][user.key] made [target][target.key] say [wgw] with a voodoo doll.") - if("eyes") - user.set_machine(src) - user.reset_perspective(target) - spawn(100) - user.reset_perspective(null) - user.unset_machine() - if("r_leg","l_leg") - to_chat(user, "You move the doll's legs around.") - var/turf/T = get_step(target,pick(GLOB.cardinals)) - target.Move(T) - if("r_arm","l_arm") - target.click_random_mob() - GiveHint(target) - if("head") - to_chat(user, "You smack the doll's head with your hand.") - target.Dizzy(10) - to_chat(target, "You suddenly feel as if your head was hit with a hammer!") - GiveHint(target,user) - cooldown = world.time + cooldown_time - -/obj/item/voodoo/proc/update_targets() - possible = list() - if(!voodoo_link) - return - var/list/prints = voodoo_link.return_fingerprints() - if(!length(prints)) - return FALSE - for(var/mob/living/carbon/human/H in GLOB.alive_mob_list) - if(prints[md5(H.dna.uni_identity)]) - possible |= H - -/obj/item/voodoo/proc/GiveHint(mob/victim,force=0) - if(prob(50) || force) - var/way = dir2text(get_dir(victim,get_turf(src))) - to_chat(victim, "You feel a dark presence from [way]") - if(prob(20) || force) - var/area/A = get_area(src) - to_chat(victim, "You feel a dark presence from [A.name]") - -/obj/item/voodoo/suicide_act(mob/living/carbon/user) - user.visible_message("[user] links the voodoo doll to themself and sits on it, infinitely crushing themself! It looks like [user.p_theyre()] trying to commit suicide!") - user.gib() - return(BRUTELOSS) - -/obj/item/voodoo/fire_act(exposed_temperature, exposed_volume) - if(target) - target.adjust_fire_stacks(20) - target.IgniteMob() - GiveHint(target,1) - return ..() - -//Provides a decent heal, need to pump every 6 seconds -/obj/item/organ/heart/cursed/wizard - pump_delay = 60 - heal_brute = 25 - heal_burn = 25 - heal_oxy = 25 - -//Warp Whistle: Provides uncontrolled long distance teleportation. - -/obj/item/warpwhistle - name = "warp whistle" - desc = "One toot on this whistle will send you to a far away land!" - icon = 'icons/obj/wizard.dmi' - icon_state = "whistle" - var/on_cooldown = 0 //0: usable, 1: in use, 2: on cooldown - var/mob/living/carbon/last_user - -/obj/item/warpwhistle/proc/interrupted(mob/living/carbon/user) - if(!user || QDELETED(src) || user.notransform) - on_cooldown = FALSE - return TRUE - return FALSE - -/obj/item/warpwhistle/attack_self(mob/living/carbon/user) - if(!istype(user) || on_cooldown) - return - on_cooldown = TRUE - last_user = user - var/turf/T = get_turf(user) - playsound(T,'sound/magic/warpwhistle.ogg', 200, 1) - user.canmove = 0 - new /obj/effect/temp_visual/tornado(T) - sleep(20) - if(interrupted(user)) - return - user.invisibility = INVISIBILITY_MAXIMUM - user.status_flags |= GODMODE - sleep(20) - if(interrupted(user)) - return - var/breakout = 0 - while(breakout < 50) - var/turf/potential_T = find_safe_turf() - if(T.z != potential_T.z || abs(get_dist_euclidian(potential_T,T)) > 50 - breakout) - user.forceMove(potential_T) - user.canmove = 0 - T = potential_T - break - breakout += 1 - new /obj/effect/temp_visual/tornado(T) - sleep(20) - if(interrupted(user)) - return - user.invisibility = initial(user.invisibility) - user.status_flags &= ~GODMODE - user.canmove = 1 - on_cooldown = 2 - sleep(40) - on_cooldown = 0 - -/obj/item/warpwhistle/Destroy() - if(on_cooldown == 1 && last_user) //Flute got dunked somewhere in the teleport - last_user.invisibility = initial(last_user.invisibility) - last_user.status_flags &= ~GODMODE - last_user.canmove = 1 - return ..() - -/obj/effect/temp_visual/tornado - icon = 'icons/obj/wizard.dmi' - icon_state = "tornado" - name = "tornado" - desc = "This thing sucks!" - layer = FLY_LAYER - randomdir = 0 - duration = 40 - pixel_x = 500 - -/obj/effect/temp_visual/tornado/Initialize() - . = ..() - animate(src, pixel_x = -500, time = 40) + +//Apprenticeship contract - moved to antag_spawner.dm + +///////////////////////////Veil Render////////////////////// + +/obj/item/veilrender + name = "veil render" + desc = "A wicked curved blade of alien origin, recovered from the ruins of a vast city." + icon = 'icons/obj/wizard.dmi' + icon_state = "render" + item_state = "knife" + lefthand_file = 'icons/mob/inhands/equipment/kitchen_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/kitchen_righthand.dmi' + force = 15 + throwforce = 10 + w_class = WEIGHT_CLASS_NORMAL + hitsound = 'sound/weapons/bladeslice.ogg' + var/charges = 1 + var/spawn_type = /obj/singularity/wizard + var/spawn_amt = 1 + var/activate_descriptor = "reality" + var/rend_desc = "You should run now." + var/spawn_fast = 0 //if 1, ignores checking for mobs on loc before spawning + +/obj/item/veilrender/attack_self(mob/user) + if(charges > 0) + new /obj/effect/rend(get_turf(user), spawn_type, spawn_amt, rend_desc, spawn_fast) + charges-- + user.visible_message("[src] hums with power as [user] deals a blow to [activate_descriptor] itself!") + else + to_chat(user, "The unearthly energies that powered the blade are now dormant.") + +/obj/effect/rend + name = "tear in the fabric of reality" + desc = "You should run now." + icon = 'icons/effects/effects.dmi' + icon_state = "rift" + density = TRUE + anchored = TRUE + var/spawn_path = /mob/living/simple_animal/cow //defaulty cows to prevent unintentional narsies + var/spawn_amt_left = 20 + var/spawn_fast = 0 + +/obj/effect/rend/New(loc, var/spawn_type, var/spawn_amt, var/desc, var/spawn_fast) + src.spawn_path = spawn_type + src.spawn_amt_left = spawn_amt + src.desc = desc + src.spawn_fast = spawn_fast + START_PROCESSING(SSobj, src) + return + +/obj/effect/rend/process() + if(!spawn_fast) + if(locate(/mob) in loc) + return + new spawn_path(loc) + spawn_amt_left-- + if(spawn_amt_left <= 0) + qdel(src) + +/obj/effect/rend/attackby(obj/item/I, mob/user, params) + if(istype(I, /obj/item/nullrod)) + user.visible_message("[user] seals \the [src] with \the [I].") + qdel(src) + return + else + return ..() + +/obj/effect/rend/singularity_pull() + return + +/obj/effect/rend/singularity_pull() + return + +/obj/item/veilrender/vealrender + name = "veal render" + desc = "A wicked curved blade of alien origin, recovered from the ruins of a vast farm." + spawn_type = /mob/living/simple_animal/cow + spawn_amt = 20 + activate_descriptor = "hunger" + rend_desc = "Reverberates with the sound of ten thousand moos." + +/obj/item/veilrender/honkrender + name = "honk render" + desc = "A wicked curved blade of alien origin, recovered from the ruins of a vast circus." + spawn_type = /mob/living/simple_animal/hostile/retaliate/clown + spawn_amt = 10 + activate_descriptor = "depression" + rend_desc = "Gently wafting with the sounds of endless laughter." + icon_state = "clownrender" + +////TEAR IN REALITY + +/obj/singularity/wizard + name = "tear in the fabric of reality" + desc = "This isn't right." + icon = 'icons/effects/224x224.dmi' + icon_state = "reality" + pixel_x = -96 + pixel_y = -96 + grav_pull = 6 + consume_range = 3 + current_size = STAGE_FOUR + allowed_size = STAGE_FOUR + +/obj/singularity/wizard/process() + move() + eat() + return +/////////////////////////////////////////Scrying/////////////////// + +/obj/item/scrying + name = "scrying orb" + desc = "An incandescent orb of otherworldly energy, staring into it gives you vision beyond mortal means." + icon = 'icons/obj/projectiles.dmi' + icon_state ="bluespace" + throw_speed = 3 + throw_range = 7 + throwforce = 15 + damtype = BURN + force = 15 + hitsound = 'sound/items/welder2.ogg' + + var/xray_granted = FALSE + +/obj/item/scrying/equipped(mob/user) + if(!xray_granted && ishuman(user)) + var/mob/living/carbon/human/H = user + if(!(H.dna.check_mutation(XRAY))) + H.dna.add_mutation(XRAY) + xray_granted = TRUE + . = ..() + +/obj/item/scrying/attack_self(mob/user) + to_chat(user, "You can see...everything!") + visible_message("[user] stares into [src], their eyes glazing over.") + user.ghostize(1) + +/////////////////////////////////////////Necromantic Stone/////////////////// + +/obj/item/device/necromantic_stone + name = "necromantic stone" + desc = "A shard capable of resurrecting humans as skeleton thralls." + icon = 'icons/obj/wizard.dmi' + icon_state = "necrostone" + item_state = "electronic" + lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi' + righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' + w_class = WEIGHT_CLASS_TINY + var/list/spooky_scaries = list() + var/unlimited = 0 + +/obj/item/device/necromantic_stone/unlimited + unlimited = 1 + +/obj/item/device/necromantic_stone/attack(mob/living/carbon/human/M, mob/living/carbon/human/user) + if(!istype(M)) + return ..() + + if(!istype(user) || !user.canUseTopic(M,1)) + return + + if(M.stat != DEAD) + to_chat(user, "This artifact can only affect the dead!") + return + + if(!M.mind || !M.client) + to_chat(user, "There is no soul connected to this body...") + return + + check_spooky()//clean out/refresh the list + if(spooky_scaries.len >= 3 && !unlimited) + to_chat(user, "This artifact can only affect three undead at a time!") + return + + M.set_species(/datum/species/skeleton, icon_update=0) + M.revive(full_heal = 1, admin_revive = 1) + spooky_scaries |= M + to_chat(M, "You have been revived by [user.real_name]!") + to_chat(M, "[user.p_they(TRUE)] [user.p_are()] your master now, assist them even if it costs you your new life!") + + equip_roman_skeleton(M) + + desc = "A shard capable of resurrecting humans as skeleton thralls[unlimited ? "." : ", [spooky_scaries.len]/3 active thralls."]" + +/obj/item/device/necromantic_stone/proc/check_spooky() + if(unlimited) //no point, the list isn't used. + return + + for(var/X in spooky_scaries) + if(!ishuman(X)) + spooky_scaries.Remove(X) + continue + var/mob/living/carbon/human/H = X + if(H.stat == DEAD) + H.dust(TRUE) + spooky_scaries.Remove(X) + continue + listclearnulls(spooky_scaries) + +//Funny gimmick, skeletons always seem to wear roman/ancient armour +/obj/item/device/necromantic_stone/proc/equip_roman_skeleton(mob/living/carbon/human/H) + for(var/obj/item/I in H) + H.dropItemToGround(I) + + var/hat = pick(/obj/item/clothing/head/helmet/roman, /obj/item/clothing/head/helmet/roman/legionaire) + H.equip_to_slot_or_del(new hat(H), slot_head) + H.equip_to_slot_or_del(new /obj/item/clothing/under/roman(H), slot_w_uniform) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/roman(H), slot_shoes) + H.put_in_hands(new /obj/item/shield/riot/roman(H), TRUE) + H.put_in_hands(new /obj/item/claymore(H), TRUE) + H.equip_to_slot_or_del(new /obj/item/twohanded/spear(H), slot_back) + + +/obj/item/voodoo + name = "wicker doll" + desc = "Something creepy about it." + icon = 'icons/obj/wizard.dmi' + icon_state = "voodoo" + item_state = "electronic" + lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi' + righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' + var/mob/living/carbon/human/target = null + var/list/mob/living/carbon/human/possible = list() + var/obj/item/voodoo_link = null + var/cooldown_time = 30 //3s + var/cooldown = 0 + max_integrity = 10 + resistance_flags = FLAMMABLE + +/obj/item/voodoo/attackby(obj/item/I, mob/user, params) + if(target && cooldown < world.time) + if(I.is_hot()) + to_chat(target, "You suddenly feel very hot") + target.bodytemperature += 50 + GiveHint(target) + else if(is_pointed(I)) + to_chat(target, "You feel a stabbing pain in [parse_zone(user.zone_selected)]!") + target.Knockdown(40) + GiveHint(target) + else if(istype(I, /obj/item/bikehorn)) + to_chat(target, "HONK") + SEND_SOUND(target, 'sound/items/airhorn.ogg') + target.adjustEarDamage(0,3) + GiveHint(target) + cooldown = world.time +cooldown_time + return + + if(!voodoo_link) + if(I.loc == user && istype(I) && I.w_class <= WEIGHT_CLASS_SMALL) + if (user.transferItemToLoc(I,src)) + voodoo_link = I + to_chat(user, "You attach [I] to the doll.") + update_targets() + +/obj/item/voodoo/check_eye(mob/user) + if(loc != user) + user.reset_perspective(null) + user.unset_machine() + +/obj/item/voodoo/attack_self(mob/user) + if(!target && possible.len) + target = input(user, "Select your victim!", "Voodoo") as null|anything in possible + return + + if(user.zone_selected == "chest") + if(voodoo_link) + target = null + voodoo_link.forceMove(drop_location()) + to_chat(user, "You remove the [voodoo_link] from the doll.") + voodoo_link = null + update_targets() + return + + if(target && cooldown < world.time) + switch(user.zone_selected) + if("mouth") + var/wgw = sanitize(input(user, "What would you like the victim to say", "Voodoo", null) as text) + target.say(wgw) + log_game("[user][user.key] made [target][target.key] say [wgw] with a voodoo doll.") + if("eyes") + user.set_machine(src) + user.reset_perspective(target) + spawn(100) + user.reset_perspective(null) + user.unset_machine() + if("r_leg","l_leg") + to_chat(user, "You move the doll's legs around.") + var/turf/T = get_step(target,pick(GLOB.cardinals)) + target.Move(T) + if("r_arm","l_arm") + target.click_random_mob() + GiveHint(target) + if("head") + to_chat(user, "You smack the doll's head with your hand.") + target.Dizzy(10) + to_chat(target, "You suddenly feel as if your head was hit with a hammer!") + GiveHint(target,user) + cooldown = world.time + cooldown_time + +/obj/item/voodoo/proc/update_targets() + possible = list() + if(!voodoo_link) + return + var/list/prints = voodoo_link.return_fingerprints() + if(!length(prints)) + return FALSE + for(var/mob/living/carbon/human/H in GLOB.alive_mob_list) + if(prints[md5(H.dna.uni_identity)]) + possible |= H + +/obj/item/voodoo/proc/GiveHint(mob/victim,force=0) + if(prob(50) || force) + var/way = dir2text(get_dir(victim,get_turf(src))) + to_chat(victim, "You feel a dark presence from [way]") + if(prob(20) || force) + var/area/A = get_area(src) + to_chat(victim, "You feel a dark presence from [A.name]") + +/obj/item/voodoo/suicide_act(mob/living/carbon/user) + user.visible_message("[user] links the voodoo doll to themself and sits on it, infinitely crushing themself! It looks like [user.p_theyre()] trying to commit suicide!") + user.gib() + return(BRUTELOSS) + +/obj/item/voodoo/fire_act(exposed_temperature, exposed_volume) + if(target) + target.adjust_fire_stacks(20) + target.IgniteMob() + GiveHint(target,1) + return ..() + +//Provides a decent heal, need to pump every 6 seconds +/obj/item/organ/heart/cursed/wizard + pump_delay = 60 + heal_brute = 25 + heal_burn = 25 + heal_oxy = 25 + +//Warp Whistle: Provides uncontrolled long distance teleportation. + +/obj/item/warpwhistle + name = "warp whistle" + desc = "One toot on this whistle will send you to a far away land!" + icon = 'icons/obj/wizard.dmi' + icon_state = "whistle" + var/on_cooldown = 0 //0: usable, 1: in use, 2: on cooldown + var/mob/living/carbon/last_user + +/obj/item/warpwhistle/proc/interrupted(mob/living/carbon/user) + if(!user || QDELETED(src) || user.notransform) + on_cooldown = FALSE + return TRUE + return FALSE + +/obj/item/warpwhistle/attack_self(mob/living/carbon/user) + if(!istype(user) || on_cooldown) + return + on_cooldown = TRUE + last_user = user + var/turf/T = get_turf(user) + playsound(T,'sound/magic/warpwhistle.ogg', 200, 1) + user.canmove = 0 + new /obj/effect/temp_visual/tornado(T) + sleep(20) + if(interrupted(user)) + return + user.invisibility = INVISIBILITY_MAXIMUM + user.status_flags |= GODMODE + sleep(20) + if(interrupted(user)) + return + var/breakout = 0 + while(breakout < 50) + var/turf/potential_T = find_safe_turf() + if(T.z != potential_T.z || abs(get_dist_euclidian(potential_T,T)) > 50 - breakout) + user.forceMove(potential_T) + user.canmove = 0 + T = potential_T + break + breakout += 1 + new /obj/effect/temp_visual/tornado(T) + sleep(20) + if(interrupted(user)) + return + user.invisibility = initial(user.invisibility) + user.status_flags &= ~GODMODE + user.canmove = 1 + on_cooldown = 2 + sleep(40) + on_cooldown = 0 + +/obj/item/warpwhistle/Destroy() + if(on_cooldown == 1 && last_user) //Flute got dunked somewhere in the teleport + last_user.invisibility = initial(last_user.invisibility) + last_user.status_flags &= ~GODMODE + last_user.canmove = 1 + return ..() + +/obj/effect/temp_visual/tornado + icon = 'icons/obj/wizard.dmi' + icon_state = "tornado" + name = "tornado" + desc = "This thing sucks!" + layer = FLY_LAYER + randomdir = 0 + duration = 40 + pixel_x = 500 + +/obj/effect/temp_visual/tornado/Initialize() + . = ..() + animate(src, pixel_x = -500, time = 40) diff --git a/code/game/gamemodes/wizard/soulstone.dm b/code/modules/antagonists/wizard/equipment/soulstone.dm similarity index 100% rename from code/game/gamemodes/wizard/soulstone.dm rename to code/modules/antagonists/wizard/equipment/soulstone.dm diff --git a/code/game/gamemodes/wizard/spellbook.dm b/code/modules/antagonists/wizard/equipment/spellbook.dm similarity index 97% rename from code/game/gamemodes/wizard/spellbook.dm rename to code/modules/antagonists/wizard/equipment/spellbook.dm index 0ba2aac8b4..c26cb5e65c 100644 --- a/code/game/gamemodes/wizard/spellbook.dm +++ b/code/modules/antagonists/wizard/equipment/spellbook.dm @@ -1,908 +1,908 @@ -/datum/spellbook_entry - var/name = "Entry Name" - - var/spell_type = null - var/desc = "" - var/category = "Offensive" - var/cost = 2 - var/refundable = 1 - var/surplus = -1 // -1 for infinite, not used by anything atm - var/obj/effect/proc_holder/spell/S = null //Since spellbooks can be used by only one person anyway we can track the actual spell - var/buy_word = "Learn" - var/limit //used to prevent a spellbook_entry from being bought more than X times with one wizard spellbook - var/list/no_coexistance_typecache //Used so you can't have specific spells together - -/datum/spellbook_entry/New() - ..() - no_coexistance_typecache = typecacheof(no_coexistance_typecache) - -/datum/spellbook_entry/proc/IsAvailible() // For config prefs / gamemode restrictions - these are round applied - return 1 - -/datum/spellbook_entry/proc/CanBuy(mob/living/carbon/human/user,obj/item/spellbook/book) // Specific circumstances - if(book.uses= aspell.level_max) - to_chat(user, "This spell cannot be improved further.") - return 0 - else - aspell.name = initial(aspell.name) - aspell.spell_level++ - aspell.charge_max = round(initial(aspell.charge_max) - aspell.spell_level * (initial(aspell.charge_max) - aspell.cooldown_min)/ aspell.level_max) - if(aspell.charge_max < aspell.charge_counter) - aspell.charge_counter = aspell.charge_max - switch(aspell.spell_level) - if(1) - to_chat(user, "You have improved [aspell.name] into Efficient [aspell.name].") - aspell.name = "Efficient [aspell.name]" - if(2) - to_chat(user, "You have further improved [aspell.name] into Quickened [aspell.name].") - aspell.name = "Quickened [aspell.name]" - if(3) - to_chat(user, "You have further improved [aspell.name] into Free [aspell.name].") - aspell.name = "Free [aspell.name]" - if(4) - to_chat(user, "You have further improved [aspell.name] into Instant [aspell.name].") - aspell.name = "Instant [aspell.name]" - if(aspell.spell_level >= aspell.level_max) - to_chat(user, "This spell cannot be strengthened any further.") - SSblackbox.record_feedback("nested tally", "wizard_spell_improved", 1, list("[name]", "[aspell.spell_level]")) - return 1 - //No same spell found - just learn it - SSblackbox.record_feedback("tally", "wizard_spell_learned", 1, name) - user.mind.AddSpell(S) - to_chat(user, "You have learned [S.name].") - return 1 - -/datum/spellbook_entry/proc/CanRefund(mob/living/carbon/human/user,obj/item/spellbook/book) - if(!refundable) - return 0 - if(!S) - S = new spell_type() - for(var/obj/effect/proc_holder/spell/aspell in user.mind.spell_list) - if(initial(S.name) == initial(aspell.name)) - return 1 - return 0 - -/datum/spellbook_entry/proc/Refund(mob/living/carbon/human/user,obj/item/spellbook/book) //return point value or -1 for failure - var/area/wizard_station/A = locate() in GLOB.sortedAreas - if(!(user in A.contents)) - to_chat(user, "You can only refund spells at the wizard lair") - return -1 - if(!S) - S = new spell_type() - var/spell_levels = 0 - for(var/obj/effect/proc_holder/spell/aspell in user.mind.spell_list) - if(initial(S.name) == initial(aspell.name)) - spell_levels = aspell.spell_level - user.mind.spell_list.Remove(aspell) - qdel(S) - return cost * (spell_levels+1) - return -1 -/datum/spellbook_entry/proc/GetInfo() - if(!S) - S = new spell_type() - var/dat ="" - dat += "[initial(S.name)]" - if(S.charge_type == "recharge") - dat += " Cooldown:[S.charge_max/10]" - dat += " Cost:[cost]
" - dat += "[S.desc][desc]
" - dat += "[S.clothes_req?"Needs wizard garb":"Can be cast without wizard garb"]
" - return dat - -/datum/spellbook_entry/fireball - name = "Fireball" - spell_type = /obj/effect/proc_holder/spell/aimed/fireball - -/datum/spellbook_entry/rod_form - name = "Rod Form" - spell_type = /obj/effect/proc_holder/spell/targeted/rod_form - -/datum/spellbook_entry/magicm - name = "Magic Missile" - spell_type = /obj/effect/proc_holder/spell/targeted/projectile/magic_missile - category = "Defensive" - -/datum/spellbook_entry/disintegrate - name = "Disintegrate" - spell_type = /obj/effect/proc_holder/spell/targeted/touch/disintegrate - -/datum/spellbook_entry/disabletech - name = "Disable Tech" - spell_type = /obj/effect/proc_holder/spell/targeted/emplosion/disable_tech - category = "Defensive" - cost = 1 - -/datum/spellbook_entry/repulse - name = "Repulse" - spell_type = /obj/effect/proc_holder/spell/aoe_turf/repulse - category = "Defensive" - -/datum/spellbook_entry/lightningPacket - name = "Lightning bolt! Lightning bolt!" - spell_type = /obj/effect/proc_holder/spell/targeted/conjure_item/spellpacket - category = "Defensive" - -/datum/spellbook_entry/timestop - name = "Time Stop" - spell_type = /obj/effect/proc_holder/spell/aoe_turf/conjure/timestop - category = "Defensive" - -/datum/spellbook_entry/smoke - name = "Smoke" - spell_type = /obj/effect/proc_holder/spell/targeted/smoke - category = "Defensive" - cost = 1 - -/datum/spellbook_entry/blind - name = "Blind" - spell_type = /obj/effect/proc_holder/spell/targeted/trigger/blind - cost = 1 - -/datum/spellbook_entry/mindswap - name = "Mindswap" - spell_type = /obj/effect/proc_holder/spell/targeted/mind_transfer - category = "Mobility" - -/datum/spellbook_entry/forcewall - name = "Force Wall" - spell_type = /obj/effect/proc_holder/spell/targeted/forcewall - category = "Defensive" - cost = 1 - -/datum/spellbook_entry/blink - name = "Blink" - spell_type = /obj/effect/proc_holder/spell/targeted/turf_teleport/blink - category = "Mobility" - -/datum/spellbook_entry/teleport - name = "Teleport" - spell_type = /obj/effect/proc_holder/spell/targeted/area_teleport/teleport - category = "Mobility" - -/datum/spellbook_entry/mutate - name = "Mutate" - spell_type = /obj/effect/proc_holder/spell/targeted/genetic/mutate - -/datum/spellbook_entry/jaunt - name = "Ethereal Jaunt" - spell_type = /obj/effect/proc_holder/spell/targeted/ethereal_jaunt - category = "Mobility" - -/datum/spellbook_entry/knock - name = "Knock" - spell_type = /obj/effect/proc_holder/spell/aoe_turf/knock - category = "Mobility" - cost = 1 - -/datum/spellbook_entry/fleshtostone - name = "Flesh to Stone" - spell_type = /obj/effect/proc_holder/spell/targeted/touch/flesh_to_stone - -/datum/spellbook_entry/summonitem - name = "Summon Item" - spell_type = /obj/effect/proc_holder/spell/targeted/summonitem - category = "Assistance" - cost = 1 - -/datum/spellbook_entry/lichdom - name = "Bind Soul" - spell_type = /obj/effect/proc_holder/spell/targeted/lichdom - category = "Defensive" - -/datum/spellbook_entry/teslablast - name = "Tesla Blast" - spell_type = /obj/effect/proc_holder/spell/targeted/tesla - -/datum/spellbook_entry/lightningbolt - name = "Lightning Bolt" - spell_type = /obj/effect/proc_holder/spell/aimed/lightningbolt - cost = 3 - -/datum/spellbook_entry/lightningbolt/Buy(mob/living/carbon/human/user,obj/item/spellbook/book) //return 1 on success - . = ..() - user.flags_2 |= TESLA_IGNORE_2 - -/datum/spellbook_entry/infinite_guns - name = "Lesser Summon Guns" - spell_type = /obj/effect/proc_holder/spell/targeted/infinite_guns/gun - cost = 3 - no_coexistance_typecache = /obj/effect/proc_holder/spell/targeted/infinite_guns/arcane_barrage - -/datum/spellbook_entry/arcane_barrage - name = "Arcane Barrage" - spell_type = /obj/effect/proc_holder/spell/targeted/infinite_guns/arcane_barrage - cost = 3 - no_coexistance_typecache = /obj/effect/proc_holder/spell/targeted/infinite_guns/gun - -/datum/spellbook_entry/barnyard - name = "Barnyard Curse" - spell_type = /obj/effect/proc_holder/spell/targeted/barnyardcurse - -/datum/spellbook_entry/charge - name = "Charge" - spell_type = /obj/effect/proc_holder/spell/targeted/charge - category = "Assistance" - cost = 1 - -/datum/spellbook_entry/shapeshift - name = "Wild Shapeshift" - spell_type = /obj/effect/proc_holder/spell/targeted/shapeshift - category = "Assistance" - cost = 1 - -/datum/spellbook_entry/spacetime_dist - name = "Spacetime Distortion" - spell_type = /obj/effect/proc_holder/spell/spacetime_dist - category = "Defensive" - cost = 1 - -/datum/spellbook_entry/the_traps - name = "The Traps!" - spell_type = /obj/effect/proc_holder/spell/aoe_turf/conjure/the_traps - category = "Defensive" - cost = 1 - - -/datum/spellbook_entry/item - name = "Buy Item" - refundable = 0 - buy_word = "Summon" - var/item_path= null - - -/datum/spellbook_entry/item/Buy(mob/living/carbon/human/user,obj/item/spellbook/book) - new item_path(get_turf(user)) - SSblackbox.record_feedback("tally", "wizard_spell_learned", 1, name) - return 1 - -/datum/spellbook_entry/item/GetInfo() - var/dat ="" - dat += "[name]" - dat += " Cost:[cost]
" - dat += "[desc]
" - if(surplus>=0) - dat += "[surplus] left.
" - return dat - -/datum/spellbook_entry/item/staffchange - name = "Staff of Change" - desc = "An artefact that spits bolts of coruscating energy which cause the target's very form to reshape itself." - item_path = /obj/item/gun/magic/staff/change - -/datum/spellbook_entry/item/staffanimation - name = "Staff of Animation" - desc = "An arcane staff capable of shooting bolts of eldritch energy which cause inanimate objects to come to life. This magic doesn't affect machines." - item_path = /obj/item/gun/magic/staff/animate - category = "Assistance" - -/datum/spellbook_entry/item/staffchaos - name = "Staff of Chaos" - desc = "A caprious tool that can fire all sorts of magic without any rhyme or reason. Using it on people you care about is not recommended." - item_path = /obj/item/gun/magic/staff/chaos - -/datum/spellbook_entry/item/spellblade - name = "Spellblade" - desc = "A sword capable of firing blasts of energy which rip targets limb from limb." - item_path = /obj/item/gun/magic/staff/spellblade - -/datum/spellbook_entry/item/staffdoor - name = "Staff of Door Creation" - desc = "A particular staff that can mold solid metal into ornate doors. Useful for getting around in the absence of other transportation. Does not work on glass." - item_path = /obj/item/gun/magic/staff/door - cost = 1 - category = "Mobility" - -/datum/spellbook_entry/item/staffhealing - name = "Staff of Healing" - desc = "An altruistic staff that can heal the lame and raise the dead." - item_path = /obj/item/gun/magic/staff/healing - cost = 1 - category = "Defensive" - -/datum/spellbook_entry/item/scryingorb - name = "Scrying Orb" - desc = "An incandescent orb of crackling energy, using it will allow you to ghost while alive, allowing you to spy upon the station with ease. In addition, buying it will permanently grant you x-ray vision." - item_path = /obj/item/scrying - category = "Defensive" - -/datum/spellbook_entry/item/soulstones - name = "Six Soul Stone Shards and the spell Artificer" - desc = "Soul Stone Shards are ancient tools capable of capturing and harnessing the spirits of the dead and dying. The spell Artificer allows you to create arcane machines for the captured souls to pilot." - item_path = /obj/item/storage/belt/soulstone/full - category = "Assistance" - -/datum/spellbook_entry/item/soulstones/Buy(mob/living/carbon/human/user,obj/item/spellbook/book) - . =..() - if(.) - user.mind.AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/conjure/construct(null)) - return . - -/datum/spellbook_entry/item/necrostone - name = "A Necromantic Stone" - desc = "A Necromantic stone is able to resurrect three dead individuals as skeletal thralls for you to command." - item_path = /obj/item/device/necromantic_stone - category = "Assistance" - -/datum/spellbook_entry/item/wands - name = "Wand Assortment" - desc = "A collection of wands that allow for a wide variety of utility. Wands have a limited number of charges, so be conservative in use. Comes in a handy belt." - item_path = /obj/item/storage/belt/wands/full - category = "Defensive" - -/datum/spellbook_entry/item/armor - name = "Mastercrafted Armor Set" - desc = "An artefact suit of armor that allows you to cast spells while providing more protection against attacks and the void of space." - item_path = /obj/item/clothing/suit/space/hardsuit/wizard - category = "Defensive" - -/datum/spellbook_entry/item/armor/Buy(mob/living/carbon/human/user,obj/item/spellbook/book) - . = ..() - if(.) - new /obj/item/clothing/shoes/sandal/magic(get_turf(user)) //In case they've lost them. - new /obj/item/clothing/gloves/color/purple(get_turf(user))//To complete the outfit - -/datum/spellbook_entry/item/contract - name = "Contract of Apprenticeship" - desc = "A magical contract binding an apprentice wizard to your service, using it will summon them to your side." - item_path = /obj/item/antag_spawner/contract - category = "Assistance" - -/datum/spellbook_entry/item/guardian - name = "Guardian Deck" - desc = "A deck of guardian tarot cards, capable of binding a personal guardian to your body. There are multiple types of guardian available, but all of them will transfer some amount of damage to you. \ - It would be wise to avoid buying these with anything capable of causing you to swap bodies with others." - item_path = /obj/item/guardiancreator/choose/wizard - category = "Assistance" - -/datum/spellbook_entry/item/guardian/Buy(mob/living/carbon/human/user,obj/item/spellbook/book) - . = ..() - if(.) - new /obj/item/paper/guides/antag/guardian/wizard(get_turf(user)) - -/datum/spellbook_entry/item/bloodbottle - name = "Bottle of Blood" - desc = "A bottle of magically infused blood, the smell of which will attract extradimensional beings when broken. Be careful though, the kinds of creatures summoned by blood magic are indiscriminate in their killing, and you yourself may become a victim." - item_path = /obj/item/antag_spawner/slaughter_demon - limit = 3 - category = "Assistance" - -/datum/spellbook_entry/item/hugbottle - name = "Bottle of Tickles" - desc = "A bottle of magically infused fun, the smell of which will \ - attract adorable extradimensional beings when broken. These beings \ - are similar to slaughter demons, but they do not permamently kill \ - their victims, instead putting them in an extradimensional hugspace, \ - to be released on the demon's death. Chaotic, but not ultimately \ - damaging. The crew's reaction to the other hand could be very \ - destructive." - item_path = /obj/item/antag_spawner/slaughter_demon/laughter - cost = 1 //non-destructive; it's just a jape, sibling! - limit = 3 - category = "Assistance" - -/datum/spellbook_entry/item/mjolnir - name = "Mjolnir" - desc = "A mighty hammer on loan from Thor, God of Thunder. It crackles with barely contained power." - item_path = /obj/item/twohanded/mjollnir - -/datum/spellbook_entry/item/singularity_hammer - name = "Singularity Hammer" - desc = "A hammer that creates an intensely powerful field of gravity where it strikes, pulling everything nearby to the point of impact." - item_path = /obj/item/twohanded/singularityhammer - -/datum/spellbook_entry/item/battlemage - name = "Battlemage Armour" - desc = "An ensorcelled suit of armour, protected by a powerful shield. The shield can completly negate sixteen attacks before being permanently depleted." - item_path = /obj/item/clothing/suit/space/hardsuit/shielded/wizard - limit = 1 - category = "Defensive" - -/datum/spellbook_entry/item/battlemage_charge - name = "Battlemage Armour Charges" - desc = "A powerful defensive rune, it will grant eight additional charges to a suit of battlemage armour." - item_path = /obj/item/wizard_armour_charge - category = "Defensive" - cost = 1 - -/datum/spellbook_entry/item/warpwhistle - name = "Warp Whistle" - desc = "A strange whistle that will transport you to a distant safe place on the station. There is a window of vulnerability at the beginning of every use." - item_path = /obj/item/warpwhistle - category = "Mobility" - cost = 1 - -/datum/spellbook_entry/summon - name = "Summon Stuff" - category = "Rituals" - refundable = 0 - buy_word = "Cast" - var/active = 0 - -/datum/spellbook_entry/summon/CanBuy(mob/living/carbon/human/user,obj/item/spellbook/book) - return ..() && !active - -/datum/spellbook_entry/summon/GetInfo() - var/dat ="" - dat += "[name]" - if(cost>0) - dat += " Cost:[cost]
" - else - dat += " No Cost
" - dat += "[desc]
" - if(active) - dat += "Already cast!
" - return dat - -/datum/spellbook_entry/summon/ghosts - name = "Summon Ghosts" - desc = "Spook the crew out by making them see dead people. Be warned, ghosts are capricious and occasionally vindicative, and some will use their incredibly minor abilties to frustrate you." - cost = 0 - -/datum/spellbook_entry/summon/ghosts/IsAvailible() - if(!SSticker.mode) - return FALSE - else - return TRUE - -/datum/spellbook_entry/summon/ghosts/Buy(mob/living/carbon/human/user, obj/item/spellbook/book) - SSblackbox.record_feedback("tally", "wizard_spell_learned", 1, name) - new /datum/round_event/wizard/ghost() - active = TRUE - to_chat(user, "You have cast summon ghosts!") - playsound(get_turf(user), 'sound/effects/ghost2.ogg', 50, 1) - return TRUE - -/datum/spellbook_entry/summon/guns - name = "Summon Guns" - desc = "Nothing could possibly go wrong with arming a crew of lunatics just itching for an excuse to kill you. Just be careful not to stand still too long!" - -/datum/spellbook_entry/summon/guns/IsAvailible() - if(!SSticker.mode) // In case spellbook is placed on map - return 0 - return !CONFIG_GET(flag/no_summon_guns) - -/datum/spellbook_entry/summon/guns/Buy(mob/living/carbon/human/user,obj/item/spellbook/book) - SSblackbox.record_feedback("tally", "wizard_spell_learned", 1, name) - rightandwrong(SUMMON_GUNS, user, 25) - active = 1 - playsound(get_turf(user), 'sound/magic/castsummon.ogg', 50, 1) - to_chat(user, "You have cast summon guns!") - return 1 - -/datum/spellbook_entry/summon/magic - name = "Summon Magic" - desc = "Share the wonders of magic with the crew and show them why they aren't to be trusted with it at the same time." - -/datum/spellbook_entry/summon/magic/IsAvailible() - if(!SSticker.mode) // In case spellbook is placed on map - return 0 - return !CONFIG_GET(flag/no_summon_magic) - -/datum/spellbook_entry/summon/magic/Buy(mob/living/carbon/human/user,obj/item/spellbook/book) - SSblackbox.record_feedback("tally", "wizard_spell_learned", 1, name) - rightandwrong(SUMMON_MAGIC, user, 25) - active = 1 - playsound(get_turf(user), 'sound/magic/castsummon.ogg', 50, 1) - to_chat(user, "You have cast summon magic!") - return 1 - -/datum/spellbook_entry/summon/events - name = "Summon Events" - desc = "Give Murphy's law a little push and replace all events with special wizard ones that will confound and confuse everyone. Multiple castings increase the rate of these events." - var/times = 0 - -/datum/spellbook_entry/summon/events/IsAvailible() - if(!SSticker.mode) // In case spellbook is placed on map - return 0 - return !CONFIG_GET(flag/no_summon_events) - -/datum/spellbook_entry/summon/events/Buy(mob/living/carbon/human/user,obj/item/spellbook/book) - SSblackbox.record_feedback("tally", "wizard_spell_learned", 1, name) - summonevents() - times++ - playsound(get_turf(user), 'sound/magic/castsummon.ogg', 50, 1) - to_chat(user, "You have cast summon events.") - return 1 - -/datum/spellbook_entry/summon/events/GetInfo() - . = ..() - if(times>0) - . += "You cast it [times] times.
" - return . - -/obj/item/spellbook - name = "spell book" - desc = "An unearthly tome that glows with power." - icon = 'icons/obj/library.dmi' - icon_state ="book" - throw_speed = 2 - throw_range = 5 - w_class = WEIGHT_CLASS_TINY - persistence_replacement = /obj/item/spellbook/oneuse/random - var/uses = 10 - var/temp = null - var/tab = null - var/mob/living/carbon/human/owner - var/list/datum/spellbook_entry/entries = list() - var/list/categories = list() - -/obj/item/spellbook/examine(mob/user) - ..() - if(owner) - to_chat(user, "There is a small signature on the front cover: \"[owner]\".") - else - to_chat(user, "It appears to have no author.") - -/obj/item/spellbook/Initialize() - . = ..() - prepare_spells() - -/obj/item/spellbook/proc/prepare_spells() - var/entry_types = subtypesof(/datum/spellbook_entry) - /datum/spellbook_entry/item - /datum/spellbook_entry/summon - for(var/T in entry_types) - var/datum/spellbook_entry/E = new T - if(E.IsAvailible()) - entries |= E - categories |= E.category - else - qdel(E) - tab = categories[1] - -/obj/item/spellbook/attackby(obj/item/O, mob/user, params) - if(istype(O, /obj/item/antag_spawner/contract)) - var/obj/item/antag_spawner/contract/contract = O - if(contract.used) - to_chat(user, "The contract has been used, you can't get your points back now!") - else - to_chat(user, "You feed the contract back into the spellbook, refunding your points.") - uses++ - for(var/datum/spellbook_entry/item/contract/CT in entries) - if(!isnull(CT.limit)) - CT.limit++ - qdel(O) - else if(istype(O, /obj/item/antag_spawner/slaughter_demon)) - to_chat(user, "On second thought, maybe summoning a demon is a bad idea. You refund your points.") - uses++ - for(var/datum/spellbook_entry/item/bloodbottle/BB in entries) - if(!isnull(BB.limit)) - BB.limit++ - qdel(O) - -/obj/item/spellbook/proc/GetCategoryHeader(category) - var/dat = "" - switch(category) - if("Offensive") - dat += "Spells and items geared towards debilitating and destroying.

" - dat += "Items are not bound to you and can be stolen. Additionaly they cannot typically be returned once purchased.
" - dat += "For spells: the number after the spell name is the cooldown time.
" - dat += "You can reduce this number by spending more points on the spell.
" - if("Defensive") - dat += "Spells and items geared towards improving your survivabilty or reducing foes' ability to attack.

" - dat += "Items are not bound to you and can be stolen. Additionaly they cannot typically be returned once purchased.
" - dat += "For spells: the number after the spell name is the cooldown time.
" - dat += "You can reduce this number by spending more points on the spell.
" - if("Mobility") - dat += "Spells and items geared towards improving your ability to move. It is a good idea to take at least one.

" - dat += "Items are not bound to you and can be stolen. Additionaly they cannot typically be returned once purchased.
" - dat += "For spells: the number after the spell name is the cooldown time.
" - dat += "You can reduce this number by spending more points on the spell.
" - if("Assistance") - dat += "Spells and items geared towards bringing in outside forces to aid you or improving upon your other items and abilties.

" - dat += "Items are not bound to you and can be stolen. Additionaly they cannot typically be returned once purchased.
" - dat += "For spells: the number after the spell name is the cooldown time.
" - dat += "You can reduce this number by spending more points on the spell.
" - if("Challenges") - dat += "The Wizard Federation typically has hard limits on the potency and number of spells brought to the station based on risk.
" - dat += "Arming the station against you will increases the risk, but will grant you one more charge for your spellbook.
" - if("Rituals") - dat += "These powerful spells change the very fabric of reality. Not always in your favour.
" - return dat - -/obj/item/spellbook/proc/wrap(content) - var/dat = "" - dat +="Spellbook" - dat += {" - - - - "} - dat += {"[content]"} - return dat - -/obj/item/spellbook/attack_self(mob/user) - if(!owner) - to_chat(user, "You bind the spellbook to yourself.") - owner = user - return - if(user != owner) - to_chat(user, "The [name] does not recognize you as its owner and refuses to open!") - return - user.set_machine(src) - var/dat = "" - - dat += "" - - var/datum/spellbook_entry/E - for(var/i=1,i<=entries.len,i++) - var/spell_info = "" - E = entries[i] - spell_info += E.GetInfo() - if(E.CanBuy(user,src)) - spell_info+= "[E.buy_word]
" - else - spell_info+= "Can't [E.buy_word]
" - if(E.CanRefund(user,src)) - spell_info+= "Refund
" - spell_info += "
" - if(cat_dat[E.category]) - cat_dat[E.category] += spell_info - - for(var/category in categories) - dat += "
" - dat += GetCategoryHeader(category) - dat += cat_dat[category] - dat += "
" - - user << browse(wrap(dat), "window=spellbook;size=700x500") - onclose(user, "spellbook") - return - -/obj/item/spellbook/Topic(href, href_list) - ..() - var/mob/living/carbon/human/H = usr - - if(H.stat || H.restrained()) - return - if(!ishuman(H)) - return 1 - - if(H.mind.special_role == "apprentice") - temp = "If you got caught sneaking a peek from your teacher's spellbook, you'd likely be expelled from the Wizard Academy. Better not." - return - - var/datum/spellbook_entry/E = null - if(loc == H || (in_range(src, H) && isturf(loc))) - H.set_machine(src) - if(href_list["buy"]) - E = entries[text2num(href_list["buy"])] - if(E && E.CanBuy(H,src)) - if(E.Buy(H,src)) - if(E.limit) - E.limit-- - uses -= E.cost - else if(href_list["refund"]) - E = entries[text2num(href_list["refund"])] - if(E && E.refundable) - var/result = E.Refund(H,src) - if(result > 0) - if(!isnull(E.limit)) - E.limit += result - uses += result - else if(href_list["page"]) - tab = sanitize(href_list["page"]) - attack_self(H) - return - -//Single Use Spellbooks// - -/obj/item/spellbook/oneuse - var/spell = /obj/effect/proc_holder/spell/targeted/projectile/magic_missile //just a placeholder to avoid runtimes if someone spawned the generic - var/spellname = "sandbox" - var/used = 0 - name = "spellbook of " - uses = 1 - desc = "This template spellbook was never meant for the eyes of man..." - persistence_replacement = null - -/obj/item/spellbook/oneuse/prepare_spells() - name += spellname - -/obj/item/spellbook/oneuse/attack_self(mob/user) - var/obj/effect/proc_holder/spell/S = new spell - for(var/obj/effect/proc_holder/spell/knownspell in user.mind.spell_list) - if(knownspell.type == S.type) - if(user.mind) - if(iswizard(user)) - to_chat(user,"You're already far more versed in this spell than this flimsy how-to book can provide.") - else - to_chat(user,"You've already read this one.") - return - if(used) - recoil(user) - else - user.mind.AddSpell(S) - to_chat(user,"You rapidly read through the arcane book. Suddenly you realize you understand [spellname]!") - user.log_message("learned the spell [spellname] ([S]).", INDIVIDUAL_ATTACK_LOG) - onlearned(user) - -/obj/item/spellbook/oneuse/proc/recoil(mob/user) - user.visible_message("[src] glows in a black light!") - -/obj/item/spellbook/oneuse/proc/onlearned(mob/user) - used = 1 - user.visible_message("[src] glows dark for a second!") - -/obj/item/spellbook/oneuse/attackby() - return - -/obj/item/spellbook/oneuse/fireball - spell = /obj/effect/proc_holder/spell/aimed/fireball - spellname = "fireball" - icon_state ="bookfireball" - desc = "This book feels warm to the touch." - -/obj/item/spellbook/oneuse/fireball/recoil(mob/user) - ..() - explosion(user.loc, -1, 0, 2, 3, 0, flame_range = 2) - qdel(src) - -/obj/item/spellbook/oneuse/smoke - spell = /obj/effect/proc_holder/spell/targeted/smoke - spellname = "smoke" - icon_state ="booksmoke" - desc = "This book is overflowing with the dank arts." - -/obj/item/spellbook/oneuse/smoke/lesser //Chaplain smoke book - spell = /obj/effect/proc_holder/spell/targeted/smoke/lesser - -/obj/item/spellbook/oneuse/smoke/recoil(mob/user) - ..() - to_chat(user,"Your stomach rumbles...") - if(user.nutrition) - user.nutrition -= 200 - if(user.nutrition <= 0) - user.nutrition = 0 - - -/obj/item/spellbook/oneuse/blind - spell = /obj/effect/proc_holder/spell/targeted/trigger/blind - spellname = "blind" - icon_state ="bookblind" - desc = "This book looks blurry, no matter how you look at it." - -/obj/item/spellbook/oneuse/blind/recoil(mob/user) - ..() - to_chat(user,"You go blind!") - user.blind_eyes(10) - -/obj/item/spellbook/oneuse/mindswap - spell = /obj/effect/proc_holder/spell/targeted/mind_transfer - spellname = "mindswap" - icon_state ="bookmindswap" - desc = "This book's cover is pristine, though its pages look ragged and torn." - var/mob/stored_swap = null //Used in used book recoils to store an identity for mindswaps - -/obj/item/spellbook/oneuse/mindswap/onlearned() - spellname = pick("fireball","smoke","blind","forcewall","knock","barnyard","charge") - icon_state = "book[spellname]" - name = "spellbook of [spellname]" //Note, desc doesn't change by design - ..() - -/obj/item/spellbook/oneuse/mindswap/recoil(mob/user) - ..() - if(stored_swap in GLOB.dead_mob_list) - stored_swap = null - if(!stored_swap) - stored_swap = user - to_chat(user,"For a moment you feel like you don't even know who you are anymore.") - return - if(stored_swap == user) - to_chat(user,"You stare at the book some more, but there doesn't seem to be anything else to learn...") - return - - var/obj/effect/proc_holder/spell/targeted/mind_transfer/swapper = new - swapper.cast(user, stored_swap, 1) - - to_chat(stored_swap,"You're suddenly somewhere else... and someone else?!") - to_chat(user,"Suddenly you're staring at [src] again... where are you, who are you?!") - stored_swap = null - -/obj/item/spellbook/oneuse/forcewall - spell = /obj/effect/proc_holder/spell/targeted/forcewall - spellname = "forcewall" - icon_state ="bookforcewall" - desc = "This book has a dedication to mimes everywhere inside the front cover." - -/obj/item/spellbook/oneuse/forcewall/recoil(mob/living/user) - ..() - to_chat(user,"You suddenly feel very solid!") - user.Stun(40, ignore_canstun = TRUE) - user.petrify(30) - -/obj/item/spellbook/oneuse/knock - spell = /obj/effect/proc_holder/spell/aoe_turf/knock - spellname = "knock" - icon_state ="bookknock" - desc = "This book is hard to hold closed properly." - -/obj/item/spellbook/oneuse/knock/recoil(mob/living/user) - ..() - to_chat(user,"You're knocked down!") - user.Knockdown(40) - -/obj/item/spellbook/oneuse/barnyard - spell = /obj/effect/proc_holder/spell/targeted/barnyardcurse - spellname = "barnyard" - icon_state ="bookhorses" - desc = "This book is more horse than your mind has room for." - -/obj/item/spellbook/oneuse/barnyard/recoil(mob/living/carbon/user) - if(ishuman(user)) - to_chat(user,"HOR-SIE HAS RISEN") - var/obj/item/clothing/mask/horsehead/magichead = new /obj/item/clothing/mask/horsehead - magichead.flags_1 |= NODROP_1 //curses! - magichead.flags_inv &= ~HIDEFACE //so you can still see their face - magichead.voicechange = 1 //NEEEEIIGHH - if(!user.dropItemToGround(user.wear_mask)) - qdel(user.wear_mask) - user.equip_to_slot_if_possible(magichead, slot_wear_mask, 1, 1) - qdel(src) - else - to_chat(user,"I say thee neigh") //It still lives here - -/obj/item/spellbook/oneuse/charge - spell = /obj/effect/proc_holder/spell/targeted/charge - spellname = "charging" - icon_state ="bookcharge" - desc = "This book is made of 100% post-consumer wizard." - -/obj/item/spellbook/oneuse/charge/recoil(mob/user) - ..() - to_chat(user,"[src] suddenly feels very warm!") - empulse(src, 1, 1) - -/obj/item/spellbook/oneuse/summonitem - spell = /obj/effect/proc_holder/spell/targeted/summonitem - spellname = "instant summons" - icon_state ="booksummons" - desc = "This book is bright and garish, very hard to miss." - -/obj/item/spellbook/oneuse/summonitem/recoil(mob/user) - ..() - to_chat(user,"[src] suddenly vanishes!") - qdel(src) - -/obj/item/spellbook/oneuse/random - icon_state = "random_book" - -/obj/item/spellbook/oneuse/random/Initialize() - ..() - var/static/banned_spells = list(/obj/item/spellbook/oneuse/mimery_blockade, /obj/item/spellbook/oneuse/mimery_guns) - var/real_type = pick(subtypesof(/obj/item/spellbook/oneuse) - banned_spells) - new real_type(loc) - return INITIALIZE_HINT_QDEL - -/obj/item/spellbook/oneuse/sacredflame - spell = /obj/effect/proc_holder/spell/targeted/sacred_flame - spellname = "sacred flame" - icon_state ="booksacredflame" - desc = "Become one with the flames that burn within... and invite others to do so as well." +/datum/spellbook_entry + var/name = "Entry Name" + + var/spell_type = null + var/desc = "" + var/category = "Offensive" + var/cost = 2 + var/refundable = 1 + var/surplus = -1 // -1 for infinite, not used by anything atm + var/obj/effect/proc_holder/spell/S = null //Since spellbooks can be used by only one person anyway we can track the actual spell + var/buy_word = "Learn" + var/limit //used to prevent a spellbook_entry from being bought more than X times with one wizard spellbook + var/list/no_coexistance_typecache //Used so you can't have specific spells together + +/datum/spellbook_entry/New() + ..() + no_coexistance_typecache = typecacheof(no_coexistance_typecache) + +/datum/spellbook_entry/proc/IsAvailible() // For config prefs / gamemode restrictions - these are round applied + return 1 + +/datum/spellbook_entry/proc/CanBuy(mob/living/carbon/human/user,obj/item/spellbook/book) // Specific circumstances + if(book.uses= aspell.level_max) + to_chat(user, "This spell cannot be improved further.") + return 0 + else + aspell.name = initial(aspell.name) + aspell.spell_level++ + aspell.charge_max = round(initial(aspell.charge_max) - aspell.spell_level * (initial(aspell.charge_max) - aspell.cooldown_min)/ aspell.level_max) + if(aspell.charge_max < aspell.charge_counter) + aspell.charge_counter = aspell.charge_max + switch(aspell.spell_level) + if(1) + to_chat(user, "You have improved [aspell.name] into Efficient [aspell.name].") + aspell.name = "Efficient [aspell.name]" + if(2) + to_chat(user, "You have further improved [aspell.name] into Quickened [aspell.name].") + aspell.name = "Quickened [aspell.name]" + if(3) + to_chat(user, "You have further improved [aspell.name] into Free [aspell.name].") + aspell.name = "Free [aspell.name]" + if(4) + to_chat(user, "You have further improved [aspell.name] into Instant [aspell.name].") + aspell.name = "Instant [aspell.name]" + if(aspell.spell_level >= aspell.level_max) + to_chat(user, "This spell cannot be strengthened any further.") + SSblackbox.record_feedback("nested tally", "wizard_spell_improved", 1, list("[name]", "[aspell.spell_level]")) + return 1 + //No same spell found - just learn it + SSblackbox.record_feedback("tally", "wizard_spell_learned", 1, name) + user.mind.AddSpell(S) + to_chat(user, "You have learned [S.name].") + return 1 + +/datum/spellbook_entry/proc/CanRefund(mob/living/carbon/human/user,obj/item/spellbook/book) + if(!refundable) + return 0 + if(!S) + S = new spell_type() + for(var/obj/effect/proc_holder/spell/aspell in user.mind.spell_list) + if(initial(S.name) == initial(aspell.name)) + return 1 + return 0 + +/datum/spellbook_entry/proc/Refund(mob/living/carbon/human/user,obj/item/spellbook/book) //return point value or -1 for failure + var/area/wizard_station/A = locate() in GLOB.sortedAreas + if(!(user in A.contents)) + to_chat(user, "You can only refund spells at the wizard lair") + return -1 + if(!S) + S = new spell_type() + var/spell_levels = 0 + for(var/obj/effect/proc_holder/spell/aspell in user.mind.spell_list) + if(initial(S.name) == initial(aspell.name)) + spell_levels = aspell.spell_level + user.mind.spell_list.Remove(aspell) + qdel(S) + return cost * (spell_levels+1) + return -1 +/datum/spellbook_entry/proc/GetInfo() + if(!S) + S = new spell_type() + var/dat ="" + dat += "[initial(S.name)]" + if(S.charge_type == "recharge") + dat += " Cooldown:[S.charge_max/10]" + dat += " Cost:[cost]
" + dat += "[S.desc][desc]
" + dat += "[S.clothes_req?"Needs wizard garb":"Can be cast without wizard garb"]
" + return dat + +/datum/spellbook_entry/fireball + name = "Fireball" + spell_type = /obj/effect/proc_holder/spell/aimed/fireball + +/datum/spellbook_entry/rod_form + name = "Rod Form" + spell_type = /obj/effect/proc_holder/spell/targeted/rod_form + +/datum/spellbook_entry/magicm + name = "Magic Missile" + spell_type = /obj/effect/proc_holder/spell/targeted/projectile/magic_missile + category = "Defensive" + +/datum/spellbook_entry/disintegrate + name = "Disintegrate" + spell_type = /obj/effect/proc_holder/spell/targeted/touch/disintegrate + +/datum/spellbook_entry/disabletech + name = "Disable Tech" + spell_type = /obj/effect/proc_holder/spell/targeted/emplosion/disable_tech + category = "Defensive" + cost = 1 + +/datum/spellbook_entry/repulse + name = "Repulse" + spell_type = /obj/effect/proc_holder/spell/aoe_turf/repulse + category = "Defensive" + +/datum/spellbook_entry/lightningPacket + name = "Lightning bolt! Lightning bolt!" + spell_type = /obj/effect/proc_holder/spell/targeted/conjure_item/spellpacket + category = "Defensive" + +/datum/spellbook_entry/timestop + name = "Time Stop" + spell_type = /obj/effect/proc_holder/spell/aoe_turf/conjure/timestop + category = "Defensive" + +/datum/spellbook_entry/smoke + name = "Smoke" + spell_type = /obj/effect/proc_holder/spell/targeted/smoke + category = "Defensive" + cost = 1 + +/datum/spellbook_entry/blind + name = "Blind" + spell_type = /obj/effect/proc_holder/spell/targeted/trigger/blind + cost = 1 + +/datum/spellbook_entry/mindswap + name = "Mindswap" + spell_type = /obj/effect/proc_holder/spell/targeted/mind_transfer + category = "Mobility" + +/datum/spellbook_entry/forcewall + name = "Force Wall" + spell_type = /obj/effect/proc_holder/spell/targeted/forcewall + category = "Defensive" + cost = 1 + +/datum/spellbook_entry/blink + name = "Blink" + spell_type = /obj/effect/proc_holder/spell/targeted/turf_teleport/blink + category = "Mobility" + +/datum/spellbook_entry/teleport + name = "Teleport" + spell_type = /obj/effect/proc_holder/spell/targeted/area_teleport/teleport + category = "Mobility" + +/datum/spellbook_entry/mutate + name = "Mutate" + spell_type = /obj/effect/proc_holder/spell/targeted/genetic/mutate + +/datum/spellbook_entry/jaunt + name = "Ethereal Jaunt" + spell_type = /obj/effect/proc_holder/spell/targeted/ethereal_jaunt + category = "Mobility" + +/datum/spellbook_entry/knock + name = "Knock" + spell_type = /obj/effect/proc_holder/spell/aoe_turf/knock + category = "Mobility" + cost = 1 + +/datum/spellbook_entry/fleshtostone + name = "Flesh to Stone" + spell_type = /obj/effect/proc_holder/spell/targeted/touch/flesh_to_stone + +/datum/spellbook_entry/summonitem + name = "Summon Item" + spell_type = /obj/effect/proc_holder/spell/targeted/summonitem + category = "Assistance" + cost = 1 + +/datum/spellbook_entry/lichdom + name = "Bind Soul" + spell_type = /obj/effect/proc_holder/spell/targeted/lichdom + category = "Defensive" + +/datum/spellbook_entry/teslablast + name = "Tesla Blast" + spell_type = /obj/effect/proc_holder/spell/targeted/tesla + +/datum/spellbook_entry/lightningbolt + name = "Lightning Bolt" + spell_type = /obj/effect/proc_holder/spell/aimed/lightningbolt + cost = 3 + +/datum/spellbook_entry/lightningbolt/Buy(mob/living/carbon/human/user,obj/item/spellbook/book) //return 1 on success + . = ..() + user.flags_2 |= TESLA_IGNORE_2 + +/datum/spellbook_entry/infinite_guns + name = "Lesser Summon Guns" + spell_type = /obj/effect/proc_holder/spell/targeted/infinite_guns/gun + cost = 3 + no_coexistance_typecache = /obj/effect/proc_holder/spell/targeted/infinite_guns/arcane_barrage + +/datum/spellbook_entry/arcane_barrage + name = "Arcane Barrage" + spell_type = /obj/effect/proc_holder/spell/targeted/infinite_guns/arcane_barrage + cost = 3 + no_coexistance_typecache = /obj/effect/proc_holder/spell/targeted/infinite_guns/gun + +/datum/spellbook_entry/barnyard + name = "Barnyard Curse" + spell_type = /obj/effect/proc_holder/spell/targeted/barnyardcurse + +/datum/spellbook_entry/charge + name = "Charge" + spell_type = /obj/effect/proc_holder/spell/targeted/charge + category = "Assistance" + cost = 1 + +/datum/spellbook_entry/shapeshift + name = "Wild Shapeshift" + spell_type = /obj/effect/proc_holder/spell/targeted/shapeshift + category = "Assistance" + cost = 1 + +/datum/spellbook_entry/spacetime_dist + name = "Spacetime Distortion" + spell_type = /obj/effect/proc_holder/spell/spacetime_dist + category = "Defensive" + cost = 1 + +/datum/spellbook_entry/the_traps + name = "The Traps!" + spell_type = /obj/effect/proc_holder/spell/aoe_turf/conjure/the_traps + category = "Defensive" + cost = 1 + + +/datum/spellbook_entry/item + name = "Buy Item" + refundable = 0 + buy_word = "Summon" + var/item_path= null + + +/datum/spellbook_entry/item/Buy(mob/living/carbon/human/user,obj/item/spellbook/book) + new item_path(get_turf(user)) + SSblackbox.record_feedback("tally", "wizard_spell_learned", 1, name) + return 1 + +/datum/spellbook_entry/item/GetInfo() + var/dat ="" + dat += "[name]" + dat += " Cost:[cost]
" + dat += "[desc]
" + if(surplus>=0) + dat += "[surplus] left.
" + return dat + +/datum/spellbook_entry/item/staffchange + name = "Staff of Change" + desc = "An artefact that spits bolts of coruscating energy which cause the target's very form to reshape itself." + item_path = /obj/item/gun/magic/staff/change + +/datum/spellbook_entry/item/staffanimation + name = "Staff of Animation" + desc = "An arcane staff capable of shooting bolts of eldritch energy which cause inanimate objects to come to life. This magic doesn't affect machines." + item_path = /obj/item/gun/magic/staff/animate + category = "Assistance" + +/datum/spellbook_entry/item/staffchaos + name = "Staff of Chaos" + desc = "A caprious tool that can fire all sorts of magic without any rhyme or reason. Using it on people you care about is not recommended." + item_path = /obj/item/gun/magic/staff/chaos + +/datum/spellbook_entry/item/spellblade + name = "Spellblade" + desc = "A sword capable of firing blasts of energy which rip targets limb from limb." + item_path = /obj/item/gun/magic/staff/spellblade + +/datum/spellbook_entry/item/staffdoor + name = "Staff of Door Creation" + desc = "A particular staff that can mold solid metal into ornate doors. Useful for getting around in the absence of other transportation. Does not work on glass." + item_path = /obj/item/gun/magic/staff/door + cost = 1 + category = "Mobility" + +/datum/spellbook_entry/item/staffhealing + name = "Staff of Healing" + desc = "An altruistic staff that can heal the lame and raise the dead." + item_path = /obj/item/gun/magic/staff/healing + cost = 1 + category = "Defensive" + +/datum/spellbook_entry/item/scryingorb + name = "Scrying Orb" + desc = "An incandescent orb of crackling energy, using it will allow you to ghost while alive, allowing you to spy upon the station with ease. In addition, buying it will permanently grant you x-ray vision." + item_path = /obj/item/scrying + category = "Defensive" + +/datum/spellbook_entry/item/soulstones + name = "Six Soul Stone Shards and the spell Artificer" + desc = "Soul Stone Shards are ancient tools capable of capturing and harnessing the spirits of the dead and dying. The spell Artificer allows you to create arcane machines for the captured souls to pilot." + item_path = /obj/item/storage/belt/soulstone/full + category = "Assistance" + +/datum/spellbook_entry/item/soulstones/Buy(mob/living/carbon/human/user,obj/item/spellbook/book) + . =..() + if(.) + user.mind.AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/conjure/construct(null)) + return . + +/datum/spellbook_entry/item/necrostone + name = "A Necromantic Stone" + desc = "A Necromantic stone is able to resurrect three dead individuals as skeletal thralls for you to command." + item_path = /obj/item/device/necromantic_stone + category = "Assistance" + +/datum/spellbook_entry/item/wands + name = "Wand Assortment" + desc = "A collection of wands that allow for a wide variety of utility. Wands have a limited number of charges, so be conservative in use. Comes in a handy belt." + item_path = /obj/item/storage/belt/wands/full + category = "Defensive" + +/datum/spellbook_entry/item/armor + name = "Mastercrafted Armor Set" + desc = "An artefact suit of armor that allows you to cast spells while providing more protection against attacks and the void of space." + item_path = /obj/item/clothing/suit/space/hardsuit/wizard + category = "Defensive" + +/datum/spellbook_entry/item/armor/Buy(mob/living/carbon/human/user,obj/item/spellbook/book) + . = ..() + if(.) + new /obj/item/clothing/shoes/sandal/magic(get_turf(user)) //In case they've lost them. + new /obj/item/clothing/gloves/color/purple(get_turf(user))//To complete the outfit + +/datum/spellbook_entry/item/contract + name = "Contract of Apprenticeship" + desc = "A magical contract binding an apprentice wizard to your service, using it will summon them to your side." + item_path = /obj/item/antag_spawner/contract + category = "Assistance" + +/datum/spellbook_entry/item/guardian + name = "Guardian Deck" + desc = "A deck of guardian tarot cards, capable of binding a personal guardian to your body. There are multiple types of guardian available, but all of them will transfer some amount of damage to you. \ + It would be wise to avoid buying these with anything capable of causing you to swap bodies with others." + item_path = /obj/item/guardiancreator/choose/wizard + category = "Assistance" + +/datum/spellbook_entry/item/guardian/Buy(mob/living/carbon/human/user,obj/item/spellbook/book) + . = ..() + if(.) + new /obj/item/paper/guides/antag/guardian/wizard(get_turf(user)) + +/datum/spellbook_entry/item/bloodbottle + name = "Bottle of Blood" + desc = "A bottle of magically infused blood, the smell of which will attract extradimensional beings when broken. Be careful though, the kinds of creatures summoned by blood magic are indiscriminate in their killing, and you yourself may become a victim." + item_path = /obj/item/antag_spawner/slaughter_demon + limit = 3 + category = "Assistance" + +/datum/spellbook_entry/item/hugbottle + name = "Bottle of Tickles" + desc = "A bottle of magically infused fun, the smell of which will \ + attract adorable extradimensional beings when broken. These beings \ + are similar to slaughter demons, but they do not permamently kill \ + their victims, instead putting them in an extradimensional hugspace, \ + to be released on the demon's death. Chaotic, but not ultimately \ + damaging. The crew's reaction to the other hand could be very \ + destructive." + item_path = /obj/item/antag_spawner/slaughter_demon/laughter + cost = 1 //non-destructive; it's just a jape, sibling! + limit = 3 + category = "Assistance" + +/datum/spellbook_entry/item/mjolnir + name = "Mjolnir" + desc = "A mighty hammer on loan from Thor, God of Thunder. It crackles with barely contained power." + item_path = /obj/item/twohanded/mjollnir + +/datum/spellbook_entry/item/singularity_hammer + name = "Singularity Hammer" + desc = "A hammer that creates an intensely powerful field of gravity where it strikes, pulling everything nearby to the point of impact." + item_path = /obj/item/twohanded/singularityhammer + +/datum/spellbook_entry/item/battlemage + name = "Battlemage Armour" + desc = "An ensorcelled suit of armour, protected by a powerful shield. The shield can completly negate sixteen attacks before being permanently depleted." + item_path = /obj/item/clothing/suit/space/hardsuit/shielded/wizard + limit = 1 + category = "Defensive" + +/datum/spellbook_entry/item/battlemage_charge + name = "Battlemage Armour Charges" + desc = "A powerful defensive rune, it will grant eight additional charges to a suit of battlemage armour." + item_path = /obj/item/wizard_armour_charge + category = "Defensive" + cost = 1 + +/datum/spellbook_entry/item/warpwhistle + name = "Warp Whistle" + desc = "A strange whistle that will transport you to a distant safe place on the station. There is a window of vulnerability at the beginning of every use." + item_path = /obj/item/warpwhistle + category = "Mobility" + cost = 1 + +/datum/spellbook_entry/summon + name = "Summon Stuff" + category = "Rituals" + refundable = 0 + buy_word = "Cast" + var/active = 0 + +/datum/spellbook_entry/summon/CanBuy(mob/living/carbon/human/user,obj/item/spellbook/book) + return ..() && !active + +/datum/spellbook_entry/summon/GetInfo() + var/dat ="" + dat += "[name]" + if(cost>0) + dat += " Cost:[cost]
" + else + dat += " No Cost
" + dat += "[desc]
" + if(active) + dat += "Already cast!
" + return dat + +/datum/spellbook_entry/summon/ghosts + name = "Summon Ghosts" + desc = "Spook the crew out by making them see dead people. Be warned, ghosts are capricious and occasionally vindicative, and some will use their incredibly minor abilties to frustrate you." + cost = 0 + +/datum/spellbook_entry/summon/ghosts/IsAvailible() + if(!SSticker.mode) + return FALSE + else + return TRUE + +/datum/spellbook_entry/summon/ghosts/Buy(mob/living/carbon/human/user, obj/item/spellbook/book) + SSblackbox.record_feedback("tally", "wizard_spell_learned", 1, name) + new /datum/round_event/wizard/ghost() + active = TRUE + to_chat(user, "You have cast summon ghosts!") + playsound(get_turf(user), 'sound/effects/ghost2.ogg', 50, 1) + return TRUE + +/datum/spellbook_entry/summon/guns + name = "Summon Guns" + desc = "Nothing could possibly go wrong with arming a crew of lunatics just itching for an excuse to kill you. Just be careful not to stand still too long!" + +/datum/spellbook_entry/summon/guns/IsAvailible() + if(!SSticker.mode) // In case spellbook is placed on map + return 0 + return !CONFIG_GET(flag/no_summon_guns) + +/datum/spellbook_entry/summon/guns/Buy(mob/living/carbon/human/user,obj/item/spellbook/book) + SSblackbox.record_feedback("tally", "wizard_spell_learned", 1, name) + rightandwrong(SUMMON_GUNS, user, 25) + active = 1 + playsound(get_turf(user), 'sound/magic/castsummon.ogg', 50, 1) + to_chat(user, "You have cast summon guns!") + return 1 + +/datum/spellbook_entry/summon/magic + name = "Summon Magic" + desc = "Share the wonders of magic with the crew and show them why they aren't to be trusted with it at the same time." + +/datum/spellbook_entry/summon/magic/IsAvailible() + if(!SSticker.mode) // In case spellbook is placed on map + return 0 + return !CONFIG_GET(flag/no_summon_magic) + +/datum/spellbook_entry/summon/magic/Buy(mob/living/carbon/human/user,obj/item/spellbook/book) + SSblackbox.record_feedback("tally", "wizard_spell_learned", 1, name) + rightandwrong(SUMMON_MAGIC, user, 25) + active = 1 + playsound(get_turf(user), 'sound/magic/castsummon.ogg', 50, 1) + to_chat(user, "You have cast summon magic!") + return 1 + +/datum/spellbook_entry/summon/events + name = "Summon Events" + desc = "Give Murphy's law a little push and replace all events with special wizard ones that will confound and confuse everyone. Multiple castings increase the rate of these events." + var/times = 0 + +/datum/spellbook_entry/summon/events/IsAvailible() + if(!SSticker.mode) // In case spellbook is placed on map + return 0 + return !CONFIG_GET(flag/no_summon_events) + +/datum/spellbook_entry/summon/events/Buy(mob/living/carbon/human/user,obj/item/spellbook/book) + SSblackbox.record_feedback("tally", "wizard_spell_learned", 1, name) + summonevents() + times++ + playsound(get_turf(user), 'sound/magic/castsummon.ogg', 50, 1) + to_chat(user, "You have cast summon events.") + return 1 + +/datum/spellbook_entry/summon/events/GetInfo() + . = ..() + if(times>0) + . += "You cast it [times] times.
" + return . + +/obj/item/spellbook + name = "spell book" + desc = "An unearthly tome that glows with power." + icon = 'icons/obj/library.dmi' + icon_state ="book" + throw_speed = 2 + throw_range = 5 + w_class = WEIGHT_CLASS_TINY + persistence_replacement = /obj/item/spellbook/oneuse/random + var/uses = 10 + var/temp = null + var/tab = null + var/mob/living/carbon/human/owner + var/list/datum/spellbook_entry/entries = list() + var/list/categories = list() + +/obj/item/spellbook/examine(mob/user) + ..() + if(owner) + to_chat(user, "There is a small signature on the front cover: \"[owner]\".") + else + to_chat(user, "It appears to have no author.") + +/obj/item/spellbook/Initialize() + . = ..() + prepare_spells() + +/obj/item/spellbook/proc/prepare_spells() + var/entry_types = subtypesof(/datum/spellbook_entry) - /datum/spellbook_entry/item - /datum/spellbook_entry/summon + for(var/T in entry_types) + var/datum/spellbook_entry/E = new T + if(E.IsAvailible()) + entries |= E + categories |= E.category + else + qdel(E) + tab = categories[1] + +/obj/item/spellbook/attackby(obj/item/O, mob/user, params) + if(istype(O, /obj/item/antag_spawner/contract)) + var/obj/item/antag_spawner/contract/contract = O + if(contract.used) + to_chat(user, "The contract has been used, you can't get your points back now!") + else + to_chat(user, "You feed the contract back into the spellbook, refunding your points.") + uses++ + for(var/datum/spellbook_entry/item/contract/CT in entries) + if(!isnull(CT.limit)) + CT.limit++ + qdel(O) + else if(istype(O, /obj/item/antag_spawner/slaughter_demon)) + to_chat(user, "On second thought, maybe summoning a demon is a bad idea. You refund your points.") + uses++ + for(var/datum/spellbook_entry/item/bloodbottle/BB in entries) + if(!isnull(BB.limit)) + BB.limit++ + qdel(O) + +/obj/item/spellbook/proc/GetCategoryHeader(category) + var/dat = "" + switch(category) + if("Offensive") + dat += "Spells and items geared towards debilitating and destroying.

" + dat += "Items are not bound to you and can be stolen. Additionaly they cannot typically be returned once purchased.
" + dat += "For spells: the number after the spell name is the cooldown time.
" + dat += "You can reduce this number by spending more points on the spell.
" + if("Defensive") + dat += "Spells and items geared towards improving your survivabilty or reducing foes' ability to attack.

" + dat += "Items are not bound to you and can be stolen. Additionaly they cannot typically be returned once purchased.
" + dat += "For spells: the number after the spell name is the cooldown time.
" + dat += "You can reduce this number by spending more points on the spell.
" + if("Mobility") + dat += "Spells and items geared towards improving your ability to move. It is a good idea to take at least one.

" + dat += "Items are not bound to you and can be stolen. Additionaly they cannot typically be returned once purchased.
" + dat += "For spells: the number after the spell name is the cooldown time.
" + dat += "You can reduce this number by spending more points on the spell.
" + if("Assistance") + dat += "Spells and items geared towards bringing in outside forces to aid you or improving upon your other items and abilties.

" + dat += "Items are not bound to you and can be stolen. Additionaly they cannot typically be returned once purchased.
" + dat += "For spells: the number after the spell name is the cooldown time.
" + dat += "You can reduce this number by spending more points on the spell.
" + if("Challenges") + dat += "The Wizard Federation typically has hard limits on the potency and number of spells brought to the station based on risk.
" + dat += "Arming the station against you will increases the risk, but will grant you one more charge for your spellbook.
" + if("Rituals") + dat += "These powerful spells change the very fabric of reality. Not always in your favour.
" + return dat + +/obj/item/spellbook/proc/wrap(content) + var/dat = "" + dat +="Spellbook" + dat += {" + + + + "} + dat += {"[content]"} + return dat + +/obj/item/spellbook/attack_self(mob/user) + if(!owner) + to_chat(user, "You bind the spellbook to yourself.") + owner = user + return + if(user != owner) + to_chat(user, "The [name] does not recognize you as its owner and refuses to open!") + return + user.set_machine(src) + var/dat = "" + + dat += "" + + var/datum/spellbook_entry/E + for(var/i=1,i<=entries.len,i++) + var/spell_info = "" + E = entries[i] + spell_info += E.GetInfo() + if(E.CanBuy(user,src)) + spell_info+= "[E.buy_word]
" + else + spell_info+= "Can't [E.buy_word]
" + if(E.CanRefund(user,src)) + spell_info+= "Refund
" + spell_info += "
" + if(cat_dat[E.category]) + cat_dat[E.category] += spell_info + + for(var/category in categories) + dat += "
" + dat += GetCategoryHeader(category) + dat += cat_dat[category] + dat += "
" + + user << browse(wrap(dat), "window=spellbook;size=700x500") + onclose(user, "spellbook") + return + +/obj/item/spellbook/Topic(href, href_list) + ..() + var/mob/living/carbon/human/H = usr + + if(H.stat || H.restrained()) + return + if(!ishuman(H)) + return 1 + + if(H.mind.special_role == "apprentice") + temp = "If you got caught sneaking a peek from your teacher's spellbook, you'd likely be expelled from the Wizard Academy. Better not." + return + + var/datum/spellbook_entry/E = null + if(loc == H || (in_range(src, H) && isturf(loc))) + H.set_machine(src) + if(href_list["buy"]) + E = entries[text2num(href_list["buy"])] + if(E && E.CanBuy(H,src)) + if(E.Buy(H,src)) + if(E.limit) + E.limit-- + uses -= E.cost + else if(href_list["refund"]) + E = entries[text2num(href_list["refund"])] + if(E && E.refundable) + var/result = E.Refund(H,src) + if(result > 0) + if(!isnull(E.limit)) + E.limit += result + uses += result + else if(href_list["page"]) + tab = sanitize(href_list["page"]) + attack_self(H) + return + +//Single Use Spellbooks// + +/obj/item/spellbook/oneuse + var/spell = /obj/effect/proc_holder/spell/targeted/projectile/magic_missile //just a placeholder to avoid runtimes if someone spawned the generic + var/spellname = "sandbox" + var/used = 0 + name = "spellbook of " + uses = 1 + desc = "This template spellbook was never meant for the eyes of man..." + persistence_replacement = null + +/obj/item/spellbook/oneuse/prepare_spells() + name += spellname + +/obj/item/spellbook/oneuse/attack_self(mob/user) + var/obj/effect/proc_holder/spell/S = new spell + for(var/obj/effect/proc_holder/spell/knownspell in user.mind.spell_list) + if(knownspell.type == S.type) + if(user.mind) + if(iswizard(user)) + to_chat(user,"You're already far more versed in this spell than this flimsy how-to book can provide.") + else + to_chat(user,"You've already read this one.") + return + if(used) + recoil(user) + else + user.mind.AddSpell(S) + to_chat(user,"You rapidly read through the arcane book. Suddenly you realize you understand [spellname]!") + user.log_message("learned the spell [spellname] ([S]).", INDIVIDUAL_ATTACK_LOG) + onlearned(user) + +/obj/item/spellbook/oneuse/proc/recoil(mob/user) + user.visible_message("[src] glows in a black light!") + +/obj/item/spellbook/oneuse/proc/onlearned(mob/user) + used = 1 + user.visible_message("[src] glows dark for a second!") + +/obj/item/spellbook/oneuse/attackby() + return + +/obj/item/spellbook/oneuse/fireball + spell = /obj/effect/proc_holder/spell/aimed/fireball + spellname = "fireball" + icon_state ="bookfireball" + desc = "This book feels warm to the touch." + +/obj/item/spellbook/oneuse/fireball/recoil(mob/user) + ..() + explosion(user.loc, -1, 0, 2, 3, 0, flame_range = 2) + qdel(src) + +/obj/item/spellbook/oneuse/smoke + spell = /obj/effect/proc_holder/spell/targeted/smoke + spellname = "smoke" + icon_state ="booksmoke" + desc = "This book is overflowing with the dank arts." + +/obj/item/spellbook/oneuse/smoke/lesser //Chaplain smoke book + spell = /obj/effect/proc_holder/spell/targeted/smoke/lesser + +/obj/item/spellbook/oneuse/smoke/recoil(mob/user) + ..() + to_chat(user,"Your stomach rumbles...") + if(user.nutrition) + user.nutrition -= 200 + if(user.nutrition <= 0) + user.nutrition = 0 + + +/obj/item/spellbook/oneuse/blind + spell = /obj/effect/proc_holder/spell/targeted/trigger/blind + spellname = "blind" + icon_state ="bookblind" + desc = "This book looks blurry, no matter how you look at it." + +/obj/item/spellbook/oneuse/blind/recoil(mob/user) + ..() + to_chat(user,"You go blind!") + user.blind_eyes(10) + +/obj/item/spellbook/oneuse/mindswap + spell = /obj/effect/proc_holder/spell/targeted/mind_transfer + spellname = "mindswap" + icon_state ="bookmindswap" + desc = "This book's cover is pristine, though its pages look ragged and torn." + var/mob/stored_swap = null //Used in used book recoils to store an identity for mindswaps + +/obj/item/spellbook/oneuse/mindswap/onlearned() + spellname = pick("fireball","smoke","blind","forcewall","knock","barnyard","charge") + icon_state = "book[spellname]" + name = "spellbook of [spellname]" //Note, desc doesn't change by design + ..() + +/obj/item/spellbook/oneuse/mindswap/recoil(mob/user) + ..() + if(stored_swap in GLOB.dead_mob_list) + stored_swap = null + if(!stored_swap) + stored_swap = user + to_chat(user,"For a moment you feel like you don't even know who you are anymore.") + return + if(stored_swap == user) + to_chat(user,"You stare at the book some more, but there doesn't seem to be anything else to learn...") + return + + var/obj/effect/proc_holder/spell/targeted/mind_transfer/swapper = new + swapper.cast(user, stored_swap, 1) + + to_chat(stored_swap,"You're suddenly somewhere else... and someone else?!") + to_chat(user,"Suddenly you're staring at [src] again... where are you, who are you?!") + stored_swap = null + +/obj/item/spellbook/oneuse/forcewall + spell = /obj/effect/proc_holder/spell/targeted/forcewall + spellname = "forcewall" + icon_state ="bookforcewall" + desc = "This book has a dedication to mimes everywhere inside the front cover." + +/obj/item/spellbook/oneuse/forcewall/recoil(mob/living/user) + ..() + to_chat(user,"You suddenly feel very solid!") + user.Stun(40, ignore_canstun = TRUE) + user.petrify(30) + +/obj/item/spellbook/oneuse/knock + spell = /obj/effect/proc_holder/spell/aoe_turf/knock + spellname = "knock" + icon_state ="bookknock" + desc = "This book is hard to hold closed properly." + +/obj/item/spellbook/oneuse/knock/recoil(mob/living/user) + ..() + to_chat(user,"You're knocked down!") + user.Knockdown(40) + +/obj/item/spellbook/oneuse/barnyard + spell = /obj/effect/proc_holder/spell/targeted/barnyardcurse + spellname = "barnyard" + icon_state ="bookhorses" + desc = "This book is more horse than your mind has room for." + +/obj/item/spellbook/oneuse/barnyard/recoil(mob/living/carbon/user) + if(ishuman(user)) + to_chat(user,"HOR-SIE HAS RISEN") + var/obj/item/clothing/mask/horsehead/magichead = new /obj/item/clothing/mask/horsehead + magichead.flags_1 |= NODROP_1 //curses! + magichead.flags_inv &= ~HIDEFACE //so you can still see their face + magichead.voicechange = 1 //NEEEEIIGHH + if(!user.dropItemToGround(user.wear_mask)) + qdel(user.wear_mask) + user.equip_to_slot_if_possible(magichead, slot_wear_mask, 1, 1) + qdel(src) + else + to_chat(user,"I say thee neigh") //It still lives here + +/obj/item/spellbook/oneuse/charge + spell = /obj/effect/proc_holder/spell/targeted/charge + spellname = "charging" + icon_state ="bookcharge" + desc = "This book is made of 100% post-consumer wizard." + +/obj/item/spellbook/oneuse/charge/recoil(mob/user) + ..() + to_chat(user,"[src] suddenly feels very warm!") + empulse(src, 1, 1) + +/obj/item/spellbook/oneuse/summonitem + spell = /obj/effect/proc_holder/spell/targeted/summonitem + spellname = "instant summons" + icon_state ="booksummons" + desc = "This book is bright and garish, very hard to miss." + +/obj/item/spellbook/oneuse/summonitem/recoil(mob/user) + ..() + to_chat(user,"[src] suddenly vanishes!") + qdel(src) + +/obj/item/spellbook/oneuse/random + icon_state = "random_book" + +/obj/item/spellbook/oneuse/random/Initialize() + ..() + var/static/banned_spells = list(/obj/item/spellbook/oneuse/mimery_blockade, /obj/item/spellbook/oneuse/mimery_guns) + var/real_type = pick(subtypesof(/obj/item/spellbook/oneuse) - banned_spells) + new real_type(loc) + return INITIALIZE_HINT_QDEL + +/obj/item/spellbook/oneuse/sacredflame + spell = /obj/effect/proc_holder/spell/targeted/sacred_flame + spellname = "sacred flame" + icon_state ="booksacredflame" + desc = "Become one with the flames that burn within... and invite others to do so as well." diff --git a/code/modules/antagonists/wizard/wizard.dm b/code/modules/antagonists/wizard/wizard.dm new file mode 100644 index 0000000000..e447fc46aa --- /dev/null +++ b/code/modules/antagonists/wizard/wizard.dm @@ -0,0 +1,334 @@ +/datum/antagonist/wizard + name = "Space Wizard" + roundend_category = "wizards/witches" + antagpanel_category = "Wizard" + job_rank = ROLE_WIZARD + var/give_objectives = TRUE + var/strip = TRUE //strip before equipping + var/allow_rename = TRUE + var/hud_version = "wizard" + var/datum/team/wizard/wiz_team //Only created if wizard summons apprentices + var/move_to_lair = TRUE + var/outfit_type = /datum/outfit/wizard + var/wiz_age = WIZARD_AGE_MIN /* Wizards by nature cannot be too young. */ + +/datum/antagonist/wizard/on_gain() + register() + if(give_objectives) + create_objectives() + equip_wizard() + if(move_to_lair) + send_to_lair() + . = ..() + if(allow_rename) + rename_wizard() + +/datum/antagonist/wizard/proc/register() + SSticker.mode.wizards |= owner + +/datum/antagonist/wizard/proc/unregister() + SSticker.mode.wizards -= src + +/datum/antagonist/wizard/create_team(datum/team/wizard/new_team) + if(!new_team) + return + if(!istype(new_team)) + stack_trace("Wrong team type passed to [type] initialization.") + wiz_team = new_team + +/datum/antagonist/wizard/get_team() + return wiz_team + +/datum/team/wizard + name = "wizard team" + var/datum/antagonist/wizard/master_wizard + +/datum/antagonist/wizard/proc/create_wiz_team() + wiz_team = new(owner) + wiz_team.name = "[owner.current.real_name] team" + wiz_team.master_wizard = src + update_wiz_icons_added(owner.current) + +/datum/antagonist/wizard/proc/send_to_lair() + if(!owner || !owner.current) + return + if(!GLOB.wizardstart.len) + SSjob.SendToLateJoin(owner.current) + to_chat(owner, "HOT INSERTION, GO GO GO") + owner.current.forceMove(pick(GLOB.wizardstart)) + +/datum/antagonist/wizard/proc/create_objectives() + switch(rand(1,100)) + if(1 to 30) + var/datum/objective/assassinate/kill_objective = new + kill_objective.owner = owner + kill_objective.find_target() + objectives += kill_objective + + if (!(locate(/datum/objective/escape) in owner.objectives)) + var/datum/objective/escape/escape_objective = new + escape_objective.owner = owner + objectives += escape_objective + + if(31 to 60) + var/datum/objective/steal/steal_objective = new + steal_objective.owner = owner + steal_objective.find_target() + objectives += steal_objective + + if (!(locate(/datum/objective/escape) in owner.objectives)) + var/datum/objective/escape/escape_objective = new + escape_objective.owner = owner + objectives += escape_objective + + if(61 to 85) + var/datum/objective/assassinate/kill_objective = new + kill_objective.owner = owner + kill_objective.find_target() + objectives += kill_objective + + var/datum/objective/steal/steal_objective = new + steal_objective.owner = owner + steal_objective.find_target() + objectives += steal_objective + + if (!(locate(/datum/objective/survive) in owner.objectives)) + var/datum/objective/survive/survive_objective = new + survive_objective.owner = owner + objectives += survive_objective + + else + if (!(locate(/datum/objective/hijack) in owner.objectives)) + var/datum/objective/hijack/hijack_objective = new + hijack_objective.owner = owner + objectives += hijack_objective + + for(var/datum/objective/O in objectives) + owner.objectives += O + +/datum/antagonist/wizard/on_removal() + unregister() + for(var/objective in objectives) + owner.objectives -= objective + owner.RemoveAllSpells() // TODO keep track which spells are wizard spells which innate stuff + return ..() + +/datum/antagonist/wizard/proc/equip_wizard() + if(!owner) + return + var/mob/living/carbon/human/H = owner.current + if(!istype(H)) + return + if(strip) + H.delete_equipment() + //Wizards are human by default. Use the mirror if you want something else. + H.set_species(/datum/species/human) + if(H.age < wiz_age) + H.age = wiz_age + H.equipOutfit(outfit_type) + +/datum/antagonist/wizard/greet() + to_chat(owner, "You are the Space Wizard!") + to_chat(owner, "The Space Wizards Federation has given you the following tasks:") + owner.announce_objectives() + to_chat(owner, "You will find a list of available spells in your spell book. Choose your magic arsenal carefully.") + to_chat(owner, "The spellbook is bound to you, and others cannot use it.") + to_chat(owner, "In your pockets you will find a teleport scroll. Use it as needed.") + to_chat(owner,"Remember: do not forget to prepare your spells.") + +/datum/antagonist/wizard/farewell() + to_chat(owner, "You have been brainwashed! You are no longer a wizard!") + +/datum/antagonist/wizard/proc/rename_wizard() + set waitfor = FALSE + + var/wizard_name_first = pick(GLOB.wizard_first) + var/wizard_name_second = pick(GLOB.wizard_second) + var/randomname = "[wizard_name_first] [wizard_name_second]" + var/mob/living/wiz_mob = owner.current + var/newname = copytext(sanitize(input(wiz_mob, "You are the [name]. Would you like to change your name to something else?", "Name change", randomname) as null|text),1,MAX_NAME_LEN) + + if (!newname) + newname = randomname + + wiz_mob.fully_replace_character_name(wiz_mob.real_name, newname) + +/datum/antagonist/wizard/apply_innate_effects(mob/living/mob_override) + var/mob/living/M = mob_override || owner.current + update_wiz_icons_added(M, wiz_team ? TRUE : FALSE) //Don't bother showing the icon if you're solo wizard + M.faction |= "wizard" + +/datum/antagonist/wizard/remove_innate_effects(mob/living/mob_override) + var/mob/living/M = mob_override || owner.current + update_wiz_icons_removed(M) + M.faction -= "wizard" + + +/datum/antagonist/wizard/get_admin_commands() + . = ..() + .["Send to Lair"] = CALLBACK(src,.proc/admin_send_to_lair) + +/datum/antagonist/wizard/proc/admin_send_to_lair(mob/admin) + owner.current.forceMove(pick(GLOB.wizardstart)) + +/datum/antagonist/wizard/apprentice + name = "Wizard Apprentice" + hud_version = "apprentice" + var/datum/mind/master + var/school = APPRENTICE_DESTRUCTION + outfit_type = /datum/outfit/wizard/apprentice + wiz_age = APPRENTICE_AGE_MIN + +/datum/antagonist/wizard/apprentice/greet() + to_chat(owner, "You are [master.current.real_name]'s apprentice! You are bound by magic contract to follow their orders and help them in accomplishing their goals.") + owner.announce_objectives() + +/datum/antagonist/wizard/apprentice/register() + SSticker.mode.apprentices |= owner + +/datum/antagonist/wizard/apprentice/unregister() + SSticker.mode.apprentices -= owner + +/datum/antagonist/wizard/apprentice/equip_wizard() + . = ..() + if(!owner) + return + var/mob/living/carbon/human/H = owner.current + if(!istype(H)) + return + switch(school) + if(APPRENTICE_DESTRUCTION) + owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/projectile/magic_missile(null)) + owner.AddSpell(new /obj/effect/proc_holder/spell/aimed/fireball(null)) + to_chat(owner, "Your service has not gone unrewarded, however. Studying under [master.current.real_name], you have learned powerful, destructive spells. You are able to cast magic missile and fireball.") + if(APPRENTICE_BLUESPACE) + owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/area_teleport/teleport(null)) + owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/ethereal_jaunt(null)) + to_chat(owner, "Your service has not gone unrewarded, however. Studying under [master.current.real_name], you have learned reality bending mobility spells. You are able to cast teleport and ethereal jaunt.") + if(APPRENTICE_HEALING) + owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/charge(null)) + owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/forcewall(null)) + H.put_in_hands(new /obj/item/gun/magic/staff/healing(H)) + to_chat(owner, "Your service has not gone unrewarded, however. Studying under [master.current.real_name], you have learned livesaving survival spells. You are able to cast charge and forcewall.") + if(APPRENTICE_ROBELESS) + owner.AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/knock(null)) + owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/mind_transfer(null)) + to_chat(owner, "Your service has not gone unrewarded, however. Studying under [master.current.real_name], you have learned stealthy, robeless spells. You are able to cast knock and mindswap.") + +/datum/antagonist/wizard/apprentice/create_objectives() + var/datum/objective/protect/new_objective = new /datum/objective/protect + new_objective.owner = owner + new_objective.target = master + new_objective.explanation_text = "Protect [master.current.real_name], the wizard." + owner.objectives += new_objective + objectives += new_objective + +//Random event wizard +/datum/antagonist/wizard/apprentice/imposter + name = "Wizard Imposter" + allow_rename = FALSE + move_to_lair = FALSE + +/datum/antagonist/wizard/apprentice/imposter/greet() + to_chat(owner, "You are an imposter! Trick and confuse the crew to misdirect malice from your handsome original!") + owner.announce_objectives() + +/datum/antagonist/wizard/apprentice/imposter/equip_wizard() + var/mob/living/carbon/human/master_mob = master.current + var/mob/living/carbon/human/H = owner.current + if(!istype(master_mob) || !istype(H)) + return + if(master_mob.ears) + H.equip_to_slot_or_del(new master_mob.ears.type, slot_ears) + if(master_mob.w_uniform) + H.equip_to_slot_or_del(new master_mob.w_uniform.type, slot_w_uniform) + if(master_mob.shoes) + H.equip_to_slot_or_del(new master_mob.shoes.type, slot_shoes) + if(master_mob.wear_suit) + H.equip_to_slot_or_del(new master_mob.wear_suit.type, slot_wear_suit) + if(master_mob.head) + H.equip_to_slot_or_del(new master_mob.head.type, slot_head) + if(master_mob.back) + H.equip_to_slot_or_del(new master_mob.back.type, slot_back) + + //Operation: Fuck off and scare people + owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/area_teleport/teleport(null)) + owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/turf_teleport/blink(null)) + owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/ethereal_jaunt(null)) + +/datum/antagonist/wizard/proc/update_wiz_icons_added(mob/living/wiz,join = TRUE) + var/datum/atom_hud/antag/wizhud = GLOB.huds[ANTAG_HUD_WIZ] + wizhud.join_hud(wiz) + set_antag_hud(wiz, hud_version) + +/datum/antagonist/wizard/proc/update_wiz_icons_removed(mob/living/wiz) + var/datum/atom_hud/antag/wizhud = GLOB.huds[ANTAG_HUD_WIZ] + wizhud.leave_hud(wiz) + set_antag_hud(wiz, null) + + +/datum/antagonist/wizard/academy + name = "Academy Teacher" + outfit_type = /datum/outfit/wizard/academy + +/datum/antagonist/wizard/academy/equip_wizard() + . = ..() + + owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/ethereal_jaunt) + owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/projectile/magic_missile) + owner.AddSpell(new /obj/effect/proc_holder/spell/aimed/fireball) + + var/mob/living/M = owner.current + if(!istype(M)) + return + + var/obj/item/implant/exile/Implant = new/obj/item/implant/exile(M) + Implant.implant(M) + +/datum/antagonist/wizard/academy/create_objectives() + var/datum/objective/new_objective = new("Protect Wizard Academy from the intruders") + new_objective.owner = owner + owner.objectives += new_objective + objectives += new_objective + +//Solo wizard report +/datum/antagonist/wizard/roundend_report() + var/list/parts = list() + + parts += printplayer(owner) + + var/count = 1 + var/wizardwin = 1 + for(var/datum/objective/objective in objectives) + if(objective.check_completion()) + parts += "Objective #[count]: [objective.explanation_text] Success!" + else + parts += "Objective #[count]: [objective.explanation_text] Fail." + wizardwin = 0 + count++ + + if(wizardwin) + parts += "The wizard was successful!" + else + parts += "The wizard has failed!" + + if(owner.spell_list.len>0) + parts += "[owner.name] used the following spells: " + var/list/spell_names = list() + for(var/obj/effect/proc_holder/spell/S in owner.spell_list) + spell_names += S.name + parts += spell_names.Join(", ") + + return parts.Join("
") + +//Wizard with apprentices report +/datum/team/wizard/roundend_report() + var/list/parts = list() + + parts += "Wizards/witches of [master_wizard.owner.name] team were:" + parts += master_wizard.roundend_report() + parts += " " + parts += "[master_wizard.owner.name] apprentices were:" + parts += printplayerlist(members - master_wizard.owner) + + return "
[parts.Join("
")]
" \ No newline at end of file diff --git a/code/modules/assembly/flash.dm b/code/modules/assembly/flash.dm index 84e6233794..b20a395e6d 100644 --- a/code/modules/assembly/flash.dm +++ b/code/modules/assembly/flash.dm @@ -40,7 +40,7 @@ holder.update_icon() /obj/item/device/assembly/flash/proc/clown_check(mob/living/carbon/human/user) - if(user.has_disability(DISABILITY_CLUMSY) && prob(50)) + if(user.has_trait(TRAIT_CLUMSY) && prob(50)) flash_carbon(user, user, 15, 0) return FALSE return TRUE diff --git a/code/modules/assembly/mousetrap.dm b/code/modules/assembly/mousetrap.dm index a61eccbb59..fb37c878a3 100644 --- a/code/modules/assembly/mousetrap.dm +++ b/code/modules/assembly/mousetrap.dm @@ -20,7 +20,7 @@ if(!armed) if(ishuman(usr)) var/mob/living/carbon/human/user = usr - if((user.has_disability(DISABILITY_DUMB) || user.has_disability(DISABILITY_CLUMSY)) && prob(50)) + if((user.has_trait(TRAIT_DUMB) || user.has_trait(TRAIT_CLUMSY)) && prob(50)) to_chat(user, "Your hand slips, setting off the trigger!") pulse(0) update_icon() @@ -76,7 +76,7 @@ if(!armed) to_chat(user, "You arm [src].") else - if((user.has_disability(DISABILITY_DUMB) || user.has_disability(DISABILITY_CLUMSY)) && prob(50)) + if((user.has_trait(TRAIT_DUMB) || user.has_trait(TRAIT_CLUMSY)) && prob(50)) var/which_hand = "l_hand" if(!(user.active_hand_index % 2)) which_hand = "r_hand" @@ -92,7 +92,7 @@ /obj/item/device/assembly/mousetrap/attack_hand(mob/living/carbon/human/user) if(armed) - if((user.has_disability(DISABILITY_DUMB) || user.has_disability(DISABILITY_CLUMSY)) && prob(50)) + if((user.has_trait(TRAIT_DUMB) || user.has_trait(TRAIT_CLUMSY)) && prob(50)) var/which_hand = "l_hand" if(!(user.active_hand_index % 2)) which_hand = "r_hand" diff --git a/code/modules/atmospherics/machinery/airalarm.dm b/code/modules/atmospherics/machinery/airalarm.dm index 6fd846ad66..f83164a409 100644 --- a/code/modules/atmospherics/machinery/airalarm.dm +++ b/code/modules/atmospherics/machinery/airalarm.dm @@ -202,7 +202,7 @@ var/data = list( "locked" = locked, "siliconUser" = user.has_unlimited_silicon_privilege, - "emagged" = emagged, + "emagged" = (obj_flags & EMAGGED ? 1 : 0), "danger_level" = danger_level, ) @@ -288,7 +288,7 @@ data["modes"] += list(list("name" = "Siphon - Siphons air out of the room", "mode" = AALARM_MODE_SIPHON, "selected" = mode == AALARM_MODE_SIPHON, "danger" = 1)) data["modes"] += list(list("name" = "Panic Siphon - Siphons air out of the room quickly","mode" = AALARM_MODE_PANIC, "selected" = mode == AALARM_MODE_PANIC, "danger" = 1)) data["modes"] += list(list("name" = "Off - Shuts off vents and scrubbers", "mode" = AALARM_MODE_OFF, "selected" = mode == AALARM_MODE_OFF, "danger" = 0)) - if(emagged) + if(obj_flags & EMAGGED) data["modes"] += list(list("name" = "Flood - Shuts off scrubbers and opens vents", "mode" = AALARM_MODE_FLOOD, "selected" = mode == AALARM_MODE_FLOOD, "danger" = 1)) var/datum/tlv/selected @@ -756,9 +756,9 @@ update_icon() /obj/machinery/airalarm/emag_act(mob/user) - if(emagged) + if(obj_flags & EMAGGED) return - emagged = TRUE + obj_flags |= EMAGGED visible_message("Sparks fly out of [src]!", "You emag [src], disabling its safeties.") playsound(src, "sparks", 50, 1) diff --git a/code/modules/atmospherics/machinery/atmosmachinery.dm b/code/modules/atmospherics/machinery/atmosmachinery.dm index 5ba74d59d9..ef62c00f86 100644 --- a/code/modules/atmospherics/machinery/atmosmachinery.dm +++ b/code/modules/atmospherics/machinery/atmosmachinery.dm @@ -17,10 +17,10 @@ Pipelines + Other Objects -> Pipe network idle_power_usage = 0 active_power_usage = 0 power_channel = ENVIRON - on_blueprints = TRUE layer = GAS_PIPE_HIDDEN_LAYER //under wires resistance_flags = FIRE_PROOF max_integrity = 200 + obj_flags = CAN_BE_HIT | ON_BLUEPRINTS var/nodealert = 0 var/can_unwrench = 0 var/initialize_directions = 0 @@ -326,7 +326,7 @@ Pipelines + Other Objects -> Pipe network 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.canmove = FALSE addtimer(VARSET_CALLBACK(user, canmove, TRUE), 1) @@ -345,10 +345,9 @@ Pipelines + Other Objects -> Pipe network return list() /obj/machinery/atmospherics/update_remote_sight(mob/user) - if(isborer(user)) - user.sight |= (SEE_PIXELS) - else - user.sight |= (SEE_TURFS|BLIND) +// if(isborer(user)) +// user.sight |= (SEE_PIXELS) + user.sight |= (SEE_TURFS|BLIND) //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() diff --git a/code/modules/awaymissions/corpse.dm b/code/modules/awaymissions/corpse.dm index a10b958db0..2e8d47cf4e 100644 --- a/code/modules/awaymissions/corpse.dm +++ b/code/modules/awaymissions/corpse.dm @@ -275,6 +275,10 @@ /obj/effect/mob_spawn/human/corpse/assistant/spanishflu_infection disease = /datum/disease/fluspanish +/obj/effect/mob_spawn/human/corpse/cargo_tech + name = "Cargo Tech" + outfit = /datum/outfit/job/cargo_tech + /obj/effect/mob_spawn/human/cook name = "Cook" outfit = /datum/outfit/job/cook diff --git a/code/modules/awaymissions/mission_code/Cabin.dm b/code/modules/awaymissions/mission_code/Cabin.dm index c43330d0e6..7b0a3121b6 100644 --- a/code/modules/awaymissions/mission_code/Cabin.dm +++ b/code/modules/awaymissions/mission_code/Cabin.dm @@ -72,7 +72,7 @@ /obj/machinery/recycler/lumbermill name = "lumbermill saw" desc = "Faster then the cartoons!" - emagged = 2 //Always gibs people + obj_flags = CAN_BE_HIT | EMAGGED item_recycle_sound = 'sound/weapons/chainsawhit.ogg' /obj/machinery/recycler/lumbermill/recycle_item(obj/item/grown/log/L) diff --git a/code/modules/awaymissions/zlevel.dm b/code/modules/awaymissions/zlevel.dm index 06af9bf2b9..a96acb027b 100644 --- a/code/modules/awaymissions/zlevel.dm +++ b/code/modules/awaymissions/zlevel.dm @@ -31,7 +31,7 @@ GLOBAL_LIST_INIT(potentialRandomZlevels, generateMapList(filename = "[global.con return ..() /proc/generateMapList(filename) - var/list/potentialMaps = list() + . = list() var/list/Lines = world.file2list(filename) if(!Lines.len) @@ -58,6 +58,4 @@ GLOBAL_LIST_INIT(potentialRandomZlevels, generateMapList(filename = "[global.con if (!name) continue - potentialMaps.Add(t) - - return potentialMaps + . += t diff --git a/code/modules/cargo/console.dm b/code/modules/cargo/console.dm index a41106a49d..a382af0bd8 100644 --- a/code/modules/cargo/console.dm +++ b/code/modules/cargo/console.dm @@ -23,21 +23,24 @@ . = ..() var/obj/item/circuitboard/computer/cargo/board = circuit contraband = board.contraband - emagged = board.emagged + if (board.obj_flags & EMAGGED) + obj_flags |= EMAGGED + else + obj_flags &= ~EMAGGED /obj/machinery/computer/cargo/emag_act(mob/user) - if(emagged) + if(obj_flags & EMAGGED) return user.visible_message("[user] swipes a suspicious card through [src]!", "You adjust [src]'s routing and receiver spectrum, unlocking special supplies and contraband.") - emagged = TRUE + obj_flags |= EMAGGED contraband = TRUE // This also permamently sets this on the circuit board var/obj/item/circuitboard/computer/cargo/board = circuit board.contraband = TRUE - board.emagged = TRUE + board.obj_flags |= EMAGGED /obj/machinery/computer/cargo/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, \ datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state) @@ -69,7 +72,7 @@ "name" = P.group, "packs" = list() ) - if((P.hidden && !emagged) || (P.contraband && !contraband) || (P.special && !P.special_enabled) || P.DropPodOnly) + if((P.hidden && !(obj_flags & EMAGGED)) || (P.contraband && !contraband) || (P.special && !P.special_enabled) || P.DropPodOnly) continue data["supplies"][P.group]["packs"] += list(list( "name" = P.name, @@ -111,7 +114,10 @@ say(blockade_warning) return if(SSshuttle.supply.getDockedId() == "supply_home") - SSshuttle.supply.emagged = emagged + if (obj_flags & EMAGGED) + SSshuttle.supply.obj_flags |= EMAGGED + else + SSshuttle.supply.obj_flags = (SSshuttle.supply.obj_flags & ~EMAGGED) SSshuttle.supply.contraband = contraband SSshuttle.moveShuttle("supply", "supply_away", TRUE) say("The supply shuttle has departed.") @@ -140,7 +146,7 @@ var/datum/supply_pack/pack = SSshuttle.supply_packs[id] if(!istype(pack)) return - if((pack.hidden && !emagged) || (pack.contraband && !contraband) || pack.DropPodOnly) + if((pack.hidden && !(obj_flags & EMAGGED)) || (pack.contraband && !contraband) || pack.DropPodOnly) return var/name = "*None Provided*" diff --git a/code/modules/cargo/export_scanner.dm b/code/modules/cargo/export_scanner.dm index 79f6b9dfaf..874efd88d5 100644 --- a/code/modules/cargo/export_scanner.dm +++ b/code/modules/cargo/export_scanner.dm @@ -29,7 +29,7 @@ else // Before you fix it: // yes, checking manifests is a part of intended functionality. - var/price = export_item_and_contents(O, cargo_console.contraband, cargo_console.emagged, dry_run=TRUE) + var/price = export_item_and_contents(O, cargo_console.contraband, (cargo_console.obj_flags & EMAGGED), dry_run=TRUE) if(price) to_chat(user, "Scanned [O], value: [price] credits[O.contents.len ? " (contents included)" : ""].") diff --git a/code/modules/cargo/expressconsole.dm b/code/modules/cargo/expressconsole.dm index 66458c4d36..b8ed56413d 100644 --- a/code/modules/cargo/expressconsole.dm +++ b/code/modules/cargo/expressconsole.dm @@ -32,16 +32,16 @@ return TRUE /obj/machinery/computer/cargo/express/emag_act(mob/living/user) - if(emagged) + if(obj_flags & EMAGGED) return user.visible_message("[user] swipes a suspicious card through [src]!", "You change the routing protocols, allowing the Drop Pod to land anywhere on the station.") - emagged = TRUE + obj_flags |= EMAGGED // This also sets this on the circuit board var/obj/item/circuitboard/computer/cargo/board = circuit - board.emagged = TRUE + board.obj_flags |= EMAGGED packin_up() - + /obj/machinery/computer/cargo/express/proc/packin_up() // oh shit, I'm sorry meme_pack_data = list() // sorry for what? for(var/pack in SSshuttle.supply_packs) // our quartermaster taught us not to be ashamed of our supply packs @@ -53,7 +53,7 @@ ) // see, my quartermaster taught me a few things too if((P.hidden) || (P.special)) // like, how not to rip the manifest continue// by using someone else's crate - if(!emagged && P.contraband) // will you show me? + if(!(obj_flags & EMAGGED) && P.contraband) // will you show me? continue // i'd be right happy to meme_pack_data[P.group]["packs"] += list(list( "name" = P.name, @@ -78,15 +78,15 @@ Sales are near-instantaneous - please choose carefully." if(SSshuttle.supplyBlocked) message = blockade_warning - if(emagged) + if(obj_flags & EMAGGED) message = "(&!#@ERROR: ROUTING_#PROTOCOL MALF(*CT#ON. $UG%ESTE@ ACT#0N: !^/PULS3-%E)ET CIR*)ITB%ARD." - + data["message"] = message if(!meme_pack_data) packin_up() stack_trace("You didn't give the cargo tech good advice, and he ripped the manifest. As a result, there was no pack data for [src]") data["supplies"] = meme_pack_data - + return data /obj/machinery/computer/cargo/express/ui_act(action, params, datum/tgui/ui) @@ -110,7 +110,7 @@ var/list/empty_turfs var/area/landingzone var/datum/supply_order/SO = new(pack, name, rank, ckey, reason) - if(!emagged) + if(!(obj_flags & EMAGGED)) if(SO.pack.cost * 2 <= SSshuttle.points) landingzone = locate(/area/quartermaster/storage) in GLOB.sortedAreas for(var/turf/open/floor/T in landingzone.contents) diff --git a/code/modules/cargo/packs.dm b/code/modules/cargo/packs.dm index e575773233..0d4471fd43 100644 --- a/code/modules/cargo/packs.dm +++ b/code/modules/cargo/packs.dm @@ -864,6 +864,14 @@ /datum/supply_pack/science group = "Science" crate_type = /obj/structure/closet/crate/science + +/datum/supply_pack/science/bz + name = "BZ canister" + cost = 4000 + access = ACCESS_TOX_STORAGE + contains = list(/obj/machinery/portable_atmospherics/canister/bz) + crate_name = "BZ canister crate" + crate_type = /obj/structure/closet/crate/secure/science /datum/supply_pack/science/robotics name = "Robotics Assembly Crate" @@ -982,7 +990,7 @@ /obj/item/pizzabox/meat, /obj/item/pizzabox/vegetable) crate_name = "pizza crate" - + /datum/supply_pack/organic/cream_piee name = "High-yield Clown-grade Cream Pie Crate" cost = 6000 @@ -1035,6 +1043,14 @@ contains = list(/mob/living/simple_animal/hostile/retaliate/goat) crate_name = "goat crate" +/datum/supply_pack/organic/critter/snake + name = "Snake Crate" + cost = 3000 + contains = list(/mob/living/simple_animal/hostile/retaliate/poison/snake, + /mob/living/simple_animal/hostile/retaliate/poison/snake, + /mob/living/simple_animal/hostile/retaliate/poison/snake) + crate_name = "snake crate" + /datum/supply_pack/organic/critter/chick name = "Chicken Crate" cost = 2000 diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 006ec5eae4..1646e24652 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -86,6 +86,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) "spines" = "None", "body_markings" = "None", "legs" = "Normal Legs", + "moth_wings" = "Plain", "mcolor2" = "FFF", "mcolor3" = "FFF", "mam_body_markings" = "None", @@ -472,6 +473,9 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "Ears: [features["ears"]]
" if("legs" in pref_species.mutant_bodyparts) dat += "Legs: [features["legs"]]
" + if("moth_wings" in pref_species.mutant_bodyparts) + dat += "Moth wings[features["moth_wings"]]
" + if("taur" in pref_species.mutant_bodyparts) dat += "Taur: [features["taur"]]
" if("wings" in pref_species.mutant_bodyparts && GLOB.r_wings_list.len >1) @@ -1191,6 +1195,12 @@ GLOBAL_LIST_EMPTY(preferences_datums) new_wings = input(user, "Choose your character's wings:", "Character Preference") as null|anything in GLOB.r_wings_list if(new_wings) features["wings"] = new_wings + + if("moth_wings") + var/new_moth_wings + new_moth_wings = input(user, "Choose your character's wings:", "Character Preference") as null|anything in GLOB.moth_wings_list + if(new_moth_wings) + features["moth_wings"] = new_moth_wings if("frills") var/new_frills diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index 8e69c9aaec..723047f1d6 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -335,6 +335,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car S["feature_lizard_spines"] >> features["spines"] S["feature_lizard_body_markings"] >> features["body_markings"] S["feature_lizard_legs"] >> features["legs"] + S["feature_moth_wings"] >> features["moth_wings"] if(!CONFIG_GET(flag/join_with_mutant_humans)) features["tail_human"] = "none" features["ears"] = "none" @@ -457,6 +458,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car features["spines"] = sanitize_inlist(features["spines"], GLOB.spines_list) features["body_markings"] = sanitize_inlist(features["body_markings"], GLOB.body_markings_list) features["feature_lizard_legs"] = sanitize_inlist(features["legs"], GLOB.legs_list, "Normal Legs") + features["moth_wings"] = sanitize_inlist(features["moth_wings"], GLOB.moth_wings_list, "Plain") joblessrole = sanitize_integer(joblessrole, 1, 3, initial(joblessrole)) job_civilian_high = sanitize_integer(job_civilian_high, 0, 65535, initial(job_civilian_high)) @@ -512,6 +514,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car WRITE_FILE(S["feature_lizard_spines"] , features["spines"]) WRITE_FILE(S["feature_lizard_body_markings"] , features["body_markings"]) WRITE_FILE(S["feature_lizard_legs"] , features["legs"]) + WRITE_FILE(S["feature_moth_wings"] , features["moth_wings"]) WRITE_FILE(S["human_name"] , custom_names["human"]) WRITE_FILE(S["clown_name"] , custom_names["clown"]) WRITE_FILE(S["mime_name"] , custom_names["mime"]) diff --git a/code/modules/client/verbs/suicide.dm b/code/modules/client/verbs/suicide.dm index c9293a3e46..a6b7156ea8 100644 --- a/code/modules/client/verbs/suicide.dm +++ b/code/modules/client/verbs/suicide.dm @@ -2,7 +2,6 @@ /mob/living/carbon/human/verb/suicide() set hidden = 1 - return if(!canSuicide()) return var/oldkey = ckey @@ -57,11 +56,11 @@ suicide_message = pick("[src] is attempting to push [p_their()] own head off [p_their()] shoulders! It looks like [p_theyre()] trying to commit suicide.", \ "[src] is pushing [p_their()] thumbs into [p_their()] eye sockets! It looks like [p_theyre()] trying to commit suicide.", \ "[src] is ripping [p_their()] own arms off! It looks like [p_theyre()] trying to commit suicide.")//heheh get it? - if(a_intent == INTENT_GRAB) + if(a_intent == INTENT_GRAB) suicide_message = pick("[src] is attempting to pull [p_their()] own head off! It looks like [p_theyre()] trying to commit suicide.", \ "[src] is aggressively grabbing [p_their()] own neck! It looks like [p_theyre()] trying to commit suicide.", \ "[src] is pulling [p_their()] eyes out of their sockets! It looks like [p_theyre()] trying to commit suicide.") - if(a_intent == INTENT_HELP) + if(a_intent == INTENT_HELP) suicide_message = pick("[src] is hugging [p_them()]self to death! It looks like [p_theyre()] trying to commit suicide.", \ "[src] is high-fiving [p_them()]self to death! It looks like [p_theyre()] trying to commit suicide.", \ "[src] is getting too high on life! It looks like [p_theyre()] trying to commit suicide.") @@ -189,7 +188,7 @@ if(!canmove || restrained()) //just while I finish up the new 'fun' suiciding verb. This is to prevent metagaming via suicide to_chat(src, "You can't commit suicide whilst restrained! ((You can type Ghost instead however.))") return - if(has_brain_worms()) - to_chat(src, "You can't bring yourself to commit suicide!") - return +// if(has_brain_worms()) +// to_chat(src, "You can't bring yourself to commit suicide!") +// return return TRUE diff --git a/code/modules/clothing/chameleon.dm b/code/modules/clothing/chameleon.dm index ee02702862..fabd8c1fd1 100644 --- a/code/modules/clothing/chameleon.dm +++ b/code/modules/clothing/chameleon.dm @@ -419,7 +419,7 @@ desc = "A modified version of the basic laser gun, this one fires less concentrated energy bolts designed for target practice." ammo_type = list(/obj/item/ammo_casing/energy/chameleon) clumsy_check = 0 - needs_permit = 0 + item_flags = NONE pin = /obj/item/device/firing_pin cell_type = /obj/item/stock_parts/cell/bluespace diff --git a/code/modules/clothing/glasses/_glasses.dm b/code/modules/clothing/glasses/_glasses.dm index 7a9a4a2a29..84d2613082 100644 --- a/code/modules/clothing/glasses/_glasses.dm +++ b/code/modules/clothing/glasses/_glasses.dm @@ -45,7 +45,7 @@ /obj/item/clothing/glasses/proc/thermal_overload() if(ishuman(src.loc)) var/mob/living/carbon/human/H = src.loc - if(!(H.has_disability(DISABILITY_BLIND))) + if(!(H.has_trait(TRAIT_BLIND))) if(H.glasses == src) to_chat(H, "[src] overloads and blinds you!") H.flash_act(visual = 1) diff --git a/code/modules/clothing/glasses/hud.dm b/code/modules/clothing/glasses/hud.dm index 4d59a893ea..626bf4f542 100644 --- a/code/modules/clothing/glasses/hud.dm +++ b/code/modules/clothing/glasses/hud.dm @@ -17,15 +17,15 @@ H.remove_hud_from(user) /obj/item/clothing/glasses/hud/emp_act(severity) - if(emagged) + if(obj_flags & EMAGGED) return - emagged = TRUE + obj_flags |= EMAGGED desc = "[desc] The display is flickering slightly." /obj/item/clothing/glasses/hud/emag_act(mob/user) - if(emagged) + if(obj_flags & EMAGGED) return - emagged = TRUE + obj_flags |= EMAGGED to_chat(user, "PZZTTPFFFT") desc = "[desc] The display is flickering slightly." diff --git a/code/modules/clothing/neck/_neck.dm b/code/modules/clothing/neck/_neck.dm index 011e21c372..7d81e2d005 100644 --- a/code/modules/clothing/neck/_neck.dm +++ b/code/modules/clothing/neck/_neck.dm @@ -66,7 +66,7 @@ var/obj/item/organ/heart/heart = M.getorganslot(ORGAN_SLOT_HEART) var/obj/item/organ/lungs/lungs = M.getorganslot(ORGAN_SLOT_LUNGS) - if(!(M.stat == DEAD || (M.status_flags&FAKEDEATH))) + if(!(M.stat == DEAD || (M.has_trait(TRAIT_FAKEDEATH)))) if(heart && istype(heart)) heart_strength = "an unstable" if(heart.beating) diff --git a/code/modules/clothing/spacesuits/flightsuit.dm b/code/modules/clothing/spacesuits/flightsuit.dm index 681ba3e789..f515dacc74 100644 --- a/code/modules/clothing/spacesuits/flightsuit.dm +++ b/code/modules/clothing/spacesuits/flightsuit.dm @@ -435,7 +435,7 @@ var/nopass = FALSE if(!A.density) return TRUE - nopass = (A.locked || A.stat || A.emagged || A.welded) + nopass = (A.locked || A.stat || (A.obj_flags & EMAGGED) || A.welded) if(A.requiresID()) if((!A.allowed(wearer)) && !A.emergency) nopass = TRUE diff --git a/code/modules/clothing/suits/_suits.dm b/code/modules/clothing/suits/_suits.dm index 1ff8c65d4b..43b30b383e 100644 --- a/code/modules/clothing/suits/_suits.dm +++ b/code/modules/clothing/suits/_suits.dm @@ -7,6 +7,7 @@ slot_flags = SLOT_OCLOTHING var/blood_overlay_type = "suit" var/togglename = null + var/suittoggled = FALSE /obj/item/clothing/suit/worn_overlays(isinhands = FALSE) @@ -28,4 +29,4 @@ ..() if(ismob(loc)) var/mob/M = loc - M.update_inv_wear_suit() \ No newline at end of file + M.update_inv_wear_suit() diff --git a/code/modules/clothing/suits/toggles.dm b/code/modules/clothing/suits/toggles.dm index f0f2a5af1f..d036710ce4 100644 --- a/code/modules/clothing/suits/toggles.dm +++ b/code/modules/clothing/suits/toggles.dm @@ -4,7 +4,6 @@ actions_types = list(/datum/action/item_action/toggle_hood) var/obj/item/clothing/head/hooded/hood var/hoodtype = /obj/item/clothing/head/hooded/winterhood //so the chaplain hoodie or other hoodies can override this - hooded = 1 /obj/item/clothing/suit/hooded/New() MakeHood() diff --git a/code/modules/clothing/under/accessories.dm b/code/modules/clothing/under/accessories.dm index 49364e76d9..30105fecac 100644 --- a/code/modules/clothing/under/accessories.dm +++ b/code/modules/clothing/under/accessories.dm @@ -28,8 +28,13 @@ pixel_y -= 8 U.add_overlay(src) - for(var/armor_type in armor) - U.armor[armor_type] += armor[armor_type] + if (islist(U.armor)) // This proc can run before /obj/Initialize has run for U and src, + U.armor = getArmor(arglist(U.armor)) // we have to check that the armor list has been transformed into a datum before we try to call a proc on it + // This is safe to do as /obj/Initialize only handles setting up the datum if actually needed. + if (islist(armor)) + armor = getArmor(arglist(armor)) + + U.armor = U.armor.attachArmor(armor) if(isliving(user)) on_uniform_equip(U, user) @@ -42,8 +47,7 @@ pockets.forceMove(src) U.pockets = null - for(var/armor_type in armor) - U.armor[armor_type] -= armor[armor_type] + U.armor = U.armor.detachArmor(armor) if(isliving(user)) on_uniform_dropped(U, user) diff --git a/code/modules/crafting/recipes.dm b/code/modules/crafting/recipes.dm index 7ad03c6e9d..86eddf3d2a 100644 --- a/code/modules/crafting/recipes.dm +++ b/code/modules/crafting/recipes.dm @@ -543,6 +543,26 @@ result = /obj/structure/bonfire category = CAT_PRIMAL +/datum/crafting_recipe/headpike + name = "Spike Head (Glass Spear)" + time = 65 + reqs = list(/obj/item/twohanded/spear = 1, + /obj/item/bodypart/head = 1) + parts = list(/obj/item/bodypart/head = 1, + /obj/item/twohanded/spear = 1) + result = /obj/structure/headpike + category = CAT_PRIMAL + +/datum/crafting_recipe/headpikebone + name = "Spike Head (Bone Spear)" + time = 65 + reqs = list(/obj/item/twohanded/bonespear = 1, + /obj/item/bodypart/head = 1) + parts = list(/obj/item/bodypart/head = 1, + /obj/item/twohanded/bonespear = 1) + result = /obj/structure/headpike/bone + category = CAT_PRIMAL + /datum/crafting_recipe/smallcarton name = "Small Carton" result = /obj/item/reagent_containers/food/drinks/sillycup/smallcarton diff --git a/code/modules/error_handler/error_handler.dm b/code/modules/error_handler/error_handler.dm index 06ff548e42..d0064d7f99 100644 --- a/code/modules/error_handler/error_handler.dm +++ b/code/modules/error_handler/error_handler.dm @@ -116,10 +116,17 @@ GLOBAL_VAR_INIT(total_runtimes_skipped, 0) if(GLOB.error_cache) GLOB.error_cache.log_error(E, desclines) - SEND_TEXT(world.log, "\[[time_stamp()]] Runtime in [E.file],[E.line]: [E]") + var/main_line = "\[[time_stamp()]] Runtime in [E.file],[E.line]: [E]" + SEND_TEXT(world.log, main_line) for(var/line in desclines) SEND_TEXT(world.log, line) +#ifdef UNIT_TESTS + if(GLOB.current_test) + //good day, sir + GLOB.current_test.Fail("[main_line]\n[desclines.Join("\n")]") +#endif + /* This logs the runtime in the old format */ E.name = "\n\[[time2text(world.timeofday,"hh:mm:ss")]\][E.name]" diff --git a/code/modules/events/disease_outbreak.dm b/code/modules/events/disease_outbreak.dm index f2e3104ab8..c8b8db0681 100644 --- a/code/modules/events/disease_outbreak.dm +++ b/code/modules/events/disease_outbreak.dm @@ -51,7 +51,7 @@ var/datum/disease/D if(!advanced_virus) if(virus_type == /datum/disease/dnaspread) //Dnaspread needs strain_data set to work. - if(!H.dna || (H.has_disability(DISABILITY_BLIND))) //A blindness disease would be the worst. + if(!H.dna || (H.has_trait(TRAIT_BLIND))) //A blindness disease would be the worst. continue D = new virus_type() var/datum/disease/dnaspread/DS = D diff --git a/code/modules/events/electrical_storm.dm b/code/modules/events/electrical_storm.dm index 12e1f255e6..d887ebda6e 100644 --- a/code/modules/events/electrical_storm.dm +++ b/code/modules/events/electrical_storm.dm @@ -19,18 +19,15 @@ var/list/epicentreList = list() for(var/i=1, i <= lightsoutAmount, i++) - var/list/possibleEpicentres = list() - for(var/obj/effect/landmark/lightsout/newEpicentre in GLOB.landmarks_list) - if(!(newEpicentre in epicentreList)) - possibleEpicentres += newEpicentre - if(possibleEpicentres.len) - epicentreList += pick(possibleEpicentres) - else - break + var/turf/T = find_safe_turf() + if(istype(T)) + epicentreList += T if(!epicentreList.len) return - for(var/obj/effect/landmark/epicentre in epicentreList) - for(var/obj/machinery/power/apc/apc in urange(lightsoutRange, epicentre)) - apc.overload_lighting() + for(var/centre in epicentreList) + for(var/a in GLOB.apcs_list) + var/obj/machinery/power/apc/A = a + if(get_dist(centre, A) <= lightsoutRange) + A.overload_lighting() diff --git a/code/modules/events/pirates.dm b/code/modules/events/pirates.dm index b94f7dd9eb..2ec6422bb2 100644 --- a/code/modules/events/pirates.dm +++ b/code/modules/events/pirates.dm @@ -188,7 +188,7 @@ name = "pirate shuttle navigation computer" desc = "Used to designate a precise transit location for the pirate shuttle." shuttleId = "pirateship" - station_lock_override = TRUE + lock_override = CAMERA_LOCK_STATION shuttlePortId = "pirateship_custom" shuttlePortName = "custom location" x_offset = 9 diff --git a/code/modules/events/wizard/rpgloot.dm b/code/modules/events/wizard/rpgloot.dm index d1dd3bac80..7254583b17 100644 --- a/code/modules/events/wizard/rpgloot.dm +++ b/code/modules/events/wizard/rpgloot.dm @@ -109,7 +109,6 @@ I.force = max(0,I.force + quality_mod) I.throwforce = max(0,I.throwforce + quality_mod) - for(var/value in I.armor) - I.armor[value] += quality + I.armor = I.armor.modifyAllRatings(quality) rename() diff --git a/code/modules/food_and_drinks/drinks/drinks/bottle.dm b/code/modules/food_and_drinks/drinks/drinks/bottle.dm index dfa6315b04..407870073d 100644 --- a/code/modules/food_and_drinks/drinks/drinks/bottle.dm +++ b/code/modules/food_and_drinks/drinks/drinks/bottle.dm @@ -68,12 +68,7 @@ //If they have a hat/helmet and the user is targeting their head. if(istype(H.head, /obj/item/clothing/head) && affecting == "head") - - // If their head has an armor value, assign headarmor to it, else give it 0. - if(H.head.armor["melee"]) - headarmor = H.head.armor["melee"] - else - headarmor = 0 + headarmor = H.head.armor.melee else headarmor = 0 diff --git a/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm b/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm index 263d592303..a91d5a6a7b 100644 --- a/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm +++ b/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm @@ -10,7 +10,7 @@ max_integrity = 20 spillable = TRUE resistance_flags = ACID_PROOF - unique_rename = 1 + obj_flags = UNIQUE_RENAME /obj/item/reagent_containers/food/drinks/drinkingglass/on_reagent_change(changetype) cut_overlays() diff --git a/code/modules/food_and_drinks/food/customizables.dm b/code/modules/food_and_drinks/food/customizables.dm index 7d83788f9d..353bfc6538 100644 --- a/code/modules/food_and_drinks/food/customizables.dm +++ b/code/modules/food_and_drinks/food/customizables.dm @@ -15,7 +15,6 @@ bitesize = 4 w_class = WEIGHT_CLASS_SMALL volume = 80 - unique_rename = 1 var/ingMax = 12 var/list/ingredients = list() diff --git a/code/modules/food_and_drinks/food/snacks.dm b/code/modules/food_and_drinks/food/snacks.dm index b0e2067be0..cb5e3c6248 100644 --- a/code/modules/food_and_drinks/food/snacks.dm +++ b/code/modules/food_and_drinks/food/snacks.dm @@ -5,7 +5,7 @@ icon_state = null lefthand_file = 'icons/mob/inhands/misc/food_lefthand.dmi' righthand_file = 'icons/mob/inhands/misc/food_righthand.dmi' - unique_rename = 1 + obj_flags = UNIQUE_RENAME grind_results = list() //To let them be ground up to transfer their reagents var/bitesize = 2 var/bitecount = 0 diff --git a/code/modules/food_and_drinks/food/snacks/meat.dm b/code/modules/food_and_drinks/food/snacks/meat.dm index e43309892d..6dcad1d683 100644 --- a/code/modules/food_and_drinks/food/snacks/meat.dm +++ b/code/modules/food_and_drinks/food/snacks/meat.dm @@ -108,6 +108,13 @@ tastes = list("maggots" = 1, "the inside of a reactor" = 1) foodtype = MEAT | RAW | GROSS +/obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/moth + icon_state = "mothmeat" + desc = "Unpleasantly powdery and dry. Kind of pretty, though." + filling_color = "#BF896B" + tastes = list("dust" = 1, "powder" = 1, "meat" = 2) + foodtype = MEAT | RAW + /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/skeleton name = "bone" icon_state = "skeletonmeat" @@ -119,14 +126,13 @@ /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/zombie name = " meat (rotten)" - icon_state = "lizardmeat" //Close enough. + icon_state = "rottenmeat" desc = "Halfway to becoming fertilizer for your garden." filling_color = "#6B8E23" tastes = list("brains" = 1, "meat" = 1) foodtype = RAW | MEAT | TOXIC - ////////////////////////////////////// OTHER MEATS //////////////////////////////////////////////////////// diff --git a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm index cefa8ce0ac..cfbc95d7c0 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm @@ -222,7 +222,7 @@ component_parts = null /obj/machinery/smartfridge/drying_rack/on_deconstruction() - new /obj/item/stack/sheet/mineral/wood(loc, 10) + new /obj/item/stack/sheet/mineral/wood(drop_location(), 10) ..() /obj/machinery/smartfridge/drying_rack/RefreshParts() @@ -297,7 +297,7 @@ update_icon() /obj/machinery/smartfridge/drying_rack/proc/rack_dry() - for(var/obj/item/reagent_containers/food/snacks/S in contents) + for(var/obj/item/reagent_containers/food/snacks/S in src) if(S.dried_type == S.type)//if the dried type is the same as the object's type, don't bother creating a whole new item... S.add_atom_colour("#ad7257", FIXED_COLOUR_PRIORITY) S.dry = TRUE @@ -307,8 +307,8 @@ new dried(drop_location()) qdel(S) return TRUE - for(var/obj/item/stack/sheet/wetleather/WL in contents) - var/obj/item/stack/sheet/leather/L = new(loc) + for(var/obj/item/stack/sheet/wetleather/WL in src) + var/obj/item/stack/sheet/leather/L = new(drop_location()) L.amount = WL.amount qdel(WL) return TRUE diff --git a/code/modules/food_and_drinks/recipes/drinks_recipes.dm b/code/modules/food_and_drinks/recipes/drinks_recipes.dm index a5c21aa0f5..bc894488b2 100644 --- a/code/modules/food_and_drinks/recipes/drinks_recipes.dm +++ b/code/modules/food_and_drinks/recipes/drinks_recipes.dm @@ -547,4 +547,12 @@ name = "eggnog" id = "eggnog" results = list("eggnog" = 15) - required_reagents = list("rum" = 5, "cream" = 5, "eggyolk" = 5) \ No newline at end of file + required_reagents = list("rum" = 5, "cream" = 5, "eggyolk" = 5) + +/datum/chemical_reaction/narsour + name = "Nar'sour" + id = "narsour" + results = list("narsour" = 1) + required_reagents = list("blood" = 1, "lemonjuice" = 1, "demonsblood" = 1) + mix_message = "The mixture develops a sinister glow." + mix_sound = 'sound/effects/singlebeat.ogg' diff --git a/code/modules/holodeck/computer.dm b/code/modules/holodeck/computer.dm index 97b610a5d2..a55a5e1657 100644 --- a/code/modules/holodeck/computer.dm +++ b/code/modules/holodeck/computer.dm @@ -90,7 +90,7 @@ var/list/data = list() data["default_programs"] = program_cache - if(emagged) + if(obj_flags & EMAGGED) data["emagged"] = TRUE data["emag_programs"] = emag_programs data["program"] = program @@ -111,10 +111,10 @@ if(A) load_program(A) if("safety") - emagged = !emagged - if(emagged && program && emag_programs[program.name]) + obj_flags ^= EMAGGED + if((obj_flags & EMAGGED) && program && emag_programs[program.name]) emergency_shutdown() - nerf(emagged) + nerf(obj_flags & EMAGGED) /obj/machinery/computer/holodeck/process() if(damaged && prob(10)) @@ -138,7 +138,7 @@ T.ex_act(EXPLODE_LIGHT) T.hotspot_expose(1000,500,1) - if(!emagged) + if(!(obj_flags & EMAGGED)) for(var/item in spawned) if(!(get_turf(item) in linked)) derez(item, 0) @@ -149,17 +149,17 @@ active_power_usage = 50 + spawned.len * 3 + effects.len * 5 /obj/machinery/computer/holodeck/emag_act(mob/user) - if(emagged) + if(obj_flags & EMAGGED) return if(!LAZYLEN(emag_programs)) to_chat(user, "[src] does not seem to have a card swipe port. It must be an inferior model.") return playsound(src, "sparks", 75, 1) - emagged = TRUE + obj_flags |= EMAGGED to_chat(user, "You vastly increase projector power and override the safety and security protocols.") to_chat(user, "Warning. Automatic shutoff and derezing protocols have been corrupted. Please call Nanotrasen maintenance and do not use the simulator.") log_game("[key_name(user)] emagged the Holodeck Control Console") - nerf(!emagged) + nerf(!(obj_flags & EMAGGED)) /obj/machinery/computer/holodeck/emp_act(severity) emergency_shutdown() @@ -245,7 +245,7 @@ // note nerfing does not yet work on guns, should // should also remove/limit/filter reagents? // this is an exercise left to others I'm afraid. -Sayu - spawned = A.copy_contents_to(linked, 1, nerf_weapons = !emagged) + spawned = A.copy_contents_to(linked, 1, nerf_weapons = !(obj_flags & EMAGGED)) for(var/obj/machinery/M in spawned) M.flags_1 |= NODECONSTRUCT_1 for(var/obj/structure/S in spawned) @@ -270,7 +270,7 @@ /obj/machinery/computer/holodeck/proc/derez(obj/O, silent = TRUE, forced = FALSE) // Emagging a machine creates an anomaly in the derez systems. - if(O && emagged && !stat && !forced) + if(O && (obj_flags & EMAGGED) && !stat && !forced) if((ismob(O) || ismob(O.loc)) && prob(50)) addtimer(CALLBACK(src, .proc/derez, O, silent), 50) // may last a disturbingly long time return diff --git a/code/modules/holodeck/holo_effect.dm b/code/modules/holodeck/holo_effect.dm index 25667706ab..b870ad4c30 100644 --- a/code/modules/holodeck/holo_effect.dm +++ b/code/modules/holodeck/holo_effect.dm @@ -32,7 +32,7 @@ /obj/effect/holodeck_effect/cards/activate(var/obj/machinery/computer/holodeck/HC) D = new(loc) - safety(!HC.emagged) + safety(!(HC.obj_flags & EMAGGED)) D.holo = HC return D diff --git a/code/modules/hydroponics/gene_modder.dm b/code/modules/hydroponics/gene_modder.dm index fa1e25a6d4..70f6f225ec 100644 --- a/code/modules/hydroponics/gene_modder.dm +++ b/code/modules/hydroponics/gene_modder.dm @@ -45,7 +45,7 @@ min_wrate = FLOOR(10-wratemod,1) // 7,5,2,0 Clamps at 0 and 10 You want this low min_wchance = 67-(ML.rating*16) // 48,35,19,3 Clamps at 0 and 67 You want this low for(var/obj/item/circuitboard/machine/plantgenes/vaultcheck in component_parts) - if(istype(vaultcheck, /obj/item/circuitboard/machine/plantgenes/vault)) // DISABILITY_DUMB BOTANY TUTS + if(istype(vaultcheck, /obj/item/circuitboard/machine/plantgenes/vault)) // TRAIT_DUMB BOTANY TUTS max_potency = 100 max_yield = 10 min_production = 1 @@ -420,7 +420,7 @@ materials = list(MAT_METAL=30, MAT_GLASS=10) var/datum/plant_gene/gene var/read_only = 0 //Well, it's still a floppy disk - unique_rename = 1 + obj_flags = UNIQUE_RENAME /obj/item/disk/plantgene/Initialize() . = ..() diff --git a/code/modules/hydroponics/hydroponics.dm b/code/modules/hydroponics/hydroponics.dm index c46fb92feb..8fc5c43bcc 100644 --- a/code/modules/hydroponics/hydroponics.dm +++ b/code/modules/hydroponics/hydroponics.dm @@ -5,7 +5,7 @@ density = TRUE anchored = TRUE pixel_y = 8 - unique_rename = 1 + obj_flags = CAN_BE_HIT | UNIQUE_RENAME circuit = /obj/item/circuitboard/machine/hydroponics var/waterlevel = 100 //The amount of water in the tray (max 100) var/maxwater = 100 //The maximum amount of water in the tray diff --git a/code/modules/jobs/job_exp.dm b/code/modules/jobs/job_exp.dm index 534e530e17..52b4a5de32 100644 --- a/code/modules/jobs/job_exp.dm +++ b/code/modules/jobs/job_exp.dm @@ -271,4 +271,4 @@ GLOBAL_PROTECT(exp_to_update) prefs.db_flags = text2num(flags_read.item[1]) else if(isnull(prefs.db_flags)) prefs.db_flags = 0 //This PROBABLY won't happen, but better safe than sorry. - return TRUE \ No newline at end of file + return TRUE diff --git a/code/modules/jobs/job_types/civilian.dm b/code/modules/jobs/job_types/civilian.dm index 5ab8249215..67bc2143f8 100644 --- a/code/modules/jobs/job_types/civilian.dm +++ b/code/modules/jobs/job_types/civilian.dm @@ -152,7 +152,7 @@ Curator return H.grant_all_languages(omnitongue=TRUE) - + H.gain_trauma(/datum/brain_trauma/mild/phobia, FALSE, "snakes") //why does it have to be snakes... /* Lawyer */ diff --git a/code/modules/keybindings/bindings_admin.dm b/code/modules/keybindings/bindings_admin.dm index 812bb95784..44cbb796fb 100644 --- a/code/modules/keybindings/bindings_admin.dm +++ b/code/modules/keybindings/bindings_admin.dm @@ -1,5 +1,8 @@ /datum/admins/key_down(_key, client/user) switch(_key) + if("F3") + user.get_admin_say() + return if("F5") user.admin_ghost() return diff --git a/code/modules/language/moth.dm b/code/modules/language/moth.dm index 0b7523c27d..e69de29bb2 100644 --- a/code/modules/language/moth.dm +++ b/code/modules/language/moth.dm @@ -1,12 +0,0 @@ -/datum/language/moth - name = "Lepidopterian" - desc = "The common language of moths, composed of various noises made of wing fluttering and clicks." - speech_verb = "flutters" - ask_verb = "clicks" - exclaim_verb = "buzzes" - key = "m" - space_chance = 45 - syllables = list("bz", "ba", "mah", "fa", "ki", "nr") - default_priority = 90 - - icon_state = "moth" diff --git a/code/modules/library/lib_machines.dm b/code/modules/library/lib_machines.dm index 35d87ce30e..f0b881c9e2 100644 --- a/code/modules/library/lib_machines.dm +++ b/code/modules/library/lib_machines.dm @@ -214,7 +214,7 @@ GLOBAL_LIST(cachedbooks) // List of our cached book datums dat += "5. Upload New Title to Archive
" dat += "6. Upload Scanned Title to Newscaster
" dat += "7. Print Corporate Materials
" - if(src.emagged) + if(obj_flags & EMAGGED) dat += "8. Access the Forbidden Lore Vault
" if(src.arcanecheckout) print_forbidden_lore(user) @@ -339,8 +339,8 @@ GLOBAL_LIST(cachedbooks) // List of our cached book datums return ..() /obj/machinery/computer/libraryconsole/bookmanagement/emag_act(mob/user) - if(density && !emagged) - emagged = TRUE + if(density && !(obj_flags & EMAGGED)) + obj_flags |= EMAGGED /obj/machinery/computer/libraryconsole/bookmanagement/Topic(href, href_list) if(..()) @@ -370,7 +370,7 @@ GLOBAL_LIST(cachedbooks) // List of our cached book datums if("8") screenstate = 8 if(href_list["arccheckout"]) - if(src.emagged) + if(obj_flags & EMAGGED) src.arcanecheckout = 1 src.screenstate = 0 if(href_list["increasetime"]) @@ -403,7 +403,7 @@ GLOBAL_LIST(cachedbooks) // List of our cached book datums if(newauthor) scanner.cache.author = newauthor if(href_list["setcategory"]) - var/newcategory = input("Choose a category: ") in list("Fiction", "Non-Fiction", "Adult", "Reference", "Religion", "Technical") + var/newcategory = input("Choose a category: ") in list("Fiction", "Non-Fiction", "Adult", "Reference", "Religion","Technical") if(newcategory) upload_category = newcategory if(href_list["upload"]) diff --git a/code/modules/mapping/reader.dm b/code/modules/mapping/reader.dm index 5b2a73d708..0e37d74c1b 100644 --- a/code/modules/mapping/reader.dm +++ b/code/modules/mapping/reader.dm @@ -98,7 +98,8 @@ GLOBAL_DATUM_INIT(_preloader, /dmm_suite/preloader, new) if(cropMap) continue else - world.maxz = zcrd //create a new z_level if needed + while (zcrd > world.maxz) //create a new z_level if needed + world.incrementMaxZ() if(!no_changeturf) WARNING("Z-level expansion occurred without no_changeturf set, this may cause problems when /turf/AfterChange is called") diff --git a/code/modules/mapping/space_management/zlevel_manager.dm b/code/modules/mapping/space_management/zlevel_manager.dm index e2b313220c..5a442c5b6a 100644 --- a/code/modules/mapping/space_management/zlevel_manager.dm +++ b/code/modules/mapping/space_management/zlevel_manager.dm @@ -19,7 +19,7 @@ /datum/controller/subsystem/mapping/proc/add_new_zlevel(name, linkage = SELFLOOPING, traits = list(), z_type = /datum/space_level) var/new_z = z_list.len + 1 if (world.maxz < new_z) - ++world.maxz + world.incrementMaxZ() CHECK_TICK // TODO: sleep here if the Z level needs to be cleared var/datum/space_level/S = new z_type(new_z, name, linkage, traits) diff --git a/code/modules/mining/equipment/goliath_hide.dm b/code/modules/mining/equipment/goliath_hide.dm index a96081540b..5950541fe7 100644 --- a/code/modules/mining/equipment/goliath_hide.dm +++ b/code/modules/mining/equipment/goliath_hide.dm @@ -21,9 +21,8 @@ return if(is_type_in_typecache(target, goliath_platable_armor_typecache)) var/obj/item/clothing/C = target - var/list/current_armor = C.armor - if(current_armor["melee"] < 60) - current_armor["melee"] = min(current_armor["melee"] + 10, 60) + if(armor.melee < 60) + armor = armor.setRating(melee = min(armor.melee + 10, 60)) to_chat(user, "You strengthen [target], improving its resistance against melee attacks.") use(1) else @@ -32,9 +31,10 @@ var/obj/mecha/working/ripley/D = target if(D.hides < 3) D.hides++ - D.armor["melee"] = min(D.armor["melee"] + 10, 70) - D.armor["bullet"] = min(D.armor["bullet"] + 5, 50) - D.armor["laser"] = min(D.armor["laser"] + 5, 50) + D.armor = D.armor.setRating(\ + melee = min(D.armor.melee + 10, 70),\ + bullet = min(D.armor.laser + 5, 50),\ + laser = min(D.armor.laser + 5, 50)) to_chat(user, "You strengthen [target], improving its resistance against melee attacks.") D.update_icon() if(D.hides == 3) diff --git a/code/modules/mining/laborcamp/laborstacker.dm b/code/modules/mining/laborcamp/laborstacker.dm index 7b38bc4cb5..78417a56d1 100644 --- a/code/modules/mining/laborcamp/laborstacker.dm +++ b/code/modules/mining/laborcamp/laborstacker.dm @@ -44,7 +44,7 @@ var/list/data = list() var/can_go_home = FALSE - data["emagged"] = emagged + data["emagged"] = (obj_flags & EMAGGED) ? 1 : 0 if(inserted_id) data["id"] = inserted_id data["id_name"] = inserted_id.registered_name @@ -101,13 +101,13 @@ if(3) to_chat(usr, "No permission to dock could be granted.") else - if(!emagged) + if(!(obj_flags & EMAGGED)) Radio.set_frequency(FREQ_SECURITY) Radio.talk_into(src, "[inserted_id.registered_name] has returned to the station. Minerals and Prisoner ID card ready for retrieval.", FREQ_SECURITY, get_spans(), get_default_language()) to_chat(usr, "Shuttle received message and will be sent shortly.") /obj/machinery/mineral/labor_claim_console/proc/check_auth() - if(emagged) + if(obj_flags & EMAGGED) return 1 //Shuttle is emagged, let any ol' person through return (istype(inserted_id) && inserted_id.points >= inserted_id.goal) //Otherwise, only let them out if the prisoner's reached his quota. @@ -119,8 +119,8 @@ qdel(src) /obj/machinery/mineral/labor_claim_console/emag_act(mob/user) - if(!emagged) - emagged = TRUE + if(!(obj_flags & EMAGGED)) + obj_flags |= EMAGGED to_chat(user, "PZZTTPFFFT") diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm index 21e69d0197..0e20420e2a 100644 --- a/code/modules/mining/lavaland/necropolis_chests.dm +++ b/code/modules/mining/lavaland/necropolis_chests.dm @@ -588,7 +588,7 @@ playsound(user, 'sound/magic/clockwork/fellowship_armory.ogg', 35, TRUE, frequency = 90000 - (active * 30000)) /obj/item/melee/transforming/cleaving_saw/clumsy_transform_effect(mob/living/user) - if(user.has_disability(DISABILITY_CLUMSY) && prob(50)) + if(user.has_trait(TRAIT_CLUMSY) && prob(50)) to_chat(user, "You accidentally cut yourself with [src], like a doofus!") user.take_bodypart_damage(10) diff --git a/code/modules/mining/lavaland/ruins/gym.dm b/code/modules/mining/lavaland/ruins/gym.dm index efda0f9c8f..b148495f44 100644 --- a/code/modules/mining/lavaland/ruins/gym.dm +++ b/code/modules/mining/lavaland/ruins/gym.dm @@ -21,11 +21,11 @@ anchored = TRUE /obj/structure/stacklifter/attack_hand(mob/living/user) - if(in_use) + if(obj_flags & IN_USE) to_chat(user, "It's already in use - wait a bit.") return else - in_use = 1 + obj_flags |= IN_USE icon_state = "fitnesslifter2" user.setDir(SOUTH) user.Stun(80) @@ -44,7 +44,7 @@ playsound(user, 'goon/sound/effects/spring.ogg', 60, 1) playsound(user, 'sound/machines/click.ogg', 60, 1) - in_use = 0 + obj_flags &= ~IN_USE user.pixel_y = 0 var/finishmessage = pick("You feel stronger!","You feel like you can take on the world!","You feel robust!","You feel indestructible!") icon_state = "fitnesslifter" @@ -59,11 +59,11 @@ anchored = TRUE /obj/structure/weightlifter/attack_hand(mob/living/user) - if(in_use) + if(obj_flags & IN_USE) to_chat(user, "It's already in use - wait a bit.") return else - in_use = 1 + obj_flags |= IN_USE icon_state = "fitnessweight-c" user.setDir(SOUTH) user.Stun(80) @@ -88,7 +88,7 @@ animate(user, pixel_y = 2, time = 3) sleep(3) playsound(user, 'sound/machines/click.ogg', 60, 1) - in_use = 0 + obj_flags &= ~IN_USE animate(user, pixel_y = 0, time = 3) var/finishmessage = pick("You feel stronger!","You feel like you can take on the world!","You feel robust!","You feel indestructible!") icon_state = "fitnessweight" diff --git a/code/modules/mob/dead/new_player/sprite_accessories.dm b/code/modules/mob/dead/new_player/sprite_accessories.dm index 674f44bcd2..57d912067e 100644 --- a/code/modules/mob/dead/new_player/sprite_accessories.dm +++ b/code/modules/mob/dead/new_player/sprite_accessories.dm @@ -1401,3 +1401,72 @@ /datum/sprite_accessory/legs/digitigrade_lizard name = "Digitigrade Legs" + +/datum/sprite_accessory/moth_wings + icon = 'icons/mob/wings.dmi' + color_src = null + +/datum/sprite_accessory/moth_wings/plain + name = "Plain" + icon_state = "plain" + +/datum/sprite_accessory/moth_wings/monarch + name = "Monarch" + icon_state = "monarch" + +/datum/sprite_accessory/moth_wings/luna + name = "Luna" + icon_state = "luna" + +/datum/sprite_accessory/moth_wings/atlas + name = "Atlas" + icon_state = "atlas" + +/datum/sprite_accessory/moth_wings/reddish + name = "Reddish" + icon_state = "redish" + +/datum/sprite_accessory/moth_wings/royal + name = "Royal" + icon_state = "royal" + +/datum/sprite_accessory/moth_wings/gothic + name = "Gothic" + icon_state = "gothic" + +/datum/sprite_accessory/moth_wings/lovers + name = "Lovers" + icon_state = "lovers" + +/datum/sprite_accessory/moth_wings/whitefly + name = "White Fly" + icon_state = "whitefly" + +/datum/sprite_accessory/moth_wings/punished + name = "Burnt Off" + icon_state = "punished" + locked = TRUE + +/datum/sprite_accessory/moth_wings/firewatch + name = "Firewatch" + icon_state = "firewatch" + +/datum/sprite_accessory/moth_wings/deathhead + name = "Deathshead" + icon_state = "deathhead" + +/datum/sprite_accessory/moth_wings/poison + name = "Poison" + icon_state = "poison" + +/datum/sprite_accessory/moth_wings/ragged + name = "Ragged" + icon_state = "ragged" + +/datum/sprite_accessory/moth_wings/moonfly + name = "Moon Fly" + icon_state = "moonfly" + +/datum/sprite_accessory/moth_wings/snow + name = "Snow" + icon_state = "snow" diff --git a/code/modules/mob/dead/new_player/sprite_accessories_Citadel.dm b/code/modules/mob/dead/new_player/sprite_accessories_Citadel.dm index 9cc031af1b..cadeb09e74 100644 --- a/code/modules/mob/dead/new_player/sprite_accessories_Citadel.dm +++ b/code/modules/mob/dead/new_player/sprite_accessories_Citadel.dm @@ -13,6 +13,10 @@ icon = 'icons/mob/mam_bodyparts.dmi' */ +/datum/sprite_accessory/moth_wings/none + name = "None" + icon_state = "none" + /***************** Alphabetical Order please *************** ************* Keep it to Ears, Tails, Tails Animated *********/ diff --git a/code/modules/mob/living/blood.dm b/code/modules/mob/living/blood.dm index 9c3bb25da3..f6fbbaab4b 100644 --- a/code/modules/mob/living/blood.dm +++ b/code/modules/mob/living/blood.dm @@ -16,7 +16,7 @@ /mob/living/carbon/monkey/handle_blood() - if(bodytemperature >= TCRYO && !(has_disability(DISABILITY_NOCLONE))) //cryosleep or husked people do not pump the blood. + if(bodytemperature >= TCRYO && !(has_trait(TRAIT_NOCLONE))) //cryosleep or husked people do not pump the blood. //Blood regeneration if there is some space if(blood_volume < BLOOD_VOLUME_NORMAL) blood_volume += 0.1 // regenerate blood VERY slowly @@ -28,7 +28,7 @@ bleed_rate = 0 return - if(bodytemperature >= TCRYO && !(has_disability(DISABILITY_NOCLONE))) //cryosleep or husked people do not pump the blood. + if(bodytemperature >= TCRYO && !(has_trait(TRAIT_NOCLONE))) //cryosleep or husked people do not pump the blood. //Blood regeneration if there is some space if(blood_volume < BLOOD_VOLUME_NORMAL && !(NOHUNGER in dna.species.species_traits)) @@ -84,7 +84,7 @@ bleed_rate = max(bleed_rate - 0.5, temp_bleed)//if no wounds, other bleed effects (heparin) naturally decreases - if(bleed_rate && !bleedsuppress && !(status_flags & FAKEDEATH)) + if(bleed_rate && !bleedsuppress && !(has_trait(TRAIT_FAKEDEATH))) bleed(bleed_rate) //Makes a blood drop, leaking amt units of blood from the mob @@ -201,13 +201,13 @@ return "blood" /mob/living/carbon/monkey/get_blood_id() - if(!(has_disability(DISABILITY_NOCLONE))) + if(!(has_trait(TRAIT_NOCLONE))) return "blood" /mob/living/carbon/human/get_blood_id() if(dna.species.exotic_blood) return dna.species.exotic_blood - else if((NOBLOOD in dna.species.species_traits) || (has_disability(DISABILITY_NOCLONE))) + else if((NOBLOOD in dna.species.species_traits) || (has_trait(TRAIT_NOCLONE))) return return "blood" diff --git a/code/modules/mob/living/brain/brain_item.dm b/code/modules/mob/living/brain/brain_item.dm index c77908362f..9ac01a59ed 100644 --- a/code/modules/mob/living/brain/brain_item.dm +++ b/code/modules/mob/living/brain/brain_item.dm @@ -25,7 +25,7 @@ name = "brain" if(C.mind && C.mind.has_antag_datum(/datum/antagonist/changeling) && !no_id_transfer) //congrats, you're trapped in a body you don't control - if(brainmob && !(C.stat == DEAD || (C.status_flags & FAKEDEATH))) + if(brainmob && !(C.stat == DEAD || (C.has_trait(TRAIT_FAKEDEATH)))) to_chat(brainmob, "You can't feel your body! You're still just a brain!") forceMove(C) C.update_hair() @@ -79,8 +79,8 @@ if(!brainmob.stored_dna) brainmob.stored_dna = new /datum/dna/stored(brainmob) C.dna.copy_dna(brainmob.stored_dna) - if(L.has_disability(DISABILITY_NOCLONE)) - brainmob.disabilities[DISABILITY_NOCLONE] = L.disabilities[DISABILITY_NOCLONE] + if(L.has_trait(TRAIT_NOCLONE)) + brainmob.status_traits[TRAIT_NOCLONE] = L.status_traits[TRAIT_NOCLONE] var/obj/item/organ/zombie_infection/ZI = L.getorganslot(ORGAN_SLOT_ZOMBIE) if(ZI) brainmob.set_species(ZI.old_species) //For if the brain is cloned diff --git a/code/modules/mob/living/brain/life.dm b/code/modules/mob/living/brain/life.dm index c8df16a1cf..786bb0b55c 100644 --- a/code/modules/mob/living/brain/life.dm +++ b/code/modules/mob/living/brain/life.dm @@ -1,8 +1,6 @@ /mob/living/brain/Life() set invisibility = 0 - set background = BACKGROUND_ENABLED - if (notransform) return if(!loc) @@ -34,7 +32,7 @@ /mob/living/brain/handle_status_effects() return -/mob/living/brain/handle_disabilities() +/mob/living/brain/handle_traits() return diff --git a/code/modules/mob/living/brain/status_procs.dm b/code/modules/mob/living/brain/status_procs.dm index 735a0186bf..1c5aeb1f47 100644 --- a/code/modules/mob/living/brain/status_procs.dm +++ b/code/modules/mob/living/brain/status_procs.dm @@ -1,6 +1,6 @@ //Here are the procs used to modify status effects of a mob. //The effects include: stun, knockdown, unconscious, sleeping, resting, jitteriness, dizziness -// eye damage, eye_blind, eye_blurry, druggy, DISABILITY_BLIND disability, and DISABILITY_NEARSIGHT disability. +// eye damage, eye_blind, eye_blurry, druggy, TRAIT_BLIND trait, and TRAIT_NEARSIGHT trait. /////////////////////////////////// EYE_BLIND //////////////////////////////////// diff --git a/code/modules/mob/living/carbon/alien/alien.dm b/code/modules/mob/living/carbon/alien/alien.dm index e058cf6354..5a97aa220e 100644 --- a/code/modules/mob/living/carbon/alien/alien.dm +++ b/code/modules/mob/living/carbon/alien/alien.dm @@ -110,7 +110,7 @@ Des: Gives the client of the alien an image on each infected mob. if (client) for (var/i in GLOB.mob_living_list) var/mob/living/L = i - if(L.status_flags & XENO_HOST) + if(L.has_trait(TRAIT_XENO_HOST)) var/obj/item/organ/body_egg/alien_embryo/A = L.getorgan(/obj/item/organ/body_egg/alien_embryo) if(A) var/I = image('icons/mob/alien.dmi', loc = L, icon_state = "infected[A.stage]") diff --git a/code/modules/mob/living/carbon/alien/larva/life.dm b/code/modules/mob/living/carbon/alien/larva/life.dm index d7ae106380..62b9fb9b1a 100644 --- a/code/modules/mob/living/carbon/alien/larva/life.dm +++ b/code/modules/mob/living/carbon/alien/larva/life.dm @@ -2,8 +2,6 @@ /mob/living/carbon/alien/larva/Life() set invisibility = 0 - set background = BACKGROUND_ENABLED - if (notransform) return if(..()) //not dead @@ -20,7 +18,7 @@ if(health<= -maxHealth || !getorgan(/obj/item/organ/brain)) death() return - if(IsUnconscious() || IsSleeping() || getOxyLoss() > 50 || (status_flags & FAKEDEATH) || health <= HEALTH_THRESHOLD_CRIT) + if(IsUnconscious() || IsSleeping() || getOxyLoss() > 50 || (has_trait(TRAIT_FAKEDEATH)) || health <= HEALTH_THRESHOLD_CRIT) if(stat == CONSCIOUS) stat = UNCONSCIOUS blind_eyes(1) diff --git a/code/modules/mob/living/carbon/alien/status_procs.dm b/code/modules/mob/living/carbon/alien/status_procs.dm index 86b7f3508c..7fd1d31872 100644 --- a/code/modules/mob/living/carbon/alien/status_procs.dm +++ b/code/modules/mob/living/carbon/alien/status_procs.dm @@ -1,6 +1,6 @@ //Here are the procs used to modify status effects of a mob. //The effects include: stun, knockdown, unconscious, sleeping, resting, jitteriness, dizziness, ear damage, -// eye damage, eye_blind, eye_blurry, druggy, DISABILITY_BLIND disability, and DISABILITY_NEARSIGHT disability. +// eye damage, eye_blind, eye_blurry, druggy, TRAIT_BLIND trait, and TRAIT_NEARSIGHT trait. /////////////////////////////////// STUN //////////////////////////////////// diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 59b0fcf55f..fee97c1d01 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -157,7 +157,7 @@ if(!throwable_mob.buckled) thrown_thing = throwable_mob stop_pulling() - if(has_disability(DISABILITY_PACIFISM)) + if(has_trait(TRAIT_PACIFISM)) to_chat(src, "You gently let go of [throwable_mob].") var/turf/start_T = get_turf(loc) //Get the start and target tile for the descriptors var/turf/end_T = get_turf(target) @@ -170,7 +170,7 @@ thrown_thing = I dropItemToGround(I) - if(has_disability(DISABILITY_PACIFISM) && I.throwforce) + if(has_trait(TRAIT_PACIFISM) && I.throwforce) to_chat(src, "You set [I] down gently on the ground.") return @@ -302,10 +302,10 @@ /mob/living/carbon/proc/cuff_resist(obj/item/I, breakouttime = 600, cuff_break = 0) - if(I.being_removed) + if(I.item_flags & BEING_REMOVED) to_chat(src, "You're already attempting to remove [I]!") return - I.being_removed = TRUE + I.item_flags |= BEING_REMOVED breakouttime = I.breakouttime if(!cuff_break) visible_message("[src] attempts to remove [I]!") @@ -326,7 +326,7 @@ else if(cuff_break == INSTANT_CUFFBREAK) clear_cuffs(I, cuff_break) - I.being_removed = FALSE + I.item_flags &= ~BEING_REMOVED /mob/living/carbon/proc/uncuff() if (handcuffed) @@ -402,7 +402,7 @@ dropItemToGround(I) var/modifier = 0 - if(has_disability(DISABILITY_CLUMSY)) + if(has_trait(TRAIT_CLUMSY)) modifier -= 40 //Clumsy people are more likely to hit themselves -Honk! switch(rand(1,100)+modifier) //91-100=Nothing special happens @@ -720,7 +720,7 @@ if(health <= HEALTH_THRESHOLD_DEAD) death() return - if(IsUnconscious() || IsSleeping() || getOxyLoss() > 50 || (status_flags & FAKEDEATH) || health <= HEALTH_THRESHOLD_FULLCRIT) + if(IsUnconscious() || IsSleeping() || getOxyLoss() > 50 || (has_trait(TRAIT_FAKEDEATH)) || health <= HEALTH_THRESHOLD_FULLCRIT) stat = UNCONSCIOUS blind_eyes(1) else @@ -767,7 +767,7 @@ reagents.addiction_list = list() cure_all_traumas(TRUE, TRUE) ..() - // heal ears after healing disabilities, since ears check DISABILITY_DEAF disability + // heal ears after healing traits, since ears check TRAIT_DEAF trait // when healing. restoreEars() @@ -852,3 +852,6 @@ .["Hallucinate"] = "?_src_=vars;[HrefToken()];hallucinate=[REF(src)]" .["Give brain trauma"] = "?_src_=vars;[HrefToken()];givetrauma=[REF(src)]" .["Cure brain traumas"] = "?_src_=vars;[HrefToken()];curetraumas=[REF(src)]" + +/mob/living/carbon/can_resist() + return bodyparts.len > 2 && ..() diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm index edf07d9615..277305343f 100644 --- a/code/modules/mob/living/carbon/carbon_defense.dm +++ b/code/modules/mob/living/carbon/carbon_defense.dm @@ -248,7 +248,7 @@ to_chat(M, "You can't put them out with just your bare hands!") return - if(health >= 0 && !(status_flags & FAKEDEATH)) + if(health >= 0 && !(has_trait(TRAIT_FAKEDEATH))) if(lying) if(buckled) @@ -305,12 +305,12 @@ if(eyes.eye_damage > 20) if(prob(eyes.eye_damage - 20)) - if(!has_disability(DISABILITY_NEARSIGHT)) + if(!has_trait(TRAIT_NEARSIGHT)) to_chat(src, "Your eyes start to burn badly!") become_nearsighted(EYE_DAMAGE) else if(prob(eyes.eye_damage - 25)) - if(!has_disability(DISABILITY_BLIND)) + if(!has_trait(TRAIT_BLIND)) to_chat(src, "You can't see anything!") become_blind(EYE_DAMAGE) diff --git a/code/modules/mob/living/carbon/examine.dm b/code/modules/mob/living/carbon/examine.dm index 99bb6d2250..26fc9ce245 100644 --- a/code/modules/mob/living/carbon/examine.dm +++ b/code/modules/mob/living/carbon/examine.dm @@ -67,7 +67,7 @@ else msg += "[t_He] [t_is] severely deformed!\n" - if(has_disability(DISABILITY_DUMB)) + if(has_trait(TRAIT_DUMB)) msg += "[t_He] seem[p_s()] to be clumsy and unable to think.\n" if(fire_stacks > 0) diff --git a/code/modules/mob/living/carbon/human/death.dm b/code/modules/mob/living/carbon/human/death.dm index 83006e59b0..0b4d5f6098 100644 --- a/code/modules/mob/living/carbon/human/death.dm +++ b/code/modules/mob/living/carbon/human/death.dm @@ -42,13 +42,13 @@ INVOKE_ASYNC(is_devil(src), /datum/antagonist/devil.proc/beginResurrectionCheck, src) /mob/living/carbon/human/proc/makeSkeleton() - status_flags |= DISFIGURED + add_trait(TRAIT_DISFIGURED, TRAIT_GENERIC) set_species(/datum/species/skeleton) return 1 /mob/living/carbon/proc/Drain() become_husk(CHANGELING_DRAIN) - add_disability(DISABILITY_NOCLONE, CHANGELING_DRAIN) + add_trait(TRAIT_NOCLONE, CHANGELING_DRAIN) blood_volume = 0 return 1 diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 046e5e797d..90128a022d 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -91,7 +91,6 @@ if(istype(dicc) && dicc.is_exposed()) msg += "[dicc.desc]\n" //END OF CIT CHANGES - //Status effects msg += status_effect_examines() @@ -105,7 +104,7 @@ msg += "[t_He] [t_is] twitching ever so slightly.\n" var/appears_dead = 0 - if(stat == DEAD || (status_flags & FAKEDEATH)) + if(stat == DEAD || (has_trait(TRAIT_FAKEDEATH))) appears_dead = 1 if(suiciding) msg += "[t_He] appear[p_s()] to have committed suicide... there is no hope of recovery.\n" @@ -251,14 +250,13 @@ var/datum/belly/B = vore_organs[I] msg += B.get_examine_msg() - msg += "
" if(!appears_dead) if(stat == UNCONSCIOUS) msg += "[t_He] [t_is]n't responding to anything around [t_him] and seem[p_s()] to be asleep.\n" else - if(has_disability(DISABILITY_DUMB)) + if(has_trait(TRAIT_DUMB)) msg += "[t_He] [t_has] a stupid expression on [t_his] face.\n" if(InCritical()) msg += "[t_He] [t_is] barely conscious.\n" @@ -324,7 +322,7 @@ msg += "\[Add comment\]\n" if(print_flavor_text() && get_visible_name() != "Unknown")//Are we sure we know who this is? Don't show flavor text unless we can recognize them. Prevents certain metagaming with impersonation. msg += "[print_flavor_text()]\n" - + msg += "*---------*
" to_chat(user, msg) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 434c24874c..79aa49aeb1 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -24,9 +24,9 @@ create_internal_organs() //most of it is done in set_species now, this is only for parent call handcrafting = new() - + . = ..() - + AddComponent(/datum/component/redirect, list(COMSIG_COMPONENT_CLEAN_ACT), CALLBACK(src, .proc/clean_blood)) /mob/living/carbon/human/OpenCraftingMenu() @@ -55,11 +55,7 @@ stat("Internal Atmosphere Info", internal.name) stat("Tank Pressure", internal.air_contents.return_pressure()) stat("Distribution Pressure", internal.distribute_pressure) - - var/mob/living/simple_animal/borer/B = has_brain_worms() - if(B && B.controlling) - stat("Chemicals", B.chemicals) - +// var/mob/living/simple_animal/borer/B = has_brain_worms() if(mind) var/datum/antagonist/changeling/changeling = mind.has_antag_datum(/datum/antagonist/changeling) if(changeling) @@ -208,13 +204,13 @@ var/obj/item/I = locate(href_list["embedded_object"]) in L.embedded_objects if(!I || I.loc != src) //no item, no limb, or item is not in limb or in the person anymore return - var/time_taken = I.embedded_unsafe_removal_time*I.w_class + var/time_taken = I.embedding.embedded_unsafe_removal_time*I.w_class usr.visible_message("[usr] attempts to remove [I] from their [L.name].","You attempt to remove [I] from your [L.name]... (It will take [DisplayTimeText(time_taken)].)") if(do_after(usr, time_taken, needhand = 1, target = src)) if(!I || !L || I.loc != src || !(I in L.embedded_objects)) return L.embedded_objects -= I - L.receive_damage(I.embedded_unsafe_removal_pain_multiplier*I.w_class)//It hurts to rip it out, get surgery you dingus. + L.receive_damage(I.embedding.embedded_unsafe_removal_pain_multiplier*I.w_class)//It hurts to rip it out, get surgery you dingus. I.forceMove(get_turf(src)) usr.put_in_hands(I) usr.emote("scream") @@ -360,7 +356,7 @@ // Checks the user has security clearence before allowing them to change arrest status via hud, comment out to enable all access var/allowed_access = null var/obj/item/clothing/glasses/G = H.glasses - if (!G.emagged) + if (!(G.obj_flags |= EMAGGED)) if(H.wear_id) var/list/access = H.wear_id.GetAccess() if(ACCESS_SEC_DOORS in access) @@ -577,8 +573,8 @@ threatcount += 2 //Check for dresscode violations - if(istype(head, /obj/item/clothing/head/wizard) || istype(head, /obj/item/clothing/head/helmet/space/hardsuit/wizard)) - threatcount += 2 + if(istype(head, /obj/item/clothing/head/wizard) || istype(head, /obj/item/clothing/head/helmet/space/hardsuit/wizard) || istype(head, /obj/item/clothing/head/helmet/space/hardsuit/shielded/wizard) || istype(head, /obj/item/clothing/head/helmet/space/hardsuit/syndi) || istype(head, /obj/item/clothing/head/helmet/space/hardsuit/shielded/syndi)) + threatcount += 6 //fuk u antags <3 //Check for nonhuman scum if(dna && dna.species.id && !(dna.species.id in list("human" , "lizard", "mammal", "avian", "aquatic", "insect"))) @@ -588,9 +584,13 @@ if(isloyal()) threatcount -= 1 - //Agent cards lower threatlevel. + //Agent cards lower threatlevel. But only enough to openly carry without being busted. if(istype(idcard, /obj/item/card/id/syndicate)) - threatcount -= 5 + threatcount -= 2 + + //CentCom cards lower threat level. Even to emagged bots. + if(istype(idcard, /obj/item/card/id/centcom) || istype(idcard, /obj/item/card/id/ert)) + threatcount -= 10 return threatcount @@ -621,7 +621,7 @@ /mob/living/carbon/human/proc/do_cpr(mob/living/carbon/C) CHECK_DNA_AND_SPECIES(C) - if(C.stat == DEAD || (C.status_flags & FAKEDEATH)) + if(C.stat == DEAD || (C.has_trait(TRAIT_FAKEDEATH))) to_chat(src, "[C.name] is dead!") return if(is_mouth_covered()) @@ -1032,3 +1032,17 @@ /mob/living/carbon/human/species/zombie/krokodil_addict race = /datum/species/krokodil_addict + +//CITADEL EDIT - TODO: Enable people to set custom races +/mob/living/carbon/human/species/mammal + race = /datum/species/mammal +/mob/living/carbon/human/species/avian + race = /datum/species/avian +/mob/living/carbon/human/species/aquatic + race = /datum/species/aquatic +/mob/living/carbon/human/species/insect + race = /datum/species/insect +/mob/living/carbon/human/species/xeno + race = /datum/species/xeno +/mob/living/carbon/human/species/guilmon + race = /datum/species/guilmon diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index 5a184331e9..918b66c6c5 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -28,7 +28,7 @@ if(bp && istype(bp , /obj/item/clothing)) var/obj/item/clothing/C = bp if(C.body_parts_covered & def_zone.body_part) - protection += C.armor[d_type] + protection += C.armor.getRating(d_type) return protection /mob/living/carbon/human/on_hit(obj/item/projectile/P) @@ -135,13 +135,13 @@ else if(I) if(I.throw_speed >= EMBED_THROWSPEED_THRESHOLD) if(can_embed(I)) - if(prob(I.embed_chance) && !(dna && (PIERCEIMMUNE in dna.species.species_traits))) + if(prob(I.embedding.embed_chance) && !(dna && (PIERCEIMMUNE in dna.species.species_traits))) throw_alert("embeddedobject", /obj/screen/alert/embeddedobject) var/obj/item/bodypart/L = pick(bodyparts) L.embedded_objects |= I I.add_mob_blood(src)//it embedded itself in you, of course it's bloody! I.forceMove(src) - L.receive_damage(I.w_class*I.embedded_impact_pain_multiplier) + L.receive_damage(I.w_class*I.embedding.embedded_impact_pain_multiplier) visible_message("[I] embeds itself in [src]'s [L.name]!","[I] embeds itself in your [L.name]!") hitpush = FALSE skipcatch = TRUE //can't catch the now embedded item @@ -149,7 +149,7 @@ return ..() /mob/living/carbon/human/grabbedby(mob/living/carbon/user, supress_message = 0) - if(user == src && pulling && !pulling.anchored && grab_state >= GRAB_AGGRESSIVE && (has_disability(DISABILITY_FAT)) && ismonkey(pulling)) + if(user == src && pulling && !pulling.anchored && grab_state >= GRAB_AGGRESSIVE && (has_trait(TRAIT_FAT)) && ismonkey(pulling)) devour_mob(pulling) else ..() @@ -602,7 +602,7 @@ facial_hair_style = "Shaved" hair_style = "Bald" update_hair() - status_flags |= DISFIGURED + add_trait(TRAIT_DISFIGURED, TRAIT_GENERIC) update_damage_overlays() diff --git a/code/modules/mob/living/carbon/human/human_helpers.dm b/code/modules/mob/living/carbon/human/human_helpers.dm index 46212698b2..c5e4581253 100644 --- a/code/modules/mob/living/carbon/human/human_helpers.dm +++ b/code/modules/mob/living/carbon/human/human_helpers.dm @@ -56,7 +56,7 @@ if( head && (head.flags_inv&HIDEFACE) ) return if_no_face //Likewise for hats var/obj/item/bodypart/O = get_bodypart("head") - if( !O || (status_flags&DISFIGURED) || (O.brutestate+O.burnstate)>2 || cloneloss>50 || !real_name ) //disfigured. use id-name if possible + if( !O || (has_trait(TRAIT_DISFIGURED)) || (O.brutestate+O.burnstate)>2 || cloneloss>50 || !real_name ) //disfigured. use id-name if possible return if_no_face return real_name @@ -92,7 +92,7 @@ /mob/living/carbon/human/IsAdvancedToolUser() - if(has_disability(DISABILITY_MONKEYLIKE)) + if(has_trait(TRAIT_MONKEYLIKE)) return FALSE return TRUE//Humans can use guns and such diff --git a/code/modules/mob/living/carbon/human/interactive.dm b/code/modules/mob/living/carbon/human/interactive.dm index 426bc39907..1ae8e48dc7 100644 --- a/code/modules/mob/living/carbon/human/interactive.dm +++ b/code/modules/mob/living/carbon/human/interactive.dm @@ -339,7 +339,7 @@ if(TRAITS & TRAIT_SMART) smartness = 75 else if(TRAITS & TRAIT_DUMB) - add_disability(DISABILITY_CLUMSY, GENETIC_MUTATION) + add_trait(TRAIT_CLUMSY, GENETIC_MUTATION) smartness = 25 if(TRAITS & TRAIT_MEAN) @@ -753,7 +753,6 @@ timeout++ /mob/living/carbon/human/interactive/proc/getGoodPath(target,var/maxtries=512) - set background = 1 var/turf/end = get_turf(target) var/turf/current = get_turf(src) @@ -779,7 +778,6 @@ return path /mob/living/carbon/human/interactive/proc/walk2derpless(target) - set background = 1 if(!target) return 0 diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm index 4dd26ebe6b..abd86e7bfc 100644 --- a/code/modules/mob/living/carbon/human/inventory.dm +++ b/code/modules/mob/living/carbon/human/inventory.dm @@ -187,7 +187,7 @@ if(G.tint) update_tint() if(G.vision_correction) - if(has_disability(DISABILITY_NEARSIGHT)) + if(has_trait(TRAIT_NEARSIGHT)) overlay_fullscreen("nearsighted", /obj/screen/fullscreen/impaired, 1) adjust_eye_damage(0) if(G.vision_flags || G.darkness_view || G.invis_override || G.invis_view || !isnull(G.lighting_alpha)) diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 65d47694af..6f187d0351 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -22,15 +22,9 @@ /mob/living/carbon/human/Life() set invisibility = 0 - set background = BACKGROUND_ENABLED - if (notransform) return - //citadel code - if(stat != DEAD) - handle_arousal() - if(..()) //not dead handle_active_genes() @@ -54,15 +48,11 @@ /mob/living/carbon/human/calculate_affecting_pressure(pressure) if((wear_suit && (wear_suit.flags_1 & STOPSPRESSUREDMAGE_1)) && (head && (head.flags_1 & STOPSPRESSUREDMAGE_1))) return ONE_ATMOSPHERE - if(ismob(loc)) - return ONE_ATMOSPHERE - if(istype(loc, /obj/item/device/dogborg/sleeper)) - return ONE_ATMOSPHERE else return pressure -/mob/living/carbon/human/handle_disabilities() +/mob/living/carbon/human/handle_traits() if(eye_blind) //blindness, heals slowly over time if(tinttotal >= TINT_BLIND) //covering your eyes heals blurry eyes faster adjust_blindness(-3) @@ -71,7 +61,7 @@ else if(eye_blurry) //blurry eyes heal slowly adjust_blurriness(-1) - if(has_disability(DISABILITY_PACIFISM) && a_intent == INTENT_HARM) + if(has_trait(TRAIT_PACIFISM) && a_intent == INTENT_HARM) to_chat(src, "You don't feel like harming anybody.") a_intent_change(INTENT_HELP) @@ -127,12 +117,12 @@ /mob/living/carbon/human/proc/get_thermal_protection() var/thermal_protection = 0 //Simple check to estimate how protected we are against multiple temperatures - +//CITADEL EDIT Vore code required overrides if(istype(loc, /obj/item/device/dogborg/sleeper)) return FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT if(ismob(loc)) return FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT - +//END EDIT if(wear_suit) if(wear_suit.max_heat_protection_temperature >= FIRE_SUIT_MAX_TEMP_PROTECT) thermal_protection += (wear_suit.max_heat_protection_temperature*0.7) @@ -242,12 +232,15 @@ if(dna.check_mutation(COLDRES)) return TRUE //Fully protected from the cold. + if(RESISTCOLD in dna.species.species_traits) + return TRUE + +//CITADEL EDIT Mandatory for vore code. if(istype(loc, /obj/item/device/dogborg/sleeper)) return 1 //freezing to death in sleepers ruins fun. if(ismob(loc)) return 1 //because lazy and being inside somemone insulates you from space - if(RESISTCOLD in dna.species.species_traits) - return TRUE +//END EDIT temperature = max(temperature, 2.7) //There is an occasional bug where the temperature is miscalculated in ares with a small amount of gas on them, so this is necessary to ensure that that bug does not affect this calculation. Space's temperature is 2.7K and most suits that are intended to protect against any cold, protect down to 2.0K. var/thermal_protection_flags = get_cold_protection_flags(temperature) @@ -308,12 +301,12 @@ for(var/X in bodyparts) var/obj/item/bodypart/BP = X for(var/obj/item/I in BP.embedded_objects) - if(prob(I.embedded_pain_chance)) - BP.receive_damage(I.w_class*I.embedded_pain_multiplier) + if(prob(I.embedding.embedded_pain_chance)) + BP.receive_damage(I.w_class*I.embedding.embedded_pain_multiplier) to_chat(src, "[I] embedded in your [BP.name] hurts!") - if(prob(I.embedded_fall_chance)) - BP.receive_damage(I.w_class*I.embedded_fall_pain_multiplier) + if(prob(I.embedding.embedded_fall_chance)) + BP.receive_damage(I.w_class*I.embedding.embedded_fall_pain_multiplier) BP.embedded_objects -= I I.forceMove(drop_location()) visible_message("[I] falls out of [name]'s [BP.name]!","[I] falls out of your [BP.name]!") diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 987484bc8f..16c7945773 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -291,12 +291,13 @@ GLOBAL_LIST_EMPTY(roundstart_races) for(var/datum/disease/A in C.viruses) A.cure(FALSE) - +//CITADEL EDIT if(NOAROUSAL in species_traits) C.canbearoused = FALSE else if(C.client) C.canbearoused = C.client.prefs.arousable +// EDIT ENDS /datum/species/proc/on_species_loss(mob/living/carbon/C) if(C.dna.species.exotic_bloodtype) @@ -311,7 +312,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) if(!HD) //Decapitated return - if(H.has_disability(DISABILITY_HUSK)) + if(H.has_trait(TRAIT_HUSK)) return var/datum/sprite_accessory/S var/list/standing = list() @@ -452,7 +453,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) var/obj/item/bodypart/head/HD = H.get_bodypart("head") - if(HD && !(H.has_disability(DISABILITY_HUSK))) + if(HD && !(H.has_trait(TRAIT_HUSK))) // lipstick if(H.lip_style && (LIPS in species_traits)) var/mutable_appearance/lip_overlay = mutable_appearance('icons/mob/human_face.dmi', "lips_[H.lip_style]", -BODY_LAYER) @@ -463,18 +464,19 @@ GLOBAL_LIST_EMPTY(roundstart_races) standing += lip_overlay // eyes - var/has_eyes = H.getorganslot(ORGAN_SLOT_EYES) - var/mutable_appearance/eye_overlay - if(!has_eyes) - eye_overlay = mutable_appearance('icons/mob/human_face.dmi', "eyes_missing", -BODY_LAYER) - else - eye_overlay = mutable_appearance('icons/mob/human_face.dmi', "eyes", -BODY_LAYER) - if((EYECOLOR in species_traits) && has_eyes) - eye_overlay.color = "#" + H.eye_color - if(OFFSET_FACE in H.dna.species.offset_features) - eye_overlay.pixel_x += H.dna.species.offset_features[OFFSET_FACE][1] - eye_overlay.pixel_y += H.dna.species.offset_features[OFFSET_FACE][2] - standing += eye_overlay + if(!(NOEYES in species_traits)) + var/has_eyes = H.getorganslot(ORGAN_SLOT_EYES) + var/mutable_appearance/eye_overlay + if(!has_eyes) + eye_overlay = mutable_appearance('icons/mob/human_face.dmi', "eyes_missing", -BODY_LAYER) + else + eye_overlay = mutable_appearance('icons/mob/human_face.dmi', "eyes", -BODY_LAYER) + if((EYECOLOR in species_traits) && has_eyes) + eye_overlay.color = "#" + H.eye_color + if(OFFSET_FACE in H.dna.species.offset_features) + eye_overlay.pixel_x += H.dna.species.offset_features[OFFSET_FACE][1] + eye_overlay.pixel_y += H.dna.species.offset_features[OFFSET_FACE][2] + standing += eye_overlay //Underwear, Undershirts & Socks if(!(NO_UNDERWEAR in species_traits)) @@ -504,11 +506,14 @@ GLOBAL_LIST_EMPTY(roundstart_races) /datum/species/proc/handle_mutant_bodyparts(mob/living/carbon/human/H, forced_colour) var/list/bodyparts_to_add = mutant_bodyparts.Copy() - var/list/relevant_layers = list(BODY_BEHIND_LAYER, BODY_ADJ_LAYER, BODY_FRONT_LAYER, BODY_TAUR_LAYER) + var/list/relevent_layers = list(BODY_BEHIND_LAYER, BODY_ADJ_LAYER, BODY_FRONT_LAYER, BODY_TAUR_LAYER) var/list/standing = list() - for(var/L in relevant_layers) - H.remove_overlay(L) + H.remove_overlay(BODY_BEHIND_LAYER) + H.remove_overlay(BODY_ADJ_LAYER) + H.remove_overlay(BODY_FRONT_LAYER) + //CITADEL EDIT - Do not forget to add this to relevent_layers list just above too! + H.remove_overlay(BODY_TAUR_LAYER) if(!mutant_bodyparts) return @@ -572,6 +577,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) else if ("wings" in mutant_bodyparts) bodyparts_to_add -= "wings_open" +//CITADEL EDIT //Race specific bodyparts: //Xenos if("xenodorsal" in mutant_bodyparts) @@ -602,6 +608,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) if("taur" in mutant_bodyparts) if(!H.dna.features["taur"] || H.dna.features["taur"] == "None") bodyparts_to_add -= "taur" +//END EDIT //Digitigrade legs are stuck in the phantom zone between true limbs and mutant bodyparts. Mainly it just needs more agressive updating than most limbs. var/update_needed = FALSE @@ -634,7 +641,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) var/image/I - for(var/layer in relevant_layers) + for(var/layer in relevent_layers) var/layertext = mutant_bodyparts_layertext(layer) for(var/bodypart in bodyparts_to_add) @@ -668,8 +675,10 @@ GLOBAL_LIST_EMPTY(roundstart_races) S = GLOB.wings_open_list[H.dna.features["wings"]] if("legs") S = GLOB.legs_list[H.dna.features["legs"]] + if("moth_wings") + S = GLOB.moth_wings_list[H.dna.features["moth_wings"]] - //Mammal Bodyparts (Canid/Felid, others maybe in the future) + //Mammal Bodyparts if("mam_tail") S = GLOB.mam_tails_list[H.dna.features["mam_tail"]] if("mam_waggingtail") @@ -689,13 +698,6 @@ GLOBAL_LIST_EMPTY(roundstart_races) if("xenotail") S = GLOB.xeno_tail_list[H.dna.features["xenotail"]] - //Slimecoon Bodyparts - /* if("slimecoontail") - S = /datum/sprite_accessory/slimecoon_tail - if("slimecoonears") - S = /datum/sprite_accessory/slimecoon_ears - if("slimecoonsnout") - S = /datum/sprite_accessory/slimecoon_snout*/ if(!S || S.icon_state == "none") continue @@ -723,7 +725,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) if(S.center) accessory_overlay = center_image(accessory_overlay, S.dimension_x, S.dimension_y) - if(!(H.has_disability(DISABILITY_HUSK))) + if(!(H.has_trait(TRAIT_HUSK))) if(!forced_colour) switch(S.color_src) if(MUTCOLORS) @@ -837,12 +839,13 @@ GLOBAL_LIST_EMPTY(roundstart_races) else I.color = "#[H.hair_color]" standing += I - H.overlays_standing[layer] = standing.Copy() standing = list() - for(var/L in relevant_layers) - H.apply_overlay(L) + H.apply_overlay(BODY_BEHIND_LAYER) + H.apply_overlay(BODY_ADJ_LAYER) + H.apply_overlay(BODY_FRONT_LAYER) + H.apply_overlay(BODY_TAUR_LAYER) // CITADEL EDIT //This exists so sprite accessories can still be per-layer without having to include that layer's @@ -1101,17 +1104,17 @@ GLOBAL_LIST_EMPTY(roundstart_races) /datum/species/proc/handle_digestion(mob/living/carbon/human/H) - //The fucking DISABILITY_FAT mutation is the dumbest shit ever. It makes the code so difficult to work with - if(H.has_disability(DISABILITY_FAT))//I share your pain, past coder. + //The fucking TRAIT_FAT mutation is the dumbest shit ever. It makes the code so difficult to work with + if(H.has_trait(TRAIT_FAT))//I share your pain, past coder. if(H.overeatduration < 100) to_chat(H, "You feel fit again!") - H.remove_disability(DISABILITY_FAT, OBESITY) + H.remove_trait(TRAIT_FAT, OBESITY) H.update_inv_w_uniform() H.update_inv_wear_suit() else if(H.overeatduration > 500) to_chat(H, "You suddenly feel blubbery!") - H.add_disability(DISABILITY_FAT, OBESITY) + H.add_trait(TRAIT_FAT, OBESITY) H.update_inv_w_uniform() H.update_inv_wear_suit() @@ -1219,13 +1222,13 @@ GLOBAL_LIST_EMPTY(roundstart_races) flight = 1 if(!flightpack) //Check for chemicals and innate speedups and slowdowns if we're moving using our body and not a flying suit - if(H.status_flags & GOTTAGOFAST) + if(H.has_trait(TRAIT_GOTTAGOFAST)) . -= 1 - if(H.status_flags & GOTTAGOREALLYFAST) + if(H.has_trait(TRAIT_GOTTAGOREALLYFAST)) . -= 2 . += speedmod - if(H.status_flags & IGNORESLOWDOWN) + if(H.has_trait(TRAIT_IGNORESLOWDOWN)) ignoreslow = 1 if(H.has_gravity()) @@ -1268,7 +1271,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) . += (health_deficiency / 25) if((hungry >= 70) && !flight) //Being hungry won't stop you from using flightpack controls/flapping your wings although it probably will in the wing case but who cares. . += hungry / 50 - if(H.has_disability(DISABILITY_FAT)) + if(H.has_trait(TRAIT_FAT)) . += (1.5 - flight) if(H.bodytemperature < BODYTEMP_COLD_DAMAGE_LIMIT) . += (BODYTEMP_COLD_DAMAGE_LIMIT - H.bodytemperature) / COLD_SLOWDOWN_FACTOR @@ -1283,7 +1286,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) ////////////////// /datum/species/proc/help(mob/living/carbon/human/user, mob/living/carbon/human/target, datum/martial_art/attacker_style) - if(target.health >= 0 && !(target.status_flags & FAKEDEATH)) + if(target.health >= 0 && !(target.has_trait(TRAIT_FAKEDEATH))) target.help_shake_act(user) if(target != user) add_logs(user, target, "shaked") @@ -1314,7 +1317,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) /datum/species/proc/harm(mob/living/carbon/human/user, mob/living/carbon/human/target, datum/martial_art/attacker_style) - if(user.has_disability(DISABILITY_PACIFISM)) + if(user.has_trait(TRAIT_PACIFISM)) to_chat(user, "You don't want to harm [target]!") return FALSE if(target.check_block()) @@ -1369,6 +1372,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) target.forcesay(GLOB.hit_appends) /datum/species/proc/disarm(mob/living/carbon/human/user, mob/living/carbon/human/target, datum/martial_art/attacker_style) +// CITADEL EDIT slap mouthy gits var/aim_for_mouth = user.zone_selected == "mouth" var/target_on_help_and_unarmed = target.a_intent == INTENT_HELP && !target.get_active_held_item() var/target_aiming_for_mouth = target.zone_selected == "mouth" @@ -1380,7 +1384,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) "You hear a slap.") target.endTailWag() return FALSE - else if(target.check_block()) + else if(target.check_block()) //END EDIT target.visible_message("[target] blocks [user]'s disarm attempt!") return 0 if(attacker_style && attacker_style.disarm_act(user,target)) diff --git a/code/modules/mob/living/carbon/human/species_types/flypeople.dm b/code/modules/mob/living/carbon/human/species_types/flypeople.dm index 7b37e5fc42..282e9044b4 100644 --- a/code/modules/mob/living/carbon/human/species_types/flypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/flypeople.dm @@ -2,13 +2,13 @@ name = "Flyperson" id = "fly" say_mod = "buzzes" - species_traits = list(SPECIES_ORGANIC) + species_traits = list(SPECIES_ORGANIC, NOEYES) mutanttongue = /obj/item/organ/tongue/fly mutantliver = /obj/item/organ/liver/fly mutantstomach = /obj/item/organ/stomach/fly meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/fly disliked_food = null - liked_food = NONE + liked_food = GROSS /datum/species/fly/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H) if(chem.id == "pestkiller") diff --git a/code/modules/mob/living/carbon/human/species_types/furrypeople.dm b/code/modules/mob/living/carbon/human/species_types/furrypeople.dm index b8d9713d37..0e00975a5a 100644 --- a/code/modules/mob/living/carbon/human/species_types/furrypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/furrypeople.dm @@ -67,8 +67,8 @@ id = "insect" default_color = "BCAC9B" species_traits = list(MUTCOLORS,EYECOLOR,LIPS,HAIR,SPECIES_ORGANIC) - mutant_bodyparts = list("mam_body_markings", "mam_ears", "mam_tail", "taur") - default_features = list("mcolor" = "FFF","mcolor2" = "FFF","mcolor3" = "FFF", "mam_body_markings" = "moth", "mam_tail" = "None", "mam_ears" = "None") + mutant_bodyparts = list("mam_body_markings", "mam_ears", "mam_tail", "taur", "moth_wings") + default_features = list("mcolor" = "FFF","mcolor2" = "FFF","mcolor3" = "FFF", "mam_body_markings" = "moth", "mam_tail" = "None", "mam_ears" = "None", "moth_wings" = "None") attack_verb = "flutter" //wat? attack_sound = 'sound/weapons/slash.ogg' miss_sound = 'sound/weapons/slashmiss.ogg' diff --git a/code/modules/mob/living/carbon/human/species_types/golems.dm b/code/modules/mob/living/carbon/human/species_types/golems.dm index cc47bd64b7..72b3fe1139 100644 --- a/code/modules/mob/living/carbon/human/species_types/golems.dm +++ b/code/modules/mob/living/carbon/human/species_types/golems.dm @@ -727,7 +727,7 @@ /obj/structure/cloth_pile/proc/revive() if(QDELETED(src) || QDELETED(cloth_golem)) //QDELETED also checks for null, so if no cloth golem is set this won't runtime return - if(cloth_golem.suiciding || cloth_golem.has_disability(DISABILITY_NOCLONE)) + if(cloth_golem.suiciding || cloth_golem.has_trait(TRAIT_NOCLONE)) QDEL_NULL(cloth_golem) return diff --git a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm index 6b1a35ea04..3d76f28750 100644 --- a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm @@ -10,6 +10,9 @@ damage_overlay_type = "" var/datum/action/innate/regenerate_limbs/regenerate_limbs liked_food = MEAT + coldmod = 6 // = 3x cold damage + heatmod = 0.5 // = 1/4x heat damage + burnmod = 0.5 // = 1/2x generic burn damage /datum/species/jelly/on_species_loss(mob/living/carbon/C) if(regenerate_limbs) @@ -17,6 +20,7 @@ C.remove_language(/datum/language/slime, TRUE) C.faction -= "slime" ..() + C.faction -= "slime" /datum/species/jelly/on_species_gain(mob/living/carbon/C, datum/species/old_species) ..() @@ -24,6 +28,7 @@ if(ishuman(C)) regenerate_limbs = new regenerate_limbs.Grant(C) + C.faction |= "slime" /datum/species/jelly/spec_life(mob/living/carbon/human/H) if(H.stat == DEAD) //can't farm slime jelly from a dead slime/jelly person indefinitely @@ -42,7 +47,8 @@ to_chat(H, "You feel drained!") if(H.blood_volume < BLOOD_VOLUME_BAD) Cannibalize_Body(H) - H.update_action_buttons_icon() + if(regenerate_limbs) + regenerate_limbs.UpdateButtonIcon() /datum/species/jelly/proc/Cannibalize_Body(mob/living/carbon/human/H) var/list/limbs_to_consume = list("r_arm", "l_arm", "r_leg", "l_leg") - H.get_missing_limbs() @@ -97,10 +103,11 @@ return to_chat(H, "...but there is not enough of you to go around! You must attain more mass to heal!") -////////////////////////////////////////////////////////SLIME PEOPLE/////////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////SLIMEPEOPLE/////////////////////////////////////////////////////////////////// + +//Slime people are able to split like slimes, retaining a single mind that can swap between bodies at will, even after death. /datum/species/jelly/slime - // Humans mutated by slime mutagen, produced from green slimes. They are not targetted by slimes. name = "Slimeperson" id = "slime" default_color = "00FFFF" @@ -109,9 +116,6 @@ hair_color = "mutcolor" hair_alpha = 150 ignored_by = list(/mob/living/simple_animal/slime) - burnmod = 0.5 - coldmod = 2 - heatmod = 0.5 var/datum/action/innate/split_body/slime_split var/list/mob/living/carbon/bodies var/datum/action/innate/swap_body/swap_body @@ -124,14 +128,13 @@ bodies -= C // This means that the other bodies maintain a link // so if someone mindswapped into them, they'd still be shared. bodies = null - C.faction -= "slime" C.blood_volume = min(C.blood_volume, BLOOD_VOLUME_NORMAL) ..() /datum/species/jelly/slime/on_species_gain(mob/living/carbon/C, datum/species/old_species) ..() if(ishuman(C)) - /*slime_split = new + /* slime_split = new slime_split.Grant(C) swap_body = new swap_body.Grant(C)*/ @@ -140,7 +143,7 @@ bodies = list(C) else bodies |= C - + /datum/species/jelly/slime/spec_death(gibbed, mob/living/carbon/human/H) if(slime_split) var/datum/mind/M @@ -159,7 +162,7 @@ bodies = old_species.bodies /datum/species/jelly/slime/spec_life(mob/living/carbon/human/H) - /*if(H.blood_volume >= BLOOD_VOLUME_SLIME_SPLIT) +/* if(H.blood_volume >= BLOOD_VOLUME_SLIME_SPLIT) if(prob(5)) to_chat(H, "You feel very bloated!")*/ if(H.nutrition >= NUTRITION_LEVEL_WELL_FED) @@ -237,7 +240,7 @@ /datum/action/innate/swap_body name = "Swap Body" - check_flags = AB_CHECK_CONSCIOUS + check_flags = NONE button_icon_state = "slimeswap" icon_icon = 'icons/mob/actions/actions_slime.dmi' background_icon_state = "bg_alien" @@ -250,6 +253,7 @@ ui_interact(owner) /datum/action/innate/swap_body/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.always_state) + ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open) if(!ui) ui = new(user, src, ui_key, "slime_swap_body", name, 400, 400, master_ui, state) @@ -334,14 +338,356 @@ return if(selected.stat != CONSCIOUS) return - swap_to_dupe(M, selected) /datum/action/innate/swap_body/proc/swap_to_dupe(datum/mind/M, mob/living/carbon/human/dupe) - M.current.visible_message("[M.current] \ - stops moving and starts staring vacantly into space.", - "You stop moving this body...") + if(M.current.stat == CONSCIOUS) + M.current.visible_message("[M.current] \ + stops moving and starts staring vacantly into space.", + "You stop moving this body...") + else + to_chat(M.current, "You abandon this body...") M.transfer_to(dupe) dupe.visible_message("[dupe] blinks and looks \ around.", "...and move this one instead.") + + +///////////////////////////////////LUMINESCENTS////////////////////////////////////////// + +//Luminescents are able to consume and use slime extracts, without them decaying. + +/datum/species/jelly/luminescent + name = "Luminescent" + id = "lum" + say_mod = "says" + var/glow_intensity = LUMINESCENT_DEFAULT_GLOW + var/obj/effect/dummy/luminescent_glow/glow + var/obj/item/slime_extract/current_extract + var/datum/action/innate/integrate_extract/integrate_extract + var/datum/action/innate/use_extract/extract_minor + var/datum/action/innate/use_extract/major/extract_major + var/extract_cooldown = 0 + +/datum/species/jelly/luminescent/on_species_loss(mob/living/carbon/C) + ..() + if(current_extract) + current_extract.forceMove(C.drop_location()) + current_extract = null + qdel(glow) + if(integrate_extract) + integrate_extract.Remove(C) + if(extract_minor) + extract_minor.Remove(C) + if(extract_major) + extract_major.Remove(C) + +/datum/species/jelly/luminescent/on_species_gain(mob/living/carbon/C, datum/species/old_species) + ..() + glow = new(C) + update_glow(C) + integrate_extract = new(src) + integrate_extract.Grant(C) + extract_minor = new(src) + extract_minor.Grant(C) + extract_major = new(src) + extract_major.Grant(C) + +/datum/species/jelly/luminescent/proc/update_slime_actions() + integrate_extract.update_name() + integrate_extract.UpdateButtonIcon() + extract_minor.UpdateButtonIcon() + extract_major.UpdateButtonIcon() + +/datum/species/jelly/luminescent/proc/update_glow(mob/living/carbon/C, intensity) + if(intensity) + glow_intensity = intensity + glow.set_light(glow_intensity, glow_intensity, C.dna.features["mcolor"]) + +/obj/effect/dummy/luminescent_glow + name = "luminescent glow" + desc = "Tell a coder if you're seeing this." + icon_state = "nothing" + light_color = "#FFFFFF" + light_range = LUMINESCENT_DEFAULT_GLOW + +/obj/effect/dummy/luminescent_glow/Initialize() + . = ..() + if(!isliving(loc)) + return INITIALIZE_HINT_QDEL + +/datum/action/innate/integrate_extract + name = "Integrate Extract" + desc = "Eat a slime extract to use its properties." + check_flags = AB_CHECK_CONSCIOUS + button_icon_state = "slimeconsume" + icon_icon = 'icons/mob/actions/actions_slime.dmi' + background_icon_state = "bg_alien" + var/datum/species/jelly/luminescent/species + +/datum/action/innate/integrate_extract/New(_species) + ..() + species = _species + +/datum/action/innate/integrate_extract/proc/update_name() + if(!species || !species.current_extract) + name = "Integrate Extract" + desc = "Eat a slime extract to use its properties." + else + name = "Eject Extract" + desc = "Eject your current slime extract." + +/datum/action/innate/integrate_extract/UpdateButtonIcon(status_only, force) + if(!species || !species.current_extract) + button_icon_state = "slimeconsume" + else + button_icon_state = "slimeeject" + ..() + +/datum/action/innate/integrate_extract/ApplyIcon(obj/screen/movable/action_button/current_button, force) + ..(current_button, TRUE) + if(species && species.current_extract) + current_button.add_overlay(mutable_appearance(species.current_extract.icon, species.current_extract.icon_state)) + +/datum/action/innate/integrate_extract/Activate() + var/mob/living/carbon/human/H = owner + if(!is_species(H, /datum/species/jelly/luminescent) || !species) + return + CHECK_DNA_AND_SPECIES(H) + + if(species.current_extract) + var/obj/item/slime_extract/S = species.current_extract + if(!H.put_in_active_hand(S)) + S.forceMove(H.drop_location()) + species.current_extract = null + to_chat(H, "You eject [S].") + species.update_slime_actions() + else + var/obj/item/I = H.get_active_held_item() + if(istype(I, /obj/item/slime_extract)) + var/obj/item/slime_extract/S = I + if(!S.Uses) + to_chat(H, "[I] is spent! You cannot integrate it.") + return + if(!H.temporarilyRemoveItemFromInventory(S)) + return + S.forceMove(H) + species.current_extract = S + to_chat(H, "You consume [I], and you feel it pulse within you...") + species.update_slime_actions() + else + to_chat(H, "You need to hold an unused slime extract in your active hand!") + +/datum/action/innate/use_extract + name = "Extract Minor Activation" + desc = "Pulse the slime extract with energized jelly to activate it." + check_flags = AB_CHECK_CONSCIOUS + button_icon_state = "slimeuse1" + icon_icon = 'icons/mob/actions/actions_slime.dmi' + background_icon_state = "bg_alien" + var/activation_type = SLIME_ACTIVATE_MINOR + var/datum/species/jelly/luminescent/species + +/datum/action/innate/use_extract/New(_species) + ..() + species = _species + +/datum/action/innate/use_extract/IsAvailable() + if(..()) + if(species && species.current_extract && (world.time > species.extract_cooldown)) + return TRUE + return FALSE + +/datum/action/innate/use_extract/ApplyIcon(obj/screen/movable/action_button/current_button, force) + ..(current_button, TRUE) + if(species && species.current_extract) + current_button.add_overlay(mutable_appearance(species.current_extract.icon, species.current_extract.icon_state)) + +/datum/action/innate/use_extract/Activate() + var/mob/living/carbon/human/H = owner + if(!is_species(H, /datum/species/jelly/luminescent) || !species) + return + CHECK_DNA_AND_SPECIES(H) + + if(species.current_extract) + var/cooldown = species.current_extract.activate(H, species, activation_type) + species.extract_cooldown = world.time + cooldown + +/datum/action/innate/use_extract/major + name = "Extract Major Activation" + desc = "Pulse the slime extract with plasma jelly to activate it." + button_icon_state = "slimeuse2" + activation_type = SLIME_ACTIVATE_MAJOR + +///////////////////////////////////STARGAZERS////////////////////////////////////////// + +//Stargazers are the telepathic branch of jellypeople, able to project psychic messages and to link minds with willing participants. + +/datum/species/jelly/stargazer + name = "Stargazer" + id = "stargazer" + var/datum/action/innate/project_thought/project_thought + var/datum/action/innate/link_minds/link_minds + var/list/mob/living/linked_mobs = list() + var/list/datum/action/innate/linked_speech/linked_actions = list() + var/mob/living/carbon/human/slimelink_owner + var/current_link_id = 0 + +/datum/species/jelly/stargazer/on_species_loss(mob/living/carbon/C) + ..() + for(var/M in linked_mobs) + unlink_mob(M) + if(project_thought) + project_thought.Remove(C) + if(link_minds) + link_minds.Remove(C) + +/datum/species/jelly/stargazer/spec_death(gibbed, mob/living/carbon/human/H) + ..() + for(var/M in linked_mobs) + unlink_mob(M) + +/datum/species/jelly/stargazer/on_species_gain(mob/living/carbon/C, datum/species/old_species) + ..() + project_thought = new(src) + project_thought.Grant(C) + link_minds = new(src) + link_minds.Grant(C) + slimelink_owner = C + link_mob(C) + +/datum/species/jelly/stargazer/proc/link_mob(mob/living/M) + if(QDELETED(M) || M.stat == DEAD) + return FALSE + if(M.isloyal()) //mindshield implant, no dice + return FALSE + if(M in linked_mobs) + return FALSE + linked_mobs.Add(M) + to_chat(M, "You are now connected to [slimelink_owner.real_name]'s Slime Link.") + var/datum/action/innate/linked_speech/action = new(src) + linked_actions.Add(action) + action.Grant(M) + return TRUE + +/datum/species/jelly/stargazer/proc/unlink_mob(mob/living/M) + var/link_id = linked_mobs.Find(M) + if(!(link_id)) + return + var/datum/action/innate/linked_speech/action = linked_actions[link_id] + action.Remove(M) + to_chat(M, "You are no longer connected to [slimelink_owner.real_name]'s Slime Link.") + linked_mobs[link_id] = null + linked_actions[link_id] = null + +/datum/action/innate/linked_speech + name = "Slimelink" + desc = "Send a psychic message to everyone connected to your slime link." + button_icon_state = "link_speech" + icon_icon = 'icons/mob/actions/actions_slime.dmi' + background_icon_state = "bg_alien" + var/datum/species/jelly/stargazer/species + +/datum/action/innate/linked_speech/New(_species) + ..() + species = _species + +/datum/action/innate/linked_speech/Activate() + var/mob/living/carbon/human/H = owner + if(!species || !(H in species.linked_mobs)) + to_chat(H, "The link seems to have been severed...") + Remove(H) + return + + var/message = sanitize(input("Message:", "Slime Telepathy") as text|null) + + if(!species || !(H in species.linked_mobs)) + to_chat(H, "The link seems to have been severed...") + Remove(H) + return + + if(QDELETED(H) || H.stat == DEAD) + species.unlink_mob(H) + return + + if(message) + var/msg = "\[[species.slimelink_owner.real_name]'s Slime Link\] [H]: [message]" + log_talk(H,"SlimeLink: [key_name(H)] : [msg]",LOGSAY) + for(var/X in species.linked_mobs) + var/mob/living/M = X + if(QDELETED(M) || M.stat == DEAD) + species.unlink_mob(M) + continue + to_chat(M, msg) + + for(var/X in GLOB.dead_mob_list) + var/mob/M = X + var/link = FOLLOW_LINK(M, H) + to_chat(M, "[link] [msg]") + +/datum/action/innate/project_thought + name = "Send Thought" + desc = "Send a private psychic message to someone you can see." + button_icon_state = "send_mind" + icon_icon = 'icons/mob/actions/actions_slime.dmi' + background_icon_state = "bg_alien" + +/datum/action/innate/project_thought/Activate() + var/mob/living/carbon/human/H = owner + if(!is_species(H, /datum/species/jelly/stargazer)) + return + CHECK_DNA_AND_SPECIES(H) + + var/list/options = list() + for(var/mob/living/Ms in oview(H)) + options += Ms + var/mob/living/M = input("Select who to send your message to:","Send thought to?",null) as null|mob in options + if(!M) + return + + var/msg = sanitize(input("Message:", "Telepathy") as text|null) + if(msg) + log_talk(H,"SlimeTelepathy: [key_name(H)]->[M.key] : [msg]",LOGSAY) + to_chat(M, "You hear an alien voice in your head... [msg]") + to_chat(H, "You telepathically said: \"[msg]\" to [M]") + for(var/dead in GLOB.dead_mob_list) + if(!isobserver(dead)) + continue + var/follow_link_user = FOLLOW_LINK(dead, H) + var/follow_link_target = FOLLOW_LINK(dead, M) + to_chat(dead, "[follow_link_user] [H] Slime Telepathy --> [follow_link_target] [M] [msg]") + +/datum/action/innate/link_minds + name = "Link Minds" + desc = "Link someone's mind to your Slime Link, allowing them to communicate telepathically with other linked minds." + button_icon_state = "mindlink" + icon_icon = 'icons/mob/actions/actions_slime.dmi' + background_icon_state = "bg_alien" + var/datum/species/jelly/stargazer/species + +/datum/action/innate/link_minds/New(_species) + ..() + species = _species + +/datum/action/innate/link_minds/Activate() + var/mob/living/carbon/human/H = owner + if(!is_species(H, /datum/species/jelly/stargazer)) + return + CHECK_DNA_AND_SPECIES(H) + + if(!H.pulling || !isliving(H.pulling) || H.grab_state < GRAB_AGGRESSIVE) + to_chat(H, "You need to aggressively grab someone to link minds!") + return + + var/mob/living/target = H.pulling + + to_chat(H, "You begin linking [target]'s mind to yours...") + to_chat(target, "You feel a foreign presence within your mind...") + if(do_after(H, 60, target = target)) + if(H.pulling != target || H.grab_state < GRAB_AGGRESSIVE) + return + if(species.link_mob(target)) + to_chat(H, "You connect [target]'s mind to your slime link!") + else + to_chat(H, "You can't seem to link [target]'s mind...") + to_chat(target, "The foreign presence leaves your mind.") diff --git a/code/modules/mob/living/carbon/human/species_types/mothmen.dm b/code/modules/mob/living/carbon/human/species_types/mothmen.dm new file mode 100644 index 0000000000..7f0d8afe26 --- /dev/null +++ b/code/modules/mob/living/carbon/human/species_types/mothmen.dm @@ -0,0 +1,60 @@ +/datum/species/moth + name = "Mothmen" + id = "moth" + say_mod = "flutters" + default_color = "00FF00" + species_traits = list(LIPS, SPECIES_ORGANIC, NOEYES) + mutant_bodyparts = list("moth_wings") + default_features = list("moth_wings" = "Plain") + attack_verb = "slash" + attack_sound = 'sound/weapons/slash.ogg' + miss_sound = 'sound/weapons/slashmiss.ogg' + meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/moth + liked_food = VEGETABLES | DAIRY + disliked_food = FRUIT | GROSS + toxic_food = MEAT | RAW + mutanteyes = /obj/item/organ/eyes/moth + +/datum/species/moth/on_species_gain(mob/living/carbon/C) + . = ..() + if(ishuman(C)) + var/mob/living/carbon/human/H = C + if(!H.dna.features["moth_wings"]) + H.dna.features["moth_wings"] = "[(H.client && H.client.prefs && LAZYLEN(H.client.prefs.features) && H.client.prefs.features["moth_wings"]) ? H.client.prefs.features["moth_wings"] : "Plain"]" + handle_mutant_bodyparts(H) + +/datum/species/moth/random_name(gender,unique,lastname) + if(unique) + return random_unique_moth_name() + + var/randname = moth_name() + + if(lastname) + randname += " [lastname]" + + return randname + +/datum/species/moth/handle_fire(mob/living/carbon/human/H, no_protection = FALSE) + ..() + if(H.dna.features["moth_wings"] != "Burnt Off" && H.bodytemperature >= 800 && H.fire_stacks > 0) //do not go into the extremely hot light. you will not survive + to_chat(H, "Your precious wings burn to a crisp!") + H.dna.features["moth_wings"] = "Burnt Off" + handle_mutant_bodyparts(H) + +/datum/species/moth/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H) + . = ..() + if(chem.id == "pestkiller") + H.adjustToxLoss(3) + H.reagents.remove_reagent(chem.id, REAGENTS_METABOLISM) + +/datum/species/moth/check_weakness(obj/item/weapon, mob/living/attacker) + if(istype(weapon, /obj/item/melee/flyswatter)) + return 9 //flyswatters deal 10x damage to moths + return 0 + +/datum/species/moth/space_move(mob/living/carbon/human/H) + . = ..() + if(H.loc && !isspaceturf(H.loc) && H.dna.features["moth_wings"] != "Burnt Off" || "None") + var/datum/gas_mixture/current = H.loc.return_air() + if(current && (current.return_pressure() >= ONE_ATMOSPHERE*0.85)) //as long as there's reasonable pressure and no gravity, flight is possible + return TRUE diff --git a/code/modules/mob/living/carbon/human/species_types/skeletons.dm b/code/modules/mob/living/carbon/human/species_types/skeletons.dm index 0a55ae0134..d47f3d71d5 100644 --- a/code/modules/mob/living/carbon/human/species_types/skeletons.dm +++ b/code/modules/mob/living/carbon/human/species_types/skeletons.dm @@ -10,9 +10,9 @@ mutanttongue = /obj/item/organ/tongue/bone damage_overlay_type = ""//let's not show bloody wounds or burns over bones. disliked_food = NONE - liked_food = NONE + liked_food = GROSS | MEAT | RAW /datum/species/skeleton/check_roundstart_eligible() if(SSevents.holidays && SSevents.holidays[HALLOWEEN]) return TRUE - return ..() + return ..() \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/species_types/zombies.dm b/code/modules/mob/living/carbon/human/species_types/zombies.dm index 792485960e..14502aa931 100644 --- a/code/modules/mob/living/carbon/human/species_types/zombies.dm +++ b/code/modules/mob/living/carbon/human/species_types/zombies.dm @@ -12,7 +12,7 @@ mutanttongue = /obj/item/organ/tongue/zombie var/static/list/spooks = list('sound/hallucinations/growl1.ogg','sound/hallucinations/growl2.ogg','sound/hallucinations/growl3.ogg','sound/hallucinations/veryfar_noise.ogg','sound/hallucinations/wail.ogg') disliked_food = NONE - liked_food = NONE + liked_food = GROSS | MEAT | RAW /datum/species/zombie/check_roundstart_eligible() if(SSevents.holidays && SSevents.holidays[HALLOWEEN]) diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index 266afffed2..3c57b172fe 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -610,7 +610,7 @@ generate/load female uniform sprites matching all previously decided variables if(BP.dmg_overlay_type) . += "-[BP.dmg_overlay_type]" - if(has_disability(DISABILITY_HUSK)) + if(has_trait(TRAIT_HUSK)) . += "-husk" /mob/living/carbon/human/load_limb_from_cache() diff --git a/code/modules/mob/living/carbon/life.dm b/code/modules/mob/living/carbon/life.dm index 658d7a90c4..3a49badc77 100644 --- a/code/modules/mob/living/carbon/life.dm +++ b/code/modules/mob/living/carbon/life.dm @@ -1,6 +1,5 @@ /mob/living/carbon/Life() set invisibility = 0 - set background = BACKGROUND_ENABLED if(notransform) return diff --git a/code/modules/mob/living/carbon/monkey/combat.dm b/code/modules/mob/living/carbon/monkey/combat.dm index 18f245d4cd..32b368db4f 100644 --- a/code/modules/mob/living/carbon/monkey/combat.dm +++ b/code/modules/mob/living/carbon/monkey/combat.dm @@ -122,7 +122,7 @@ if(L == src) return FALSE - if(has_disability(DISABILITY_PACIFISM)) + if(has_trait(TRAIT_PACIFISM)) return FALSE if(enemies[L]) diff --git a/code/modules/mob/living/carbon/monkey/life.dm b/code/modules/mob/living/carbon/monkey/life.dm index b6609a319e..58edac0eaf 100644 --- a/code/modules/mob/living/carbon/monkey/life.dm +++ b/code/modules/mob/living/carbon/monkey/life.dm @@ -5,7 +5,6 @@ /mob/living/carbon/monkey/Life() set invisibility = 0 - set background = BACKGROUND_ENABLED if (notransform) return @@ -74,6 +73,7 @@ else bodytemperature += min((loc_temp - bodytemperature) / BODYTEMP_HEAT_DIVISOR, BODYTEMP_HEATING_MAX) + if(bodytemperature > BODYTEMP_HEAT_DAMAGE_LIMIT) switch(bodytemperature) if(360 to 400) diff --git a/code/modules/mob/living/carbon/monkey/update_icons.dm b/code/modules/mob/living/carbon/monkey/update_icons.dm index 1bb4400087..def7640b76 100644 --- a/code/modules/mob/living/carbon/monkey/update_icons.dm +++ b/code/modules/mob/living/carbon/monkey/update_icons.dm @@ -19,7 +19,7 @@ if(!HD) //Decapitated return - if(has_disability(DISABILITY_HUSK)) + if(has_trait(TRAIT_HUSK)) return var/hair_hidden = 0 diff --git a/code/modules/mob/living/carbon/status_procs.dm b/code/modules/mob/living/carbon/status_procs.dm index efde375227..300455a174 100644 --- a/code/modules/mob/living/carbon/status_procs.dm +++ b/code/modules/mob/living/carbon/status_procs.dm @@ -1,6 +1,6 @@ //Here are the procs used to modify status effects of a mob. //The effects include: stun, knockdown, unconscious, sleeping, resting, jitteriness, dizziness, ear damage, -// eye damage, eye_blind, eye_blurry, druggy, DISABILITY_BLIND disability, DISABILITY_NEARSIGHT disability, and DISABILITY_HUSK disability. +// eye damage, eye_blind, eye_blurry, druggy, TRAIT_BLIND trait, TRAIT_NEARSIGHT trait, and TRAIT_HUSK trait. /mob/living/carbon/damage_eyes(amount) var/obj/item/organ/eyes/eyes = getorganslot(ORGAN_SLOT_EYES) diff --git a/code/modules/mob/living/carbon/update_icons.dm b/code/modules/mob/living/carbon/update_icons.dm index 147f14c945..d798a3cd25 100644 --- a/code/modules/mob/living/carbon/update_icons.dm +++ b/code/modules/mob/living/carbon/update_icons.dm @@ -290,7 +290,7 @@ else . += "-robotic" - if(has_disability(DISABILITY_HUSK)) + if(has_trait(TRAIT_HUSK)) . += "-husk" diff --git a/code/modules/mob/living/damage_procs.dm b/code/modules/mob/living/damage_procs.dm index 9517e1b705..896708a4e3 100644 --- a/code/modules/mob/living/damage_procs.dm +++ b/code/modules/mob/living/damage_procs.dm @@ -113,14 +113,14 @@ if(SLUR) slurring = max(slurring,(effect * hit_percent)) if(STUTTER) - if(status_flags & CANSTUN) // stun is usually associated with stutter + if((status_flags & CANSTUN) && !has_trait(TRAIT_STUNIMMUNE)) // stun is usually associated with stutter stuttering = max(stuttering,(effect * hit_percent)) if(EYE_BLUR) blur_eyes(effect * hit_percent) if(DROWSY) drowsyness = max(drowsyness,(effect * hit_percent)) if(JITTER) - if(status_flags & CANSTUN) + if((status_flags & CANSTUN) && !has_trait(TRAIT_STUNIMMUNE)) jitteriness = max(jitteriness,(effect * hit_percent)) return 1 diff --git a/code/modules/mob/living/life.dm b/code/modules/mob/living/life.dm index 0fc19e3882..8043f055bb 100644 --- a/code/modules/mob/living/life.dm +++ b/code/modules/mob/living/life.dm @@ -1,6 +1,5 @@ /mob/living/Life(seconds, times_fired) set invisibility = 0 - set background = BACKGROUND_ENABLED if(digitalinvis) handle_diginvis() //AI becomes unable to see mob @@ -55,9 +54,9 @@ handle_fire() - // Vore code for belly processes + // Citadel Vore code for belly processes handle_internal_contents() - + //stuff in the stomach handle_stomach() @@ -67,7 +66,7 @@ machine.check_eye(src) if(stat != DEAD) - handle_disabilities() // eye, ear, brain damages + handle_traits() // eye, ear, brain damages if(stat != DEAD) handle_status_effects() //all special effects, stun, knockdown, jitteryness, hallucination, sleeping, etc @@ -123,10 +122,10 @@ if(confused) confused = max(0, confused - 1) -/mob/living/proc/handle_disabilities() +/mob/living/proc/handle_traits() //Eyes if(eye_blind) //blindness, heals slowly over time - if(!stat && !(has_disability(DISABILITY_BLIND))) + if(!stat && !(has_trait(TRAIT_BLIND))) eye_blind = max(eye_blind-1,0) if(client && !eye_blind) clear_alert("blind") @@ -137,7 +136,7 @@ eye_blurry = max(eye_blurry-1, 0) if(client && !eye_blurry) clear_fullscreen("blurry") - if(has_disability(DISABILITY_PACIFISM) && a_intent == INTENT_HARM) + if(has_trait(TRAIT_PACIFISM) && a_intent == INTENT_HARM) to_chat(src, "You don't feel like harming anybody.") a_intent_change(INTENT_HELP) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index be1ad730f1..9716ee135d 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -183,6 +183,10 @@ //not if he's not CANPUSH of course if(!(M.status_flags & CANPUSH)) return 1 + if(isliving(M)) + var/mob/living/L = M + if(L.has_trait(TRAIT_PUSHIMMUNE)) + return 1 //anti-riot equipment is also anti-push for(var/obj/item/I in M.held_items) if(!istype(M, /obj/item/clothing)) @@ -235,7 +239,7 @@ /mob/living/pointed(atom/A as mob|obj|turf in view()) if(incapacitated()) return 0 - if(src.status_flags & FAKEDEATH) + if(src.has_trait(TRAIT_FAKEDEATH)) return 0 if(!..()) return 0 @@ -578,7 +582,7 @@ // climbing out of a gut if(attempt_vr(src,"vore_process_resist",args)) return TRUE - + //Breaking out of a container (Locker, sleeper, cryo...) else if(isobj(loc)) var/obj/C = loc @@ -794,7 +798,7 @@ if(G.trigger_guard != TRIGGER_GUARD_ALLOW_ALL && !IsAdvancedToolUser()) to_chat(src, "You don't have the dexterity to do this!") return FALSE - if(has_disability(DISABILITY_PACIFISM)) + if(has_trait(TRAIT_PACIFISM)) to_chat(src, "You don't want to risk harming anyone!") return FALSE return TRUE @@ -950,7 +954,7 @@ //Updates canmove, lying and icons. Could perhaps do with a rename but I can't think of anything to describe it. //Robots, animals and brains have their own version so don't worry about them /mob/living/proc/update_canmove() - var/ko = IsKnockdown() || IsUnconscious() || (stat && (stat != SOFT_CRIT || pulledby)) || (status_flags & FAKEDEATH) + var/ko = IsKnockdown() || IsUnconscious() || (stat && (stat != SOFT_CRIT || pulledby)) || (has_trait(TRAIT_FAKEDEATH)) var/move_and_fall = stat == SOFT_CRIT && !pulledby var/chokehold = pulledby && pulledby.grab_state >= GRAB_NECK var/buckle_lying = !(buckled && !buckled.buckle_lying) diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index 413e9c1b0b..2304502c40 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -132,11 +132,11 @@ user.start_pulling(src, supress_message) return - if(!(status_flags & CANPUSH)) + if(!(status_flags & CANPUSH) || has_trait(TRAIT_PUSHIMMUNE)) to_chat(user, "[src] can't be grabbed more aggressively!") return FALSE - if(user.has_disability(DISABILITY_PACIFISM)) + if(user.has_trait(TRAIT_PACIFISM)) to_chat(user, "You don't want to risk hurting [src]!") return FALSE @@ -193,7 +193,7 @@ M.Feedstop() return // can't attack while eating! - if(has_disability(DISABILITY_PACIFISM)) + if(has_trait(TRAIT_PACIFISM)) to_chat(M, "You don't want to hurt anyone!") return FALSE @@ -210,7 +210,7 @@ M.visible_message("\The [M] [M.friendly] [src]!") return FALSE else - if(M.has_disability(DISABILITY_PACIFISM)) + if(M.has_trait(TRAIT_PACIFISM)) to_chat(M, "You don't want to hurt anyone!") return FALSE @@ -229,7 +229,7 @@ return FALSE if (M.a_intent == INTENT_HARM) - if(M.has_disability(DISABILITY_PACIFISM)) + if(M.has_trait(TRAIT_PACIFISM)) to_chat(M, "You don't want to hurt anyone!") return FALSE @@ -255,7 +255,7 @@ return FALSE else - if(L.has_disability(DISABILITY_PACIFISM)) + if(L.has_trait(TRAIT_PACIFISM)) to_chat(L, "You don't want to hurt anyone!") return @@ -280,7 +280,7 @@ grabbedby(M) return FALSE if("harm") - if(M.has_disability(DISABILITY_PACIFISM)) + if(M.has_trait(TRAIT_PACIFISM)) to_chat(M, "You don't want to hurt anyone!") return FALSE M.do_attack_animation(src) @@ -370,7 +370,7 @@ //called when the mob receives a bright flash /mob/living/proc/flash_act(intensity = 1, override_blindness_check = 0, affect_silicon = 0, visual = 0, type = /obj/screen/fullscreen/flash) - if(get_eye_protection() < intensity && (override_blindness_check || !(has_disability(DISABILITY_BLIND)))) + if(get_eye_protection() < intensity && (override_blindness_check || !(has_trait(TRAIT_BLIND)))) overlay_fullscreen("flash", type) addtimer(CALLBACK(src, .proc/clear_fullscreen, "flash", 25), 25) return TRUE diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm index 471d29a361..b56c7ff613 100644 --- a/code/modules/mob/living/living_defines.dm +++ b/code/modules/mob/living/living_defines.dm @@ -32,7 +32,7 @@ var/incorporeal_move = FALSE //FALSE is off, INCORPOREAL_MOVE_BASIC is normal, INCORPOREAL_MOVE_SHADOW is for ninjas //and INCORPOREAL_MOVE_JAUNT is blocked by holy water/salt - var/list/disabilities = list() + var/list/status_traits = list() var/list/surgeries = list() //a list of surgery datums. generally empty, they're added when the player wants them. diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index 2143e9b2c8..650ac3e1a6 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -273,7 +273,7 @@ GLOBAL_LIST_INIT(department_radio_keys, list( return 1 /mob/living/proc/can_speak_vocal(message) //Check AFTER handling of xeno and ling channels - if(has_disability(DISABILITY_MUTE)) + if(has_trait(TRAIT_MUTE)) return 0 if(is_muzzled()) diff --git a/code/modules/mob/living/silicon/ai/freelook/chunk.dm b/code/modules/mob/living/silicon/ai/freelook/chunk.dm index a76c02f3b5..bf3139cc4f 100644 --- a/code/modules/mob/living/silicon/ai/freelook/chunk.dm +++ b/code/modules/mob/living/silicon/ai/freelook/chunk.dm @@ -60,9 +60,6 @@ // The actual updating. It gathers the visible turfs from cameras and puts them into the appropiate lists. /datum/camerachunk/proc/update() - - set background = BACKGROUND_ENABLED - var/list/newVisibleTurfs = list() for(var/camera in cameras) diff --git a/code/modules/mob/living/silicon/robot/life.dm b/code/modules/mob/living/silicon/robot/life.dm index 25c5951f3a..c08dd83f99 100644 --- a/code/modules/mob/living/silicon/robot/life.dm +++ b/code/modules/mob/living/silicon/robot/life.dm @@ -1,7 +1,5 @@ /mob/living/silicon/robot/Life() set invisibility = 0 - set background = BACKGROUND_ENABLED - if (src.notransform) return diff --git a/code/modules/mob/living/simple_animal/bot/bot.dm b/code/modules/mob/living/simple_animal/bot/bot.dm index 9050ba0ffa..07499b0a1f 100644 --- a/code/modules/mob/living/simple_animal/bot/bot.dm +++ b/code/modules/mob/living/simple_animal/bot/bot.dm @@ -226,7 +226,6 @@ return //we use a different hud /mob/living/simple_animal/bot/handle_automated_action() //Master process which handles code common across most bots. - set background = BACKGROUND_ENABLED diag_hud_set_botmode() if (ignorelistcleanuptimer % 300 == 0) // Every 300 actions, clean up the ignore list from old junk diff --git a/code/modules/mob/living/simple_animal/bot/ed209bot.dm b/code/modules/mob/living/simple_animal/bot/ed209bot.dm index 47cf1ec5cc..d265d19cb2 100644 --- a/code/modules/mob/living/simple_animal/bot/ed209bot.dm +++ b/code/modules/mob/living/simple_animal/bot/ed209bot.dm @@ -367,7 +367,7 @@ Auto Patrol[]"}, continue /mob/living/simple_animal/bot/ed209/proc/check_for_weapons(var/obj/item/slot_item) - if(slot_item && slot_item.needs_permit) + if(slot_item && (slot_item.item_flags & NEEDS_PERMIT)) return 1 return 0 diff --git a/code/modules/mob/living/simple_animal/bot/medbot.dm b/code/modules/mob/living/simple_animal/bot/medbot.dm index 9453a7d38f..6946c8992f 100644 --- a/code/modules/mob/living/simple_animal/bot/medbot.dm +++ b/code/modules/mob/living/simple_animal/bot/medbot.dm @@ -343,7 +343,7 @@ /mob/living/simple_animal/bot/medbot/proc/assess_patient(mob/living/carbon/C) //Time to see if they need medical help! - if(C.stat == DEAD || (C.status_flags & FAKEDEATH)) + if(C.stat == DEAD || (C.has_trait(TRAIT_FAKEDEATH))) return FALSE //welp too late for them! if(!(loc == C.loc) && !(isturf(C.loc) && isturf(loc))) @@ -418,7 +418,7 @@ soft_reset() return - if(C.stat == DEAD || (C.status_flags & FAKEDEATH)) + if(C.stat == DEAD || (C.has_trait(TRAIT_FAKEDEATH))) var/list/messagevoice = list("No! Stay with me!" = 'sound/voice/mno.ogg',"Live, damnit! LIVE!" = 'sound/voice/mlive.ogg',"I...I've never lost a patient before. Not today, I mean." = 'sound/voice/mlost.ogg') var/message = pick(messagevoice) speak(message) diff --git a/code/modules/mob/living/simple_animal/bot/secbot.dm b/code/modules/mob/living/simple_animal/bot/secbot.dm index 25baa09772..68b82abb0e 100644 --- a/code/modules/mob/living/simple_animal/bot/secbot.dm +++ b/code/modules/mob/living/simple_animal/bot/secbot.dm @@ -392,7 +392,7 @@ Auto Patrol: []"}, else continue /mob/living/simple_animal/bot/secbot/proc/check_for_weapons(var/obj/item/slot_item) - if(slot_item && slot_item.needs_permit) + if(slot_item && (slot_item.item_flags & NEEDS_PERMIT)) return 1 return 0 @@ -424,7 +424,7 @@ Auto Patrol: []"}, mode = BOT_HUNT /mob/living/simple_animal/bot/secbot/Crossed(atom/movable/AM) - if(ismob(AM) && target) + if(has_gravity() && ismob(AM) && target) var/mob/living/carbon/C = AM if(!istype(C) || !C || in_range(src, target)) return diff --git a/code/modules/mob/living/simple_animal/friendly/dog.dm b/code/modules/mob/living/simple_animal/friendly/dog.dm index 812d4448d5..282a02494a 100644 --- a/code/modules/mob/living/simple_animal/friendly/dog.dm +++ b/code/modules/mob/living/simple_animal/friendly/dog.dm @@ -87,16 +87,16 @@ if(def_zone) if(def_zone == "head") if(inventory_head) - armorval = inventory_head.armor[type] + armorval = inventory_head.armor.getRating(type) else if(inventory_back) - armorval = inventory_back.armor[type] + armorval = inventory_back.armor.getRating(type) return armorval else if(inventory_head) - armorval += inventory_head.armor[type] + armorval += inventory_head.armor.getRating(type) if(inventory_back) - armorval += inventory_back.armor[type] + armorval += inventory_back.armor.getRating(type) return armorval*0.5 /mob/living/simple_animal/pet/dog/corgi/attackby(obj/item/O, mob/user, params) diff --git a/code/modules/mob/living/simple_animal/friendly/drone/drones_as_items.dm b/code/modules/mob/living/simple_animal/friendly/drone/drones_as_items.dm index c7fbcd0e3a..20062972ec 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/drones_as_items.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/drones_as_items.dm @@ -61,4 +61,4 @@ D.equip_to_slot_or_del(new_hat, slot_head) D.admin_spawned = admin_spawned D.key = user.key - qdel(src) \ No newline at end of file + qdel(src) diff --git a/code/modules/mob/living/simple_animal/friendly/drone/interaction.dm b/code/modules/mob/living/simple_animal/friendly/drone/interaction.dm index 6d87563ae9..1ec3d204c1 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/interaction.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/interaction.dm @@ -105,7 +105,7 @@ var/armorval = 0 if(head) - armorval = head.armor[type] + armorval = head.armor.getRating(type) return (armorval * get_armor_effectiveness()) //armor is reduced for tiny fragile drones /mob/living/simple_animal/drone/proc/get_armor_effectiveness() diff --git a/code/modules/mob/living/simple_animal/friendly/snake.dm b/code/modules/mob/living/simple_animal/friendly/snake.dm new file mode 100644 index 0000000000..caa9f10905 --- /dev/null +++ b/code/modules/mob/living/simple_animal/friendly/snake.dm @@ -0,0 +1,61 @@ +/mob/living/simple_animal/hostile/retaliate/poison + var/poison_per_bite = 0 + var/poison_type = "toxin" + +/mob/living/simple_animal/hostile/retaliate/poison/AttackingTarget() + . = ..() + if(. && isliving(target)) + var/mob/living/L = target + if(L.reagents && !poison_per_bite == 0) + L.reagents.add_reagent(poison_type, poison_per_bite) + return . + +/mob/living/simple_animal/hostile/retaliate/poison/snake + name = "snake" + desc = "A slithery snake. These legless reptiles are the bane of mice and adventurers alike." + icon_state = "snake" + icon_living = "snake" + icon_dead = "snake_dead" + speak_emote = list("hisses") + health = 20 + maxHealth = 20 + attacktext = "bites" + melee_damage_lower = 5 + melee_damage_upper = 6 + response_help = "pets" + response_disarm = "shoos" + response_harm = "steps on" + faction = list("hostile") + ventcrawler = VENTCRAWLER_ALWAYS + density = FALSE + pass_flags = PASSTABLE | PASSMOB + mob_size = MOB_SIZE_SMALL + gold_core_spawnable = FRIENDLY_SPAWN + obj_damage = 0 + environment_smash = ENVIRONMENT_SMASH_NONE + + +/mob/living/simple_animal/hostile/retaliate/poison/snake/ListTargets(atom/the_target) + . = oview(vision_range, targets_from) //get list of things in vision range + var/list/living_mobs = list() + var/list/mice = list() + for (var/HM in .) + //Yum a tasty mouse + if(istype(HM, /mob/living/simple_animal/mouse)) + mice += HM + if(isliving(HM)) + living_mobs += HM + + // if no tasty mice to chase, lets chase any living mob enemies in our vision range + if(length(mice) == 0) + //Filter living mobs (in range mobs) by those we consider enemies (retaliate behaviour) + return living_mobs & enemies + return mice + +/mob/living/simple_animal/hostile/retaliate/poison/snake/AttackingTarget() + if(istype(target, /mob/living/simple_animal/mouse)) + visible_message("[name] consumes [target] in a single gulp!", "You consume [target] in a single gulp!") + QDEL_NULL(target) + adjustBruteLoss(-2) + else + return ..() \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/hostile/headcrab.dm b/code/modules/mob/living/simple_animal/hostile/headcrab.dm index a42a79e02a..a3bc98f48a 100644 --- a/code/modules/mob/living/simple_animal/hostile/headcrab.dm +++ b/code/modules/mob/living/simple_animal/hostile/headcrab.dm @@ -22,7 +22,7 @@ ventcrawler = VENTCRAWLER_ALWAYS var/datum/mind/origin var/egg_lain = 0 -// gold_core_spawnable = HOSTILE_SPAWN //are you sure about this?? + //gold_core_spawnable = HOSTILE_SPAWN //are you sure about this?? /mob/living/simple_animal/hostile/headcrab/proc/Infect(mob/living/carbon/victim) var/obj/item/organ/body_egg/changeling_egg/egg = new(victim) @@ -43,7 +43,7 @@ // Changeling egg can survive in aliens! var/mob/living/carbon/C = target if(C.stat == DEAD) - if(C.status_flags & XENO_HOST) + if(C.has_trait(TRAIT_XENO_HOST)) to_chat(src, "A foreign presence repels us from this body. Perhaps we should try to infest another?") return Infect(target) 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 0388c1b4f9..f09a31415a 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm @@ -558,7 +558,7 @@ Difficulty: Very Hard H.regenerate_limbs() H.regenerate_organs() H.revive(1,0) - H.add_disability(DISABILITY_NOCLONE, MAGIC_DISABILITY) //Free revives, but significantly limits your options for reviving except via the crystal + H.add_trait(TRAIT_NOCLONE, MAGIC_TRAIT) //Free revives, but significantly limits your options for reviving except via the crystal H.grab_ghost(force = TRUE) /obj/machinery/anomalous_crystal/helpers //Lets ghost spawn as helpful creatures that can only heal people slightly. Incredibly fragile and they can't converse with humans @@ -719,7 +719,7 @@ Difficulty: Very Hard if(isliving(A) && holder_animal) var/mob/living/L = A L.notransform = 1 - L.add_disability(DISABILITY_MUTE, STASIS_MUTE) + L.add_trait(TRAIT_MUTE, STASIS_MUTE) L.status_flags |= GODMODE L.mind.transfer_to(holder_animal) var/obj/effect/proc_holder/spell/targeted/exit_possession/P = new /obj/effect/proc_holder/spell/targeted/exit_possession @@ -729,7 +729,7 @@ Difficulty: Very Hard /obj/structure/closet/stasis/dump_contents(var/kill = 1) STOP_PROCESSING(SSobj, src) for(var/mob/living/L in src) - L.remove_disability(DISABILITY_MUTE, STASIS_MUTE) + L.remove_trait(TRAIT_MUTE, STASIS_MUTE) L.status_flags &= ~GODMODE L.notransform = 0 if(holder_animal) diff --git a/code/modules/mob/living/status_procs.dm b/code/modules/mob/living/status_procs.dm index ff2e294b93..9c46c49ad9 100644 --- a/code/modules/mob/living/status_procs.dm +++ b/code/modules/mob/living/status_procs.dm @@ -1,6 +1,6 @@ //Here are the procs used to modify status effects of a mob. //The effects include: stun, knockdown, unconscious, sleeping, resting, jitteriness, dizziness, -// eye damage, eye_blind, eye_blurry, druggy, DISABILITY_BLIND disability, and DISABILITY_NEARSIGHT disability. +// eye damage, eye_blind, eye_blurry, druggy, TRAIT_BLIND trait, and TRAIT_NEARSIGHT trait. ////////////////////////////// STUN //////////////////////////////////// @@ -15,7 +15,7 @@ return 0 /mob/living/proc/Stun(amount, updating = TRUE, ignore_canstun = FALSE) //Can't go below remaining duration - if((status_flags & CANSTUN) || ignore_canstun) + if(((status_flags & CANSTUN) && !has_trait(TRAIT_STUNIMMUNE)) || ignore_canstun) if(absorb_stun(amount, ignore_canstun)) return var/datum/status_effect/incapacitating/stun/S = IsStun() @@ -26,7 +26,7 @@ return S /mob/living/proc/SetStun(amount, updating = TRUE, ignore_canstun = FALSE) //Sets remaining duration - if((status_flags & CANSTUN) || ignore_canstun) + if(((status_flags & CANSTUN) && !has_trait(TRAIT_STUNIMMUNE)) || ignore_canstun) var/datum/status_effect/incapacitating/stun/S = IsStun() if(amount <= 0) if(S) @@ -41,7 +41,7 @@ return S /mob/living/proc/AdjustStun(amount, updating = TRUE, ignore_canstun = FALSE) //Adds to remaining duration - if((status_flags & CANSTUN) || ignore_canstun) + if(((status_flags & CANSTUN) && !has_trait(TRAIT_STUNIMMUNE)) || ignore_canstun) if(absorb_stun(amount, ignore_canstun)) return var/datum/status_effect/incapacitating/stun/S = IsStun() @@ -63,7 +63,7 @@ return 0 /mob/living/proc/Knockdown(amount, updating = TRUE, ignore_canknockdown = FALSE) //Can't go below remaining duration - if((status_flags & CANKNOCKDOWN) || ignore_canknockdown) + if(((status_flags & CANKNOCKDOWN) && !has_trait(TRAIT_STUNIMMUNE)) || ignore_canknockdown) if(absorb_stun(amount, ignore_canknockdown)) return var/datum/status_effect/incapacitating/knockdown/K = IsKnockdown() @@ -74,7 +74,7 @@ return K /mob/living/proc/SetKnockdown(amount, updating = TRUE, ignore_canknockdown = FALSE) //Sets remaining duration - if((status_flags & CANKNOCKDOWN) || ignore_canknockdown) + if(((status_flags & CANKNOCKDOWN) && !has_trait(TRAIT_STUNIMMUNE)) || ignore_canknockdown) var/datum/status_effect/incapacitating/knockdown/K = IsKnockdown() if(amount <= 0) if(K) @@ -89,7 +89,7 @@ return K /mob/living/proc/AdjustKnockdown(amount, updating = TRUE, ignore_canknockdown = FALSE) //Adds to remaining duration - if((status_flags & CANKNOCKDOWN) || ignore_canknockdown) + if(((status_flags & CANKNOCKDOWN) && !has_trait(TRAIT_STUNIMMUNE)) || ignore_canknockdown) if(absorb_stun(amount, ignore_canknockdown)) return var/datum/status_effect/incapacitating/knockdown/K = IsKnockdown() @@ -140,18 +140,18 @@ /////////////////////////////////// DISABILITIES //////////////////////////////////// -/mob/living/proc/add_disability(disability, source) - if(!disabilities[disability]) - disabilities[disability] = list(source) +/mob/living/proc/add_trait(trait, source) + if(!status_traits[trait]) + status_traits[trait] = list(source) else - disabilities[disability] |= list(source) + status_traits[trait] |= list(source) -/mob/living/proc/remove_disability(disability, list/sources) - if(!disabilities[disability]) +/mob/living/proc/remove_trait(trait, list/sources) + if(!status_traits[trait]) return - if(!sources) // No defined source cures the disability entirely. - disabilities -= disability + if(!sources) // No defined source cures the trait entirely. + status_traits -= trait return if(!islist(sources)) @@ -159,61 +159,74 @@ if(LAZYLEN(sources)) for(var/S in sources) - if(S in disabilities[disability]) - disabilities[disability] -= S + if(S in status_traits[trait]) + status_traits[trait] -= S else - disabilities[disability] = list() + status_traits[trait] = list() - if(!LAZYLEN(disabilities[disability])) - disabilities -= disability + if(!LAZYLEN(status_traits[trait])) + status_traits -= trait -/mob/living/proc/has_disability(disability, list/sources) - if(!disabilities[disability]) +/mob/living/proc/has_trait(trait, list/sources) + if(!status_traits[trait]) return FALSE . = FALSE if(LAZYLEN(sources)) for(var/S in sources) - if(S in disabilities[disability]) + if(S in status_traits[trait]) return TRUE else - if(LAZYLEN(disabilities[disability])) + if(LAZYLEN(status_traits[trait])) return TRUE -/mob/living/proc/remove_all_disabilities() - disabilities = list() +/mob/living/proc/remove_all_traits() + status_traits = list() -/////////////////////////////////// DISABILITY PROCS //////////////////////////////////// +/////////////////////////////////// TRAIT PROCS //////////////////////////////////// /mob/living/proc/cure_blind(list/sources) - remove_disability(DISABILITY_BLIND, sources) - if(!has_disability(DISABILITY_BLIND)) + remove_trait(TRAIT_BLIND, sources) + if(!has_trait(TRAIT_BLIND)) adjust_blindness(-1) /mob/living/proc/become_blind(source) - if(!has_disability(DISABILITY_BLIND)) + if(!has_trait(TRAIT_BLIND)) blind_eyes(1) - add_disability(DISABILITY_BLIND, source) + add_trait(TRAIT_BLIND, source) /mob/living/proc/cure_nearsighted(list/sources) - remove_disability(DISABILITY_NEARSIGHT, sources) - if(!has_disability(DISABILITY_NEARSIGHT)) + remove_trait(TRAIT_NEARSIGHT, sources) + if(!has_trait(TRAIT_NEARSIGHT)) clear_fullscreen("nearsighted") /mob/living/proc/become_nearsighted(source) - if(!has_disability(DISABILITY_NEARSIGHT)) + if(!has_trait(TRAIT_NEARSIGHT)) overlay_fullscreen("nearsighted", /obj/screen/fullscreen/impaired, 1) - add_disability(DISABILITY_NEARSIGHT, source) + add_trait(TRAIT_NEARSIGHT, source) /mob/living/proc/cure_husk(list/sources) - remove_disability(DISABILITY_HUSK, sources) - if(!has_disability(DISABILITY_HUSK)) - status_flags &= ~DISFIGURED + remove_trait(TRAIT_HUSK, sources) + if(!has_trait(TRAIT_HUSK)) + remove_trait(TRAIT_DISFIGURED, "husk") update_body() /mob/living/proc/become_husk(source) - if(!has_disability(DISABILITY_HUSK)) - status_flags |= DISFIGURED //makes them unknown + if(!has_trait(TRAIT_HUSK)) + add_trait(TRAIT_DISFIGURED, "husk") update_body() - add_disability(DISABILITY_HUSK, source) + add_trait(TRAIT_HUSK, source) + +/mob/living/proc/cure_fakedeath(list/sources) + remove_trait(TRAIT_FAKEDEATH, sources) + if(stat != DEAD) + tod = null + update_stat() + +/mob/living/proc/fakedeath(source) + if(stat == DEAD) + return + add_trait(TRAIT_FAKEDEATH, source) + tod = worldtime2text() + update_stat() \ No newline at end of file diff --git a/code/modules/mob/mob_cleanup.dm b/code/modules/mob/mob_cleanup.dm deleted file mode 100644 index d62c077e73..0000000000 --- a/code/modules/mob/mob_cleanup.dm +++ /dev/null @@ -1,5 +0,0 @@ -//Methods that need to be cleaned. -/* INFORMATION -Put (mob/proc)s here that are in dire need of a code cleanup. -*/ - diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index 999a6090eb..0295d4f7fa 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -372,9 +372,6 @@ It's fairly easy to fix if dealing with single letters but not so much with comp if("monkey") if(M.viruses && (locate(/datum/disease/transformation/jungle_fever) in M.viruses)) return 2 - if("abductor") - if(M.mind in SSticker.mode.abductors) - return 2 return TRUE if(M.mind && LAZYLEN(M.mind.antag_datums)) //they have an antag datum! return TRUE diff --git a/code/modules/mob/say.dm b/code/modules/mob/say.dm index fad3a70bcf..365f62e88b 100644 --- a/code/modules/mob/say.dm +++ b/code/modules/mob/say.dm @@ -82,4 +82,4 @@ return 0 /mob/proc/lingcheck() - return LINGHIVE_NONE \ No newline at end of file + return LINGHIVE_NONE diff --git a/code/modules/mob/status_procs.dm b/code/modules/mob/status_procs.dm index 591498c084..53095045f6 100644 --- a/code/modules/mob/status_procs.dm +++ b/code/modules/mob/status_procs.dm @@ -1,7 +1,7 @@ //Here are the procs used to modify status effects of a mob. //The effects include: stun, knockdown, unconscious, sleeping, resting, jitteriness, dizziness, ear damage, -// eye damage, eye_blind, eye_blurry, druggy, DISABILITY_BLIND disability, and DISABILITY_NEARSIGHT disability. +// eye damage, eye_blind, eye_blurry, druggy, TRAIT_BLIND trait, and TRAIT_NEARSIGHT trait. /////////////////////////////////// STUN //////////////////////////////////// @@ -28,7 +28,7 @@ return 0 /mob/living/proc/Unconscious(amount, updating = TRUE, ignore_canunconscious = FALSE) //Can't go below remaining duration - if((status_flags & CANUNCONSCIOUS) || ignore_canunconscious) + if(((status_flags & CANUNCONSCIOUS) && !has_trait(TRAIT_STUNIMMUNE)) || ignore_canunconscious) var/datum/status_effect/incapacitating/unconscious/U = IsUnconscious() if(U) U.duration = max(world.time + amount, U.duration) @@ -37,7 +37,7 @@ return U /mob/living/proc/SetUnconscious(amount, updating = TRUE, ignore_canunconscious = FALSE) //Sets remaining duration - if((status_flags & CANUNCONSCIOUS) || ignore_canunconscious) + if(((status_flags & CANUNCONSCIOUS) && !has_trait(TRAIT_STUNIMMUNE)) || ignore_canunconscious) var/datum/status_effect/incapacitating/unconscious/U = IsUnconscious() if(amount <= 0) if(U) @@ -49,7 +49,7 @@ return U /mob/living/proc/AdjustUnconscious(amount, updating = TRUE, ignore_canunconscious = FALSE) //Adds to remaining duration - if((status_flags & CANUNCONSCIOUS) || ignore_canunconscious) + if(((status_flags & CANUNCONSCIOUS) && !has_trait(TRAIT_STUNIMMUNE)) || ignore_canunconscious) var/datum/status_effect/incapacitating/unconscious/U = IsUnconscious() if(U) U.duration += amount @@ -164,7 +164,7 @@ blind_minimum = 1 if(isliving(src)) var/mob/living/L = src - if(L.has_disability(DISABILITY_BLIND)) + if(L.has_trait(TRAIT_BLIND)) blind_minimum = 1 eye_blind = max(eye_blind+amount, blind_minimum) if(!eye_blind) @@ -185,7 +185,7 @@ blind_minimum = 1 if(isliving(src)) var/mob/living/L = src - if(L.has_disability(DISABILITY_BLIND)) + if(L.has_trait(TRAIT_BLIND)) blind_minimum = 1 eye_blind = blind_minimum if(!eye_blind) diff --git a/code/modules/modular_computers/computers/item/computer.dm b/code/modules/modular_computers/computers/item/computer.dm index 0b149c20da..03e57c5ec6 100644 --- a/code/modules/modular_computers/computers/item/computer.dm +++ b/code/modules/modular_computers/computers/item/computer.dm @@ -175,11 +175,11 @@ turn_on(user) /obj/item/device/modular_computer/emag_act(mob/user) - if(emagged) + if(obj_flags & EMAGGED) to_chat(user, "\The [src] was already emagged.") return 0 else - emagged = TRUE + obj_flags |= EMAGGED to_chat(user, "You emag \the [src]. It's screen briefly shows a \"OVERRIDE ACCEPTED: New software downloads available.\" message.") return 1 diff --git a/code/modules/modular_computers/file_system/program.dm b/code/modules/modular_computers/file_system/program.dm index 57ec83798d..75fdc3ea37 100644 --- a/code/modules/modular_computers/file_system/program.dm +++ b/code/modules/modular_computers/file_system/program.dm @@ -81,7 +81,7 @@ if(!access_to_check) // No required_access, allow it. return 1 - if(!transfer && computer && computer.emagged) //emags can bypass the execution locks but not the download ones. + if(!transfer && computer && (computer.obj_flags & EMAGGED)) //emags can bypass the execution locks but not the download ones. return 1 if(IsAdminGhost(user)) diff --git a/code/modules/modular_computers/file_system/programs/file_browser.dm b/code/modules/modular_computers/file_system/programs/file_browser.dm index f42174320e..11a4b8e125 100644 --- a/code/modules/modular_computers/file_system/programs/file_browser.dm +++ b/code/modules/modular_computers/file_system/programs/file_browser.dm @@ -112,7 +112,7 @@ if(!printer) error = "Missing Hardware: Your computer does not have required hardware to complete this operation." return 1 - if(!printer.print_text("" + prepare_printjob(F.stored_data) + "", open_file)) + if(!printer.print_text("" + prepare_printjob(F.stored_data) + "", open_file)) error = "Hardware error: Printer was unable to print the file. It may be out of paper." return 1 if("PRG_copytousb") diff --git a/code/modules/modular_computers/file_system/programs/ntdownloader.dm b/code/modules/modular_computers/file_system/programs/ntdownloader.dm index be38f8a7b6..b2fe7a0f64 100644 --- a/code/modules/modular_computers/file_system/programs/ntdownloader.dm +++ b/code/modules/modular_computers/file_system/programs/ntdownloader.dm @@ -29,7 +29,7 @@ return 0 // Attempting to download antag only program, but without having emagged computer. No. - if(PRG.available_on_syndinet && !computer.emagged) + if(PRG.available_on_syndinet && !(computer.obj_flags & EMAGGED)) return 0 var/obj/item/computer_hardware/hard_drive/hard_drive = computer.all_components[MC_HDD] @@ -140,7 +140,7 @@ "size" = P.size ))) data["hackedavailable"] = 0 - if(computer.emagged) // If we are running on emagged computer we have access to some "bonus" software + if(computer.obj_flags & EMAGGED) // If we are running on emagged computer we have access to some "bonus" software var/list/hacked_programs[0] for(var/S in SSnetworks.station_network.available_antag_software) var/datum/computer_file/program/P = S diff --git a/code/modules/ninja/suit/n_suit_verbs/ninja_stars.dm b/code/modules/ninja/suit/n_suit_verbs/ninja_stars.dm index 5725112da5..31ac62d9fc 100644 --- a/code/modules/ninja/suit/n_suit_verbs/ninja_stars.dm +++ b/code/modules/ninja/suit/n_suit_verbs/ninja_stars.dm @@ -15,4 +15,4 @@ /obj/item/throwing_star/ninja name = "ninja throwing star" throwforce = 30 - embedded_pain_multiplier = 6 + embedding = list("embedded_pain_multiplier" = 6, "embed_chance" = 100, "embedded_fall_chance" = 0) diff --git a/code/modules/ninja/suit/ninjaDrainAct.dm b/code/modules/ninja/suit/ninjaDrainAct.dm index cdae56571f..8b9abbee7a 100644 --- a/code/modules/ninja/suit/ninjaDrainAct.dm +++ b/code/modules/ninja/suit/ninjaDrainAct.dm @@ -50,10 +50,10 @@ They *could* go in their appropriate files, but this is supposed to be modular else break - if(!emagged) + if(!(obj_flags & EMAGGED)) flick("apc-spark", G) playsound(loc, "sparks", 50, 1) - emagged = TRUE + obj_flags |= EMAGGED locked = FALSE update_icon() diff --git a/code/modules/ninja/suit/suit_process.dm b/code/modules/ninja/suit/suit_process.dm index 99f801ed76..c9e955b359 100644 --- a/code/modules/ninja/suit/suit_process.dm +++ b/code/modules/ninja/suit/suit_process.dm @@ -1,6 +1,4 @@ /obj/item/clothing/suit/space/space_ninja/proc/ntick(mob/living/carbon/human/U = affecting) - set background = BACKGROUND_ENABLED - //Runs in the background while the suit is initialized. //Requires charge or stealth to process. spawn while(s_initialized) diff --git a/code/modules/paperwork/contract.dm b/code/modules/paperwork/contract.dm index d911ee7036..563d5a83ad 100644 --- a/code/modules/paperwork/contract.dm +++ b/code/modules/paperwork/contract.dm @@ -202,7 +202,7 @@ if(!user.mind.hasSoul) to_chat(user, "You do not possess a soul.") return 0 - if(user.has_disability(DISABILITY_DUMB)) + if(user.has_trait(TRAIT_DUMB)) to_chat(user, "You quickly scrawl 'your name' on the contract.") signIncorrectly() return 0 diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index c666160da4..35ec667027 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -93,7 +93,7 @@ return if(ishuman(usr)) var/mob/living/carbon/human/H = usr - if(H.has_disability(DISABILITY_CLUMSY) && prob(25)) + if(H.has_trait(TRAIT_CLUMSY) && prob(25)) to_chat(H, "You cut yourself on the paper! Ahhhh! Ahhhhh!") H.damageoverlaytemp = 9001 H.update_damage_hud() @@ -317,7 +317,7 @@ to_chat(user, "You stamp the paper with your rubber stamp.") if(P.is_hot()) - if(user.has_disability(DISABILITY_CLUMSY) && prob(10)) + if(user.has_trait(TRAIT_CLUMSY) && prob(10)) user.visible_message("[user] accidentally ignites themselves!", \ "You miss the paper and accidentally light yourself on fire!") user.dropItemToGround(P) diff --git a/code/modules/paperwork/paperplane.dm b/code/modules/paperwork/paperplane.dm index af33dfb28c..3753febca2 100644 --- a/code/modules/paperwork/paperplane.dm +++ b/code/modules/paperwork/paperplane.dm @@ -65,7 +65,7 @@ update_icon() else if(P.is_hot()) - if(user.has_disability(DISABILITY_CLUMSY) && prob(10)) + if(user.has_trait(TRAIT_CLUMSY) && prob(10)) user.visible_message("[user] accidentally ignites themselves!", \ "You miss [src] and accidentally light yourself on fire!") user.dropItemToGround(P) diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm index 1d85753de0..4b093641d9 100644 --- a/code/modules/paperwork/pen.dm +++ b/code/modules/paperwork/pen.dm @@ -126,7 +126,7 @@ /obj/item/pen/afterattack(obj/O, mob/living/user, proximity) //Changing Name/Description of items. Only works if they have the 'unique_rename' var set if(isobj(O) && proximity) - if(O.unique_rename) + if(O.obj_flags & UNIQUE_RENAME) var/penchoice = input(user, "What would you like to edit?", "Rename or change description?") as null|anything in list("Rename","Change description") if(!QDELETED(O) && user.canUseTopic(O, be_close = TRUE)) @@ -196,7 +196,7 @@ w_class = initial(w_class) name = initial(name) hitsound = initial(hitsound) - embed_chance = initial(embed_chance) + embedding = embedding.setRating(embed_chance = EMBED_CHANCE) throwforce = initial(throwforce) playsound(user, 'sound/weapons/saberoff.ogg', 5, 1) to_chat(user, "[src] can now be concealed.") @@ -206,7 +206,7 @@ w_class = WEIGHT_CLASS_NORMAL name = "energy dagger" hitsound = 'sound/weapons/blade1.ogg' - embed_chance = 100 //rule of cool + embedding = embedding.setRating(embed_chance = 100) //rule of cool throwforce = 35 playsound(user, 'sound/weapons/saberon.ogg', 5, 1) to_chat(user, "[src] is now active.") diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index 422e62c10f..695b01e0b7 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -315,7 +315,7 @@ update_state |= UPSTATE_OPENED1 if(opened==2) update_state |= UPSTATE_OPENED2 - else if(emagged || malfai) + else if((obj_flags & EMAGGED) || malfai) update_state |= UPSTATE_BLUESCREEN else if(panel_open) update_state |= UPSTATE_WIREEXP @@ -395,8 +395,8 @@ "You hear a crack.") return //SSticker.mode:apcs-- //XSI said no and I agreed. -rastaf0 - else if (emagged) // We emag board, not APC's frame - emagged = FALSE + else if (obj_flags & EMAGGED) // We emag board, not APC's frame + obj_flags &= ~EMAGGED user.visible_message(\ "[user.name] has discarded emaged power control board from [src.name]!",\ "You discarded shorten board.") @@ -479,7 +479,7 @@ to_chat(user, "There is nothing to secure!") return update_icon() - else if(emagged) + else if(obj_flags & EMAGGED) to_chat(user, "The interface is broken!") else if((stat & MAINT) && !opened) ..() //its an empty closed frame... theres no wires to expose! @@ -669,7 +669,7 @@ togglelock(user) /obj/machinery/power/apc/proc/togglelock(mob/living/user) - if(emagged) + if(obj_flags & EMAGGED) to_chat(user, "The interface is broken!") else if(opened) to_chat(user, "You must close the cover to swipe an ID card!") @@ -705,7 +705,7 @@ update_icon() /obj/machinery/power/apc/emag_act(mob/user) - if(!emagged && !malfhack) + if(!(obj_flags & EMAGGED) && !malfhack) if(opened) to_chat(user, "You must close the cover to swipe an ID card!") else if(panel_open) @@ -715,7 +715,7 @@ else flick("apc-spark", src) playsound(src, "sparks", 75, 1) - emagged = TRUE + obj_flags |= EMAGGED locked = FALSE to_chat(user, "You emag the APC interface.") update_icon() @@ -852,7 +852,7 @@ switch(action) if("lock") if(usr.has_unlimited_silicon_privilege) - if(emagged || (stat & (BROKEN|MAINT))) + if((obj_flags & EMAGGED) || (stat & (BROKEN|MAINT))) to_chat(usr, "The APC does not respond to the command.") else locked = !locked diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm index 3ad5dd5357..883df8a6c9 100644 --- a/code/modules/power/cable.dm +++ b/code/modules/power/cable.dm @@ -41,7 +41,7 @@ By design, d1 is the smallest direction and d2 is the highest level = 1 //is underfloor layer = WIRE_LAYER //Above hidden pipes, GAS_PIPE_HIDDEN_LAYER anchored = TRUE - on_blueprints = TRUE + obj_flags = CAN_BE_HIT | ON_BLUEPRINTS var/d1 = 0 // cable direction 1 (see above) var/d2 = 1 // cable direction 2 (see above) var/datum/powernet/powernet diff --git a/code/modules/power/port_gen.dm b/code/modules/power/port_gen.dm index 73f48a2b28..ba3379df45 100644 --- a/code/modules/power/port_gen.dm +++ b/code/modules/power/port_gen.dm @@ -206,9 +206,9 @@ return ..() /obj/machinery/power/port_gen/pacman/emag_act(mob/user) - if(emagged) + if(obj_flags & EMAGGED) return - emagged = TRUE + obj_flags |= EMAGGED emp_act(EMP_HEAVY) /obj/machinery/power/port_gen/pacman/attack_hand(mob/user) @@ -273,7 +273,7 @@ power_output-- src.updateUsrDialog() if (href_list["action"] == "higher_power") - if (power_output < 4 || emagged) + if (power_output < 4 || (obj_flags & EMAGGED)) power_output++ src.updateUsrDialog() if (href_list["action"] == "close") diff --git a/code/modules/power/power.dm b/code/modules/power/power.dm index 933cfc70e0..0bd230a166 100644 --- a/code/modules/power/power.dm +++ b/code/modules/power/power.dm @@ -10,7 +10,7 @@ name = null icon = 'icons/obj/power.dmi' anchored = TRUE - on_blueprints = TRUE + obj_flags = CAN_BE_HIT | ON_BLUEPRINTS var/datum/powernet/powernet = null use_power = NO_POWER_USE idle_power_usage = 0 diff --git a/code/modules/power/singularity/emitter.dm b/code/modules/power/singularity/emitter.dm index 74bc0551e0..c7a026dd83 100644 --- a/code/modules/power/singularity/emitter.dm +++ b/code/modules/power/singularity/emitter.dm @@ -260,7 +260,7 @@ return if(W.GetID()) - if(emagged) + if(obj_flags & EMAGGED) to_chat(user, "The lock seems to be broken!") return if(allowed(user)) @@ -292,10 +292,10 @@ return ..() /obj/machinery/power/emitter/emag_act(mob/user) - if(emagged) + if(obj_flags & EMAGGED) return locked = FALSE - emagged = TRUE + obj_flags |= EMAGGED if(user) user.visible_message("[user.name] emags [src].","You short out the lock.") diff --git a/code/modules/power/singularity/narsie.dm b/code/modules/power/singularity/narsie.dm index 666211fbd0..0fa1439796 100644 --- a/code/modules/power/singularity/narsie.dm +++ b/code/modules/power/singularity/narsie.dm @@ -195,7 +195,6 @@ grav_pull = 0 /obj/singularity/narsie/wizard/eat() - set background = BACKGROUND_ENABLED // if(defer_powernet_rebuild != 2) // defer_powernet_rebuild = 1 for(var/atom/X in urange(consume_range,src,1)) diff --git a/code/modules/power/singularity/singularity.dm b/code/modules/power/singularity/singularity.dm index f4b749c0e0..3c7d00b3fd 100644 --- a/code/modules/power/singularity/singularity.dm +++ b/code/modules/power/singularity/singularity.dm @@ -27,7 +27,7 @@ var/last_warning var/consumedSupermatter = 0 //If the singularity has eaten a supermatter shard and can go to stage six resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF | FREEZE_PROOF - dangerous_possession = TRUE + obj_flags = CAN_BE_HIT | DANGEROUS_POSSESSION /obj/singularity/Initialize(mapload, starting_energy = 50) //CARN: admin-alert for chuckle-fuckery. @@ -251,7 +251,6 @@ /obj/singularity/proc/eat() - set background = BACKGROUND_ENABLED for(var/tile in spiral_range_turfs(grav_pull, src)) var/turf/T = tile if(!T || !isturf(loc)) diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm index 485299a704..5e62ea9729 100644 --- a/code/modules/power/supermatter/supermatter.dm +++ b/code/modules/power/supermatter/supermatter.dm @@ -538,12 +538,19 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_shard) if(!istype(W) || (W.flags_1 & ABSTRACT_1) || !istype(user)) return if(istype(W, /obj/item/scalpel/supermatter)) + var/obj/item/scalpel/supermatter/scalpel = W playsound(src, W.usesound, 100, 1) - to_chat(user, "You carefully begin to scrape \the [src] with \the [W]...") + to_chat(user, "You carefully begin to scrape [src] with [W]...") if(do_after(user, 60 * W.toolspeed, TRUE, src)) - to_chat(user, "You extract a sliver from \the [src]. \The [src] begins to react violently!") - new /obj/item/nuke_core/supermatter_sliver(drop_location()) - matter_power += 200 + if (scalpel.usesLeft) + to_chat(user, "You extract a sliver from [src]. [src] begins to react violently!") + new /obj/item/nuke_core/supermatter_sliver(drop_location()) + matter_power += 200 + scalpel.usesLeft-- + if (!scalpel.usesLeft) + to_chat(user, "A tiny piece of [W] falls off, rendering it useless!") + else + to_chat(user, "You fail to extract a sliver from [src]. [W] isn't sharp enough anymore!") else if(user.dropItemToGround(W)) user.visible_message("As [user] touches \the [src] with \a [W], silence fills the room...",\ "You touch \the [src] with \the [W], and everything suddenly goes silent.\n\The [W] flashes into dust as you flinch away from \the [src].",\ diff --git a/code/modules/power/tesla/coil.dm b/code/modules/power/tesla/coil.dm index a0977d93e3..e42715af22 100644 --- a/code/modules/power/tesla/coil.dm +++ b/code/modules/power/tesla/coil.dm @@ -68,7 +68,7 @@ /obj/machinery/power/tesla_coil/tesla_act(var/power) if(anchored && !panel_open) - being_shocked = TRUE + obj_flags |= BEING_SHOCKED //don't lose arc power when it's not connected to anything //please place tesla coils all around the station to maximize effectiveness var/power_produced = powernet ? power / power_loss : power diff --git a/code/modules/power/tesla/energy_ball.dm b/code/modules/power/tesla/energy_ball.dm index d8891e6cf6..6b50b5e321 100644 --- a/code/modules/power/tesla/energy_ball.dm +++ b/code/modules/power/tesla/energy_ball.dm @@ -18,12 +18,14 @@ dissipate_delay = 5 dissipate_strength = 1 var/list/orbiting_balls = list() + var/miniball = FALSE var/produced_power var/energy_to_raise = 32 var/energy_to_lower = -20 /obj/singularity/energy_ball/Initialize(mapload, starting_energy = 50, is_miniball = FALSE) . = ..() + miniball = is_miniball if(!is_miniball) set_light(10, 7, "#EEEEFF") @@ -42,10 +44,11 @@ . = ..() /obj/singularity/energy_ball/admin_investigate_setup() - if(istype(loc, /obj/singularity/energy_ball)) - return + if(miniball) + return //don't annnounce miniballs ..() + /obj/singularity/energy_ball/process() if(!orbiting) handle_energy() @@ -77,7 +80,7 @@ //we face the last thing we zapped, so this lets us favor that direction a bit var/move_bias = pick(GLOB.alldirs) for(var/i in 0 to move_amount) - var/move_dir = pick(GLOB.alldirs + move_bias) //ensures large-ball teslas don't just sit around + var/move_dir = pick(GLOB.alldirs + move_bias) //ensures large-ball teslas don't just sit around if(target && prob(10)) move_dir = get_dir(src,target) var/turf/T = get_step(src, move_dir) @@ -193,7 +196,7 @@ if(istype(A, /obj/machinery/power/tesla_coil)) var/dist = get_dist(source, A) var/obj/machinery/power/tesla_coil/C = A - if(dist <= zap_range && (dist < closest_dist || !closest_tesla_coil) && !C.being_shocked) + if(dist <= zap_range && (dist < closest_dist || !closest_tesla_coil) && !(C.obj_flags & BEING_SHOCKED)) closest_dist = dist //we use both of these to save on istype and typecasting overhead later on @@ -229,7 +232,7 @@ else if(ismachinery(A)) var/obj/machinery/M = A var/dist = get_dist(source, A) - if(dist <= zap_range && (dist < closest_dist || !closest_machine) && !M.being_shocked) + if(dist <= zap_range && (dist < closest_dist || !closest_machine) && !(M.obj_flags & BEING_SHOCKED)) closest_machine = M closest_atom = A closest_dist = dist @@ -240,7 +243,7 @@ else if(istype(A, /obj/structure/blob)) var/obj/structure/blob/B = A var/dist = get_dist(source, A) - if(dist <= zap_range && (dist < closest_dist || !closest_tesla_coil) && !B.being_shocked) + if(dist <= zap_range && (dist < closest_dist || !closest_tesla_coil) && !(B.obj_flags & BEING_SHOCKED)) closest_blob = B closest_atom = A closest_dist = dist @@ -251,7 +254,7 @@ else if(isstructure(A)) var/obj/structure/S = A var/dist = get_dist(source, A) - if(dist <= zap_range && (dist < closest_dist || !closest_tesla_coil) && !S.being_shocked) + if(dist <= zap_range && (dist < closest_dist || !closest_tesla_coil) && !(S.obj_flags & BEING_SHOCKED)) closest_structure = S closest_atom = A closest_dist = dist diff --git a/code/modules/procedural_mapping/mapGenerator.dm b/code/modules/procedural_mapping/mapGenerator.dm index 966ef2f9e2..95eded309c 100644 --- a/code/modules/procedural_mapping/mapGenerator.dm +++ b/code/modules/procedural_mapping/mapGenerator.dm @@ -104,8 +104,6 @@ //Requests the mapGeneratorModule(s) to (re)generate /datum/mapGenerator/proc/generate() - set background = 1 //this can get beefy - syncModules() if(!modules || !modules.len) return diff --git a/code/modules/procedural_mapping/mapGenerators/cellular.dm b/code/modules/procedural_mapping/mapGenerators/cellular.dm index 3daa7632ff..7d88f3beb0 100644 --- a/code/modules/procedural_mapping/mapGenerators/cellular.dm +++ b/code/modules/procedural_mapping/mapGenerators/cellular.dm @@ -38,8 +38,6 @@ current_state = old_state.Copy() /datum/mapGenerator/ca/generate() - set background = 1 - //Abandon all hope for efficency all who enter here //Maybe some less basic implemetation later, but this is just simple admin tool initialize() diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 8f52f26936..1a0e756277 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -15,8 +15,7 @@ throw_speed = 3 throw_range = 5 force = 5 - needs_permit = TRUE - unique_rename = FALSE + item_flags = NEEDS_PERMIT attack_verb = list("struck", "hit", "bashed") var/fire_sound = "gunshot" @@ -153,10 +152,10 @@ return - //Exclude lasertag guns from the DISABILITY_CLUMSY check. + //Exclude lasertag guns from the TRAIT_CLUMSY check. if(clumsy_check) if(istype(user)) - if (user.has_disability(DISABILITY_CLUMSY) && prob(40)) + if (user.has_trait(TRAIT_CLUMSY) && prob(40)) to_chat(user, "You shoot yourself in the foot with [src]!") var/shot_leg = pick("l_leg", "r_leg") process_fire(user, user, FALSE, params, shot_leg) @@ -191,7 +190,7 @@ /obj/item/gun/proc/handle_pins(mob/living/user) if(pin) - if(pin.pin_auth(user) || pin.emagged) + if(pin.pin_auth(user) || (pin.obj_flags & EMAGGED)) return TRUE else pin.auth_fail(user) diff --git a/code/modules/projectiles/guns/ballistic/revolver.dm b/code/modules/projectiles/guns/ballistic/revolver.dm index 4e9da3b22d..692d9b4733 100644 --- a/code/modules/projectiles/guns/ballistic/revolver.dm +++ b/code/modules/projectiles/guns/ballistic/revolver.dm @@ -89,7 +89,7 @@ desc = "A cheap Martian knock-off of a classic law enforcement firearm. Uses .38-special rounds." icon_state = "detective" mag_type = /obj/item/ammo_box/magazine/internal/cylinder/rev38 - unique_rename = TRUE + obj_flags = UNIQUE_RENAME unique_reskin = list("Default" = "detective", "Leopard Spots" = "detective_leopard", "Black Panther" = "detective_panther", @@ -261,7 +261,7 @@ slot_flags = SLOT_BACK mag_type = /obj/item/ammo_box/magazine/internal/shot/dual sawn_desc = "Omar's coming!" - unique_rename = TRUE + obj_flags = UNIQUE_RENAME unique_reskin = list("Default" = "dshotgun", "Dark Red Finish" = "dshotgun-d", "Ash" = "dshotgun-f", @@ -307,7 +307,6 @@ slot_flags = null mag_type = /obj/item/ammo_box/magazine/internal/shot/improvised sawn_desc = "I'm just here for the gasoline." - unique_rename = FALSE unique_reskin = null var/slung = FALSE @@ -349,7 +348,7 @@ clumsy_check = 0 /obj/item/gun/ballistic/revolver/reverse/can_trigger_gun(mob/living/user) - if((user.has_disability(DISABILITY_CLUMSY)) || (user.mind && user.mind.assigned_role == "Clown")) + if((user.has_trait(TRAIT_CLUMSY)) || (user.mind && user.mind.assigned_role == "Clown")) return ..() if(process_fire(user, user, FALSE, null, "head")) user.visible_message("[user] somehow manages to shoot [user.p_them()]self in the face!", "You somehow shoot yourself in the face! How the hell?!") diff --git a/code/modules/projectiles/guns/ballistic/toy.dm b/code/modules/projectiles/guns/ballistic/toy.dm index a04d6f1b54..af666951cb 100644 --- a/code/modules/projectiles/guns/ballistic/toy.dm +++ b/code/modules/projectiles/guns/ballistic/toy.dm @@ -11,7 +11,7 @@ burst_size = 3 can_suppress = TRUE clumsy_check = 0 - needs_permit = 0 + item_flags = NONE casing_ejector = FALSE /obj/item/gun/ballistic/automatic/toy/unrestricted @@ -53,7 +53,7 @@ throwforce = 0 mag_type = /obj/item/ammo_box/magazine/internal/shot/toy clumsy_check = 0 - needs_permit = 0 + item_flags = NONE casing_ejector = FALSE can_suppress = FALSE @@ -81,7 +81,7 @@ desc = "A bullpup two-round burst toy SMG, designated 'C-20r'. Ages 8 and up." icon = 'icons/obj/guns/toy.dmi' can_suppress = TRUE - needs_permit = 0 + item_flags = NONE mag_type = /obj/item/ammo_box/magazine/toy/smgm45/riot casing_ejector = FALSE @@ -97,7 +97,7 @@ desc = "A heavily modified toy light machine gun, designated 'L6 SAW'. Ages 8 and up." icon = 'icons/obj/guns/toy.dmi' can_suppress = FALSE - needs_permit = 0 + item_flags = NONE mag_type = /obj/item/ammo_box/magazine/toy/m762/riot casing_ejector = FALSE diff --git a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm index 3aa501a6b8..f3ff4e965d 100644 --- a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm +++ b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm @@ -5,8 +5,8 @@ item_state = "kineticgun" ammo_type = list(/obj/item/ammo_casing/energy/kinetic) cell_type = /obj/item/stock_parts/cell/emproof - needs_permit = 0 - unique_rename = 1 + item_flags = NONE + obj_flags = UNIQUE_RENAME weapon_weight = WEAPON_LIGHT can_flashlight = 1 flight_x_offset = 15 diff --git a/code/modules/projectiles/guns/energy/laser.dm b/code/modules/projectiles/guns/energy/laser.dm index 37bb252adc..cad3512766 100644 --- a/code/modules/projectiles/guns/energy/laser.dm +++ b/code/modules/projectiles/guns/energy/laser.dm @@ -14,7 +14,7 @@ desc = "A modified version of the basic laser gun, this one fires less concentrated energy bolts designed for target practice." ammo_type = list(/obj/item/ammo_casing/energy/laser/practice) clumsy_check = 0 - needs_permit = 0 + item_flags = NONE /obj/item/gun/energy/laser/retro name ="retro laser gun" @@ -117,7 +117,7 @@ desc = "A retro laser gun modified to fire harmless blue beams of light. Sound effects included!" ammo_type = list(/obj/item/ammo_casing/energy/laser/bluetag) clumsy_check = 0 - needs_permit = 0 + item_flags = NONE pin = /obj/item/device/firing_pin/tag/blue ammo_x_offset = 2 selfcharge = 1 @@ -128,7 +128,7 @@ desc = "A retro laser gun modified to fire harmless beams red of light. Sound effects included!" ammo_type = list(/obj/item/ammo_casing/energy/laser/redtag) clumsy_check = 0 - needs_permit = 0 + item_flags = NONE pin = /obj/item/device/firing_pin/tag/red ammo_x_offset = 2 selfcharge = 1 diff --git a/code/modules/projectiles/guns/energy/megabuster.dm b/code/modules/projectiles/guns/energy/megabuster.dm index c4096ad5cb..6fd2de777b 100644 --- a/code/modules/projectiles/guns/energy/megabuster.dm +++ b/code/modules/projectiles/guns/energy/megabuster.dm @@ -5,9 +5,9 @@ item_state = "megabuster" w_class = WEIGHT_CLASS_SMALL ammo_type = list(/obj/item/ammo_casing/energy/megabuster) - clumsy_check = 0 - needs_permit = 0 - selfcharge = 1 + clumsy_check = FALSE + item_flags = NEEDS_PERMIT + selfcharge = TRUE cell_type = "/obj/item/stock_parts/cell/pulse" icon = 'icons/obj/guns/VGguns.dmi' diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index cced6d9544..1226172262 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -89,7 +89,7 @@ suppressed = TRUE ammo_type = list(/obj/item/ammo_casing/energy/bolt) weapon_weight = WEAPON_LIGHT - unique_rename = 0 + obj_flags = 0 overheat_time = 20 holds_charge = TRUE unique_frequency = TRUE @@ -125,10 +125,11 @@ force = 12 sharpness = IS_SHARP can_charge = 0 - heat = 3800 + heat = 3800 usesound = 'sound/items/welder.ogg' - toolspeed = 0.7 //plasmacutters can be used as welders for a few things, and are faster than standard welders + tool_behaviour = TOOL_WELDER + toolspeed = 0.7 //plasmacutters can be used as welders, and are faster than standard welders /obj/item/gun/energy/plasmacutter/examine(mob/user) ..() diff --git a/code/modules/projectiles/guns/misc/blastcannon.dm b/code/modules/projectiles/guns/misc/blastcannon.dm index 2c6bb8112b..865689e440 100644 --- a/code/modules/projectiles/guns/misc/blastcannon.dm +++ b/code/modules/projectiles/guns/misc/blastcannon.dm @@ -7,7 +7,7 @@ w_class = WEIGHT_CLASS_NORMAL force = 10 fire_sound = 'sound/weapons/blastcannon.ogg' - needs_permit = FALSE + item_flags = NONE clumsy_check = FALSE randomspread = FALSE diff --git a/code/modules/projectiles/pins.dm b/code/modules/projectiles/pins.dm index 92b2f8c0d4..b571f5ce5e 100644 --- a/code/modules/projectiles/pins.dm +++ b/code/modules/projectiles/pins.dm @@ -37,9 +37,9 @@ to_chat(user, "This firearm already has a firing pin installed.") /obj/item/device/firing_pin/emag_act(mob/user) - if(emagged) + if(obj_flags & EMAGGED) return - emagged = TRUE + obj_flags |= EMAGGED to_chat(user, "You override the authentication mechanism.") /obj/item/device/firing_pin/proc/gun_insert(mob/living/user, obj/item/gun/G) @@ -129,7 +129,7 @@ // A gun with ultra-honk pin is useful for clown and useless for everyone else. /obj/item/device/firing_pin/clown/ultra/pin_auth(mob/living/user) playsound(src.loc, 'sound/items/bikehorn.ogg', 50, 1) - if(!(user.has_disability(DISABILITY_CLUMSY)) && !(user.mind && user.mind.assigned_role == "Clown")) + if(!(user.has_trait(TRAIT_CLUMSY)) && !(user.mind && user.mind.assigned_role == "Clown")) return 0 return 1 diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 5704fe9f44..d3b6063824 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -391,6 +391,7 @@ yo = targloc.y - curloc.y xo = targloc.x - curloc.x setAngle(Get_Angle(src, targloc)) + if(isliving(source) && params) var/list/calculated = calculate_projectile_angle_and_pixel_offsets(source, params) p_x = calculated[2] diff --git a/code/modules/projectiles/projectile/energy.dm b/code/modules/projectiles/projectile/energy.dm index d19079d563..b5c966f03f 100644 --- a/code/modules/projectiles/projectile/energy.dm +++ b/code/modules/projectiles/projectile/energy.dm @@ -28,7 +28,7 @@ var/mob/living/carbon/C = target if(C.dna && C.dna.check_mutation(HULK)) C.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" )) - else if(C.status_flags & CANKNOCKDOWN) + else if((C.status_flags & CANKNOCKDOWN) && !C.has_trait(TRAIT_STUNIMMUNE)) addtimer(CALLBACK(C, /mob/living/carbon.proc/do_jitter_animation, jitter), 5) /obj/item/projectile/energy/electrode/on_range() //to ensure the bolt sparks when it reaches the end of its range if it didn't hit a target yet diff --git a/code/modules/projectiles/projectile/special.dm b/code/modules/projectiles/projectile/special.dm index 152cff6c74..af21066dc4 100644 --- a/code/modules/projectiles/projectile/special.dm +++ b/code/modules/projectiles/projectile/special.dm @@ -539,7 +539,7 @@ hal_target.stuttering += 20 if(hal_target.dna && hal_target.dna.check_mutation(HULK)) hal_target.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" )) - else if(hal_target.status_flags & CANKNOCKDOWN) + else if((hal_target.status_flags & CANKNOCKDOWN) && !hal_target.has_trait(TRAIT_STUNIMMUNE)) addtimer(CALLBACK(hal_target, /mob/living/carbon.proc/do_jitter_animation, 20), 5) /obj/item/projectile/hallucination/disabler diff --git a/code/modules/reagents/chemistry/holder.dm b/code/modules/reagents/chemistry/holder.dm index 6080763548..71c7f9fa0d 100644 --- a/code/modules/reagents/chemistry/holder.dm +++ b/code/modules/reagents/chemistry/holder.dm @@ -442,32 +442,8 @@ update_total() if(my_atom) my_atom.on_reagent_change(DEL_REAGENT) - check_ignoreslow(my_atom) - check_gofast(my_atom) - check_goreallyfast(my_atom) return 1 -/datum/reagents/proc/check_ignoreslow(mob/M) - if(ismob(M)) - if(M.reagents.has_reagent("morphine")) - return 1 - else - M.status_flags &= ~IGNORESLOWDOWN - -/datum/reagents/proc/check_gofast(mob/M) - if(ismob(M)) - if(M.reagents.has_reagent("unholywater")||M.reagents.has_reagent("nuka_cola")||M.reagents.has_reagent("stimulants")||M.reagents.has_reagent("ephedrine")) - return 1 - else - M.status_flags &= ~GOTTAGOFAST - -/datum/reagents/proc/check_goreallyfast(mob/M) - if(ismob(M)) - if(M.reagents.has_reagent("methamphetamine")) - return 1 - else - M.status_flags &= ~GOTTAGOREALLYFAST - /datum/reagents/proc/update_total() var/list/cached_reagents = reagent_list total_volume = 0 diff --git a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm index a1e913a14e..47d6b9697c 100644 --- a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm +++ b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm @@ -82,12 +82,12 @@ use_power(2500) /obj/machinery/chem_dispenser/emag_act(mob/user) - if(emagged) + if(obj_flags & EMAGGED) to_chat(user, "[src] has no functional safeties to emag.") return to_chat(user, "You short out [src]'s safeties.") dispensable_reagents |= emagged_reagents//add the emagged reagents to the dispensable ones - emagged = TRUE + obj_flags |= EMAGGED /obj/machinery/chem_dispenser/ex_act(severity, target) if(severity < 3) diff --git a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm index 68770490e9..aed7b0b5e8 100644 --- a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm @@ -1282,6 +1282,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_name = "eggnog" glass_desc = "For enjoying the most wonderful time of the year." + /datum/reagent/consumable/ethanol/narsour name = "Nar'Sour" id = "narsour" diff --git a/code/modules/reagents/chemistry/reagents/drink_reagents.dm b/code/modules/reagents/chemistry/reagents/drink_reagents.dm index ab241d7f43..c56d10c3c9 100644 --- a/code/modules/reagents/chemistry/reagents/drink_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drink_reagents.dm @@ -396,13 +396,24 @@ glass_name = "glass of Nuka Cola" glass_desc = "Don't cry, Don't raise your eye, It's only nuclear wasteland." +/datum/reagent/consumable/nuka_cola/on_mob_add(mob/M) + ..() + if(isliving(M)) + var/mob/living/L = M + L.add_trait(TRAIT_GOTTAGOFAST, id) + +/datum/reagent/consumable/nuka_cola/on_mob_delete(mob/M) + if(isliving(M)) + var/mob/living/L = M + L.remove_trait(TRAIT_GOTTAGOFAST, id) + ..() + /datum/reagent/consumable/nuka_cola/on_mob_life(mob/living/M) M.Jitter(20) M.set_drugginess(30) M.dizziness +=5 M.drowsyness = 0 M.AdjustSleeping(-40, FALSE) - M.status_flags |= GOTTAGOFAST if (M.bodytemperature > BODYTEMP_NORMAL)//310.15 is the normal bodytemp. M.bodytemperature = max(BODYTEMP_NORMAL, M.bodytemperature - (5 * TEMPERATURE_DAMAGE_COEFFICIENT)) ..() diff --git a/code/modules/reagents/chemistry/reagents/drug_reagents.dm b/code/modules/reagents/chemistry/reagents/drug_reagents.dm index 534cf515d9..5e5493df18 100644 --- a/code/modules/reagents/chemistry/reagents/drug_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drug_reagents.dm @@ -166,6 +166,18 @@ addiction_threshold = 10 metabolization_rate = 0.75 * REAGENTS_METABOLISM +/datum/reagent/drug/methamphetamine/on_mob_add(mob/M) + ..() + if(isliving(M)) + var/mob/living/L = M + L.add_trait(TRAIT_GOTTAGOREALLYFAST, id) + +/datum/reagent/drug/methamphetamine/on_mob_delete(mob/M) + if(isliving(M)) + var/mob/living/L = M + L.remove_trait(TRAIT_GOTTAGOREALLYFAST, id) + ..() + /datum/reagent/drug/methamphetamine/on_mob_life(mob/living/M) var/high_message = pick("You feel hyper.", "You feel like you need to go faster.", "You feel like you can run the world.") if(prob(5)) @@ -174,7 +186,6 @@ M.AdjustKnockdown(-40, 0) M.AdjustUnconscious(-40, 0) M.adjustStaminaLoss(-2, 0) - M.status_flags |= GOTTAGOREALLYFAST M.Jitter(2) M.adjustBrainLoss(0.25) if(prob(5)) diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm index 53320e9460..ae396f4ea4 100644 --- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm @@ -41,10 +41,10 @@ M.setOxyLoss(0, 0) M.radiation = 0 M.heal_bodypart_damage(5,5, 0) - M.adjustToxLoss(-5, 0) + M.adjustToxLoss(-5, 0, TRUE) M.hallucination = 0 M.setBrainLoss(0) - M.remove_all_disabilities() + M.remove_all_traits() M.set_blurriness(0) M.set_blindness(0) M.SetKnockdown(0, 0) @@ -134,9 +134,9 @@ M.adjustOxyLoss(-3 * power, 0) M.adjustBruteLoss(-power, 0) M.adjustFireLoss(-power, 0) - M.adjustToxLoss(-power, 0) + M.adjustToxLoss(-power, 0, TRUE) //heals TOXINLOVERs M.adjustCloneLoss(-power, 0) - M.status_flags &= ~DISFIGURED + M.remove_trait(TRAIT_DISFIGURED, TRAIT_GENERIC) //fixes common causes for disfiguration . = 1 metabolization_rate = REAGENTS_METABOLISM * (0.00001 * (M.bodytemperature ** 2) + 0.5) ..() @@ -152,11 +152,40 @@ /datum/reagent/medicine/clonexadone/on_mob_life(mob/living/M) if(M.bodytemperature < T0C) M.adjustCloneLoss(0.00006 * (M.bodytemperature ** 2) - 6, 0) - M.status_flags &= ~DISFIGURED + M.remove_trait(TRAIT_DISFIGURED, TRAIT_GENERIC) . = 1 metabolization_rate = REAGENTS_METABOLISM * (0.000015 * (M.bodytemperature ** 2) + 0.75) ..() +/datum/reagent/medicine/pyroxadone + name = "Pyroxadone" + id = "pyroxadone" + description = "A mixture of cryoxadone and slime jelly, that apparently inverses the requirement for its activation." + color = "#f7832a" + taste_description = "spicy jelly" + +/datum/reagent/medicine/pyroxadone/on_mob_life(mob/living/M) + if(M.bodytemperature > BODYTEMP_HEAT_DAMAGE_LIMIT) + var/power = 0 + switch(M.bodytemperature) + if(BODYTEMP_HEAT_DAMAGE_LIMIT to 400) + power = 2 + if(400 to 460) + power = 3 + else + power = 5 + if(M.on_fire) + power *= 2 + + M.adjustOxyLoss(-2 * power, 0) + M.adjustBruteLoss(-power, 0) + M.adjustFireLoss(-1.5 * power, 0) + M.adjustToxLoss(-power, 0, TRUE) + M.adjustCloneLoss(-power, 0) + M.remove_trait(TRAIT_DISFIGURED, TRAIT_GENERIC) + . = 1 + ..() + /datum/reagent/medicine/rezadone name = "Rezadone" id = "rezadone" @@ -169,7 +198,7 @@ /datum/reagent/medicine/rezadone/on_mob_life(mob/living/M) M.setCloneLoss(0) //Rezadone is almost never used in favor of cryoxadone. Hopefully this will change that. M.heal_bodypart_damage(1,1, 0) - M.status_flags &= ~DISFIGURED + M.remove_trait(TRAIT_DISFIGURED, TRAIT_GENERIC) ..() . = 1 @@ -518,8 +547,19 @@ overdose_threshold = 45 addiction_threshold = 30 +/datum/reagent/medicine/ephedrine/on_mob_add(mob/M) + ..() + if(isliving(M)) + var/mob/living/L = M + L.add_trait(TRAIT_GOTTAGOFAST, id) + +/datum/reagent/medicine/ephedrine/on_mob_delete(mob/M) + if(isliving(M)) + var/mob/living/L = M + L.remove_trait(TRAIT_GOTTAGOFAST, id) + ..() + /datum/reagent/medicine/ephedrine/on_mob_life(mob/living/M) - M.status_flags |= GOTTAGOFAST M.AdjustStun(-20, 0) M.AdjustKnockdown(-20, 0) M.AdjustUnconscious(-20, 0) @@ -587,8 +627,19 @@ overdose_threshold = 30 addiction_threshold = 25 +/datum/reagent/medicine/morphine/on_mob_add(mob/M) + ..() + if(isliving(M)) + var/mob/living/L = M + L.add_trait(TRAIT_IGNORESLOWDOWN, id) + +/datum/reagent/medicine/morphine/on_mob_delete(mob/M) + if(isliving(M)) + var/mob/living/L = M + L.remove_trait(TRAIT_IGNORESLOWDOWN, id) + ..() + /datum/reagent/medicine/morphine/on_mob_life(mob/living/M) - M.status_flags |= IGNORESLOWDOWN switch(current_cycle) if(11) to_chat(M, "You start to feel tired..." ) @@ -652,14 +703,14 @@ var/obj/item/organ/eyes/eyes = M.getorganslot(ORGAN_SLOT_EYES) if (!eyes) return - if(M.has_disability(DISABILITY_BLIND, EYE_DAMAGE)) + if(M.has_trait(TRAIT_BLIND, EYE_DAMAGE)) if(prob(20)) to_chat(M, "Your vision slowly returns...") M.cure_blind(EYE_DAMAGE) M.cure_nearsighted(EYE_DAMAGE) M.blur_eyes(35) - else if(M.has_disability(DISABILITY_NEARSIGHT, EYE_DAMAGE)) + else if(M.has_trait(TRAIT_NEARSIGHT, EYE_DAMAGE)) to_chat(M, "The blackness in your peripheral vision fades.") M.cure_nearsighted(EYE_DAMAGE) M.blur_eyes(10) @@ -750,7 +801,7 @@ M.visible_message("[M]'s body convulses a bit, and then falls still once more.") return M.visible_message("[M]'s body convulses a bit.") - if(!M.suiciding && !(M.has_disability(DISABILITY_NOCLONE)) && !M.hellbound) + if(!M.suiciding && !(M.has_trait(TRAIT_NOCLONE)) && !M.hellbound) if(!M) return if(M.notify_ghost_cloning(source = M)) @@ -829,8 +880,19 @@ metabolization_rate = 0.5 * REAGENTS_METABOLISM overdose_threshold = 60 +/datum/reagent/medicine/stimulants/on_mob_add(mob/M) + ..() + if(isliving(M)) + var/mob/living/L = M + L.add_trait(TRAIT_GOTTAGOFAST, id) + +/datum/reagent/medicine/stimulants/on_mob_delete(mob/M) + if(isliving(M)) + var/mob/living/L = M + L.remove_trait(TRAIT_GOTTAGOFAST, id) + ..() + /datum/reagent/medicine/stimulants/on_mob_life(mob/living/M) - M.status_flags |= GOTTAGOFAST if(M.health < 50 && M.health > 0) M.adjustOxyLoss(-1*REM, 0) M.adjustToxLoss(-1*REM, 0) @@ -979,6 +1041,22 @@ ..() . = 1 +/datum/reagent/medicine/regen_jelly + name = "Regenerative Jelly" + id = "regen_jelly" + description = "Gradually regenerates all types of damage, without harming slime anatomy." + reagent_state = LIQUID + color = "#91D865" + taste_description = "jelly" + +/datum/reagent/medicine/regen_jelly/on_mob_life(mob/living/M) + M.adjustBruteLoss(-1.5*REM, 0) + M.adjustFireLoss(-1.5*REM, 0) + M.adjustOxyLoss(-1.5*REM, 0) + M.adjustToxLoss(-1.5*REM, 0, TRUE) //heals TOXINLOVERs + . = 1 + ..() + /datum/reagent/medicine/syndicate_nanites //Used exclusively by Syndicate medical cyborgs name = "Restorative Nanites" id = "syndicate_nanites" @@ -1092,8 +1170,19 @@ color = "#C8A5DC" metabolization_rate = 1 +/datum/reagent/medicine/changelingAdrenaline2/on_mob_add(mob/M) + ..() + if(isliving(M)) + var/mob/living/L = M + L.add_trait(TRAIT_GOTTAGOREALLYFAST, id) + +/datum/reagent/medicine/changelingAdrenaline2/on_mob_delete(mob/M) + if(isliving(M)) + var/mob/living/L = M + L.remove_trait(TRAIT_GOTTAGOREALLYFAST, id) + ..() + /datum/reagent/medicine/changelingAdrenaline2/on_mob_life(mob/living/M as mob) - M.status_flags |= GOTTAGOREALLYFAST M.adjustToxLoss(2, 0) . = 1 ..() @@ -1117,8 +1206,6 @@ addiction_threshold = 5 /datum/reagent/medicine/ketrazine/on_mob_life(mob/living/M) - M.status_flags |= IGNORESLOWDOWN - M.status_flags |= GOTTAGOFAST M.adjustToxLoss(-3*REM, 0) M.adjustBruteLoss(-5*REM, 0) M.adjustFireLoss(-5*REM, 0) @@ -1167,6 +1254,14 @@ ..() +/datum/reagent/medicine/ketrazine/on_mob_add(mob/living/M) + M.add_trait(TRAIT_IGNORESLOWDOWN, id) + M.add_trait(TRAIT_GOTTAGOFAST, id) + +/datum/reagent/medicine/ketrazine/on_mob_delete(mob/living/M) + M.remove_trait(TRAIT_IGNORESLOWDOWN, id) + M.remove_trait(TRAIT_GOTTAGOFAST, id) + /datum/reagent/medicine/ketrazine/overdose_process(mob/living/M) if(prob(66)) to_chat(M, " You feel a sense of impending doom. ") diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index 634136bfaf..309273900d 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -219,7 +219,7 @@ if(data >= 75) // 30 units, 135 seconds if(iscultist(M) || is_servant_of_ratvar(M)) if(iscultist(M)) - SSticker.mode.remove_cultist(M.mind, 1, 1) + SSticker.mode.remove_cultist(M.mind, FALSE, TRUE) else if(is_servant_of_ratvar(M)) remove_servant_of_ratvar(M) M.jitteriness = 0 @@ -397,17 +397,17 @@ ..() return -/datum/reagent/stableslimetoxin +/datum/reagent/mutationtoxin name = "Stable Mutation Toxin" id = "stablemutationtoxin" - description = "A humanizing toxin produced by slimes." + description = "A humanizing toxin." color = "#5EFF3B" //RGB: 94, 255, 59 metabolization_rate = INFINITY //So it instantly removes all of itself taste_description = "slime" var/datum/species/race = /datum/species/human var/mutationtext = "The pain subsides. You feel... human." -/datum/reagent/stableslimetoxin/on_mob_life(mob/living/carbon/human/H) +/datum/reagent/mutationtoxin/on_mob_life(mob/living/carbon/human/H) ..() if(!istype(H)) return @@ -417,7 +417,7 @@ addtimer(CALLBACK(src, .proc/mutate, H), 30) return -/datum/reagent/stableslimetoxin/proc/mutate(mob/living/carbon/human/H) +/datum/reagent/mutationtoxin/proc/mutate(mob/living/carbon/human/H) if(QDELETED(H)) return var/current_species = H.dna.species.type @@ -428,130 +428,158 @@ else to_chat(H, "The pain vanishes suddenly. You feel no different.") -/datum/reagent/stableslimetoxin/classic //The one from plasma on green slimes +/datum/reagent/mutationtoxin/classic //The one from plasma on green slimes name = "Mutation Toxin" id = "mutationtoxin" - description = "A corruptive toxin produced by slimes." + description = "A corruptive toxin." color = "#13BC5E" // rgb: 19, 188, 94 race = /datum/species/jelly/slime mutationtext = "The pain subsides. Your whole body feels like slime." -/datum/reagent/stableslimetoxin/lizard +/datum/reagent/mutationtoxin/lizard name = "Lizard Mutation Toxin" id = "lizardmutationtoxin" - description = "A lizarding toxin produced by slimes." + description = "A lizarding toxin." color = "#5EFF3B" //RGB: 94, 255, 59 race = /datum/species/lizard mutationtext = "The pain subsides. You feel... scaly." -/datum/reagent/stableslimetoxin/fly +/datum/reagent/mutationtoxin/fly name = "Fly Mutation Toxin" id = "flymutationtoxin" - description = "An insectifying toxin produced by slimes." + description = "An insectifying toxin." color = "#5EFF3B" //RGB: 94, 255, 59 race = /datum/species/fly mutationtext = "The pain subsides. You feel... buzzy." -/datum/reagent/stableslimetoxin/pod +/datum/reagent/mutationtoxin/moth + name = "Moth Mutation Toxin" + id = "mothmutationtoxin" + description = "A glowing toxin." + color = "#5EFF3B" //RGB: 94, 255, 59 + race = /datum/species/moth + mutationtext = "The pain subsides. You feel... attracted to light." + +/datum/reagent/mutationtoxin/pod name = "Podperson Mutation Toxin" id = "podmutationtoxin" - description = "A vegetalizing toxin produced by slimes." + description = "A vegetalizing toxin." color = "#5EFF3B" //RGB: 94, 255, 59 race = /datum/species/pod mutationtext = "The pain subsides. You feel... plantlike." -/datum/reagent/stableslimetoxin/jelly +/datum/reagent/mutationtoxin/jelly name = "Imperfect Mutation Toxin" id = "jellymutationtoxin" - description = "An jellyfying toxin produced by slimes." + description = "An jellyfying toxin." color = "#5EFF3B" //RGB: 94, 255, 59 race = /datum/species/jelly mutationtext = "The pain subsides. You feel... wobbly." -/datum/reagent/stableslimetoxin/golem +/datum/reagent/mutationtoxin/golem name = "Golem Mutation Toxin" id = "golemmutationtoxin" - description = "A crystal toxin produced by slimes." + description = "A crystal toxin." color = "#5EFF3B" //RGB: 94, 255, 59 race = /datum/species/golem/random mutationtext = "The pain subsides. You feel... rocky." -/datum/reagent/stableslimetoxin/abductor +/datum/reagent/mutationtoxin/abductor name = "Abductor Mutation Toxin" id = "abductormutationtoxin" - description = "An alien toxin produced by slimes." + description = "An alien toxin." color = "#5EFF3B" //RGB: 94, 255, 59 race = /datum/species/abductor mutationtext = "The pain subsides. You feel... alien." -/datum/reagent/stableslimetoxin/android +/datum/reagent/mutationtoxin/android name = "Android Mutation Toxin" id = "androidmutationtoxin" - description = "A robotic toxin produced by slimes." + description = "A robotic toxin." color = "#5EFF3B" //RGB: 94, 255, 59 race = /datum/species/android mutationtext = "The pain subsides. You feel... artificial." //BLACKLISTED RACES -/datum/reagent/stableslimetoxin/skeleton +/datum/reagent/mutationtoxin/skeleton name = "Skeleton Mutation Toxin" id = "skeletonmutationtoxin" - description = "A scary toxin produced by slimes." + description = "A scary toxin." color = "#5EFF3B" //RGB: 94, 255, 59 race = /datum/species/skeleton mutationtext = "The pain subsides. You feel... spooky." -/datum/reagent/stableslimetoxin/zombie +/datum/reagent/mutationtoxin/zombie name = "Zombie Mutation Toxin" id = "zombiemutationtoxin" - description = "An undead toxin produced by slimes." + description = "An undead toxin." color = "#5EFF3B" //RGB: 94, 255, 59 race = /datum/species/zombie //Not the infectious kind. The days of xenobio zombie outbreaks are long past. mutationtext = "The pain subsides. You feel... undead." -/datum/reagent/stableslimetoxin/ash +/datum/reagent/mutationtoxin/ash name = "Ash Mutation Toxin" id = "ashmutationtoxin" - description = "An ashen toxin produced by slimes." + description = "An ashen toxin." color = "#5EFF3B" //RGB: 94, 255, 59 race = /datum/species/lizard/ashwalker mutationtext = "The pain subsides. You feel... savage." //DANGEROUS RACES -/datum/reagent/stableslimetoxin/shadow +/datum/reagent/mutationtoxin/shadow name = "Shadow Mutation Toxin" id = "shadowmutationtoxin" - description = "A dark toxin produced by slimes." + description = "A dark toxin." color = "#5EFF3B" //RGB: 94, 255, 59 race = /datum/species/shadow mutationtext = "The pain subsides. You feel... darker." -/datum/reagent/stableslimetoxin/plasma +/datum/reagent/mutationtoxin/plasma name = "Plasma Mutation Toxin" id = "plasmamutationtoxin" - description = "A plasma-based toxin produced by slimes." + description = "A plasma-based toxin." color = "#5EFF3B" //RGB: 94, 255, 59 race = /datum/species/plasmaman mutationtext = "The pain subsides. You feel... flammable." -/datum/reagent/stableslimetoxin/unstable //PSYCH - name = "Unstable Mutation Toxin" - id = "unstablemutationtoxin" - description = "An unstable and unpredictable corruptive toxin produced by slimes." +/datum/reagent/slime_toxin + name = "Slime Mutation Toxin" + id = "slime_toxin" + description = "A toxin that turns organic material into slime." color = "#5EFF3B" //RGB: 94, 255, 59 - mutationtext = "The pain subsides. You feel... different." + taste_description = "slime" + metabolization_rate = 0.2 -/datum/reagent/stableslimetoxin/unstable/on_mob_life(mob/living/carbon/human/H) - var/list/possible_morphs = list() - for(var/type in subtypesof(/datum/species)) - var/datum/species/S = type - if(initial(S.blacklisted)) - continue - possible_morphs += S - race = pick(possible_morphs) +/datum/reagent/slime_toxin/on_mob_life(mob/living/carbon/human/H) ..() + if(!istype(H)) + return + if(!H.dna || !H.dna.species || !(H.dna.species.species_traits & SPECIES_ORGANIC)) + return + + if(isjellyperson(H)) + to_chat(H, "Your jelly shifts and morphs, turning you into another subspecies!") + var/species_type = pick(subtypesof(/datum/species/jelly)) + H.set_species(species_type) + H.reagents.del_reagent(id) + + switch(current_cycle) + if(1 to 6) + if(prob(10)) + to_chat(H, "[pick("You don't feel very well.", "Your skin feels a little slimy.")]") + if(7 to 12) + if(prob(10)) + to_chat(H, "[pick("Your appendages are melting away.", "Your limbs begin to lose their shape.")]") + if(13 to 19) + if(prob(10)) + to_chat(H, "[pick("You feel your internal organs turning into slime.", "You feel very slimelike.")]") + if(20 to INFINITY) + var/species_type = pick(subtypesof(/datum/species/jelly)) + H.set_species(species_type) + H.reagents.del_reagent(id) + to_chat(H, "You've become \a jellyperson!") /datum/reagent/mulligan name = "Mulligan Toxin" @@ -1175,8 +1203,19 @@ color = "E1A116" taste_description = "sourness" +/datum/reagent/stimulum/on_mob_add(mob/M) + ..() + if(isliving(M)) + var/mob/living/L = M + L.add_trait(TRAIT_GOTTAGOFAST, id) + +/datum/reagent/stimulum/on_mob_delete(mob/M) + if(isliving(M)) + var/mob/living/L = M + L.remove_trait(TRAIT_GOTTAGOFAST, id) + ..() + /datum/reagent/stimulum/on_mob_life(mob/living/M) // Has a speedup, and the anti-stun effects of nicotine. - M.status_flags |= GOTTAGOFAST M.AdjustStun(-20, 0) M.AdjustKnockdown(-20, 0) M.AdjustUnconscious(-20, 0) @@ -1194,8 +1233,16 @@ color = "90560B" taste_description = "burning" -/datum/reagent/nitryl/on_mob_life(mob/living/M) //Has just a speedup - M.status_flags |= GOTTAGOFAST +/datum/reagent/nitryl/on_mob_add(mob/M) + ..() + if(isliving(M)) + var/mob/living/L = M + L.add_trait(TRAIT_GOTTAGOFAST, id) + +/datum/reagent/nitryl/on_mob_delete(mob/M) + if(isliving(M)) + var/mob/living/L = M + L.remove_trait(TRAIT_GOTTAGOFAST, id) ..() /////////////////////////Coloured Crayon Powder//////////////////////////// @@ -1709,10 +1756,10 @@ ..() if(isliving(M)) var/mob/living/L = M - L.add_disability(DISABILITY_PACIFISM, CHEMICAL_DISABILITY) + L.add_trait(TRAIT_PACIFISM, id) /datum/reagent/pax/on_mob_delete(mob/M) if(isliving(M)) var/mob/living/L = M - L.remove_disability(DISABILITY_PACIFISM, CHEMICAL_DISABILITY) - ..() \ No newline at end of file + L.remove_trait(TRAIT_PACIFISM, id) + ..() diff --git a/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm b/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm index 7f4e481a29..a361499bae 100644 --- a/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm @@ -226,3 +226,63 @@ M.electrocute_act(rand(5,20), "Teslium in their body", 1, 1) //Override because it's caused from INSIDE of you playsound(M, "sparks", 50, 1) ..() + +/datum/reagent/teslium/energized_jelly + name = "Energized Jelly" + id = "energized_jelly" + description = "Electrically-charged jelly. Boosts jellypeople's nervous system, but only shocks other lifeforms." + reagent_state = LIQUID + color = "#CAFF43" + taste_description = "jelly" + +/datum/reagent/teslium/energized_jelly/on_mob_life(mob/living/M) + if(isjellyperson(M)) + shock_timer = 0 //immune to shocks + M.AdjustStun(-40, 0) + M.AdjustKnockdown(-40, 0) + M.AdjustUnconscious(-40, 0) + M.adjustStaminaLoss(-2, 0) + if(isluminescent(M)) + var/mob/living/carbon/human/H = M + var/datum/species/jelly/luminescent/L = H.dna.species + L.extract_cooldown = max(0, L.extract_cooldown - 20) + ..() + +/datum/reagent/firefighting_foam + name = "Firefighting Foam" + id = "firefighting_foam" + description = "A historical fire suppressant. Originally believed to simply displace oxygen to starve fires, it actually interferes with the combustion reaction itself. Vastly superior to the cheap water-based extinguishers found on NT vessels." + reagent_state = LIQUID + color = "#A6FAFF55" + taste_description = "the inside of a fire extinguisher" + +/datum/reagent/firefighting_foam/reaction_turf(turf/open/T, reac_volume) + if (!istype(T)) + return + + if(reac_volume >= 1) + var/obj/effect/particle_effect/foam/firefighting/F = (locate(/obj/effect/particle_effect/foam) in T) + if(!F) + F = new(T) + else if(istype(F)) + F.lifetime = initial(F.lifetime) //reduce object churn a little bit when using smoke by keeping existing foam alive a bit longer + + var/obj/effect/hotspot/hotspot = (locate(/obj/effect/hotspot) in T) + if(hotspot && !isspaceturf(T)) + if(T.air) + var/datum/gas_mixture/G = T.air + if(G.temperature > T20C) + G.temperature = max(G.temperature/2,T20C) + G.react() + qdel(hotspot) + +/datum/reagent/firefighting_foam/reaction_obj(obj/O, reac_volume) + O.extinguish() + +/datum/reagent/firefighting_foam/reaction_mob(mob/living/M, method=TOUCH, reac_volume) + if(!istype(M)) + return + if(method in list(VAPOR, TOUCH)) + M.adjust_fire_stacks(-reac_volume) + M.ExtinguishMob() + ..() \ No newline at end of file diff --git a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm index 0823d64bf1..e8f9387e19 100644 --- a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm @@ -143,7 +143,7 @@ taste_description = "mint" /datum/reagent/toxin/minttoxin/on_mob_life(mob/living/M) - if(M.has_disability(DISABILITY_FAT)) + if(M.has_trait(TRAIT_FAT)) M.gib() return ..() @@ -164,19 +164,23 @@ toxpwr = 0.5 taste_description = "death" -/datum/reagent/toxin/zombiepowder/on_mob_life(mob/living/carbon/M) - M.status_flags |= FAKEDEATH - M.adjustOxyLoss(0.5*REM, 0) - M.Knockdown(100, 0) - M.silent = max(M.silent, 5) - M.tod = worldtime2text() +/datum/reagent/toxin/zombiepowder/on_mob_add(mob/M) ..() - . = 1 + if(isliving(M)) + var/mob/living/L = M + L.fakedeath(id) /datum/reagent/toxin/zombiepowder/on_mob_delete(mob/M) - M.status_flags &= ~FAKEDEATH + if(isliving(M)) + var/mob/living/L = M + L.cure_fakedeath(id) ..() +/datum/reagent/toxin/zombiepowder/on_mob_life(mob/living/carbon/M) + M.adjustOxyLoss(0.5*REM, 0) + ..() + . = 1 + /datum/reagent/toxin/mindbreaker name = "Mindbreaker Toxin" id = "mindbreaker" diff --git a/code/modules/reagents/chemistry/recipes.dm b/code/modules/reagents/chemistry/recipes.dm index d90b93ea06..9e73f12f10 100644 --- a/code/modules/reagents/chemistry/recipes.dm +++ b/code/modules/reagents/chemistry/recipes.dm @@ -21,18 +21,8 @@ return //I recommend you set the result amount to the total volume of all components. -/datum/chemical_reaction/proc/chemical_mob_spawn(datum/reagents/holder, amount_to_spawn, reaction_name, mob_faction = "chemicalsummon") - var/static/list/chemical_mob_spawn_meancritters = list() // list of possible hostile mobs - var/static/list/chemical_mob_spawn_nicecritters = list() // and possible friendly mobs +/datum/chemical_reaction/proc/chemical_mob_spawn(datum/reagents/holder, amount_to_spawn, reaction_name, mob_class = HOSTILE_SPAWN, mob_faction = "chemicalsummon") if(holder && holder.my_atom) - if (chemical_mob_spawn_meancritters.len <= 0 || chemical_mob_spawn_nicecritters.len <= 0) - for (var/T in typesof(/mob/living/simple_animal)) - var/mob/living/simple_animal/SA = T - switch(initial(SA.gold_core_spawnable)) - if(HOSTILE_SPAWN) - chemical_mob_spawn_meancritters += T - if(FRIENDLY_SPAWN) - chemical_mob_spawn_nicecritters += T var/atom/A = holder.my_atom var/turf/T = get_turf(A) var/message = "A [reaction_name] reaction has occurred in [get_area_name(T)] [ADMIN_COORDJMP(T)]" @@ -50,18 +40,13 @@ for(var/mob/living/carbon/C in viewers(get_turf(holder.my_atom), null)) C.flash_act() - for(var/i = 1, i <= amount_to_spawn, i++) - var/chosen - if (reaction_name == "Friendly Gold Slime") - chosen = pick(chemical_mob_spawn_nicecritters) - else - chosen = pick(chemical_mob_spawn_meancritters) - var/spawnloc = get_turf(holder.my_atom) - var/mob/living/simple_animal/C = new chosen(spawnloc) - C.faction |= mob_faction + + for(var/i in 1 to amount_to_spawn) + var/mob/living/simple_animal/S = create_random_mob(get_turf(holder.my_atom), mob_class) + S.faction |= mob_faction if(prob(50)) for(var/j = 1, j <= rand(1, 3), j++) - step(C, pick(NORTH,SOUTH,EAST,WEST)) + step(S, pick(NORTH,SOUTH,EAST,WEST)) /datum/chemical_reaction/proc/goonchem_vortex(turf/T, setting_type, range) for(var/atom/movable/X in orange(range, T)) diff --git a/code/modules/reagents/chemistry/recipes/medicine.dm b/code/modules/reagents/chemistry/recipes/medicine.dm index 6029d57cfc..c2ebe2856e 100644 --- a/code/modules/reagents/chemistry/recipes/medicine.dm +++ b/code/modules/reagents/chemistry/recipes/medicine.dm @@ -184,6 +184,12 @@ results = list("cryoxadone" = 3) required_reagents = list("stable_plasma" = 1, "acetone" = 1, "mutagen" = 1) +/datum/chemical_reaction/pyroxadone + name = "Pyroxadone" + id = "pyroxadone" + results = list("pyroxadone" = 2) + required_reagents = list("cryoxadone" = 1, "slimejelly" = 1) + /datum/chemical_reaction/clonexadone name = "Clonexadone" id = "clonexadone" @@ -221,6 +227,12 @@ results = list("tricordrazine" = 3) required_reagents = list("bicaridine" = 1, "kelotane" = 1, "antitoxin" = 1) +/datum/chemical_reaction/regen_jelly + name = "Regenerative Jelly" + id = "regen_jelly" + results = list("regen_jelly" = 2) + required_reagents = list("tricordrazine" = 1, "slimejelly" = 1) + /datum/chemical_reaction/corazone name = "Corazone" id = "corazone" diff --git a/code/modules/reagents/chemistry/recipes/others.dm b/code/modules/reagents/chemistry/recipes/others.dm index 6bf359fa98..5999911cb1 100644 --- a/code/modules/reagents/chemistry/recipes/others.dm +++ b/code/modules/reagents/chemistry/recipes/others.dm @@ -125,96 +125,12 @@ required_reagents = list("ammonia" = 2, "nitrogen" = 1, "oxygen" = 2) required_temp = 525 -////////////////////////////////// Mutation Toxins /////////////////////////////////// - -/datum/chemical_reaction/stable_mutation_toxin - name = "Stable Mutation Toxin" - id = "stablemutationtoxin" - results = list("stablemutationtoxin" = 1) - required_reagents = list("unstablemutationtoxin" = 1, "blood" = 1) //classic - -/datum/chemical_reaction/lizard_mutation_toxin - name = "Lizard Mutation Toxin" - id = "lizardmutationtoxin" - results = list("lizardmutationtoxin" = 1) - required_reagents = list("unstablemutationtoxin" = 1, "radium" = 1) //mutant - -/datum/chemical_reaction/fly_mutation_toxin - name = "Fly Mutation Toxin" - id = "flymutationtoxin" - results = list("flymutationtoxin" = 1) - required_reagents = list("unstablemutationtoxin" = 1, "mutagen" = 1) //VERY mutant - -/datum/chemical_reaction/jelly_mutation_toxin - name = "Imperfect Mutation Toxin" - id = "jellymutationtoxin" - results = list("jellymutationtoxin" = 1) - required_reagents = list("unstablemutationtoxin" = 1, "slimejelly" = 1) //why would you even make this - -/datum/chemical_reaction/abductor_mutation_toxin - name = "Abductor Mutation Toxin" - id = "abductormutationtoxin" - results = list("abductormutationtoxin" = 1) - required_reagents = list("unstablemutationtoxin" = 1, "morphine" = 1) - -/datum/chemical_reaction/android_mutation_toxin - name = "Android Mutation Toxin" - id = "androidmutationtoxin" - results = list("androidmutationtoxin" = 1) - required_reagents = list("unstablemutationtoxin" = 1, "teslium" = 1) //beep boop - -/datum/chemical_reaction/pod_mutation_toxin - name = "Podperson Mutation Toxin" - id = "podmutationtoxin" - results = list("podmutationtoxin" = 1) - required_reagents = list("unstablemutationtoxin" = 1, "eznutriment" = 1) //plant food - -/datum/chemical_reaction/golem_mutation_toxin - name = "Golem Mutation Toxin" - id = "golemmutationtoxin" - results = list("golemmutationtoxin" = 1) - required_reagents = list("unstablemutationtoxin" = 1, "silver" = 1) //not too hard to get but also not just there in xenobio - - -//BLACKLISTED RACES -/datum/chemical_reaction/skeleton_mutation_toxin - name = "Skeleton Mutation Toxin" - id = "skeletonmutationtoxin" - results = list("skeletonmutationtoxin" = 1) - required_reagents = list("amutationtoxin" = 1, "milk" = 1) //good for yer bones - -/datum/chemical_reaction/zombie_mutation_toxin - name = "Zombie Mutation Toxin" - id = "zombiemutationtoxin" - results = list("zombiemutationtoxin" = 1) - required_reagents = list("amutationtoxin" = 1, "toxin" = 1) - -/datum/chemical_reaction/ash_mutation_toxin //ash lizard - name = "Ash Mutation Toxin" - id = "ashmutationtoxin" - results = list("ashmutationtoxin" = 1) - required_reagents = list("amutationtoxin" = 1, "lizardmutationtoxin" = 1, "ash" = 1) - - -//DANGEROUS RACES -/datum/chemical_reaction/plasma_mutation_toxin - name = "Plasma Mutation Toxin" - id = "plasmamutationtoxin" - results = list("plasmamutationtoxin" = 1) - required_reagents = list("skeletonmutationtoxin" = 1, "plasma" = 1, "uranium" = 1) //this is very fucking powerful, so it's hard to make - -/datum/chemical_reaction/shadow_mutation_toxin - name = "Shadow Mutation Toxin" - id = "shadowmutationtoxin" - results = list("shadowmutationtoxin" = 1) - required_reagents = list("amutationtoxin" = 1, "liquid_dark_matter" = 1, "holywater" = 1) - //Technically a mutation toxin /datum/chemical_reaction/mulligan name = "Mulligan" id = "mulligan" results = list("mulligan" = 1) - required_reagents = list("stablemutationtoxin" = 1, "mutagen" = 1) + required_reagents = list("slime_toxin" = 1, "mutagen" = 1) ////////////////////////////////// VIROLOGY ////////////////////////////////////////// diff --git a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm index 9f11498ee5..a430d93fba 100644 --- a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm +++ b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm @@ -379,6 +379,13 @@ mix_message = "A jet of sparks flies from the mixture as it merges into a flickering slurry." required_temp = 400 +/datum/chemical_reaction/energized_jelly + name = "Energized Jelly" + id = "energized_jelly" + results = list("energized_jelly" = 2) + required_reagents = list("slimejelly" = 1, "teslium" = 1) + mix_message = "The slime jelly starts glowing intermittently." + /datum/chemical_reaction/reagent_explosion/teslium_lightning name = "Teslium Destabilization" id = "teslium_lightning" @@ -418,3 +425,11 @@ strengthdiv = 7 required_temp = 575 modifier = 1 + +/datum/chemical_reaction/firefighting_foam + name = "Firefighting Foam" + id = "firefighting_foam" + results = list("firefighting_foam" = 3) + required_reagents = list("stabilizing_agent" = 1,"fluorosurfactant" = 1,"carbon" = 1) + required_temp = 200 + is_cold_recipe = 1 diff --git a/code/modules/reagents/chemistry/recipes/slime_extracts.dm b/code/modules/reagents/chemistry/recipes/slime_extracts.dm index 71297930ac..44f904b0a7 100644 --- a/code/modules/reagents/chemistry/recipes/slime_extracts.dm +++ b/code/modules/reagents/chemistry/recipes/slime_extracts.dm @@ -48,21 +48,27 @@ //Green /datum/chemical_reaction/slime/slimemutate name = "Mutation Toxin" - id = "mutationtoxin" - results = list("mutationtoxin" = 1) + id = "slimetoxin" + results = list("slime_toxin" = 1) required_reagents = list("plasma" = 1) required_other = 1 required_container = /obj/item/slime_extract/green -//Mutated Green -/datum/chemical_reaction/slime/slimemutate_unstable - name = "Unstable Mutation Toxin" - id = "unstablemutationtoxin" - results = list("unstablemutationtoxin" = 1) +/datum/chemical_reaction/slime/slimehuman + name = "Human Mutation Toxin" + id = "humanmuttoxin" + results = list("stablemutationtoxin" = 1) + required_reagents = list("blood" = 1) + required_other = 1 + required_container = /obj/item/slime_extract/green + +/datum/chemical_reaction/slime/slimelizard + name = "Lizard Mutation Toxin" + id = "lizardmuttoxin" + results = list("lizardmutationtoxin" = 1) required_reagents = list("radium" = 1) required_other = 1 required_container = /obj/item/slime_extract/green - mix_message = "The mixture rapidly expands and contracts, its appearance shifting into a sickening green." //Metal /datum/chemical_reaction/slime/slimemetal @@ -110,7 +116,7 @@ /datum/chemical_reaction/slime/slimemobspawn/proc/summon_mobs(datum/reagents/holder, turf/T) T.visible_message("The slime extract begins to vibrate violently!") - addtimer(CALLBACK(src, .proc/chemical_mob_spawn, holder, 5, "Gold Slime"), 50) + addtimer(CALLBACK(src, .proc/chemical_mob_spawn, holder, 5, "Gold Slime", HOSTILE_SPAWN), 50) /datum/chemical_reaction/slime/slimemobspawn/lesser name = "Slime Crit Lesser" @@ -119,7 +125,7 @@ /datum/chemical_reaction/slime/slimemobspawn/lesser/summon_mobs(datum/reagents/holder, turf/T) T.visible_message("The slime extract begins to vibrate violently!") - addtimer(CALLBACK(src, .proc/chemical_mob_spawn, holder, 3, "Lesser Gold Slime", "neutral"), 50) + addtimer(CALLBACK(src, .proc/chemical_mob_spawn, holder, 3, "Lesser Gold Slime", HOSTILE_SPAWN, "neutral"), 50) /datum/chemical_reaction/slime/slimemobspawn/friendly name = "Slime Crit Friendly" @@ -128,7 +134,7 @@ /datum/chemical_reaction/slime/slimemobspawn/friendly/summon_mobs(datum/reagents/holder, turf/T) T.visible_message("The slime extract begins to vibrate adorably!") - addtimer(CALLBACK(src, .proc/chemical_mob_spawn, holder, 1, "Friendly Gold Slime", "neutral"), 50) + addtimer(CALLBACK(src, .proc/chemical_mob_spawn, holder, 1, "Friendly Gold Slime", FRIENDLY_SPAWN, "neutral"), 50) //Silver /datum/chemical_reaction/slime/slimebork @@ -140,7 +146,6 @@ /datum/chemical_reaction/slime/slimebork/on_reaction(datum/reagents/holder) //BORK BORK BORK - var/list/borks = getborks() var/turf/T = get_turf(holder.my_atom) playsound(T, 'sound/effects/phasein.ogg', 100, 1) @@ -149,7 +154,7 @@ C.flash_act() for(var/i in 1 to 4 + rand(1,2)) - var/chosen = pick(borks) + var/chosen = getbork() var/obj/B = new chosen(T) if(prob(5))//Fry it! var/obj/item/reagent_containers/food/snacks/deepfryholder/fried @@ -161,36 +166,16 @@ step(B, pick(NORTH,SOUTH,EAST,WEST)) ..() -/datum/chemical_reaction/slime/slimebork/proc/getborks() - var/list/blocked = list(/obj/item/reagent_containers/food/snacks, - /obj/item/reagent_containers/food/snacks/store/bread, - /obj/item/reagent_containers/food/snacks/breadslice, - /obj/item/reagent_containers/food/snacks/store/cake, - /obj/item/reagent_containers/food/snacks/cakeslice, - /obj/item/reagent_containers/food/snacks/store, - /obj/item/reagent_containers/food/snacks/pie, - /obj/item/reagent_containers/food/snacks/kebab, - /obj/item/reagent_containers/food/snacks/pizza, - /obj/item/reagent_containers/food/snacks/pizzaslice, - /obj/item/reagent_containers/food/snacks/salad, - /obj/item/reagent_containers/food/snacks/meat, - /obj/item/reagent_containers/food/snacks/meat/slab, - /obj/item/reagent_containers/food/snacks/soup, - /obj/item/reagent_containers/food/snacks/grown, - /obj/item/reagent_containers/food/snacks/grown/mushroom, - /obj/item/reagent_containers/food/snacks/deepfryholder - ) - blocked |= typesof(/obj/item/reagent_containers/food/snacks/customizable) - - return typesof(/obj/item/reagent_containers/food/snacks) - blocked +/datum/chemical_reaction/slime/slimebork/proc/getbork() + return get_random_food() /datum/chemical_reaction/slime/slimebork/drinks name = "Slime Bork 2" id = "m_tele4" required_reagents = list("water" = 1) -/datum/chemical_reaction/slime/slimebork/drinks/getborks() - return subtypesof(/obj/item/reagent_containers/food/drinks) +/datum/chemical_reaction/slime/slimebork/drinks/getbork() + return get_random_drink() //Blue /datum/chemical_reaction/slime/slimefrost @@ -344,11 +329,11 @@ new /obj/item/slimepotion/steroid(get_turf(holder.my_atom)) ..() -/datum/chemical_reaction/slime/slimejam - name = "Slime Jam" - id = "m_jam" - results = list("slimejelly" = 10) - required_reagents = list("sugar" = 1) +/datum/chemical_reaction/slime/slimeregen + name = "Slime Regen" + id = "m_regen" + results = list("regen_jelly" = 5) + required_reagents = list("blood" = 1) required_container = /obj/item/slime_extract/purple required_other = 1 diff --git a/code/modules/recycling/disposal/bin.dm b/code/modules/recycling/disposal/bin.dm index fee9e55d47..2af691679c 100644 --- a/code/modules/recycling/disposal/bin.dm +++ b/code/modules/recycling/disposal/bin.dm @@ -6,7 +6,6 @@ icon = 'icons/obj/atmospherics/pipes/disposal.dmi' anchored = TRUE density = TRUE - on_blueprints = TRUE armor = list(melee = 25, bullet = 10, laser = 10, energy = 100, bomb = 0, bio = 100, rad = 100, fire = 90, acid = 30) max_integrity = 200 resistance_flags = FIRE_PROOF diff --git a/code/modules/recycling/disposal/pipe.dm b/code/modules/recycling/disposal/pipe.dm index 4f1f9c74d1..02ca211cb8 100644 --- a/code/modules/recycling/disposal/pipe.dm +++ b/code/modules/recycling/disposal/pipe.dm @@ -6,7 +6,7 @@ icon = 'icons/obj/atmospherics/pipes/disposal.dmi' anchored = TRUE density = FALSE - on_blueprints = TRUE + obj_flags = CAN_BE_HIT | ON_BLUEPRINTS level = 1 // underfloor only dir = NONE // dir will contain dominant direction for junction pipes max_integrity = 200 diff --git a/code/modules/research/departmental_circuit_imprinter.dm b/code/modules/research/departmental_circuit_imprinter.dm index 06e7c531b8..01c4a6a22c 100644 --- a/code/modules/research/departmental_circuit_imprinter.dm +++ b/code/modules/research/departmental_circuit_imprinter.dm @@ -144,7 +144,7 @@ /obj/machinery/rnd/circuit_imprinter/department/proc/ui_header() var/list/l = list() l += "
[host_research.organization] [department_tag] Department Circuit Imprinter" - l += "Security protocols: [emagged? "Disabled" : "Enabled"]" + l += "Security protocols: [(obj_flags & EMAGGED) ? "Disabled" : "Enabled"]" l += "Material Amount: [materials.total_amount] / [materials.max_amount]" l += "Chemical volume: [reagents.total_volume] / [reagents.maximum_volume]" l += "Synchronize Research" diff --git a/code/modules/research/departmental_lathe.dm b/code/modules/research/departmental_lathe.dm index dc3c8ad66f..ab893e7853 100644 --- a/code/modules/research/departmental_lathe.dm +++ b/code/modules/research/departmental_lathe.dm @@ -187,7 +187,7 @@ /obj/machinery/rnd/protolathe/department/proc/ui_header() var/list/l = list() l += "
[host_research.organization] [department_tag] Department Lathe" - l += "Security protocols: [emagged? "Disabled" : "Enabled"]" + l += "Security protocols: [(obj_flags & EMAGGED) ? "Disabled" : "Enabled"]" l += "Material Amount: [materials.total_amount] / [materials.max_amount]" l += "Chemical volume: [reagents.total_volume] / [reagents.maximum_volume]" l += "Synchronize Research" diff --git a/code/modules/research/designs/autolathe_designs.dm b/code/modules/research/designs/autolathe_designs.dm index f0e0d924dd..443fef319c 100644 --- a/code/modules/research/designs/autolathe_designs.dm +++ b/code/modules/research/designs/autolathe_designs.dm @@ -836,15 +836,6 @@ name = "Holodisk" id = "holodisk" build_type = AUTOLATHE - materials = list(MAT_METAL = 1000) + materials = list(MAT_METAL = 100, MAT_GLASS = 100) build_path = /obj/item/disk/holodisk category = list("initial", "Misc") - -//CITADEL -/datum/design/shock_collar - name = "Shock Collar" - id = "shock_collar" - build_type = AUTOLATHE - materials = list(MAT_METAL = 5000, MAT_GLASS = 2000) - build_path = /obj/item/device/electropack/shockcollar - category = list("hacked", "Security") diff --git a/code/modules/research/designs/medical_designs.dm b/code/modules/research/designs/medical_designs.dm index c1405ad55c..02e4d89bad 100644 --- a/code/modules/research/designs/medical_designs.dm +++ b/code/modules/research/designs/medical_designs.dm @@ -54,6 +54,16 @@ category = list("Medical Designs") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE +/datum/design/cloning_disk + name = "Cloning Data Disk" + desc = "Produce additional disks for storing genetic data." + id = "cloning_disk" + build_type = PROTOLATHE + materials = list(MAT_METAL = 300, MAT_GLASS = 100, MAT_SILVER=50) + build_path = /obj/item/disk/data + category = list("Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE + /datum/design/noreactsyringe name = "Cryo Syringe" desc = "An advanced syringe that stops reagents inside from reacting. It can hold up to 20 units." diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm index 5179782177..51e2b4bb58 100644 --- a/code/modules/research/rdconsole.dm +++ b/code/modules/research/rdconsole.dm @@ -191,10 +191,10 @@ doesn't have toxins access. ..() /obj/machinery/computer/rdconsole/emag_act(mob/user) - if(!emagged) + if(!(obj_flags & EMAGGED)) to_chat(user, "You disable the security protocols") playsound(src, "sparks", 75, 1) - emagged = TRUE + obj_flags |= EMAGGED return ..() /obj/machinery/computer/rdconsole/proc/list_categories(list/categories, menu_num as num) @@ -219,7 +219,7 @@ doesn't have toxins access. var/list/l = list() l += "
[stored_research.organization] Research and Development Network" l += "Available points: [round(stored_research.research_points)] (+[round(stored_research.last_bitcoins * 60)] / minute)" - l += "Security protocols: [emagged? "Disabled" : "Enabled"]" + l += "Security protocols: [obj_flags & EMAGGED ? "Disabled" : "Enabled"]" l += "Main Menu | Back
[RDSCREEN_NOBREAK]" l += "[ui_mode == 1? "Normal View" : "Normal View"] | [ui_mode == 2? "Expert View" : "Expert View"] | [ui_mode == 3? "List View" : "List View"]" return l diff --git a/code/modules/research/server.dm b/code/modules/research/server.dm index 8a244bcea1..d712db9a47 100644 --- a/code/modules/research/server.dm +++ b/code/modules/research/server.dm @@ -128,7 +128,7 @@ add_fingerprint(usr) usr.set_machine(src) - if(!src.allowed(usr) && !emagged) + if(!src.allowed(usr) && !(obj_flags & EMAGGED)) to_chat(usr, "You do not have the required access level.") return @@ -163,9 +163,8 @@ src.updateUsrDialog() /obj/machinery/computer/rdservercontrol/emag_act(mob/user) - if(emagged) + if(obj_flags & EMAGGED) return playsound(src, "sparks", 75, 1) - emagged = TRUE + obj_flags |= EMAGGED to_chat(user, "You you disable the security protocols.") - diff --git a/code/modules/research/techweb/all_nodes.dm b/code/modules/research/techweb/all_nodes.dm index d182843105..146ecfd654 100644 --- a/code/modules/research/techweb/all_nodes.dm +++ b/code/modules/research/techweb/all_nodes.dm @@ -359,7 +359,7 @@ display_name = "Genetic Engineering" description = "We have the technology to make him." prereq_ids = list("biotech") - design_ids = list("clonecontrol", "clonepod", "clonescanner", "scan_console") + design_ids = list("clonecontrol", "clonepod", "clonescanner", "scan_console", "cloning_disk") research_cost = 2500 export_price = 5000 diff --git a/code/modules/research/xenobiology/xenobiology.dm b/code/modules/research/xenobiology/xenobiology.dm index 6f9c1134ca..a072e16059 100644 --- a/code/modules/research/xenobiology/xenobiology.dm +++ b/code/modules/research/xenobiology/xenobiology.dm @@ -34,94 +34,499 @@ if(Uses) grind_results["slimejelly"] = 20 +//Effect when activated by a Luminescent. Separated into a minor and major effect. Returns cooldown in deciseconds. +/obj/item/slime_extract/proc/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) + to_chat(user, "Nothing happened... This slime extract cannot be activated this way.") + return 0 + /obj/item/slime_extract/grey name = "grey slime extract" icon_state = "grey slime extract" +/obj/item/slime_extract/grey/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) + switch(activation_type) + if(SLIME_ACTIVATE_MINOR) + var/obj/item/reagent_containers/food/snacks/monkeycube/M = new + if(!user.put_in_active_hand(M)) + M.forceMove(user.drop_location()) + playsound(user, 'sound/effects/splat.ogg', 50, 1) + to_chat(user, "You spit out a monkey cube.") + return 120 + if(SLIME_ACTIVATE_MAJOR) + to_chat(user, "Your [name] starts pulsing...") + if(do_after(user, 40, target = user)) + var/mob/living/simple_animal/slime/S = new(get_turf(user), "grey") + playsound(user, 'sound/effects/splat.ogg', 50, 1) + to_chat(user, "You spit out [S].") + return 350 + else + return 0 + /obj/item/slime_extract/gold name = "gold slime extract" icon_state = "gold slime extract" +/obj/item/slime_extract/gold/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) + switch(activation_type) + if(SLIME_ACTIVATE_MINOR) + user.visible_message("[user] starts shaking!","Your [name] starts pulsing gently...") + if(do_after(user, 40, target = user)) + var/mob/living/simple_animal/S = create_random_mob(user.drop_location(), FRIENDLY_SPAWN) + S.faction |= "neutral" + playsound(user, 'sound/effects/splat.ogg', 50, 1) + user.visible_message("[user] spits out [S]!", "You spit out [S]!") + return 300 + + if(SLIME_ACTIVATE_MAJOR) + user.visible_message("[user] starts shaking violently!","Your [name] starts pulsing violently...") + if(do_after(user, 50, target = user)) + var/mob/living/simple_animal/S = create_random_mob(user.drop_location(), HOSTILE_SPAWN) + if(user.a_intent != INTENT_HARM) + S.faction |= "neutral" + else + S.faction |= "slime" + playsound(user, 'sound/effects/splat.ogg', 50, 1) + user.visible_message("[user] spits out [S]!", "You spit out [S]!") + return 600 + /obj/item/slime_extract/silver name = "silver slime extract" icon_state = "silver slime extract" +/obj/item/slime_extract/silver/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) + switch(activation_type) + if(SLIME_ACTIVATE_MINOR) + var/food_type = get_random_food() + var/obj/O = new food_type + if(!user.put_in_active_hand(O)) + O.forceMove(user.drop_location()) + playsound(user, 'sound/effects/splat.ogg', 50, 1) + user.visible_message("[user] spits out [O]!", "You spit out [O]!") + return 200 + if(SLIME_ACTIVATE_MAJOR) + var/drink_type = get_random_drink() + var/obj/O = new drink_type + if(!user.put_in_active_hand(O)) + O.forceMove(user.drop_location()) + playsound(user, 'sound/effects/splat.ogg', 50, 1) + user.visible_message("[user] spits out [O]!", "You spit out [O]!") + return 200 + /obj/item/slime_extract/metal name = "metal slime extract" icon_state = "metal slime extract" +/obj/item/slime_extract/metal/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) + switch(activation_type) + if(SLIME_ACTIVATE_MINOR) + var/obj/item/stack/sheet/glass/O = new(null, 5) + if(!user.put_in_active_hand(O)) + O.forceMove(user.drop_location()) + playsound(user, 'sound/effects/splat.ogg', 50, 1) + user.visible_message("[user] spits out [O]!", "You spit out [O]!") + return 150 + + if(SLIME_ACTIVATE_MAJOR) + var/obj/item/stack/sheet/metal/O = new(null, 5) + if(!user.put_in_active_hand(O)) + O.forceMove(user.drop_location()) + playsound(user, 'sound/effects/splat.ogg', 50, 1) + user.visible_message("[user] spits out [O]!", "You spit out [O]!") + return 200 + /obj/item/slime_extract/purple name = "purple slime extract" icon_state = "purple slime extract" +/obj/item/slime_extract/purple/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) + switch(activation_type) + if(SLIME_ACTIVATE_MINOR) + user.nutrition += 50 + user.blood_volume += 50 + to_chat(user, "You activate [src], and your body is refilled with fresh slime jelly!") + return 150 + + if(SLIME_ACTIVATE_MAJOR) + to_chat(user, "You activate [src], and it releases regenerative chemicals!") + user.reagents.add_reagent("regen_jelly",10) + return 600 + /obj/item/slime_extract/darkpurple name = "dark purple slime extract" icon_state = "dark purple slime extract" +/obj/item/slime_extract/darkpurple/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) + switch(activation_type) + if(SLIME_ACTIVATE_MINOR) + var/obj/item/stack/sheet/mineral/plasma/O = new(null, 1) + if(!user.put_in_active_hand(O)) + O.forceMove(user.drop_location()) + playsound(user, 'sound/effects/splat.ogg', 50, 1) + user.visible_message("[user] spits out [O]!", "You spit out [O]!") + return 150 + + if(SLIME_ACTIVATE_MAJOR) + var/turf/open/T = get_turf(user) + if(istype(T)) + T.atmos_spawn_air("plasma=20") + to_chat(user, "You activate [src], and a cloud of plasma bursts out of your skin!") + return 900 + /obj/item/slime_extract/orange name = "orange slime extract" icon_state = "orange slime extract" +/obj/item/slime_extract/orange/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) + switch(activation_type) + if(SLIME_ACTIVATE_MINOR) + to_chat(user, "You activate [src]. You start feeling hot!") + user.reagents.add_reagent("capsaicin",10) + return 150 + + if(SLIME_ACTIVATE_MAJOR) + user.reagents.add_reagent("phosphorus",5)// + user.reagents.add_reagent("potassium",5) // = smoke, along with any reagents inside mr. slime + user.reagents.add_reagent("sugar",5) // + to_chat(user, "You activate [src], and a cloud of smoke bursts out of your skin!") + return 450 + /obj/item/slime_extract/yellow name = "yellow slime extract" icon_state = "yellow slime extract" +/obj/item/slime_extract/yellow/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) + switch(activation_type) + if(SLIME_ACTIVATE_MINOR) + if(species.glow_intensity != LUMINESCENT_DEFAULT_GLOW) + to_chat(user, "Your glow is already enhanced!") + return + species.update_glow(user, 5) + addtimer(CALLBACK(species, /datum/species/jelly/luminescent.proc/update_glow, user, LUMINESCENT_DEFAULT_GLOW), 600) + to_chat(user, "You start glowing brighter.") + + if(SLIME_ACTIVATE_MAJOR) + user.visible_message("[user]'s skin starts flashing intermittently...", "Your skin starts flashing intermittently...") + if(do_after(user, 25, target = user)) + empulse(user, 1, 2) + user.visible_message("[user]'s skin flashes!", "Your skin flashes as you emit an electromagnetic pulse!") + return 600 + /obj/item/slime_extract/red name = "red slime extract" icon_state = "red slime extract" +/obj/item/slime_extract/red/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) + switch(activation_type) + if(SLIME_ACTIVATE_MINOR) + to_chat(user, "You activate [src]. You start feeling fast!") + user.reagents.add_reagent("ephedrine",5) + return 450 + + if(SLIME_ACTIVATE_MAJOR) + user.visible_message("[user]'s skin flashes red for a moment...", "Your skin flashes red as you emit rage-inducing pheromones...") + for(var/mob/living/simple_animal/slime/slime in viewers(get_turf(user), null)) + slime.rabid = TRUE + slime.visible_message("The [slime] is driven into a frenzy!") + return 600 + /obj/item/slime_extract/blue name = "blue slime extract" icon_state = "blue slime extract" +/obj/item/slime_extract/blue/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) + switch(activation_type) + if(SLIME_ACTIVATE_MINOR) + to_chat(user, "You activate [src]. Your genome feels more stable!") + user.adjustCloneLoss(-15) + user.reagents.add_reagent("mutadone", 10) + user.reagents.add_reagent("potass_iodide", 10) + return 250 + + if(SLIME_ACTIVATE_MAJOR) + var/location = get_turf(user) + var/datum/effect_system/foam_spread/s = new() + s.set_up(20, location, user.reagents) + s.start() + user.reagents.clear_reagents() + user.visible_message("Foam spews out from [user]'s skin!", "You activate [src], and foam bursts out of your skin!") + return 600 + /obj/item/slime_extract/darkblue name = "dark blue slime extract" icon_state = "dark blue slime extract" +/obj/item/slime_extract/darkblue/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) + switch(activation_type) + if(SLIME_ACTIVATE_MINOR) + to_chat(user, "You activate [src]. You start feeling colder!") + user.ExtinguishMob() + user.adjust_fire_stacks(-20) + user.reagents.add_reagent("frostoil",4) + user.reagents.add_reagent("cryoxadone",5) + return 100 + + if(SLIME_ACTIVATE_MAJOR) + var/turf/open/T = get_turf(user) + if(istype(T)) + T.atmos_spawn_air("nitrogen=40;TEMP=2.7") + to_chat(user, "You activate [src], and icy air bursts out of your skin!") + return 900 + /obj/item/slime_extract/pink name = "pink slime extract" icon_state = "pink slime extract" +/obj/item/slime_extract/pink/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) + switch(activation_type) + if(SLIME_ACTIVATE_MINOR) + if(user.gender != MALE && user.gender != FEMALE) + to_chat(user, "You can't swap your gender!") + return + + if(user.gender == MALE) + user.gender = FEMALE + user.visible_message("[user] suddenly looks more feminine!", "You suddenly feel more feminine!") + else + user.gender = MALE + user.visible_message("[user] suddenly looks more masculine!", "You suddenly feel more masculine!") + return 100 + + if(SLIME_ACTIVATE_MAJOR) + user.visible_message("[user]'s skin starts flashing hypnotically...", "Your skin starts forming odd patterns, pacifying creatures around you.") + for(var/mob/living/carbon/C in viewers(user, null)) + if(C != user) + C.reagents.add_reagent("pax",2) + return 600 + /obj/item/slime_extract/green name = "green slime extract" icon_state = "green slime extract" +/obj/item/slime_extract/green/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) + switch(activation_type) + if(SLIME_ACTIVATE_MINOR) + to_chat(user, "You feel yourself reverting to human form...") + if(do_after(user, 120, target = user)) + to_chat(user, "You feel human again!") + user.set_species(/datum/species/human) + return + to_chat(user, "You stop the transformation.") + + if(SLIME_ACTIVATE_MAJOR) + to_chat(user, "You feel yourself radically changing your slime type...") + if(do_after(user, 120, target = user)) + to_chat(user, "You feel different!") + user.set_species(pick(/datum/species/jelly/slime, /datum/species/jelly/stargazer)) + return + to_chat(user, "You stop the transformation.") + /obj/item/slime_extract/lightpink name = "light pink slime extract" icon_state = "light pink slime extract" +/obj/item/slime_extract/lightpink/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) + switch(activation_type) + if(SLIME_ACTIVATE_MINOR) + var/obj/item/slimepotion/docility/O = new(null, 1) + if(!user.put_in_active_hand(O)) + O.forceMove(user.drop_location()) + playsound(user, 'sound/effects/splat.ogg', 50, 1) + user.visible_message("[user] spits out [O]!", "You spit out [O]!") + return 150 + + if(SLIME_ACTIVATE_MAJOR) + var/obj/item/slimepotion/sentience/O = new(null, 1) + if(!user.put_in_active_hand(O)) + O.forceMove(user.drop_location()) + playsound(user, 'sound/effects/splat.ogg', 50, 1) + user.visible_message("[user] spits out [O]!", "You spit out [O]!") + return 450 + /obj/item/slime_extract/black name = "black slime extract" icon_state = "black slime extract" +/obj/item/slime_extract/black/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) + switch(activation_type) + if(SLIME_ACTIVATE_MINOR) + to_chat(user, "You feel something wrong inside you...") + user.ForceContractDisease(new /datum/disease/transformation/slime(0)) + return 100 + + if(SLIME_ACTIVATE_MAJOR) + to_chat(user, "You feel your own light turning dark...") + if(do_after(user, 120, target = user)) + to_chat(user, "You feel a longing for darkness.") + user.set_species(pick(/datum/species/shadow)) + return + to_chat(user, "You stop feeding [src].") + /obj/item/slime_extract/oil name = "oil slime extract" icon_state = "oil slime extract" +/obj/item/slime_extract/oil/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) + switch(activation_type) + if(SLIME_ACTIVATE_MINOR) + to_chat(user, "You vomit slippery oil.") + playsound(user, 'sound/effects/splat.ogg', 50, 1) + new /obj/effect/decal/cleanable/oil/slippery(get_turf(user)) + return 450 + + if(SLIME_ACTIVATE_MAJOR) + user.visible_message("[user]'s skin starts pulsing and glowing ominously...", "You feel unstable...") + if(do_after(user, 60, target = user)) + to_chat(user, "You explode!") + explosion(get_turf(user), 1 ,3, 6) + user.gib() + return + to_chat(user, "You stop feeding [src], and the feeling passes.") + /obj/item/slime_extract/adamantine name = "adamantine slime extract" icon_state = "adamantine slime extract" +/obj/item/slime_extract/adamantine/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) + switch(activation_type) + if(SLIME_ACTIVATE_MINOR) + if(species.armor > 0) + to_chat(user, "Your skin is already hardened!") + return + to_chat(user, "You feel your skin harden and become more resistant.") + species.armor += 25 + addtimer(CALLBACK(src, .proc/reset_armor, species), 1200) + return 450 + + if(SLIME_ACTIVATE_MAJOR) + to_chat(user, "You feel your body rapidly crystallizing...") + if(do_after(user, 120, target = user)) + to_chat(user, "You feel solid.") + user.set_species(pick(/datum/species/golem/adamantine)) + return + to_chat(user, "You stop feeding [src], and your body returns to its slimelike state.") + +/obj/item/slime_extract/adamantine/proc/reset_armor(datum/species/jelly/luminescent/species) + if(istype(species)) + species.armor -= 25 + /obj/item/slime_extract/bluespace name = "bluespace slime extract" icon_state = "bluespace slime extract" + var/teleport_ready = FALSE + var/teleport_x = 0 + var/teleport_y = 0 + var/teleport_z = 0 + +/obj/item/slime_extract/bluespace/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) + switch(activation_type) + if(SLIME_ACTIVATE_MINOR) + to_chat(user, "You feel your body vibrating...") + if(do_after(user, 25, target = user)) + to_chat(user, "You teleport!") + do_teleport(user, get_turf(user), 6, asoundin = 'sound/weapons/emitter2.ogg') + return 300 + + if(SLIME_ACTIVATE_MAJOR) + if(!teleport_ready) + to_chat(user, "You feel yourself anchoring to this spot...") + var/turf/T = get_turf(user) + teleport_x = T.x + teleport_y = T.y + teleport_z = T.z + teleport_ready = TRUE + else + teleport_ready = FALSE + if(teleport_x && teleport_y && teleport_z) + var/turf/T = locate(teleport_x, teleport_y, teleport_z) + to_chat(user, "You snap back to your anchor point!") + do_teleport(user, T, asoundin = 'sound/weapons/emitter2.ogg') + return 450 + /obj/item/slime_extract/pyrite name = "pyrite slime extract" icon_state = "pyrite slime extract" +/obj/item/slime_extract/pyrite/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) + switch(activation_type) + if(SLIME_ACTIVATE_MINOR) + var/chosen = pick(difflist(subtypesof(/obj/item/toy/crayon),typesof(/obj/item/toy/crayon/spraycan))) + var/obj/item/O = new chosen(null) + if(!user.put_in_active_hand(O)) + O.forceMove(user.drop_location()) + playsound(user, 'sound/effects/splat.ogg', 50, 1) + user.visible_message("[user] spits out [O]!", "You spit out [O]!") + return 150 + + if(SLIME_ACTIVATE_MAJOR) + var/chosen = pick(subtypesof(/obj/item/toy/crayon/spraycan)) + var/obj/item/O = new chosen(null) + if(!user.put_in_active_hand(O)) + O.forceMove(user.drop_location()) + playsound(user, 'sound/effects/splat.ogg', 50, 1) + user.visible_message("[user] spits out [O]!", "You spit out [O]!") + return 250 + /obj/item/slime_extract/cerulean name = "cerulean slime extract" icon_state = "cerulean slime extract" +/obj/item/slime_extract/cerulean/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) + switch(activation_type) + if(SLIME_ACTIVATE_MINOR) + user.reagents.add_reagent("salbutamol",15) + to_chat(user, "You feel like you don't need to breathe!") + return 150 + + if(SLIME_ACTIVATE_MAJOR) + var/turf/open/T = get_turf(user) + if(istype(T)) + T.atmos_spawn_air("o2=11;n2=41;TEMP=293.15") + to_chat(user, "You activate [src], and fresh air bursts out of your skin!") + return 600 + /obj/item/slime_extract/sepia name = "sepia slime extract" icon_state = "sepia slime extract" +/obj/item/slime_extract/sepia/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) + switch(activation_type) + if(SLIME_ACTIVATE_MINOR) + var/obj/item/device/camera/O = new(null, 1) + if(!user.put_in_active_hand(O)) + O.forceMove(user.drop_location()) + playsound(user, 'sound/effects/splat.ogg', 50, 1) + user.visible_message("[user] spits out [O]!", "You spit out [O]!") + return 150 + + if(SLIME_ACTIVATE_MAJOR) + to_chat(user, "You feel time slow down...") + if(do_after(user, 30, target = user)) + new /obj/effect/timestop(get_turf(user), 2, 50, list(user)) + return 900 + /obj/item/slime_extract/rainbow name = "rainbow slime extract" icon_state = "rainbow slime extract" +/obj/item/slime_extract/rainbow/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) + switch(activation_type) + if(SLIME_ACTIVATE_MINOR) + user.dna.features["mcolor"] = pick("FFFFFF","7F7F7F", "7FFF7F", "7F7FFF", "FF7F7F", "7FFFFF", "FF7FFF", "FFFF7F") + user.updateappearance(mutcolor_update=1) + species.update_glow(user) + to_chat(user, "You feel different...") + return 100 + + if(SLIME_ACTIVATE_MAJOR) + var/chosen = pick(subtypesof(/obj/item/slime_extract)) + var/obj/item/O = new chosen(null) + if(!user.put_in_active_hand(O)) + O.forceMove(user.drop_location()) + playsound(user, 'sound/effects/splat.ogg', 50, 1) + user.visible_message("[user] spits out [O]!", "You spit out [O]!") + return 150 + ////Slime-derived potions/// /obj/item/slimepotion diff --git a/code/modules/ruins/objects_and_mobs/sin_ruins.dm b/code/modules/ruins/objects_and_mobs/sin_ruins.dm index 3924d29e91..33bfdb8b67 100644 --- a/code/modules/ruins/objects_and_mobs/sin_ruins.dm +++ b/code/modules/ruins/objects_and_mobs/sin_ruins.dm @@ -12,9 +12,9 @@ /obj/structure/cursed_slot_machine/attack_hand(mob/living/carbon/human/user) if(!istype(user)) return - if(in_use) + if(obj_flags & IN_USE) return - in_use = TRUE + obj_flags |= IN_USE user.adjustCloneLoss(20) if(user.stat) to_chat(user, "No... just one more try...") @@ -28,7 +28,7 @@ /obj/structure/cursed_slot_machine/proc/determine_victor(mob/living/user) icon_state = "slots1" - in_use = FALSE + obj_flags &= ~IN_USE if(prob(win_prob)) playsound(src, 'sound/lavaland/cursed_slot_machine_jackpot.ogg', 50, 0) new/obj/structure/cursed_money(get_turf(src)) diff --git a/code/modules/ruins/spaceruin_code/caravanambush.dm b/code/modules/ruins/spaceruin_code/caravanambush.dm index 8877a693cd..603af76f1a 100644 --- a/code/modules/ruins/spaceruin_code/caravanambush.dm +++ b/code/modules/ruins/spaceruin_code/caravanambush.dm @@ -25,3 +25,142 @@ desc = "A prototype of a new crowbar design, allegedly the red color scheme makes it go faster." name = "experimental crowbar" toolspeed = 0.3 + +/obj/machinery/computer/shuttle/caravan + +/obj/item/circuitboard/computer/caravan + build_path = /obj/machinery/computer/shuttle/caravan + +/obj/item/circuitboard/computer/caravan/trade1 + build_path = /obj/machinery/computer/shuttle/caravan/trade1 + +/obj/item/circuitboard/computer/caravan/pirate + build_path = /obj/machinery/computer/shuttle/caravan/pirate + +/obj/item/circuitboard/computer/caravan/syndicate1 + build_path = /obj/machinery/computer/shuttle/caravan/syndicate1 + +/obj/item/circuitboard/computer/caravan/syndicate2 + build_path = /obj/machinery/computer/shuttle/caravan/syndicate2 + +/obj/item/circuitboard/computer/caravan/syndicate3 + build_path = /obj/machinery/computer/shuttle/caravan/syndicate3 + +/obj/machinery/computer/shuttle/caravan/trade1 + name = "Small Freighter Shuttle Console" + desc = "Used to control the Small Freighter." + circuit = /obj/item/circuitboard/computer/caravan/trade1 + shuttleId = "caravantrade1" + possible_destinations = "whiteship_away;whiteship_home;whiteship_z4;whiteship_lavaland;caravantrade1_custom;caravantrade1_ambush" + +/obj/machinery/computer/camera_advanced/shuttle_docker/caravan/trade1 + name = "Small Freighter Navigation Computer" + desc = "Used to designate a precise transit location for the Small Freighter." + shuttleId = "caravantrade1" + lock_override = NONE + shuttlePortId = "caravantrade1_custom" + shuttlePortName = "Custom Location" + jumpto_ports = list("whiteship_away" = 1, "whiteship_home" = 1, "whiteship_z4" = 1, "caravantrade1_ambush" = 1) + view_range = 14 + x_offset = -5 + y_offset = -5 + designate_time = 100 + +/obj/machinery/computer/shuttle/caravan/pirate + name = "Pirate Cutter Shuttle Console" + desc = "Used to control the Pirate Cutter." + icon_screen = "syndishuttle" + icon_keyboard = "syndie_key" + light_color = LIGHT_COLOR_RED + circuit = /obj/item/circuitboard/computer/caravan/pirate + shuttleId = "caravanpirate" + possible_destinations = "caravanpirate_custom;caravanpirate_ambush" + +/obj/machinery/computer/camera_advanced/shuttle_docker/caravan/pirate + name = "Pirate Cutter Navigation Computer" + desc = "Used to designate a precise transit location for the Pirate Cutter." + icon_screen = "syndishuttle" + icon_keyboard = "syndie_key" + shuttleId = "caravanpirate" + lock_override = NONE + shuttlePortId = "caravanpirate_custom" + shuttlePortName = "Custom Location" + jumpto_ports = list("caravanpirate_ambush" = 1) + view_range = 14 + x_offset = 3 + y_offset = -6 + +/obj/machinery/computer/shuttle/caravan/syndicate1 + name = "Syndicate Fighter Shuttle Console" + desc = "Used to control the Syndicate Fighter." + icon_screen = "syndishuttle" + icon_keyboard = "syndie_key" + light_color = LIGHT_COLOR_RED + req_access = list(ACCESS_SYNDICATE) + circuit = /obj/item/circuitboard/computer/caravan/syndicate1 + shuttleId = "caravansyndicate1" + possible_destinations = "caravansyndicate1_custom;caravansyndicate1_ambush;caravansyndicate1_listeningpost" + +/obj/machinery/computer/camera_advanced/shuttle_docker/caravan/syndicate1 + name = "Syndicate Fighter Navigation Computer" + desc = "Used to designate a precise transit location for the Syndicate Fighter." + icon_screen = "syndishuttle" + icon_keyboard = "syndie_key" + shuttleId = "caravansyndicate1" + lock_override = NONE + shuttlePortId = "caravansyndicate1_custom" + shuttlePortName = "Custom Location" + jumpto_ports = list("caravansyndicate1_ambush" = 1, "caravansyndicate1_listeningpost" = 1) + view_range = 7 + x_offset = 2 + y_offset = 0 + +/obj/machinery/computer/shuttle/caravan/syndicate2 + name = "Syndicate Fighter Shuttle Console" + desc = "Used to control the Syndicate Fighter." + icon_screen = "syndishuttle" + icon_keyboard = "syndie_key" + req_access = list(ACCESS_SYNDICATE) + light_color = LIGHT_COLOR_RED + circuit = /obj/item/circuitboard/computer/caravan/syndicate2 + shuttleId = "caravansyndicate2" + possible_destinations = "caravansyndicate2_custom;caravansyndicate2_ambush;caravansyndicate1_listeningpost" + +/obj/machinery/computer/camera_advanced/shuttle_docker/caravan/syndicate2 + name = "Syndicate Fighter Navigation Computer" + desc = "Used to designate a precise transit location for the Syndicate Fighter." + icon_screen = "syndishuttle" + icon_keyboard = "syndie_key" + shuttleId = "caravansyndicate2" + lock_override = NONE + shuttlePortId = "caravansyndicate2_custom" + shuttlePortName = "Custom Location" + jumpto_ports = list("caravansyndicate2_ambush" = 1, "caravansyndicate1_listeningpost" = 1) + view_range = 7 + x_offset = 0 + y_offset = 2 + +/obj/machinery/computer/shuttle/caravan/syndicate3 + name = "Syndicate Drop Ship Console" + desc = "Used to control the Syndicate Drop Ship." + icon_screen = "syndishuttle" + icon_keyboard = "syndie_key" + req_access = list(ACCESS_SYNDICATE) + light_color = LIGHT_COLOR_RED + circuit = /obj/item/circuitboard/computer/caravan/syndicate3 + shuttleId = "caravansyndicate3" + possible_destinations = "caravansyndicate3_custom;caravansyndicate3_ambush;caravansyndicate3_listeningpost" + +/obj/machinery/computer/camera_advanced/shuttle_docker/caravan/syndicate3 + name = "Syndicate Drop Ship Navigation Computer" + desc = "Used to designate a precise transit location for the Syndicate Drop Ship." + icon_screen = "syndishuttle" + icon_keyboard = "syndie_key" + shuttleId = "caravansyndicate3" + lock_override = NONE + shuttlePortId = "caravansyndicate3_custom" + shuttlePortName = "Custom Location" + jumpto_ports = list("caravansyndicate3_ambush" = 1, "caravansyndicate3_listeningpost" = 1) + view_range = 10 + x_offset = -1 + y_offset = -3 \ No newline at end of file diff --git a/code/modules/security_levels/security_levels.dm b/code/modules/security_levels/security_levels.dm index 7fb23c75e5..0da7227d3a 100644 --- a/code/modules/security_levels/security_levels.dm +++ b/code/modules/security_levels/security_levels.dm @@ -41,7 +41,6 @@ GLOBAL_VAR_INIT(security_level, 0) if(SSshuttle.emergency.mode == SHUTTLE_CALL || SSshuttle.emergency.mode == SHUTTLE_RECALL) SSshuttle.emergency.modTimer(2) GLOB.security_level = SEC_LEVEL_BLUE - sound_to_playing_players('sound/misc/voybluealert.ogg') for(var/obj/machinery/firealarm/FA in GLOB.machines) if(is_station_level(FA.z)) FA.update_icon() @@ -56,7 +55,7 @@ GLOBAL_VAR_INIT(security_level, 0) else minor_announce(CONFIG_GET(string/alert_red_downto), "Attention! Code red!") GLOB.security_level = SEC_LEVEL_RED - sound_to_playing_players('sound/misc/voyalert.ogg') + for(var/obj/machinery/firealarm/FA in GLOB.machines) if(is_station_level(FA.z)) FA.update_icon() @@ -70,7 +69,6 @@ GLOBAL_VAR_INIT(security_level, 0) else if(GLOB.security_level == SEC_LEVEL_BLUE) SSshuttle.emergency.modTimer(0.5) GLOB.security_level = SEC_LEVEL_DELTA - sound_to_playing_players('sound/misc/deltakalaxon.ogg') for(var/obj/machinery/firealarm/FA in GLOB.machines) if(is_station_level(FA.z)) FA.update_icon() diff --git a/code/modules/shuttle/arrivals.dm b/code/modules/shuttle/arrivals.dm index 318c896efd..b7fd4c3d58 100644 --- a/code/modules/shuttle/arrivals.dm +++ b/code/modules/shuttle/arrivals.dm @@ -11,8 +11,6 @@ callTime = INFINITY ignitionTime = 50 - roundstart_move = TRUE //force a call to dockRoundstart - var/sound_played var/damaged //too damaged to undock? var/list/areas //areas in our shuttle @@ -22,16 +20,20 @@ var/perma_docked = FALSE //highlander with RESPAWN??? OH GOD!!! /obj/docking_port/mobile/arrivals/Initialize(mapload) - if(SSshuttle.arrivals) - WARNING("More than one arrivals docking_port placed on map!") - return INITIALIZE_HINT_QDEL - SSshuttle.arrivals = src - + if(!timid) + register() + . = ..() preferred_direction = dir return INITIALIZE_HINT_LATELOAD //for latejoin list +/obj/docking_port/mobile/arrivals/register() + ..() + if(SSshuttle.arrivals) + WARNING("More than one arrivals docking_port placed on map! Ignoring duplicates.") + SSshuttle.arrivals = src + /obj/docking_port/mobile/arrivals/LateInitialize() areas = list() @@ -54,13 +56,6 @@ SSjob.latejoin_trackers = new_latejoin -/obj/docking_port/mobile/arrivals/dockRoundstart() - SSshuttle.generate_transit_dock(src) - Launch() - timer = world.time - check() - return TRUE - /obj/docking_port/mobile/arrivals/check() . = ..() diff --git a/code/modules/shuttle/computer.dm b/code/modules/shuttle/computer.dm index 226de32755..4f2d932b1f 100644 --- a/code/modules/shuttle/computer.dm +++ b/code/modules/shuttle/computer.dm @@ -66,9 +66,9 @@ to_chat(usr, "Unable to comply.") /obj/machinery/computer/shuttle/emag_act(mob/user) - if(emagged) + if(obj_flags & EMAGGED) return req_access = list() - emagged = TRUE + obj_flags |= EMAGGED to_chat(user, "You fried the consoles ID checking system.") diff --git a/code/modules/shuttle/emergency.dm b/code/modules/shuttle/emergency.dm index e11a120ba1..59faaf1779 100644 --- a/code/modules/shuttle/emergency.dm +++ b/code/modules/shuttle/emergency.dm @@ -36,14 +36,14 @@ var/name = ID.registered_name var/job = ID.assignment - if(emagged) + if(obj_flags & EMAGGED) name = Gibberish(name, 0) job = Gibberish(job, 0) A += list(list("name" = name, "job" = job)) data["authorizations"] = A data["enabled"] = (IS_DOCKED && !ENGINES_STARTED) - data["emagged"] = emagged + data["emagged"] = obj_flags & EMAGGED ? 1 : 0 return data /obj/machinery/computer/emergency_shuttle/ui_act(action, params, datum/tgui/ui) @@ -119,16 +119,16 @@ if(SSshuttle.emergency.mode == SHUTTLE_STRANDED) authorized.Cut() - emagged = FALSE + obj_flags &= ~EMAGGED if(ENGINES_STARTED || (!IS_DOCKED)) return . // Check to see if we've reached criteria for early launch - if((authorized.len >= auth_need) || emagged) + if((authorized.len >= auth_need) || (obj_flags & EMAGGED)) // shuttle timers use 1/10th seconds internally SSshuttle.emergency.setTimer(ENGINES_START_TIME) - var/system_error = emagged ? "SYSTEM ERROR:" : null + var/system_error = obj_flags & EMAGGED ? "SYSTEM ERROR:" : null minor_announce("The emergency shuttle will launch in \ [TIME_LEFT] seconds", system_error, alert=TRUE) . = TRUE @@ -138,7 +138,7 @@ if(!IS_DOCKED) return - if(emagged || ENGINES_STARTED) //SYSTEM ERROR: THE SHUTTLE WILL LA-SYSTEM ERROR: THE SHUTTLE WILL LA-SYSTEM ERROR: THE SHUTTLE WILL LAUNCH IN 10 SECONDS + if((obj_flags & EMAGGED) || ENGINES_STARTED) //SYSTEM ERROR: THE SHUTTLE WILL LA-SYSTEM ERROR: THE SHUTTLE WILL LA-SYSTEM ERROR: THE SHUTTLE WILL LAUNCH IN 10 SECONDS to_chat(user, "The shuttle is already about to launch!") return @@ -149,7 +149,7 @@ has emagged the emergency shuttle [time] seconds before launch.", 0, 1) log_game("[key_name(user)] has emagged the emergency shuttle in \ [COORD(src)] [time] seconds before launch.") - emagged = TRUE + obj_flags |= EMAGGED var/datum/species/S = new for(var/i in 1 to 10) // the shuttle system doesn't know who these people are, but they @@ -184,7 +184,6 @@ height = 11 dir = EAST port_direction = WEST - roundstart_move = "emergency_away" var/sound_played = 0 //If the launch sound has been sent to all players on the shuttle itself /obj/docking_port/mobile/emergency/canDock(obj/docking_port/stationary/S) @@ -415,7 +414,7 @@ /obj/docking_port/mobile/pod/request() var/obj/machinery/computer/shuttle/S = getControlConsole() - if(GLOB.security_level == SEC_LEVEL_RED || GLOB.security_level == SEC_LEVEL_DELTA || (S && S.emagged)) + if(GLOB.security_level == SEC_LEVEL_RED || GLOB.security_level == SEC_LEVEL_DELTA || (S && (S.obj_flags & EMAGGED))) if(launch_status == UNLAUNCHED) launch_status = EARLY_LAUNCHED return ..() @@ -446,9 +445,9 @@ return /obj/machinery/computer/shuttle/pod/emag_act(mob/user) - if(emagged) + if(obj_flags & EMAGGED) return - emagged = TRUE + obj_flags |= EMAGGED to_chat(user, "You fry the pod's alert level checking system.") /obj/docking_port/stationary/random @@ -537,7 +536,6 @@ width = 8 height = 8 dir = EAST - roundstart_move = "backup_away" /obj/docking_port/mobile/emergency/backup/Initialize() // We want to be a valid emergency shuttle diff --git a/code/modules/shuttle/manipulator.dm b/code/modules/shuttle/manipulator.dm index 721ee601f7..299d9e1eaa 100644 --- a/code/modules/shuttle/manipulator.dm +++ b/code/modules/shuttle/manipulator.dm @@ -23,6 +23,14 @@ /obj/machinery/shuttle_manipulator/Initialize() . = ..() update_icon() + SSshuttle.manipulator = src + +/obj/machinery/shuttle_manipulator/Destroy(force) + if(!force) + . = QDEL_HINT_LETMELIVE + else + SSshuttle.manipulator = null + . = ..() /obj/machinery/shuttle_manipulator/update_icon() cut_overlays() @@ -182,8 +190,7 @@ update_icon() -/obj/machinery/shuttle_manipulator/proc/action_load( - datum/map_template/shuttle/loading_template) +/obj/machinery/shuttle_manipulator/proc/action_load(datum/map_template/shuttle/loading_template, obj/docking_port/stationary/destination_port) // Check for an existing preview if(preview_shuttle && (loading_template != preview_template)) preview_shuttle.jumpToNullSpace() @@ -199,16 +206,15 @@ var/mode = SHUTTLE_IDLE var/obj/docking_port/stationary/D - if(existing_shuttle) + if(istype(destination_port)) + D = destination_port + else if(existing_shuttle) timer = existing_shuttle.timer mode = existing_shuttle.mode D = existing_shuttle.get_docked() - else - D = preview_shuttle.findRoundstartDock() if(!D) - var/m = "No dock found for preview shuttle, aborting." - WARNING(m) + var/m = "No dock found for preview shuttle ([preview_template.name]), aborting." throw EXCEPTION(m) var/result = preview_shuttle.canDock(D) @@ -216,11 +222,11 @@ // but we can ignore the someone else docked error because we'll // be moving into their place shortly if((result != SHUTTLE_CAN_DOCK) && (result != SHUTTLE_SOMEONE_ELSE_DOCKED)) - var/m = "Unsuccessful dock of [preview_shuttle] ([result])." - WARNING(m) + WARNING("Template shuttle [preview_shuttle] cannot dock at [D] ([result]).") return - existing_shuttle.jumpToNullSpace() + if(existing_shuttle) + existing_shuttle.jumpToNullSpace() preview_shuttle.initiate_docking(D) . = preview_shuttle diff --git a/code/modules/shuttle/shuttle.dm b/code/modules/shuttle/shuttle.dm index d87750c394..6a8fd7b3a1 100644 --- a/code/modules/shuttle/shuttle.dm +++ b/code/modules/shuttle/shuttle.dm @@ -167,6 +167,9 @@ var/last_dock_time + var/datum/map_template/shuttle/roundstart_template + var/json_key + /obj/docking_port/stationary/Initialize(mapload) . = ..() SSshuttle.stationary += src @@ -184,6 +187,22 @@ highlight("#f00") #endif +/obj/docking_port/stationary/proc/load_roundstart() + if(json_key) + var/sid = SSmapping.config.shuttles[json_key] + roundstart_template = SSmapping.shuttle_templates[sid] + if(!roundstart_template) + CRASH("json_key:[json_key] value \[[sid]\] resulted in a null shuttle template for [src]") + else if(roundstart_template) // passed a PATH + var/sid = "[initial(roundstart_template.port_id)]_[initial(roundstart_template.suffix)]" + + roundstart_template = SSmapping.shuttle_templates[sid] + if(!roundstart_template) + CRASH("Invalid path ([roundstart_template]) passed to docking port.") + + if(roundstart_template) + SSshuttle.manipulator.action_load(roundstart_template, src) + //returns first-found touching shuttleport /obj/docking_port/stationary/get_docked() . = locate(/obj/docking_port/mobile) in loc @@ -234,7 +253,6 @@ var/mode = SHUTTLE_IDLE //current shuttle mode var/callTime = 100 //time spent in transit (deciseconds). Should not be lower then 10 seconds without editing the animation of the hyperspace ripples. var/ignitionTime = 55 // time spent "starting the engines". Also rate limits how often we try to reserve transit space if its ever full of transiting shuttles. - var/roundstart_move //id of port to send shuttle to at roundstart // The direction the shuttle prefers to travel in var/preferred_direction = NORTH @@ -251,8 +269,9 @@ var/list/movement_force = list("KNOCKDOWN" = 3, "THROW" = 2) // A timid shuttle will not register itself with the shuttle subsystem - // All shuttle templates are timid - var/timid = FALSE + // All shuttle templates MUST be timid, imports will fail if they're not + // Shuttle defined already on the map MUST NOT be timid, or they won't work + var/timid = TRUE var/list/ripples = list() var/engine_coeff = 1 //current engine coeff @@ -473,12 +492,6 @@ for(var/obj/machinery/door/poddoor/shuttledock/pod in GLOB.airlocks) pod.check() -/obj/docking_port/mobile/proc/findRoundstartDock() - return SSshuttle.getDock(roundstart_move) - -/obj/docking_port/mobile/proc/dockRoundstart() - . = dock_id(roundstart_move) - /obj/docking_port/mobile/proc/dock_id(id) var/port = SSshuttle.getDock(id) if(port) @@ -489,6 +502,10 @@ /obj/effect/landmark/shuttle_import name = "Shuttle Import" +// Never move the shuttle import landmark, otherwise things get WEIRD +/obj/effect/landmark/shuttle_import/onShuttleMove() + return FALSE + //used by shuttle subsystem to check timers /obj/docking_port/mobile/proc/check() check_effects() diff --git a/code/modules/shuttle/supply.dm b/code/modules/shuttle/supply.dm index eacacef933..a0bc4f0d1f 100644 --- a/code/modules/shuttle/supply.dm +++ b/code/modules/shuttle/supply.dm @@ -34,7 +34,6 @@ GLOBAL_LIST_INIT(blacklisted_cargo_types, typecacheof(list( width = 12 dwidth = 5 height = 7 - roundstart_move = "supply_away" // When TRUE, these vars allow exporting emagged/contraband items, and add some special interactions to existing exports. var/contraband = FALSE diff --git a/code/modules/shuttle/syndicate.dm b/code/modules/shuttle/syndicate.dm index 410935db5a..3f4d0cbee7 100644 --- a/code/modules/shuttle/syndicate.dm +++ b/code/modules/shuttle/syndicate.dm @@ -51,7 +51,7 @@ icon_screen = "syndishuttle" icon_keyboard = "syndie_key" shuttleId = "syndicate" - station_lock_override = TRUE + lock_override = CAMERA_LOCK_STATION shuttlePortId = "syndicate_custom" shuttlePortName = "custom location" jumpto_ports = list("syndicate_ne" = 1, "syndicate_nw" = 1, "syndicate_n" = 1, "syndicate_se" = 1, "syndicate_sw" = 1, "syndicate_s" = 1) diff --git a/code/modules/shuttle/white_ship.dm b/code/modules/shuttle/white_ship.dm index b6d9bda8b2..79c2fda7ed 100644 --- a/code/modules/shuttle/white_ship.dm +++ b/code/modules/shuttle/white_ship.dm @@ -9,7 +9,7 @@ name = "White Ship Navigation Computer" desc = "Used to designate a precise transit location for the White Ship." shuttleId = "whiteship" - station_lock_override = TRUE + lock_override = CAMERA_LOCK_STATION shuttlePortId = "whiteship_custom" shuttlePortName = "Custom Location" jumpto_ports = list("whiteship_away" = 1, "whiteship_home" = 1, "whiteship_z4" = 1) diff --git a/code/modules/spells/spell.dm b/code/modules/spells/spell.dm index ae317ad861..2d6d1ed75f 100644 --- a/code/modules/spells/spell.dm +++ b/code/modules/spells/spell.dm @@ -478,8 +478,8 @@ GLOBAL_LIST_INIT(spells, typesof(/obj/effect/proc_holder/spell)) //needed for th perform(targets,user=user) -/obj/effect/proc_holder/spell/proc/updateButtonIcon() - action.UpdateButtonIcon() +/obj/effect/proc_holder/spell/proc/updateButtonIcon(status_only, force) + action.UpdateButtonIcon(status_only, force) /obj/effect/proc_holder/spell/proc/can_be_cast_by(mob/caster) if((human_req || clothes_req) && !ishuman(caster)) diff --git a/code/modules/spells/spell_types/genetic.dm b/code/modules/spells/spell_types/genetic.dm index c43dacac46..43069e0033 100644 --- a/code/modules/spells/spell_types/genetic.dm +++ b/code/modules/spells/spell_types/genetic.dm @@ -2,7 +2,7 @@ name = "Genetic" desc = "This spell inflicts a set of mutations and disabilities upon the target." - var/list/disabilities = list() //disabilities + var/list/traits = list() //disabilities var/list/mutations = list() //mutation strings var/duration = 100 //deciseconds /* @@ -22,13 +22,13 @@ continue for(var/A in mutations) target.dna.add_mutation(A) - for(var/A in disabilities) - target.add_disability(A, GENETICS_SPELL) + for(var/A in traits) + target.add_trait(A, GENETICS_SPELL) addtimer(CALLBACK(src, .proc/remove, target), duration) /obj/effect/proc_holder/spell/targeted/genetic/proc/remove(mob/living/carbon/target) if(!QDELETED(target)) for(var/A in mutations) target.dna.remove_mutation(A) - for(var/A in disabilities) - target.remove_disability(A, GENETICS_SPELL) \ No newline at end of file + for(var/A in traits) + target.remove_trait(A, GENETICS_SPELL) \ No newline at end of file diff --git a/code/modules/station_goals/shield.dm b/code/modules/station_goals/shield.dm index 13216826a4..c9acfebb9c 100644 --- a/code/modules/station_goals/shield.dm +++ b/code/modules/station_goals/shield.dm @@ -122,7 +122,7 @@ /obj/machinery/satellite/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/device/multitool)) - to_chat(user, "// NTSAT-[id] // Mode : [active ? "PRIMARY" : "STANDBY"] //[emagged ? "DEBUG_MODE //" : ""]") + to_chat(user, "// NTSAT-[id] // Mode : [active ? "PRIMARY" : "STANDBY"] //[(obj_flags & EMAGGED) ? "DEBUG_MODE //" : ""]") else return ..() @@ -147,14 +147,14 @@ continue if(get_dist(M,src) > kill_range) continue - if(!emagged && space_los(M)) + if(!(obj_flags & EMAGGED) && space_los(M)) Beam(get_turf(M),icon_state="sat_beam",time=5,maxdistance=kill_range) qdel(M) /obj/machinery/satellite/meteor_shield/toggle(user) if(!..(user)) return FALSE - if(emagged) + if(obj_flags & EMAGGED) if(active) change_meteor_chance(2) else @@ -167,12 +167,12 @@ /obj/machinery/satellite/meteor_shield/Destroy() . = ..() - if(active && emagged) + if(active && (obj_flags & EMAGGED)) change_meteor_chance(0.5) /obj/machinery/satellite/meteor_shield/emag_act() - if(emagged) + if(obj_flags & EMAGGED) return - emagged = TRUE + obj_flags |= EMAGGED if(active) change_meteor_chance(2) diff --git a/code/modules/surgery/bodyparts/bodyparts.dm b/code/modules/surgery/bodyparts/bodyparts.dm index fa8d04d987..c178d7f72f 100644 --- a/code/modules/surgery/bodyparts/bodyparts.dm +++ b/code/modules/surgery/bodyparts/bodyparts.dm @@ -11,6 +11,8 @@ var/mob/living/carbon/original_owner = null var/status = BODYPART_ORGANIC var/body_zone //"chest", "l_arm", etc , used for def_zone + var/aux_zone // used for hands + var/aux_layer var/body_part = null //bitflag used to check which clothes cover this bodypart var/use_digitigrade = NOT_DIGITIGRADE //Used for alternate legs, useless elsewhere var/brutestate = 0 @@ -217,7 +219,7 @@ C = owner no_update = 0 - if(C.has_disability(DISABILITY_HUSK)) + if(C.has_trait(TRAIT_HUSK)) species_id = "husk" //overrides species_id dmg_overlay_type = "" //no damage overlay shown when husked should_draw_gender = FALSE @@ -297,6 +299,7 @@ . += image('icons/mob/dam_mob.dmi', "[dmg_overlay_type]_[body_zone]_0[burnstate]", -DAMAGE_LAYER, image_dir) var/image/limb = image(layer = -BODYPARTS_LAYER, dir = image_dir) + var/image/aux . += limb if(animal_origin) @@ -331,6 +334,9 @@ limb.icon_state = "[species_id]_[body_zone]_[icon_gender]" else limb.icon_state = "[species_id]_[body_zone]" + if(aux_zone) + aux = image(limb.icon, "[species_id]_[aux_zone]", -aux_layer, image_dir) + . += aux else limb.icon = icon @@ -345,6 +351,8 @@ var/draw_color = mutation_color || species_color || (skin_tone && skintone2hex(skin_tone)) if(draw_color) limb.color = "#[draw_color]" + if(aux_zone) + aux.color = "#[draw_color]" /obj/item/bodypart/deconstruct(disassembled = TRUE) drop_organs() @@ -407,6 +415,8 @@ max_damage = 50 body_zone ="l_arm" body_part = ARM_LEFT + aux_zone = "l_hand" + aux_layer = HANDS_PART_LAYER held_index = 1 px_x = -6 px_y = 0 @@ -441,6 +451,8 @@ max_damage = 50 body_zone = "r_arm" body_part = ARM_RIGHT + aux_zone = "r_hand" + aux_layer = HANDS_PART_LAYER held_index = 2 px_x = 6 px_y = 0 diff --git a/code/modules/surgery/bodyparts/head.dm b/code/modules/surgery/bodyparts/head.dm index 4afe4df220..50dd2641e4 100644 --- a/code/modules/surgery/bodyparts/head.dm +++ b/code/modules/surgery/bodyparts/head.dm @@ -61,7 +61,7 @@ C = owner real_name = C.real_name - if(C.has_disability(DISABILITY_HUSK)) + if(C.has_trait(TRAIT_HUSK)) real_name = "Unknown" hair_style = "Bald" facial_hair_style = "Shaved" diff --git a/code/modules/surgery/lipoplasty.dm b/code/modules/surgery/lipoplasty.dm index 480edb4bd3..5a201bfc84 100644 --- a/code/modules/surgery/lipoplasty.dm +++ b/code/modules/surgery/lipoplasty.dm @@ -4,7 +4,7 @@ possible_locs = list("chest") /datum/surgery/lipoplasty/can_start(mob/user, mob/living/carbon/target) - if(target.has_disability(DISABILITY_FAT)) + if(target.has_trait(TRAIT_FAT)) return 1 return 0 diff --git a/code/modules/surgery/organ_manipulation.dm b/code/modules/surgery/organ_manipulation.dm index 97e24b4cd5..8ce80ec8a0 100644 --- a/code/modules/surgery/organ_manipulation.dm +++ b/code/modules/surgery/organ_manipulation.dm @@ -119,11 +119,11 @@ current_type = "extract" var/list/organs = target.getorganszone(target_zone) - var/mob/living/simple_animal/borer/B = target.has_brain_worms() +/* var/mob/living/simple_animal/borer/B = target.has_brain_worms() if(target.has_brain_worms()) user.visible_message("[user] begins to extract [B] from [target]'s [parse_zone(target_zone)].", "You begin to extract [B] from [target]'s [parse_zone(target_zone)]...") - return TRUE + return TRUE*/ if(!organs.len) to_chat(user, "There are no removable organs in [target]'s [parse_zone(target_zone)]!") @@ -164,13 +164,13 @@ "You insert [tool] into [target]'s [parse_zone(target_zone)].") else if(current_type == "extract") - var/mob/living/simple_animal/borer/B = target.has_brain_worms() +/* var/mob/living/simple_animal/borer/B = target.has_brain_worms() if(B && B.victim == target) user.visible_message("[user] successfully extracts [B] from [target]'s [parse_zone(target_zone)]!", "You successfully extract [B] from [target]'s [parse_zone(target_zone)].") add_logs(user, target, "surgically removed [B] from", addition="INTENT: [uppertext(user.a_intent)]") B.leave_victim() - return FALSE + return FALSE */ if(I && I.owner == target) user.visible_message("[user] successfully extracts [I] from [target]'s [parse_zone(target_zone)]!", "You successfully extract [I] from [target]'s [parse_zone(target_zone)].") diff --git a/code/modules/surgery/organs/ears.dm b/code/modules/surgery/organs/ears.dm index 2a12005956..83646ab4d0 100644 --- a/code/modules/surgery/organs/ears.dm +++ b/code/modules/surgery/organs/ears.dm @@ -25,7 +25,7 @@ return var/mob/living/carbon/C = owner // genetic deafness prevents the body from using the ears, even if healthy - if(C.has_disability(DISABILITY_DEAF)) + if(C.has_trait(TRAIT_DEAF)) deaf = max(deaf, 1) else if(C.ears && (C.ears.flags_2 & HEALS_EARS_2)) @@ -42,7 +42,7 @@ var/mob/living/carbon/C = owner - if(iscarbon(owner) && C.has_disability(DISABILITY_DEAF)) + if(iscarbon(owner) && C.has_trait(TRAIT_DEAF)) deaf = 1 /obj/item/organ/ears/proc/adjustEarDamage(ddmg, ddeaf) @@ -82,6 +82,7 @@ name = "cat ears" icon = 'icons/obj/clothing/hats.dmi' icon_state = "kitty" + damage_multiplier = 2 /obj/item/organ/ears/cat/Insert(mob/living/carbon/human/H, special = 0, drop_if_replaced = TRUE) ..() diff --git a/code/modules/surgery/organs/eyes.dm b/code/modules/surgery/organs/eyes.dm index 430308ca3f..d9b0a726ee 100644 --- a/code/modules/surgery/organs/eyes.dm +++ b/code/modules/surgery/organs/eyes.dm @@ -316,3 +316,8 @@ parent = loc if(!istype(parent)) return INITIALIZE_HINT_QDEL + +/obj/item/organ/eyes/moth + name = "moth eyes" + desc = "These eyes seem to have increased sensitivity to bright light, with no improvement to low light vision." + flash_protect = -1 \ No newline at end of file diff --git a/code/modules/surgery/organs/tongue.dm b/code/modules/surgery/organs/tongue.dm index 325ebb3ef9..09926a3fdc 100644 --- a/code/modules/surgery/organs/tongue.dm +++ b/code/modules/surgery/organs/tongue.dm @@ -16,7 +16,7 @@ /datum/language/narsie, /datum/language/beachbum, /datum/language/ratvar, - /datum/language/aphasia + /datum/language/aphasia, )) /obj/item/organ/tongue/Initialize(mapload) diff --git a/code/modules/surgery/plastic_surgery.dm b/code/modules/surgery/plastic_surgery.dm index 909a658ffd..f1f2c11a05 100644 --- a/code/modules/surgery/plastic_surgery.dm +++ b/code/modules/surgery/plastic_surgery.dm @@ -13,8 +13,8 @@ user.visible_message("[user] begins to alter [target]'s appearance.", "You begin to alter [target]'s appearance...") /datum/surgery_step/reshape_face/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) - if(target.status_flags & DISFIGURED) - target.status_flags &= ~DISFIGURED + if(target.has_trait(TRAIT_DISFIGURED, TRAIT_GENERIC)) + target.remove_trait(TRAIT_DISFIGURED, TRAIT_GENERIC) user.visible_message("[user] successfully restores [target]'s appearance!", "You successfully restore [target]'s appearance.") else var/oldname = target.real_name diff --git a/code/modules/unit_tests/_unit_tests.dm b/code/modules/unit_tests/_unit_tests.dm new file mode 100644 index 0000000000..001952ea65 --- /dev/null +++ b/code/modules/unit_tests/_unit_tests.dm @@ -0,0 +1,5 @@ +//include unit test files in this module in this ifdef + +#ifdef UNIT_TESTS +#include "unit_test.dm" +#endif diff --git a/code/modules/unit_tests/unit_test.dm b/code/modules/unit_tests/unit_test.dm new file mode 100644 index 0000000000..49974f2cb0 --- /dev/null +++ b/code/modules/unit_tests/unit_test.dm @@ -0,0 +1,77 @@ +/* + +Usage: +Override /Run() to run your test code + +Call Fail() to fail the test (You should specify a reason) + +You may use /New() and /Destroy() for setup/teardown respectively + +You can use the run_loc_bottom_left and run_loc_top_right to get turfs for testing + +*/ + +GLOBAL_DATUM(current_test, /datum/unit_test) +GLOBAL_VAR_INIT(failed_any_test, FALSE) +GLOBAL_VAR(test_log) + +/datum/unit_test + //Bit of metadata for the future maybe + var/list/procs_tested + + //usable vars + var/turf/run_loc_bottom_left + var/turf/run_loc_top_right + + //internal shit + var/succeeded = TRUE + var/list/fail_reasons + +/datum/unit_test/New() + run_loc_bottom_left = locate(1, 1, 1) + run_loc_top_right = locate(5, 5, 1) + +/datum/unit_test/Destroy() + //clear the test area + for(var/atom/movable/AM in block(run_loc_bottom_left, run_loc_top_right)) + qdel(AM) + return ..() + +/datum/unit_test/proc/Run() + Fail("Run() called parent or not implemented") + +/datum/unit_test/proc/Fail(reason = "No reason") + succeeded = FALSE + + if(!istext(reason)) + reason = "FORMATTED: [reason != null ? reason : "NULL"]" + + LAZYADD(fail_reasons, reason) + +/proc/RunUnitTests() + CHECK_TICK + + for(var/I in subtypesof(/datum/unit_test)) + var/datum/unit_test/test = new I + + GLOB.current_test = test + var/duration = REALTIMEOFDAY + + test.Run() + + duration = REALTIMEOFDAY - duration + GLOB.current_test = null + GLOB.failed_any_test |= !test.succeeded + + var/list/log_entry = list("[test.succeeded ? "PASS" : "FAIL"]: [I] [duration / 10]s") + var/list/fail_reasons = test.fail_reasons + + qdel(test) + + for(var/J in 1 to LAZYLEN(fail_reasons)) + log_entry += "\tREASON #[J]: [fail_reasons[J]]" + log_test(log_entry.Join("\n")) + + CHECK_TICK + + SSticker.force_ending = TRUE diff --git a/code/modules/uplink/uplink_items.dm b/code/modules/uplink/uplink_items.dm index ae69442620..4c4137d52c 100644 --- a/code/modules/uplink/uplink_items.dm +++ b/code/modules/uplink/uplink_items.dm @@ -1284,6 +1284,17 @@ GLOBAL_LIST_EMPTY(uplink_items) // Global list so we only initialize this once. limited_stock = 2 //you can't use more than two! restricted_roles = list("Shaft Miner") +/datum/uplink_item/device_tools/clown_bomb + name = "Clown Bomb" + desc = "The Clown bomb is a hilarious device capable of massive pranks. It has an adjustable timer, \ + with a minimum of 60 seconds, and can be bolted to the floor with a wrench to prevent \ + movement. The bomb is bulky and cannot be moved; upon ordering this item, a smaller beacon will be \ + transported to you that will teleport the actual bomb to it upon activation. Note that this bomb can \ + be defused, and some crew may attempt to do so." + item = /obj/item/device/sbeacondrop/clownbomb + cost = 15 + restricted_roles = list("Clown") + // Pointless /datum/uplink_item/badass category = "(Pointless) Badassery" diff --git a/code/modules/zombie/items.dm b/code/modules/zombie/items.dm index f203af610a..cc42b7a67e 100644 --- a/code/modules/zombie/items.dm +++ b/code/modules/zombie/items.dm @@ -11,7 +11,7 @@ var/icon_left = "bloodhand_left" var/icon_right = "bloodhand_right" hitsound = 'sound/hallucinations/growl1.ogg' - force = 20 + force = 21 // Just enough to break airlocks with melee attacks damtype = "brute" var/removing_airlock = FALSE diff --git a/html/browser/common.css b/html/browser/common.css index 1f9a355fd7..2f43c8c6d7 100644 --- a/html/browser/common.css +++ b/html/browser/common.css @@ -1,5 +1,5 @@ -body -{ +body +{ padding: 0; margin: 0; background-color: #272727; @@ -14,9 +14,9 @@ hr height: 1px; } -a, a:link, a:visited, a:active, .linkOn, .linkOff -{ - color: #ffffff; +a, button, a:link, a:visited, a:active, .linkOn, .linkOff +{ + color: #ffffff; text-decoration: none; background: #40628a; border: 1px solid #161616; @@ -25,15 +25,15 @@ a, a:link, a:visited, a:active, .linkOn, .linkOff cursor:default; } -a:hover -{ +a:hover +{ color: #40628a; background: #ffffff; } a.white, a.white:link, a.white:visited, a.white:active -{ - color: #40628a; +{ + color: #40628a; text-decoration: none; background: #ffffff; border: 1px solid #161616; @@ -42,22 +42,22 @@ a.white, a.white:link, a.white:visited, a.white:active cursor:default; } -a.white:hover -{ +a.white:hover +{ color: #ffffff; background: #40628a; } .linkOn, a.linkOn:link, a.linkOn:visited, a.linkOn:active, a.linkOn:hover -{ - color: #ffffff; +{ + color: #ffffff; background: #2f943c; border-color: #24722e; } .linkOff, a.linkOff:link, a.linkOff:visited, a.linkOff:active, a.linkOff:hover -{ - color: #ffffff; +{ + color: #ffffff; background: #999999; border-color: #666666; } @@ -89,15 +89,15 @@ li padding: 0 0 2px 0; } -img, a img -{ - border-style:none; +img, a img +{ + border-style:none; } h1, h2, h3, h4, h5, h6 { margin: 0; - padding: 16px 0 8px 0; + padding: 16px 0 8px 0; color: #517087; } @@ -146,7 +146,7 @@ h4 } .uiContent -{ +{ clear: both; padding: 8px; font-family: Verdana, Geneva, sans-serif; @@ -189,7 +189,7 @@ h4 } .notice.icon -{ +{ padding: 2px 4px 0 20px; } @@ -303,4 +303,71 @@ div.notice { width: 100%; clear: both; -} \ No newline at end of file +} + + +.switch { + position: relative; + display: inline-block; + width: 50px; + height: 26px; +} + +.switch input {display:none;} + +.slider { + position: absolute; + cursor: pointer; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: #383838; + transition: .4s; +} + +.slider:before { + position: absolute; + content: ""; + height: 18px; + width: 18px; + left: 4px; + bottom: 4px; + background-color: #98B0C3; + transition: .4s; +} + +input:checked + .slider { + background-color: #40628a; +} + +input:focus + .slider { + box-shadow: 0 0 1px #2196F3; +} + +input:checked + .slider:before { + transform: translateX(24px); +} + +.switch span { + display: inline-block; + position: relative; + width: 60px; + margin-left: 60px; +} + +ul.sparse { + padding-bottom:20px; +} + +.sparse li { + margin-top: 2px; +} + +.slider.round { + border-radius: 34px; +} + +.slider.round:before { + border-radius: 50%; +} diff --git a/icons/effects/96x32.dmi b/icons/effects/96x32.dmi index 69c2812053039def1f12b3dd83be3365065a5268..937b2e8d4245b52b9b94fe3dea1bb81c1941644c 100644 GIT binary patch literal 17322 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

o=F)4iSS#37nzf(&c7LYQaEIkZ(^-KEHNs?K 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 F{{ZHa(k=i1 literal 10844 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 diff --git a/icons/misc/language.dmi b/icons/misc/language.dmi index 4e627f16c753a836d5dab75e447ca4f92881a78e..dcd10a51b7de8d976b5b93b640da1c2c68bb41a6 100644 GIT binary patch delta 4475 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 N002ovPDHLkV1m@{%*Ox# delta 4151 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 B8N~nq diff --git a/icons/mob/actions/actions_slime.dmi b/icons/mob/actions/actions_slime.dmi index 94cf31995877b87f7d10a6041d2af7b8ed760e3d..acf7a31c6ed9f353ddd8c63149619c3c4d8ff8b6 100644 GIT binary patch literal 4717 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 literal 3042 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 diff --git a/icons/mob/animal.dmi b/icons/mob/animal.dmi index 8504b18a4a5f94f9722e535daca7c7f7889f9ba7..89ab95225cf5bfad4759b0c915fe87b8d8b96b7f 100644 GIT binary patch literal 203781 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 n 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

Us+|b@&*bUX0_OZrt8_nuwXuNUFVL{k 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 XKUa!TG?^gj00000NkvXXu0mjfNH`CO diff --git a/icons/mob/human_parts.dmi b/icons/mob/human_parts.dmi index 773ec5f9124b87a1a08fe784f4f48f79d6463f5e..70aeba6a693e319feaa29446be78a35d907041f6 100644 GIT binary patch literal 38366 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 literal 34931 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 diff --git a/icons/mob/neck.dmi b/icons/mob/neck.dmi index 59635b8c7d269dafdfb6926a095b0d603c9549f1..24aa605c9f7f8e0e74b2c3a0aee0ca9287f2888a 100644 GIT binary patch literal 39053 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 z zCswt0ew>Q+>7h@agI-S@nGSn|AiU?e?X%lSFS%&j?L;?Y*W8agmWX4w)#33BD7d0Hf?j57w;hqK|v1FM)tDR+6tJhdklshoAJ3k8$>p@8XHQztQNfg<(5_9mv!w>+>* zjWPfN&X1IUe815+@60oA&jQ_`2!dm9QsO&aw^)w!k0>V&9Z<{(4>_0Ujh9?^h&OAE zcpm{J-3KHUw9?cxTe-5+eU(rBHa?Z(s|~7maKl9zgZ_~NNgq4V=+jo9g^S#0RgJ0b zjw6Aja)cpow>qIkshb$6qNs>H;}QE;9i8yDp4LzNT`4aZ#dVcx55Z@CdE4|-R1ug+ z9cgP#e+ZsH%i|V69FKIV{9OTG?JD(l%_hCEfL}EO`Y$drnkE6zXm9SpmtE|D?bbhu zDSH0z=KGIfeVm_0mE`mA0 Tmz%(Hf#ZUijcJXEcijI0PFAmU literal 36938 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 A9RL6T diff --git a/icons/mob/uniform.dmi b/icons/mob/uniform.dmi index be23fa9f137c94f223a863c53d66662c8af63ab5..f35ef2c1a588f824b51aa78380d347c90db4ab1b 100644 GIT binary patch literal 233173 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%0A7E0ewAB(l}K!zg!%ALO$n~zeXEk5}#|sEP92k ze7D5>T)FT<^s=l+muc$wN_fGH`GBxJIvN ztv27Z>ivA;vr|?3@E+j7Xz5iR$qIOQ#fy+b=b#yP!eWQzE!esF*L=U^sztb(yBQAs=olChPrQ(LO8xbc18 zvfMYxx*uBz!*KSZ=RbMI<3%aPBPUT5ju-+*{J9(9YJ|QTL>ms5tS5rK>>I%+3GO71oH35&~yS=Et7bs&mr4^B%$;jVnnHZkT zpZ4xNilo5jI*|LLhFIKlGgGf4S#zqb`W)c0YWC7#=$7(Mlfgx2M7+rRug2WPa*ZR{ z1GknkPx>d5N&OTHnZsXTsaE^ismm}+$Hy`oQvI33hx3CgMn}1!b`+8r9*USx~zOX*})L8R?P}Xe6Kn-m}U9e&ozb zV*<;vK4^n^(vPfwL)0addqEP09W|RSTQ&Gsav>M8A9fH+ONZyWdF`azSgIy$El&&U zEB|&Q`iUPMH3=dudV4Gp9v)FdzoRY`yldkAd^2K(_=_u^_qawCtZHXj$&7TcZCvt>JE;`=lq~sUO|^Wo{#(ujmP?JME9{86KJ% z&O7wL@=3t|v+`*?fs2S(X)~28e*}Gcx**FK?Co3rtP0rMl#*$3dZqFTG8VGUbF(KU zY*p9O8CTfT;O$UR^yzpQ_5sM$n8E90b`rpQS3KK!{r;2#EM~G$lEF&?$w z+ME;x*m-b@{TpL2gwM@E?U;E-qE%VUG8t9Ov>hP{9KH>*twD>RoIfYV^NFaO_~y&83jCJMl8v6(`B z_gN@Yap~HP{he4;)Ki*!8dODlL)DkEp;3-aA*G&H^MtKYx5aL0$S2@EsaT^Z4uJ_C zXW5+9;0SpWj!{BCtkfAE8D%zK!3nhaPo5WHod^E-crt@($^LGxOrZ|(lf*>d6`p2p zla$lIiK8=?MnAAPiQM!>Mdv=Pfn@>u}Q0_3h^?I2_JCY>^C-EY83?q{y9tQ_3M6ljUAzUHdN>d z?{PO)+uW(A$$u!AubGG!%kj+b?7bAIrPy9d>$f95aG0eF`ZNm$=0muO7V2$cYQK{| ze5Xp_YN*dr>e6YQgCd|VsS+bSGtPZjTny{bx4nt8od1-osNqRZ0tXtzW<4)jcYQJy z4@f(OFV-Ilo{Sp+kC0o?J3~WTcBIS;z&YbJV@Y%hoVXblD;^$8s4MnayIR0 zVb9+?gZpv`cp+jEJ&SNw?wIeB_@7}fm!dWghT=MCL{!ep=Pks$deL-BzU3x>-qUQK zzgVnr&l%2GO8WW{^$^?O66RSeKN?Z2sY4p56c-29<-Gb=(QPXN(B@glbJ^aTVKQk{ z^yFP{SI%`9L<+55UvQZzaUr>F5Z%A8H{awveN1w*2&81BdwsRL6_w0dHzZerms_Py z8(DExWKe&B=3};kn1J8_~qgFU>LBTTwa zT5&51S#<^C903#FeI+bl^kY1P~# zpnD}MDhes*t0H|4Z;A$k%U3PA1!#og0UI)Kbqfh6M9p@0_yvf*%y%5U$w=IC8&ST2QLvPS$ zyUNRW*S6+%eBE;tr@8yt76*oGwB_fsDD;yrWcEf>LZm{z|Q6vN3A(I7EHHZ=V|3Mk(1s z{@olKQ42vS?k5SI+*645fH!Y{;KdxdC*b8@iORa`@M9aIV3X>v0+WkR$ zTh$XJ*t|@q7F4$@GL>>Y<^KI04a3IeQySHC?=Ke(cEmmCZ2fGuKZW=FmE^%ILoa}H znJ$}Da)gDo`8XbPa45zyp;UV~JM(c{POrbW1_oGqOC8~hx-q63j5bH>uWhaiYj^IB zStarjlq=^A(R_bnR=!wKvCp#1E^YAeucMPzDKS9N;^qye+*}jMgx(RbSSPt8eYtoO z!+&iG&U-~GAC*`6irpReqa19rP8&1Ea&uXq=MEQDcu27y(>b-b{lJOoP-0*{?yJ)) zs#ULODPQmIbdR#kD`3q5RIg+_mVV{E=IcM@M20H>FKd;}!|&g}yD$;{`A}HA6syEW zH{>oBqenW$CN|gNl3R~D{d|Xau${fP##Pg5ScQ7m>upb2l;JyL6B%i)tdcGcrNY?A zmm$R$!@Xx!nbOfqE{P3y!KvH+3d=+?;B&U0k|JrSpu~zgpC??9PVQ^a;aWfA&S@-? zP5Dwyx`@@RVC3ly%eq@Znbrnx`FM>zBglmgot-U34h{@JK%6x|YmqpQ)AJ7u&>xGS zfV_YYpxf1cC*&1OK(7z`T`+x&@kjrIc6s14eA4{mnQo+VTzrWzrLE@f|3bce1LEKE zKyEZbjyj6b-?_5ZJZ?*`K-%x9vFFd% z2;_OUZGI9wH1r0WoOdAaQOlT(=_X?Vm{@vh5WC2FfARU%mXXNexZ_k$!g#%7(XWu% zu9s}8`NYYoslnjY-xr3e7Q50*x9718s*-?9$LgL_3i z1|)7bnRbp#_r`B<2ZggZ6jsHmm-cwn&w@-_jf&Gb?!SwbT)#7Y+_mAU4(XHh9>a)e+Xm#qeARC9`e@D z5fYQEN-VygY>YQ}>nd5%axi0d5vXA++3vvZzV6@`BLs!E`vBBQzduZ}XJXz;=&g)lm-fC$cFi z5x2Hx^YQi7<0Nfw6v`P6zPNB185_&kI(Tn6A!X|xpnSoTm5C0FWVN@MvhOo0>&{-C zYnB#qdz_{11&UmW3F`3a>FJ%ZutvVbUTtv1LOm2cOT0TzHI4i8Asr23S(tN7=UHh6 zF^enyR$PUx09aTF#_K5f=^6RR?|wY*kpx!#ew|C3dW0eZmL65QG-hl+dgd0s-O^aq zHn3|MtxIX_^|+a;`TB}o|IJgmoo=b?c0=BfL_Jp9g+*nw%ELGqN7)dSb>zg_HP5p% zz17fMr&6l9t?o`%IedpJezd|b$|*&U&*PF_VwcL&>7_P%p?G>89iDb(F2CFA?(b}0 zHM|E{IJ#C^2+IJ1edTR@sCHb&dy*BFbVto;1Tqd(QVG z{WCKkJ))!2Z}LK_I{vM(-^(+Xnwg0LTzVK77(`b^;LY1tD;L8dz{L0l1h zkuP~8Uskk^+YmSD{p>@s!0Lp1F2x@*kf;SmeH6uLXr)cOPxG*mppwi&xdGmaK|$L2 z_4F4fF=rdb{4IFdf)LXR11{vre>GQSrY9)bzu)K6C7`?Vbmz8#1WYycmZ(4SxI0P{ z{yV4(g0Rgs&St#s6c~KmdWH1q4MZQMvmk2w>0Rw;^IOEyrw8W5Y`^~iri|Hd8+VXN z6(60yXv$P7VhXyFm;lEddffpv6CoDx#%$mI@#86QJPWk|-Uwe~rjDf|$RAtk)YxIT zU!L5rl>f@x{FVwry+gW;k31j@ZyVF`?A2-nUPl~;JrD$3Y+SYkY!*?-anN`ylxLgy z8xIawwBXINDG9hZfyi{x7?K(Iz)$*1Ov<_)KX^=Z7;uu}Pja7hhO#yUIe$IYaoc|m z;uy3TbGGQRHEr0X1KQBAaQcfTX-E|8$KD8i^0|5)8xbq_-1DZ2M2hz5vOFNIt>!(R5HRctd@t`-(OODPle z!{&k@u-gJ_XCrjhsNoU1kk@t?*62j|G#AN7m(ycrOW5A7h==Ci4TdHrR>K(CSs2hI z?(AG5W`9OIC6~^+(#z|AYxYV*MeeK8q#(sNC7{^$I8#?u4Qgo---?a>`s2Fpcm+2R z6`R-#T-mvh38NCB1b(ZK*D-ADgWDDE>xZa-Sj(a zbwef8@#hNWQ@zI;U0PU6?X>U3zjan9OXsAG*kbmSR?AVytqXRj>rU#JGrawpD{)K= zpG`Fw{v^|%n1EZ?*(mMm@u>>P5zgjj{&u7?%sEY083si=U}r>@5N59W4!xo5)Ax9l~hzhVb6c`@#4;^R?4ke^9qLHxohZ#Y1r)>jl!ovnVih3gfS?;GxL5mQG78lj>?z;*t)Ch*}BtSA@#9vv5# zGu{{4<9Q`PL_u+9qopUXUj#ueFLccbZ2Cur4xyx8p+2)G!bQI1|9R zu(?leCEgZ?vEwz2D`5V{h$}Qh0?}Hwd(qfY0Rn^!-k&X1FN zE*(m0{dtqZ(?9Sv5MP0Tkx|0KqoJzszKKESgUj{TzHgJhV5>Kf|Hii+V&dXH^wz9fTnynf{9g6tM9sxW1G*;73XX5AGdOVtsoQG_ zc~o{u>n~+d3wi;L`-VXLF?aHKUzI{lJ!OSYMatcW^Dbj?U$B`7#2637NRc^cRIv}n zooqW+T23xp?v-7~kRpxM!Y_ZHn7K(6Urt&T6`dN7JwP=SFD70t*?+{!ikspI=L1m` zZYFKI6}@Wqc+Tb0VxJTN9#<#;pUT`;Z)m+H;l8?0a@YJ4*iZ1 zVm5WybQP@wy!Dr$_}E`4()pQwzKsMCPiSL~DEeBvm_#0_C3pCP(@y%*(pPRffv7OR zIp8&uH-N5|!#I0?P($-Z$fzN(8-PnwgEX2D_(&U!ZjSQLz9*7ttBlpkSFcw`gKS8{ z>ZzZrpMWp8h+8ojZp>5$#z zsItl((!A25Nr(E)Zkvg|ruU5N_!gB76_eoUTEq^FqH~jOjn2v=kj1! z0if)onHk?P-9q?p5^7ru=A79_f+bViO+&0Av3j(29sqbUre;0Fdxh8 zE1H6aNYp=T08}ofgJ@o8Rn%(8$XLyCFi~HDRLAQy9=ZNSO4|GC=T;#LDGs}41tVZ2 z9A!+E0KRjp00yerH>2(!_%ZF{h&{v7JkK}vT0W!$Hu? z%MgjYW~!{K!4j3zIa<6j!Bap}3+$;h%eP%d<7^k(FuwBI+yauM>g5IO%N&B|cfqjG z^@!q4%o7L#g0XtwUucyZ?x2Z)9rZszF`frwoLH#;xbVz~`u{~7?7!eQxDW;OuTBqM zp0(o!VoEGZ>~&X`+8?-^QN1MS`#iZ9*Wd57t*Dq%kP{hkZ>rR`DCiGJ>`{As$<~a) zbUA^X*R%?_PP1mpb2P_h({$ATl zS^ZA$_VsCWyR@o^`EQ#MM&gf`tCl)pt7tub1tSt6f0C~zD0!2FB(c--FqG&+=tA<( zYyXeFt?d>wt+_sy%qZX^eYLB3A^pXm+CS&xnYL=ZdOW}V6Ns9R76nYhGXkIYAgZPx z1Od*H?==|IV^qn+0aP=;aXGS;=cOu-Tld=73NOL{)jk^v z)ncH8|NC9aVG}*^n?9+Y?66aGx2*Gg@F$iBFayyI_{5}oMs4m1N99e%oJwhI_VLFJ zxvVi2|0iY&8Sh>Jmi=Ih)cTFqRe4S0t!DXS22DU7c|zs8F^* zw(M*E{oNwoaZMJT`?hOcb}1doKaf{HX*D$x5W8-0dNRaa?f!V&TknO|7B=f&8N|X& z*a3r$VsCpgj4dsmgJ)g3T55oY(R|wOOCw@i2>Ki^^DfNxf#I^mw7r3(u;0<($Dj}_ z6bM^FE~lus+P|@F>p}^LquCVM^F!+A9 zqo4HsLZ;Xp85&5OSz_)`51{`26a@srGVOMLt*sq#FhKQC_}4nVuOK&971+Zx?6Z%) zVESj_Ks(rh2#sR$Dn2wsr7oXp0Lqjn==R+uSr7!|pSL&!{Smk8`)Hm$w6`66LO%`o zh8A5GoC7;y<2I(S%JJJJhZOfx(V#Xdl0kina+FRqJ-o#9Ikjw}G*8 zVFH!81J>u;>|lXBYJ}7{sZ?E6jG9wTc>jbTZh#zcXaO0iEu(i+X~+8IRBVLe%ak>n zq-N9dkkt;1OXFvLUr`~=LSC#4_K%_2_c8{90n+?*{QNI14$NQV9>w_Y@uj&_2REm*=U7aho zpQ#zalb2)y_S5BeNl7t**XYMpO-S^av{w}?nB2YxIYkn0TQ}@NNT?w;z8y|e^BtH+ zi!f~CvbC6LBRdtJpP_~6HuFZ8JVlIJ>k3fGMDj^1TT7t>K;?aBR^DCwkPj6EklSS zcTI5?H8fcAW$%BpCY*;2HQLyu#2k^RZ(dFk=?AqCJT6*1VYQz=LYnWMy1j5*w^CgF z-K`;Dj4LQIlmN(I02cWe6XRFA+d!sKY581C3`yqYOJH~5J@n(L<=P)IZqZ1e{>2Kb zXYkZ+mGAELT!WTstwVuRgUntHD$OdNPjgh5m)A$OgbssWF}hnb8n}T=)L*{HHLd&# z>`ngpFX2}0RjJ`Mv|CTrdJGq-`=&WwvCX*e7CUc$M|?H@w!{x4q=(45q*g58cL2ir-J3Yk4LJOT2W?av&T=^juI062d&Y&Y>;^CNT%-8MM10}j|Yfw8DCKd+C{7|C8oMlBzYFV&YvsYGptF*I#gmhd|JbpW98=Ma1m z99S8ilzqqWwT8EhSKB;)HQtpQ(X!IS+t$|Bq+c=*&s8ijio6W~8em8yrDjj!#UYr9 z1fAbO#v|s&1o(mUt5-*7B!C;C^o~*WCZG*oQhJ-I;;N){?}6z9HmBlK;c^l|CpNe< z_bq^Wefxf}gDm-cpA4O&Odi5~Ng*BP=y}SoqZ}O1c3Pyamy4X{URO#}C>e(xgeP$i zYMNB?c2{xGor|RaQf%|Aj;V0*Hn?Ctc6xs}EdCOLiq@Drx4#~1_iM0hZZpk|q~SOF zhJ;{(Kxx!GJVXfz313W+n=)TS*G+!<^eHMPCi8{hR(F6>Vu{1HIIyj;dIiuosg(Je*WMA<)JA@LPzU6(#VjImFeSz3F=Wp^Qn{jj@K4b z4R`yAtP@$oB3@yXTd&m4|8i_D`RTnf?^(a{OptJ4)R5H5$D|J9e)lf@ETTCFOj5F zwjU|bEfIhaaf=S%p>*?9sJOavn{PtW3Dn^LYS!k0%GnT;;cO%bkT|fLjxg99k@5TNIVQr(sDlE=-tUnL8Yc%9}G0c6FR|J=}^r@@T6!tFH*RAu3! zvvtu=TjJi|JjBwd6W8e#e~(X5Q$(|rsPfq>{7T2qR-3kv>4tpB*PmJlaIkFb$f&L^ z_{j8nv4)IU+lwI0hc0r})IxfaJ?`=NA5zBn4nt^!S>)n5j3T5o#KgQi(b%9iBSTEV z@r_V)T=AX{D4{EFBe?^YQl-$yA#upNli;jx zU4yB}b~x^#h!t}WE@aKi-Mlc4;=mjehED0%!;bY?g_+VK!WSnJhj+jM!6)dw8`iM$ z7K_K7@8Ixv%M}E5(xH(jl7lvW2F*9S(?u84O>(T*HV$tLBB6O*{?$fNaKvghtCYuV z&(%Dzu&$UYnXp8wC6tjw!KHLx{wU`T7r{jTXaA>-QxGJpd@ZemW`dIko48JPO-R(p zcuqI%!@jqZ;rl|Tatkz1R$Aa&9eo29*bw)cpIMNX3yJPpTJx$x3s0GT&nle`51 zr$jvb1rO?v(b271u1iu>8>_uZjKwCxNb-kzy=Fx=hw^1_eby?X~@U5ati z#Ge=MXGB(Y;E~{aO=X`xM>r9%#PAmz!xc0c?5Uro!zOS=c{;s#!9ogj^E6K?1t+Z} zT2~obRkqc>l;3DHJ`zk*RM;+aXParQYP1@ zwi5W`80Ye?GSc<=umhHHB9w@HX(nKGvf2C7FBOQvlAZqeNmFPRyp)Q3zngJ>eB?y& zp}R)5*4i&e=U7iArXnwziGk*ioBGn+PDzy}b-}K{+O%;v_*#x0+@zqvEl2*6{2zA{ zw;h=B@<(2IMz^L3OpUL=g-F}uJTylq&AuRdgYTM-cc(-mCCW0tu z(*dhST?B`4c)5dN>Yr3Rq20GEAB^;rScYFAqJ$J3f5z^ARv2 zy)_szpw~<lKb23@FU1KgP{T~wdaUnAoneB%Uuho^a4RYhviScdkm>AXOghfqH zYsxmdv4Kf9hD`iN%x~@i!~PLI^2E9mlQdkX2>Ss=$)MJf7mA18dTftEQKOWldr`r@ zH&1X#GKg+9OCh}QT2n<6dhf@}&Bw__MI7+X_s^=v%_~8Mv?=pS*X?0(sy%X8Drm6R zp*DLJ*+5!1^(NO9hw|jac5uIE!Ex+j^+#bumSHQ{(BwaiHgU?_;bwZzy0|ivwv(TV zgQ+wz6=u62{q!998+})Qf9K6hqWU`_=@)?F%-oy_n#W~r%t!VD;fITUpeKXpTM!IT zgDjSPRo5?92f#)uaWtX%tg_!*&tHQUv&wd|yTe&`u@m!tne`xLacduyHGFO5a@Dg~ z)N$OzGE>aTrt>S?iMEHo?EYo9@73STS48g~AUN~MaVCpAm-6M$5x^V_Z6|pq3Mmq$ z4;}*(n1H%zpVKNV+f0}IM-o`^6Hu8W+#EaHmPEa&2Q{_+ zu<_@@z)a4cMcwi-W|vsHK5mwL!e);0=qv6+TmZhhbJDN-F2hFC-%=20kAQ4{=-HK= z+dZ(pTa01_*@Iml&yu|m3WEyTD)ESgRJSVWwIaYH~s7br0m zNcqO)jRv#b7x>EEzYRk0=CJ;f*uJZJl$aiy&S2%KV1b82P-ti?aMdpcmn`2yjL9DA z@j|W@#!goYD{=NW|LP*^Sx)?T-V-wa^9Oy(y~V{vUG791;0i>Hjaqj(>-y!h2$RQ| zUh|5r-qqPYFw+1~-jX)zk9jFyKUbqWZT@f2e%LbZpL!;bF`o@m)41DlUUViFJ8R&> z;r)kNA!*&d3jgjV52{Q84&bvaeTt%!K&T$)19|;iro@s_$4t8qmU#en49JX%&0>(y zAQjUubsZkx3N4-$m$<(F_D|~=?LS}om%m%oftZ=%fFR=SRGHU%JwVYppX4|<%6W-o zjT>;@wby!z;%J!`R9WkroVSfA@g-E1!MPQtW~+j+d$ zp#EjaVeH~XV?)D0foM?PVV^B}VBT)~#VL=g))E>~4*{J9_u@yD=IslPYeK)pdXWa! z3X!Y1(A2>Dl}8gjZ&UWq`giY#H6s^;Gs>lXck*VRd_AUhI%M9xOsA_XDnqy7xxL_f zn^v12_uAb{;Y16$;Y#avC2_Ve*<<*1=k+61bJojzZOysEq5C_h@21mRENR z?w@-88ou_skRghw)9K?%#y^$9f{N`nvHlI2@SNlW-m|N+Pa4>-bPAX9k`&_3_3%M( zFSiZP`W*z^C&pTEj&4n{LVUjz2;~6lN<^99bVN7gR}Bg zV?osU-OCQw22@{ZXA#93sG-~Tf&Ia-I7CJGjtKowXE*_*3kbNiPZ8IrGjp9kBFGmU zt`meIY|3d5M1PW5BSP@l%Fgb?Z%nelqUH=Ks=%eW{-Ci5yR}{aV}rT2I>m14ckoYB z$8no+o;6D5k=2Mh#%cX*Gv~ll>vyC(L1~IG#s_KX$g92y3vRvc?uUEpgPllCOUZkw zR&I4b-&0EgUd}qf9p9E>SPH_2=9a~PkNTQ~lTQ1~Ve13Gqf}}eSA`+pmSwd> zKd~3MAzwDc#L{1+aeugM!@Rym9-I@wYdyM!Q$x)HKE{P}Uo`s$_Rx7V4_zXn66O%v zS;Sr^m#pEzaoIP!D_XIA+aH$>BXO?rt?HTXo7&Z7rNK;v#Bnqu3?vCuYTYggcU)}04uPxjUK zMq*ozBn2COxzA#jTKqMJy*voJ}(pV>Eqlbz<~&>DZri&^Wib1z;vlz!x16Kw$4uTIOfsTVTB zM@U}HRQghgq!m1DxR-EKJ>p|rY7IteCZaS2Qp~CGJos%S$T#+=?b-RlLZ{DO3*wTr z@8T{{*)IO9rdvoDv*2fb6*MP;|3L7tM)q`BGa3(|HDF6?pLyymff9HGE1m6rRqk2O zi3NFXH9z#h6MS%Ux&=!jcZcX+qV|U?%>0=w%!>JuC-A}9Dqh<$me^38^s}tn)F#@G zS}qgt-9Df{u)=BIbACPj3eQmZksuy3Oa4;h=}PEL^N;0E2~HZ^UXQ(IGBx|v8+eY( z()I)4Fn`UO1j4=I^mtmQRYeA3P>>m@j6o?SX7ja zKb(Hl<7|1?VSD=Vv_QTl!5`@@^{u~3%+}<*0qFcn50!ru*6LM7o9&UoH zc$E(H6x+Lt4P~)?WYCG-p7W+rH-l;w0)j=F(idkPwyZZ-*xU)_LDo3p<<-`!YTO0Z zqLjAJGjV%yWAgg&>A*>yo@T!wck9mz!e)Xj*c+i(5*LeZZ*G0Jq`0%R_eg1mpL8wy zZkzi`X~zc+8XwAfl>sRf2@$5j3;0)PceCR;L;4(c9Vmix@aKt9OxM zSAqGSWDkdY6r9_A@FQzED5bz{Q=dfW7jsSSV>`#+aUwfe(nu*Vm0f7^C!>8d8u%S+th5ySt0) z+kA~T0E`Xh<{GCiRJeeqeI6^WZ)LP&*iSm>LypH3Y^DZ00Itp}ahJAAQ}ny*iJYWe zidSZ_crUkd&JL}pB=zflJ|rYe{KBO5jy`g$d~ z!P9QixR@=T?YM1qDU=d(F%$8p!v<$XXWr;ICvN|XvbT6GrFq)U)aY3UT{1_Nn^?(S}wZ*$+z^ZwrV&+iY|b7IcSoU`}ZYp->!>x$B5 zK;@=Rz#MvkxI5vYeK(ycFkatK;SruiMSXuMb9ww{LzUA51z!#yi^0A<$v`v)-|v<# z?{Z7TWVj^jj+vjD^A%wZ%f^buKa^yVGLGnVVc5{ulO<}Z{UfqEMNBi%e#=K(%aU0t zwLv5;=SMuW4x=;>aqBWlNH%$5D7EjkhA`qbX;L63AR;dz>Iw7V?TNv1NY*`Jqfr=D zRpsQE6hICGCGBg#W87%SZq|q2GmPfM<#X+fs&J1eu|)1aTWiprUqE=ILQCUUoCSeK zWds_FMtS$iOj~z&wk*{bs#47G|7`vK$^sVi!Vh=l(avpQ+P{wTO%n)=z)g`zX#T4P zD+!oC03ci%vDLf^CbK?V`jW@ zu55%u^>8XuOkGc}|5zwyGZ=Xes{%b>1Q2jP%RJ_!rg)|Fuv0cFbg{ewmBU9``_N`} z0+WO?r%TM$2U9(qfVVpo>4_wl>0+6#b3P8KI}5rZ=9@9-g$sT(-y(IBX!j;2lawANjB6Y`DV0z$Fgv`@vR*Au8y|u-CKAQeD|qag!9&%v%k$B+aB+1{ z@f%^^5~KS{*{zN)Nbmy~J<8ZHFR;ZM=BZ!!dNwBuPOo?#E`vD*yd(pAf_Cl*_K9K5 z6Nx3%?q%K?DDS<ddQ=o>HmGP>S~n$1XX_;7qL+lO1i92%k5p@x^iX*r-{ z6L5&FfUj8f@q#|m{fcz+Gkqt=ERK&9XV7TytV={hL{D@%iNY4Cqllm&nNs1Co}QlX z*5o+oZ+u=gpMC{sMR9;QjFhGWS&DU#{(rbs{wWT4i5<~{3{pP8z`uWg$lE&db|bd# z0+Ua$4+$bF>q#P$ z#TvK~VRIx`ebCZ+R5H$7uHdI#rmoxSJw^A#zpyoZf7{JMymA+Vuiq5J$Im^9$@DUn zQ_1zpD&b8IOJ8mRFS~zg+i5}N89@D)19uj_0lwWof`O2K-L7oSH537rn3~njj~En_ zAsQu*l<&7`AEJ0GiOvAqOuLfkD66d87vJWIS*{L%=*cj8g(PuJ=e>L=I0W($#hy8JKa|| zlsnXQkReQBgi<E<*DUi@6AcM(V;pZD^3&g+d*Xb8127ev`C4F}-^>qBds)Z;~X_ z7CfV}lbL(AG#_s)qw;%sMR&}BY;R~^9}Sy3AM(x5tiNf!$wp)*=;34PYT2^iFlZ{X z9$9wOa4jEkT^>>X`YvB}M5tNVT2Pit4(vDqKC031o^+%;4JPYr|GhTvzqHY#?XMSz zt#(*Cs&N4@$ar{fUfE>a44gIWy{Tve@4T(Vq@6N^z74*uFN^~2JLZ)q-gUuW>3+CV z`^)E(_obiFpOfRj)6qJrsgsLUCZ;15*w`xT`H&>N>f=5@*z2}cC$>cqf$Y9oP}Ui7 zENKk=v2R4+U#Z|z!NvF_eV98{0k5twy!wM zly_MEdws(d_DUs@olS=4&lk58lDLF?nKE0QNgwV22Rpm^M`85DyLR-HQb2}3x^?>7 z6Zql|f*D0+WrSxQA0?PlX#NHzQ;NM`!gNUi4G*>8lbO2gv>J8Utd~l=i<#`7{P1?C zEl;%bZj|j1WLs*zdQLZ=h~FiN>SW8XLnG0|ACuE zvrt>G=}mTrPqJT0he?wb9OmcaBeB7OT0Bo`u3PNn(af*Ik3oJoy0`5LNx0lPHy!ql z?Q_gmx^wz>!yjv<8{%=Yu`{&YJ`LCJ%Xy8lXoDm1?%m_`C?f%vPxuq9=Yrr^^VNw< zaj#4N4L|kWpy(Y1Ad?T8vy%aJ8N04R?0Su%U}t(nYq}cRfbkU?r1@lmrT^76HAH-& z^|lSh8I_)k=n%4Rc~(z7KOU)uw(X0A2H8<%EQn0^|6InuGs#ECz|gzm0vW12Gn-3@ z;}+I0Ebw*u$ihe6iU~QycSOwDi+U3bd@a*GU3;J5(&<=w7ol(MGl<*BHttGMle^8@ z#&~Gs`Y18@!9Vd@s1996vEJat4%Rimv-eRgtRBzJ9h?Z1ymdtAR0-!JK`z<|L3cP7 zAY-}u3agr8(a9iJrlCGGdw@V{<#{Mqoufg_ql=OJ!?>}cw)w3Jkp2KOE zG+RdL`lk$edtm7I&>d{n>~J3Vil+Q{w?0Rm<32a~cB3KP$;E{ilKpMuu7#PE6$j9e zpQ{AineOen>^4~EgC5Gp#-@J_Gk+DT3y{C%Y6lBTKTun;9?>Vwi8Tde!`*fo{u#RP zbZlEZhSPOT55QD^4Y#+Qe1IpsWPU}qmQ(_uExeX1P!(Y|O!JGu}4SCTS(STe1c40>hvdI2Om0ac{Hx`SC*qG>S zYQ&h&zF+MH{{N*~H{7(Q)B^}cMfx$smY9Qh`V43Wn>yy~1&osd}IBB+G3 zBsJ@?=}6%EQ1$8I%4A?iH=duhZ=O4nEcZzvQ6IhyiKc$yzy0UKw?|7B+!-EUjaFI4 zG`V|&KX+=C+9W(NK3_{-3LVWiYd~|%C*U3FVFe0WW7{=r$Oz2lQXCD)SH1D;j zCYs$N?wr!*#h3c?9^~ANoQn9yeugV#))(Lv%W<; z3OK2@)wX}Cq@y13hMj#`U6+6_YvuXDc7!}A zb5Cu3$YrGgg;2nX8E3ee4{tdG#4qU0ZB0zqM=x0*5w z@VcSLL@4+t{vQb^Z8B4cJX@$h=PRnHkOA(jA8i44UF~{8UU5__`!Gp6wNc1MKZqPiY<4 zxLHGiv<_5sXE&TskweD0c);MwVA3xz8z@WcASC-bkc8>g$ygw|;zQUK6uPn20@2#Nn za6os#AC!neLG~VWs~+HcLKp05map+v%kkU0ydkhWT1yf!OCmSDS1XJIk|VJ^F?=32 z&6rpx#0nH(xs-f;DCedwX@N#&rL!bFfx1z}AW)sAVlay3k3fA6Su_&moRx;vGg&hC z^v1WETozKC^CbvgmOg!^AGp)OlhEs>GU~mFvm*JLcij32E&)-&Uo2YmU3Pg7U4+nx zi${ndJ~8FviLwMY&_^C@RJ?y}*^I#p{PFB8L3K5e7hEAq9=Bsy|2cy*dc#j7`7@w$ zvI4#vEtjf}$P1uzLnT%xSsXYhPy6M|r5MbROrD+r9B(bEYob2?oOXuEze7N}j^Cmm z!s4=>gmBGU7Y35^m~=hHp~e;Al@HgWN+WtGJpfhmo7Sl!VTA7{;9mUV>+M?drXLWUclm zECkC3H^xcu;tN#We~ek)0ls(FAZ>soCnx8AK4pINi!lqxszJc|slol|*?m%4W1%kq z0byZd$0a9+24dh_fAjmcZKo@EpReKN?9B5}V+3S7P^f*nxsVsHHnRFA%5>tsex;8V zXUVr;XhJ#+GqM}YGMp2{0}#JTP1XkMVZF;`>nFr|#jUa2*q|;?s?GOK z*jHKxF!WTgSxKIV9=uFzXb=eM?p_QlBtpviu5(Pcky4o1adXfbbA9{?3ox3=#kaz!rcZJ5znRbyk9)53YBDUJ3i>W+(ms*Ge`UyveGnFuwM$66pO|e+7 zYe=#pLrftkz4>bVND^qXDKfO8r*{}a6>x#xkczf;IM7(Eii$$(h$#8`O1ALX8UWk* zYr5v}HVxuS0z#(CJNxai;>jBGn9IAtJD;Ehf#>f4zuzWG`#p=BN1YZck>Xv)`=`58 zD2BWmK3&;;T;iYR)})GbKe6XmRSlciV1T8C?{5Vz_syL%PafW%Z7bDTV1A$?CD6;U zULd)vRb(D?Z0coFPmlxUJEL3Nxh)Vej^?(zJ$f3 zBGH3{CL^$|8bed08eQ_`=Kk%^t|%^4Wz_km0YMCB^H-Pnr;<7~xUGT04txVJ^d~nbeu4RDnfFvA z!WtM(j^x74O@5N(3T#EcjkyoLzI5}X8L5v@dux}r7#8KFlYd?onbaPQxh>x8cfmtk zrX%vK1?iGs91^?01j*k$)ydV3eLOt(i)8b_fBhT}2WyCC&y;R^MjKMkvYaEDjpl2# zpDgs3x<{I&d9I1$TAq9+_QMo1r!FpMff1&>QYiA$IEtznYwYw}!#1ph!n&OcQ7C7o zlZ3cCrXgX)uW8bqn>EcP>LeW7en|1a#02tSHd2w`En6v@O`8{FF>xwXrHrGqZ!UV` z`elQMvmcd?)t@2FepfOJuwMM+)YGVZbaceD**FhMS37|^XR=jOQ;9B%ITtvcc!<0|oz@#XE33Ta#0GQErl zP)<`YDqhe{+`iDH**y6jxtgyTgAFDDK@Ucbn#QAvPZ0(O7k>}!4{FLOU>MixZM2ar z^4ki52i@?yn(~YaukA#yuk%xM#+5>qsUNKL`~C_$W6@jeM8YCz#$Y4m2`x}_*kmaV z@RzbmnBC`!^=J5cY30;$|BD6C)#bFaVDc5!VoSk?x$DdRe75`L^hVg!g&7XpDGV<* z(2@}%nB(1B?3;UI_|8SPx0iAwXa@4qD%l;`sw$N3+15<^Go zFrfD(YP~ljcG{~w+X?>Zv>w~sEc`1dd%bI4B&2ft44%@4DAD)R(+pq?%Y7s<5CTq1 z>E&Ep->=OqHgng@gY7xuIw@-9U*Pl zBWs)rt)(5U8h?`85I6d4Ps-6`|IXzcw*HpUj?3j44LUaqFfkxa?p-9<{tSl1;**uI zf-maNSt($kaS!^=joYVdRW(}ZH;})}aev%eO7s}%app2d3IGa%!J!^c=wYDF?T0vd zIC6kTXFiI9nY9>GZw5xm-18HE7aT!*;#s~a;wt}rCM%1+_#YU#MLCp$_UFU~5S3A8 zLvJvVsu_Nl@P zWrRe5PfsiQJ2{1rr(O02yoOTn^Te{uorst|z=P17N3RSCiE( zP_^<;Uy}a7qJ;iEy6Ry-#Rz9?DorOF|BK;)v%c>7Vuem%h!Pz5U`&I0Y1|bfJ2)9A za^oxQ*-PbJwIl=mT8-4w(sHyUv#?y}*Ba)O@8Q0eWxw1N)A}*yc1@jlEzXmc`p)-c^xJHst9dBhOJ0=j@h;(xc3j**R&ngWCnEu z4#kq!YwMmC&0|{-%A4Obwfs-og(O{0{HqVfU*@bT95o&Ie8pd+%n83*l(l9{%a0zE z>9;VbozPbG>bAMyH?2Jg&MJj~j*Q(qOVkh&PRH>9gZu+G^(t3wYH5)mQ*=XPNMmR6 z%r`3>h>D4ksvF`q4==L){+P^$qs$*-=w*p}o&=|HF$`k9e(0k=&-O6K!#C0b*Vw+N z;2)DH+VWAb5(~BGXcMna{3szqfjIM&==fnnkR@+bG~S0!H;+P5k?K4ORlx=f>VgA( zea?`R{~cmCzg*OGWK(YiqEhJA5v08}QxFLM0Zr|D!Xh#hn1Yg5E5+^I-9yz0s6PV_ z>!AuQDXD}H|IR@@QAJDZ1t~R<$xC~q}^9_&oPL4Xw$0g&+yuN4MY8D08tdxJgf`Z8xjaU70BUmU(4)-P3`XnsDL+V@t~!rmT8&t+MWl2F8{^_00U)mTXkMDs%;<&VDnMW0@Z#u}geXk3IV zLS(gd*5`-;3vhCg4JWL@_xmjxIB|}b{+j~>@;5axGQg>Y^;c>3eevz5Zt0L^-47_o z;mic&l;M+`Dwci*KW~i`h=JUmlR)(9T2;oysn_^===y7?z-uwog!RwrLQev^mK^>g zyQBIg7Q$wc5(pGXY-aqli)<~V_2V>ge8yDjODbQDB3|75{kT;U&p%)koo#iza1e6r zwne-#s^@8K z9_E&vd_Fb*{r)v&tBj_OTL-2_&YdWK@{{X}6cU>>hix+~_7uAR`@ zQ|~m4%K2F%vll|9fYChXWsrFqlgD9M@BHoGw|~88_xA@=P0GnHue6VWHfeFeRS0>B)-8q!7G~(F1s>U8_q$-m2NsO-k9LhFh z#n}p#9hv^AcS*QE2Q2zOHs5a?NM*gNZt-f(neL%3UhkJdhnm=7NB-O{!#=Pn9*E~9 zN-tI2FfMI7dodHyC`4^V?3b5%B7GS@d+iF0rNQMREF-}gr{X^o(=Tf$5{tjtzu5md z_RiXtH2aHa{<+jez@PuTMHT*!p6vsgMe#d(NcYscH0j)`zU(pT4_TjX-QD)Md9hV~ z^D-KEu@#q=N`3s8&z#CDO@6+{qgS~HfR2nM^+=nIPqlvhR64sr1P^`>zWRZxPz=vO z+Qp!iMD`gPvDz7)0$m>mY}~V*p`FFUU;W>bRJVm4*5dyiKmRj~jPUsXUl}XT5ON?| z_5bKn;bQ*Z+X8==&{6-d;{p`x4k-U;SpMg-P7O#M|8xESHm_!3i~rBZQrP|f{u(P2 z3rPRx8tErb2ubBAW`46U2i=DT1EauBnA4ZC`z$m(@;O;lfsB`fkhOg9E(;1aMDyL*kVbYgvu5X7*$cgHDz0`LnJmlnYCiv$B&u}R#*9nF2Ldw8vC}6fC;7IC*NClKH2c`%!HUlN zuh^CKYkqkv&EhxsFDzVO}%qrLV$euRx3Z)deqR5ompF4!gSD8tl0It=rI*RP1WL6l`KW(%KI(8D6f zkxlB_Bi)Ccvwx5t8Q*A@wa9fKTZux9`}~Z8_;Y4hUDi~}f(hn>>_WU60(v_G2t7r# zTD@Ok(!L8xdIkxC1^~@n1qLJ*pB8<5N!ge*{R;E%95I1bSdg5)&ZFc?sdBj(5!#?F zYccRBbAwkL;CgOGuUo~?8J|PNd8qkTZ%igiwJt4|1i;f{;OajsRL+V9io7$nH4}v@ zC$tTln9+tjIi96rZl8*X#_`z&18Rk-pVKqEyuEjGX*@XY*iC8<<0K!kJy)1Fz0?y; z7J1)}C6adFuj_Ys$hZ4TfN>5T-yX%<$K0`WD58QAf<8-}J$<8GXV$j*R(-SMb`oVS zW4{Cm)7rjT3{lY%ri)ASbH}mtY>tsWm)GQnvr|?A&cyY<nvcwSl_Axwp0yXIch`!bnO5Kt7UpgWug3cPhspi?O`&d>}cQL?~X|(kDX+BSR?! zu(kjm3xyw`9r7tXU2`1Lxu2?ej@Z?boYC4A?1ezy8&ExA8E9L?eTj4-xx$>yGX`U* zNg2|yEJ7mFKzic9aUZ~++)V>lrtrnh#PX79q{nOf{8KbI6(5rANa%2JxHeMNkbr;} z;$V6n(*^wKTEKrvJC)KjFq<$QX-ukC_reITns6DRsQ0n}^=F(!O% z6^`!imTH1G+AoN%uB{mXYO78J?lE0y&9kE3U}M#H@c?iOpF4O+Io)7in} z?!~Qpwj#^@trm&t=5PP$9kqi2$494zL zM|%)xP&Gd??NFD{^m=k-+o>MOa+OxQaJ99!%~(^rH2ZNY#Heu;y00Sq7uC=iyOBO zq8L4DEpb`=_HfMNf#WFS9jm<6w&d$y022BiJRDyd$U_YeBWY+ja`p}kyxk7X67eGX zoJ!UMx_jEdvfBb2PHa}Ab*(U?xv7SXf*cBTRDoBV2e+!ygoKh}5=FfEy5nah0I7`V zGJW|Ud1L91gA$)kasZuIliLA0L^x6S@xf|n+b^|3rQlmGd9!B%snkzP#<9xOu}j9S z;N`Wg!gyus5rC3N4g;d^xkc}NzUiHghh>)OANSIgl~mgxB)CPd_j3QDVR6|x(?L9{=wAnWz<6Vtyb!LldD6y3z(;3KyY zmlrXMS>tmD){4LS&IZN06|*DMK9V$7|PQk+tSXL zqg7%-W4zq>%k_qOUdW(IF%PJ0VU`G8ylZj}&VkpJkV;t`_s;2{? z?Mbf#t2jq6Pz-)zeBclZ1~wbaxvwpMQN6Eo3DpLB{3~VygX2UmKUr{wn@JfivRu%} zv`MLoc&rCD$8!vd0?BdCmI_mb0B#?1QfTQZW!z4gX4SVF5~yVQTU=GL7JZI&;i1wH zLY7_qrjen4ejh*5*V`}PK^pcOcMgX;9UB0N>Cr>GFL)H-4MNjJrKR2R%A#R8a&qCQ zD~i;R*}1vB`|1(5)p@UjH$dDWx->21^wb#?Zhkv!Czt(m(m`zC-61)GXC+!o<&FYi z0}pVnIF}RXlP7^*2Q3Fns;>bq(J7Yq+mb&dUvhpZB56&p@mSGPu9s zx%9TiLX@fW0CVrKX|*nAi-k_O@M`(c61SfpR#zP#oJTqFTPfC_CI$bk0qN2gxEXQU z7Xe@jrD|xKB>x8WmsbM9fcBkpQYaN!e*aM+_(-7>Aj8(&ythAk_uNIenYi$!2cr0D z$b$zX&09X_=ZT>AD{k_KF~wAFPHU;`C^Ab;qR^V2f;*4_H;Pw&AsDkh*;DYm_QbwQ z^LadcU;x+7&TeyeH=!PBm;$7OK={7WI0f_HsgI9Oeso)paa<$@(RK7tB#P%9K7@*j zYRH1;yB@-ths@pG9RhQ{8)SacRdqrQ?hBwITu!=KU!3Ttyvu3>wX(nPxMtFtvujELyxp3goExwrXRQ1Q9EoaxNp~-|G z*LxrhPGG5z1Ca%@1^UG1^AlRfOI`>J3Wf=jQyY-$@c%A{^ZtF7&h`IgD(UVn04P460#5Bt z!G?0iONV1YisUxp@|{Pz@F$AGl7~?ew+b_Oe-|R~86#q{z*%oj?=rP97AhXKCfDP& ziMA5A8a&xruR1TCyEC9(h~Ov)i@ETUC-r&t>-t0JoO;-#?N?+Cx1E>o@xemz(CZc;Cdr4 zxRqPIOgngN>^-QrGn}cn6{xnOnx2_S*{T2WW2L{*W3t|s92proHZ?W;LrDVS-vteR zyYie{Fu#8!-2ikxL1ewKystR>;A!GDUUIb7A`w&cy%k2INxzdI$?e;}F1Ys$I37wE zd*Z|HPT0=DTgkyc%hzUXD-&FZb&eZ-(9iLFus%6;zDq>;^J6A?6T1noqpWtZImVHN z4OY1Wec~fy6B14n6iT`9bKI@N)|<6ntSa^A{yC$17uZ-=UqFLECB2P=-gmzr1x$Ws zH8}va1KAa9I^F{sGhjyj#blVTETsF?GwW+B9q7=&A^1{`n46nh+Sw_YK5MI}s4#5? zefIr_4|-$vD{Ct6-i@p@*nbzGvkd|4fW}p_T1fKWfQPy*)G5C}3Th6t%ZT*#^+8{J zD0!bdGVCb`=LRqFoCPVHo13%8t@3x()Il#?ky7Uq&ZNeMG~8c>RBrxJJ_I-Rp>?=B zF)o~4xvCO~`^x6>Pit$G&oj4j#7%ns(UGx~FDrX6=%t?uW1!DmuJ3Md-#dwe|Bz5d z-K(NPVZQuie!o_S5T*9>jrEl>p*?O&3VZvxSEMspX)!|10mh>c;Kpz?^J&7ivQFae zl70zrO0=ht0!v|Th6!GapBpfAoeo~P+g5%8YRRVxc~qMKix=E!zArT#iP^xOiVA-d zf4J7d|AK8QkmI05ZiFS3z#klbYGAFQD{m&=zrzlxfKfaS6H`%oJG4DT1AI~w2 zsv#qZc6`w@l=uA8pvXnLA*ZZm5)5FMIgTTxa}$t|LbWi_10~{EQB&_|;1%WNpNB0H z1aJ2C_BhF+K>38aF2Xp4>-BEXuNp2*3Em<<2X*~PH7^% zRlh6;uPh;-(lur#W4x(`vgfrS)cO^m{ z@Xaoe?3*I9_|Cj!R6}ifT&a~){9UR~t16IrR}k<^2bcjVUatg!mpd<+N!fG1cv0b_ z3*Q}4$SG3=n%Kx^W8*%^)LYotB$PX`5n*rd>;M%0B0!6|Q9}p&qN1XJA!^%YMK!+$ z3iNzw1OFgZQ#K>A4PUN_1E9#jvjuFcfX-pO9AV2x{_yTP?G#gycNTMK)5V39bHD`` z*3%Exp$l2uI%c-Sg3KAbd-qLN1U>amJVKES2VIjjkxC2S`5L>00Z={~C890;Ma^O8 zE{l7ekhs$Un&&4=#>Pz)!1eAwOsINie)GQS@@oEP*X#J{vbMPhBcbA-{Cd(6~?gX%NO@ZdERO$OKD`7qXw0O z0kNPAY9WFkW-GssxflWW#`GHqS-cn%bZ)LCeqBFhE{-!LJ#;jpe<@O@*Zv?Uws%78#W~ zESyHOYsx$J9Zx;vN8=2v;lpmW`+PpDeSw6ZaDTdP3{yC-!kNo83^p8pl~VjG%uM3N~PQ<)!+g7<&|e?<@QDTDIU;F9yep{;SJ zc#G*tu|7{Yxq*P2qjXx;$up8i^gR3N%MdTe+~4(BLqkI@OEBR5!jv}?{nY)ecWlqU z8k+v)Ujp~hnZ>QZIH}%mnifw4Zp6>=()^|-tfAIiPS$%cJWGqXDEX;SdAPwQ8@l$% z!={(19usAt2?kv2+`nenEnl$ruIzx7%G`zXS_mZ|nAE6dYImDmz8(rDlZNa_Y9HOI-O%zE0gh;2L z;TAs5PsxdGdU|7`1?LuKLJ_^?8(Ur;^F7C>+j^Ha!*IcdrWf=6>+$P7(xdWUWQS@Pbx1Gw*`)8>ett}YZ{gWk17M7)6pDR|EJfOW^Smioj*qT)H@ zDjL9E;wT~mSOj)k{dmv=I}C|q9`j^leNL3-$@a2BaEJ-PV}A&FWxl(nq?CF|&LmUA zy17ZS;gk7A#i@%6K>n0V3~|E4XaPq6vnNU@u^#|&0)r<4_mY(8_Mnhp097IZ zQ!lN6z~ugGbH22kVTxNp#3lHZK6mZGNjIh*IG-8l z;~r?dyF&?FiAe-A@cLq?`+mhUrj&{<72$`XxuGB<@8V!iTm#nY)n0OY=SB{|PrkLa z6<#5}B>T?zS&E34YsD1)f*(QzD8rqI0!{^iev|P3VgZnhuMromqYk+q7_f4j z&|Rz^Zkknh4kdcFuw~(!c8T1)^Uub^n?vh$FSYIhmaCkZwdz0dtNYzV>NW9pQbQ{1 z&aBMZS`vJ`F21A*b0a}gr#^otM;71aB&codu&`ZfqL1CJ~Sv}iN zKHV)ERt;qVUpFl+ZSFLpu~D$#+8GT?X0tloN*^JV77l@J$x}GXql=&e9E0l{Qe1SD z(GN65qJ~*#k{D!~I}6^UZ@UdSPy0QSsAF1g&bfRL4^eGL)*!i@D%+{XuW~qpbHvh* zbKj`-O^(^NqFpw0j(=z`URG~DByAdO(_I*^(<#UeEGjTax(7->de(4#IFs-FcXAt_ zi36uKqMuiQ`43*qAz*cLef=^cr2g*b70F|?-MvOJOQu67_^qx6q;HTb9)0L5(h_UipDza*zU`yYK7OrrGCD@d7@twypN;f{r>85VVT=(2cSohx@fEWmuYie7&(H15 z6JM|C*S{TGUxl!!mqJL)k#tqExLRCp)hqUy#d|N$)KEY<{05-_*SL3pM|R4x$wZ!2!F7N3p^QlHvLx6Sl~YI;wji#ILviq#5Lcnfdsse!s=DL- zboeO&s;q`GH7Cm9hqu%as^)p@%i#d~R#LD!U5S3;e(1@ufRi3MbqO- zlUD3&ZeEyROLGwE=2~rlgbu4cW!Uo`Z98UtR96L}9aMcfm9YUkuq;&y|X3<9d8vWD7=JHlNg^ z#ck&H@ee9*7lr`@)X+g9&A)scBq{+^D$ z?lsvQ$^i`iJ?;J|d-vPUf*_By1OoZr4YRON=z2oUPTB%Xh(h6HMbh}?@y|aR(BuA;2URKS7ri;86zqSn6o2fASZeO%KNhQ#Lg}7aB+KpqYOP= z)L%4+Px*WZJR4O5E>df_QoMR_tP^u)hO3UwjK|Ku%FKWV*ocM(T;Ig7Y+-uZbKVk< z_1%4jW9#_7W-n)LD_-I7+;CZOaa=(lSc&13RhSgK%}Gh(A-X0u6vK4Lv7~1uLUPEf ztgKu>Z@GBdO(!{lNZXx6l$4^jmm^rLeq%3yuOtXZz`GR!VvppDiX|5@ZNj zCfu6KGj`Ya69a&zVYZ<;V4p%3ks_G`U9*KmBO-duZN+!)%o3`;_Q7uSmR{LHpcoB* zd9w3sDG!KI7w>psdp*(Eh`>KI+`o{sp%!f2spGj2;YWr~VOdCiq5Plw5Pw$`&}CgD6qXF67`e*)E=mzhF2N#oVry(SvU@_11> z0e@c`>?tcNsj)VK>P>&CV2yXpfq z&QDl7c~6v-j518oEA=Bj;AQOOj&AKL!Ag|@`Nl@+KK6XqjV%d(@eQ=~;>C?pe+oBc zaw@Z6#ti;6CyloEsM~>Y7V?j!O1TE}bm~{`(z~0AB+J2Exo_Yn5eMW)BL#x%ES$}? z#Y&p!v0nD4eaXYxx1aLRcrpw40&qj#{xx>^>*>Hl{UG(i$wRw}jv3XZMb3grbE+O_ zwA>vw>9+_ux$r~yqjctlJ(07o`09ci-n8GSAPCw6~bPbbGgdEHW5cWxky3AB@d?njk1oPGTa0FY+gSE4X6G27i1e9Sd$ z;yrMxQ6sbl=KBxr_U#N0+E!#8+061>(NuLKD&3EM*w3(^FOLhom7H|(?Vg}qPKLb)hGy&CVyKZjga*OP^j`QgNR{ zTzOAdZH^App7mC9>%9ZGC+U1={N4he@pj#|y!_YUOFt^eIKNqY{ZT(3{i1(as_nin z8mk%lk)%9xeC|TzKX|+ImUH5%qJy5%q>JK@UfW1(Is2~>Qw@l~)( z@=H%hK_nF{QjamY&%wRTy~C@t$gBH}om8dN4*TMc{fyE6v7qSm5S{@(jbJw#anWEQ z=2%dJZ;(2GtSwteLfT{cbdpo?#Ru_Pb7^y=(Sx{gdAT{#Q=nD=88@$pIROIC#a$fy zN85hU&dP4^U2PHsq{c{7=jQ2%HsnV;kl2NFtU#vSe#D$pRx6%=+U~MtVyFP zgsP+b=z6tj0fZin;Is|b?g3Jl`im*Q#ouDWcRm-{iOO;bBtz{Wg07iHcA}8>I5om# zUN%xvp-%vP*r{Tjupfe2sVq?lXg%K9i7O@uK#CH51BaQq-#5lKgo;1!L(8pvx9ePN zB&q_QH;p2atkK6nQ_-jDe4GbL4uqTv2^BrKJSOG_Dzy^ zvU)tI*R1Lw<@^K6ZHpd&vc*knK1+exEgwYHm<$tNr*p?u?F1QG?{wGYemmOGsptf4 z90hS{_?5UN=ySjdHj&uaW_(Y^PcV5y>AqgWCt)X9)Nv_ir)P$8ID5^91RV%DVg}^H zP~r)n$HE_oa068{keNQ=NRumlee(b?!=n($wkn(l<0Xoy}o}All+qfM3O5R2zNto9i;%@=KMW95G7n~z*o-zFvl zv_`+gX}k{u=q-8XNX$n=&nk)@*A&p_PV~FlHR>Y3*k>x{Tn5eeEw!TIIALM*+%MnW z4?Fi3|x++xcT6kR{5px1fge zv~jsR-?f?JtLh8=P%J_*4CkJ(B9$mB^iXbg^Rp<0?Yepw*G}x^+4#^(SsuP~eUd18 z0;4!c={rRVmscN%qOPS~+F+ly$#opDhE+ap#&m6cYiYS_zCdhVQ{d60;_t2Ble<{+ z>kw!?4QF2e$|&$JR7CZ&s|f;7nL+k?8M-r>Ui-^?*2a6iY$KyZ(x!N&#}G*+2uuH4 zA#H3E)X-Lak6*&kw_p$vN%<<-ac|PM<$iE7E=pBSl~Zf-t>3+dM9v{Zd}xjLw@}B} z(^xo_iYJzo-;PkPgQ!p9sF*K4mqWtZ7aUA{V&YBjItyF);tw_R#qDqRH*>>shcm_8 z4aecMLswR+ANSfmhTf|c+uQWq8=Pc2e(*Sb1pC@xh^X*LcK+~8nB&#~kB*`+2cRdv z$_i|s{NZRjEjf3A>%r{-uA?@sj7d-(hdAnb!!KtP?M+`e0T?pbN=H7?DBx!%m}bBt zKJRT~|8uDN|A_m_u&AP_-2+2+NvDW_G)PK^bQ%cKpma$i!_X-uAT8YrC@sj)pr~{= zNK1Fl-F)BuzUSWO{k6w8hh3#?p+(cGbZrBXIF`G*gBKRjV9L>nLDbq6Aq$iRI16f4=J@w9=l$w)4;W>VUv7`xz$EJXQdn7M?h_qUg>Wi_O=gqvdf zH8&kybzHx5P22&PPBk7maqMibFN0bC`8$laf*0rDR54mjmHN+z7Iz10gODLDz{rZH z^L1=3B9w_CMNWt|rc5&!WUR%J;iXL1WWmcd(Yt2)neRCp*VFb!wQiDKJGk!M@u{DJdVl_d)z)e8&&Wk%WfPci}G?u4If_$fyCB=#Wc$1 zLe2hxp4h?~IlR)pG-TEBNqBYTH;()%m8$EK?I1_M8L+FU1Yg6P9$8qR!FRcjZ78}B ztl<%b_%Z1+aqnt{7V*^*=`B};Z)OTpXgTQYswvN{^d!~zxyyMe`};-aXZPI4`#tl~ z(yzuVjECydF*#P!RU;$+0vRM7%_o&GMveXURwXA6DJ$663!OLFR9LZ8yNH?Ale;+p z2N%~#_rl}zeR4-`bL?uru; zg}d4QA859bO2)4L70$LML-c=#uU&)QGotW(X2RS+y^ZwNbS$|!$``}T4@0oXdXNV_ zkKRiEH-^rfxc?R&hkC9v+?saoA`s_w)%V}OZzS**kGD2|`xb2i)q($oe_gz~S-8dF zo!7Sy+SuR_-gEzkIpCI#IlGF5`CsomjKsN$%KYzF+@j~~z5n0Adrm2be*qrH!Pi6V zq|ykm{!bssXr$EAWyZ^bs@5%FTSUgx#i8EtvshL}A9q;D*%|(aU%h-BW-T@IIjPj> z(9sKTA0Gku?4MhhOG#aq1sX(=lEfcle#T0ta$JGxitgv`0+lAV&$n0{#M@VF?RqF; z_Bmv@0l`z$WY4PQkDiea3zU>GFp=!idrluA|!5c+h) zcO>@w;>}LOHQt6BHCbNmBTBo2byiCiN5^P)RED#*K#V0o-F(b*XBxi=n>(sBbz$@OJ3ZT7k~(L- ztN8i;-Z#9}{QQOGEiQ&NV286<3A`8nn4G4+{+%H`V7-X7Pn4Elr0&;}*Ly*b^F6+9 za+!ehOVkNQylXDArRWI?@;q^54z~~JA^wV(JzV?Ex;6KDq9ww-}CJBPHu-F&vQA7kX ze$SJM=ObN%e`Li}P(M$>ht8DfV30;kJZ7AbxBgP;Hex;LII9t%$M zYnD%8LaeKeWK1yNG@DtSoIPN zHGV+7RdkVr`13?l<=%62hu67GWO+(&-(qu9(tR2u^7gUK8Ej~soxM|A z%cF6$qM;qb?&=x{DRzYB6_GA_|0?Bt`eGtryJ_O;q+(#}$H7Wp|NM`8Awan{NL9H3 zxN6&MgchJl;_B{vv1Jh-iyr{!D1KcJXHRr1;FLb#=}O|-d7nOq+C&Jrb`z{(b#m=$ zu=aD$#LgX=8VE7;OV$P35}YC*Ci`9dt6;pZf{-Uny)@P8D(>?Xid2m-)XZVvo3j5t4tac2q-?#Jsf{ zV}}%i4i@j?oL+0Qb6$p*lbpV0=QQe^i6>c_yI0_nz)ax%A->-vY;P}PDfUDy{%cB_ z=S@!xU3f=0@iM@-!4izOaG*3%XU27Z%KNQXK8GsKMZuO$>Gylx`ehIXh5*oXmYsnW zzXk#}n7uo-^c1-!4>20_wT8(&@PtXxmfXTdkBsJdO0=6l=j~YLi&mob!0wFQZOoy7 zTC2Vp5ooI2Rr3rXUt0c=FOMd2uJv_(5JOCejcjQd7oQveo=9Y5WI)3q8uW*S0OT%h z)1p_cT*z*x%YFMMR*JtFw67lBEq`8d&pw5_O>{qU0K+5>RC+_;7n~yR=)%8tgzFj^ z5rARaki6SIRV!mYy3nThLyLNJUS?N)1Xjg-hYwk;HKqMKJf{ldlkuf!*YS!gx53wf z%bT)iXP1weDVT*Zeb&X?uv9dj8ji&d`uLpr_L78jvy;7i`rspy2TlFMr;S)#vxBM2 z#AjUk@7Z7VFpy}5-w6r;;s{JV1hg2C_nRMNU2%c=HvkHW2B}3wvl-*z!+%=hQ@yV% zd(ezp4A+}pj*|)l2-@?lp~8X73qetqBj~(*^4%RSeKL@gt)KT%o;vOAAYKOEG;%17 zCb2SRI!WxF$~V)O(|0{uHcY2*cP^T6FY)d~x9QG<;k>g`A;qX{nd;}5nRh|ac+Nb| z#qALAW2C6YsFH$G1cLs48MquK)qasmf{VM9qdc{iO>UhvQ`0ZQ?)ECqve5MD3l)py zCEsSLjfxx@yN_a%F<_h9sc6;sFlU=AJ~FVUi11Q5J?NkUPTEC zi97A}m&o>wB88F%JW6M+fl$CS`)uew826tD1B55lzqtJS$#`M^HD$@l5?kGN(CM-4S%{0oGsy2Bj0f>3+vJ zE9Hs!8&M@x{fJ zxhwuxwN-_sJ$nd>;XH=|l6YC=Rd35-;f{@9G6VsX0hG5$LP3E6Uo^nL#BA&9!-vcS z(_DB(Fo~xX$>njcL(aU(K#@R`G||O=#lHzIia}i0gaH3_h)NCV?d^?DuNc(7_5FV? zxS=I`;WUl+G_Kb9Tqf$!;j?F^>QG~~Zu8mk;bGzu6!2)P+C@-IRaa_igLjA4oCr@{ zR*6vV7yNWFhUX=T+dRCagarqWoUa+kI(@PFLDuB%QFydfen?93A)utdK9|N{2DtJ8 z0wj~J>iAs_ZnWdkbMWoKDi9wF2&DJgu=nuZ$u}X$1goR>xcaBdp4)H|Y z^TvF<7)&f3e{zS4DnBPDz=yz2{t*f|eQ)^a1JJqsl5T2x%GUweVs{735G8Wiw*L7~ z2Gu%xM%=Fqj`$J8-R)e=!tsEp1m{6IPP_X=Pr4+vIj;}pEOph8 zq6ddty3g2NFLrie%9oFt`Ia3ZePVCd1H;dc1)0jq(&MvD`wc1GP)F=6JUoPe=Tr$y zn(6Oa>33S+V0_%{>F&-esT$BimQ=-qB2QT&8nZG<2mts)&Mo^`lV5#=ZvP#gW^Xp1 zchmg^_d=&~7=OXR`Vq8nfvJxk#2nJoi37$vcrvwZ-SwlJ2tzo{1=UyTd2x!&jLNxx z0@LldYSQfAOQl|PA7=R{&Xz7vTUFGXjQA6yUds4qjjt z<742e+Vcn1;JVBYEI_{@$Ph~}jt)>qhf(DS#aA;7+CSlAh~F-9;)N@l94`Tysf8o)voxhk2%T@aFf`{)7x1+a4eP+wk7Zy zvtCpXef1k#4al0^X38!_|Cqk}{3x0qL?RBe1|f87UfDT-qWPc1hT7&!+Mk6Yc8WU7 zFo>IQMdK(7$c6;}jQ@cHX3bHmc&bl7;fp1Hwf-PB^$%vNQliYhzvwYS*>VJ}1mC=Q zle%@n&i1w6RMk~rMoMyFXAun=s`JC^4t*D-&cezH1N>K#yOuEJ|por_rRi8W!{0+G?8@QRfWXP{$;$W z%S|lrEMNcgGuHJ-9bHPYPu#r1xg=+>{rwq#d0byfk}%G}7iULih^VMME^_ou;lj{F z8p#1CuDgtV39g(ofFzWypLFLbMY|mS7F}M=aNaTh!=ZY+7?f4p4BmY%sMUBgNNP3s zo7i%|hLDoamtb5*B52^GE1Iz*XONcr+qrpZ7G}qlvF`42_~sC8(+T)7a(Tu%ckbCK z&|v|_qifCi+ZpK%-cGEzR)kFIpQlXF&1IYW?bB_rRt&E0epzi@22dm1yVf;}pE0Of zPi4LGeeT{gPT-}o2RXQ)O)~EwxY{rigpz(^H90=mTjii?xH`W=Zu27kv}WWRb!y;X z70~-=P5p^NV!6aYEKqZz9J&+K99BhIA!y8~OrUw9*M#L|HC=veA${@=7htpic*qsWm&nqjt%U z$MCV=$-C=P?tJQR_eOkKrUQX{J6b*zVSo==&KuJDm0-}w<($v)C zpy$W?Hgi3&vJ)=tR8?avW|lO&3>3ca^tHSE-O8aLDDMjeNZ7pS&T&)~57qLuLCK`h z9FzCN2d)iYUtfzC#=PXi;jftnK(dil>m-6v2;1$W$-BgJjN6BG0XLVW?@fi*G&D3( zRxDzhFA3RoOlPlYyk_cXwK&RldqJG;J6jA~IB?EMNp5PdJxL#S?DjMi@Mn7O?l4~V zQ!OLu9$w~DW?g_79H9H?kIT!;zew|Z4sX-dGkSMyYpW-qR(O=f!so4OuLsH6=@a4! z$J_s~jPEJJ@S5?*#3edV1lzcuKY5)(1dut5AfUz}I;i0qJKHVUC6KsQ{LM*4)ox{1 zok7_V1<>52N=i%OpoZVraQxxry~Es+5*)skv%62=Ww40*Ay<5k`sB*hw?_ef<<}8V z@9}Nc`Vbb*+Jrd6fOMXE(MMBBg^f{?tETZ&D|z&6p9l@hn1trsCx0#dknlF5rl0th zY=m0J5j@Pbjc|16-dT1an3xl*K|PGxjJ+Msw-2lDaeoP0^QM^<``DmtUmMDg*c~YP z7mH01Eqt!B|MwrFhW*QNE#kUkL9_u(w&jW1Y zmVWc^*Y9mx2Pi4?nIf?ZVC{L?%ro`BvVT~C(GAo7Snp*y2j1F(Eum*f=ZC;Z`>1klm);M z77kd$EOv|o8=TVlDl%T1Ugij}WgFZN0nqR$x+w>d%xKL7iDpymNDmeV5jtoA^t3Qn z66e%fXWSFJr*pcdv67d8c>oj#c($Obx2I0fY!534350eV z10#zv(@tjsKs-(V=X3WReIs)!{Fv=HjNcLs6X|$Iu2estH_*d-z7Zc>0zl&dK>VA- z4bvZPM`z2hX zHDO?!EO#Brux>3FWL_7c6;H)lg0tv-&p1FXp%?+n@O$FmO##7p5pIY~qn|eZbhy2muOgrDVd7G|d1x!R*WELZrMrX^p z&pc0E0h}33504g`9XLS>1Z3E# zN$$f!lzQ%rcom$did~~aIGr2B+1~>Ed=2m)m^_^I{aRt)ik6e+NXh%Tbl@c=hNJZ} z=qvJ=PtnTiFWW0QBhR*YQ-4Zjh8L;C9h;pAo<7B6APyZ=GN>}_!si8G*!4W_QX)m? z{wHeL@lH=vnM5aSoAfSXGYPcbeYL3sB-G4TM7_sdKYg1j1!H;Ss!4$caf-;f<@}^E9$Bs zyAl1h4l(ZvWA2A_GI)T<+OY3qqbp<(u*A~ws*O3 zCj^0=%TfqhkAJzmr)T5R1)!6Bq5EQjdDh4XqiK0?sQpH?q_FG3#tPL4SYfN8BVQ3b zDbi>I{xm)<%{C`Q%VYnrrfE;r=bFZuPl zS-^yH>_O{M@L7HI!F1*B$2Vvy(<}9+h`BY+!t9$)M;G;4nVv?T`n%VW(@EoAkKbYr z>`6fj`$KCwUo=Iw|BTkBuycm|L!~$$wvw|MKjEcq!JgtuQ!(M#lG|9jo;zYFEh*7C zLYz+4sR6PG^T4HHbU&lT%?D;fL$y%AH5V1L_sLeP^-qj72VqPwhTOhzrVc;DHjh2$ zXo=PQvK7Epix*stQm|+AaCetA^`>M9R#*hcBYk|;jc3dp9h+}lapH?IbpG}z5UvY^ zI{?;=9A2u9oXm{_kX1w<`-Jw{Z8uSDBS@yISSy>-<>KMr{wI3blzHwU>5$syBfTk_ zAm_fj``f>$&=lL%pJSLfg;hPSSh+(T>fFcNWwlA5%R@9K)`Ft=cF}oM!42!-B>gV6 zi<*3Ncve()ghDu_yQ@ySt7cT_;PE&bU{X{WVi>uk@NE(^SS7W|t!)Vk@#Yf<>AimH zesq~E=N_M6-VznDOt9R}{FOszy$S~t^BcOc&2W)=dV%K9{f+Bu*SAj2AL?pm-1=I5 zkS0E}8E$TeK0D%$@7Egpeg5PevArzy&$+(&)ARxa1!xcehZ28`W?iXtJS+K49nl*SI67q3oiR5 z>p5?!N)EgU0iQP;^QR{= zfvML4pWhzidvKBXke#+%)7*&pR(!hf$6&{el}5QW+o*Kg7fBR2_>xUHKm(ZGzMLO8 zsTg1O|D-Z*KbYAoD>VzJL_o1c_wWw;ivkhn?M6 zu@4jFvuea`NYNRgg-4@*lcbxPK1Y=i61njh6(u$tmRUJS`M)pwz&AEj`TZlg^-O)1 ztIv~X29baNT0OvIzif99;VN5;ez+%VV`C#LZ*li$U!PnPfvJy=cm?Prd$GHipv>3? zkoP6Fhggiyco`%#MCjkT36I$3y6B7NE{zN*h6ai@Kv4n#cHe1@Js5P@!jHZw;eRIx zSk^Sg(LC^aQ+O@s#Q-g|U1hf!uPDY#P_tk$WImoJ(*JZXfQd31{aH@9PWG6wuz0Sm z<$1TxmG3gHMzbBppW5WyJ*K#vvZ6b6`MwU`DAN)5!iyC;d;a}0(pJml677=iHsc=i z>7t%`r6W5Qk`tsIc}P#^Io%yj>=ufd;9YucRyXr@~(iEo) zBN3dvD=waPk%!%aQFiPiAVMGp<gexX4o;lu7)<_GYm3>8#7A;+BPi;EVGX}VrVM2>T^NXh*J-M}6a@IB&HGf1LrakF(6B5?lg_$QNu`+%G$emGvzm?TJhxry> z2S*WCy3y~2s!7`fd$UbwaUNlh33$`RWJhY77RxY$vK-OkxOA{RdjErg@}Q586%bN_ zo+u%<>|mhz#-H&!r;+FfC@h1{JQbC_H?4*Jwwqp_o)$m{)PH;ECg=BLwY9)u7+t6I z>58??C5^D7zJu7n5Yg$GilRPDOPxKaL)eCif#8{XlMDS(OR&+G#et*h!qVNw2Y6Yt zs)!o8=^P@wH%(HE515oTbC~OY_Ohx~DsQ<2*xO=5C1K@@QH06^uK1GrN@(Hf zHoY(sJYC?d@qxeaUP;!ka+nlUDmEj5Lni5Jo0swz%hmnT9a%}oKPU)>*3^dDvwKnt z=vy!Oq6wRLgj){%8mhLqz*Dz-kq#75dth285tSB+p6Eadw#)TVOW4W z($C>nS7MGn{_ARCDw*#-j{s6X{=kbL)XI-2ZYSj<<3!`O%?!9u*dkYQ)w)^wqT1)YbxWV+?E_S=TG-oc)JJ2|q_= z*4NhqKS{g#%Nfr&?gf-0>F z|AL*2c&Q8x4JjJ^$-E3^+{$tRw=wUF{7G&E78JjH=Wp>r`))Ty-z9B5U}TLPbQig@>$KHrg@ znQe7}rtGrwB~51E(AJFI9jK|vFRy^nLfe{7fGuExfyl;CzRNRR<@oLN(Aeqh#R>Md zvz%rM-nJ&C&D{_Ok~eGG!$YyWwaPUyltY}<1q&{|z7jyi^A4vX=O{au3#6lgxZOt{ zYN7Z$l$qd)wKuTE>*KA)xYxgzsJLG&cw9qO9$U}-0DtRK_xz5;GXYi6yN{{D)5FLJ z)O)+<^!wu9r-n{l2zFvww~jqi|9wtaVEWQDtg~}4YKvU!!=1ZIEN}}LbbGqPE$^gZ zP|C;awLQ5Oo!4?OQmPwuhWgH4&OrPo)O$0+DyrYK4DH=Nf5@5m@=N9$f5{xKPQE($ zJxOuQy(<%!VkeU9N?K(k(XX4I&Agp6MZUUH9CEu@57SOnJ zC`g?1D?R#Uik5?#PQ*a_z-sUN`y6Bq)DEAsfEz7z}5PCRKyoN z%IGrp#~vloU)X8yvc@2>Pdc5uO(Z?BcMwka6d3|=hx`YAq;^BadDYeA!W&Nn4*U|b zg%t6dW@8HuXpuq;yc*M%@eUD9U+^g%vaPCnlh2uB>cbOX|y%LnhGLQ&4~z@uqlh-#as_oh&(p zI~p@sS5JbT7j!6(;oezJ2%*B`7t|y&m=PJ=k|g8ROri!Xtmy#_i|w%Zf1+sgvlVOV z(#s(^;TVoy<|Rdz3vrHl(kEA6H0jf0akW*LA|858t6&3v_Vfpfiz{tI)6DG*QY+lF zjUy~(+x|S?^P#R~cdTBc%{(sYO!jFZ!9%C=1yP(-g3}LzFR8AJXus+{DddK zn{yqB^q2BFTGw@${WhwNXbZxO;*LBY?2fq#!oWo% zmghqyiP(>(J;Fqs*b=1+?+sywEClyp%{7Ew?8bqZ;Fb>-j0Xi{Jg@28*1!PM2~db8`x)`L@vOX3sBjbSr~vs zq1N!0;sZo5E=YMLY9`N*Ap$~FJs$Z$>)9jU?ANcZ4y{*qq$&)403yDjtHXW9T-#<> zYvD`LEXbHdAPw3l_jBDz0H$kJeg1W|T%q1;B1T;Kn)=h3jVDw4>>?y82&1t!?3|u9 z=Q2u0o6X5$BzkUu2)T^})*vqX<a2P5}Xp`lbPsEiy-)Sl;G#+ra4KMEAC@fEEsbth24^3h6G5kktILrsNZts^o zV-0Sz4ZtD9uBgCY-_$E0e*SmuQ0B&U-b)N|wajFxr7u+T4N1hI?mNhVD zxGj(?_%OxLJJL%t^KY8c>?WGX-LuwAe)agQ#ZSgif@=?c?oXgjA}E*Qm>Guc?2A>J zAY^q-PiuEQS(WrAZ=SjJ-6)gr%3VnKugIM8@tcy@9epBq7nb(oisgZ1a^l z%n>B$u#D_DOP*TFEJ7@70% zgeCJ$J`ftHZ-z-5^m^maQcB#T!BP0UTi(N7zL(KI9(6JhX7u)D2$tVhJe^XCE!cbb zLKB{n^L9$cP1Kd&M-4O<-=S?#Z!g7?y|q+d3LkMv7T9C}z7E}CcDVrkG3~auZ`T$# zi1l=*jsQ6?^Bn}2VNkJ*O5v&>ajop)D&rde27EGGj^f*hqI^-<8`GwE#@p^ zM$%|FNyM>7cXHUO9hF+H;_SD+C=lCEP)iG#T^hdA`xOh8-KINWtpg`PN|^nQl%%B57fxA%ZnofAtch@!XGEd3=L(v$rf2sKE9-fN z_5WZ&E4-T`BO@aVKupgBu-R-6U&u*}T<8^eo;mSZZ-eoe86SMW_z@fOTdn_YbR4N5 zlQgdVZ(TEEqFX2IZ>EL22gZv8d9-g58Y+L#Tvi$wQ`op60ofLnpRi9i_R@%iBy5h< zD51JWjNw`8uVC)m@YT_G$>Cq&=?PN5>!WX?@fT*HD8$V%^;NcdJclz!QmkZ@Nm;C( zUR9a%J|jUih$)dFyy*TT4NcE~TqOmb`W7X}g`O(HXdHQ4_Auz|1e@nO03$CZ>zjb+ znoQpmr$z>pTFkC5`m~rJP=V=u#vk!<_rt0hy&_W75qf&8@AwfZ?von7X{7%o+*ES! z2P|-kSO0qM-$2-U)nDX|hOz$7Z-^WB>hB$Rg_T)@3i{!=$1B;eGM&(5pOF+qZ0E1H z6l1S?e=A`#he(j<|Cu$l4_Htz-L4TU?0@{qTa3SR5<4TmD98ABd;B}Dko)t=RNuaw z4pk)iKM`(yk{!g^dI(|5(!nOe1tB>Ho%`f@xh)La+q|ji|7=Q}Pwm{qX7(C3DA8%` z;HHm~MhL86&_iKy63W+d8J`o&=7Pc*mw0WSi?gjEN{;y^!unnScuujFa&SJWhp?1r z2Em1{3Qn}L@o&nqsg$4_9XqVMItZP@dS7C-(ZGlerQ&+es1kXC_Sj<0$x`T}NWc^P zizI#HqyKpYwH>^X#vNK(A*O5S*%^vPdN1cEs}|w>T~EBjVlzBBi94ST?pRWg23+SW z#FpDo5YqSK&ua2Ve^Q&wStrpMr&rREVTLHZ0XB|(8Lth}-o@v=xNANETM9^Z7VD~N zavUd$U}81OoO^pcBCa!knf9wvxQf!^sfiRa3nuh^^7W@1AE@(Ln=oDk{?kz#PKoF> zgJgXTDIlCQ>XjG;3(!E;AYbKl=)Y5jZ8YnMd&8GPH+PY&t-#=2e(-1Q$uo5{2aKoY z3;mT(k1n%CD;66@3jJm`V!ZLx1I<=yV4AK^z7lonY^e)J?sSdhEl_;3?l$A6Cg?`o z8!rsqC!!)QE?%QMbXUL@z0acPfb+x+XWV5%eL9K4lLMo?k{65QACti{8W&C zA=z?MA5SQ2`Jh#2>vAfu<~1`Ngu2lg!omu6b*-W$A-HYHJ-U5IKazk5Ga^zFznS~W z+I5j5xa^fF!!#+IO-)a6mV9fbA2sFZqS+DU5x&{NZa+;=9%5_52I6lnglkk0X8eDx zZa>1B(WA=w@r3bDQ}2Gik?0so$Ct^J!3my2PMj035l0=9Ja_!aSMJZO@!L8+o_5#c zx7tV$b1hTBvbmkK!jt!HW;#Kb%%ICFxNRNNwko%yXK>r)aNXt5#si(jPNJp$DRLCl z9$jV|qbqjay}RFpt#-bkX5{9qav3zyZZ;4$vq60O?MIFag^B#O7&vlw)r~c0;>S!wvnfS6~H8{C_&InJZ$({HeEp4Y1~+L6WTr zooW|qe>^9Y-7_io1gn+94lemOPQ*M^o!Ib2~*oK^25 z$$I8VnEGL@A9!B6z)e1u)FN{NvH{u(Y8{zS`HhuF41tb9i>8i6l2hAF(~VDZSTeW? z4Ma-*a6c&V?C!+gy$2=7C|awCWmLi6xouka+~TZ{(u?CN%Za(Vid*t8f(crPc$@K1 z{jbC$W22VP%vOFTpG_iA^(Du}Uh^wJ`wI`UseMs0DSL#*%*v|ZP+3y)AHOTs#Sc}v zksNjKW_0y;h7^d1ET%yKsY?@Z=luK%EXrsQeGiZa^EPRCe~0V24lX)Dtv~Z4u+0Ye zmH4czYqnbu>WrqkzM7Wj2^Hx1(0h~8W+tnk5Nt-*WsiD&>g0d&Z}JQjoNtY=5RN#e zr$=CW0vo)^d`uFs9^H>Te>`*Q$W+E0q1P7Y?76#|Ow@X7+n$9=D1h9W-Xyl$nezS~ zxiYQ{j`lLC9SUW+ryn57>LeB}b?NKx{wp(A{z)xAcX6Ys-Zcv0zHebtJd6glXGo); zFQTSHu}nC_0Te{JM9K*bYPG9f0vpCjV3iaGksEaV&9mJ{M!hmF{oh@hW`RN#{?Ze& z1P2wxtWw69+T&DUq!Bw|5yTDguhev|Cc;Z1sssGpx3Ye`gc2&jq)az(p*!$W1}hoy z`;1V0{JkTEv0e?OZsd`Jcs6*K;4h4jjM5d3)QN{ z>W`OBsrW>X74=5h;}>9oVmJ2jZCrQanGL^B$}0#-Jcz1)!5tA5)eZzkb;sbW)X?L# zHOq~mLgpS@473PomIn{iz|GTtfb-RJ+YoAn5lf5RlZ*S!g!lz(U5=CCts^{|!oCy0 z?Dak6KX;Uo+n~x?0(wTJa2At&2DaCOmm4zw{afy0W7AJ~97}Gs@<%a#lbo&&aeSvc z76`W^FYtt{`yao4UF4nl{Jvt2Kl3>E)MIgcx%7RKULx9YUXPnDD1`VPBxk}}%=(Yc zZ~gR`BA6L!t{`8>RpcNIiN|76S!f$)Y;=5)klo*(DNbG_6=yb+q(i~r88EYb&r6A2 zld$7Qz83ZCn>!#umvD_TEz{=U`rNbrNpWAC2afJ4U8J4OTX$V`%&C+`V!CE|mE|1W z13(ojUAX4Ue68KtF{os*n_Jr?cE3}8zG~Aj>qJ5S04#A<8KOK?cD1yHE3Y^tu7eRm zI~MH;k?PZCKPkZ!*p_xeGLu{X+|sYue@M!s--uu1MK$kbfTmqZ|chQ;Jt zt)!({dU(sOaOeTbCG$mbox4q_8@a zvHK4fd`#Tk-M&_jqpSRz!!y90t^Cp7f9jUBGQ@6JKj%poOE3K{t=c+Tj+*wOMdi}G zE9%aI4;e6{(u`4q7+5gDMeSXgBZ0OXw05b<>Gf6{#vuTR+W)s`j zS$=SX>FOdM%)vXxtukjh&&#`Vf-4>0e7R3{l}OGN5cz6p`CFt?Dur>NaKZw+lKujC zX3~?L$w8lAsLi-Y!-h7!GIDzN6JF;BxWKD3kJOxGdV^5Y@IXEynQ7EpqkCP8*85xh zdp{C_c#uTo4lLs_RSyh~{jv~1muloMMRQXr4M4pYy_Qj)u=wKr3a_^m!O~m08|}Q; zw&8wPSR7NelD>_P5X%mA83L^AH^ikJpPq?cJiL*NOU6Mx%oO}UUNwjqnAd_NucE?< z-`S%rzBTwBj$9tYk504?EwLZ`&COY$g%oWWLJu91ImE71O-+r?c*<0pEB(RYVW=#2 zPcD!&aCLQcXrvsE1q(U@fWrcLAe8G#^2t1?|k^koKUGPMh<7X!kP@Q@Il z;S@dVGG$<2mwAR$+5AD-&(AH#JcLTHSPI(04aR@pCR88ix52$;g7b!Da{ef8td8G< zPSNc10${A6@EL5QQ|<-74ML++2kq&=g!U~L(^DUcV^^kt>E`SwgDLN4^K0Q4@qRH? zGK=>Y#$E#@XF1-pAQj zsME(PDmcQ|vJ&^`+Be*nM%V7^jI%Xg%wXI~rt|P<638Eoi+&dzGv_D6TDBo+O&I{`vqgF%Yj$AFs{1Kca%WoKnO};3CGj2J zJw6uPBF3Pd#8&uRdsimA|L0FK#KOl4_obo?R@dR*2}^E}1)Yxx5LNp0=~HwI{zkc} z-fZa7@G-yeThxT0@Ob{2yOdg4lhr6OM&mRN)FBwc)S|x@wzxUN&*6$aV&xg_t4HVO zmB=Y9pI*{hyd1|SiM z9iVQ1Rp|MntED5@CPu0>okH_-9-6 zkAB)>rcT$EwgCdfCTKX89|w5rTbL$Wr5O~JW#EBW4aBMYWqTa4xyTZ8*LP|o9q?HZ zckIU}8_f2Qyx}R@IyNUu>T+e58S%<&LD_SvW)7qu$IvO#;)4CCu>=3 zrg?&T&tvFtWyrMF?hc@l=XYIFY_9bchGZ+pmq+zYLjkMXGo*~45Ycn^#N%gt@mSmM zh=ZJs(a1vfGO%PzvD!mh_>O4_;23fRUCg$FDOfQYI3UpnEoE-*-Z)al#n222F=f;w zjwc-c9TOGa<6jSDGXJKsc-fVs9a0)toVOc2Xmj-DXo^9h{{7ddO=V?KKeG@bH*-d| z%fvWx0fFz3Gk=gzQS#l{&-dhths`(ljF(u2cpQ3rWQ2Hr_1)KFe&VD8J`bc*J~~lr zpCWb~R5Sb_hy!kFi>5Ze_7Gp^Bos_iRP+A*QCboMR-s0e&$6ac5HV!-8;FsMi%rRQ|A{qQ~Y`7zw}9duG2a_adGdhjFw z!Cu}a?NZcRPK9Hwrj0^9GKl#}(e|NVGsrQP)ZJb6_9Fp+DGmUixI`0 zxJ#G9iFZIkaP0*DCY)77!Mk9pd~Tv-aT-G$ zA~%5z@%zO;Lf;|Dtcq~Q9UXh(V`aV+Hvb$vjSMcxE&VcXNhjh!Jpzj7!(x>(y=6=| zxCf8woMt8dKG8iM!=VVU`IL;n>u!+%8%rdX4o1#b8kP9w)!`jS1tGJY6-k3*V_DZz zS9XXD-O=So<*vFwfW?ouR7@_p77iSD-JNQ-VRrfJ+HEBbRGV-7s~dLvwh&HBw%9BtC^vGHJkoQeFK<*|M9#Dp`|nSA>VKCUb@W9AAS)p! zL`}A?W#O(!;<;V32%KZrqnswsshl{y{I-8P$C8alqjn2ti@xuEk`hfifHeLuR*sV0 z!@sh{!?&q%xj8hX<*i#Re|994qw!jl^4D%;jk@D`$%2HzZU9*PR`sY+)sIswmYE{( zX%Oi~y=TKA7>s^2W&7+TO==gsi2}?QefL3Jl_0k5!MygPknhxo3f8vZ5H~{5_24f9=b*Z*{XEq8_Tt_>VK|4jDiOS>1mY{G$s3CR7 zg~Pui<5;kCSb&F-S3c%I7KRaR>s+7D8{GtghOK}wHuA2z@6eD7dMa8CA`e|w6vy>v zp8N`dTrezvO)9q7GK<`fCUN<)@BXbQdJcNRn^!CZCvclra=^QRf}*cxeSAe{LVP?# zP-V6%3q)mNV~KRLHKb^8g7IXJp1ZsO_IxVH;@22YfMe))xn19IzM6rC6Uu?M0MPtr zTc)TefFmoL;=6hn3+q3m2W9ozJ3~DEhf%L(&!$Ki7WAmm(pEC)Uq4)fuNNGHUGHNHh zvWO4=fM}tQyk2+w_3|zu9g55P3g%k+4*4Ez9KalIE9VW-1H{ed1{Z=?t4Gdz2dOFh zKO6Na26_BE`EKg}BCe-YnPp1}BIYjqKx=~c{Y#o(IR$Vm2}mx0u~nJ{()DG=!~Z_4n?`ld_+YF0l)_?KHAq={X5ENy2#F$=k4n zlkWZT#eYc__5O2P&Lp;8Qp57Dx-(GXm5?ZTC8dJg*P1Kg6=;z6F?ZOykXGBT2*k_WpgI^7?X0ZpbK&QwbA^4a0ifnE-mE@;5oWLsWBk{LSpS~4SDHic4T9B0mY+sSg!Wt5dS=`!inp3 zhhHxvUd5rVMsC|`aLm764h0pyNUH}+%k&uhvdNWD_}cnwwwzi+&TrQTGoO)k^u_I8 zk6r~4h8gC#atgz9iiy#`6h+L{l7l_S$IQRk@N$esrZ|P6j~`K}G?epwf+hlK6e{%T z@ohUCptLP0Ec9_CCnM9*)s=f@`Ybc-2UGZEEjwF+bQ*T!*SNRKY#oREQgRp5^OU2{ zM4+SRK?xG)xVX4^3Kb!T#5l({Q&S-t)nMEYF2+Vg#RcClN5IAlUfN;t^Hqmi_{ zyRVVTEX~Kk0eKF($wDlB8tJPalafL}+afgktc}yMdXnEV%q6a`eh-l99&-)cXLq;? zEU#>tD#xjDU&)ub-q7Ad$~@phTnuM-?qdgZcYkc$0oeooG>ws($urYQ5Dm0plR2F2 z)y0TCMGRDCQMT;L@VH9+sUJP^&BWp)4wsv#D-+%;{^{>f;_w$uk7Cf=%^R?C8jd z*bg@A?NDoiPqjLsfQjwXd;s?^&$)K4n3DPHB* z^WLmfy=_z}?9XyeFb3Cu6HSQ#&=PXfDk<^zEOc+ofqHqF5b)rtyUCc(tX?3 zz0=)#xU=@u@wTepWf9nAA!lb-*1)&+lK@UiMi#WX`dWZQ?gU%n*o?o%klTnEI~zkf z=|y0$jY=>Na8?$3<~g@mFM;bR``N%C5|GREcAk}Rx~LuhDM7Peo6O}CyIl2VMUBAf za_VRD*DDfGW`IFwhzQadau+qmSCLdD>109+(Y05UJTI6upf{FF$ z3Z|?~Iq85K0e`_RwhLZ3U{`y~pm{3`0kwighrsV|PeDi7iCd9mJhS5S=O32Zu!EdQ z?s9QO+wHZbaQR%J?KaH;#3!H$XD7f?V6yIw2AWrZF7Nw}zq(`I?LzeSDzYPkR^V4Z zsP3lS$kDslVug{NVM!2;GAY*98YV2j7Ps?+jcRMBxNt~&MJ73ebUY4Bu|s;Sm834S zJ(-F>&3o{Zl_3#04u-7jj)pMM|Ef6NrgCusNxq$5d0NaZd;Pifgr?oY*${TKtIa8L zb2Xp6RAn2J^Bs<*gWv*J?EQo53(x_jPqXSt3fHT`cv~t!eeP6G2iVWcN$xrN1(WFN z>Vil*iWfC$_r--Wx{C`(Aaw!89|0+fMm>}Cb=}a5#crTV;a&0m*aMg_a9r_S)Kl=> zc6y&*_%N2DSjR7GOo<|YIJRa$gHFt;6{u2Up3_YVFy)ylL4=m<3 z5-ekP>wtYW*%1L*uTMBvX~kl*U+yY0kWYF159Z!FDypc98@_aRN+TjAozji8G}55b z-90o&D+)+A2og%?(5Q5GBi)@d@8#+B{r|1^U2A6UoSJ**oPGA$XYYOX&x&|N!jt-G zjDoZmY6$EJ-B0gly|m5oP2%)x{(COX`uRH{L-7KZW1wWX z`AV+T>;BrM$9?u1%jnzsaKq29$YugzvPjhh>_vXcB4i$qR@-jGS5LeEhl=MTWla+z zvw(ba8b0?SV5^S!r(EV&Lxveb6x{jpXgT5G?h5bg;l;FRWrM)_pD-cnhuYDQ$4?e1 zaJc~|009+M?A3Io-a;@ z**xx_#FhaIXmk|qZxrWW0fND8M53UjTSOkwxjD@_$3l=NR2oQ-UR!*J+Gtij6L<1N z@F@|u1%!(nX;p$1kfJg%?VB!(%j4yk{3!fj;;Er!1sbfF4UTd-Bc2|Eqg-L+TXvPB zO&ygx1s$6WM?$iNE}R#3Tdx5Cbqmi|JxyV6k&p&DFvCoX>vnYBJtj9bqNBkZl_V%N z@SxWC`U=VqZi<{y3~)k8pKY)BO=lt_Sz95V7mcSI*Elq4|HS)TQ&_1(SAqN>nI@wV zV{sWL=(@bWG>F$z%M04h*8ecP2GQR4B(ZDTv=i(lB+kOumf_jiHz9tuV@WMe^h#-| zuhEEhZylPAE()o-Jy)LLhoIYcD)scit1G-3Y0X)nXB$ueKz(-Q79omkfFk|juOLQn z@*Fk}j?M(C>0mDN?J$xNU%To4SboOSB&H|-HrPGd>WoIQJxTsI10*r5h<_Ol|83lR z9r^!ihSh6?D1}3%wZ8&k|7&RM{fi}-_^Ok^i}7TK#a!QA9g}qqr;3kn1)4Q8tWoU< zBRyWe1hc#yCXLVdmt7$<6twAFj zcC$^$44l8YZR^&q_}eli-$kW+AfZ>>3>;!3-1*;nx+Xe1(KOQ0mZAP2+n8aqEkT_67mYz`+M%yqRQr5G%yX}MUi)`kjX(~5hN)CTLr=ehm;wYi2S=5nK>dRo3c3F5_o#7v#Q zk7h%);dG`DPs9W<4?afU_iNFZu!zys5(kftrQZy0Z(f?hl%A(Fe$N<=nv$d(pl37) z{lLcRO(6xC23T38c)#G&moqlCRmkxyM50xi=iV>E@W1DO{ z=Z${>J%v=RZ5ZP=H}(o>{PMpLqjoⅇt+9)HV?>d7y+Q{<&_Q$z}R@dQa1Q-@ScE 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 literal 237182 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�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 niMrqmqs>PeNKb>6u=y+&`TlP9mPOu{yS}Hu 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 diff --git a/icons/mob/wings.dmi b/icons/mob/wings.dmi index 5f261b76fe3b86be9981fe5fc1be64a76dc6efd5..b2990a1509468318147cc1fb00cf18e439093cef 100644 GIT binary patch literal 79283 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 literal 13976 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 Q)C@sRN?Ec@-1PJR0_rQTe*gdg diff --git a/icons/obj/bedsheets.dmi b/icons/obj/bedsheets.dmi index d492ae52f6d3d23f7b6504b6f4340313a28e2b48..73dcad452b3b408e58c6643e6b19c6e7a5dccab2 100644 GIT binary patch literal 12534 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 diff --git a/icons/obj/decals.dmi b/icons/obj/decals.dmi index a5c487a18437007c0ad7128a5f7c1d7ba14cf71c..3d382d25b3d3467c967eaa47b30539f124a4cc38 100644 GIT binary patch literal 25567 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 AssI20 literal 25747 zcmb@tRajh2&@GHJxJwA`1Sb$&g9nEI!3Kf_m*6%y!6mpSSb*T}3>qK=f@E-a8+@=~ z{&~OeKNsizTd_cPzcmi74=Y1Q00&ZBLEBeWZ0(a z9C`CQz`)o`(e|^or-QqfgPSV~ieG+4W`pat0DkoT9ap4}kB5tX@w?0}a;0dm4s5`u z*w!z`-;>g2A5Pr>Ddm{B<9V1t2>!3%LHGZjLi|^Ia!x}a`8q-#!Y`Y8ALoCrjZwJ0 z*}M4m!M_xob;V4@`RUDGIZLmDVG?UzVuzbyk6i!NRg}l?wD(mU@)U9T=nPzhL^nUw z?V7(b0>YC5T2%_vEpJR{6)wa*qIGS_Bzq#zlL@V9HrGp`NgVaBY%0taNEBE32+42E zd4ClXX(&tLWPHGsPL^QJju*hDh$Iy=YK5x)Au$|S75hf<=YhmRHMkd(R-UO=ERP8A zo&Z3bEXF{p!z04*2V1!oC)63IWcblUhkq>qKRy0;=RW4VIs7EjTSZoKQ@w3;iTx-9 zRZsFGuuAS57?R3zTega*@vVtcIeFJ*{?QColC(KWjQ%`84nk8HGjB-Lv;)1L?xDStDhY>P{^I`{oB zG7-+0b;EQ&JER)k%dPdhGlaW4ezXQZpFYyRZG;GFTbh3*v&A(5NW8ld`7vCaPxib9XBylVuHHRT>jPjm_X*S zY|mKge|})o_XE5A(^I|i+(i<^H>==&Fe#fX#sQ0fZg=!$41n*G1DBsR{qa#%?61Or zqe@#4QL@a#fjsZs4QKePDec(xKM)C2YQc^SO(%(t^P<=91Hn?;dz(pC%9)3 z!t*4?MM?MFW7%{bJRA+#mOux@E89<%8M?A|%7^k+`9wh;Xh)~i3K0fU=A$*|Dsz5KD|{yZ~n|IR;0zWC55V%`df&Jho`8M6xP zV%jAp?^U}7w!^O?)t|Iv;a(_OlBdE;OG{!;=Y!&> z&9i6Aod7i35e-R~c)EN=>gZThCxjB9YPDyuj<00uV(T|?oEbMI$hdLGxEu5%$ z2+X3>ANx;B!%d-n1)-cT$8UchvIOS^M_oRloPB8hO9fWvs>DCN$jdgim}4yn8`8AIQW)hQujAxw3Q-g2R7`6l}7l@X7#2u9!Z z)t>fv*P{Fdo?(*VyL1@U?b86KcD=FGd|EF;el1sk7s?-uh-g?EW8n^=N}>kGCQI)z z6v~2Ro8c7&smm?IMS9(R8zE*2w6{ME{=OdX>at%{t~Hn99(`R+0pnTz zg`9VIUoRgT_m+FWc!=a^A;R1ES)8w9^HF@%t#j+M2-kBJzx4Qg(&bb54OvF}p6(iu z=|6=$Zt@Oud^}I_rM^b1cA+@CyS7)AJr_U+1xb&=c(0QyprDkbcXh1(h`0DpV~O+G zU)Z@rP<+o;#-gaq`j7jbMNlR(d9Re*7aMI00er^&QAlO+-^*Drv5AjOVLm(KEb{|d zY3r2n*HUhBP91gMfAuUpb+7(ZbByY=Yo7U5eAO~ew-qG`Ic;X1=*}I1YJV=?x!#4S zDeZXb=HP)2`Bp6dK4VFE0)mMSpVqGQa%-vR7l+78abUkiuNyPjZ9RCq0HyjgiXs;;u><8IB9k78w$TdGM2^u3<-cF2?QzA!kw)Hqx*+hjd=+m}Onj$&vWkdLWRd@S(TZos zsH(Usl~rJocZBYisMlJ@&)yT&R$2cxkn4@Din6O4=+YIrl3CyG7rg8OC_oA5J=%wL zF&>}bRzqL%zt>hVzde1Acw?4wb(^uS2y# zwiuwuH-YR)$_?6k7Bw9VCVJGLFe)0haJfIfQgUM%`Wavs2PMhOksBUeHKPaOoeDnh0^PHe5{s8)|2!#eB7;Tav8yh z?p69Wf~G=e#2IF0zx=*zbl-{ezQt?`I&i4}!-1&ZzL1299@O3a862K}#vk`1I<a+=xUj{xy{&NSrnqP>qgT0#=j*m$3OiXqRCO#%u?KJNh z4j4jg{n_KSWy)W=ta*%pBC<%pF3Z0Kanz|gTQ3Ec}m{`L_ zZlBf5mY5I9MGBNug3@V5!HS?y*8r^`Jzh*q9TBrgOqa6{pZ}BZB4d7kKdLD3pP5C- zGvdiQM9|Ow-aAx%Gh*_2(-j2_SJ*`5L-_bx=q}(HY*Ec0c=#1d;_py~ZC^g8K}}UJ zpJOg*q{ypucWQ8ERSW$)A;gzQ)$`fEIT*v`3W;S3q%CUhkZ~T}P2~!+z>q1%`?+`h z;ZttzKTO@AZ^fk25l=Ae$GEi<%0TEllH>168%WF6%kLaV@y_UuzW9i;G9jy%sJRr^4r`d4JhBn{Ss#1W7_V>bdy|ozkJM{UGN*}xe{*3QvKa_(pFg3j6 z49zXnab6m6ySqh>DpbKajGXx;`F1hUp7E!_vBcqn>jQM(jDq$he>R;OclR-(gFH+4 zeKu?PHa9&)Sh(G(q9w&g#ZEMJq0B#W-EY1)Q1bW9Tv@j|XjXuH*AdS!qF+&|^ro%AAAetZBz`x(4<9S&Q!{9GPa~D7zaQ**%tpp}g)l0@ zIvsjTw)Dp*EK}t{>mBZk{v($@QAsOpgVU_Mv+olh|2e&H&$;>oGx{7CaVx#-zggL3 z{eecm4i_RiB%NhZxkY96nN>^O{7uu^6sTm8-vrxul397a-f0;t>VlwlzoUIi&9pzW3C!d`vZ2h&UyP-gW@Pm zqglh{^j<7cxkNmB8tn%Xcv13((j=B!RZfnt3Qluo)Gzh6t}~p9;=&tAN>g(;TY_Es z`WD?-9|};a_!0Fidqb4_(OE{BPsE=dmqJ*U-GrZzkPFAU%t1kKXPxEmJ58%=2MX=v zehI#IRlPSq7rM(fvPeexfnvRh{B=Cs-K}+}FyF^Az954*ct9WGrV)x)Yzq+TXMAVL z*qDmdGiW(r^DFe1xZUm!c)5XXA=;*nz%W6RAB;mx(PB*5)OS9w-5s$m+r`TPdR>vc z1BcQ~LPBoaB+7rf0r=ugK0R8pNa6h0LIyXNg%RpmQ8lnfApc`8${W+^gpKv*Q%x-4 zz$$L@vfPbMOKNGy>OcG0abnQ+>AwVyuG2-$bm}9C6$>?XVF1~?GOZ~68W$yCj~@^| zBzdpqfv?gND1-R#2Z&OpZJuL!7=de%X< zpz&}rHFlmzrj**D4ALApnF3=Y{deMU_nQLZfvn+;n?oY)pBqu4xrCccn|32j zDfn?+M8c=bacjbJKl&JN>c`SOJrPEFJuDNVH%Re)28PgoM`*j%E=U`4XLI(ju5zGd z|4EDeZW>#Ad)^3WJ^RwM;|REZaswB=7;;(pR+23cB7Az<@pY4sW=`GLH&YC_f$pf})GP0#Eb~J5gvB;M5X25dtrTNcQsZ48jw@nu^OXxGb=`Lx@f*O!-%IL@h zy@e;FTHS5;kSpEZ_^5L%V|w|dPdD8}4TxLTz0yKCq;Own>mf!B^S|QQm5O;)x5;2n zQJc@O?YIUSCewz;{*A%^vsfhNiZ53O1tkZA?>yE%OSxOdLl3#2bsgerpFa!jn;79n zMizAW2ssX^Mp~tKI=8y5W4%ZzpZM~YkSRl}>9vjQ6nbP~V{jlxX_Kw*?mV3kHR)pY zigUYc9Yg%~fNl)o+b^z3)Q4=h1>2^^SISf%e-|D%$?HiA)6clyx??w9=^PpRf%dLb zMFMe-I_Mqi&+4WdLtC5yTx}tzNHq14H>v8oSPHE1Z89~j#xT%(D&n3X0P?C192HK! z85N=aZ3f0*iJY4pq$D*pya{xY(Y&UuGmDGE<)W<*Rsn&C;KxN~M_=Eix-R{jP;{(j z%UoqGF(x{sD8pY!Vm6osU1AEBTermo0I++&y$Gl5UK{@nz0RXXEzHM`#9PoDar!P*I9`BXz>TKm^a`1maKZh%M>nDoY z?``S1D<9x~`{H=OSr%5RXV4%q z{`g7}I5$zrYytd-9u4v;Ng9nJeR6M!eziHb^`Y(>j_r3b+;`F1#xVSMlzz0Q56;UV z1~cot^*!H;m!5KPgZ9}29|{Yq(9`ukeqhf@(A3vYgBO_Ne{#8)N__DeE!J}3*QWDo zXX4vv0#u_dTx#C~P97F{dm~@%ckZFIs9vFp#i3G;*}kvye{OL@e1E&wY4tZ2b7P__ zFE^tntwu?I!u5G$W%uY*x{8A@E&SG(Mui{}$OToJFi@zF`mZ*lvwu)-iv0^e<0r4$H}wBG3^PA`Bs%YHn%ZLk0SDvxpA+$9ANW`9CxGtP zf1w+}_C=F$*edq*^Rr~A!!4`jbg^M+dVB4V2W^70(oS($4S-1iKSE<b6tabAKL(0y&^i3o;W z6ct@%mYtr$jcWP}H#$xhXaAf@pPno(pLzQp9+h`VDj6BYot-rUsj?gBe)$y9i`!vP zlcLA#mMAy6JZiP}c95Y={B{c&yFvjUw{zmx5u$WI%i!R#CmlHu;9fp;{yjNd`PDo& z_(JMjpl{v|q=L=g*BJ}uEfM#8GE5tLa^hxMIBZG#H>QqbG*k_*XLNMrP}Mc}BvihL zC=_vh?-bDfUi$3e3@M5!y#�P>v+%9uFl+=7BEcFGN_=HSk(W=6bCwFc^^mHyG#U z78MmmE#%BCAFD5y4{>rQ9;A8`n~pXskeV4wOv$2>I51S!#2w+Vi&tDkhpioEPIZ!y zb-4Q2omnhRSNH&3IiAO}Ii`nqhKsg2TgwSWSoJsYmw&j(BA*OaWE@(S+asFdnq%2I28IOxica`26`(F( zm|2(ZOK9f`q^gl^gmJXG?*;Z~{WV=XalkSfw0iYzn%^8K8iZj=6H$cS1b{ekn$=h9 z*K3_16P1@q*h->Do$aSFl~M5C@+}yH-`V~AZy8stchIhNBG@0_?t=Y7;N*^)1^Ryr z`Uv|VFlZ18z^DqP2 z290KluypIn`T&U{dAm7TVBwUyJ&=N0ct`M3B0Gb-$a<&!1xoj=a;_1i#&&A~+>8C` zgY=+7Rau?#%Sf&{>^gp&w!42-nA8uh`Jc%*p~mp(AJ)T3qZcIxze7??7WvtNJ@k-k z*nOyZjP)zd+I>=6lf$eXyH>uOP|n5|hp%cCJQbt=@=3_Td0b&20XxQiLoKO+uIChowf*cIi@Hm%=!F9!1q1$v zMmJ+=9MGuxmx2343HliKEJs;t8Lh|7_5lydPNIyZ+G{vsOKD1Zs8zzgE*%E+53MTH zZb55nee;NRAXdAM%M;n(_`93wGdL9-5rbdW#XZ~~#(T1w2fQN$6x%m*6V&yhR{Xv- z2{VJ}yUw!&tpMs6Qmp#x!P25tqR-c&)Di*^LoUS|SE7*U3Y0h+AtQp#JKRO0LZb3E zlkb-d36h_Hs}W*S+wQ#sFmb8d4&yr{G^~5Yt9yvEp4Hw5W9*Usym{r3sWAZSXbUoW zewu%T!;)-;-gNn#?z+sfH`;4U>IEb+YPF(y{Mrcf^73MiEEbXMS4hO;8;MRd{p8>< z-o!vG7kiA`dKNBnEInK(TyFm_CT!BuWR1T+CCq|6iJ%|{?H;Gz4*jPI-YgNc;XUDS z@2?F3#`#w-_wlApgEp^PemvrgQZ(yUQ%<{gZ$8p$sLTZuMT0zta~EbyPN*b-+~3cX zcw;-Eo6V7fnIQfn_;cXx^0MS&E1VY#|C80iw0uZ}>Q^g2g#)qPl#beW5(U6Is{h=l z-}dBb!lg>-^#aT^tPDf6%Xi1Bu+z7q=jBFwN~0Bs>g4!Z2Igyz&|9-t$%2@W-$3#s z@0%=FR1ZAaFzp7pRNZ);ZfKuNk3t+5NjlS?<|PPp55H9HSIzs9co#ih2J#OZ)(0A{ zv_^Pf&5}Z{jG!>tPoTM9R!B`u9b0IxjXzd*US`S|pI$9s&lpe9S{4UY8bsID8tfF= z=4j+dB{99l+FOK4%NY%vCG1onK6BPYGm;!Ytv4od|1J|GD10gW+#2bllE$Nt68I=` zJkc9!WgxA~+Y_c2GWj^b5^LQbT&B3X-|Jk=wfh1OhL^bPW6--D@QfTJ?#Dy>!jgI7 zX2@?D@!Me3lSa18!%2(=Sz&7@uBLWHOf}~7B~ZZDJ9RgUXHUStz?)m{m(FGJ+n6|` zRILm@ODZXbFUbli#DmPsV8tts)UI@i%P-@`t><8Rjsew7uiSzcS(vh?+6(*s2Y#*d z8%5=bLxYgmaz1c_)M34;fU2;wYv+AOGZOmgo{G}IJ*}>hWi)|L2S1GCT9A3RkC0Y^ zrDxPnKwUM7@U?|7=e}I1T-i6X$3(@xE0k}~cyFEl7aOuZl%a&fh=(YQ*nquA;3wJ$ zSN^t+TdZ92cP^JYixcumI2Rr7e*x&<|3Rafah+g|0tu1EE%((WSC5xtoEV0Qe_~C|e@Zj-7|xPRK9wJImGqq`Z#|I$T#f!&5a2 zBr*(MMY$}CB}HtDdHMQ2Huct;wh?lb@h2TMb#<8zuO4e=OL$k&cAhsS(7u>DVVCqd z;aqH005CPA1)T!fX0_WK98lRp$`2=X-vs2x9|IycgMEA#@ExM{wMc>v!tFAH+A{VH z%T>Ry=cHDqxr|;+P$ju-PjFi&Hf7EsJGa1Zum00yfv5yS+)>ICxB%tteRk~oF46BL zk?6AA+rQYV$v*pfwc2Gl6;xI{1pUI2^n=wQ6&YaXXWcuGF>~f>h&N-(eAXp{_VjOd zt$Sv>E0Wn4HWYnB2a`yD)-QD?p2_2`@eYmUHY+s#7x~ra4h(9!{AxCDNvTK z)d%Y*#P}W^bF=$fKsP=E^4ajLSaiv#m9Vr$D^52RWvTTP4=7P^+tZD)HvUfj?}Uwz zEe_*!^}a8hL)%XA^I1c|s{1Z4h=*pskkmOZIwfUiHp?X6%P@D!45u1W`YBjwPy0aHvOanQpIx#&9c-EmPFWEk`1V59$&T0{nS9!VI^_-}SRHwm|~8H9-6eVvvM zmJ0uG7NVsmXoLe_pW=-3;s>H8pE=Ldg#g{7?(lK4I492)cQbItK{`jROvL`U+UK&! z;dXvIbpG@{C#tDS#6$Ro)R*}k`HLo(yqg*o<$#bQW03NfNZL2u8M9N( z9c2Xh39M@2!lW!N^&F=ZPHo*we}Z9eJkEwUPBO&?oi$#M)rfK|Hue-m3jZ=*qp5fS z=@&8+dhGN&@Q$1Po12R(Swg%UqLZ!vML#QIii9Q%Vf^l;0IS4v)1-yDvNb0?Ma$eQpn%Fx@ta{(4&z;fO+c|NGl_#{LQTz{rrs~gl!=1a3uVma$yv59(Zad|X=~l^ z<385l#3ibKZ3N<(BGX4e6VSGE6b#e-Xs+_|1iE$%Tg1Cv*DsMV_-o|vrH(;2I##>3 zbGfu|-$TRu9;3u0F#e)?LhFy@Khxv-0S#7aNsaTPiL@HY_jobKtBiQ~lJZ#nnxA*0 z-c*WeggmB436igYzK>O`5kb}qMzli{uY)v3&TIWHI=2Rj?i+uuEzY_yJzeDF}c_ z|C>QiFnKa-(SW2qGl!()Wja#rjbET-v{y3MKHvugs#DJ%3MXyftreMcNNa6SfmcjPnZi(LWQc1=bh28ckqLp`B?ytU6v^%_3QZ0ArggUVw#|H~mJSuiLM#UdoJf z^{3jqz2Pq(MwyJHi{RbV=ZfcB6ZWHy`Zz$YEkmsZJJm09w48XsVhHoi% zH{M0R+*4_*u5LeL2rP6i&(H5txzUYY4D0$wRy}L0A0p_cS-Ttr^QeVz?WSD5voQ&} zd(g(_2~)SPGxG9M{)wT2_%vAs#z{Ni4L05{(~R|M+ht2Lg>}tu)XVc}M#tv~f71G} z;FJ4pI}P9Uth`d~x-+GjnbQ%x^>ZmHU^;wFPLq4H2t=O~ytY%dzj?p!^wADE_Kiat zQM|*ZCy5FLAsOfYm4%5)&b-}o)LR%tH?JeRROV+4v&DKE);MiNet9YhXrpBGS6aEM zlV?z4y_8Ld?006gINx$RAE?@AOV4h#ThCB)p|_0>Di}=*}mTTXIuP7IP1{0QR36ijT+0p(4Q$~AvU^aJA2CAlKG`nZvwb0$Fl8;;e z9Im@~#g)T`F)3NNzZD;tv>tSI^|a*=4Kni%J&H0h4dV!$(^YwIZWDim{R4oz_FoFo zU%iDq;$y+)V_JJpLqG~gsH1b;zoJysobHFZ4%^cSp_MZG2scRAKq zeT^#iDZvpIncSjdEIeQOtasu4yUKw^$H&&)h-%bNeWbE0j_BGSmBTsqO~bJr)UX0f`L;-g2xb+9gl*rqxvhz!yHiQCqB8?`alSXf8u zxS2Q~K})2A^w6_bE;N0NdQUrRH7g#YbpGZJbNjx%R|U_KR#o$pdCQx_`(L}a(+?Oc z(<8xHqU$TMO!#kH8sytI1}6JL-9pGpn-9-~>gk~E0|Ig;;Rb>C=9UlWMZr6D@Trc%Wu^%7Y`^4A39cluUGLik-Yv_ z#s&^B)QxWF!RWO`k=!DSCwJkW^PNV!NCDI=c04RXVjJg!1vfz-=kTtOQ_GD^5qU?y zeA_$ydCAI7&X!dpb2djMgOEWOQ}*b2u+F2$YK+1K7yplc+g5|OgO4qZ47MCkFJu_@ zuZ)}?DUgM7LnxI9`C0!9Jm-2(7g6p)Rrk4k=N_O*D8cs+^-eK6N$VA1tXK}~;CHxk z3o8$J;J>d)S!cpE2Eb}u7i25$J(iDeD!v;;#fO0TMIAr>c{VVp$}End=p_P=-<}75 z>DqP`>;3q4z)`;EB+HYbq!WjZ^VS+jaVA%YFF&5%A8H@Mad<-R<&7)UDnF3&D`Ak1 zi27t{9kacCX5bNC?@oZetk(EUF;1$Ggnh)#@ipE^5YqcQsqs##wN=kBx%Dq%G`u5iN|G6rYp+bin4PTZog@In-xBh?)eJNwX(uO%A4Feiu*M#YA>#MzO>gMY^~fB*G&1)%@nd4R zQ^bpx{p4}2yXw3+J@oCZxle1Cm@5|c*V65@k%42>gO4ukC(wifw{-cqi`GV7*j}Xe+C$lP+zmhI-uYyp&2yR~tm*u3;hjicG#f1G1nW z8BJ5E-FNxmE6`2;UKXV5WGNMuWs)fdf8z@m)@aY{?!h7-!q`f{(T_v)NvF{k&o*}b zKVInT{er3DZzbcuZLOAI&ihdnXEK(CQPuX(E%1@XqJ7lce+>1aGKl*rDk-BXluF_B z#%PsFgBkctt^m{&Ocg7*?k` zyLMVHBI#|xR=8g4@{(HE%YesX4M_l9XmNQve{s!r^QW(|?guNKyxWdk3lRFaPIb#| zLfw;%z2NqE|33DU&~ClW=Fihp^7h(^^i95K)0}gzqaFe8o=V^U`q=<%MN!yPnjkW~ zzj{55O zo0H{V8_apo@k=VEH^=k)+W{#v$qFb6fXM#G34gZmZ*tVrYZ>fTxI(oyqi3r>gGFRW zrtf9Nu8KH9k9H+bzTDZtR?jcT(|`&teZ99O*)lge;*JM8Y2_Oc3}O*B%wfcfz|W9C za&szLNZ#p)H|qtVs=KbkVXn$rbEgf)tMaOiXufZ6i0w&WVIJePTX0><04F`G}W z4g;iUDxt^frB)lNVGg*oqgJ!wly0{29EqoL$~LO(Y3=Q*#Z66QOke?xgiQ7o4VsB& zfpqLw7)f7m6flt)jAaG$i@e3T^2N!VcE0PxIieW5@XXi~Cd1-#u-?U36a!LMSbA z6>zMXw22Rzo~X#Ahc{s%FXO)CBKekug0b(;q8<&Me~ANA88cH5aTo$(WNyIPcpahv zdZUz&P4gr0!ShsD^WB@084?)&FL7#=H29)Urhx0i&0cmoQbP(nY)3T zh1SGlb*$#rw1(FwK(V~qTJjjF1{z{UurOJ6G!CFN{baQ(uTq;v_3$Hll6BgjQjb;2 zf87(qLKsjWeUT*+}dDObcmh)ZI$|d!k~|yF&}wK0Qrkre+J; zb>H!bXI84Oy8?=whC5+N6P(6)%!2%5`0inaQ5A#XfMKPExhJIg0&f}d_9Rc1&$8Ns@SF51Pys@!xk8p(;S39UX4gDD@J=M;{atC{0WuW#Uo1 zwR%^k=j_l%E&1zPPe}xCpymjEs~RimPsv;A-v%_Jjnw?zTikv{%Twojpme>ht(l{M zcZs$BMpzu%DXH~G+2olymbXW!A$Z@zAnFG<_3p&XYK>g6ObH88j2Q@pYxa;hx9*yyL>37Cu>Pwp{K5V-95V>pwqH|x#SB+r zLFQi3vmiNZdzGNF1og~N2B9Hy&N>rs^plEi)m_y6$nvsymKhk&b8`P3Ri7$z4&zg@IAjElKPjnJe#Vj|)*BW-Ki}oU4aAamAG+2*%4)gYni~HOReEp7|m5qo~ z4v(z(R5yPz1YWc(`C{^|nv#AR&&l`B+YJd9eol1aJN^3^OD@~Oa1C&}2v#kH9HicK zYrMUqGa{Hk;|{}c=9c$W{HK0}O7b0(SjG)s_+euEv2sQX6?rFPo9yCn%c7pAW-r;{&CP4xIz;U8z|4jH z%wI1+ZBBnmVH>Q_0bM{sh4Hn6K+gyXsxTV?K9`4?8+F*Jjo4uZI7IO7FPGbWxne7L zNLZtfn#D|jl^QMD`>aB|g<&~r8xcU3%-})N`t{qQK#JU}ZASAKrX)JMKo5V2S>Mca zL64cwS=##favkEc5_{eKn$g51M#P*D!m9Q~bH`o7SM6KTtU5wh*#h5H71@Ws-^Yw! ze!&X`J_`w%Ro>T`pd4$?U52)N&$s2+)=<$|8CU}rG4)TXl4??_qR&P)S@adv);g2i zwS(RQz}hPLlalmL+B`__Q_PmrpD~@`DRyy?%5$HH!9@~%oXARy1u3*=Bo6b{xElai zaMwk|N5p%v+W9nxDqfyQ@+*~g2@=$Sici%~66oAW1oA*i^~0Ao&&j^e8%63#dn;^x zV~eul=L(361YMxKFF50&;3<|1_;tYYc5h>9dNn;hk_c$(RP2-hQey|-PcMTMMjAxFS z)tSIFK>KE=w8s%d@J*8U#os`+A`kCwfA~YZWHz_{T{{hB|;?qfY zwGiKpMfR4F0KHDMslOQ?fAF$!(HY6~4NRMP6cIJ+_YkCom?mgbQx90(#>;LVwwXt! zuO+OMJ6M`D5JgOasrpX#?Lj(gH@f`y$bM$9M8_46mU6b8{WRz7UThwVG);X;VbQ<`}iB zQ;#(-?`|X4l(-x$tr9FDiH4Don9P_LV@XZf=#&RhI963`Ma8iC2*8^Ua-znnaH9!3 z?o>U*I&#C%^Fu%4RY_}|&2BArxND$(Z2OEjAp7L%$h@g~V!%O-rGQ&U!a71)Jl@AV ziXQZd1rpiaDPUDsN32V4*$$w6@0?H?eQ(5h@v`@x0^k=KrBi4{&E_*K)!)b^h`n(nrfO0G__yr!IW5x!?542%37QZJbbh=jabJeCCb z%?7DLwf+73S-$#gi4nTWq4f2@G-hT-G97pvQqw6_v7`SCjftJ_d72$=iCF}C4m5VR z{CM5U;KmCG4276oU9Iu!L6rUccXg6rM%#sfQhv)VKc9AD#QpCtEv_hnWe^_-0wUyV zpKU{&+}sLE-i`H9_TzH>Q!uYi+Wc=}s~D3x_#$14NF9T)K%;din`U{elkmlJi|nul zYk$T<(l*XUAm5OOnT2VH(H})7v@iz%EmyyHPv*{vYHF!d+8b5{ta7DBjoeZ-GK*vW zS`3E`6Uy@4G*x!NNXFeI<3(Ne*5i*A?|>1Vq#+B9;a?e!E-C4{LtHPgoSGa*jPpteQeIyQ-iyrLD6;-K>V7SSQsc-g= z^A`51s7`(zW@=Z8+Lk*tH6Kzmve8yS&953uWgT4dKAGrgl1N!oYiOXaTeGCALH|DgwiOPbsu#mCBgCOr55t=!9orWt=&{CI*T7^q9K^z z8@q@Gx_*p_NZA!Qi_BflTWX=1jmfMjn`;sxE1MXef+WlRRuZW+F{~1`jkuqG1**aZ zNdWqu&m-9m)q)OPhOFH$+SV-kz8YsKY2*LO%{ZgcoNbY@>hU>bPS`_#d>Q}lzLzF3#W`Q z0&r$>>-ncaVas>NkADDSn>bNsi+s`R9p9*^;uI-bW| zy({2(Qs&If4wA9tIWmL=v)5wCX#(;sg*5k^_cA+cpN{@zK4Tse;~NlYEJz18@(8_< zT)y0#9NH4&Q>9`tWvF=m$Je#YpVmzHCS^cTwN6kGAix{*`uYBYmL%*0J`*(}#;1EE zZ5l`{f@0i%KdU`eK5<-boy*>8>UXVBcAvcU_A2=t5qHth)|+>=zYDIeUO7Ka^attw z?5y=Fs;#?Re`!A@{hMmAfj@%%n@P7%a=-Z(Gs<*NLD(;K}< z#by)#W|Zq0eoo;N${Xyb_eY&p!o@l{UI0iJD{JP+jYwm2R5#RLihc!q(;`9VMV7kv zwuF!2wV5*#;cbRbC6{`q#M-vo*2D5Y{A(&N>s* zxrZjMDGCs(Q-A|@`ebz-pX2vltxW%2KCf+$0f{uif8a0-(3>{|=w_^mjqu{3lV+l- z(n>B54|()AknjPz17u_SRgIg4+fr0p{hCGq5x#uwDX~qma>wpuYCcJFzLuY^u|tbH zY*8{ZHl|~4l~`Fnnj$Cokr9QLm)D}F#3k@1Ot7a(`aU^kpD!@hXzD?Fmj6kN!T)@a z=jm9aVYucX`JUepB>EJtiQi|bKTP&5no9(s6oJu$ebY!0c(`@jPO})|-neM_R2JZc zq~Ma62IQKgEg(r2r;~!Ud+TJGax`e8C@OwmOC?^!c(EsbRokXe=yv7fD1vkFI043X zbaHc51a{kH1Kw_$p&!ynU2LGy!`FRTPRXMWTg29%ey^@P{WcF{b}ts=k?-W2@fOr1 z8x;OkI$JusX7j^gw7in-gZEm*J%1E77EDI`Q$2dadTP6(dJXnZqi4KtkuGitv&w8M%rErp+mMm5NhB^6uqe#Q>UD$+U;<=-gWLlf4}bg)q{zvhlC|s zr$nU@Cv_22OSR8CwVFuGt^hDG$^G0tmT+qMuHvX0`-*5S_vNluJOevVh?{0M7PPzE z^3Ib+_AK}gr`YEnbOEh<-@>k1e@l_lPk@kXrXZAXL4%TW&j{5ojC`GeU0$#UyXDNOd%I~i3&-zG~XeNBRiRAY9d zVZBIIB7-SMpofjrygxLdfGJ0(Z{G1PAF^SUlgUv|iVS)ka-VK}iBf!6mtiMXr=6nJ zwSel~s!vGjt?lljx4GBz_5`RDyZ!%c6TsX0|5HvMAfFy@S{Uq*pG28Z-S%Q5RGE3z znp-Wi9T%b@r$fYRCUuUebg6LuvYm!exqzmU0CV!lYnA9w&$Gf23Q{J_Xa~z2%A{kP ziiOc+eSn*{cne?6wjTk9k5R6x{+2|&wRX_)7S30av%{R4=@>2tnM!`Om z5V$3UQSiUK@6z2h11L{hfBrsAL@i$qz>!yM9M_f&45em|x)7thTD`^28&pu>Mb4E& zpyh`(`@8Oszq4P9@3+HILi|G4rDcmZPq4X0L%tnXYZ_Jle&Ltd*WOn_i*zxzX zJUls9LLC!h%ZsJPF`MaziFE69luKg=nqjRsz$vk(^!`4d>%}ZwI`}ElPjJtv;pg9c z28ZjKQ;PmaB4UR}6Vd7IvS4UZH8UCY>UeCD7mwRF&Zc6uWmZt$tKB;qe-nrnI} zo5XgiB|U@}!xn)%v=z{b`}@agMaRK1y9reM{Qr~|L&P9clLzaP=r zTHP1sn~@ns2whf`&3%07te$th=q7p2tQS9bbt(D+<;%JG>=q!YV)hUA{q{MF+TE4TlL9{#?xcM5I*Hj@JHNCqzh3c2*o!)1CtYs< zDf(#OPvn&8dw$3!`y8d<`V+0MS)Nu*PR8a(}FK zKgnA~%8iy--5IkIz866YO#J>II-!vovf^n4BE*11qZ-T+9)-z3Q~A|y_BQ{W#e%$- zYrFZoi|0QXm0XJ;1v|R>F4Ck%Q2RQ?wH^DJtKH<)XE^+n8ixz?hs~nm^bY@)1S8iajVSF-THf?vTxi4qg?Q~?RXd*vjKHqDNCp8 z)t*g(eHklV^cy?B#GP4Mfmvgh3vg!R?u{Zb#O)eI*Cw+|o;-jue0%uv(Y|p}Io4I^ z6lN+tZ~#!Q^Kg<&n?+B-zI>P+)QB2n9DTKL8ca+x1wlRyIM7Kd;trp<^NjUrLKP|s zgB|m$Mas8p+1K@~Sv>EhqiSz=(Vj28v4Rr6R+qWxfs_1c`RRiQK*~;S=c8pCKQ_}* zHYDgb`c`H=zT8UMuY{RGQz523jgaQ;OuP2;Mj7wVZvy7u=i#-+``G7+^1Op^<|Y&x zz9ELUIe%4W2$+Ci0!^=Md$|Kb>~X!2r{l0Nsu)cf&NC_qkMz&U=m^Cf!a<oUJSXrla|ba&9UJ5%N69QX$o05RX5>{CQ;tn|oQt193CZ>3NecunsyM`s0JCD|>` zJNfT3_&iw*15tb4iSF5B7J#f7&Lm*|RBf9gMy}+IfQA&!M{-%k)0b8hXNzj=(-Hpd z_LskeZHTZ5_dEcyX2}f5A3V*z-WNG3gIeE=yM>zoILAZ6YVPny=}#rD^?&OdU@NR1 zRC!r}ex>5Sz0b?A!pXrd;L~;>k9R5o>EbW5sHGIw zfv{dXjd)%?Tq|;bo1hx2CBs_NUVi=LSRjF5Ds??G*ws9b?d$?t)F**i@gZ2>fqEOu zYn#GP3LVcoD{k}n(#6`ze^-ikhw#-a(l#?M2*sqsgkDaDxsu8Cc@lk=ji5ca1V^GQ z!IzJUi$VS5N6r4QHZXb@OcF!A-X=~E0bg8gE4($Fs}u=m+K(50q<>r4PWNkFV1B;B zy54^jU+cT|)G@Kw>uCJ|*iPi&qG$9W81=pD$Oal_;?dK8L{n@q;ZZFRpg0>> z@+SH$7~G1wBXtm_wtu2VSCw7g3tFW8G6q@Z?W=CwDWv}*X@O0tnF#s;zZjPtx;psuCq`~=VB3WwpN+py7u{d%t#*D< zb6&U`ebm9+`FXhKQGzGiuZp5fTUWyM$uys8Pv>Jv|HUt9r}-w7o?FWXI989qQfODB z8Lq^-GunCG3+=!B@b(2rZb|cQ)C*(4!iPqmRKkK^L87nj`u%d*Wj_C|W9$#3lK0D^ z+2F0ij_jsRtuWn1AtdX^HyzREW_s)SRkv4h{C)wZOC8lyT0Fx1P0I+XQg{CWe}Wn<7v?TH>C;JqXg3ynL+9{EAykjCn?U|-Z)S0JBhDdr(W5^gkpGpgB@&p zkMMdAaY!lsx=B-uk2woE{3-?f88CrM7q76+6tpoe__uJ$COtk~9B;Fez@y$c6~$vj zi2J70#@2Qv?m$Hu*6EDnyG@5}Pr$A%l&2$BGG`o8}B;tv`OVV*CR zR~stezBH*S^zf!5vJ>u6G<%hQiJE%Cbv>T7{hCFw;ML5GHKXv?LBD+}93XRaZks>0 zs@UwPr`>l`O%jQB%j;+9o>{pZ?`r9P5f=)+q~lBBsYW|Q&tY;+1H)Cny|SI)_3C@x z>D0?t%gMZk&-7~3{u3I_GCHT4=|$0hm*8-{!+$>%sfF`Vl+U8$d&vc-g7OZf24}#V zCn`y8KRA^#ErW_Yv}ysD2Z;PuiX%J&3a7My#XgP9STQZSS=|p$Kgw@^*yK}mh$pC^ zd)2ZLH3Y!L0tJ83yeFvd3<8uK1)9w35(lbyb{cS%UHCU#_o{_3!i>Y;+o8LCcKUtbM!Xlq;Km~vDYvE3o7(hwFE$`m_r{u|@8%KcG%QUlgz-h< zT)lDc6q9?`s)CQV=tIEuLU#dGX&}uzj|5Sl#4rkK$NGf#mUBGPx=Q7}J1qzITd>ASZ$NP>byc%635nsKGA!RDQgo-_D-9F%Ihhg=i&#gT1&{C`-Rs1i|ob-LfWGlT#me)`-@0f}@| z6~#T1o&j4ro<8YeOkwi|bIjK9LA zHqL3LbynSifLf6%v!s8RMKLj%slPLF*grv?2EJu4tqK9xz_}A3f3yzgt9Ka2g~>ydTw>Is&$WP>ra#bzP~$C=%M)6T5Z?|L+KsDY&gzU^&UBg~*fp!qE1z+^h2yVPih()gsu@hvKt< zuN|wa+Cz=^cy2r;K)}UsYkU8AN8jx~I4RB@k8TbY-C1u9coN94T0&Hy z=+#6B#N}$q)g@}dv-O@~e>90P9p;S5yNgGjj)%bZR_tC3K06|IlTNVaBcOh@O$JY! zP;t>Q*pbZBCH=h5lEm0`CGzEA-hg2-I&0?U&VypoF5eb%zdr;uc^51H z$CO>~gc8%iT94O>JEoEhN!cWu3JsX|u>;}`U=%|&*ixdQxT@L#hQsngS)73k(~3m4 z`t6q+pBE=w?|Y~ZUgfWxbop}*rb~xG8YSOoCm`v;_Sa-6De-aaWlJaRVQ@4bueVAw z+kPSQX}ocgkd2@{IqwQEM3tSn+sk%(XPQZO9h%>gYftl+VY!6){%8Wm5g3`eRWhGU zAu;2Uxu{bh+rOtOJO^m=_&lGhlUa(ZjPtaE-jVl=a6b_u)fcGcC~!t6+bkCo;Rml+ z79ejB*w0KCC_K9m+kw2T#Awg+ME=pgY!)7CgWM0YucV_A6YHm5f5@dG-o`i?4on1D1PkA=>Tq&VvP!0~JN@%zL(j$r z-zc8?`N@Z#DWi%qq6fOU;}bL=k`g|^@=P8~X{l3|wq>aVF;o?Vj;07d2zo6Y)F^ZW zx;C@e8))>f*z23?SE?UGr6lh(4)&tG(rS+y5er8kp>i|%X}Fc#9z59=>uTTY{z9^e zjcZ7m{8)K1eSprS4)X_!)seOOyHnkx{0$qngY7oK%J^Z~W=78`?K(=yBH0flCbCEt z4c7Y#Z?KCZwl!Px=p*1rwa|Ga?=OGXf4p&__+4)=mhke#D=O!DLpxp6;DTI>X+P{S z_5u-|bDah146tB(xXZ=c6G{Klb)}=f7KOE;T(S+vKQ)R=DZj~3;PR&FnS68^;k|uChcEzRjbAv1j`wJuD}UIbzwEdP%Q3!UnVHE~OWsr&p(|F^>sP6r z_h^PO_h}c`Qni@~3J>it`O9u6K6T&8B@Z(o{+=TU33x~rBJ-EWPe{A7w2kO@vx%6s zwfoyq4%)s!f7C{-LE1fnR^p65EAQ_!c=C+~_EJA#25o3>+x)B{;{S!^Hx|G8*ni1( zg&CiAe@H%LA~^Q@WFh=6q4A$TD`R8g4S|G`w0vcH6`Mk*E3;fumq_^PsIl?fD@zkd=GY7h-2 z{o-c}dQB7niR9>T{SxD}dO{M#>GX5G{cWhHcgxq`OKn0kD4a+fT%`diEdj%l&p$Y8 zj^EO0xuh&cP^wZ8(I_NoF7hzrtl1hO0(6o*iW(Sp39FZwu+@ZbtU(L%cyM;k`p9sD zH~K#c7rZI%HGJCmNucI5Drpqh^m@R8JbRUKYd85}U#@L#wd049uzs7g0?`wU%2x~b zRV~W(d?`e`64z?cANE3n9G9>$J(Flg8cxgk*pz}XAzB_d^ zLrJyvyH|UW$b+~+TX`sISU!ER=?k5gjej7{7U~pp)S`tnuku(D_i*kQp~TpwTPbYo zjnWXuswyJRzxZ&cPCzOR9EJX=uXdD{0fGeDjA4|iYCh~j6(KQ*meuflE zAvk|FICicGy{PM)hD)#5MixJK9H~h%NX^aY>0=eSCdQq8;3k+(_&Bb`%_!@5D2^hk zD3PHeOD3PiP6t2(gL+7|y6MQX8?X*jmG~R7 z8M}E$Zh6%2jA&ubIZM5Lx5?F%vCuo9vmcH(#2|Sgv7Y)Wx(5snF_-upeKS9}$jsKV2MSXcoh<-Y-2@P-Rr=E=gX9&fj#Mgoj*|b$A2M<(w8>{gX%N zxyFnjrW5nM&}eIUiSlNYy5@G!b+2O}zr@{#1)CdK6~^fQk!0ST=5A`lQVy{MkxR1& zwIz^bNHSy$Tlqdv^x;Of)6ss=WUB~%t$v3?N}5Q~o-->(<#c%U053UM@13dn^+&If zFh*=1?4-u8VJ}MX?zmv{pXqlJs@C?~ zyU7$YRkM`WEHs($fs0zjx6fVBcYR~eU~-6~6+{flZ4SeX2pAPyu-^mq#vlGJJ}o%hCfZdP7)|f-Ti}f;;?V><@c)K z(2i2h!K+n2+TttjDlL*W0ePo1V6?<_$Wf$QpBCy~#iZj-M}%YmmkkS#IgG zYk5E|lC*93;?dW>QX(IA`XMC9mB9KaB_mX~auksN)|7>pIRG_KEz9}fl!{VO<>(ej zz--ChVf=^%#qjDl)#FH7+-wooi2|IAS_}m78{N${B<<24Vo-C^Sp7%Xx6GGb4Gj9` z$P=`E)O}dUvbaURx2i?&xUv;l%{t9Nqh@9u=^{B_`hidXTvuA_<67gmc(WDHyQG@c zlocKj`T<|Xsx>nM{XxW*L&v9eadvWN03cscVT9tN+9X>uE?yjzPL;zlFSY6 z2rkB}^*Wy6%T7JUi>TAB!nZ0=S_r*ZQ-!-9S>p6V_$9$HNG@UM^&vqP?NvL&%d_u>?5$3hgw4zEmB83QXyMEAPiu$Y{%>G&&$t6HyG=VyrYRW>~@5XbE;d(CsRwwB|R zYVxK{ljJi)NM46Vc<7Gi`D5nr1m^-Ry!=4=2fb z$59LKp-<$~KyL4k+?W%$PK`|*?H5=#*iEhUKa#N!IfAQC)fGvlTW%i#5^=DEGG}Eo z#Af-KN4fPp7pVxLeBEO8KG0sT%ZX{|wCM*fryak9Ju&w^Jo@DCKS=q#@Ek{4=#oxv zx?4f;6}C?sQ`QFT!;{l@K%f~yC|d;)?VE7fCXr*nkRE#G%)ex6Kp5Z0bu*R=hoZkl z=r>;H+Mci zf`Xv3g#rS)HX;);Yn9!>(I|4OtisxhVh7n!o(8M_c`l!!wBR^eMYYUlv}nC^L8Y4w z$mhVw2$$a|rJ2$gBDKXy(V}evR>5HQ#mAWf-n9s=*0{54Uq7yx6}VKp&Ujf(ecPXzWR!vDfRXUQ0##UtiRVWI_o;`Cr5@L7Emq&b zrRxS|WJL~sW~oEV=XzW4+KsBcOvytz95V$D=>YY|@?UHv6v%Z7u`CG!z-(dc-Cm}< ztiwH>e}m%rAGbps&v)McBJ=zSJs)PpZnpS0gQm+g*^R9m!l)C+mh&HPPXCA<&vGMtWide?NHws@$czp*~ zMuK~5uK@LYGv_jT~Pnz@llB0{WqSpgA1dLiHB#`H817{PFzZ! z@Os40EyNVFwwYI`d+WeMoX?n@Uf~XtyzP)Sqo9kgX^Oj)aGTYEr5{!Bs*5%7PLF+dEC2MRgPF4*j8vU<84Rvbr!%gj9Sg4`tFl(Pz*jiv z`ZEnDVeoacBCo;k2e}Hfaf7mI_AONp=v1!Q&Cq8;Lnc$%CJxRa(|+&l4p_SlBB-;A zUpX=5mpz#_`^G31T^cnf!eq4CZ$6cmex-IeZ_#qMuO~sn?|0Y35?98xH7zicAZNhA zkmuQcXkeQzz-}R#h#NA8^Mq5R@seogDu%K-WtFxGa^hdQS4QfJvPZ?m)Bn^#ZFvYt zieg%e=VvkQ?^#06(gqun9ZY*?5$oLat@*M6?e|zY6wj`X<#|f%!eU-I)95O;(@THw zl2Yw%J_7OLX?}!~rX;|KO*xw;GmQ#f)$mpt!t}k);|MjG(+XeJd;>UdPIk)vxi;la z>yco>^=3Zyn}SvNw>MYirLy%8wCRqaU?Nn{kEWcjXvw-j!t%}d8BfB z#{ssZ&0um9k@Fks`4njj5Q{n?_Ou64%K}m3bG$wXE)$ zN!G5`_n7UV*VJ;sGn*Ct&s~&ud(P}a9)wX$z=NJ0;GHBPOsK(?@twPC^qntGask?V z=rN$1HP+P2pa;m;Xc0Bs?d_sUi%CqQzs}mXqkQ5+-VUL_di}5`v=zM^tE?(e*e)f4rK`o86mFkY0*#z8onLjs94;7qnDd? z-fblYK4c+gZg*h0-)w>$be@U=U0#>#hB8>w(rKO#^phs3-5)cpJWN;L2; z(ukR_)n5+0$jYM*4~Nfo3m(rX6l+d-{wfL9;uL zBuoFn{Spu|P&RUFKoCFI%o+~iqpR7~V)CmO1y91hu< z_q=)F@&=d3Ew#KMfH{f3lps9xv^-(bP`Od})cI~GUx5>2!By<>&`asNCFHI2hS9=J z)?mjg_Z**Q@#(R+pcrZ!)Pa6!tj?2Hf8W_FB$Gx(&y`HE#eS`&eYjr{jk;7;)yaKt z$bmakB?io{9ZpBmt551SOHvIr0j4)ig0R^9V{WvBV_g)2e!d9__mq_WGK9-|M?ja% zI(;+>jhrV~IPq=RaKG$~%CHXhRte(z;Oz0Ve_%+r)1hpAlx5$WjXY;uH0%3Vk;U%2 zf*h$76$%8is(LAw0+fgf}enJ8Sleo3v}RZuch(r6t0N%c4*&@yl`KC;*sH25}H!X&^F zpBjXHO916vAeR~TX>6g7mpk8I=2@?83W>eT{#gzupV#X$@v-m=_sXR3G4fogjg+Kn zk&m#{IL1}aiC~w=p{l13or_^G;S( KrbyZ(;J*ObILJEy diff --git a/icons/obj/drinks.dmi b/icons/obj/drinks.dmi index 77c3b647bcc80ae26fcad066a928246e30e28765..2053ca5b8eca1df12bc01f8e5b0bdf97f3fbf17d 100644 GIT binary patch literal 64707 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�d$Q5OnJ^7P67fT_<0YB*}cw3_jVz~2k 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
O7HDgDR{EzoG|L9$omSe@2hn3IM6oaw{ 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 aUQjV3Zc_>*n?<334_I1RszSmf=>GzKEw+&W literal 60639 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

f+P%mTYT0nB1Fr7M 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 diff --git a/interface/interface.dm b/interface/interface.dm index 12712b77b6..324c2e8c1e 100644 --- a/interface/interface.dm +++ b/interface/interface.dm @@ -81,6 +81,7 @@ var/adminhotkeys = {" Admin: +\tF3 = asay \tF5 = Aghost (admin-ghost) \tF6 = player-panel \tF7 = admin-pm diff --git a/modular_citadel/code/controllers/subsystem/shuttle.dm b/modular_citadel/code/controllers/subsystem/shuttle.dm new file mode 100644 index 0000000000..0ec7a375e5 --- /dev/null +++ b/modular_citadel/code/controllers/subsystem/shuttle.dm @@ -0,0 +1,6 @@ +/datum/controller/subsystem/shuttle/proc/autoEnd() //CIT CHANGE - allows shift to end after 3 hours has passed. + if(world.time > auto_call && EMERGENCY_IDLE_OR_RECALLED) //3 hours + SSshuttle.emergency.request(null, 1.5) + priority_announce("The shift has come to an end and the shuttle called.") + log_game("Round time limit reached. Shuttle has been auto-called.") + message_admins("Round time limit reached. Shuttle called.") \ No newline at end of file diff --git a/modular_citadel/code/datums/uplink_items_cit.dm b/modular_citadel/code/datums/uplink_items_cit.dm index 392e26ba71..ed412bb547 100644 --- a/modular_citadel/code/datums/uplink_items_cit.dm +++ b/modular_citadel/code/datums/uplink_items_cit.dm @@ -1,4 +1,4 @@ -/datum/uplink_item/stealthy_tools/syndi_borer +/*/datum/uplink_item/stealthy_tools/syndi_borer name = "Syndicate Brain Slug" desc = "A small cortical borer, modified to be completely loyal to the owner. \ Genetically infertile, these brain slugs can assist medically in a support role, or take direct action \ @@ -7,7 +7,7 @@ refundable = TRUE cost = 10 surplus = 20 //Let's not have this be too common - exclude_modes = list(/datum/game_mode/nuclear) + exclude_modes = list(/datum/game_mode/nuclear) */ /datum/uplink_item/stealthy_tools/holoparasite name="Holoparasite Injector" diff --git a/modular_citadel/code/game/objects/items/melee/eutactic_blades.dm b/modular_citadel/code/game/objects/items/melee/eutactic_blades.dm index 3c564f1807..682e6b6496 100644 --- a/modular_citadel/code/game/objects/items/melee/eutactic_blades.dm +++ b/modular_citadel/code/game/objects/items/melee/eutactic_blades.dm @@ -18,8 +18,7 @@ throw_speed = 3 throw_range = 5 sharpness = IS_SHARP - embed_chance = 40 - embedded_impact_pain_multiplier = 10 + embedding = list("embedded_pain_multiplier" = 6, "embed_chance" = 40, "embedded_fall_chance" = 10) armour_penetration = 0 block_chance = 60 light_color = "#37FFF7" @@ -317,7 +316,7 @@ unwield() return ..() - if(user.has_disability(DISABILITY_CLUMSY) && (wielded) && prob(40)) + if(user.has_trait(TRAIT_CLUMSY) && (wielded) && prob(40)) impale(user) return @@ -392,7 +391,7 @@ It appears to have a wooden grip and a shaved down guard." icon_state = "cxsword_hilt_traitor" armour_penetration = 35 - embed_chance = 75 + embedding = list("embedded_pain_multiplier" = 10, "embed_chance" = 70, "embedded_fall_chance" = 0) block_chance = 50 hitsound_on = 'sound/weapons/blade1.ogg' light_color = "#37F0FF" diff --git a/modular_citadel/code/modules/mob/living/carbon/human/life.dm b/modular_citadel/code/modules/mob/living/carbon/human/life.dm new file mode 100644 index 0000000000..1f7c39a5ff --- /dev/null +++ b/modular_citadel/code/modules/mob/living/carbon/human/life.dm @@ -0,0 +1,12 @@ +/mob/living/carbon/human/Life() + //citadel code + if(stat != DEAD) + handle_arousal() + . = ..() + +/mob/living/carbon/human/calculate_affecting_pressure(pressure) + if(ismob(loc)) + return ONE_ATMOSPHERE + if(istype(loc, /obj/item/device/dogborg/sleeper)) + return ONE_ATMOSPHERE + . = ..() \ No newline at end of file diff --git a/modular_citadel/icons/obj/power.dmi b/modular_citadel/icons/obj/power.dmi new file mode 100644 index 0000000000000000000000000000000000000000..d0066b96de9d090771f9ec0a7338144bbdb839cd GIT binary patch literal 1782 zcmYk52{aqn8po5?J_u6FP^F_vZEeTW7EQ@m$~N}pv2lB(Sht!hgUaw1wPUNS97BzZB*nRm~*_xpYS@0{=c?>+aH1^9bws2QpO z000f2s~$n}$U2-VN9C)npz)PF^acD4?kOuOI`8T|JUmui-EjJheNbo|2n51l^6f&f z`uh52W@fOw(U8J%C=}XEnTxzJnOi>vfd*mi?Ch|C4aCsC-^PaiPu z-?~&5;!+;wL5jxomF_d5WHQVQ}l7O>Qf@hDT)&2xzcdU}@= zTTjckX?1pXmNz?VXBQe4YH4X19UYyJkdPFl_Rhy^jc^+43xcyxoxy3IJEnrQ25go5 zxmjICKZR2n*>16QKiDdb&-c{-V$&HhAuTo16iSEdgI}IOKUrBo4lXORpc3d^-3`uPoKm&cT)@MvLaEs0dt#|}T5Z5EGu_#dEE46T zq;?#JQc_bOZb$W(dq{PC@lDRxWjXZ9|;=S1gB%AZA#BgZ;T@A zM|>g{%(Db@=Jc7x%=a=`L^Vxo%yjwf`rqAF@x<;Hm{uRkY>A4WQ;}aXz^t=uOSP*q zC;jOR0jRfsm#(`h#G4ne#KmFaO0=(oSq2lke$M9NF?R#6Pe-a&^o}QJGEzI#Zm}1A*2h>i5Z`~{O1gJ2A;g1TRlQ12D)xeLs=EiRcIO%NXA=!{GH!ZKA8|dn zxD=P>LjK^A^O(na7xR_1Lng-AQTLu$&^qWA4EgyHtiM1*nlL!}5>^A-!W%HG8l56b zlAHNHNZxTP@_#<<{Dm`z2>RVN0HCh3gPZA!pXH*kpMQsK3EJExSDvh(QF^GGQBDM- z{9s6LQ^zB9A#q@+ciLnyNO7CBB}Dq>d@oy&jBw&_G?&!A$;8;A`(JLPyl;eciI+C8 ze#X9cXCHemY8pyL9Wj#klbanu&(YvF2)62}cDhc4GC4n5c`016qp!bwf!|fLJ1<@4 zpOwQ&a{5Q1;L@V^g&zKT?ub-C;=AwQZhxMuAL3Yv$|dnGoD!yxn8-U3=s?SN!VZk^ zk_VBETI}O{ifPReQf8;$Ss(!W9U=Ca>;U!pNL(-Z_}U5b3nS&NTT4rvZkZ68gHMFe2pzl=58dc%vGVf&K(rQ0XA`OK--vZ)j2oh5<0<{J5J8aZ{5&`=@UQRW@e`kR2+z`57Dq0My zq>NKIlr=y%#1cna56KZAI2GZ)aKTiug=~)Gjx02tKdp(Neuz4d7rI2{s_g|C#*|-` zq4{bd;F#UqK}05|!BID72%4>wG~g=JiN2?u[2]:void 0,l=Math.min((void 0===c?o:r(c,o))-p,o-s),d=1;for(s>p&&p+l>s&&(d=-1,p+=l-1,s+=l-1);l-- >0;)p in n?n[s]=n[p]:delete n[s],s+=d,p+=d;return n}},{76:76,79:79,80:80}],6:[function(t,e,n){"use strict";var a=t(80),r=t(76),i=t(79);e.exports=[].fill||function(t){for(var e=a(this),n=i(e.length),o=arguments,s=o.length,p=r(s>1?o[1]:void 0,n),u=s>2?o[2]:void 0,c=void 0===u?n:r(u,n);c>p;)e[p++]=t;return e}},{76:76,79:79,80:80}],7:[function(t,e,n){var a=t(78),r=t(79),i=t(76);e.exports=function(t){return function(e,n,o){var s,p=a(e),u=r(p.length),c=i(o,u);if(t&&n!=n){for(;u>c;)if(s=p[c++],s!=s)return!0}else for(;u>c;c++)if((t||c in p)&&p[c]===n)return t||c;return!t&&-1}}},{76:76,78:78,79:79}],8:[function(t,e,n){var a=t(17),r=t(34),i=t(80),o=t(79),s=t(9);e.exports=function(t){var e=1==t,n=2==t,p=3==t,u=4==t,c=6==t,l=5==t||c;return function(d,f,h){for(var m,g,v=i(d),b=r(v),y=a(f,h,3),x=o(b.length),_=0,w=e?s(d,x):n?s(d,0):void 0;x>_;_++)if((l||_ in b)&&(m=b[_],g=y(m,_,v),t))if(e)w[_]=g;else if(g)switch(t){case 3:return!0;case 5:return m;case 6:return _;case 2:w.push(m)}else if(u)return!1;return c?-1:p||u?u:w}}},{17:17,34:34,79:79,80:80,9:9}],9:[function(t,e,n){var a=t(38),r=t(36),i=t(83)("species");e.exports=function(t,e){var n;return r(t)&&(n=t.constructor,"function"!=typeof n||n!==Array&&!r(n.prototype)||(n=void 0),a(n)&&(n=n[i],null===n&&(n=void 0))),new(void 0===n?Array:n)(e)}},{36:36,38:38,83:83}],10:[function(t,e,n){var a=t(11),r=t(83)("toStringTag"),i="Arguments"==a(function(){return arguments}());e.exports=function(t){var e,n,o;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=(e=Object(t))[r])?n:i?a(e):"Object"==(o=a(e))&&"function"==typeof e.callee?"Arguments":o}},{11:11,83:83}],11:[function(t,e,n){var a={}.toString;e.exports=function(t){return a.call(t).slice(8,-1)}},{}],12:[function(t,e,n){"use strict";var a=t(46),r=t(31),i=t(60),o=t(17),s=t(69),p=t(18),u=t(27),c=t(42),l=t(44),d=t(82)("id"),f=t(30),h=t(38),m=t(65),g=t(19),v=Object.isExtensible||h,b=g?"_s":"size",y=0,x=function(t,e){if(!h(t))return"symbol"==typeof t?t:("string"==typeof t?"S":"P")+t;if(!f(t,d)){if(!v(t))return"F";if(!e)return"E";r(t,d,++y)}return"O"+t[d]},_=function(t,e){var n,a=x(e);if("F"!==a)return t._i[a];for(n=t._f;n;n=n.n)if(n.k==e)return n};e.exports={getConstructor:function(t,e,n,r){var c=t(function(t,i){s(t,c,e),t._i=a.create(null),t._f=void 0,t._l=void 0,t[b]=0,void 0!=i&&u(i,n,t[r],t)});return i(c.prototype,{clear:function(){for(var t=this,e=t._i,n=t._f;n;n=n.n)n.r=!0,n.p&&(n.p=n.p.n=void 0),delete e[n.i];t._f=t._l=void 0,t[b]=0},"delete":function(t){var e=this,n=_(e,t);if(n){var a=n.n,r=n.p;delete e._i[n.i],n.r=!0,r&&(r.n=a),a&&(a.p=r),e._f==n&&(e._f=a),e._l==n&&(e._l=r),e[b]--}return!!n},forEach:function(t){for(var e,n=o(t,arguments.length>1?arguments[1]:void 0,3);e=e?e.n:this._f;)for(n(e.v,e.k,this);e&&e.r;)e=e.p},has:function(t){return!!_(this,t)}}),g&&a.setDesc(c.prototype,"size",{get:function(){return p(this[b])}}),c},def:function(t,e,n){var a,r,i=_(t,e);return i?i.v=n:(t._l=i={i:r=x(e,!0),k:e,v:n,p:a=t._l,n:void 0,r:!1},t._f||(t._f=i),a&&(a.n=i),t[b]++,"F"!==r&&(t._i[r]=i)),t},getEntry:_,setStrong:function(t,e,n){c(t,e,function(t,e){this._t=t,this._k=e,this._l=void 0},function(){for(var t=this,e=t._k,n=t._l;n&&n.r;)n=n.p;return t._t&&(t._l=n=n?n.n:t._t._f)?"keys"==e?l(0,n.k):"values"==e?l(0,n.v):l(0,[n.k,n.v]):(t._t=void 0,l(1))},n?"entries":"values",!n,!0),m(e)}}},{17:17,18:18,19:19,27:27,30:30,31:31,38:38,42:42,44:44,46:46,60:60,65:65,69:69,82:82}],13:[function(t,e,n){var a=t(27),r=t(10);e.exports=function(t){return function(){if(r(this)!=t)throw TypeError(t+"#toJSON isn't generic");var e=[];return a(this,!1,e.push,e),e}}},{10:10,27:27}],14:[function(t,e,n){"use strict";var a=t(31),r=t(60),i=t(4),o=t(38),s=t(69),p=t(27),u=t(8),c=t(30),l=t(82)("weak"),d=Object.isExtensible||o,f=u(5),h=u(6),m=0,g=function(t){return t._l||(t._l=new v)},v=function(){this.a=[]},b=function(t,e){return f(t.a,function(t){return t[0]===e})};v.prototype={get:function(t){var e=b(this,t);return e?e[1]:void 0},has:function(t){return!!b(this,t)},set:function(t,e){var n=b(this,t);n?n[1]=e:this.a.push([t,e])},"delete":function(t){var e=h(this.a,function(e){return e[0]===t});return~e&&this.a.splice(e,1),!!~e}},e.exports={getConstructor:function(t,e,n,a){var i=t(function(t,r){s(t,i,e),t._i=m++,t._l=void 0,void 0!=r&&p(r,n,t[a],t)});return r(i.prototype,{"delete":function(t){return o(t)?d(t)?c(t,l)&&c(t[l],this._i)&&delete t[l][this._i]:g(this)["delete"](t):!1},has:function(t){return o(t)?d(t)?c(t,l)&&c(t[l],this._i):g(this).has(t):!1}}),i},def:function(t,e,n){return d(i(e))?(c(e,l)||a(e,l,{}),e[l][t._i]=n):g(t).set(e,n),t},frozenStore:g,WEAK:l}},{27:27,30:30,31:31,38:38,4:4,60:60,69:69,8:8,82:82}],15:[function(t,e,n){"use strict";var a=t(29),r=t(22),i=t(61),o=t(60),s=t(27),p=t(69),u=t(38),c=t(24),l=t(43),d=t(66);e.exports=function(t,e,n,f,h,m){var g=a[t],v=g,b=h?"set":"add",y=v&&v.prototype,x={},_=function(t){var e=y[t];i(y,t,"delete"==t?function(t){return m&&!u(t)?!1:e.call(this,0===t?0:t)}:"has"==t?function(t){return m&&!u(t)?!1:e.call(this,0===t?0:t)}:"get"==t?function(t){return m&&!u(t)?void 0:e.call(this,0===t?0:t)}:"add"==t?function(t){return e.call(this,0===t?0:t),this}:function(t,n){return e.call(this,0===t?0:t,n),this})};if("function"==typeof v&&(m||y.forEach&&!c(function(){(new v).entries().next()}))){var w,k=new v,E=k[b](m?{}:-0,1)!=k,S=c(function(){k.has(1)}),C=l(function(t){new v(t)});C||(v=e(function(e,n){p(e,v,t);var a=new g;return void 0!=n&&s(n,h,a[b],a),a}),v.prototype=y,y.constructor=v),m||k.forEach(function(t,e){w=1/e===-(1/0)}),(S||w)&&(_("delete"),_("has"),h&&_("get")),(w||E)&&_(b),m&&y.clear&&delete y.clear}else v=f.getConstructor(e,t,h,b),o(v.prototype,n);return d(v,t),x[t]=v,r(r.G+r.W+r.F*(v!=g),x),m||f.setStrong(v,t,h),v}},{22:22,24:24,27:27,29:29,38:38,43:43,60:60,61:61,66:66,69:69}],16:[function(t,e,n){var a=e.exports={version:"1.2.6"};"number"==typeof __e&&(__e=a)},{}],17:[function(t,e,n){var a=t(2);e.exports=function(t,e,n){if(a(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,a){return t.call(e,n,a)};case 3:return function(n,a,r){return t.call(e,n,a,r)}}return function(){return t.apply(e,arguments)}}},{2:2}],18:[function(t,e,n){e.exports=function(t){if(void 0==t)throw TypeError("Can't call method on "+t);return t}},{}],19:[function(t,e,n){e.exports=!t(24)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},{24:24}],20:[function(t,e,n){var a=t(38),r=t(29).document,i=a(r)&&a(r.createElement);e.exports=function(t){return i?r.createElement(t):{}}},{29:29,38:38}],21:[function(t,e,n){var a=t(46);e.exports=function(t){var e=a.getKeys(t),n=a.getSymbols;if(n)for(var r,i=n(t),o=a.isEnum,s=0;i.length>s;)o.call(t,r=i[s++])&&e.push(r);return e}},{46:46}],22:[function(t,e,n){var a=t(29),r=t(16),i=t(31),o=t(61),s=t(17),p="prototype",u=function(t,e,n){var c,l,d,f,h=t&u.F,m=t&u.G,g=t&u.S,v=t&u.P,b=t&u.B,y=m?a:g?a[e]||(a[e]={}):(a[e]||{})[p],x=m?r:r[e]||(r[e]={}),_=x[p]||(x[p]={});m&&(n=e);for(c in n)l=!h&&y&&c in y,d=(l?y:n)[c],f=b&&l?s(d,a):v&&"function"==typeof d?s(Function.call,d):d,y&&!l&&o(y,c,d),x[c]!=d&&i(x,c,f),v&&_[c]!=d&&(_[c]=d)};a.core=r,u.F=1,u.G=2,u.S=4,u.P=8,u.B=16,u.W=32,e.exports=u},{16:16,17:17,29:29,31:31,61:61}],23:[function(t,e,n){var a=t(83)("match");e.exports=function(t){var e=/./;try{"/./"[t](e)}catch(n){try{return e[a]=!1,!"/./"[t](e)}catch(r){}}return!0}},{83:83}],24:[function(t,e,n){e.exports=function(t){try{return!!t()}catch(e){return!0}}},{}],25:[function(t,e,n){"use strict";var a=t(31),r=t(61),i=t(24),o=t(18),s=t(83);e.exports=function(t,e,n){var p=s(t),u=""[t];i(function(){var e={};return e[p]=function(){return 7},7!=""[t](e)})&&(r(String.prototype,t,n(o,p,u)),a(RegExp.prototype,p,2==e?function(t,e){return u.call(t,this,e)}:function(t){return u.call(t,this)}))}},{18:18,24:24,31:31,61:61,83:83}],26:[function(t,e,n){"use strict";var a=t(4);e.exports=function(){var t=a(this),e="";return t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.unicode&&(e+="u"),t.sticky&&(e+="y"),e}},{4:4}],27:[function(t,e,n){var a=t(17),r=t(40),i=t(35),o=t(4),s=t(79),p=t(84);e.exports=function(t,e,n,u){var c,l,d,f=p(t),h=a(n,u,e?2:1),m=0;if("function"!=typeof f)throw TypeError(t+" is not iterable!");if(i(f))for(c=s(t.length);c>m;m++)e?h(o(l=t[m])[0],l[1]):h(t[m]);else for(d=f.call(t);!(l=d.next()).done;)r(d,h,l.value,e)}},{17:17,35:35,4:4,40:40,79:79,84:84}],28:[function(t,e,n){var a=t(78),r=t(46).getNames,i={}.toString,o="object"==typeof window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],s=function(t){try{return r(t)}catch(e){return o.slice()}};e.exports.get=function(t){return o&&"[object Window]"==i.call(t)?s(t):r(a(t))}},{46:46,78:78}],29:[function(t,e,n){var a=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=a)},{}],30:[function(t,e,n){var a={}.hasOwnProperty;e.exports=function(t,e){return a.call(t,e)}},{}],31:[function(t,e,n){var a=t(46),r=t(59);e.exports=t(19)?function(t,e,n){return a.setDesc(t,e,r(1,n))}:function(t,e,n){return t[e]=n,t}},{19:19,46:46,59:59}],32:[function(t,e,n){e.exports=t(29).document&&document.documentElement},{29:29}],33:[function(t,e,n){e.exports=function(t,e,n){var a=void 0===n;switch(e.length){case 0:return a?t():t.call(n);case 1:return a?t(e[0]):t.call(n,e[0]);case 2:return a?t(e[0],e[1]):t.call(n,e[0],e[1]);case 3:return a?t(e[0],e[1],e[2]):t.call(n,e[0],e[1],e[2]);case 4:return a?t(e[0],e[1],e[2],e[3]):t.call(n,e[0],e[1],e[2],e[3])}return t.apply(n,e)}},{}],34:[function(t,e,n){var a=t(11);e.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==a(t)?t.split(""):Object(t)}},{11:11}],35:[function(t,e,n){var a=t(45),r=t(83)("iterator"),i=Array.prototype;e.exports=function(t){return void 0!==t&&(a.Array===t||i[r]===t)}},{45:45,83:83}],36:[function(t,e,n){var a=t(11);e.exports=Array.isArray||function(t){return"Array"==a(t)}},{11:11}],37:[function(t,e,n){var a=t(38),r=Math.floor;e.exports=function(t){return!a(t)&&isFinite(t)&&r(t)===t}},{38:38}],38:[function(t,e,n){e.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},{}],39:[function(t,e,n){var a=t(38),r=t(11),i=t(83)("match");e.exports=function(t){var e;return a(t)&&(void 0!==(e=t[i])?!!e:"RegExp"==r(t))}},{11:11,38:38,83:83}],40:[function(t,e,n){var a=t(4);e.exports=function(t,e,n,r){try{return r?e(a(n)[0],n[1]):e(n)}catch(i){var o=t["return"];throw void 0!==o&&a(o.call(t)),i}}},{4:4}],41:[function(t,e,n){"use strict";var a=t(46),r=t(59),i=t(66),o={};t(31)(o,t(83)("iterator"),function(){return this}),e.exports=function(t,e,n){t.prototype=a.create(o,{next:r(1,n)}),i(t,e+" Iterator")}},{31:31,46:46,59:59,66:66,83:83}],42:[function(t,e,n){"use strict";var a=t(48),r=t(22),i=t(61),o=t(31),s=t(30),p=t(45),u=t(41),c=t(66),l=t(46).getProto,d=t(83)("iterator"),f=!([].keys&&"next"in[].keys()),h="@@iterator",m="keys",g="values",v=function(){return this};e.exports=function(t,e,n,b,y,x,_){u(n,e,b);var w,k,E=function(t){if(!f&&t in A)return A[t];switch(t){case m:return function(){return new n(this,t)};case g:return function(){return new n(this,t)}}return function(){return new n(this,t)}},S=e+" Iterator",C=y==g,P=!1,A=t.prototype,O=A[d]||A[h]||y&&A[y],T=O||E(y);if(O){var R=l(T.call(new t));c(R,S,!0),!a&&s(A,h)&&o(R,d,v),C&&O.name!==g&&(P=!0,T=function(){return O.call(this)})}if(a&&!_||!f&&!P&&A[d]||o(A,d,T),p[e]=T,p[S]=v,y)if(w={values:C?T:E(g),keys:x?T:E(m),entries:C?E("entries"):T},_)for(k in w)k in A||i(A,k,w[k]);else r(r.P+r.F*(f||P),e,w);return w}},{22:22,30:30,31:31,41:41,45:45,46:46,48:48,61:61,66:66,83:83}],43:[function(t,e,n){var a=t(83)("iterator"),r=!1;try{var i=[7][a]();i["return"]=function(){r=!0},Array.from(i,function(){throw 2})}catch(o){}e.exports=function(t,e){if(!e&&!r)return!1;var n=!1;try{var i=[7],o=i[a]();o.next=function(){return{done:n=!0}},i[a]=function(){return o},t(i)}catch(s){}return n}},{83:83}],44:[function(t,e,n){e.exports=function(t,e){return{value:e,done:!!t}}},{}],45:[function(t,e,n){e.exports={}},{}],46:[function(t,e,n){var a=Object;e.exports={create:a.create,getProto:a.getPrototypeOf,isEnum:{}.propertyIsEnumerable,getDesc:a.getOwnPropertyDescriptor,setDesc:a.defineProperty,setDescs:a.defineProperties,getKeys:a.keys,getNames:a.getOwnPropertyNames,getSymbols:a.getOwnPropertySymbols,each:[].forEach}},{}],47:[function(t,e,n){var a=t(46),r=t(78);e.exports=function(t,e){for(var n,i=r(t),o=a.getKeys(i),s=o.length,p=0;s>p;)if(i[n=o[p++]]===e)return n}},{46:46,78:78}],48:[function(t,e,n){e.exports=!1},{}],49:[function(t,e,n){e.exports=Math.expm1||function(t){return 0==(t=+t)?t:t>-1e-6&&1e-6>t?t+t*t/2:Math.exp(t)-1}},{}],50:[function(t,e,n){e.exports=Math.log1p||function(t){return(t=+t)>-1e-8&&1e-8>t?t-t*t/2:Math.log(1+t)}},{}],51:[function(t,e,n){e.exports=Math.sign||function(t){return 0==(t=+t)||t!=t?t:0>t?-1:1}},{}],52:[function(t,e,n){var a,r,i,o=t(29),s=t(75).set,p=o.MutationObserver||o.WebKitMutationObserver,u=o.process,c=o.Promise,l="process"==t(11)(u),d=function(){var t,e,n;for(l&&(t=u.domain)&&(u.domain=null,t.exit());a;)e=a.domain,n=a.fn,e&&e.enter(),n(),e&&e.exit(),a=a.next;r=void 0,t&&t.enter()};if(l)i=function(){u.nextTick(d)};else if(p){var f=1,h=document.createTextNode("");new p(d).observe(h,{characterData:!0}),i=function(){h.data=f=-f}}else i=c&&c.resolve?function(){c.resolve().then(d)}:function(){s.call(o,d)};e.exports=function(t){var e={fn:t,next:void 0,domain:l&&u.domain};r&&(r.next=e),a||(a=e,i()),r=e}},{11:11,29:29,75:75}],53:[function(t,e,n){var a=t(46),r=t(80),i=t(34);e.exports=t(24)(function(){var t=Object.assign,e={},n={},a=Symbol(),r="abcdefghijklmnopqrst";return e[a]=7,r.split("").forEach(function(t){n[t]=t}),7!=t({},e)[a]||Object.keys(t({},n)).join("")!=r})?function(t,e){for(var n=r(t),o=arguments,s=o.length,p=1,u=a.getKeys,c=a.getSymbols,l=a.isEnum;s>p;)for(var d,f=i(o[p++]),h=c?u(f).concat(c(f)):u(f),m=h.length,g=0;m>g;)l.call(f,d=h[g++])&&(n[d]=f[d]);return n}:Object.assign},{24:24,34:34,46:46,80:80}],54:[function(t,e,n){var a=t(22),r=t(16),i=t(24);e.exports=function(t,e){var n=(r.Object||{})[t]||Object[t],o={};o[t]=e(n),a(a.S+a.F*i(function(){n(1)}),"Object",o)}},{16:16,22:22,24:24}],55:[function(t,e,n){var a=t(46),r=t(78),i=a.isEnum;e.exports=function(t){return function(e){for(var n,o=r(e),s=a.getKeys(o),p=s.length,u=0,c=[];p>u;)i.call(o,n=s[u++])&&c.push(t?[n,o[n]]:o[n]);return c}}},{46:46,78:78}],56:[function(t,e,n){var a=t(46),r=t(4),i=t(29).Reflect;e.exports=i&&i.ownKeys||function(t){var e=a.getNames(r(t)),n=a.getSymbols;return n?e.concat(n(t)):e}},{29:29,4:4,46:46}],57:[function(t,e,n){"use strict";var a=t(58),r=t(33),i=t(2);e.exports=function(){for(var t=i(this),e=arguments.length,n=Array(e),o=0,s=a._,p=!1;e>o;)(n[o]=arguments[o++])===s&&(p=!0);return function(){var a,i=this,o=arguments,u=o.length,c=0,l=0;if(!p&&!u)return r(t,n,i);if(a=n.slice(),p)for(;e>c;c++)a[c]===s&&(a[c]=o[l++]);for(;u>l;)a.push(o[l++]);return r(t,a,i)}}},{2:2,33:33,58:58}],58:[function(t,e,n){e.exports=t(29)},{29:29}],59:[function(t,e,n){e.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},{}],60:[function(t,e,n){var a=t(61);e.exports=function(t,e){for(var n in e)a(t,n,e[n]);return t}},{61:61}],61:[function(t,e,n){var a=t(29),r=t(31),i=t(82)("src"),o="toString",s=Function[o],p=(""+s).split(o);t(16).inspectSource=function(t){return s.call(t)},(e.exports=function(t,e,n,o){"function"==typeof n&&(n.hasOwnProperty(i)||r(n,i,t[e]?""+t[e]:p.join(e+"")),n.hasOwnProperty("name")||r(n,"name",e)),t===a?t[e]=n:(o||delete t[e],r(t,e,n))})(Function.prototype,o,function(){return"function"==typeof this&&this[i]||s.call(this)})},{16:16,29:29,31:31,82:82}],62:[function(t,e,n){e.exports=function(t,e){var n=e===Object(e)?function(t){return e[t]}:e;return function(e){return(e+"").replace(t,n)}}},{}],63:[function(t,e,n){e.exports=Object.is||function(t,e){return t===e?0!==t||1/t===1/e:t!=t&&e!=e}},{}],64:[function(t,e,n){var a=t(46).getDesc,r=t(38),i=t(4),o=function(t,e){if(i(t),!r(e)&&null!==e)throw TypeError(e+": can't set as prototype!")};e.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(e,n,r){try{r=t(17)(Function.call,a(Object.prototype,"__proto__").set,2),r(e,[]),n=!(e instanceof Array)}catch(i){n=!0}return function(t,e){return o(t,e),n?t.__proto__=e:r(t,e),t}}({},!1):void 0),check:o}},{17:17,38:38,4:4,46:46}],65:[function(t,e,n){"use strict";var a=t(29),r=t(46),i=t(19),o=t(83)("species");e.exports=function(t){var e=a[t];i&&e&&!e[o]&&r.setDesc(e,o,{configurable:!0,get:function(){return this}})}},{19:19,29:29,46:46,83:83}],66:[function(t,e,n){var a=t(46).setDesc,r=t(30),i=t(83)("toStringTag");e.exports=function(t,e,n){t&&!r(t=n?t:t.prototype,i)&&a(t,i,{configurable:!0,value:e})}},{30:30,46:46,83:83}],67:[function(t,e,n){var a=t(29),r="__core-js_shared__",i=a[r]||(a[r]={});e.exports=function(t){return i[t]||(i[t]={})}},{29:29}],68:[function(t,e,n){var a=t(4),r=t(2),i=t(83)("species");e.exports=function(t,e){var n,o=a(t).constructor;return void 0===o||void 0==(n=a(o)[i])?e:r(n)}},{2:2,4:4,83:83}],69:[function(t,e,n){e.exports=function(t,e,n){if(!(t instanceof e))throw TypeError(n+": use the 'new' operator!");return t}},{}],70:[function(t,e,n){var a=t(77),r=t(18);e.exports=function(t){return function(e,n){var i,o,s=r(e)+"",p=a(n),u=s.length;return 0>p||p>=u?t?"":void 0:(i=s.charCodeAt(p),55296>i||i>56319||p+1===u||(o=s.charCodeAt(p+1))<56320||o>57343?t?s.charAt(p):i:t?s.slice(p,p+2):(i-55296<<10)+(o-56320)+65536)}}},{18:18,77:77}],71:[function(t,e,n){var a=t(39),r=t(18);e.exports=function(t,e,n){if(a(e))throw TypeError("String#"+n+" doesn't accept regex!");return r(t)+""}},{18:18,39:39}],72:[function(t,e,n){var a=t(79),r=t(73),i=t(18);e.exports=function(t,e,n,o){var s=i(t)+"",p=s.length,u=void 0===n?" ":n+"",c=a(e);if(p>=c)return s;""==u&&(u=" ");var l=c-p,d=r.call(u,Math.ceil(l/u.length));return d.length>l&&(d=d.slice(0,l)),o?d+s:s+d}},{18:18,73:73,79:79}],73:[function(t,e,n){"use strict";var a=t(77),r=t(18);e.exports=function(t){var e=r(this)+"",n="",i=a(t);if(0>i||i==1/0)throw RangeError("Count can't be negative");for(;i>0;(i>>>=1)&&(e+=e))1&i&&(n+=e);return n}},{18:18,77:77}],74:[function(t,e,n){var a=t(22),r=t(18),i=t(24),o=" \n\x0B\f\r   ᠎              \u2028\u2029\ufeff",s="["+o+"]",p="​…",u=RegExp("^"+s+s+"*"),c=RegExp(s+s+"*$"),l=function(t,e){var n={};n[t]=e(d),a(a.P+a.F*i(function(){return!!o[t]()||p[t]()!=p}),"String",n)},d=l.trim=function(t,e){return t=r(t)+"",1&e&&(t=t.replace(u,"")),2&e&&(t=t.replace(c,"")),t};e.exports=l},{18:18,22:22,24:24}],75:[function(t,e,n){var a,r,i,o=t(17),s=t(33),p=t(32),u=t(20),c=t(29),l=c.process,d=c.setImmediate,f=c.clearImmediate,h=c.MessageChannel,m=0,g={},v="onreadystatechange",b=function(){var t=+this;if(g.hasOwnProperty(t)){var e=g[t];delete g[t],e()}},y=function(t){b.call(t.data)};d&&f||(d=function(t){for(var e=[],n=1;arguments.length>n;)e.push(arguments[n++]);return g[++m]=function(){s("function"==typeof t?t:Function(t),e)},a(m),m},f=function(t){delete g[t]},"process"==t(11)(l)?a=function(t){l.nextTick(o(b,t,1))}:h?(r=new h,i=r.port2,r.port1.onmessage=y,a=o(i.postMessage,i,1)):c.addEventListener&&"function"==typeof postMessage&&!c.importScripts?(a=function(t){c.postMessage(t+"","*")},c.addEventListener("message",y,!1)):a=v in u("script")?function(t){p.appendChild(u("script"))[v]=function(){p.removeChild(this),b.call(t)}}:function(t){setTimeout(o(b,t,1),0)}),e.exports={set:d,clear:f}},{11:11,17:17,20:20,29:29,32:32,33:33}],76:[function(t,e,n){var a=t(77),r=Math.max,i=Math.min;e.exports=function(t,e){return t=a(t),0>t?r(t+e,0):i(t,e)}},{77:77}],77:[function(t,e,n){var a=Math.ceil,r=Math.floor;e.exports=function(t){return isNaN(t=+t)?0:(t>0?r:a)(t)}},{}],78:[function(t,e,n){var a=t(34),r=t(18);e.exports=function(t){return a(r(t))}},{18:18,34:34}],79:[function(t,e,n){var a=t(77),r=Math.min;e.exports=function(t){return t>0?r(a(t),9007199254740991):0}},{77:77}],80:[function(t,e,n){var a=t(18);e.exports=function(t){return Object(a(t))}},{18:18}],81:[function(t,e,n){var a=t(38);e.exports=function(t,e){if(!a(t))return t;var n,r;if(e&&"function"==typeof(n=t.toString)&&!a(r=n.call(t)))return r;if("function"==typeof(n=t.valueOf)&&!a(r=n.call(t)))return r;if(!e&&"function"==typeof(n=t.toString)&&!a(r=n.call(t)))return r;throw TypeError("Can't convert object to primitive value")}},{38:38}],82:[function(t,e,n){var a=0,r=Math.random();e.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++a+r).toString(36))}},{}],83:[function(t,e,n){var a=t(67)("wks"),r=t(82),i=t(29).Symbol;e.exports=function(t){return a[t]||(a[t]=i&&i[t]||(i||r)("Symbol."+t))}},{29:29,67:67,82:82}],84:[function(t,e,n){var a=t(10),r=t(83)("iterator"),i=t(45);e.exports=t(16).getIteratorMethod=function(t){return void 0!=t?t[r]||t["@@iterator"]||i[a(t)]:void 0}},{10:10,16:16,45:45,83:83}],85:[function(t,e,n){"use strict";var a,r=t(46),i=t(22),o=t(19),s=t(59),p=t(32),u=t(20),c=t(30),l=t(11),d=t(33),f=t(24),h=t(4),m=t(2),g=t(38),v=t(80),b=t(78),y=t(77),x=t(76),_=t(79),w=t(34),k=t(82)("__proto__"),E=t(8),S=t(7)(!1),C=Object.prototype,P=Array.prototype,A=P.slice,O=P.join,T=r.setDesc,R=r.getDesc,L=r.setDescs,j={};o||(a=!f(function(){return 7!=T(u("div"),"a",{get:function(){return 7}}).a}),r.setDesc=function(t,e,n){if(a)try{return T(t,e,n)}catch(r){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(h(t)[e]=n.value),t},r.getDesc=function(t,e){if(a)try{return R(t,e)}catch(n){}return c(t,e)?s(!C.propertyIsEnumerable.call(t,e),t[e]):void 0},r.setDescs=L=function(t,e){h(t);for(var n,a=r.getKeys(e),i=a.length,o=0;i>o;)r.setDesc(t,n=a[o++],e[n]);return t}),i(i.S+i.F*!o,"Object",{getOwnPropertyDescriptor:r.getDesc,defineProperty:r.setDesc,defineProperties:L});var M="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(","),D=M.concat("length","prototype"),N=M.length,F=function(){var t,e=u("iframe"),n=N,a=">";for(e.style.display="none",p.appendChild(e),e.src="javascript:",t=e.contentWindow.document,t.open(),t.write("