From 4ef4ed7bfc17ffd60fadc9fae76699f75231337d Mon Sep 17 00:00:00 2001 From: "tgstation-ci[bot]" <179393467+tgstation-ci[bot]@users.noreply.github.com> Date: Tue, 10 Sep 2024 01:09:05 +0000 Subject: [PATCH 001/350] Automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-86117.yml | 4 ---- html/changelogs/AutoChangeLog-pr-86351.yml | 4 ---- html/changelogs/AutoChangeLog-pr-86494.yml | 4 ---- html/changelogs/AutoChangeLog-pr-86568.yml | 4 ---- html/changelogs/archive/2024-09.yml | 12 ++++++++++++ 5 files changed, 12 insertions(+), 16 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-86117.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-86351.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-86494.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-86568.yml diff --git a/html/changelogs/AutoChangeLog-pr-86117.yml b/html/changelogs/AutoChangeLog-pr-86117.yml deleted file mode 100644 index 67d1fa86818eb..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-86117.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - bugfix: "beams now take into account the pixel offsets of both origin and target more accurately.." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-86351.yml b/html/changelogs/AutoChangeLog-pr-86351.yml deleted file mode 100644 index 09debea0e55a2..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-86351.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "lbnesquik" -delete-after: True -changes: - - rscadd: "Add a capacity upgrade for janitorial cyborg light replacers" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-86494.yml b/html/changelogs/AutoChangeLog-pr-86494.yml deleted file mode 100644 index 67bef920b9281..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-86494.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Rhials" -delete-after: True -changes: - - bugfix: "Modifies the mapping around the icebox cliffside, guaranteeing a bit more openness." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-86568.yml b/html/changelogs/AutoChangeLog-pr-86568.yml deleted file mode 100644 index e72dc3cc6ffd5..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-86568.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "SmArtKar" -delete-after: True -changes: - - code_imp: "Fixed multiple minor logic issues with code found by OpenDream's new pragma" \ No newline at end of file diff --git a/html/changelogs/archive/2024-09.yml b/html/changelogs/archive/2024-09.yml index 34998e0e1c1ab..51c71ef9423ff 100644 --- a/html/changelogs/archive/2024-09.yml +++ b/html/changelogs/archive/2024-09.yml @@ -238,3 +238,15 @@ properly when swapping character slots - bugfix: fixed a race condition that was causing carpotoxin to cause liver damage to felinids despite being immune +2024-09-10: + Ghommie: + - bugfix: beams now take into account the pixel offsets of both origin and target + more accurately.. + Rhials: + - bugfix: Modifies the mapping around the icebox cliffside, guaranteeing a bit more + openness. + SmArtKar: + - code_imp: Fixed multiple minor logic issues with code found by OpenDream's new + pragma + lbnesquik: + - rscadd: Add a capacity upgrade for janitorial cyborg light replacers From 619e0e2845f492d257bf29578b55c8667a567cbc Mon Sep 17 00:00:00 2001 From: Da Cool Boss <142358580+DaCoolBoss@users.noreply.github.com> Date: Tue, 10 Sep 2024 07:25:07 +0100 Subject: [PATCH 002/350] Sorts iceruinblacklist.txt and adds missing entries (#86555) ## About The Pull Request Adds all ice ruin maps to the config file iceruinblacklist.txt Alphabetises that file. ## Why It's Good For The Game File is disorderly and missing entries. Some ruins can't be blacklisted by server runners as a result. ## Changelog :cl: fix: Added missing entries to server config file iceruinblacklist.txt /:cl: --- config/iceruinblacklist.txt | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/config/iceruinblacklist.txt b/config/iceruinblacklist.txt index 420a9d79a28fc..8923e01652594 100644 --- a/config/iceruinblacklist.txt +++ b/config/iceruinblacklist.txt @@ -5,28 +5,32 @@ ##RESPAWN #_maps/RandomRuins/AnywhereRuins/golem_ship.dmm +#_maps/RandomRuins/IceRuins/icemoon_underground_comms_agent.dmm +#_maps/RandomRuins/IceRuins/icemoon_underground_hermit.dmm ##MEGAFAUNA #_maps/RandomRuins/IceRuins/icemoon_surface_mining_site.dmm #_maps/RandomRuins/IceRuins/icemoon_underground_mining_site.dmm -#_maps/RandomRuins/IceRuins/icemoon_underground_wendigo_cave.dmm #_maps/RandomRuins/IceRuins/icemoon_underground_lavaland.dmm +#_maps/RandomRuins/IceRuins/icemoon_underground_wendigo_cave.dmm ##MISC -#_maps/RandomRuins/IceRuins/icemoon_surface_gas.dmm -#_maps/RandomRuins/IceRuins/icemoon_surface_lust.dmm +#_maps/RandomRuins/AnywhereRuins/fountain_hall.dmm #_maps/RandomRuins/IceRuins/icemoon_surface_asteroid.dmm +#_maps/RandomRuins/IceRuins/icemoon_surface_bughabitat.dmm #_maps/RandomRuins/IceRuins/icemoon_surface_engioutpost.dmm +#_maps/RandomRuins/IceRuins/icemoon_surface_gas.dmm +#_maps/RandomRuins/IceRuins/icemoon_surface_lust.dmm #_maps/RandomRuins/IceRuins/icemoon_surface_phonebooth.dmm #_maps/RandomRuins/IceRuins/icemoon_surface_pizza.dmm #_maps/RandomRuins/IceRuins/icemoon_surface_smoking_room.dmm -#_maps/RandomRuins/IceRuins/icemoon_underground_puzzle.dmm -#_maps/RandomRuins/IceRuins/icemoon_underground_abandoned_village.dmm -#_maps/RandomRuins/IceRuins/icemoon_underground_library.dmm -#_maps/RandomRuins/IceRuins/icemoon_underground_wrath.dmm -#_maps/RandomRuins/IceRuins/icemoon_underground_bathhouse.dmm -#_maps/RandomRuins/AnywhereRuins/fountain_hall.dmm -#_maps/RandomRuins/IceRuins/icemoon_underground_hotsprings.dmm #_maps/RandomRuins/IceRuins/icemoon_underground_abandoned_homestead.dmm #_maps/RandomRuins/IceRuins/icemoon_underground_abandoned_plasma_facility.dmm +#_maps/RandomRuins/IceRuins/icemoon_underground_abandoned_village.dmm +#_maps/RandomRuins/IceRuins/icemoon_underground_bathhouse.dmm #_maps/RandomRuins/IceRuins/icemoon_underground_frozen_comms.dmm +#_maps/RandomRuins/IceRuins/icemoon_underground_hotsprings.dmm +#_maps/RandomRuins/IceRuins/icemoon_underground_library.dmm +#_maps/RandomRuins/IceRuins/icemoon_underground_mailroom.dmm +#_maps/RandomRuins/IceRuins/icemoon_underground_puzzle.dmm +#_maps/RandomRuins/IceRuins/icemoon_underground_wrath.dmm From 3f5c2dc1c6eaae1810a03c2c566d56802e54bb37 Mon Sep 17 00:00:00 2001 From: "tgstation-ci[bot]" <179393467+tgstation-ci[bot]@users.noreply.github.com> Date: Tue, 10 Sep 2024 06:25:28 +0000 Subject: [PATCH 003/350] Automatic changelog for PR #86555 [ci skip] --- html/changelogs/AutoChangeLog-pr-86555.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-86555.yml diff --git a/html/changelogs/AutoChangeLog-pr-86555.yml b/html/changelogs/AutoChangeLog-pr-86555.yml new file mode 100644 index 0000000000000..510759d0b4374 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-86555.yml @@ -0,0 +1,4 @@ +author: "DaCoolBoss" +delete-after: True +changes: + - bugfix: "Added missing entries to server config file iceruinblacklist.txt" \ No newline at end of file From 00ffa2b0ddc2d47f6649624de060fde94a97bd25 Mon Sep 17 00:00:00 2001 From: SmArtKar <44720187+SmArtKar@users.noreply.github.com> Date: Tue, 10 Sep 2024 09:25:46 +0300 Subject: [PATCH 004/350] Fixes missing felinid ear preference (#86553) ## About The Pull Request Closes #86452 ## Changelog :cl: fix: Fixed missing felinid ear preference /:cl: --- .../mob/living/carbon/human/_species.dm | 35 +++++++++---------- 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/code/modules/mob/living/carbon/human/_species.dm b/code/modules/mob/living/carbon/human/_species.dm index c2ed9b27866ec..22022c0382e6d 100644 --- a/code/modules/mob/living/carbon/human/_species.dm +++ b/code/modules/mob/living/carbon/human/_species.dm @@ -1406,10 +1406,9 @@ GLOBAL_LIST_EMPTY(features_by_species) for (var/preference_type in GLOB.preference_entries) var/datum/preference/preference = GLOB.preference_entries[preference_type] - if ( \ (preference.relevant_inherent_trait in inherent_traits) \ - || (preference.relevant_external_organ in mutant_organs) \ + || (preference.relevant_external_organ in get_mut_organs()) \ || (preference.relevant_head_flag && check_head_flags(preference.relevant_head_flag)) \ || (preference.relevant_body_markings in body_markings) \ ) @@ -1457,23 +1456,23 @@ GLOBAL_LIST_EMPTY(features_by_species) /datum/species/proc/get_sneeze_sound(mob/living/carbon/human/human) return +/datum/species/proc/get_mut_organs(include_brain = TRUE) + var/list/mut_organs = list() + mut_organs += mutant_organs + if (include_brain) + mut_organs += mutantbrain + mut_organs += mutantheart + mut_organs += mutantlungs + mut_organs += mutanteyes + mut_organs += mutantears + mut_organs += mutanttongue + mut_organs += mutantliver + mut_organs += mutantstomach + mut_organs += mutantappendix + return mut_organs + /datum/species/proc/get_types_to_preload() - var/list/to_store = list() - to_store += mutant_organs - for(var/obj/item/organ/horny as anything in mutant_organs) - to_store += horny //Haha get it? - - //Don't preload brains, cause reuse becomes a horrible headache - to_store += mutantheart - to_store += mutantlungs - to_store += mutanteyes - to_store += mutantears - to_store += mutanttongue - to_store += mutantliver - to_store += mutantstomach - to_store += mutantappendix - //We don't cache mutant hands because it's not constrained enough, too high a potential for failure - return to_store + return get_mut_organs(FALSE) /** From 00ba8bb8cfe846420894519b08bbd423df06a348 Mon Sep 17 00:00:00 2001 From: "tgstation-ci[bot]" <179393467+tgstation-ci[bot]@users.noreply.github.com> Date: Tue, 10 Sep 2024 06:26:07 +0000 Subject: [PATCH 005/350] Automatic changelog for PR #86553 [ci skip] --- html/changelogs/AutoChangeLog-pr-86553.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-86553.yml diff --git a/html/changelogs/AutoChangeLog-pr-86553.yml b/html/changelogs/AutoChangeLog-pr-86553.yml new file mode 100644 index 0000000000000..0ef5acf9ac044 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-86553.yml @@ -0,0 +1,4 @@ +author: "SmArtKar" +delete-after: True +changes: + - bugfix: "Fixed missing felinid ear preference" \ No newline at end of file From bb0ceb796b7f9fab2376ce03e56e0262556bd8da Mon Sep 17 00:00:00 2001 From: SmArtKar <44720187+SmArtKar@users.noreply.github.com> Date: Tue, 10 Sep 2024 09:30:07 +0300 Subject: [PATCH 006/350] You no longer return to the station cuffed after being sacrificed by a heretic (#86554) ## About The Pull Request Closes #86083 ## Why It's Good For The Game Being teleported to a random place, often without an ID as heretics frequently loot their victims first, almost guarantees a death with some of the new organs unless someone can notice and quickly save you, and due to heavy slurring you cannot broadcast your position either. ## Changelog :cl: fix: You no longer return to the station cuffed after being sacrificed by a heretic /:cl: --- .../heretic/knowledge/sacrifice_knowledge/sacrifice_knowledge.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_knowledge.dm b/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_knowledge.dm index 4b3525c93b044..5919f9a40d12a 100644 --- a/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_knowledge.dm +++ b/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_knowledge.dm @@ -501,6 +501,7 @@ sac_target.remove_status_effect(/datum/status_effect/necropolis_curse) sac_target.remove_status_effect(/datum/status_effect/unholy_determination) sac_target.reagents?.del_reagent(/datum/reagent/inverse/helgrasp/heretic) + sac_target.uncuff() sac_target.clear_mood_event("shadow_realm") if(IS_HERETIC(sac_target)) var/datum/antagonist/heretic/victim_heretic = sac_target.mind?.has_antag_datum(/datum/antagonist/heretic) From e1599111c916342d14feb79b7c937a582b211000 Mon Sep 17 00:00:00 2001 From: "tgstation-ci[bot]" <179393467+tgstation-ci[bot]@users.noreply.github.com> Date: Tue, 10 Sep 2024 06:30:47 +0000 Subject: [PATCH 007/350] Automatic changelog for PR #86554 [ci skip] --- html/changelogs/AutoChangeLog-pr-86554.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-86554.yml diff --git a/html/changelogs/AutoChangeLog-pr-86554.yml b/html/changelogs/AutoChangeLog-pr-86554.yml new file mode 100644 index 0000000000000..247f392dca49f --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-86554.yml @@ -0,0 +1,4 @@ +author: "SmArtKar" +delete-after: True +changes: + - bugfix: "You no longer return to the station cuffed after being sacrificed by a heretic" \ No newline at end of file From 8f12b8fa1a2bfd2ef4a6049ceec0c37bbee36590 Mon Sep 17 00:00:00 2001 From: r3dj4ck0424 <51569477+r3dj4ck0424@users.noreply.github.com> Date: Tue, 10 Sep 2024 18:39:44 +1200 Subject: [PATCH 008/350] Adds a node allowing syndicate battlecruisers to lock on to Birdshot Station's Z-Level (#85982) ## About The Pull Request Adds an obj/docking_port/stationary/syndicate/northeast to Birdshot Station, enabling syndicate cruisers to show up at the station (Location shown below) ![Birdshot Syndicate Shuttle Dock](https://github.com/user-attachments/assets/c9127889-3da4-472c-9f74-21743034f026) ## Why It's Good For The Game Closes #85938 ## Changelog :cl: fix: The Syndicate have cleared up the static preventing them from sending their battlecruisers to Birdshot Station. Watch out, crew! /:cl: --- _maps/map_files/Birdshot/birdshot.dmm | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/_maps/map_files/Birdshot/birdshot.dmm b/_maps/map_files/Birdshot/birdshot.dmm index 09040a5d9031f..1a7b967014af9 100644 --- a/_maps/map_files/Birdshot/birdshot.dmm +++ b/_maps/map_files/Birdshot/birdshot.dmm @@ -36584,6 +36584,10 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos) +"mzv" = ( +/obj/docking_port/stationary/syndicate/northeast, +/turf/open/space/basic, +/area/space) "mzx" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -118682,7 +118686,7 @@ dDB dDB dDB dDB -dDB +mzv dDB dDB dDB From 90ff4dbd899791c92cbd382878727e20f56e53b8 Mon Sep 17 00:00:00 2001 From: "tgstation-ci[bot]" <179393467+tgstation-ci[bot]@users.noreply.github.com> Date: Tue, 10 Sep 2024 06:40:26 +0000 Subject: [PATCH 009/350] Automatic changelog for PR #85982 [ci skip] --- html/changelogs/AutoChangeLog-pr-85982.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-85982.yml diff --git a/html/changelogs/AutoChangeLog-pr-85982.yml b/html/changelogs/AutoChangeLog-pr-85982.yml new file mode 100644 index 0000000000000..b3c4a2196fb7b --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-85982.yml @@ -0,0 +1,4 @@ +author: "r3dj4ck0424" +delete-after: True +changes: + - bugfix: "The Syndicate have cleared up the static preventing them from sending their battlecruisers to Birdshot Station. Watch out, crew!" \ No newline at end of file From 79bf446a74319e06f3526af88ba6a82275ad6931 Mon Sep 17 00:00:00 2001 From: san7890 Date: Tue, 10 Sep 2024 06:29:37 -0600 Subject: [PATCH 010/350] Fixes Failing CI - Icemoon Unmanaged Genturf (#86589) ## About The Pull Request Every CI run for the last 15 hours has been breaking because this little bugger was hiding behind a tree: ![image](https://github.com/user-attachments/assets/52824b64-8a6f-4df6-844b-2cbb43c4b1f4) I don't think a changelog is of value here. --- _maps/map_files/IceBoxStation/IceBoxStation.dmm | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/_maps/map_files/IceBoxStation/IceBoxStation.dmm b/_maps/map_files/IceBoxStation/IceBoxStation.dmm index c86f7da6bcd0c..80c768e6a52a8 100644 --- a/_maps/map_files/IceBoxStation/IceBoxStation.dmm +++ b/_maps/map_files/IceBoxStation/IceBoxStation.dmm @@ -56941,9 +56941,6 @@ }, /turf/open/floor/iron/dark/textured, /area/station/security/range) -"qtv" = ( -/turf/open/genturf, -/area/icemoon/surface/outdoors/nospawn) "qtw" = ( /obj/machinery/door/airlock/security{ name = "Prison Forestry" @@ -269753,7 +269750,7 @@ wNO wNO wNO bln -qtv +bln fwx kDs kDs From 1dd4e379200a8e8942335f2ec93b9900c7a3f6e5 Mon Sep 17 00:00:00 2001 From: Lucy Date: Tue, 10 Sep 2024 08:37:03 -0400 Subject: [PATCH 011/350] You can now bloodcrawl into/out of tomato smudges (#86565) ## About The Pull Request This makes tomato smudges on the floor valid for bloodcrawl. Pretty simple. ## Why It's Good For The Game Why not? It's funny, and ketchup = fake blood. ## Changelog :cl: add: Tomato smudges on the floor are now considered valid to bloodcrawl into and out of. /:cl: --- code/game/objects/effects/decals/cleanable/food.dm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/code/game/objects/effects/decals/cleanable/food.dm b/code/game/objects/effects/decals/cleanable/food.dm index 23c266ecb5906..d612bd9e7f53e 100644 --- a/code/game/objects/effects/decals/cleanable/food.dm +++ b/code/game/objects/effects/decals/cleanable/food.dm @@ -10,6 +10,9 @@ icon_state = "tomato_floor1" random_icon_states = list("tomato_floor1", "tomato_floor2", "tomato_floor3") +/obj/effect/decal/cleanable/food/tomato_smudge/can_bloodcrawl_in() + return TRUE // why? why not. + /obj/effect/decal/cleanable/food/plant_smudge name = "plant smudge" desc = "Chlorophyll? More like borophyll!" From ab7124f28014c994adb0d01826644dacf4396585 Mon Sep 17 00:00:00 2001 From: "tgstation-ci[bot]" <179393467+tgstation-ci[bot]@users.noreply.github.com> Date: Tue, 10 Sep 2024 12:37:42 +0000 Subject: [PATCH 012/350] Automatic changelog for PR #86565 [ci skip] --- html/changelogs/AutoChangeLog-pr-86565.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-86565.yml diff --git a/html/changelogs/AutoChangeLog-pr-86565.yml b/html/changelogs/AutoChangeLog-pr-86565.yml new file mode 100644 index 0000000000000..1902285dedee4 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-86565.yml @@ -0,0 +1,4 @@ +author: "Absolucy" +delete-after: True +changes: + - rscadd: "Tomato smudges on the floor are now considered valid to bloodcrawl into and out of." \ No newline at end of file From e555914aba780a478c4c6ab0e751761a67cb0431 Mon Sep 17 00:00:00 2001 From: hack-wrench <60922927+hack-wrench@users.noreply.github.com> Date: Tue, 10 Sep 2024 17:43:14 +0500 Subject: [PATCH 013/350] add speaker voice to recorder (#86570) ## About The Pull Request Adding speaker voice to tape recorder ## Why It's Good For The Game Interrogations will become easier ## Changelog ![666](https://github.com/user-attachments/assets/924e8af6-c58a-45dc-888e-d9ca30601dcb) :cl: add: tape recorder now records speaker name /:cl: --- code/game/objects/items/devices/taperecorder.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/devices/taperecorder.dm b/code/game/objects/items/devices/taperecorder.dm index b86489fae9ea7..9b6328fe682fa 100644 --- a/code/game/objects/items/devices/taperecorder.dm +++ b/code/game/objects/items/devices/taperecorder.dm @@ -162,7 +162,7 @@ if(mytape && recording) mytape.timestamp += mytape.used_capacity - mytape.storedinfo += "\[[time2text(mytape.used_capacity,"mm:ss")]\] [raw_message]" + mytape.storedinfo += "\[[time2text(mytape.used_capacity,"mm:ss")]\] [speaker.GetVoice()]: [raw_message]" /obj/item/taperecorder/verb/record() From 93e0689e1c3406ddb8a83f68a22b3e9f40e4a000 Mon Sep 17 00:00:00 2001 From: "tgstation-ci[bot]" <179393467+tgstation-ci[bot]@users.noreply.github.com> Date: Tue, 10 Sep 2024 12:43:58 +0000 Subject: [PATCH 014/350] Automatic changelog for PR #86570 [ci skip] --- html/changelogs/AutoChangeLog-pr-86570.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-86570.yml diff --git a/html/changelogs/AutoChangeLog-pr-86570.yml b/html/changelogs/AutoChangeLog-pr-86570.yml new file mode 100644 index 0000000000000..a67497c47b731 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-86570.yml @@ -0,0 +1,4 @@ +author: "hack-wrench" +delete-after: True +changes: + - rscadd: "tape recorder now records speaker name" \ No newline at end of file From 974e53c3819208b974b4de2c3b2d8ac3991bb4c2 Mon Sep 17 00:00:00 2001 From: MrMelbert <51863163+MrMelbert@users.noreply.github.com> Date: Tue, 10 Sep 2024 07:46:41 -0500 Subject: [PATCH 015/350] Entertainment Monitor QOL (#86543) ## About The Pull Request You can now look at an entertainment monitor from up to 7 tiles away. You still must be adjacent (or telekinetic, or a silicon) to change the channel. ## Why It's Good For The Game Using these things is a little frustrating given they're wall mounts that you have to be adjacent to watch. So if someone's doing a TV show bit you basically have to get everyone to clutter around one single tv, when more accurately people could just stand back and watch. ## Changelog :cl: Melbert qol: You can watch entertainment monitors from up to seven tiles away, though you still need to be adjacent(or telekinetic, or a silicon) if you want to change the channel. /:cl: --- code/game/machinery/computer/telescreen.dm | 63 +++++++++++++++++++--- 1 file changed, 56 insertions(+), 7 deletions(-) diff --git a/code/game/machinery/computer/telescreen.dm b/code/game/machinery/computer/telescreen.dm index 6058d3bf131ab..6021c954cabfc 100644 --- a/code/game/machinery/computer/telescreen.dm +++ b/code/game/machinery/computer/telescreen.dm @@ -55,7 +55,6 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/computer/security/telescreen/entertai /obj/machinery/computer/security/telescreen/entertainment/Initialize(mapload) . = ..() - RegisterSignal(src, COMSIG_CLICK, PROC_REF(BigClick)) find_and_hang_on_wall() speakers = new(src) @@ -63,16 +62,66 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/computer/security/telescreen/entertai . = ..() QDEL_NULL(speakers) -/// Bypass clickchain to allow humans to use the telescreen from a distance -/obj/machinery/computer/security/telescreen/entertainment/proc/BigClick() - SIGNAL_HANDLER +/obj/machinery/computer/security/telescreen/entertainment/examine(mob/user) + . = ..() + . += length(network) ? span_notice("The TV is broadcasting something!") : span_notice("There's nothing on TV.") + +/obj/machinery/computer/security/telescreen/entertainment/ui_state(mob/user) + return GLOB.always_state + +// Snowflake ui status to allow mobs to watch TV from across the room, +// but only allow adjacent mobs / tk users / silicon to change the channel +/obj/machinery/computer/security/telescreen/entertainment/ui_status(mob/living/user, datum/ui_state/state) + if(!can_watch_tv(user)) + return UI_CLOSE + if(!isliving(user)) + return isAdminGhostAI(user) ? UI_INTERACTIVE : UI_UPDATE + if(user.stat >= SOFT_CRIT) + return UI_UPDATE + + var/can_range = FALSE + if(iscarbon(user)) + var/mob/living/carbon/carbon_user = user + if(carbon_user.dna?.check_mutation(/datum/mutation/human/telekinesis) && tkMaxRangeCheck(user, src)) + can_range = TRUE + if(HAS_SILICON_ACCESS(user) || (user.interaction_range && user.interaction_range >= get_dist(user, src))) + can_range = TRUE + + if((can_range || user.CanReach(src)) && ISADVANCEDTOOLUSER(user)) + if(user.incapacitated) + return UI_UPDATE + if(!can_range && user.can_hold_items() && (user.usable_hands <= 0 || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED))) + return UI_UPDATE + return UI_INTERACTIVE + return UI_UPDATE + +/obj/machinery/computer/security/telescreen/entertainment/Click(location, control, params) + if(world.time <= usr.next_click + 1) + return // just so someone can't turn an auto clicker on and spam tvs - if(!network.len) - balloon_alert(usr, "nothing on TV!") + . = ..() + if(!can_watch_tv(usr)) return - + if((!length(network) && !Adjacent(usr)) || LAZYACCESS(params2list(params), SHIFT_CLICK)) // let people examine + return + // Lets us see the tv regardless of click results INVOKE_ASYNC(src, TYPE_PROC_REF(/atom, interact), usr) +/obj/machinery/computer/security/telescreen/entertainment/proc/can_watch_tv(mob/living/watcher) + if(!is_operational) + return FALSE + if((watcher.sight & SEE_OBJS) || HAS_SILICON_ACCESS(watcher)) + if(get_dist(watcher, src) > 7) + return FALSE + else + if(!can_see(watcher, src, 7)) + return FALSE + if(watcher.is_blind()) + return FALSE + if(!isobserver(watcher) && watcher.stat >= UNCONSCIOUS) + return FALSE + return TRUE + /// Sets the monitor's icon to the selected state, and says an announcement /obj/machinery/computer/security/telescreen/entertainment/proc/notify(on, announcement) if(on && icon_state == icon_state_off) From c388760ec4e604bf4426632dbc573c83f91fb8f3 Mon Sep 17 00:00:00 2001 From: "tgstation-ci[bot]" <179393467+tgstation-ci[bot]@users.noreply.github.com> Date: Tue, 10 Sep 2024 12:47:14 +0000 Subject: [PATCH 016/350] Automatic changelog for PR #86543 [ci skip] --- html/changelogs/AutoChangeLog-pr-86543.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-86543.yml diff --git a/html/changelogs/AutoChangeLog-pr-86543.yml b/html/changelogs/AutoChangeLog-pr-86543.yml new file mode 100644 index 0000000000000..519a042e68167 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-86543.yml @@ -0,0 +1,4 @@ +author: "Melbert" +delete-after: True +changes: + - qol: "You can watch entertainment monitors from up to seven tiles away, though you still need to be adjacent(or telekinetic, or a silicon) if you want to change the channel." \ No newline at end of file From 74cb19430175b4373694388d9c2bde917844deff Mon Sep 17 00:00:00 2001 From: MrMelbert <51863163+MrMelbert@users.noreply.github.com> Date: Tue, 10 Sep 2024 09:25:03 -0500 Subject: [PATCH 017/350] Fix trash cannons being unusable / Only food crafting recipes transfer reagents to target (#86566) ## About The Pull Request Adds a crafting flag for clearing and transferring reagents on craft, only applies it to food recipes. This makes it a partial fix to #81226 ## Changelog :cl: Melbert fix: Trash cannons can be filled with fuel and fired again /:cl: --- code/__DEFINES/crafting.dm | 4 ++++ code/datums/components/crafting/crafting.dm | 8 +++++--- code/modules/food_and_drinks/recipes/food_mixtures.dm | 1 + 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/code/__DEFINES/crafting.dm b/code/__DEFINES/crafting.dm index 54dc479aa7306..cb7930e9d1fb6 100644 --- a/code/__DEFINES/crafting.dm +++ b/code/__DEFINES/crafting.dm @@ -28,6 +28,10 @@ #define CRAFT_CHECK_DENSITY (1<<5) /// If the created atom will gain custom mat datums #define CRAFT_APPLIES_MATS (1<<6) +/// Crafting passes reagents of components to the finished product +#define CRAFT_TRANSFERS_REAGENTS (1<<7) +/// Crafting clears all reagents present in the finished product +#define CRAFT_CLEARS_REAGENTS (1<<8) //food/drink crafting defines //When adding new defines, please make sure to also add them to the encompassing list diff --git a/code/datums/components/crafting/crafting.dm b/code/datums/components/crafting/crafting.dm index ec6df83b8042f..54f77d4579e23 100644 --- a/code/datums/components/crafting/crafting.dm +++ b/code/datums/components/crafting/crafting.dm @@ -268,9 +268,11 @@ qdel(thing) var/datum/reagents/holder = locate() in parts if(holder) //transfer reagents from ingredients to result - if(!ispath(recipe.result, /obj/item/reagent_containers) && result.reagents) - result.reagents.clear_reagents() - holder.trans_to(result.reagents, holder.total_volume, no_react = TRUE) + if(!ispath(recipe.result, /obj/item/reagent_containers) && result.reagents) + if(recipe.crafting_flags & CRAFT_CLEARS_REAGENTS) + result.reagents.clear_reagents() + if(recipe.crafting_flags & CRAFT_TRANSFERS_REAGENTS) + holder.trans_to(result.reagents, holder.total_volume, no_react = TRUE) parts -= holder qdel(holder) result.CheckParts(parts, recipe) diff --git a/code/modules/food_and_drinks/recipes/food_mixtures.dm b/code/modules/food_and_drinks/recipes/food_mixtures.dm index c04edf6fee79d..282910007dd81 100644 --- a/code/modules/food_and_drinks/recipes/food_mixtures.dm +++ b/code/modules/food_and_drinks/recipes/food_mixtures.dm @@ -1,5 +1,6 @@ /datum/crafting_recipe/food mass_craftable = TRUE + crafting_flags = parent_type::crafting_flags | CRAFT_TRANSFERS_REAGENTS | CRAFT_CLEARS_REAGENTS /datum/crafting_recipe/food/on_craft_completion(mob/user, atom/result) SHOULD_CALL_PARENT(TRUE) From 3a1a4e615bbf6b40c35b34735436b8fc9dd4b89f Mon Sep 17 00:00:00 2001 From: "tgstation-ci[bot]" <179393467+tgstation-ci[bot]@users.noreply.github.com> Date: Tue, 10 Sep 2024 14:25:27 +0000 Subject: [PATCH 018/350] Automatic changelog for PR #86566 [ci skip] --- html/changelogs/AutoChangeLog-pr-86566.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-86566.yml diff --git a/html/changelogs/AutoChangeLog-pr-86566.yml b/html/changelogs/AutoChangeLog-pr-86566.yml new file mode 100644 index 0000000000000..d7f4803c07ef4 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-86566.yml @@ -0,0 +1,4 @@ +author: "Melbert" +delete-after: True +changes: + - bugfix: "Trash cannons can be filled with fuel and fired again" \ No newline at end of file From 644ebf93d05272ad9c36d9c0a663d7b676e6e89b Mon Sep 17 00:00:00 2001 From: _0Steven <42909981+00-Steven@users.noreply.github.com> Date: Tue, 10 Sep 2024 16:25:46 +0200 Subject: [PATCH 019/350] Fix ian bedsheet sprite having only one direction (#86557) ## About The Pull Request While trying to reproduce a bed buckling issue, I noticed that a roundstart ian bedsheet was not getting placed on the right end of the bed. After a bit of testing, I realized it just, didn't have any other directions. We fix this by just adding the missing directions in the dmi: ![image](https://github.com/user-attachments/assets/47b769e2-c631-48d3-9777-6a776c9b4d87) ## Why It's Good For The Game Wonky inconsistency fixed, currently can't use ian bedsheets on half the bed directions. ## Changelog :cl: image: Ian bedsheets actually have more than one direction, and so can be put on beds properly. /:cl: --- icons/obj/bedsheets.dmi | Bin 67477 -> 66721 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/obj/bedsheets.dmi b/icons/obj/bedsheets.dmi index daa0c3cdd79043b9bdb971f86c57f65854336ebd..46fb26ebb18636e9dcd8d998a78c3674ddd85db1 100644 GIT binary patch literal 66721 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 Date: Tue, 10 Sep 2024 14:26:06 +0000 Subject: [PATCH 020/350] Automatic changelog for PR #86557 [ci skip] --- html/changelogs/AutoChangeLog-pr-86557.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-86557.yml diff --git a/html/changelogs/AutoChangeLog-pr-86557.yml b/html/changelogs/AutoChangeLog-pr-86557.yml new file mode 100644 index 0000000000000..53bf481dedb45 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-86557.yml @@ -0,0 +1,4 @@ +author: "00-Steven" +delete-after: True +changes: + - image: "Ian bedsheets actually have more than one direction, and so can be put on beds properly." \ No newline at end of file From 238276a1e6cb2353d67ab44ee6fd76762ad41860 Mon Sep 17 00:00:00 2001 From: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com> Date: Tue, 10 Sep 2024 17:26:40 +0300 Subject: [PATCH 021/350] [no gbp] fixes deer playing with their friends (#86576) ## About The Pull Request deers now correctly emote with nearby friends ## Why It's Good For The Game closes #86575 ## Changelog :cl: fix: deers now correctly emote with nearby friends /:cl: --- .../ai/basic_mobs/basic_ai_behaviors/emote_with_target.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/datums/ai/basic_mobs/basic_ai_behaviors/emote_with_target.dm b/code/datums/ai/basic_mobs/basic_ai_behaviors/emote_with_target.dm index 8f4483d4dafdd..7960301d70440 100644 --- a/code/datums/ai/basic_mobs/basic_ai_behaviors/emote_with_target.dm +++ b/code/datums/ai/basic_mobs/basic_ai_behaviors/emote_with_target.dm @@ -14,7 +14,7 @@ var/atom/target = controller.blackboard[target_key] if(!length(emote_list) || isnull(target)) return AI_BEHAVIOR_FAILED | AI_BEHAVIOR_DELAY - run_emote(controller.pawn, target_key, emote_list) + run_emote(controller.pawn, target, emote_list) return AI_BEHAVIOR_SUCCEEDED | AI_BEHAVIOR_DELAY From b69b3940393062ce7a853df77b205c93660561c8 Mon Sep 17 00:00:00 2001 From: "tgstation-ci[bot]" <179393467+tgstation-ci[bot]@users.noreply.github.com> Date: Tue, 10 Sep 2024 14:26:59 +0000 Subject: [PATCH 022/350] Automatic changelog for PR #86576 [ci skip] --- html/changelogs/AutoChangeLog-pr-86576.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-86576.yml diff --git a/html/changelogs/AutoChangeLog-pr-86576.yml b/html/changelogs/AutoChangeLog-pr-86576.yml new file mode 100644 index 0000000000000..96e4829282ffb --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-86576.yml @@ -0,0 +1,4 @@ +author: "Ben10Omintrix" +delete-after: True +changes: + - bugfix: "deers now correctly emote with nearby friends" \ No newline at end of file From 8182453c4e2a3b8d23fe5158fc6d9d5443eeea71 Mon Sep 17 00:00:00 2001 From: SmArtKar <44720187+SmArtKar@users.noreply.github.com> Date: Tue, 10 Sep 2024 17:29:58 +0300 Subject: [PATCH 023/350] Fixes locker shoving closing and opening the locker thrice, sending its victim to the backrooms (#86572) ## About The Pull Request Closes #86456 and fixes this ![dreamseeker_bPI7dM78rV](https://github.com/user-attachments/assets/b9939d24-347e-49e2-b3b4-cec1185d2dfc) ## Changelog :cl: fix: Fixed locker shoving closing and opening the locker thrice, sending its victim to the backrooms /:cl: --- code/game/objects/structures/crates_lockers/closets.dm | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index f407dcd82c04f..ffbbca66afb4e 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -1191,15 +1191,13 @@ GLOBAL_LIST_EMPTY(roundstart_station_closets) return if(!opened && ((shove_flags & SHOVE_KNOCKDOWN_BLOCKED) || !(shove_flags & SHOVE_BLOCKED))) return - var/was_opened = opened - if(!toggle()) - return - if(was_opened) - if (!target.Move(get_turf(src), get_dir(target, src))) + if(opened) + if (target.loc != loc) return target.forceMove(src) else target.Knockdown(SHOVE_KNOCKDOWN_SOLID) + toggle() update_icon() target.visible_message(span_danger("[shover.name] shoves [target.name] into [src]!"), span_userdanger("You're shoved into [src] by [shover.name]!"), From ec0bb5de68fe7fcc65ea5eb31d31657e88393afc Mon Sep 17 00:00:00 2001 From: SyncIt21 <110812394+SyncIt21@users.noreply.github.com> Date: Tue, 10 Sep 2024 20:00:28 +0530 Subject: [PATCH 024/350] Mediborg omnitool displays error message for wrong tool in surgery step (#86573) ## About The Pull Request - Fixes #85780 ## Changelog :cl: fix: Mediborg omnitool displays error message for wrong tool in surgery step /:cl: --- code/modules/surgery/organ_manipulation.dm | 2 ++ code/modules/surgery/surgery.dm | 2 ++ 2 files changed, 4 insertions(+) diff --git a/code/modules/surgery/organ_manipulation.dm b/code/modules/surgery/organ_manipulation.dm index 83474363c6cf2..04de703aecb08 100644 --- a/code/modules/surgery/organ_manipulation.dm +++ b/code/modules/surgery/organ_manipulation.dm @@ -85,6 +85,8 @@ if(isnull(step)) return FALSE var/obj/item/tool = user.get_active_held_item() + if(tool) + tool = tool.get_proxy_attacker_for(target, user) if(step.try_op(user, target, user.zone_selected, tool, src, try_to_fail)) return TRUE if(tool && tool.tool_behaviour) //Mechanic organ manipulation isn't done with just surgery tools diff --git a/code/modules/surgery/surgery.dm b/code/modules/surgery/surgery.dm index a555548e43268..d23267fa326bd 100644 --- a/code/modules/surgery/surgery.dm +++ b/code/modules/surgery/surgery.dm @@ -124,6 +124,8 @@ if(isnull(step)) return FALSE var/obj/item/tool = user.get_active_held_item() + if(tool) + tool = tool.get_proxy_attacker_for(target, user) if(step.try_op(user, target, user.zone_selected, tool, src, try_to_fail)) return TRUE if(tool && tool.item_flags & SURGICAL_TOOL) //Just because you used the wrong tool it doesn't mean you meant to whack the patient with it From b7efb7df860549350650d56e2f9843c19d7e4ba2 Mon Sep 17 00:00:00 2001 From: "tgstation-ci[bot]" <179393467+tgstation-ci[bot]@users.noreply.github.com> Date: Tue, 10 Sep 2024 14:30:41 +0000 Subject: [PATCH 025/350] Automatic changelog for PR #86572 [ci skip] --- html/changelogs/AutoChangeLog-pr-86572.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-86572.yml diff --git a/html/changelogs/AutoChangeLog-pr-86572.yml b/html/changelogs/AutoChangeLog-pr-86572.yml new file mode 100644 index 0000000000000..b874cddc240d6 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-86572.yml @@ -0,0 +1,4 @@ +author: "SmArtKar" +delete-after: True +changes: + - bugfix: "Fixed locker shoving closing and opening the locker thrice, sending its victim to the backrooms" \ No newline at end of file From 0d3c8b92d5b3c969edfe4b1692670233393ee020 Mon Sep 17 00:00:00 2001 From: "tgstation-ci[bot]" <179393467+tgstation-ci[bot]@users.noreply.github.com> Date: Tue, 10 Sep 2024 14:30:50 +0000 Subject: [PATCH 026/350] Automatic changelog for PR #86573 [ci skip] --- html/changelogs/AutoChangeLog-pr-86573.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-86573.yml diff --git a/html/changelogs/AutoChangeLog-pr-86573.yml b/html/changelogs/AutoChangeLog-pr-86573.yml new file mode 100644 index 0000000000000..e786c64d6c501 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-86573.yml @@ -0,0 +1,4 @@ +author: "SyncIt21" +delete-after: True +changes: + - bugfix: "Mediborg omnitool displays error message for wrong tool in surgery step" \ No newline at end of file From feb474550fc8dd6a97bbe8a999888aa352df1cee Mon Sep 17 00:00:00 2001 From: Bloop <13398309+vinylspiders@users.noreply.github.com> Date: Tue, 10 Sep 2024 10:41:42 -0400 Subject: [PATCH 027/350] Removes vestigial req_access from vending machines + some cleanup (#86550) ## About The Pull Request Once upon a time, vending machines were access locked I guess? It's been so many years since that has been the case that most people don't remember (including myself). This just removes all the old unused req_access lists that reside on the various vending machines. ## Why It's Good For The Game Less chance of cargo culting something that serves no purpose anymore. ## Changelog Nothing player facing I should hope --------- Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com> --- .../lavaland_surface_syndicate_base1.dmm | 6 +- .../RandomRuins/SpaceRuins/forgottenship.dmm | 2 +- .../SpaceRuins/infested_frigate.dmm | 2 +- _maps/RandomRuins/SpaceRuins/interdyne.dmm | 2 +- .../SpaceRuins/spinwardsmoothies.dmm | 2 +- _maps/RandomZLevels/TheBeach.dmm | 4 +- _maps/RandomZLevels/museum.dmm | 2 +- _maps/map_files/Basketball/stadium.dmm | 2 +- _maps/map_files/Birdshot/birdshot.dmm | 2 +- .../map_files/Deltastation/DeltaStation2.dmm | 6 +- .../map_files/IceBoxStation/IceBoxStation.dmm | 6 +- _maps/map_files/MetaStation/MetaStation.dmm | 6 +- _maps/map_files/NorthStar/north_star.dmm | 6 +- _maps/map_files/debug/runtimestation.dmm | 3 +- _maps/map_files/tramstation/tramstation.dmm | 2 +- _maps/map_files/wawastation/wawastation.dmm | 6 +- _maps/shuttles/emergency_cruise.dmm | 4 +- _maps/shuttles/emergency_humpback.dmm | 2 +- .../emergency_imfedupwiththisworld.dmm | 4 +- _maps/shuttles/emergency_luxury.dmm | 2 +- _maps/shuttles/emergency_tranquility.dmm | 2 +- _maps/shuttles/hunter_mi13_foodtruck.dmm | 2 +- _maps/shuttles/infiltrator_advanced.dmm | 2 +- _maps/shuttles/pirate_default.dmm | 2 +- _maps/shuttles/pirate_ex_interdyne.dmm | 2 +- _maps/shuttles/pirate_grey.dmm | 2 +- _maps/shuttles/pirate_irs.dmm | 2 +- _maps/shuttles/pirate_silverscale.dmm | 4 +- _maps/shuttles/whiteship_box.dmm | 4 +- _maps/shuttles/whiteship_cere.dmm | 2 +- _maps/shuttles/whiteship_delta.dmm | 2 +- _maps/shuttles/whiteship_obelisk.dmm | 4 +- _maps/templates/battlecruiser_starfury.dmm | 4 +- _maps/templates/shelter_3.dmm | 2 +- _maps/virtual_domains/island_brawl.dmm | 4 +- _maps/virtual_domains/meta_central.dmm | 2 +- _maps/virtual_domains/syndicate_assault.dmm | 2 +- .../ruins/lavalandruin_code/syndicate_base.dm | 1 - .../ruins/spaceruin_code/forgottenship.dm | 69 ++++++++++--------- code/modules/vending/autodrobe.dm | 6 +- code/modules/vending/boozeomat.dm | 8 +-- code/modules/vending/cartridge.dm | 2 +- code/modules/vending/cigarette.dm | 8 +-- code/modules/vending/cola.dm | 1 - code/modules/vending/engineering.dm | 1 - code/modules/vending/engivend.dm | 1 - code/modules/vending/medical.dm | 12 ++-- code/modules/vending/robotics.dm | 1 - code/modules/vending/security.dm | 17 +++-- ...ename.txt => 85141_drying_rack_rename.txt} | 0 .../86550_repaths_access_vending_machines.txt | 8 +++ 51 files changed, 118 insertions(+), 132 deletions(-) rename tools/UpdatePaths/Scripts/{99999_drying_rack_rename.txt => 85141_drying_rack_rename.txt} (100%) create mode 100644 tools/UpdatePaths/Scripts/86550_repaths_access_vending_machines.txt diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm index 6df974f9ea279..b73cf11fda63e 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm @@ -18,19 +18,19 @@ "aj" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, -/obj/machinery/vending/medical/syndicate_access, +/obj/machinery/vending/medical/syndicate, /turf/open/floor/iron/white/side{ dir = 4 }, /area/ruin/syndicate_lava_base/virology) "ak" = ( -/obj/machinery/vending/boozeomat/syndicate_access, +/obj/machinery/vending/boozeomat/syndicate, /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/ruin/syndicate_lava_base/bar) "al" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, -/obj/machinery/vending/medical/syndicate_access, +/obj/machinery/vending/medical/syndicate, /turf/open/floor/iron/white, /area/ruin/syndicate_lava_base/medbay) "ap" = ( diff --git a/_maps/RandomRuins/SpaceRuins/forgottenship.dmm b/_maps/RandomRuins/SpaceRuins/forgottenship.dmm index 7b12e87992c8a..cb2a35084f93e 100644 --- a/_maps/RandomRuins/SpaceRuins/forgottenship.dmm +++ b/_maps/RandomRuins/SpaceRuins/forgottenship.dmm @@ -613,7 +613,7 @@ /turf/open/floor/mineral/plastitanium, /area/ruin/space/has_grav/syndicate_forgotten_ship) "ct" = ( -/obj/machinery/vending/medical/syndicate_access/cybersun, +/obj/machinery/vending/medical/syndicate/cybersun, /turf/open/floor/plastic, /area/ruin/space/has_grav/syndicate_forgotten_ship) "cu" = ( diff --git a/_maps/RandomRuins/SpaceRuins/infested_frigate.dmm b/_maps/RandomRuins/SpaceRuins/infested_frigate.dmm index abccc6b550eb1..c925d017ad3a3 100644 --- a/_maps/RandomRuins/SpaceRuins/infested_frigate.dmm +++ b/_maps/RandomRuins/SpaceRuins/infested_frigate.dmm @@ -690,7 +690,7 @@ /turf/open/floor/mineral/plastitanium, /area/ruin/space/has_grav/infested_frigate) "kw" = ( -/obj/machinery/vending/boozeomat/syndicate_access, +/obj/machinery/vending/boozeomat/syndicate, /turf/open/floor/iron/freezer, /area/ruin/space/has_grav/infested_frigate) "kS" = ( diff --git a/_maps/RandomRuins/SpaceRuins/interdyne.dmm b/_maps/RandomRuins/SpaceRuins/interdyne.dmm index cf8c7f8c0d408..9c802b0be434c 100644 --- a/_maps/RandomRuins/SpaceRuins/interdyne.dmm +++ b/_maps/RandomRuins/SpaceRuins/interdyne.dmm @@ -140,7 +140,7 @@ /turf/open/floor/mineral/plastitanium, /area/ruin/space/has_grav/interdyne) "fS" = ( -/obj/machinery/vending/medical/syndicate_access, +/obj/machinery/vending/medical/syndicate, /turf/open/floor/mineral/plastitanium, /area/ruin/space/has_grav/interdyne) "ga" = ( diff --git a/_maps/RandomRuins/SpaceRuins/spinwardsmoothies.dmm b/_maps/RandomRuins/SpaceRuins/spinwardsmoothies.dmm index 91f7771f0ea69..723c4728d5bdf 100644 --- a/_maps/RandomRuins/SpaceRuins/spinwardsmoothies.dmm +++ b/_maps/RandomRuins/SpaceRuins/spinwardsmoothies.dmm @@ -44,7 +44,7 @@ }, /area/ruin/space/has_grav/spinwardsmoothies) "ti" = ( -/obj/machinery/vending/boozeomat/all_access{ +/obj/machinery/vending/boozeomat{ onstation = 0 }, /turf/open/floor/wood/tile, diff --git a/_maps/RandomZLevels/TheBeach.dmm b/_maps/RandomZLevels/TheBeach.dmm index 41fcd3280d490..d179a7dc5148c 100644 --- a/_maps/RandomZLevels/TheBeach.dmm +++ b/_maps/RandomZLevels/TheBeach.dmm @@ -738,7 +738,7 @@ /turf/open/floor/iron/white/textured_large, /area/awaymission/beach) "jF" = ( -/obj/machinery/vending/boozeomat/all_access{ +/obj/machinery/vending/boozeomat{ desc = "A technological marvel, supposedly able to mix just the mixture you'd like to drink the moment you ask for one. May not work for bartenders that don't have Nanotrasen bank accounts." }, /turf/open/floor/wood/large, @@ -2766,7 +2766,7 @@ /turf/open/floor/iron/white/textured_large, /area/awaymission/beach) "Il" = ( -/obj/machinery/vending/autodrobe/all_access, +/obj/machinery/vending/autodrobe, /turf/open/misc/beach/sand, /area/awaymission/beach) "It" = ( diff --git a/_maps/RandomZLevels/museum.dmm b/_maps/RandomZLevels/museum.dmm index afd0cd888fdcd..7f87ffb86cea6 100644 --- a/_maps/RandomZLevels/museum.dmm +++ b/_maps/RandomZLevels/museum.dmm @@ -3128,7 +3128,7 @@ /turf/open/floor/bluespace, /area/awaymission/museum) "zC" = ( -/obj/machinery/vending/boozeomat/all_access, +/obj/machinery/vending/boozeomat, /turf/open/floor/wood/tile, /area/awaymission/museum) "zE" = ( diff --git a/_maps/map_files/Basketball/stadium.dmm b/_maps/map_files/Basketball/stadium.dmm index bcbb91ce4b7ef..c6b6901672553 100644 --- a/_maps/map_files/Basketball/stadium.dmm +++ b/_maps/map_files/Basketball/stadium.dmm @@ -405,7 +405,7 @@ /turf/open/floor/wood, /area/centcom/basketball) "Ax" = ( -/obj/machinery/vending/boozeomat/all_access, +/obj/machinery/vending/boozeomat, /turf/open/floor/wood, /area/centcom/basketball) "AC" = ( diff --git a/_maps/map_files/Birdshot/birdshot.dmm b/_maps/map_files/Birdshot/birdshot.dmm index 1a7b967014af9..8164583d4a096 100644 --- a/_maps/map_files/Birdshot/birdshot.dmm +++ b/_maps/map_files/Birdshot/birdshot.dmm @@ -72489,7 +72489,7 @@ /turf/closed/wall, /area/station/medical/surgery/theatre) "yfF" = ( -/obj/machinery/vending/autodrobe/all_access, +/obj/machinery/vending/autodrobe, /obj/effect/turf_decal/siding/wideplating/dark{ dir = 8 }, diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index 39d7cd24bdd2e..47eb8b2826236 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -39806,7 +39806,7 @@ /area/station/tcommsat/server) "jQx" = ( /obj/effect/decal/cleanable/cobweb/cobweb2, -/obj/machinery/vending/autodrobe/all_access, +/obj/machinery/vending/autodrobe, /turf/open/floor/plating, /area/station/maintenance/fore) "jQB" = ( @@ -47502,7 +47502,7 @@ /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/ai) "lMF" = ( -/obj/machinery/vending/autodrobe/all_access, +/obj/machinery/vending/autodrobe, /obj/effect/turf_decal/siding/dark_blue{ dir = 8 }, @@ -67689,7 +67689,7 @@ "qVn" = ( /obj/machinery/light/small/directional/south, /obj/effect/decal/cleanable/dirt, -/obj/machinery/vending/boozeomat/all_access, +/obj/machinery/vending/boozeomat, /obj/structure/sign/poster/contraband/random/directional/south, /turf/open/floor/plating, /area/station/service/abandoned_gambling_den) diff --git a/_maps/map_files/IceBoxStation/IceBoxStation.dmm b/_maps/map_files/IceBoxStation/IceBoxStation.dmm index 80c768e6a52a8..e95bf83f27260 100644 --- a/_maps/map_files/IceBoxStation/IceBoxStation.dmm +++ b/_maps/map_files/IceBoxStation/IceBoxStation.dmm @@ -21813,7 +21813,7 @@ /turf/open/floor/plating, /area/station/engineering/lobby) "gkN" = ( -/obj/machinery/vending/autodrobe/all_access, +/obj/machinery/vending/autodrobe, /turf/open/floor/iron/dark/textured, /area/station/security/prison) "gkP" = ( @@ -25804,7 +25804,7 @@ "hul" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/machinery/status_display/evac/directional/north, -/obj/machinery/vending/autodrobe/all_access, +/obj/machinery/vending/autodrobe, /turf/open/floor/iron, /area/station/commons/locker) "huq" = ( @@ -42554,7 +42554,7 @@ }, /area/station/security/brig/entrance) "mqI" = ( -/obj/machinery/vending/boozeomat/all_access, +/obj/machinery/vending/boozeomat, /turf/open/floor/plating, /area/station/maintenance/port/aft) "mqL" = ( diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index a3b90c665b221..df5644bf2450f 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -32453,7 +32453,7 @@ /area/station/commons/toilet/restrooms) "lvY" = ( /obj/effect/decal/cleanable/cobweb, -/obj/machinery/vending/boozeomat/all_access, +/obj/machinery/vending/boozeomat, /turf/open/floor/wood, /area/station/maintenance/port/aft) "lvZ" = ( @@ -35165,7 +35165,7 @@ /turf/open/floor/iron, /area/station/engineering/gravity_generator) "myZ" = ( -/obj/machinery/vending/autodrobe/all_access, +/obj/machinery/vending/autodrobe, /turf/open/floor/plating, /area/station/maintenance/port) "mzg" = ( @@ -47063,7 +47063,7 @@ /turf/open/floor/iron/white, /area/station/medical/pharmacy) "qJH" = ( -/obj/machinery/vending/autodrobe/all_access, +/obj/machinery/vending/autodrobe, /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/commons/locker) diff --git a/_maps/map_files/NorthStar/north_star.dmm b/_maps/map_files/NorthStar/north_star.dmm index 0d591a0ea0e1b..cafc8754cd887 100644 --- a/_maps/map_files/NorthStar/north_star.dmm +++ b/_maps/map_files/NorthStar/north_star.dmm @@ -52888,7 +52888,7 @@ /area/station/hallway/secondary/exit) "nDj" = ( /obj/machinery/door/firedoor, -/obj/machinery/vending/boozeomat/all_access, +/obj/machinery/vending/boozeomat, /turf/open/floor/plating, /area/station/medical/abandoned) "nDk" = ( @@ -55522,7 +55522,7 @@ /turf/open/floor/pod/light, /area/station/maintenance/floor2/port/fore) "omh" = ( -/obj/machinery/vending/boozeomat/all_access, +/obj/machinery/vending/boozeomat, /turf/open/floor/wood/tile, /area/station/command/heads_quarters/captain/private) "omj" = ( @@ -67719,7 +67719,7 @@ /turf/open/floor/pod/light, /area/station/maintenance/floor1/starboard/fore) "rtH" = ( -/obj/machinery/vending/boozeomat/all_access, +/obj/machinery/vending/boozeomat, /obj/effect/decal/cleanable/dirt, /turf/open/floor/wood, /area/station/service/abandoned_gambling_den) diff --git a/_maps/map_files/debug/runtimestation.dmm b/_maps/map_files/debug/runtimestation.dmm index dfab71ec7974e..280fcdfc858e7 100644 --- a/_maps/map_files/debug/runtimestation.dmm +++ b/_maps/map_files/debug/runtimestation.dmm @@ -2541,8 +2541,7 @@ "Xg" = ( /obj/machinery/light/directional/east, /obj/machinery/vending/syndichem{ - onstation = 0; - req_access = null + onstation = 0 }, /turf/open/floor/iron, /area/station/medical/chemistry) diff --git a/_maps/map_files/tramstation/tramstation.dmm b/_maps/map_files/tramstation/tramstation.dmm index bcf24651157e8..9480252ff1386 100644 --- a/_maps/map_files/tramstation/tramstation.dmm +++ b/_maps/map_files/tramstation/tramstation.dmm @@ -56951,7 +56951,7 @@ /turf/closed/wall, /area/station/maintenance/port/aft) "tdR" = ( -/obj/machinery/vending/autodrobe/all_access, +/obj/machinery/vending/autodrobe, /obj/effect/turf_decal/tile/blue/opposingcorners{ dir = 1 }, diff --git a/_maps/map_files/wawastation/wawastation.dmm b/_maps/map_files/wawastation/wawastation.dmm index 47ed0380935d8..59c71329b21fb 100644 --- a/_maps/map_files/wawastation/wawastation.dmm +++ b/_maps/map_files/wawastation/wawastation.dmm @@ -15077,7 +15077,7 @@ /turf/open/floor/iron, /area/station/hallway/primary/central) "ftK" = ( -/obj/machinery/vending/autodrobe/all_access, +/obj/machinery/vending/autodrobe, /obj/effect/turf_decal/tile/red/half/contrasted, /obj/machinery/firealarm/directional/south, /turf/open/floor/iron/dark, @@ -33124,7 +33124,7 @@ /area/station/hallway/secondary/exit/departure_lounge) "lIZ" = ( /obj/effect/turf_decal/sand/plating, -/obj/machinery/vending/boozeomat/all_access, +/obj/machinery/vending/boozeomat, /turf/open/floor/plating, /area/station/maintenance/central/greater) "lJo" = ( @@ -34147,7 +34147,7 @@ /turf/open/floor/iron, /area/station/cargo/lobby) "mds" = ( -/obj/machinery/vending/autodrobe/all_access, +/obj/machinery/vending/autodrobe, /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/effect/turf_decal/delivery, /obj/machinery/camera/autoname/directional/west, diff --git a/_maps/shuttles/emergency_cruise.dmm b/_maps/shuttles/emergency_cruise.dmm index c111505c14789..13b160b653190 100644 --- a/_maps/shuttles/emergency_cruise.dmm +++ b/_maps/shuttles/emergency_cruise.dmm @@ -220,7 +220,7 @@ /turf/open/floor/iron, /area/shuttle/escape) "fL" = ( -/obj/machinery/vending/boozeomat/all_access, +/obj/machinery/vending/boozeomat, /turf/open/floor/carpet/executive, /area/shuttle/escape) "fY" = ( @@ -2262,7 +2262,7 @@ /turf/template_noop, /area/shuttle/escape) "Xu" = ( -/obj/machinery/vending/boozeomat/all_access, +/obj/machinery/vending/boozeomat, /obj/effect/turf_decal/siding/wood{ dir = 1 }, diff --git a/_maps/shuttles/emergency_humpback.dmm b/_maps/shuttles/emergency_humpback.dmm index f76d06925a343..195f342cd3caa 100644 --- a/_maps/shuttles/emergency_humpback.dmm +++ b/_maps/shuttles/emergency_humpback.dmm @@ -115,7 +115,7 @@ /area/shuttle/escape/brig) "gW" = ( /obj/structure/window/reinforced/plasma/spawner/directional/east, -/obj/machinery/vending/boozeomat/all_access, +/obj/machinery/vending/boozeomat, /turf/open/floor/mineral/plastitanium, /area/shuttle/escape) "hd" = ( diff --git a/_maps/shuttles/emergency_imfedupwiththisworld.dmm b/_maps/shuttles/emergency_imfedupwiththisworld.dmm index 6513f090c53c8..cf53733c42351 100644 --- a/_maps/shuttles/emergency_imfedupwiththisworld.dmm +++ b/_maps/shuttles/emergency_imfedupwiththisworld.dmm @@ -30,9 +30,7 @@ /area/shuttle/escape) "k" = ( /obj/machinery/light/directional/east, -/obj/machinery/vending/boozeomat{ - req_access = null - }, +/obj/machinery/vending/boozeomat, /obj/effect/turf_decal/tile/bar/opposingcorners, /turf/open/floor/iron, /area/shuttle/escape) diff --git a/_maps/shuttles/emergency_luxury.dmm b/_maps/shuttles/emergency_luxury.dmm index 74b18ef61b4de..1e1ae99d2ea5b 100644 --- a/_maps/shuttles/emergency_luxury.dmm +++ b/_maps/shuttles/emergency_luxury.dmm @@ -589,7 +589,7 @@ /turf/open/floor/carpet/green, /area/shuttle/escape/luxury) "zq" = ( -/obj/machinery/vending/boozeomat/all_access, +/obj/machinery/vending/boozeomat, /turf/closed/indestructible/riveted/plastinum/nodiagonal, /area/shuttle/escape/brig) "zt" = ( diff --git a/_maps/shuttles/emergency_tranquility.dmm b/_maps/shuttles/emergency_tranquility.dmm index 4563d89631cd6..ae3924becbc02 100644 --- a/_maps/shuttles/emergency_tranquility.dmm +++ b/_maps/shuttles/emergency_tranquility.dmm @@ -453,7 +453,7 @@ /area/shuttle/escape) "jb" = ( /obj/machinery/barsign/all_access/directional/north, -/obj/machinery/vending/boozeomat/all_access, +/obj/machinery/vending/boozeomat, /turf/open/floor/stone, /area/shuttle/escape) "jl" = ( diff --git a/_maps/shuttles/hunter_mi13_foodtruck.dmm b/_maps/shuttles/hunter_mi13_foodtruck.dmm index 5fe7324e8e83b..6ece8822d802a 100644 --- a/_maps/shuttles/hunter_mi13_foodtruck.dmm +++ b/_maps/shuttles/hunter_mi13_foodtruck.dmm @@ -123,7 +123,7 @@ /turf/open/floor/circuit/red/off, /area/shuttle/hunter/mi13_foodtruck) "eA" = ( -/obj/machinery/vending/medical/syndicate_access/cybersun, +/obj/machinery/vending/medical/syndicate/cybersun, /obj/machinery/airalarm/directional/west, /obj/effect/mapping_helpers/airalarm/syndicate_access, /turf/open/floor/circuit/red/off, diff --git a/_maps/shuttles/infiltrator_advanced.dmm b/_maps/shuttles/infiltrator_advanced.dmm index 9f93df25b0479..1800d638fc540 100644 --- a/_maps/shuttles/infiltrator_advanced.dmm +++ b/_maps/shuttles/infiltrator_advanced.dmm @@ -710,7 +710,7 @@ /area/shuttle/syndicate/eva) "bP" = ( /obj/effect/turf_decal/bot, -/obj/machinery/vending/medical/syndicate_access, +/obj/machinery/vending/medical/syndicate, /turf/open/floor/mineral/plastitanium, /area/shuttle/syndicate/medical) "bQ" = ( diff --git a/_maps/shuttles/pirate_default.dmm b/_maps/shuttles/pirate_default.dmm index 43c72a9d2bfa3..ae81515d1e635 100644 --- a/_maps/shuttles/pirate_default.dmm +++ b/_maps/shuttles/pirate_default.dmm @@ -567,7 +567,7 @@ /turf/open/floor/iron, /area/shuttle/pirate) "bH" = ( -/obj/machinery/vending/boozeomat/all_access{ +/obj/machinery/vending/boozeomat{ onstation = 0 }, /obj/effect/turf_decal/tile/bar/opposingcorners, diff --git a/_maps/shuttles/pirate_ex_interdyne.dmm b/_maps/shuttles/pirate_ex_interdyne.dmm index 4036972b7a87a..3896e755f85d9 100644 --- a/_maps/shuttles/pirate_ex_interdyne.dmm +++ b/_maps/shuttles/pirate_ex_interdyne.dmm @@ -775,7 +775,7 @@ /area/shuttle/pirate) "OL" = ( /obj/effect/turf_decal/tile/dark_blue/half/contrasted, -/obj/machinery/vending/medical/syndicate_access, +/obj/machinery/vending/medical/syndicate, /turf/open/floor/iron/dark, /area/shuttle/pirate) "Po" = ( diff --git a/_maps/shuttles/pirate_grey.dmm b/_maps/shuttles/pirate_grey.dmm index db02acbdd48f5..50594b83d9b59 100644 --- a/_maps/shuttles/pirate_grey.dmm +++ b/_maps/shuttles/pirate_grey.dmm @@ -183,7 +183,7 @@ /turf/open/floor/plating, /area/shuttle/pirate) "gQ" = ( -/obj/machinery/vending/boozeomat/all_access, +/obj/machinery/vending/boozeomat, /turf/closed/wall, /area/shuttle/pirate) "hk" = ( diff --git a/_maps/shuttles/pirate_irs.dmm b/_maps/shuttles/pirate_irs.dmm index 4fd5a8c357342..5969f9a209212 100644 --- a/_maps/shuttles/pirate_irs.dmm +++ b/_maps/shuttles/pirate_irs.dmm @@ -1642,7 +1642,7 @@ /turf/open/floor/wood, /area/shuttle/pirate) "QT" = ( -/obj/machinery/vending/boozeomat/all_access{ +/obj/machinery/vending/boozeomat{ onstation = 0 }, /turf/closed/wall/mineral/titanium, diff --git a/_maps/shuttles/pirate_silverscale.dmm b/_maps/shuttles/pirate_silverscale.dmm index 6d9c7537bde18..91d9d97ac0c8e 100644 --- a/_maps/shuttles/pirate_silverscale.dmm +++ b/_maps/shuttles/pirate_silverscale.dmm @@ -492,7 +492,7 @@ /turf/open/floor/iron/dark, /area/shuttle/pirate) "CW" = ( -/obj/machinery/vending/boozeomat/all_access{ +/obj/machinery/vending/boozeomat{ onstation = 0 }, /turf/open/floor/iron/dark/textured, @@ -967,7 +967,7 @@ /turf/open/floor/carpet/royalblack, /area/shuttle/pirate) "XB" = ( -/obj/machinery/vending/boozeomat/all_access{ +/obj/machinery/vending/boozeomat{ onstation = 0 }, /obj/machinery/light/small/directional/south, diff --git a/_maps/shuttles/whiteship_box.dmm b/_maps/shuttles/whiteship_box.dmm index 8aa60f4e93bd2..ed2e2a17b9077 100644 --- a/_maps/shuttles/whiteship_box.dmm +++ b/_maps/shuttles/whiteship_box.dmm @@ -1272,9 +1272,7 @@ /area/shuttle/abandoned/medbay) "cL" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/vending/medical{ - req_access = null - }, +/obj/machinery/vending/medical, /obj/machinery/airalarm/directional/north, /obj/effect/mapping_helpers/airalarm/all_access, /turf/open/floor/iron/white, diff --git a/_maps/shuttles/whiteship_cere.dmm b/_maps/shuttles/whiteship_cere.dmm index df697dc1739c1..fbcca99889a4e 100644 --- a/_maps/shuttles/whiteship_cere.dmm +++ b/_maps/shuttles/whiteship_cere.dmm @@ -581,7 +581,7 @@ /turf/open/floor/pod/dark, /area/shuttle/abandoned/cargo) "CC" = ( -/obj/machinery/vending/boozeomat/all_access, +/obj/machinery/vending/boozeomat, /obj/effect/decal/cleanable/dirt, /obj/machinery/airalarm/directional/east, /obj/effect/mapping_helpers/airalarm/unlocked, diff --git a/_maps/shuttles/whiteship_delta.dmm b/_maps/shuttles/whiteship_delta.dmm index efc2302379730..f75f87001b517 100644 --- a/_maps/shuttles/whiteship_delta.dmm +++ b/_maps/shuttles/whiteship_delta.dmm @@ -101,7 +101,7 @@ /turf/open/floor/plating, /area/shuttle/abandoned/crew) "ap" = ( -/obj/machinery/vending/boozeomat/all_access, +/obj/machinery/vending/boozeomat, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, diff --git a/_maps/shuttles/whiteship_obelisk.dmm b/_maps/shuttles/whiteship_obelisk.dmm index 0f1e07b1a213e..9a680e80e2b08 100644 --- a/_maps/shuttles/whiteship_obelisk.dmm +++ b/_maps/shuttles/whiteship_obelisk.dmm @@ -732,9 +732,7 @@ /turf/open/floor/mineral/titanium/white, /area/shuttle/abandoned/medbay) "Qp" = ( -/obj/machinery/vending/medical{ - req_access = null - }, +/obj/machinery/vending/medical, /turf/open/floor/mineral/titanium/white, /area/shuttle/abandoned/medbay) "RG" = ( diff --git a/_maps/templates/battlecruiser_starfury.dmm b/_maps/templates/battlecruiser_starfury.dmm index 59d6b325fdaac..15d7485c99bf3 100644 --- a/_maps/templates/battlecruiser_starfury.dmm +++ b/_maps/templates/battlecruiser_starfury.dmm @@ -1061,7 +1061,7 @@ }, /area/shuttle/sbc_starfury) "ea" = ( -/obj/machinery/vending/medical/syndicate_access/cybersun, +/obj/machinery/vending/medical/syndicate/cybersun, /turf/open/floor/iron, /area/shuttle/sbc_starfury) "ec" = ( @@ -1723,7 +1723,7 @@ /turf/open/floor/pod/light, /area/shuttle/sbc_starfury) "gH" = ( -/obj/machinery/vending/boozeomat/syndicate_access, +/obj/machinery/vending/boozeomat/syndicate, /obj/effect/turf_decal/siding/wood{ dir = 8 }, diff --git a/_maps/templates/shelter_3.dmm b/_maps/templates/shelter_3.dmm index d4681507a37e4..4e1c811d037ed 100644 --- a/_maps/templates/shelter_3.dmm +++ b/_maps/templates/shelter_3.dmm @@ -35,7 +35,7 @@ /turf/open/floor/pod/dark, /area/misc/survivalpod) "h" = ( -/obj/machinery/vending/boozeomat/all_access{ +/obj/machinery/vending/boozeomat{ onstation = 0 }, /turf/open/floor/pod/dark, diff --git a/_maps/virtual_domains/island_brawl.dmm b/_maps/virtual_domains/island_brawl.dmm index c9010062f54b1..62a63f81bab2e 100644 --- a/_maps/virtual_domains/island_brawl.dmm +++ b/_maps/virtual_domains/island_brawl.dmm @@ -3416,7 +3416,7 @@ /turf/open/floor/wood/parquet, /area/virtual_domain) "QX" = ( -/obj/machinery/vending/boozeomat/all_access{ +/obj/machinery/vending/boozeomat{ desc = "A technological marvel, supposedly able to mix just the mixture you'd like to drink the moment you ask for one. May not work for bartenders that don't have Nanotrasen bank accounts." }, /turf/open/floor/wood/large, @@ -3808,7 +3808,7 @@ /turf/open/floor/iron/dark/diagonal, /area/virtual_domain) "Uk" = ( -/obj/machinery/vending/autodrobe/all_access, +/obj/machinery/vending/autodrobe, /turf/open/misc/beach/sand, /area/virtual_domain/fullbright) "Um" = ( diff --git a/_maps/virtual_domains/meta_central.dmm b/_maps/virtual_domains/meta_central.dmm index bf821cc6e3433..1f14e6ffa5c4f 100644 --- a/_maps/virtual_domains/meta_central.dmm +++ b/_maps/virtual_domains/meta_central.dmm @@ -5023,7 +5023,7 @@ /turf/open/floor/iron, /area/virtual_domain) "PR" = ( -/obj/machinery/vending/boozeomat/syndicate_access, +/obj/machinery/vending/boozeomat/syndicate, /obj/effect/turf_decal/tile/bar, /turf/open/floor/iron, /area/virtual_domain) diff --git a/_maps/virtual_domains/syndicate_assault.dmm b/_maps/virtual_domains/syndicate_assault.dmm index d825152e480e7..d8c63675d77b2 100644 --- a/_maps/virtual_domains/syndicate_assault.dmm +++ b/_maps/virtual_domains/syndicate_assault.dmm @@ -1103,7 +1103,7 @@ /turf/open/floor/iron/dark, /area/virtual_domain) "SX" = ( -/obj/machinery/vending/medical/syndicate_access/cybersun, +/obj/machinery/vending/medical/syndicate/cybersun, /turf/open/floor/plastic, /area/virtual_domain) "TB" = ( diff --git a/code/modules/mapfluff/ruins/lavalandruin_code/syndicate_base.dm b/code/modules/mapfluff/ruins/lavalandruin_code/syndicate_base.dm index 26fdfcbb90bb0..c49b5c1399625 100644 --- a/code/modules/mapfluff/ruins/lavalandruin_code/syndicate_base.dm +++ b/code/modules/mapfluff/ruins/lavalandruin_code/syndicate_base.dm @@ -3,7 +3,6 @@ /obj/machinery/vending/syndichem name = "\improper SyndiChem" desc = "A vending machine full of grenades and grenade accessories. Sponsored by Donk Co." - req_access = list(ACCESS_SYNDICATE) products = list(/obj/item/stack/cable_coil = 5, /obj/item/assembly/igniter = 20, /obj/item/assembly/prox_sensor = 5, diff --git a/code/modules/mapfluff/ruins/spaceruin_code/forgottenship.dm b/code/modules/mapfluff/ruins/spaceruin_code/forgottenship.dm index e06c9bbb03608..fa39b7063ae12 100644 --- a/code/modules/mapfluff/ruins/spaceruin_code/forgottenship.dm +++ b/code/modules/mapfluff/ruins/spaceruin_code/forgottenship.dm @@ -13,41 +13,46 @@ GLOBAL_VAR_INIT(fscpassword, generate_password()) . = ..() password = "[GLOB.fscpassword]" -/obj/machinery/vending/medical/syndicate_access/cybersun +/obj/machinery/vending/medical/syndicate/cybersun name = "\improper CyberMed ++" desc = "An advanced vendor that dispenses medical drugs, both recreational and medicinal." - products = list(/obj/item/reagent_containers/syringe = 4, - /obj/item/healthanalyzer = 4, - /obj/item/reagent_containers/pill/patch/libital = 5, - /obj/item/reagent_containers/pill/patch/aiuri = 5, - /obj/item/reagent_containers/cup/bottle/multiver = 1, - /obj/item/reagent_containers/cup/bottle/syriniver = 1, - /obj/item/reagent_containers/cup/bottle/epinephrine = 3, - /obj/item/reagent_containers/cup/bottle/morphine = 3, - /obj/item/reagent_containers/cup/bottle/potass_iodide = 1, - /obj/item/reagent_containers/cup/bottle/salglu_solution = 3, - /obj/item/reagent_containers/syringe/antiviral = 5, - /obj/item/reagent_containers/medigel/libital = 2, - /obj/item/reagent_containers/medigel/aiuri = 2, - /obj/item/reagent_containers/medigel/sterilizine = 1) + products = list( + /obj/item/reagent_containers/syringe = 4, + /obj/item/healthanalyzer = 4, + /obj/item/reagent_containers/pill/patch/libital = 5, + /obj/item/reagent_containers/pill/patch/aiuri = 5, + /obj/item/reagent_containers/cup/bottle/multiver = 1, + /obj/item/reagent_containers/cup/bottle/syriniver = 1, + /obj/item/reagent_containers/cup/bottle/epinephrine = 3, + /obj/item/reagent_containers/cup/bottle/morphine = 3, + /obj/item/reagent_containers/cup/bottle/potass_iodide = 1, + /obj/item/reagent_containers/cup/bottle/salglu_solution = 3, + /obj/item/reagent_containers/syringe/antiviral = 5, + /obj/item/reagent_containers/medigel/libital = 2, + /obj/item/reagent_containers/medigel/aiuri = 2, + /obj/item/reagent_containers/medigel/sterilizine = 1, + ) contraband = list(/obj/item/reagent_containers/cup/bottle/cold = 2, - /obj/item/restraints/handcuffs = 4, - /obj/item/storage/backpack/duffelbag/syndie/surgery = 1, - /obj/item/storage/medkit/tactical = 1) - premium = list(/obj/item/storage/pill_bottle/psicodine = 2, - /obj/item/reagent_containers/hypospray/medipen = 3, - /obj/item/reagent_containers/hypospray/medipen/atropine = 2, - /obj/item/storage/medkit/regular = 3, - /obj/item/storage/medkit/brute = 1, - /obj/item/storage/medkit/fire = 1, - /obj/item/storage/medkit/toxin = 1, - /obj/item/storage/medkit/o2 = 1, - /obj/item/storage/medkit/advanced = 1, - /obj/item/defibrillator/loaded = 1, - /obj/item/wallframe/defib_mount = 1, - /obj/item/sensor_device = 2, - /obj/item/pinpointer/crew = 2, - /obj/item/shears = 1) + /obj/item/restraints/handcuffs = 4, + /obj/item/storage/backpack/duffelbag/syndie/surgery = 1, + /obj/item/storage/medkit/tactical = 1, + ) + premium = list( + /obj/item/storage/pill_bottle/psicodine = 2, + /obj/item/reagent_containers/hypospray/medipen = 3, + /obj/item/reagent_containers/hypospray/medipen/atropine = 2, + /obj/item/storage/medkit/regular = 3, + /obj/item/storage/medkit/brute = 1, + /obj/item/storage/medkit/fire = 1, + /obj/item/storage/medkit/toxin = 1, + /obj/item/storage/medkit/o2 = 1, + /obj/item/storage/medkit/advanced = 1, + /obj/item/defibrillator/loaded = 1, + /obj/item/wallframe/defib_mount = 1, + /obj/item/sensor_device = 2, + /obj/item/pinpointer/crew = 2, + /obj/item/shears = 1, + ) /////////// forgottenship lore diff --git a/code/modules/vending/autodrobe.dm b/code/modules/vending/autodrobe.dm index 8211b05553d8b..e0e079b6e8cc6 100644 --- a/code/modules/vending/autodrobe.dm +++ b/code/modules/vending/autodrobe.dm @@ -224,7 +224,6 @@ GLOBAL_VAR_INIT(all_autodrobe_items, (autodrobe_costumes_items +\ icon_state = "theater" icon_deny = "theater-deny" panel_type = "panel16" - req_access = list(ACCESS_THEATRE) product_slogans = "Dress for success!;Suited and booted!;It's show time!;Why leave style up to fate? Use AutoDrobe!" vend_reply = "Thank you for using AutoDrobe!" @@ -236,7 +235,7 @@ GLOBAL_VAR_INIT(all_autodrobe_items, (autodrobe_costumes_items +\ default_price = PAYCHECK_CREW * 0.8 //Default of 40. extra_price = PAYCHECK_COMMAND payment_department = ACCOUNT_SRV - light_mask="theater-light-mask" + light_mask = "theater-light-mask" /obj/machinery/vending/autodrobe/Initialize(mapload) product_categories = list( @@ -281,9 +280,6 @@ GLOBAL_VAR_INIT(all_autodrobe_items, (autodrobe_costumes_items +\ . = ..() -/obj/machinery/vending/autodrobe/all_access - desc = "A vending machine for costumes. This model appears to have no access restrictions." - req_access = null /obj/item/vending_refill/autodrobe machine_name = "AutoDrobe" icon_state = "refill_costume" diff --git a/code/modules/vending/boozeomat.dm b/code/modules/vending/boozeomat.dm index 791b1c6f71562..f05dcb3e9f17f 100644 --- a/code/modules/vending/boozeomat.dm +++ b/code/modules/vending/boozeomat.dm @@ -85,19 +85,13 @@ product_slogans = "I hope nobody asks me for a bloody cup o' tea...;Alcohol is humanity's friend. Would you abandon a friend?;Quite delighted to serve you!;Is nobody thirsty on this station?" product_ads = "Drink up!;Booze is good for you!;Alcohol is humanity's best friend.;Quite delighted to serve you!;Care for a nice, cold beer?;Nothing cures you like booze!;Have a sip!;Have a drink!;Have a beer!;Beer is good for you!;Only the finest alcohol!;Best quality booze since 2053!;Award-winning wine!;Maximum alcohol!;Man loves beer.;A toast for progress!" - req_access = list(ACCESS_BAR) refill_canister = /obj/item/vending_refill/boozeomat default_price = PAYCHECK_CREW * 0.9 extra_price = PAYCHECK_COMMAND payment_department = ACCOUNT_SRV light_mask = "boozeomat-light-mask" -/obj/machinery/vending/boozeomat/all_access - desc = "A technological marvel, supposedly able to mix just the mixture you'd like to drink the moment you ask for one. This model appears to have no access restrictions." - req_access = null - -/obj/machinery/vending/boozeomat/syndicate_access - req_access = list(ACCESS_SYNDICATE) +/obj/machinery/vending/boozeomat/syndicate age_restrictions = FALSE initial_language_holder = /datum/language_holder/syndicate diff --git a/code/modules/vending/cartridge.dm b/code/modules/vending/cartridge.dm index 7c4a2c9578d70..ccc13b7de720a 100644 --- a/code/modules/vending/cartridge.dm +++ b/code/modules/vending/cartridge.dm @@ -19,7 +19,7 @@ default_price = PAYCHECK_COMMAND extra_price = PAYCHECK_COMMAND * 2.5 payment_department = ACCOUNT_SRV - light_mask="cart-light-mask" + light_mask = "cart-light-mask" /obj/item/vending_refill/cart machine_name = "PTech" diff --git a/code/modules/vending/cigarette.dm b/code/modules/vending/cigarette.dm index 61379e5635468..902e34e04f06c 100644 --- a/code/modules/vending/cigarette.dm +++ b/code/modules/vending/cigarette.dm @@ -75,7 +75,7 @@ machine_name = "ShadyCigs Deluxe" icon_state = "refill_smoke" -/obj/machinery/vending/cigarette/pre_throw(obj/item/I) - if(istype(I, /obj/item/lighter)) - var/obj/item/lighter/L = I - L.set_lit(TRUE) +/obj/machinery/vending/cigarette/pre_throw(obj/item/thrown_item) + if(istype(thrown_item, /obj/item/lighter)) + var/obj/item/lighter/thrown_lighter = thrown_item + thrown_lighter.set_lit(TRUE) diff --git a/code/modules/vending/cola.dm b/code/modules/vending/cola.dm index dd4a4dd4b99b5..d9fddd07f1731 100644 --- a/code/modules/vending/cola.dm +++ b/code/modules/vending/cola.dm @@ -36,7 +36,6 @@ extra_price = PAYCHECK_CREW payment_department = ACCOUNT_SRV - /obj/item/vending_refill/cola machine_name = "Robust Softdrinks" icon_state = "refill_cola" diff --git a/code/modules/vending/engineering.dm b/code/modules/vending/engineering.dm index 48da7e27b1286..f360b89a07fae 100644 --- a/code/modules/vending/engineering.dm +++ b/code/modules/vending/engineering.dm @@ -5,7 +5,6 @@ icon_state = "engi" icon_deny = "engi-deny" panel_type = "panel10" - req_access = list(ACCESS_ENGINE_EQUIP) products = list( /obj/item/clothing/under/rank/engineering/chief_engineer = 4, /obj/item/clothing/under/rank/engineering/engineer = 4, diff --git a/code/modules/vending/engivend.dm b/code/modules/vending/engivend.dm index 1522d0047b098..f33f746b6b76f 100644 --- a/code/modules/vending/engivend.dm +++ b/code/modules/vending/engivend.dm @@ -4,7 +4,6 @@ icon_state = "engivend" icon_deny = "engivend-deny" panel_type = "panel10" - req_access = list(ACCESS_ENGINE_EQUIP) products = list( /obj/item/clothing/glasses/meson/engine = 2, /obj/item/clothing/glasses/welding = 3, diff --git a/code/modules/vending/medical.dm b/code/modules/vending/medical.dm index 2209f550fce28..be78e15847d13 100644 --- a/code/modules/vending/medical.dm +++ b/code/modules/vending/medical.dm @@ -5,7 +5,6 @@ icon_deny = "med-deny" panel_type = "panel11" product_ads = "Go save some lives!;The best stuff for your medbay.;Only the finest tools.;Natural chemicals!;This stuff saves lives.;Don't you want some?;Ping!" - req_access = list(ACCESS_MEDICAL) products = list( /obj/item/stack/medical/gauze = 8, /obj/item/reagent_containers/syringe = 12, @@ -45,13 +44,11 @@ machine_name = "NanoMed Plus" icon_state = "refill_medical" -/obj/machinery/vending/medical/syndicate_access +/obj/machinery/vending/medical/syndicate name = "\improper SyndiMed Plus" - req_access = list(ACCESS_SYNDICATE) initial_language_holder = /datum/language_holder/syndicate /obj/machinery/vending/medical/infested_frigate - req_access = list("theatre") products = list( /obj/item/stack/medical/gauze = 0, /obj/item/reagent_containers/syringe = 7, @@ -75,7 +72,6 @@ icon_deny = "drug-deny" panel_type = "panel11" product_ads = "Go save some lives!;The best stuff for your medbay.;Only the finest tools.;Natural chemicals!;This stuff saves lives.;Don't you want some?;Ping!" - req_access = list(ACCESS_MEDICAL) products = list( /obj/item/reagent_containers/pill/patch/libital = 5, /obj/item/reagent_containers/pill/patch/aiuri = 5, @@ -93,17 +89,17 @@ /obj/item/reagent_containers/medigel/libital = 2, /obj/item/reagent_containers/medigel/aiuri = 2, /obj/item/reagent_containers/medigel/sterilizine = 1, - ) + ) contraband = list( /obj/item/reagent_containers/pill/tox = 3, /obj/item/reagent_containers/pill/morphine = 4, /obj/item/reagent_containers/pill/multiver = 6, - ) + ) premium = list( /obj/item/reagent_containers/medigel/synthflesh = 2, /obj/item/storage/pill_bottle/psicodine = 2, /obj/item/storage/pill_bottle/sansufentanyl = 1, - ) + ) default_price = 50 extra_price = 100 payment_department = ACCOUNT_MED diff --git a/code/modules/vending/robotics.dm b/code/modules/vending/robotics.dm index 8796e8d756192..8496404195386 100644 --- a/code/modules/vending/robotics.dm +++ b/code/modules/vending/robotics.dm @@ -6,7 +6,6 @@ icon_deny = "robotics-deny" panel_type = "panel14" light_mask = "robotics-light-mask" - req_access = list(ACCESS_ROBOTICS) products = list( /obj/item/clothing/suit/toggle/labcoat = 4, /obj/item/clothing/under/rank/rnd/roboticist = 4, diff --git a/code/modules/vending/security.dm b/code/modules/vending/security.dm index 7bed3ccec0645..a86f5562862d9 100644 --- a/code/modules/vending/security.dm +++ b/code/modules/vending/security.dm @@ -6,7 +6,6 @@ icon_deny = "sec-deny" panel_type = "panel6" light_mask = "sec-light-mask" - req_access = list(ACCESS_SECURITY) products = list( /obj/item/restraints/handcuffs = 8, /obj/item/restraints/handcuffs/cable/zipties = 10, @@ -38,14 +37,14 @@ extra_price = PAYCHECK_COMMAND * 1.5 payment_department = ACCOUNT_SEC -/obj/machinery/vending/security/pre_throw(obj/item/I) - if(isgrenade(I)) - var/obj/item/grenade/G = I - G.arm_grenade() - else if(istype(I, /obj/item/flashlight)) - var/obj/item/flashlight/F = I - F.set_light_on(TRUE) - F.update_brightness() +/obj/machinery/vending/security/pre_throw(obj/item/thrown_item) + if(isgrenade(thrown_item)) + var/obj/item/grenade/thrown_grenade = thrown_item + thrown_grenade.arm_grenade() + else if(istype(thrown_item, /obj/item/flashlight)) + var/obj/item/flashlight/thrown_flashlight = thrown_item + thrown_flashlight.set_light_on(TRUE) + thrown_flashlight.update_brightness() /obj/item/vending_refill/security machine_name = "SecTech" diff --git a/tools/UpdatePaths/Scripts/99999_drying_rack_rename.txt b/tools/UpdatePaths/Scripts/85141_drying_rack_rename.txt similarity index 100% rename from tools/UpdatePaths/Scripts/99999_drying_rack_rename.txt rename to tools/UpdatePaths/Scripts/85141_drying_rack_rename.txt diff --git a/tools/UpdatePaths/Scripts/86550_repaths_access_vending_machines.txt b/tools/UpdatePaths/Scripts/86550_repaths_access_vending_machines.txt new file mode 100644 index 0000000000000..84237a0dc5f43 --- /dev/null +++ b/tools/UpdatePaths/Scripts/86550_repaths_access_vending_machines.txt @@ -0,0 +1,8 @@ +#comment Repaths some access vending machines because access restrictions for vending machines no longer exist + +/obj/machinery/vending/autodrobe/all_access : /obj/machinery/vending/autodrobe{@OLD} +/obj/machinery/vending/boozeomat/all_access : /obj/machinery/vending/boozeomat{@OLD} + +/obj/machinery/vending/boozeomat/syndicate_access : /obj/machinery/vending/boozeomat/syndicate{@OLD} +/obj/machinery/vending/medical/syndicate_access : /obj/machinery/vending/medical/syndicate{@OLD} +/obj/machinery/vending/medical/syndicate_access/@SUBTYPES : /obj/machinery/vending/medical/syndicate/@SUBTYPES{@OLD} From 69176298edf0e02e25b5bdc1fc1fe2670e6d2d76 Mon Sep 17 00:00:00 2001 From: klorpa <30924131+klorpa@users.noreply.github.com> Date: Tue, 10 Sep 2024 10:04:59 -0500 Subject: [PATCH 028/350] Spelling Fixes (#86056) ## About The Pull Request Fixes several errors to spelling, grammar, and punctuation. ## Why It's Good For The Game Improves readability and user experience. ## Changelog :cl: spellcheck: fixed a few typos /:cl: --- code/datums/ruins/icemoon.dm | 2 +- code/datums/ruins/lavaland.dm | 2 +- code/datums/ruins/space.dm | 10 +++---- code/datums/shuttles/_shuttle.dm | 4 +-- code/datums/shuttles/emergency.dm | 12 ++++---- code/datums/station_traits/_station_trait.dm | 2 +- code/datums/station_traits/negative_traits.dm | 12 ++++---- code/game/atom/atom_tool_acts.dm | 4 +-- .../game/atom/atoms_initializing_EXPENSIVE.dm | 28 +++++++++---------- code/game/gamemodes/objective.dm | 2 +- .../infuser_tier_zero_entries.dm | 2 +- .../machinery/telecomms/computers/message.dm | 2 +- code/game/objects/items/defib.dm | 4 +-- code/game/objects/items/rcd/RCD.dm | 16 +++++------ code/game/objects/items/rcd/RHD.dm | 2 +- .../objects/items/stacks/sheets/sheets.dm | 2 +- code/game/objects/items/stacks/stack.dm | 2 +- .../objects/items/stacks/tiles/tile_types.dm | 4 +-- code/game/objects/items/tcg/tcg.dm | 16 +++++------ .../construction_actions.dm | 2 +- .../structures/crates_lockers/closets.dm | 6 ++-- code/game/objects/structures/displaycase.dm | 2 +- .../objects/structures/lavaland/ore_vent.dm | 2 +- code/game/objects/structures/maintenance.dm | 6 ++-- code/game/objects/structures/pinatas.dm | 2 +- code/game/objects/structures/signs/_signs.dm | 4 +-- code/game/turfs/turf.dm | 8 +++--- .../admin/view_variables/view_variables.dm | 4 +-- .../antagonists/blob/structures/core.dm | 2 +- .../antagonists/cult/cult_objectives.dm | 2 +- .../antagonists/cult/cult_structures.dm | 2 +- .../modules/antagonists/heretic/influences.dm | 2 +- .../wizard/grand_ritual/grand_rune.dm | 4 +-- code/modules/assembly/flash.dm | 6 ++-- code/modules/asset_cache/assets/rtd.dm | 2 +- .../atmospherics/gasmixtures/gas_mixture.dm | 6 ++-- .../atmospherics/gasmixtures/gas_types.dm | 10 +++---- .../gasmixtures/reaction_factors.dm | 4 +-- .../atmospherics/gasmixtures/reactions.dm | 8 +++--- .../atmospherics/machinery/atmosmachinery.dm | 8 +++--- .../machinery/components/fusion/hfr_procs.dm | 2 +- .../gas_recipe_machines/crystallizer.dm | 2 +- .../gas_recipe_machines/crystallizer_items.dm | 2 +- code/modules/awaymissions/cordon.dm | 4 +-- .../capture_the_flag/ctf_controller.dm | 10 +++---- .../capture_the_flag/ctf_map_loading.dm | 2 +- .../capture_the_flag/ctf_player_component.dm | 2 +- code/modules/cargo/bounties/science.dm | 2 +- code/modules/cargo/order.dm | 2 +- code/modules/cargo/orderconsole.dm | 2 +- code/modules/clothing/spacesuits/pirate.dm | 4 +-- code/modules/events/_event.dm | 10 +++---- code/modules/fishing/fish/fish_traits.dm | 4 +-- .../surgery/organs/external/_visual_organs.dm | 2 +- .../surgery/organs/external/restyling.dm | 8 +++--- .../modules/unit_tests/stack_singular_name.dm | 4 +-- .../mecha/equipment/tools/work_tools.dm | 4 +-- code/modules/vehicles/sealed.dm | 2 +- config/config.txt | 12 ++++---- config/game_options.txt | 14 +++++----- config/jukebox_music/LICENSE.txt | 4 +-- config/policy.json | 2 +- config/resources.txt | 2 +- config/title_music/LICENSE.txt | 4 +-- config/title_screens/LICENSE.txt | 4 +-- 65 files changed, 165 insertions(+), 165 deletions(-) diff --git a/code/datums/ruins/icemoon.dm b/code/datums/ruins/icemoon.dm index 2445b4da242e6..9f89024f71cac 100644 --- a/code/datums/ruins/icemoon.dm +++ b/code/datums/ruins/icemoon.dm @@ -64,7 +64,7 @@ /datum/map_template/ruin/icemoon/frozen_phonebooth name = "Ice-Ruin Frozen Phonebooth" id = "frozen_phonebooth" - description = "A venture by nanotrasen to help popularize the use of holopads. This one was sent to a icemoon." + description = "A venture by Nanotrasen to help popularize the use of holopads. This one was sent to a icemoon." suffix = "icemoon_surface_phonebooth.dmm" /datum/map_template/ruin/icemoon/smoking_room diff --git a/code/datums/ruins/lavaland.dm b/code/datums/ruins/lavaland.dm index bb5f58500e2d1..fb2d1d44c0c08 100644 --- a/code/datums/ruins/lavaland.dm +++ b/code/datums/ruins/lavaland.dm @@ -278,7 +278,7 @@ /datum/map_template/ruin/lavaland/lava_phonebooth name = "Lava-Ruin Phonebooth" id = "lava_phonebooth" - description = "A venture by nanotrasen to help popularize the use of holopads. This one somehow made its way here." + description = "A venture by Nanotrasen to help popularize the use of holopads. This one somehow made its way here." suffix = "lavaland_surface_phonebooth.dmm" allow_duplicates = FALSE cost = 5 diff --git a/code/datums/ruins/space.dm b/code/datums/ruins/space.dm index e3ff61fad6c25..790ae33ade4b1 100644 --- a/code/datums/ruins/space.dm +++ b/code/datums/ruins/space.dm @@ -49,7 +49,7 @@ id = "asteroid6" suffix = "asteroid6.dmm" name = "Space-Ruin Asteroid 6" - description = "This asteroid has brittle bone disease, so it is fortunate asteroids dont have bones." + description = "This asteroid has brittle bone disease, so it is fortunate asteroids don't have bones." /datum/map_template/ruin/space/deep_storage id = "deep-storage" @@ -70,7 +70,7 @@ suffix = "derelict_construction.dmm" name = "Space-Ruin Derelict Construction" description = "Construction supplies are in high demand due to non-trivial damage routinely sustained by most space stations in this sector. \ - Space pirates who dont attempt to rob corporate research stations with only 3 collaborators live long enough to sell captured construction \ + Space pirates who don't attempt to rob corporate research stations with only 3 collaborators live long enough to sell captured construction \ equipment back to the highest bidder." /datum/map_template/ruin/space/derelict_sulaco @@ -181,7 +181,7 @@ id = "spacehotel" suffix = "spacehotel.dmm" name = "Space-Ruin The Twin-Nexus Hotel" - description = "An interstellar hotel, where the weary spaceman can rest their head and relax, assured that the residental staff will not murder them in their sleep. Probably." + description = "An interstellar hotel, where the weary spaceman can rest their head and relax, assured that the residential staff will not murder them in their sleep. Probably." /datum/map_template/ruin/space/turreted_outpost id = "turreted-outpost" @@ -470,7 +470,7 @@ id = "Space_phonebooth" suffix = "phonebooth.dmm" name = "Space-Ruin Phonebooth" - description = "A venture by nanotrasen to help popularize the use of holopads." + description = "A venture by Nanotrasen to help popularize the use of holopads." /datum/map_template/ruin/space/the_outlet id = "the_outlet" @@ -500,7 +500,7 @@ id = "garbagetruck3" suffix = "garbagetruck3.dmm" name = "Space-Ruin Decommissioned Garbage Truck NX3" - description = "An NX-760 interstellar transport barge. At the end of their life cycle, they are often filled with trash and launched into unexplored space to become someone else's problem. This one is full of industrial garbage, and a russian drug den." + description = "An NX-760 interstellar transport barge. At the end of their life cycle, they are often filled with trash and launched into unexplored space to become someone else's problem. This one is full of industrial garbage, and a Russian drug den." /datum/map_template/ruin/space/garbagetruck4 id = "garbagetruck4" diff --git a/code/datums/shuttles/_shuttle.dm b/code/datums/shuttles/_shuttle.dm index 0100a3d85da3d..94c20d41b7365 100644 --- a/code/datums/shuttles/_shuttle.dm +++ b/code/datums/shuttles/_shuttle.dm @@ -14,7 +14,7 @@ var/description /// The recommended occupancy limit for the shuttle (count chairs, beds, and benches then round to 5) var/occupancy_limit - /// Description of the prerequisition that has to be achieved for the shuttle to be purchased + /// Description of the prerequisite that has to be achieved for the shuttle to be purchased var/prerequisites /// Shuttle warnings and hazards to the admin who spawns the shuttle var/admin_notes @@ -40,7 +40,7 @@ . = ..() /datum/map_template/shuttle/preload_size(path, cache) - . = ..(path, TRUE) // Done this way because we still want to know if someone actualy wanted to cache the map + . = ..(path, TRUE) // Done this way because we still want to know if someone actually wanted to cache the map if(!cached_map) return diff --git a/code/datums/shuttles/emergency.dm b/code/datums/shuttles/emergency.dm index 42e3566ccfef1..f7299ed2e93d9 100644 --- a/code/datums/shuttles/emergency.dm +++ b/code/datums/shuttles/emergency.dm @@ -164,7 +164,7 @@ /datum/map_template/shuttle/emergency/arena suffix = "arena" name = "The Arena" - description = "The crew must pass through an otherworldy arena to board this shuttle. Expect massive casualties." + description = "The crew must pass through an otherworldly arena to board this shuttle. Expect massive casualties." prerequisites = "The source of the Bloody Signal must be tracked down and eliminated to unlock this shuttle." admin_notes = "RIP AND TEAR." credit_cost = CARGO_CRATE_VALUE * 20 @@ -241,7 +241,7 @@ suffix = "kilo" name = "Kilo Station Emergency Shuttle" credit_cost = CARGO_CRATE_VALUE * 10 - description = "A fully functional shuttle including a complete infirmary, storage facilties and regular amenities." + description = "A fully functional shuttle including a complete infirmary, storage facilities and regular amenities." occupancy_limit = "55" /datum/map_template/shuttle/emergency/mini @@ -400,15 +400,15 @@ /datum/map_template/shuttle/emergency/monkey suffix = "nature" name = "Dynamic Environmental Interaction Shuttle" - description = "A large shuttle with a center biodome that is flourishing with life. Frolick with the monkeys! (Extra monkeys are stored on the bridge.)" - admin_notes = "Pretty freakin' large, almost as big as Raven or Cere. Excercise caution with it." + description = "A large shuttle with a center biodome that is flourishing with life. Frolic with the monkeys! (Extra monkeys are stored on the bridge.)" + admin_notes = "Pretty freakin' large, almost as big as Raven or Cere. Exercise caution with it." credit_cost = CARGO_CRATE_VALUE * 16 occupancy_limit = "45" /datum/map_template/shuttle/emergency/casino suffix = "casino" name = "Lucky Jackpot Casino Shuttle" - description = "A luxurious casino packed to the brim with everything you need to start new gambling addicitions!" + description = "A luxurious casino packed to the brim with everything you need to start new gambling addictions!" admin_notes = "The ship is a bit chunky, so watch where you park it." credit_cost = 7777 occupancy_limit = "85" @@ -424,7 +424,7 @@ /datum/map_template/shuttle/emergency/fish suffix = "fish" name = "Angler's Choice Emergency Shuttle" - description = "Trades such amenities as 'storage space' and 'sufficient seating' for an artifical environment ideal for fishing, plus ample supplies (also for fishing)." + description = "Trades such amenities as 'storage space' and 'sufficient seating' for an artificial environment ideal for fishing, plus ample supplies (also for fishing)." admin_notes = "There's a chasm in it, it has railings but that won't stop determined players." credit_cost = CARGO_CRATE_VALUE * 10 occupancy_limit = "35" diff --git a/code/datums/station_traits/_station_trait.dm b/code/datums/station_traits/_station_trait.dm index ef91a183d9f27..faced37eb3aa0 100644 --- a/code/datums/station_traits/_station_trait.dm +++ b/code/datums/station_traits/_station_trait.dm @@ -33,7 +33,7 @@ GLOBAL_LIST_EMPTY(lobby_station_traits) var/list/lobby_buttons = list() /// The ID that we look for in dynamic.json. Not synced with 'name' because I can already see this go wrong var/dynamic_threat_id - /// If ran during dynamic, do we reduce the total threat? Will be overriden by config if set + /// If ran during dynamic, do we reduce the total threat? Will be overridden by config if set var/threat_reduction = 0 /// Which ruleset flags to allow dynamic to use. null to disregard var/dynamic_category = null diff --git a/code/datums/station_traits/negative_traits.dm b/code/datums/station_traits/negative_traits.dm index 83d1bfa14f4c9..fc7fd4c01ef7f 100644 --- a/code/datums/station_traits/negative_traits.dm +++ b/code/datums/station_traits/negative_traits.dm @@ -26,7 +26,7 @@ report_message = "Due to an ongoing strike announced by the postal workers union, mail won't be delivered this shift." /datum/station_trait/mail_blocked/on_round_start() - //This is either a holiday or sunday... well then, let's flip the situation. + //This is either a holiday or Sunday... well then, let's flip the situation. if(SSeconomy.mail_blocked) name = "Postal system overtime" report_message = "Despite being a day off, the postal system is working overtime today. Mail will be delivered this shift." @@ -343,7 +343,7 @@ /datum/station_trait/random_event_weight_modifier/dust_storms name = "Dust Stormfront" - report_message = "The space around your station is clouded by heavy pockets of space dust. Expect an increased likelyhood of space dust storms damaging the station hull." + report_message = "The space around your station is clouded by heavy pockets of space dust. Expect an increased likelihood of space dust storms damaging the station hull." trait_type = STATION_TRAIT_NEGATIVE weight = 2 cost = STATION_TRAIT_COST_LOW @@ -614,10 +614,10 @@ //Send a nebula shielding unit to engineering var/datum/supply_pack/supply_pack_shielding = new /datum/supply_pack/engineering/rad_nebula_shielding_kit() if(!send_supply_pod_to_area(supply_pack_shielding.generate(null), /area/station/engineering/main, /obj/structure/closet/supplypod/centcompod)) - //if engineering isnt valid, just send it to the bridge + //if engineering isn't valid, just send it to the bridge send_supply_pod_to_area(supply_pack_shielding.generate(null), /area/station/command/bridge, /obj/structure/closet/supplypod/centcompod) - // Let medical know resistence is futile + // Let medical know resistance is futile if (/area/station/medical/virology in GLOB.areas_by_type) send_fax_to_area( new /obj/item/paper/fluff/radiation_nebula_virologist, @@ -656,7 +656,7 @@ if(!istype(get_area(spawned_mob), radioactive_areas)) //only if you're spawned in the radioactive areas return - if(!isliving(spawned_mob)) // Dynamic shouldnt spawn non-living but uhhhhhhh why not + if(!isliving(spawned_mob)) // Dynamic shouldn't spawn non-living but uhhhhhhh why not return var/mob/living/spawnee = spawned_mob @@ -696,7 +696,7 @@ /datum/station_trait/nebula/hostile/radiation/send_instructions() var/obj/machinery/nebula_shielding/shielder = /obj/machinery/nebula_shielding/radiation var/obj/machinery/gravity_generator/main/innate_shielding = /obj/machinery/gravity_generator/main - //How long do we have untill the first shielding unit needs to be up? + //How long do we have until the first shielding unit needs to be up? var/deadline = "[(initial(innate_shielding.radioactive_nebula_shielding) * intensity_increment_time) / (1 MINUTES)] minute\s" //For how long each shielding unit will protect for var/shielder_time = "[(initial(shielder.shielding_strength) * intensity_increment_time) / (1 MINUTES)] minute\s" diff --git a/code/game/atom/atom_tool_acts.dm b/code/game/atom/atom_tool_acts.dm index 10bed5a407760..6fe1ffefc5d05 100644 --- a/code/game/atom/atom_tool_acts.dm +++ b/code/game/atom/atom_tool_acts.dm @@ -1,7 +1,7 @@ /** * ## Item interaction * - * Handles non-combat iteractions of a tool on this atom, + * Handles non-combat interactions of a tool on this atom, * such as using a tool on a wall to deconstruct it, * or scanning someone with a health analyzer */ @@ -61,7 +61,7 @@ * * Handles the tool_acts in particular, such as wrenches and screwdrivers. * - * This can be overriden to handle unique "tool interactions" + * This can be overridden to handle unique "tool interactions" * IE using an item like a tool (when it's not actually one) * This is particularly useful for things that shouldn't be inserted into storage * (because tool acting runs before storage checks) diff --git a/code/game/atom/atoms_initializing_EXPENSIVE.dm b/code/game/atom/atoms_initializing_EXPENSIVE.dm index c603ae5514810..205617fdbc8f9 100644 --- a/code/game/atom/atoms_initializing_EXPENSIVE.dm +++ b/code/game/atom/atoms_initializing_EXPENSIVE.dm @@ -57,14 +57,14 @@ * Called when an atom is created in byond (built in engine proc) * * Not a lot happens here in SS13 code, as we offload most of the work to the - * [Intialization][/atom/proc/Initialize] proc, mostly we run the preloader + * [Initialization][/atom/proc/Initialize] proc, mostly we run the preloader * if the preloader is being used and then call [InitAtom][/datum/controller/subsystem/atoms/proc/InitAtom] of which the ultimate - * result is that the Intialize proc is called. + * result is that the Initialize proc is called. * */ /atom/New(loc, ...) //atom creation method that preloads variables at creation - if(GLOB.use_preloader && src.type == GLOB._preloader_path)//in case the instanciated atom is creating other atoms in New() + if(GLOB.use_preloader && src.type == GLOB._preloader_path)//in case the instantiated atom is creating other atoms in New() world.preloader_load(src) var/do_initialize = SSatoms.initialized @@ -80,17 +80,17 @@ * we don't use New as we have better control over when this is called and we can choose * to delay calls or hook other logic in and so forth * - * During roundstart map parsing, atoms are queued for intialization in the base atom/New(), - * After the map has loaded, then Initalize is called on all atoms one by one. NB: this - * is also true for loading map templates as well, so they don't Initalize until all objects + * During roundstart map parsing, atoms are queued for initialization in the base atom/New(), + * After the map has loaded, then Initialize is called on all atoms one by one. NB: this + * is also true for loading map templates as well, so they don't Initialize until all objects * in the map file are parsed and present in the world * * If you're creating an object at any point after SSInit has run then this proc will be * immediately be called from New. * - * mapload: This parameter is true if the atom being loaded is either being intialized during - * the Atom subsystem intialization, or if the atom is being loaded from the map template. - * If the item is being created at runtime any time after the Atom subsystem is intialized then + * mapload: This parameter is true if the atom being loaded is either being initialized during + * the Atom subsystem initialization, or if the atom is being loaded from the map template. + * If the item is being created at runtime any time after the Atom subsystem is initialized then * it's false. * * The mapload argument occupies the same position as loc when Initialize() is called by New(). @@ -98,7 +98,7 @@ * with mapload at the end of atom/New() before this proc (atom/Initialize()) is called. * * You must always call the parent of this proc, otherwise failures will occur as the item - * will not be seen as initalized (this can lead to all sorts of strange behaviour, like + * will not be seen as initialized (this can lead to all sorts of strange behaviour, like * the item being completely unclickable) * * You must not sleep in this proc, or any subprocs @@ -136,7 +136,7 @@ if(uses_integrity) atom_integrity = max_integrity - TEST_ONLY_ASSERT((!armor || istype(armor)), "[type] has an armor that contains an invalid value at intialize") + TEST_ONLY_ASSERT((!armor || istype(armor)), "[type] has an armor that contains an invalid value at initialize") // apply materials properly from the default custom_materials value // This MUST come after atom_integrity is set above, as if old materials get removed, @@ -150,14 +150,14 @@ return INITIALIZE_HINT_NORMAL /** - * Late Intialization, for code that should run after all atoms have run Intialization + * Late Initialization, for code that should run after all atoms have run Initialization * - * To have your LateIntialize proc be called, your atoms [Initalization][/atom/proc/Initialize] + * To have your LateIntialize proc be called, your atoms [Initialization][/atom/proc/Initialize] * proc must return the hint * [INITIALIZE_HINT_LATELOAD] otherwise it will never be called. * * useful for doing things like finding other machines on GLOB.machines because you can guarantee - * that all atoms will actually exist in the "WORLD" at this time and that all their Intialization + * that all atoms will actually exist in the "WORLD" at this time and that all their Initialization * code has been run */ /atom/proc/LateInitialize() diff --git a/code/game/gamemodes/objective.dm b/code/game/gamemodes/objective.dm index bce9ed3bb9375..b2df8d7416dde 100644 --- a/code/game/gamemodes/objective.dm +++ b/code/game/gamemodes/objective.dm @@ -353,7 +353,7 @@ GLOBAL_LIST(admin_objective_list) //Prefilled admin assignable objective list return FALSE if(human_check) brain_target = target.current?.get_organ_slot(ORGAN_SLOT_BRAIN) - //Protect will always suceed when someone suicides + //Protect will always succeed when someone suicides return !target || (target.current && HAS_TRAIT(target.current, TRAIT_SUICIDED)) || considered_alive(target, enforce_human = human_check) || (brain_target && HAS_TRAIT(brain_target, TRAIT_SUICIDED)) /datum/objective/protect/update_explanation_text() diff --git a/code/game/machinery/dna_infuser/infuser_entries/infuser_tier_zero_entries.dm b/code/game/machinery/dna_infuser/infuser_entries/infuser_tier_zero_entries.dm index 235986cbd0ddb..670abc2d87bbf 100644 --- a/code/game/machinery/dna_infuser/infuser_entries/infuser_tier_zero_entries.dm +++ b/code/game/machinery/dna_infuser/infuser_entries/infuser_tier_zero_entries.dm @@ -75,7 +75,7 @@ desc = "EVERYONE CALM DOWN! I'm not implying anything with this entry. Are we really so surprised that felinids are humans with mixed feline DNA?" threshold_desc = DNA_INFUSION_NO_THRESHOLD qualities = list( - "oh, let me guess, you're a big fan of those japanese tourist bots", + "oh, let me guess, you're a big fan of those Japanese tourist bots", ) input_obj_or_mob = list( /mob/living/basic/pet/cat, diff --git a/code/game/machinery/telecomms/computers/message.dm b/code/game/machinery/telecomms/computers/message.dm index 05186da8bc08c..4cbc3515713e8 100644 --- a/code/game/machinery/telecomms/computers/message.dm +++ b/code/game/machinery/telecomms/computers/message.dm @@ -139,7 +139,7 @@ return TRUE authenticated = TRUE - success_message = "YOU SUCCESFULLY LOGGED IN!" + success_message = "YOU SUCCESSFULLY LOGGED IN!" return TRUE if("link_server") diff --git a/code/game/objects/items/defib.dm b/code/game/objects/items/defib.dm index b1e01e5a6cebc..491d48a66d392 100644 --- a/code/game/objects/items/defib.dm +++ b/code/game/objects/items/defib.dm @@ -493,7 +493,7 @@ do_help(H, user) -/// Called whenever the paddles successfuly shock something +/// Called whenever the paddles successfully shock something /obj/item/shockpaddles/proc/do_success() if(busy) busy = FALSE @@ -708,7 +708,7 @@ base_icon_state = "syndiepaddles" /obj/item/shockpaddles/syndicate/nanotrasen - name = "elite nanotrasen defibrillator paddles" + name = "elite Nanotrasen defibrillator paddles" desc = "A pair of paddles used to revive deceased ERT members. They possess both the ability to penetrate armor and to deliver powerful or disabling shocks offensively." icon_state = "ntpaddles0" inhand_icon_state = "ntpaddles0" diff --git a/code/game/objects/items/rcd/RCD.dm b/code/game/objects/items/rcd/RCD.dm index 5bd0b4c9d39b8..0a9ff79d1ac06 100644 --- a/code/game/objects/items/rcd/RCD.dm +++ b/code/game/objects/items/rcd/RCD.dm @@ -126,7 +126,7 @@ var/atom/movable/rcd_structure = rcd_results["[RCD_DESIGN_PATH]"] /** *For anything that does not go an a wall we have to make sure that turf is clear for us to put the structure on it - *If we are just trying to destory something then this check is not nessassary + *If we are just trying to destroy something then this check is not necessary *RCD_WALLFRAME is also returned as the rcd_mode when upgrading apc, airalarm, firealarm using simple circuits upgrade */ if(rcd_mode != RCD_WALLFRAME && rcd_mode != RCD_DECONSTRUCT) @@ -142,7 +142,7 @@ structures_to_ignore = list(/obj/structure/grille) else //when building directional windows we ignore the grill and other directional windows structures_to_ignore = list(/obj/structure/grille, /obj/structure/window) - else //for directional windows we ignore other directional windows as they can be in diffrent directions on the turf. + else //for directional windows we ignore other directional windows as they can be in different directions on the turf. structures_to_ignore = list(/obj/structure/window) //check if we can build our window on the grill @@ -152,7 +152,7 @@ return FALSE /** - * if we are trying to create plating on turf which is not a proper floor then dont check for objects on top of the turf just allow that turf to be converted into plating. e.g. create plating beneath a player or underneath a machine frame/any dense object + * if we are trying to create plating on turf which is not a proper floor then don't check for objects on top of the turf just allow that turf to be converted into plating. e.g. create plating beneath a player or underneath a machine frame/any dense object * if we are trying to finish a wall girder then let it finish then make sure no one/nothing is stuck in the girder */ else if(rcd_mode == RCD_TURF && rcd_structure == /turf/open/floor/plating/rcd && (!istype(target_turf, /turf/open/floor) || istype(target, /obj/structure/girder))) @@ -184,10 +184,10 @@ ignored_types = list(/obj/structure/window) //if we are trying to create grills/windoors we can go ahead and further ignore other windoors on the turf if(rcd_mode == RCD_WINDOWGRILLE || (rcd_mode == RCD_AIRLOCK && ispath(rcd_structure, /obj/machinery/door/window))) - //only ignore mobs if we are trying to create windoors and not grills. We dont want to drop a grill on top of somebody + //only ignore mobs if we are trying to create windoors and not grills. We don't want to drop a grill on top of somebody ignore_mobs = rcd_mode == RCD_AIRLOCK ignored_types += /obj/machinery/door/window - //if we are trying to create full airlock doors then we do the regular checks and make sure we have the full space for them. i.e. dont ignore anything dense on the turf + //if we are trying to create full airlock doors then we do the regular checks and make sure we have the full space for them. i.e. don't ignore anything dense on the turf else if(rcd_mode == RCD_AIRLOCK) ignored_types = list() @@ -207,7 +207,7 @@ * * [mob][user]- the user building this structure */ /obj/item/construction/rcd/proc/rcd_create(atom/target, mob/user) - //straight up cant touch this + //straight up can't touch this if(mode == RCD_DECONSTRUCT && (target.resistance_flags & INDESTRUCTIBLE)) balloon_alert(user, "too durable!") return @@ -368,10 +368,10 @@ * The advantage of organizing designs into categories is that * You can ignore an complete category if the design disk upgrade for that category isn't installed. */ - //You can't select designs from the Machines category if you dont have the frames upgrade installed. + //You can't select designs from the Machines category if you don't have the frames upgrade installed. if(category == "Machines" && !(upgrade & RCD_UPGRADE_FRAMES)) return TRUE - //You can't select designs from the Furniture category if you dont have the furnishing upgrade installed. + //You can't select designs from the Furniture category if you don't have the furnishing upgrade installed. if(category == "Furniture" && !(upgrade & RCD_UPGRADE_FURNISHING)) return TRUE diff --git a/code/game/objects/items/rcd/RHD.dm b/code/game/objects/items/rcd/RHD.dm index a212274ce46be..8007fac4dd4c7 100644 --- a/code/game/objects/items/rcd/RHD.dm +++ b/code/game/objects/items/rcd/RHD.dm @@ -71,7 +71,7 @@ return silo_mats.mat_container.get_material_amount(/datum/material/iron) / SILO_USE_AMOUNT return 0 -///returns local matter units available. overriden by rcd borg to return power units available +///returns local matter units available. overridden by rcd borg to return power units available /obj/item/construction/proc/get_matter(mob/user) return matter diff --git a/code/game/objects/items/stacks/sheets/sheets.dm b/code/game/objects/items/stacks/sheets/sheets.dm index 568fd2f49aa29..110713d343612 100644 --- a/code/game/objects/items/stacks/sheets/sheets.dm +++ b/code/game/objects/items/stacks/sheets/sheets.dm @@ -63,7 +63,7 @@ * Facilitates sheets being smacked on the floor * * This is used for crafting by hitting the floor with items. - * The inital use case is glass sheets breaking in to shards when the floor is hit. + * The initial use case is glass sheets breaking in to shards when the floor is hit. * Args: * * user: The user that did the action * * params: paramas passed in from attackby diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm index 5eb651b2905d4..60986c0efea42 100644 --- a/code/game/objects/items/stacks/stack.dm +++ b/code/game/objects/items/stacks/stack.dm @@ -177,7 +177,7 @@ /** * use available_amount of sheets/pieces, return TRUE only if all sheets/pieces of this stack were used * we don't delete this stack when it reaches 0 because we expect the all in one grinder, etc to delete - * this stack if grinding was successfull + * this stack if grinding was successful */ use(available_amount, check = FALSE) return available_amount == current_amount diff --git a/code/game/objects/items/stacks/tiles/tile_types.dm b/code/game/objects/items/stacks/tiles/tile_types.dm index 4b89719998c8f..b4855c52fae35 100644 --- a/code/game/objects/items/stacks/tiles/tile_types.dm +++ b/code/game/objects/items/stacks/tiles/tile_types.dm @@ -68,7 +68,7 @@ * Place our tile on a plating, or replace it. * * Arguments: - * * target_plating - Instance of the plating we want to place on. Replaced during sucessful executions. + * * target_plating - Instance of the plating we want to place on. Replaced during successful executions. * * user - The mob doing the placing. */ /obj/item/stack/tile/proc/place_tile(turf/open/floor/plating/target_plating, mob/user) @@ -1259,7 +1259,7 @@ inhand_icon_state = "tile-catwalk" mats_per_unit = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT) turf_type = /turf/open/floor/catwalk_floor - merge_type = /obj/item/stack/tile/catwalk_tile //Just to be cleaner, these all stack with eachother + merge_type = /obj/item/stack/tile/catwalk_tile //Just to be cleaner, these all stack with each other tile_reskin_types = list( /obj/item/stack/tile/catwalk_tile, /obj/item/stack/tile/catwalk_tile/iron, diff --git a/code/game/objects/items/tcg/tcg.dm b/code/game/objects/items/tcg/tcg.dm index 23204b4809ff8..30650fcd69f7e 100644 --- a/code/game/objects/items/tcg/tcg.dm +++ b/code/game/objects/items/tcg/tcg.dm @@ -3,7 +3,7 @@ /obj/item/tcgcard name = "Coder" - desc = "Wow, a mint condition coder card! Better tell the Github all about this!" + desc = "Wow, a mint condition coder card! Better tell the GitHub all about this!" icon = DEFAULT_TCG_DMI_ICON icon_state = "runtime" w_class = WEIGHT_CLASS_TINY @@ -332,11 +332,11 @@ GLOBAL_LIST_EMPTY(tcgcard_radial_choices) /obj/item/cardpack name = "Trading Card Pack: Coder" - desc = "Contains six complete fuckups by the coders. Report this on github please!" + desc = "Contains six complete fuckups by the coders. Report this on GitHub please!" icon = 'icons/obj/toys/tcgmisc.dmi' icon_state = "error" w_class = WEIGHT_CLASS_TINY - custom_price = PAYCHECK_CREW * 0.75 //Price reduced from * 2 to * 0.75, this is planned as a temporary measure until card persistance is added. + custom_price = PAYCHECK_CREW * 0.75 //Price reduced from * 2 to * 0.75, this is planned as a temporary measure until card persistence is added. ///The card series to look in var/series = "MEME" ///Chance of the pack having a coin in it out of 10 @@ -351,7 +351,7 @@ GLOBAL_LIST_EMPTY(tcgcard_radial_choices) "epic" = 30, "legendary" = 5, "misprint" = 1) - ///The amount of cards to draw from the guarenteed rarity table + ///The amount of cards to draw from the guaranteed rarity table var/guaranteed_count = 1 ///The guaranteed rarity table, acts about the same as the rarity table. it can have as many or as few raritys as you'd like var/list/guar_rarity = list( @@ -434,7 +434,7 @@ GLOBAL_LIST_EMPTY(tcgcard_radial_choices) atom_storage.max_total_storage = 120 atom_storage.max_slots = 60 -///Returns a list of cards ids of card_cnt weighted by rarity from the pack's tables that have matching series, with gnt_cnt of the guarenteed table. +///Returns a list of cards ids of card_cnt weighted by rarity from the pack's tables that have matching series, with gnt_cnt of the guaranteed table. /obj/item/cardpack/proc/buildCardListWithRarity(card_cnt, rarity_cnt) var/list/toReturn = list() //You can always get at least one of some rarity @@ -453,7 +453,7 @@ GLOBAL_LIST_EMPTY(tcgcard_radial_choices) weight += rarity_table[chance] var/random = rand(weight) for(var/bracket in rarity_table) - //Steals blatently from pick_weight(), sorry buddy I need the index + //Steals blatantly from pick_weight(), sorry buddy I need the index random -= rarity_table[bracket] if(random <= 0) rarity = bracket @@ -469,12 +469,12 @@ GLOBAL_LIST_EMPTY(tcgcard_radial_choices) log_runtime("The index [rarity] of rarity_table does not exist in the global cache") return toReturn -//All of these values should be overriden by either a template or a card itself +//All of these values should be overridden by either a template or a card itself /datum/card ///Unique ID, for use in lookups and (eventually) for persistence. MAKE SURE THIS IS UNIQUE FOR EACH CARD IN AS SERIES, OR THE ENTIRE SYSTEM WILL BREAK, AND I WILL BE VERY DISAPPOINTED. var/id = "coder" var/name = "Coder" - var/desc = "Wow, a mint condition coder card! Better tell the Github all about this!" + var/desc = "Wow, a mint condition coder card! Better tell the GitHub all about this!" ///This handles any extra rules for the card, i.e. extra attributes, special effects, etc. If you've played any other card game, you know how this works. var/rules = "There are no rules here. There is no escape. No Recall or Intervention can work in this place." var/icon = DEFAULT_TCG_DMI diff --git a/code/game/objects/structures/construction_console/construction_actions.dm b/code/game/objects/structures/construction_console/construction_actions.dm index fc014d14318bd..b9abfe70c3f71 100644 --- a/code/game/objects/structures/construction_console/construction_actions.dm +++ b/code/game/objects/structures/construction_console/construction_actions.dm @@ -91,7 +91,7 @@ if(place_turf.density) to_chat(owner, span_warning("[structure_name] may only be placed on a floor.")) return - //Can't place two dense objects inside eachother + //Can't place two dense objects inside each other if(initial(structure_path.density) && place_turf.is_blocked_turf()) to_chat(owner, span_warning("Location is obstructed by something. Please clear the location and try again.")) return diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index ffbbca66afb4e..ea2bd7e97e7f4 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -157,8 +157,8 @@ GLOBAL_LIST_EMPTY(roundstart_station_closets) register_context() if(opened) - opened = FALSE //nessassary because open() proc will early return if its true - if(open(special_effects = FALSE)) //closets which are meant to be open by default dont need to be animated open + opened = FALSE //necessary because open() proc will early return if its true + if(open(special_effects = FALSE)) //closets which are meant to be open by default don't need to be animated open return update_appearance() @@ -1068,7 +1068,7 @@ GLOBAL_LIST_EMPTY(roundstart_station_closets) addtimer(CALLBACK(src, PROC_REF(check_if_shake)), next_check_time) return TRUE - // If we reach here, nobody is resisting, so dont shake + // If we reach here, nobody is resisting, so don't shake return FALSE /obj/structure/closet/proc/bust_open() diff --git a/code/game/objects/structures/displaycase.dm b/code/game/objects/structures/displaycase.dm index b582d86efde0e..239af48c2027d 100644 --- a/code/game/objects/structures/displaycase.dm +++ b/code/game/objects/structures/displaycase.dm @@ -159,7 +159,7 @@ toggle_lock(user) else if(open && !showpiece) insert_showpiece(attacking_item, user) - return TRUE //cancel the attack chain, wether we successfully placed an item or not + return TRUE //cancel the attack chain, whether we successfully placed an item or not else if(glass_fix && broken && istype(attacking_item, /obj/item/stack/sheet/glass)) var/obj/item/stack/sheet/glass/glass_sheet = attacking_item if(glass_sheet.get_amount() < 2) diff --git a/code/game/objects/structures/lavaland/ore_vent.dm b/code/game/objects/structures/lavaland/ore_vent.dm index f9214b989b95c..1de24f030bf5e 100644 --- a/code/game/objects/structures/lavaland/ore_vent.dm +++ b/code/game/objects/structures/lavaland/ore_vent.dm @@ -426,7 +426,7 @@ /** * When the ore vent cannot spawn a mob due to being blocked from all sides, we cause some MILD, MILD explosions. - * Explosion matches a gibtonite light explosion, as a way to clear neartby solid structures, with a high likelyhood of breaking the NODE drone. + * Explosion matches a gibtonite light explosion, as a way to clear nearby solid structures, with a high likelihood of breaking the NODE drone. */ /obj/structure/ore_vent/proc/anti_cheese() explosion(src, heavy_impact_range = 1, light_impact_range = 3, flame_range = 0, flash_range = 0, adminlog = FALSE) diff --git a/code/game/objects/structures/maintenance.dm b/code/game/objects/structures/maintenance.dm index 9f88246966f94..a8de16271f36d 100644 --- a/code/game/objects/structures/maintenance.dm +++ b/code/game/objects/structures/maintenance.dm @@ -1,9 +1,9 @@ /** This structure acts as a source of moisture loving cell lines, -as well as a location where a hidden item can somtimes be retrieved +as well as a location where a hidden item can sometimes be retrieved at the cost of risking a vicious bite.**/ /obj/structure/moisture_trap name = "moisture trap" - desc = "A device installed in order to control moisture in poorly ventilated areas.\nThe stagnant water inside basin seems to produce serious biofouling issues when improperly maintained.\nThis unit in particular seems to be teeming with life!\nWho thought mother Gaia could assert herself so vigoriously in this sterile and desolate place?" + desc = "A device installed in order to control moisture in poorly ventilated areas.\nThe stagnant water inside basin seems to produce serious biofouling issues when improperly maintained.\nThis unit in particular seems to be teeming with life!\nWho thought mother Gaia could assert herself so vigorously in this sterile and desolate place?" icon_state = "moisture_trap" anchored = TRUE density = FALSE @@ -58,7 +58,7 @@ at the cost of risking a vicious bite.**/ if(!isliving(user)) return FALSE var/mob/living/living_user = user - if(living_user.body_position == STANDING_UP && ishuman(living_user)) //I dont think monkeys can crawl on command. + if(living_user.body_position == STANDING_UP && ishuman(living_user)) //I don't think monkeys can crawl on command. return FALSE return TRUE diff --git a/code/game/objects/structures/pinatas.dm b/code/game/objects/structures/pinatas.dm index 6483d39b1a26c..44d7a8b021594 100644 --- a/code/game/objects/structures/pinatas.dm +++ b/code/game/objects/structures/pinatas.dm @@ -28,7 +28,7 @@ . = ..() if(get_integrity() < (max_integrity/2)) icon_state = "[base_icon_state]_damaged" - if(damage_amount >= 10) // Swing means minimum damage threshhold for dropping candy is met. + if(damage_amount >= 10) // Swing means minimum damage threshold for dropping candy is met. flick("[icon_state]_swing", src) /obj/structure/pinata/play_attack_sound(damage_amount, damage_type, damage_flag) diff --git a/code/game/objects/structures/signs/_signs.dm b/code/game/objects/structures/signs/_signs.dm index 9268cb9c059ce..d3713ca1b2f68 100644 --- a/code/game/objects/structures/signs/_signs.dm +++ b/code/game/objects/structures/signs/_signs.dm @@ -12,7 +12,7 @@ var/buildable_sign = TRUE ///This determines if you can select this sign type when using a pen on a sign backing. False by default, set to true per sign type to override. var/is_editable = FALSE - ///sign_change_name is used to make nice looking, alphebetized and categorized names when you use a pen on any sign item or structure which is_editable. + ///sign_change_name is used to make nice looking, alphabetized and categorized names when you use a pen on any sign item or structure which is_editable. var/sign_change_name ///Callback to the knock down proc for wallmounting behavior. var/knock_down_callback @@ -135,7 +135,7 @@ unwrenched_sign.setDir(dir) qdel(src) //The sign structure on the wall goes poof and only the sign item from unwrenching remains. -/obj/structure/sign/blank //This subtype is necessary for now because some other things (posters, picture frames, paintings) inheret from the parent type. +/obj/structure/sign/blank //This subtype is necessary for now because some other things (posters, picture frames, paintings) inherit from the parent type. icon_state = "backing" name = "sign backing" desc = "A plastic sign backing, use a pen to change the decal. It can be detached from the wall with a wrench." diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index b0493ce0a8ad4..9a1ceb95e9a9f 100644 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -231,7 +231,7 @@ GLOBAL_LIST_EMPTY(station_turfs) /// Call to move a turf from its current area to a new one /turf/proc/change_area(area/old_area, area/new_area) - //dont waste our time + //don't waste our time if(old_area == new_area) return @@ -277,7 +277,7 @@ GLOBAL_LIST_EMPTY(station_turfs) // We don't want to block ourselves if((movable_content == source_atom)) continue - // dont consider ignored atoms or their types + // don't consider ignored atoms or their types if(length(ignore_atoms)) if(!type_list && (movable_content in ignore_atoms)) continue @@ -306,7 +306,7 @@ GLOBAL_LIST_EMPTY(station_turfs) return TRUE return FALSE -//The zpass procs exist to be overriden, not directly called +//The zpass procs exist to be overridden, not directly called //use can_z_pass for that ///If we'd allow anything to travel into us /turf/proc/zPassIn(direction) @@ -426,7 +426,7 @@ GLOBAL_LIST_EMPTY(station_turfs) if(thing == mover || thing == mover_loc) // Multi tile objects and moving out of other objects continue if(!thing.Cross(mover)) - if(QDELETED(mover)) //deleted from Cross() (CanPass is pure so it cant delete, Cross shouldnt be doing this either though, but it can happen) + if(QDELETED(mover)) //deleted from Cross() (CanPass is pure so it can't delete, Cross shouldn't be doing this either though, but it can happen) return FALSE if(mover_is_phasing) mover.Bump(thing) diff --git a/code/modules/admin/view_variables/view_variables.dm b/code/modules/admin/view_variables/view_variables.dm index 37bf0911c608f..66ac70f3f62f7 100644 --- a/code/modules/admin/view_variables/view_variables.dm +++ b/code/modules/admin/view_variables/view_variables.dm @@ -3,7 +3,7 @@ ADMIN_VERB_AND_CONTEXT_MENU(debug_variables, R_NONE, "View Variables", "View the variables of a datum.", ADMIN_CATEGORY_DEBUG, datum/thing in world) user.debug_variables(thing) -// This is kept as a seperate proc because admins are able to show VV to non-admins +// This is kept as a separate proc because admins are able to show VV to non-admins /client/proc/debug_variables(datum/thing in world) set category = "Debug" @@ -23,7 +23,7 @@ ADMIN_VERB_AND_CONTEXT_MENU(debug_variables, R_NONE, "View Variables", "View the if(isappearance(thing)) thing = get_vv_appearance(thing) // this is /mutable_appearance/our_bs_subtype - var/islist = islist(thing) || (!isdatum(thing) && hascall(thing, "Cut")) // Some special lists dont count as lists, but can be detected by if they have list procs + var/islist = islist(thing) || (!isdatum(thing) && hascall(thing, "Cut")) // Some special lists don't count as lists, but can be detected by if they have list procs if(!islist && !isdatum(thing)) return diff --git a/code/modules/antagonists/blob/structures/core.dm b/code/modules/antagonists/blob/structures/core.dm index 6eeccc8c361dd..f995dc0b81b03 100644 --- a/code/modules/antagonists/blob/structures/core.dm +++ b/code/modules/antagonists/blob/structures/core.dm @@ -24,7 +24,7 @@ GLOB.blob_cores += src START_PROCESSING(SSobj, src) SSpoints_of_interest.make_point_of_interest(src) - update_appearance() //so it atleast appears + update_appearance() //so it at least appears if(!placed && !overmind) return INITIALIZE_HINT_QDEL if(overmind) diff --git a/code/modules/antagonists/cult/cult_objectives.dm b/code/modules/antagonists/cult/cult_objectives.dm index d290b212ab22f..60542f259bf2a 100644 --- a/code/modules/antagonists/cult/cult_objectives.dm +++ b/code/modules/antagonists/cult/cult_objectives.dm @@ -63,7 +63,7 @@ /datum/objective/sacrifice/proc/on_possible_mindswap(mob/source) SIGNAL_HANDLER UnregisterSignal(target.current, list(COMSIG_QDELETING, COMSIG_MOB_MIND_TRANSFERRED_INTO)) - //we check if the mind is bodyless only after mindswap shenanigeans to avoid issues. + //we check if the mind is bodyless only after mindswap shenanigans to avoid issues. addtimer(CALLBACK(src, PROC_REF(do_we_have_a_body)), 0 SECONDS) /datum/objective/sacrifice/proc/do_we_have_a_body() diff --git a/code/modules/antagonists/cult/cult_structures.dm b/code/modules/antagonists/cult/cult_structures.dm index 773f890d25dbb..511988fb5bcbb 100644 --- a/code/modules/antagonists/cult/cult_structures.dm +++ b/code/modules/antagonists/cult/cult_structures.dm @@ -137,7 +137,7 @@ /* * Set up and populate our list of options. - * Overriden by subtypes. + * Overridden by subtypes. * * The list of options is a associated list of format: * item_name = list( diff --git a/code/modules/antagonists/heretic/influences.dm b/code/modules/antagonists/heretic/influences.dm index abba2c3f1007e..7b316d6cdb984 100644 --- a/code/modules/antagonists/heretic/influences.dm +++ b/code/modules/antagonists/heretic/influences.dm @@ -43,7 +43,7 @@ while((length(smashes) + num_drained) < how_many_can_we_make && location_sanity < 100) var/turf/chosen_location = get_safe_random_station_turf() - // We don't want them close to each other - at least 1 tile of seperation + // We don't want them close to each other - at least 1 tile of separation var/list/nearby_things = range(1, chosen_location) var/obj/effect/heretic_influence/what_if_i_have_one = locate() in nearby_things var/obj/effect/visible_heretic_influence/what_if_i_had_one_but_its_used = locate() in nearby_things diff --git a/code/modules/antagonists/wizard/grand_ritual/grand_rune.dm b/code/modules/antagonists/wizard/grand_ritual/grand_rune.dm index 15900a6ac0b0a..25883370c0d1b 100644 --- a/code/modules/antagonists/wizard/grand_ritual/grand_rune.dm +++ b/code/modules/antagonists/wizard/grand_ritual/grand_rune.dm @@ -147,7 +147,7 @@ haunt_color = spell_colour, \ haunt_duration = 10 SECONDS, \ aggro_radius = 0, \ - spawn_message = span_revenwarning("[sacrifice] begins to float and twirl into the air as it becomes enveloped in otherworldy energies..."), \ + spawn_message = span_revenwarning("[sacrifice] begins to float and twirl into the air as it becomes enveloped in otherworldly energies..."), \ ) addtimer(CALLBACK(sacrifice, TYPE_PROC_REF(/obj/item/food/cheese/wheel, consume_cheese)), 10 SECONDS) cheese_sacrificed += length(cheese_to_haunt) @@ -253,7 +253,7 @@ while(created < to_create && location_sanity < 100) var/turf/chosen_location = get_safe_random_station_turf() - // We don't want them close to each other - at least 1 tile of seperation + // We don't want them close to each other - at least 1 tile of separation var/list/nearby_things = range(1, chosen_location) var/obj/effect/heretic_influence/what_if_i_have_one = locate() in nearby_things var/obj/effect/visible_heretic_influence/what_if_i_had_one_but_its_used = locate() in nearby_things diff --git a/code/modules/assembly/flash.dm b/code/modules/assembly/flash.dm index b81eb26e7fae9..f20d364759927 100644 --- a/code/modules/assembly/flash.dm +++ b/code/modules/assembly/flash.dm @@ -128,7 +128,7 @@ /** * Handles actual flashing part of the attack * - * This proc is awful in every sense of the way, someone should definately refactor this whole code. + * This proc is awful in every sense of the way, someone should definitely refactor this whole code. * Arguments: * * M - Victim * * user - Attacker @@ -161,7 +161,7 @@ else if(sigreturn & DEVIATION_OVERRIDE_NONE) deviation = DEVIATION_NONE - //If you face away from someone they shouldnt notice any effects. + //If you face away from someone they shouldn't notice any effects. if(deviation == DEVIATION_FULL) return @@ -185,7 +185,7 @@ /** * Handles the directionality of the attack * - * Returns the amount of 'deviation', 0 being facing eachother, 1 being sideways, 2 being facing away from eachother. + * Returns the amount of 'deviation', 0 being facing each other, 1 being sideways, 2 being facing away from each other. * Arguments: * * victim - Victim * * attacker - Attacker diff --git a/code/modules/asset_cache/assets/rtd.dm b/code/modules/asset_cache/assets/rtd.dm index 23a3b0d71b2db..66899fcb943f1 100644 --- a/code/modules/asset_cache/assets/rtd.dm +++ b/code/modules/asset_cache/assets/rtd.dm @@ -2,7 +2,7 @@ name = "rtd" /datum/asset/spritesheet/rtd/create_spritesheets() - //some tiles may share the same icon but have diffrent properties to animate that icon + //some tiles may share the same icon but have different properties to animate that icon //so we keep track of what icons we registered var/list/registered = list() diff --git a/code/modules/atmospherics/gasmixtures/gas_mixture.dm b/code/modules/atmospherics/gasmixtures/gas_mixture.dm index db2732be83fad..19277004ae38d 100644 --- a/code/modules/atmospherics/gasmixtures/gas_mixture.dm +++ b/code/modules/atmospherics/gasmixtures/gas_mixture.dm @@ -547,7 +547,7 @@ GLOBAL_LIST_INIT(gaslist_cache, init_gaslist_cache()) /** * Counts how much pressure will there be if we impart MOLAR_ACCURACY amounts of our gas to the output gasmix. - * We do all of this without actually transferring it so dont worry about it changing the gasmix. + * We do all of this without actually transferring it so don't worry about it changing the gasmix. * Returns: Resulting pressure (number). * Args: * - output_air (gasmix). @@ -562,10 +562,10 @@ GLOBAL_LIST_INIT(gaslist_cache, init_gaslist_cache()) * Args: * - output_air. The gas mix we want to pump to. * - target_pressure. The target pressure we want. - * - ignore_temperature. Returns a cheaper form of gas calculation, useful if the temperature difference between the two gasmixes is low or nonexistant. + * - ignore_temperature. Returns a cheaper form of gas calculation, useful if the temperature difference between the two gasmixes is low or nonexistent. */ /datum/gas_mixture/proc/gas_pressure_calculate(datum/gas_mixture/output_air, target_pressure, ignore_temperature = FALSE) - // So we dont need to iterate the gaslist multiple times. + // So we don't need to iterate the gaslist multiple times. var/our_moles = total_moles() var/output_moles = output_air.total_moles() var/output_pressure = output_air.return_pressure() diff --git a/code/modules/atmospherics/gasmixtures/gas_types.dm b/code/modules/atmospherics/gasmixtures/gas_types.dm index 7bbfea3dcf253..c040e30db3fcf 100644 --- a/code/modules/atmospherics/gasmixtures/gas_types.dm +++ b/code/modules/atmospherics/gasmixtures/gas_types.dm @@ -85,7 +85,7 @@ rarity = 1000 purchaseable = TRUE base_value = 0.1 - desc = "A very common gas that used to pad artifical atmospheres to habitable pressure." + desc = "A very common gas that used to pad artificial atmospheres to habitable pressure." primary_color = "#ffff00" /datum/gas/carbon_dioxide //what the fuck is this? @@ -133,7 +133,7 @@ fusion_power = 10 rarity = 50 base_value = 2.5 - desc = "The most noble gas of them all. High quantities of hyper-noblium actively prevents reactions from occuring." + desc = "The most noble gas of them all. High quantities of hyper-noblium actively prevents reactions from occurring." primary_color = COLOR_TEAL /datum/gas/nitrous_oxide @@ -173,7 +173,7 @@ fusion_power = 5 rarity = 300 base_value = 2.5 - desc = "A highly flammable and radioctive gas." + desc = "A highly flammable and radioactive gas." primary_color = "#32cd32" /datum/gas/bz @@ -279,7 +279,7 @@ moles_visible = MOLES_GAS_VISIBLE rarity = 300 base_value = 4 - desc = "A potent fire supressant. Removes oxygen from high temperature fires and cools down the area" + desc = "A potent fire suppressant. Removes oxygen from high temperature fires and cools down the area" primary_color = COLOR_PURPLE /datum/gas/helium @@ -314,7 +314,7 @@ appearance_flags = TILE_BOUND vis_flags = NONE // The visual offset we are "on". - // Can't use the tradtional loc because we are stored in nullspace, and we can't set plane before init because of the helping that SET_PLANE_EXPLICIT does IN init + // Can't use the traditional loc because we are stored in nullspace, and we can't set plane before init because of the helping that SET_PLANE_EXPLICIT does IN init var/plane_offset = 0 /obj/effect/overlay/gas/New(state, alph, offset) diff --git a/code/modules/atmospherics/gasmixtures/reaction_factors.dm b/code/modules/atmospherics/gasmixtures/reaction_factors.dm index 5148793179500..af058dc77877f 100644 --- a/code/modules/atmospherics/gasmixtures/reaction_factors.dm +++ b/code/modules/atmospherics/gasmixtures/reaction_factors.dm @@ -50,14 +50,14 @@ /datum/gas/carbon_dioxide = "Carbon Dioxide is formed at 1 mole per mole of freon consumed.", "Temperature" = "Can only occur between [FREON_LOWER_TEMPERATURE] - [FREON_MAXIMUM_BURN_TEMPERATURE] Kelvin", "Energy" = "[FIRE_FREON_ENERGY_CONSUMED] joules of energy is absorbed per mole of freon consumed.", - "Hot Ice" = "This reaction produces hot ice when occuring between [HOT_ICE_FORMATION_MINIMUM_TEMPERATURE]-[HOT_ICE_FORMATION_MAXIMUM_TEMPERATURE] kelvins", + "Hot Ice" = "This reaction produces hot ice when occurring between [HOT_ICE_FORMATION_MINIMUM_TEMPERATURE]-[HOT_ICE_FORMATION_MAXIMUM_TEMPERATURE] kelvins", ) /datum/gas_reaction/nitrousformation/init_factors() factor = list( /datum/gas/oxygen = "10 moles of Oxygen needs to be present for the reaction to occur. Oxygen is consumed at 0.5 moles per mole of nitrous oxide formed.", - /datum/gas/nitrogen = " 20 moles of Nitrogen needs to be present for the reaction to occur. Nitrogen is consumed at 1 mole per mole of nitrous oxife formed.", + /datum/gas/nitrogen = " 20 moles of Nitrogen needs to be present for the reaction to occur. Nitrogen is consumed at 1 mole per mole of nitrous oxide formed.", /datum/gas/bz = "5 moles of BZ needs to be present for the reaction to occur. Not consumed.", /datum/gas/nitrous_oxide = "Nitrous oxide gets produced rapidly.", "Temperature" = "Can only occur between [N2O_FORMATION_MIN_TEMPERATURE] - [N2O_FORMATION_MAX_TEMPERATURE] Kelvin", diff --git a/code/modules/atmospherics/gasmixtures/reactions.dm b/code/modules/atmospherics/gasmixtures/reactions.dm index 49254d077deae..f6c238c8d0e28 100644 --- a/code/modules/atmospherics/gasmixtures/reactions.dm +++ b/code/modules/atmospherics/gasmixtures/reactions.dm @@ -328,7 +328,7 @@ SET_REACTION_RESULTS(burned_fuel) var/turf/open/location - if(istype(holder, /datum/pipeline)) //Find the tile the reaction is occuring on, or a random part of the network if it's a pipenet. + if(istype(holder, /datum/pipeline)) //Find the tile the reaction is occurring on, or a random part of the network if it's a pipenet. var/datum/pipeline/pipenet = holder location = pick(pipenet.members) else if(isatom(holder)) @@ -686,7 +686,7 @@ var/list/cached_gases = air.gases var/temperature = air.temperature - //This reaction is agressively slow. like, a tenth of a mole per fire slow. Keep that in mind + //This reaction is aggressively slow. like, a tenth of a mole per fire slow. Keep that in mind var/heat_efficiency = min(temperature / NITRIUM_DECOMPOSITION_TEMP_DIVISOR, cached_gases[/datum/gas/nitrium][MOLES]) if (heat_efficiency <= 0 || (cached_gases[/datum/gas/nitrium][MOLES] - heat_efficiency < 0)) //Shouldn't produce gas from nothing. @@ -1091,7 +1091,7 @@ SET_REACTION_RESULTS(produced_amount) var/turf/open/location var/energy_released = produced_amount * PN_TRITIUM_CONVERSION_ENERGY - if(istype(holder,/datum/pipeline)) //Find the tile the reaction is occuring on, or a random part of the network if it's a pipenet. + if(istype(holder,/datum/pipeline)) //Find the tile the reaction is occurring on, or a random part of the network if it's a pipenet. var/datum/pipeline/pipenet = holder location = pick(pipenet.members) else if(isatom(holder)) @@ -1143,7 +1143,7 @@ SET_REACTION_RESULTS(consumed_amount) var/turf/open/location var/energy_released = consumed_amount * PN_BZASE_ENERGY - if(istype(holder,/datum/pipeline)) //Find the tile the reaction is occuring on, or a random part of the network if it's a pipenet. + if(istype(holder,/datum/pipeline)) //Find the tile the reaction is occurring on, or a random part of the network if it's a pipenet. var/datum/pipeline/pipenet = holder location = pick(pipenet.members) else if(isatom(holder)) diff --git a/code/modules/atmospherics/machinery/atmosmachinery.dm b/code/modules/atmospherics/machinery/atmosmachinery.dm index 12e6c684079e6..95758c22707c6 100644 --- a/code/modules/atmospherics/machinery/atmosmachinery.dm +++ b/code/modules/atmospherics/machinery/atmosmachinery.dm @@ -34,7 +34,7 @@ ///The flags of the pipe/component (PIPING_ALL_LAYER | PIPING_ONE_PER_TURF | PIPING_DEFAULT_LAYER_ONLY | PIPING_CARDINAL_AUTONORMALIZE) var/pipe_flags = NONE - ///This only works on pipes, because they have 1000 subtypes wich need to be visible and invisible under tiles, so we track this here + ///This only works on pipes, because they have 1000 subtypes which need to be visible and invisible under tiles, so we track this here var/hide = TRUE ///The image of the pipe/device used for ventcrawling @@ -331,7 +331,7 @@ if(isnull(given_layer)) given_layer = piping_layer - // you cant place the machine on the same location as the target cause it blocks + // you can't place the machine on the same location as the target cause it blocks if(target.loc == loc) return FALSE @@ -478,7 +478,7 @@ * Called by wrench_act() before deconstruct() * Arguments: * * mob_user - the mob doing the act - * * pressures - it can be passed on from wrench_act(), it's the pressure difference between the enviroment pressure and the pipe internal pressure + * * pressures - it can be passed on from wrench_act(), it's the pressure difference between the environment pressure and the pipe internal pressure */ /obj/machinery/atmospherics/proc/unsafe_pressure_release(mob/user, pressures = null) if(!user) @@ -569,7 +569,7 @@ // Handles mob movement inside a pipenet /obj/machinery/atmospherics/relaymove(mob/living/user, direction) - if(!direction) //cant go this way. + if(!direction) //can't go this way. return if(user in buckled_mobs)// fixes buckle ventcrawl edgecase fuck bug return diff --git a/code/modules/atmospherics/machinery/components/fusion/hfr_procs.dm b/code/modules/atmospherics/machinery/components/fusion/hfr_procs.dm index 9f2f6a96f4bf8..e3ef70489ac85 100644 --- a/code/modules/atmospherics/machinery/components/fusion/hfr_procs.dm +++ b/code/modules/atmospherics/machinery/components/fusion/hfr_procs.dm @@ -430,7 +430,7 @@ radio.talk_into(src, "[safe_alert] Failsafe has been disengaged.", common_channel) final_countdown = FALSE return - else if((i % 50) != 0 && i > 50) // A message once every 5 seconds until the final 5 seconds which count down individualy + else if((i % 50) != 0 && i > 50) // A message once every 5 seconds until the final 5 seconds which count down individually sleep(1 SECONDS) continue else if(i > 50) diff --git a/code/modules/atmospherics/machinery/components/gas_recipe_machines/crystallizer.dm b/code/modules/atmospherics/machinery/components/gas_recipe_machines/crystallizer.dm index 565ada80b931e..b5cc7c628df29 100644 --- a/code/modules/atmospherics/machinery/components/gas_recipe_machines/crystallizer.dm +++ b/code/modules/atmospherics/machinery/components/gas_recipe_machines/crystallizer.dm @@ -106,7 +106,7 @@ return TRUE return FALSE -///Injects the gases from the input inside the internal gasmix, the amount is dependant on the gas_input var +///Injects the gases from the input inside the internal gasmix, the amount is dependent on the gas_input var /obj/machinery/atmospherics/components/binary/crystallizer/proc/inject_gases() var/datum/gas_mixture/contents = airs[2] for(var/gas_type in selected_recipe.requirements) diff --git a/code/modules/atmospherics/machinery/components/gas_recipe_machines/crystallizer_items.dm b/code/modules/atmospherics/machinery/components/gas_recipe_machines/crystallizer_items.dm index 26cb395113519..6308e1eee611e 100644 --- a/code/modules/atmospherics/machinery/components/gas_recipe_machines/crystallizer_items.dm +++ b/code/modules/atmospherics/machinery/components/gas_recipe_machines/crystallizer_items.dm @@ -1,6 +1,6 @@ /obj/item/hypernoblium_crystal name = "Hypernoblium Crystal" - desc = "Crystalized oxygen and hypernoblium stored in a bottle to pressureproof your clothes or stop reactions occuring in portable atmospheric devices." + desc = "Crystallized oxygen and hypernoblium stored in a bottle to pressureproof your clothes or stop reactions occurring in portable atmospheric devices." icon = 'icons/obj/pipes_n_cables/atmos.dmi' icon_state = "hypernoblium_crystal" var/uses = 1 diff --git a/code/modules/awaymissions/cordon.dm b/code/modules/awaymissions/cordon.dm index 285d0d49e1051..738efa1d7c21f 100644 --- a/code/modules/awaymissions/cordon.dm +++ b/code/modules/awaymissions/cordon.dm @@ -49,10 +49,10 @@ /turf/cordon/Bumped(atom/movable/bumped_atom) . = ..() - if(HAS_TRAIT(bumped_atom, TRAIT_FREE_HYPERSPACE_SOFTCORDON_MOVEMENT)) //we could feasibly reach the border, so just dont + if(HAS_TRAIT(bumped_atom, TRAIT_FREE_HYPERSPACE_SOFTCORDON_MOVEMENT)) //we could feasibly reach the border, so just don't dump_in_space(bumped_atom) -/// Area used in conjuction with the cordon turf to create a fully functioning world border. +/// Area used in conjunction with the cordon turf to create a fully functioning world border. /area/misc/cordon name = "CORDON" icon_state = "cordon" diff --git a/code/modules/capture_the_flag/ctf_controller.dm b/code/modules/capture_the_flag/ctf_controller.dm index b5df4981c9f15..dbc152d6bf467 100644 --- a/code/modules/capture_the_flag/ctf_controller.dm +++ b/code/modules/capture_the_flag/ctf_controller.dm @@ -63,7 +63,7 @@ ///Unloading CTF removes the map entirely and allows for a new map to be loaded in its place. /datum/ctf_controller/proc/unload_ctf() if(game_id != CTF_GHOST_CTF_GAME_ID) - return //At present we only support unloading standard centcom ctf, if we intend to support ctf unloading elsewhere then this proc will need to be ammended. + return //At present we only support unloading standard centcom ctf, if we intend to support ctf unloading elsewhere then this proc will need to be amended. stop_ctf() new /obj/effect/landmark/ctf(get_turf(GLOB.ctf_spawner)) @@ -187,7 +187,7 @@ respawn_cooldown = CTF_DEFAULT_RESPAWN instagib_mode = !instagib_mode -///A datum that holds details about individual CTF teams, any team specific CTF functionality should be implimented here. +///A datum that holds details about individual CTF teams, any team specific CTF functionality should be implemented here. /datum/ctf_team ///Reference to the spawn point that this team uses. var/obj/machinery/ctf/spawner/spawner @@ -206,7 +206,7 @@ team_color = spawner.team team_span = spawner.team_span -///If the team is destroyed all players in that team need their componenet removed. +///If the team is destroyed all players in that team need their component removed. /datum/ctf_team/Destroy(force) for(var/player in team_members) var/datum/component/ctf_player/ctf_player = team_members[player] @@ -217,7 +217,7 @@ /datum/ctf_team/proc/score_points(points_scored) points += points_scored -///Resets this teams score and clears its member list. All members will be dusted and have their player componenet removed. +///Resets this teams score and clears its member list. All members will be dusted and have their player component removed. /datum/ctf_team/proc/reset_team() points = 0 for(var/player in team_members) @@ -231,7 +231,7 @@ var/datum/component/ctf_player/ctf_player = team_members[player] ctf_player.send_message(message) -///Creates a CTF game with the provided teeam ID then returns a reference to the new controller. If a controller already exists provides a reference to it. +///Creates a CTF game with the provided team ID then returns a reference to the new controller. If a controller already exists provides a reference to it. /proc/create_ctf_game(game_id) if(GLOB.ctf_games[game_id]) return GLOB.ctf_games[game_id] diff --git a/code/modules/capture_the_flag/ctf_map_loading.dm b/code/modules/capture_the_flag/ctf_map_loading.dm index 6448533a3c74b..4c2f6b319e036 100644 --- a/code/modules/capture_the_flag/ctf_map_loading.dm +++ b/code/modules/capture_the_flag/ctf_map_loading.dm @@ -100,5 +100,5 @@ GLOBAL_DATUM(ctf_spawner, /obj/effect/landmark/ctf) /datum/map_template/ctf/turbine name = "Turbine" - description = "A CTF map that takes place in a familiar facility. Don't try to hold out mid- Theres no sentries in this version." + description = "A CTF map that takes place in a familiar facility. Don't try to hold out mid- There's no sentries in this version." mappath = "_maps/map_files/CTF/turbine.dmm" diff --git a/code/modules/capture_the_flag/ctf_player_component.dm b/code/modules/capture_the_flag/ctf_player_component.dm index c51b48b918c98..5a02a954aba6a 100644 --- a/code/modules/capture_the_flag/ctf_player_component.dm +++ b/code/modules/capture_the_flag/ctf_player_component.dm @@ -1,4 +1,4 @@ -///A component added to the mind of anyone who is playing in an ongoing CTF match. Any player specific CTF functionality should be implimented here. (someone should impliment score tracking here) +///A component added to the mind of anyone who is playing in an ongoing CTF match. Any player specific CTF functionality should be implemented here. (someone should implement score tracking here) /datum/component/ctf_player ///The team that this player is associated with. var/team diff --git a/code/modules/cargo/bounties/science.dm b/code/modules/cargo/bounties/science.dm index 0206ea41967d6..be0edbe1eb64b 100644 --- a/code/modules/cargo/bounties/science.dm +++ b/code/modules/cargo/bounties/science.dm @@ -55,7 +55,7 @@ //******Modular Computer Bounties****** /datum/bounty/item/science/ntnet name = "Modular Tablets" - description = "Turns out that NTNet wasn't actually a fad afterall, who knew. Send some fully functional PDAs to help get us up to speed on the latest technology." + description = "Turns out that NTNet wasn't actually a fad after all, who knew. Send some fully functional PDAs to help get us up to speed on the latest technology." reward = CARGO_CRATE_VALUE * 6 required_count = 4 wanted_types = list(/obj/item/modular_computer/pda = TRUE) diff --git a/code/modules/cargo/order.dm b/code/modules/cargo/order.dm index a10bb3da5c00c..ef6484f21fc1f 100644 --- a/code/modules/cargo/order.dm +++ b/code/modules/cargo/order.dm @@ -140,7 +140,7 @@ manifest_text += "Item: [packname]
" manifest_text += "Contents:
" manifest_text += "