mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-14 17:45:02 +01:00
masterfixes
52 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
21b4095dfd |
[MDB IGNORE] [IDB IGNORE] Upstream Sync - 04/17/2026 (#5453)
Upstream 04/17/2026 fixes https://github.com/Bubberstation/Bubberstation/issues/5549 --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: tgstation-ci[bot] <179393467+tgstation-ci[bot]@users.noreply.github.com> Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com> Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com> Co-authored-by: Rhials <28870487+Rhials@users.noreply.github.com> Co-authored-by: rageguy505 <54517726+rageguy505@users.noreply.github.com> Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com> Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com> Co-authored-by: Aliceee2ch <160794176+Aliceee2ch@users.noreply.github.com> Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com> Co-authored-by: Tsar-Salat <62388554+Tsar-Salat@users.noreply.github.com> Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com> Co-authored-by: Maxipat <108554989+Maxipat112@users.noreply.github.com> Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com> Co-authored-by: deltanedas <39013340+deltanedas@users.noreply.github.com> Co-authored-by: SimplyLogan <47579821+loganuk@users.noreply.github.com> Co-authored-by: loganuk <fakeemail123@aol.com> Co-authored-by: Leland Kemble <70413276+lelandkemble@users.noreply.github.com> Co-authored-by: FalloutFalcon <86381784+FalloutFalcon@users.noreply.github.com> Co-authored-by: Roxy <75404941+TealSeer@users.noreply.github.com> Co-authored-by: Lucy <lucy@absolucy.moe> Co-authored-by: siliconOpossum <138069572+siliconOpossum@users.noreply.github.com> Co-authored-by: Isratosh <Isratosh@hotmail.com> Co-authored-by: TheRyeGuyWhoWillNowDie <70169560+TheRyeGuyWhoWillNowDie@users.noreply.github.com> Co-authored-by: Neocloudy <88008002+Neocloudy@users.noreply.github.com> Co-authored-by: Alexander V. <volas@ya.ru> Co-authored-by: ElGitificador <168473461+ElGitificador@users.noreply.github.com> Co-authored-by: Twaticus <46540570+Twaticus@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com> Co-authored-by: Cameron Lennox <killer65311@gmail.com> Co-authored-by: Tim <timothymtorres@gmail.com> Co-authored-by: Iamgoofball <iamgoofball@gmail.com> Co-authored-by: Layzu666 <121319428+Layzu666@users.noreply.github.com> Co-authored-by: Arturlang <24881678+Arturlang@users.noreply.github.com> Co-authored-by: _0Steven <42909981+00-Steven@users.noreply.github.com> Co-authored-by: mrmanlikesbt <99309552+mrmanlikesbt@users.noreply.github.com> Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com> Co-authored-by: John F. Kennedy <54908920+MacaroniCritter@users.noreply.github.com> Co-authored-by: Cursor <102828457+theselfish@users.noreply.github.com> Co-authored-by: Josh <josh.adam.powell@gmail.com> Co-authored-by: Josh Powell <josh.powell@softwire.com> Co-authored-by: Yobrocharlie <Charliemiller5617@gmail.com> Co-authored-by: Hardly3D <66234359+Hardly3D@users.noreply.github.com> Co-authored-by: shayoki <96078776+shayoki@users.noreply.github.com> Co-authored-by: LT3 <83487515+lessthnthree@users.noreply.github.com> |
||
|
|
00ccf0c6b5 |
Merge remote-tracking branch 'tgstation/master' into upstream-feb12-2026
# Conflicts: # .github/CODEOWNERS # .github/workflows/compile_changelogs.yml # .github/workflows/stale.yml # SQL/database_changelog.md # _maps/map_files/CatwalkStation/CatwalkStation_2023.dmm # code/__DEFINES/atom_hud.dm # code/__DEFINES/inventory.dm # code/__DEFINES/mobs.dm # code/__DEFINES/species_clothing_paths.dm # code/__DEFINES/subsystems.dm # code/__DEFINES/surgery.dm # code/__HELPERS/global_lists.dm # code/_globalvars/lists/maintenance_loot.dm # code/_globalvars/traits/_traits.dm # code/controllers/subsystem/minor_mapping.dm # code/controllers/subsystem/processing/quirks.dm # code/controllers/subsystem/shuttle.dm # code/datums/components/palette.dm # code/datums/components/surgery_initiator.dm # code/datums/diseases/advance/advance.dm # code/datums/hud.dm # code/datums/mood.dm # code/datums/mutations/chameleon.dm # code/datums/quirks/negative_quirks/nyctophobia.dm # code/datums/status_effects/debuffs/debuffs.dm # code/datums/status_effects/debuffs/drunk.dm # code/datums/status_effects/debuffs/slime/slime_leech.dm # code/datums/weather/weather.dm # code/game/data_huds.dm # code/game/objects/items.dm # code/game/objects/items/devices/scanners/health_analyzer.dm # code/game/objects/items/frog_statue.dm # code/game/objects/items/rcd/RLD.dm # code/game/objects/items/robot/items/hypo.dm # code/game/objects/items/stacks/medical.dm # code/game/objects/items/stacks/wrap.dm # code/game/objects/items/storage/garment.dm # code/game/objects/items/tools/medical/defib.dm # code/game/objects/items/weaponry.dm # code/game/objects/items/weaponry/melee/misc.dm # code/game/objects/structures/crates_lockers/closets/secure/security.dm # code/game/objects/structures/curtains.dm # code/game/objects/structures/dresser.dm # code/game/objects/structures/girders.dm # code/game/objects/structures/maintenance.dm # code/game/objects/structures/mirror.dm # code/modules/admin/greyscale_modify_menu.dm # code/modules/admin/verbs/light_debug.dm # code/modules/antagonists/ashwalker/ashwalker.dm # code/modules/antagonists/heretic/knowledge/starting_lore.dm # code/modules/antagonists/ninja/ninjaDrainAct.dm # code/modules/art/paintings.dm # code/modules/client/preferences.dm # code/modules/client/verbs/ooc.dm # code/modules/clothing/head/wig.dm # code/modules/events/disease_outbreak.dm # code/modules/holodeck/holo_effect.dm # code/modules/jobs/job_types/head_of_security.dm # code/modules/jobs/job_types/security_officer.dm # code/modules/library/skill_learning/generic_skillchips/point.dm # code/modules/mining/lavaland/ash_flora.dm # code/modules/mining/lavaland/mining_loot/megafauna/ash_drake.dm # code/modules/mob/dead/new_player/new_player.dm # code/modules/mob/living/basic/guardian/guardian.dm # code/modules/mob/living/basic/space_fauna/space_dragon/space_dragon.dm # code/modules/mob/living/carbon/carbon.dm # code/modules/mob/living/carbon/human/human.dm # code/modules/mob/living/carbon/human/human_defines.dm # code/modules/mob/living/carbon/life.dm # code/modules/mob/living/living.dm # code/modules/mob/living/living_defines.dm # code/modules/mob/mob.dm # code/modules/mob_spawn/ghost_roles/mining_roles.dm # code/modules/mod/mod_control.dm # code/modules/mod/modules/modules_general.dm # code/modules/modular_computers/computers/item/computer_ui.dm # code/modules/paperwork/paper.dm # code/modules/paperwork/paperbin.dm # code/modules/power/lighting/light.dm # code/modules/projectiles/guns/energy/kinetic_accelerator.dm # code/modules/projectiles/projectile.dm # code/modules/reagents/chemistry/reagents/drinks/alcohol_reagents.dm # code/modules/reagents/chemistry/reagents/food_reagents.dm # code/modules/reagents/chemistry/reagents/other_reagents.dm # code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm # code/modules/research/xenobiology/crossbreeding/_clothing.dm # code/modules/research/xenobiology/crossbreeding/prismatic.dm # code/modules/surgery/advanced/brainwashing.dm # code/modules/surgery/advanced/lobotomy.dm # code/modules/surgery/amputation.dm # code/modules/surgery/blood_filter.dm # code/modules/surgery/bodyparts/_bodyparts.dm # code/modules/surgery/brain_surgery.dm # code/modules/surgery/cavity_implant.dm # code/modules/surgery/coronary_bypass.dm # code/modules/surgery/gastrectomy.dm # code/modules/surgery/healing.dm # code/modules/surgery/limb_augmentation.dm # code/modules/surgery/organ_manipulation.dm # code/modules/surgery/revival.dm # code/modules/surgery/sleeper_protocol.dm # code/modules/surgery/surgery_helpers.dm # code/modules/surgery/surgery_step.dm # code/modules/unit_tests/_unit_tests.dm # code/modules/unit_tests/designs.dm # code/modules/unit_tests/icon_state_worn.dm # code/modules/unit_tests/screenshots/screenshot_antag_icons_cultist.png # code/modules/unit_tests/screenshots/screenshot_antag_icons_headrevolutionary.png # code/modules/unit_tests/screenshots/screenshot_antag_icons_provocateur.png # code/modules/unit_tests/screenshots/screenshot_husk_body.png # code/modules/unit_tests/screenshots/screenshot_husk_body_missing_limbs.png # icons/map_icons/clothing/head/_head.dmi # icons/map_icons/clothing/shoes.dmi # icons/map_icons/items/_item.dmi # icons/mob/huds/hud.dmi # icons/mob/inhands/64x64_lefthand.dmi # icons/mob/inhands/64x64_righthand.dmi # icons/obj/machines/computer.dmi # tgui/packages/tgui/interfaces/OperatingComputer.jsx # tgui/packages/tgui/interfaces/PreferencesMenu/CharacterPreferences/MainPage.tsx # tgui/packages/tgui/interfaces/PreferencesMenu/types.ts # tgui/packages/tgui/interfaces/SurgeryInitiator.tsx # tools/icon_cutter/check.py |
||
|
|
f58b8511f0 |
Refactors effect_system (#94999)
## About The Pull Request This PR refactors ``effect_system``s to be a bit easier to use by getting rid of ``set_up``, allowing ``attach()`` to be chained into ``start()`` and refactoring most direct system usages in our code to use helper procs. ``set_up`` was unnecessary and only existed to allow ``New``'s behavior to be fully overriden, which is not required if we split sparks/lightning/steam into a new ``/datum/effect_system/basic`` subtype which houses the effect spreading behavior. This allows us to roll all logic from ``set_up`` into ``New`` and cut down on code complexity. Chaining setup as ``system.attach(src).start()`` also helps a bit in case no helper method exists I've added ``do_chem_smoke`` and ``do_foam`` helpers, which respectively allow chemical smoke or foam to be spawned easily without having to manually create effect datums and reagent holders. Also turns out we've had some nonfunctional effect systems which either never set themselves up, or never started, so I fixed those while I was at it (mostly by moving them to aforementioned helper procs) ## Why It's Good For The Game Cleaner code, makes it significantly easier for users to work with. Also most of our effect system usage was copypasta which was passing booleans as numbers, while perfectly fine helper procs existed in our code. ## Changelog 🆑 refactor: Refactored sparks, foam, smoke, and other miscellaneous effect systems. refactor: Vapes now have consistent rigging with cigs using the new system. fix: Fixed some effects never working. /🆑 |
||
|
|
dbadf01a35 |
Readds sovlful IEDs and adds assembly beakerbombs (#94965)
## About The Pull Request This PR sort-of brings back old IEDs, albeit much more freeform compared to their previous iteration. Using #94861's ``spark_act`` interactions they can now be made by filling up a soda can with a variety of chemicals (welding fuel being the easiest to obtain), dunking in a piece of wire, taping it up (optional, required if using welding fuel or plasma) and lighting it on fire with a lighter or welding tool (anything that's hot enough works, really) They have a random delay of 2-4 seconds, and can be disarmed by snipping the fuse with wirecutters in time before they detonate (or don't, depending on the mixture) There's also a new, more "professional" improvised chemical explosive in the form of beakerbombs. These can be assembled by putting a lid on a beaker (alt-click, prevents the beaker from spilling its contents when thrown) and attaching an assembly with an igniter or a condenser to it. <img width="150" height="90" alt="dreamseeker_2OKpZeN7ay" src="https://github.com/user-attachments/assets/599e75ea-9653-4db9-a915-b2ca6307635f" /> When triggered, igniters will heat the reagents up by a bit while condensers will cool them down. However, you can also attach and wire up a power cell, which will cause it to dump all of its power into the beaker when the igniter fires off, triggering ``spark_act`` interactions potentially causing a larger explosion. <img width="534" height="447" alt="dreamseeker_k9Uzf18Eoa" src="https://github.com/user-attachments/assets/4cfed5b4-3875-4522-9bfa-5f6a3c8e0864" /> Decently sized boom from The Contraption. Plasma and welding fuel's potency inside of beakerbombs/soda cans is significantly reduced compared to other riggable objects (strengthdiv is 3 times higher) as they're very easy to obtain and would make for very powerful explosives, considering their very strong strengthdiv as most rigging interactions use very little fuel/plasma to cause a large explosion, which was carried over to the new system. (Don't worry, this still leaves them at sensible values with welding fuel being about as strong as old IEDs on average) Closes #94990 via having plasma's electrical power modifier have a decline past a certain point based on its volume ## Why It's Good For The Game #81529 didn't justify IED removal whatsoever and I think with new mechanics these can be used as easier (but weaker) to make improvised bombs, being much less clunky to make and use than pipebombs. Beakerbombs are essentially a somewhat weaker (even with metamat beakers, you're still 20u short of a normal large beaker grenade at 200u) form of grenades, but have access to new interactions involving charged up explosions, which could make for some variety among chemists' weaponry. ## Changelog 🆑 add: Added back IEDs made by attaching some wire and tape to a soda can filled with fuel, plasma, or any other explosive of your choice. They need to be lit on fire with a lighter or a welding tool. add: You can now attach a lid to beakers with alt-click, preventing them from being spilled when thrown. add: Added beakerbombs, made by attaching an assembly (with optional power cell and wiring) to a lidded beaker. balance: Rigged explosions now create flames. balance: Plasma explosions now limit their explosion potency past a certain point based on their volume /🆑 |
||
|
|
c74f104c89 |
Rewrites plasma rigging code to be much more flexible and dynamic, and cover more cases (#94861)
## About The Pull Request Instead of being snowflake interactions on objects themselves, rigging things with plasma or welding fuel is now handled on reagents' side via ``on_spark_act``, allowing each reagent to decide how they want to handle exposure to electric currents or violent heating. - Obviously plasma and welding fuel cause explosions, but former gains additional power from electric current being passed through it (same math as powercells), while latter doesn't explode unless in an enclosed space, or a high enough current/temperature has been reached, and merely creates a hotspot instead. - Napalm and phlogiston create hotspots, or (try to) damage the holder if they're enclosed - Sorium, liquid dark matter, TATP, nitroglycerin and flash/smoke/sonic powders trigger their usual detonation effects, albeit slightly weaker. - Teslium creates a ZAP, with additional power for a BIG ZAP if it has been triggered by electric current. - RDX becomes spicier with temperature and current, similarly to how it becomes more dangerous when mixed with LE or teslium. - Gunpowder produces a delayed explosion effect (unless its hot or the current is high enough, in which case its instant) and causes sparks as the message claims it does (normal gunpowder explosions also do that) Plasma and gunpowder rigged items can now be controlled using stabilizing agent - in its presence, plasma will not explode unless the used charge is higher than 0.2% of a standard cell's per unit of agent, while gunpowder will instead spend 0.1 + (charge / 10% of a standard cell's charge) units of agent to delay its detonation. Smoke (powder) now produces a visible message and slightly damages lungs of whoever it reacted inside of, if the container was a mob. The numbers on plasma/welding fuel rigs should be ***roughly*** the same. Also lighters can now be rigged in a fashion similar to welding tools. Also it turns out we broke light rigging at some point, so now it works again. ## Why It's Good For The Game This makes the system much more flexible and allows players to make more creative IEDs, expanding upon the sandbox aspect of the game. Also I have an upcoming project bringing IEDs (kind of, in a new form) back, which is why I wrote this in the first place (but decided to atomize the PRs). As for smoke damage, it feels weird to not have any tells when someone suddenly starts hacking up volumetric amounts of smoke, it makes sense that they'd struggle a bit after coughing a few dozen cubic meters of thick vape clouds. ## Changelog 🆑 add: Multiple new reagents such as napalm, sorium, TATP, smoke/sonic/flash powders and other explosives can now be used to rig cells or tools. add: Plasma and gunpowder rigged items can now have controlled current requirement/delay by adding some stabilizing agent alongside the main reagent. balance: Creating chemical smoke inside of a mob now makes them violently cough it up, damaging their lungs a bit. fix: Chemically-rigged lightbulbs now once again explode. refactor: Refactored how power cells, welding tools, lightbulbs, cigarettes (and now, lighters) handle being rigged with chemicals. /🆑 |
||
|
|
ed78409958 |
Adds a trailing comma to some lists, cleans up cargo cult static vars (#94770)
## About The Pull Request Tin, some global lists being kept in memory for no reason when all they are used for is initially picking a random reagent from a list. ## Changelog Nothing player-facing, just code janitoring. |
||
|
|
468b351b86 |
Axes grind & juice vars into procs (#94592)
## About The Pull Request Inspired by #94233. `grind_results`(list) & `juice_typepath`(typepath) are only used when grinding & juicing after which the atom is deleted. This means if that object is not processed these vars occupy memory & don't do anything. Now these values are only generated on demand by calling their respective procs. Considering how these vars are on the obj level the memory savings are quite significant ## Changelog 🆑 refactor: grinding & juicing have been refactored to occupy low memory. Report bugs on github code: improved grinding & juicing code /🆑 |
||
|
|
6e9f2ccfc0 |
Merge remote-tracking branch 'tgstation/master' into upstream-12-15
# Conflicts: # .github/workflows/compile_all_maps.yml # .github/workflows/run_integration_tests.yml # _maps/map_files/CatwalkStation/CatwalkStation_2023.dmm # code/_onclick/hud/credits.dm # code/controllers/subsystem/networks/id_access.dm # code/datums/diseases/advance/advance.dm # code/datums/diseases/advance/symptoms/heal.dm # code/game/machinery/doors/door.dm # code/game/objects/structures/crates_lockers/closets/secure/medical.dm # code/game/objects/structures/crates_lockers/closets/secure/security.dm # code/modules/antagonists/malf_ai/malf_ai_modules.dm # code/modules/jobs/job_types/_job.dm # code/modules/loadout/categories/accessories.dm # code/modules/loadout/loadout_helpers.dm # code/modules/loadout/loadout_items.dm # code/modules/loadout/loadout_preference.dm # code/modules/mob/living/silicon/robot/robot_defense.dm # code/modules/mod/mod_theme.dm # code/modules/projectiles/ammunition/energy/laser.dm # code/modules/reagents/reagent_containers/cups/drinks.dm # code/modules/shuttle/mobile_port/variants/supply.dm # code/modules/surgery/organs/internal/eyes/_eyes.dm # code/modules/unit_tests/screenshots/screenshot_antag_icons_heretic.png # icons/hud/screen_full.dmi |
||
|
|
7754938c72 |
Makes a bunch of lists lazy (#94239)
## About The Pull Request Empy lists. There are a lot of 'em. <img width="981" height="512" alt="image" src="https://github.com/user-attachments/assets/b94b041a-2904-466b-ab89-54bd1de11b4e" /> Going through ways to reduce memory I found a few easy ones here. Wires, the edible component, the seethrough component. None of these are really a concern when it comes to needing lists in memory for performance reasons. Wires aren't going to be cut most of the time for each door. A lot of food does not have any junkiness. Seethrough component lies dormant most of the round. Etc. Making lists lazy in these cases should be a no brainer. Everything I tested still seems to work exactly the same. ## Why It's Good For The Game Frees memory that is just taking up space a lot of the time. ## Changelog Not player-facing, this is all under-the-hood stuff. |
||
|
|
0b0c5ea91e |
Unit test material checks are now performed on all crafting recipes by default. All stack recipes now transfer mats to the results (#92620)
## About The Pull Request Extends the part of the crafting unit test that ensures consistency between the total mats of the components of a recipe (or rather, the result of said recipe) and a generic instance of the same type as its result, previously only implemented on food recipes. ## Why It's Good For The Game This ensures a degree of consistency with the material composition of various objects in the game. I couldn't do it in the original PR as that one was too big already and it took months to get it merged, and have the relative bugs fixed. Currently a WIP as I slowly deal with the unit test reports. ## Changelog 🆑 refactor: Follow-up to the crafting/material refactor from months ago. All objects crafted with stacks now inherit their mat composition (not necessarily the effects and color) by default, while previously only a few things like chair, sinks and toilets did. Report any object looking or behaving weirdly as a result. fix: The material composition of ammo boxes is no longer a 1/10 of what it's supposed to be. It was a shitty hack to make it harder to recycle empty ammo boxes. Instead, they lose materials as they're emptied now. /🆑 |
||
|
|
baf3837ae8 |
Merge remote-tracking branch 'tgstation/master' into upstream-2025-11-29
# Conflicts: # _maps/RandomRuins/SpaceRuins/derelict_sulaco.dmm # _maps/RandomRuins/SpaceRuins/garbagetruck2.dmm # _maps/map_files/CatwalkStation/CatwalkStation_2023.dmm # _maps/map_files/tramstation/tramstation.dmm # code/_onclick/hud/new_player.dm # code/datums/components/squashable.dm # code/datums/diseases/advance/symptoms/heal.dm # code/datums/diseases/chronic_illness.dm # code/datums/status_effects/buffs.dm # code/datums/status_effects/debuffs/drunk.dm # code/datums/status_effects/debuffs/stamcrit.dm # code/game/machinery/computer/crew.dm # code/game/objects/items/devices/scanners/health_analyzer.dm # code/game/objects/items/wall_mounted.dm # code/game/turfs/closed/indestructible.dm # code/modules/admin/view_variables/filterrific.dm # code/modules/antagonists/heretic/influences.dm # code/modules/cargo/orderconsole.dm # code/modules/client/preferences.dm # code/modules/events/space_vines/vine_mutations.dm # code/modules/mob/dead/new_player/new_player.dm # code/modules/mob/living/carbon/human/death.dm # code/modules/mob/living/carbon/human/species_types/jellypeople.dm # code/modules/mob/living/damage_procs.dm # code/modules/mob/living/living.dm # code/modules/mob_spawn/ghost_roles/mining_roles.dm # code/modules/mob_spawn/mob_spawn.dm # code/modules/projectiles/ammunition/energy/laser.dm # code/modules/projectiles/guns/ballistic/launchers.dm # code/modules/projectiles/guns/energy/laser.dm # code/modules/reagents/chemistry/machinery/chem_dispenser.dm # code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm # code/modules/reagents/chemistry/reagents/drinks/alcohol_reagents.dm # code/modules/reagents/chemistry/reagents/medicine_reagents.dm # code/modules/surgery/healing.dm # code/modules/unit_tests/designs.dm # icons/mob/inhands/items_lefthand.dmi # icons/mob/inhands/items_righthand.dmi # tgui/packages/tgui/interfaces/ChemDispenser.tsx |
||
|
|
7a3ad79506 |
All camelCase (Brute|Burn|Fire|Tox|Oxy|Organ|Stamina)(Loss) procs now use snake_case. UNDERSCORES RULE! (#94111)
## About The Pull Request It's just a partial cleanup of anti-[STYLE](https://github.com/tgstation/tgstation/blob/master/.github/guides/STYLE.md) code from /tg/'s ancient history. I compiled & tested with my helpful assistant and damage is still working. <img width="1920" height="1040" alt="image" src="https://github.com/user-attachments/assets/26dabc17-088f-4008-b299-3ff4c27142c3" /> I'll upload the .cs script I used to do it shortly. ## Why It's Good For The Game Just minor code cleanup. Script used is located at https://metek.tech/camelTo-Snake.7z EDIT 11/23/25: Updated the script to use multithreading and sequential scan so it works a hell of a lot faster ``` /* // Copyright 2025 Joshua 'Joan Metekillot' Kidder This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <https://www.gnu.org/licenses/>. // */ using System.Text.RegularExpressions; class Program { static async Task Main(string[] args) { var readFile = new FileStreamOptions { Access = FileAccess.Read, Share = FileShare.ReadWrite, Options = FileOptions.Asynchronous | FileOptions.SequentialScan }; FileStreamOptions writeFile = new FileStreamOptions { Share = FileShare.ReadWrite, Access = FileAccess.ReadWrite, Mode = FileMode.Truncate, Options = FileOptions.Asynchronous }; RegexOptions regexOptions = RegexOptions.Multiline | RegexOptions.Compiled; Dictionary<string, int> changedProcs = new(); string regexPattern = @"(?<=\P{L})([a-z]+)([A-Z]{1,2}[a-z]+)*(Brute|Burn|Fire|Tox|Oxy|Organ|Stamina)(Loss)([A-Z]{1,2}[a-z]+)*"; Regex camelCaseProcRegex = new(regexPattern, regexOptions); string snakeify(Match matchingRegex) { var vals = matchingRegex.Groups.Cast<Group>().SelectMany(_ => _.Captures).Select(_ => _.Value).ToArray(); var newVal = string.Join("_", vals.Skip(1).ToArray()).ToLower(); string logString = $"{vals[0]} => {newVal}"; if (changedProcs.TryGetValue(logString, out int value)) { changedProcs[logString] = value + 1; } else { changedProcs.Add(logString, 1); } return newVal; } var dmFiles = Directory.EnumerateFiles(".", "*.dm", SearchOption.AllDirectories).ToAsyncEnumerable<string>(); // uses default ParallelOptions // https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.paralleloptions?view=net-10.0#main await Parallel.ForEachAsync(dmFiles, async (filePath, UnusedCancellationToken) => { var reader = new StreamReader(filePath, readFile); string oldContent = await reader.ReadToEndAsync(); string newContent = camelCaseProcRegex.Replace(oldContent, new MatchEvaluator((Func<Match, string>)snakeify)); if (oldContent != newContent) { var writer = new StreamWriter(filePath, writeFile); await writer.WriteAsync(newContent); await writer.DisposeAsync(); } reader.Dispose(); }); var logToList = changedProcs.Cast<KeyValuePair<string, int>>().ToList(); foreach (var pair in logToList) { Console.WriteLine($"{pair.Key}: {pair.Value} locations"); } } } ``` ## Changelog 🆑 Bisar code: All (Brute|Burn|Fire|Tox|Oxy|Organ|Stamina)(Loss) procs now use snake_case, in-line with the STYLE guide. Underscores rule! /🆑 |
||
|
|
e28e9fbdba | Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-23-10-2025 | ||
|
|
fcf08eed57 |
Lets you make Trick Trick Cigarettes (#93488)
Co-authored-by: tonty <39193182+tontyGH@users.noreply.github.com> |
||
|
|
939f2fc9ac | Merge branch 'master' of https://github.com/tgstation/tgstation into xpokee-test-upstream-sync | ||
|
|
50499dba9a |
Adds opium and meth rocks! (#92699)
## About The Pull Request <img width="612" height="185" alt="dreamseeker_SNMvxqCRiR" src="https://github.com/user-attachments/assets/1d3103e9-edc1-4e50-8793-c8c2ace53aea" /> This is a small expansion to narcotics, their production, and presence in the game! For my esteemed Terry and Manuel/Sybil sector colleagues I've added: - 2 new solid drug items: **crystal meth and opium**! - A **precipitation reaction** for meth after it's been cooled, producing a solid crystal form, 2u sulfuric acid, 10u meth. **Above 90% purity, the meth will gain an increasingly blue tint!** - A production method for opium! Slice a well developed poppy pod with any sharp item, **before it's fully mature and flowered** to extract a small amount of opium to enjoy! It's a small container for morphine. Can be pressed together to combine the concentrations up to 10u, as each extraction contains trace amounts. Scales off poppy's potency. - Populated narcotics/contraband spawners with new items, and items that really should have been on there. - Added a brand new smoking apparatus, the glass pipe! Can be crafted. Fixed the transparent pixel. - **Fixed methsplosions so that now spacemen can finally smoke meth without exploding!!!** Omegaweed too. Normal methsplosions are untouched! - **Expanded the ability for players to insert all drug items into pipes**, so now players can smoke moon rocks, SaturnX, and my new items! Previously, only 'dried' items were. - Fentanyl patch box for narcotics spawner, also for a new ruin I've made. - **Expanded these changes to the black market uplink.** <img width="640" height="256" alt="demo" src="https://github.com/user-attachments/assets/c8a0eb2c-b0fa-4e70-b6c1-2e741cd170a2" /> Now, players can precipitate meth into a solid form, and produce opium. I added a lot of these substances and the ones that didn't exist into spawners that they were partially in, or could reasonably be in. The opium poppy extraction required a new variable that can be used for similar interactions too. Crystal sprites are transparent, smoked sprite has a nice little animation and glow. These items are now on the black market uplink, in both expensive dealer shipments of varying rarities for different narcotics, as well as personal use quantities on a different rotation, at a steeper price. Expanded randomized spawners to give the black market and ruins more teeth and edge, without adding another weapon. Credit to the moon rock guy, I'm just happy I made your stuff smokable!! <img width="219" height="201" alt="dreamseeker_N8x9bsN3kS" src="https://github.com/user-attachments/assets/64d23c27-92b9-423b-91ac-903b8476d0b4" /> tl;dr added opium and meth ## Why It's Good For The Game For **too long**, narcotics, chems and stims have been mere integers or buffs/debuffs in pills or syringes, so I introduced two new methods for making them and populated niche, criminal vectors with them. These are real items now, with more interactions. Allowing these to be smoked also allowed moon rocks and SaturnX to be smoked too, including them into this and enticing players to have another reason to make them as well. Buffs with drawbacks, addictions and problems are actually great. It's a new venue for flavor. I've put thought into the balance for addition and quantity. It'll add a criminal, or exotic tone to a round, provide new business opportunities, and new access to stims and chems without going over the top. Perhaps something peaceful antagonists can do. More proverbial floor pills give security or command something to selectively enforce, and absolutely provide novel opportunities for medical staff! Also, methsplosions now don't happen in cigarette items! You can smoke omegaweed without fucking dying! ## Changelog 🆑 add: Added meth, opium, and their production! Also added to black market uplink. add: Added a craftable glass pipe. add: Added to contraband spawners. qol: Can now insert any drug item into a pipe. fix: Spacemen can now smoke meth without exploding!! /🆑 --------- Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com> Co-authored-by: tattle <66640614+dragomagol@users.noreply.github.com> |
||
|
|
e7c25d4c40 |
The Glitterening (#92226)
## About The Pull Request Adds a number of new capabilities to glitter. - It can be any colour. <img width="657" height="398" alt="image" src="https://github.com/user-attachments/assets/60e80c04-8eee-470c-8953-47f6eda9f83e" /> - It can be made in chemistry and dyed by combining it with acetone and other reagents to give it the average colour of the non-glitter, not-acetone reagents. - Multiple colours can be mixed into one reagent datum, randomly depositing a colour from those in the datum on the floor. <img width="554" height="507" alt="image" src="https://github.com/user-attachments/assets/9cc7d1d5-9bec-4b28-af06-310ffb24de49" /> - Anyone with glitter reagent in them will cough glitter onto the floor - Glittery crates will leave a trail of appropriately coloured glitter when moved <img width="960" height="259" alt="image" src="https://github.com/user-attachments/assets/71cc1176-23f9-4ae7-b500-1744b752c014" /> Resprited glitter to support these changes and make it not look like gas (or ass). ## Why It's Good For The Game It looks cool and raises the bar for chemists maximally pissing off the janitor as they fill a room with multicoloured glitter and all the occupants run off to cough more up all over the surrounding area. ## Changelog 🆑 add: Glitter can now be made from plastic polymers and aluminium. add: Plastic polymer can be made at any temperature, and then heated to produce sheets. add: Glitter can now be made any colour, mix 10 units each of glitter and acetone to change its colour to that of the other reagents in the beaker. add: Mixing different colours of glitter will cause a random selection of those colours to appear on the floor when released. add: Being exposed to glitter in reagent form causes you to cough up more glitter onto the floor add: Dragging glittery crates will now spread a trail of glitter and angry janitors behind them. image: Added new glitter sprites (that don't look like gasses) /🆑 |
||
|
|
d97c57b263 |
The Glitterening (#92226)
## About The Pull Request Adds a number of new capabilities to glitter. - It can be any colour. <img width="657" height="398" alt="image" src="https://github.com/user-attachments/assets/60e80c04-8eee-470c-8953-47f6eda9f83e" /> - It can be made in chemistry and dyed by combining it with acetone and other reagents to give it the average colour of the non-glitter, not-acetone reagents. - Multiple colours can be mixed into one reagent datum, randomly depositing a colour from those in the datum on the floor. <img width="554" height="507" alt="image" src="https://github.com/user-attachments/assets/9cc7d1d5-9bec-4b28-af06-310ffb24de49" /> - Anyone with glitter reagent in them will cough glitter onto the floor - Glittery crates will leave a trail of appropriately coloured glitter when moved <img width="960" height="259" alt="image" src="https://github.com/user-attachments/assets/71cc1176-23f9-4ae7-b500-1744b752c014" /> Resprited glitter to support these changes and make it not look like gas (or ass). ## Why It's Good For The Game It looks cool and raises the bar for chemists maximally pissing off the janitor as they fill a room with multicoloured glitter and all the occupants run off to cough more up all over the surrounding area. ## Changelog 🆑 add: Glitter can now be made from plastic polymers and aluminium. add: Plastic polymer can be made at any temperature, and then heated to produce sheets. add: Glitter can now be made any colour, mix 10 units each of glitter and acetone to change its colour to that of the other reagents in the beaker. add: Mixing different colours of glitter will cause a random selection of those colours to appear on the floor when released. add: Being exposed to glitter in reagent form causes you to cough up more glitter onto the floor add: Dragging glittery crates will now spread a trail of glitter and angry janitors behind them. image: Added new glitter sprites (that don't look like gasses) /🆑 |
||
|
|
dcbd05a70c |
makes lit ciggies emit light (#91648)
## About The Pull Request  ciggies and their children now emit light onto their tile when sparked up :3c and stop emitting light when they're put out tha screenies from downstream where i did it initially but this is like 7 lines of code its a good pr it works trust me just merge it im begging u my new tg repo has been building for twenty minutes im scared of what its making in there please dont make me find out *edit* nvm it built now look  wahoo! ## Why It's Good For The Game its cute! its flavor! you can farm aura by sparking a dart in a dark maint tunnel! tactical dudes can talk about 'light discipline' and go oorah! there's something for everyone here really ## Changelog 🆑 add: Lit smokables now act as a weak lightsource. 🆑 |
||
|
|
d9de687335 |
makes lit ciggies emit light (#91648)
## About The Pull Request  ciggies and their children now emit light onto their tile when sparked up :3c and stop emitting light when they're put out tha screenies from downstream where i did it initially but this is like 7 lines of code its a good pr it works trust me just merge it im begging u my new tg repo has been building for twenty minutes im scared of what its making in there please dont make me find out *edit* nvm it built now look  wahoo! ## Why It's Good For The Game its cute! its flavor! you can farm aura by sparking a dart in a dark maint tunnel! tactical dudes can talk about 'light discipline' and go oorah! there's something for everyone here really ## Changelog 🆑 add: Lit smokables now act as a weak lightsource. 🆑 |
||
|
|
eb84412816 |
Adds a new brand of cigarettes, Mainthol Greys (#91328)
**We all like a little flavor, and a new brand in the sector promises a dark smoke, questionable trace compounds, and the robust flavors of maintenance...**  ## About The Pull Request I've added a new brand of cigarettes! Mainthol greys, now available in hacked cigarette vending machines for an immodest sum, hand rolled & grown in the Sybil sector. The syndicate stock some stolen surplus too. The goal was to create another nice little flavor item, a compliment to grey bull and other maintenance loot. <details> <summary>Chemical contents in code, for the joy of discovery!</summary> ``` 1u oculine is in every cigarette, an imperceptible buffer against the welder harming an enterprising assistant's eyes. Extremely trace amount for cigarette microdosing. Each cigarette has a 40% chance to have an extra reagent from a list of 14 minor toxins, drugs, and things like glitter. They're inconsequential via cigarette, but still noticed and experienced. ``` </details> I tested these bad boys extensively, blending them, ate them, blinded myself with a welder, spammed a health analyzer while smoking to gauge chemicals and ensure intended effects are noticed and add a nice je ne sais quois. **Our sprites!**  ## Why It's Good For The Game It's an extra little flavor item with a couple simple surprises to spice up your assisting. ## Changelog 🆑 add: Added a new brand of cigarettes to hacked & syndicate vending machines+spawner list. /🆑 --------- Co-authored-by: Tim <timothymtorres@gmail.com> Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com> Co-authored-by: san7890 <the@san7890.com> |
||
|
|
cdac0c5bf9 |
Adds a new brand of cigarettes, Mainthol Greys (#91328)
**We all like a little flavor, and a new brand in the sector promises a dark smoke, questionable trace compounds, and the robust flavors of maintenance...**  ## About The Pull Request I've added a new brand of cigarettes! Mainthol greys, now available in hacked cigarette vending machines for an immodest sum, hand rolled & grown in the Sybil sector. The syndicate stock some stolen surplus too. The goal was to create another nice little flavor item, a compliment to grey bull and other maintenance loot. <details> <summary>Chemical contents in code, for the joy of discovery!</summary> ``` 1u oculine is in every cigarette, an imperceptible buffer against the welder harming an enterprising assistant's eyes. Extremely trace amount for cigarette microdosing. Each cigarette has a 40% chance to have an extra reagent from a list of 14 minor toxins, drugs, and things like glitter. They're inconsequential via cigarette, but still noticed and experienced. ``` </details> I tested these bad boys extensively, blending them, ate them, blinded myself with a welder, spammed a health analyzer while smoking to gauge chemicals and ensure intended effects are noticed and add a nice je ne sais quois. **Our sprites!**  ## Why It's Good For The Game It's an extra little flavor item with a couple simple surprises to spice up your assisting. ## Changelog 🆑 add: Added a new brand of cigarettes to hacked & syndicate vending machines+spawner list. /🆑 --------- Co-authored-by: Tim <timothymtorres@gmail.com> Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com> Co-authored-by: san7890 <the@san7890.com> |
||
|
|
9ef0768b1c |
Removes a couple of duplicate gag map_icons + fixes the gags_recolorable component + most lootpanel gags previews (#91341)
## About The Pull Request Turns out there were a couple of black mask subtypes that I missed as well as a prisoner uniform subtype. Also fixes some bugs that are not related to the map icon pr to further improve the situation with GAGS previews. ## Why It's Good For The Game Smaller .dmis, working previews ## Changelog 🆑 fix: spraycan can now be used to recolor the gi, glow shoes, striped dress, H.E.C.K. suit fix: most GAGS items should now be showing up in the lootpanel again /🆑 |
||
|
|
1f3894e793 |
Crafting refactor, implementing materials (#89465)
My original plan was to just implement materials into crafting so that items would inherit the materials of their components, allowing for some interesting stuff if the material flags of the item allow it. However to my dismay crafting is a pile of old tech debt, starting from the old `del_reqs` and `CheckParts` which still contain lines about old janky bandaids that are no longer in use nor reachable, up to the `customizable_reagent_holder` component which has some harddel issues when your custom food is sliced, and items used in food recipes not being deleted and instead stored inside the result with no purpose as well as other inconsistencies like stack recipes that transfer materials having counterparts in the UI that don't do that. EDIT: Several things have come up while working on this, so I apologise that it ended up changing over 100+ files. I managed to atomize some of the changes, but it's a bit tedious. EDIT: TLDR because I was told this section is too vague and there's too much going on. This PR: - Improves the dated crafting code (not the UI). - replaced `atom/CheckParts` and `crafting_recipe/on_craft_completion` with `atom/on_craft_completion`. - Reqs used in food recipes are now deleted by default and not stored inside the result (they did nothing). - Renames the customizable_reagent_holder comp and improves it (No harddels/ref issues). - Adds a unit test that tries to craft all recipes to see what's wrong (it skips some of the much more specific reqs for now). - In the unit test is also the code to make sure materials of the crafted item and a non-crafted item of the same type are roughly the same, so far only applied to food. - Some mild material/food refactoring around the fact that food item code has been changed to support materials. Improving the backbone of the crafting system. Also materials and food code. 🆑 refactor: Refactored crafting backend. Report possible pesky bugs. balance: the MEAT backpack (from the MEAT cargo pack) may be a smidge different because of code standardization. /🆑 |
||
|
|
4250ecb14c |
Removes a couple of duplicate gag map_icons + fixes the gags_recolorable component + most lootpanel gags previews (#91341)
## About The Pull Request Turns out there were a couple of black mask subtypes that I missed as well as a prisoner uniform subtype. Also fixes some bugs that are not related to the map icon pr to further improve the situation with GAGS previews. ## Why It's Good For The Game Smaller .dmis, working previews ## Changelog 🆑 fix: spraycan can now be used to recolor the gi, glow shoes, striped dress, H.E.C.K. suit fix: most GAGS items should now be showing up in the lootpanel again /🆑 |
||
|
|
4f6727024d |
Crafting refactor, implementing materials (#89465)
## About The Pull Request My original plan was to just implement materials into crafting so that items would inherit the materials of their components, allowing for some interesting stuff if the material flags of the item allow it. However to my dismay crafting is a pile of old tech debt, starting from the old `del_reqs` and `CheckParts` which still contain lines about old janky bandaids that are no longer in use nor reachable, up to the `customizable_reagent_holder` component which has some harddel issues when your custom food is sliced, and items used in food recipes not being deleted and instead stored inside the result with no purpose as well as other inconsistencies like stack recipes that transfer materials having counterparts in the UI that don't do that. EDIT: Several things have come up while working on this, so I apologise that it ended up changing over 100+ files. I managed to atomize some of the changes, but it's a bit tedious. EDIT: TLDR because I was told this section is too vague and there's too much going on. This PR: - Improves the dated crafting code (not the UI). - replaced `atom/CheckParts` and `crafting_recipe/on_craft_completion` with `atom/on_craft_completion`. - Reqs used in food recipes are now deleted by default and not stored inside the result (they did nothing). - Renames the customizable_reagent_holder comp and improves it (No harddels/ref issues). - Adds a unit test that tries to craft all recipes to see what's wrong (it skips some of the much more specific reqs for now). - In the unit test is also the code to make sure materials of the crafted item and a non-crafted item of the same type are roughly the same, so far only applied to food. - Some mild material/food refactoring around the fact that food item code has been changed to support materials. ## Why It's Good For The Game Improving the backbone of the crafting system. Also materials and food code. ## Changelog 🆑 refactor: Refactored crafting backend. Report possible pesky bugs. balance: the MEAT backpack (from the MEAT cargo pack) may be a smidge different because of code standardization. /🆑 |
||
|
|
655b66bdd0 |
Adds automatic GAGS icon generation for mapping and the loadout menu (#90940)
Revival of https://github.com/tgstation/tgstation/pull/86482, which is even more doable now that we have rustg iconforge generation. What this PR does: - Sets up every single GAGS icon in the game to have their own preview icon autogenerated during compile. This is configurable to not run during live. The icons are created in `icons/map_icons/..` - This also has the side effect of providing accurate GAGS icons for things like the loadout menu. No more having to create your own previews.  <details><summary>Mappers rejoice!</summary>   </details> <details><summary>Uses iconforge so it does not take up much time during init</summary>  </details> --- this still applies: Note for Spriters: After you've assigned the correct values to vars, you must run the game through init on your local machine and commit the changes to the map icon dmi files. Unit tests should catch all cases of forgetting to assign the correct vars, or not running through init. Note for Server Operators: In order to not generate these icons on live I've added a new config entry which should be disabled on live called GENERATE_ASSETS_IN_INIT in the config.txt No more error icons in SDMM and loadout. 🆑 refactor: preview icons for greyscale items are now automatically generated, meaning you can see GAGS as they actually appear ingame while mapping or viewing the loadout menu. /🆑 --------- Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com> |
||
|
|
cb51a652a9 |
Adds automatic GAGS icon generation for mapping and the loadout menu (#90940)
## About The Pull Request Revival of https://github.com/tgstation/tgstation/pull/86482, which is even more doable now that we have rustg iconforge generation. What this PR does: - Sets up every single GAGS icon in the game to have their own preview icon autogenerated during compile. This is configurable to not run during live. The icons are created in `icons/map_icons/..` - This also has the side effect of providing accurate GAGS icons for things like the loadout menu. No more having to create your own previews.  <details><summary>Mappers rejoice!</summary>   </details> <details><summary>Uses iconforge so it does not take up much time during init</summary>  </details> --- ### Copied from https://github.com/tgstation/tgstation/pull/86482 as this still applies: Note for Spriters: After you've assigned the correct values to vars, you must run the game through init on your local machine and commit the changes to the map icon dmi files. Unit tests should catch all cases of forgetting to assign the correct vars, or not running through init. Note for Server Operators: In order to not generate these icons on live I've added a new config entry which should be disabled on live called GENERATE_ASSETS_IN_INIT in the config.txt ## Why It's Good For The Game No more error icons in SDMM and loadout. ## Changelog 🆑 refactor: preview icons for greyscale items are now automatically generated, meaning you can see GAGS as they actually appear ingame while mapping or viewing the loadout menu. /🆑 --------- Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com> |
||
|
|
bc2215667f |
Re-refactors batons / Refactors attack chain force modifiers (#90809)
Melee attack chain now has a list passed along with it, `attack_modifiers`, which you can stick force modifiers to change the resulting attack This is basically a soft implementation of damage packets until a more definitive pr, but one that only applies to item attack chain, and not unarmed attacks. This change was done to facilitate a baton refactor - batons no longer hack together their own attack chain, and are now integrated straight into the real attack chain. This refactor itself was done because batons don't send any attack signals, which has been annoying in the past (for swing combat). 🆑 Melbert refactor: Batons have been refactored again. Baton stuns now properly count as an attack, when before it was a nothing. Report any oddities, particularly in regards to harmbatonning vs normal batonning. refactor: The method of adjusting item damage mid-attack has been refactored - some affected items include the Nullblade and knives. Report any strange happenings with damage numbers. refactor: A few objects have been moved to the new interaction chain - records consoles, mawed crucible, alien weeds and space vines, hedges, restaurant portals, and some mobs - to name a few. fix: Spears only deal bonus damage against secure lockers, not all closet types (including crates) /🆑 |
||
|
|
5261efb67f |
Re-refactors batons / Refactors attack chain force modifiers (#90809)
## About The Pull Request Melee attack chain now has a list passed along with it, `attack_modifiers`, which you can stick force modifiers to change the resulting attack This is basically a soft implementation of damage packets until a more definitive pr, but one that only applies to item attack chain, and not unarmed attacks. This change was done to facilitate a baton refactor - batons no longer hack together their own attack chain, and are now integrated straight into the real attack chain. This refactor itself was done because batons don't send any attack signals, which has been annoying in the past (for swing combat). ## Changelog 🆑 Melbert refactor: Batons have been refactored again. Baton stuns now properly count as an attack, when before it was a nothing. Report any oddities, particularly in regards to harmbatonning vs normal batonning. refactor: The method of adjusting item damage mid-attack has been refactored - some affected items include the Nullblade and knives. Report any strange happenings with damage numbers. refactor: A few objects have been moved to the new interaction chain - records consoles, mawed crucible, alien weeds and space vines, hedges, restaurant portals, and some mobs - to name a few. fix: Spears only deal bonus damage against secure lockers, not all closet types (including crates) /🆑 |
||
|
|
f060897697 | Merge remote-tracking branch 'upstream/master' into upstream-25-04b | ||
|
|
14aec07fc4 |
Removes Pollution (#3725)
## About The Pull Request deletes pollution ## Why It's Good For The Game `The odor of decaying waste fills your nostrils...` ## Changelog 🆑 del: Due to new environmental regulations, we have removed all pollutants from our space stations. /🆑 --------- Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com> Co-authored-by: Roxy <75404941+TealSeer@users.noreply.github.com> |
||
|
|
11d82b7995 |
You can now interact with held mobs beside wearing them (feat: "minor" melee attack chain cleanup) (#90080)
People can now pet held mothroaches and pugs if they want to, or use items on them, hopefully without causing many issues. After all, it only took about a couple dozen lines of code to make... ...Oh, did the 527 files changed or the 850~ lines added/removed perhaps catch your eye? Made you wonder if I accidentally pushed the wrong branch? or skewed something up big time? Well, nuh uh. I just happen to be fed up with the melee attack chain still using stringized params instead of an array/list. It was frankly revolting to see how I'd have had to otherwise call `list2params` for what I'm trying to accomplish here, and make this PR another tessera to the immense stupidity of our attack chain procs calling `params2list` over and over and over instead of just using that one call instance from `ClickOn` as an argument. It's 2025, honey, wake up! I also tried to replace some of those single letter vars/args but there are just way too many of them. Improving old code. And I want to be able to pet mobroaches while holding them too. 🆑 qol: You can now interact with held mobs in more ways beside wearing them. /🆑 |
||
|
|
fc62d98d31 |
Adds battery matches & gum wrappers (#89871)
## About The Pull Request Adds bubblegum wrappers, I was originally gonna make it a trash type for gum but thought it would hide the feature since there's no indication that they are in a wrapper (and you'd have to eat the entire gum to get to it, which I don't think you can even do?), so instead bubblegum boxes have 4 wrappers which each holds 1 piece of gum. These wrappers can be grinded down for aluminium, or used in a crafting recipe with a cell of any kind to make a makeshift match, you can ignite it by using it in your hand (at the cost of minor burn damage). Fixes the description for matches having 2 periods in them  Icon for the wrapper is a recolored version of ``janitor.dmi``'s floor sign, while the match itself is the "crappy" cell with a codersprited stick of gum coiled around it, with a copy paste of the regular match's fire for the fire. ## Why It's Good For The Game For years I've thought of how cool it would be to add makeshift equipment that prisoners could make, this is a pretty harmless addition; a source of aluminium and matches. Prisoners currently are incredibly dependent on prison loot spawn, which kinda sucks, and this is also reliant on prisoner loots, but at the very least it means getting more use out of the lesser-useful items. It would be nice to open up new ways to play Prisoner that don't involve some form of prison breakout. ## Changelog 🆑 add: Bubblegum now comes in wrappers. add: You can make a match out of a battery and a gum wrapper. spellcheck: Matches no longer have 2 periods in the description once used. /🆑 |
||
|
|
339616ae78 |
You can now interact with held mobs beside wearing them (feat: "minor" melee attack chain cleanup) (#90080)
## About The Pull Request People can now pet held mothroaches and pugs if they want to, or use items on them, hopefully without causing many issues. After all, it only took about a couple dozen lines of code to make... ...Oh, did the 527 files changed or the 850~ lines added/removed perhaps catch your eye? Made you wonder if I accidentally pushed the wrong branch? or skewed something up big time? Well, nuh uh. I just happen to be fed up with the melee attack chain still using stringized params instead of an array/list. It was frankly revolting to see how I'd have had to otherwise call `list2params` for what I'm trying to accomplish here, and make this PR another tessera to the immense stupidity of our attack chain procs calling `params2list` over and over and over instead of just using that one call instance from `ClickOn` as an argument. It's 2025, honey, wake up! I also tried to replace some of those single letter vars/args but there are just way too many of them. ## Why It's Good For The Game Improving old code. And I want to be able to pet mobroaches while holding them too. ## Changelog 🆑 qol: You can now interact with held mobs in more ways beside wearing them. /🆑 |
||
|
|
753d8e5ba4 | Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-25-04a | ||
|
|
17503426ee |
Adds battery matches & gum wrappers (#89871)
## About The Pull Request Adds bubblegum wrappers, I was originally gonna make it a trash type for gum but thought it would hide the feature since there's no indication that they are in a wrapper (and you'd have to eat the entire gum to get to it, which I don't think you can even do?), so instead bubblegum boxes have 4 wrappers which each holds 1 piece of gum. These wrappers can be grinded down for aluminium, or used in a crafting recipe with a cell of any kind to make a makeshift match, you can ignite it by using it in your hand (at the cost of minor burn damage). Fixes the description for matches having 2 periods in them  Icon for the wrapper is a recolored version of ``janitor.dmi``'s floor sign, while the match itself is the "crappy" cell with a codersprited stick of gum coiled around it, with a copy paste of the regular match's fire for the fire. ## Why It's Good For The Game For years I've thought of how cool it would be to add makeshift equipment that prisoners could make, this is a pretty harmless addition; a source of aluminium and matches. Prisoners currently are incredibly dependent on prison loot spawn, which kinda sucks, and this is also reliant on prisoner loots, but at the very least it means getting more use out of the lesser-useful items. It would be nice to open up new ways to play Prisoner that don't involve some form of prison breakout. ## Changelog 🆑 add: Bubblegum now comes in wrappers. add: You can make a match out of a battery and a gum wrapper. spellcheck: Matches no longer have 2 periods in the description once used. /🆑 |
||
|
|
dd3d58781d |
Adds blowing cigarette smoke in people's face (#89974)
## About The Pull Request If you exhale a cloud of smoke from a cigarette while face to face with someone, you will give them a negative moodlet, blowing it right in their face. ## Why It's Good For The Game Added disrespect ## Changelog 🆑 Melbert add: If you exhale a cloud of smoke from a cigarette while face to face with someone, you'll blow it right in their face. add: Syndicate Cigarettes will blind (for a very short time) if you blow their smoke in someone's face. /🆑 |
||
|
|
87ce43bb8f |
The edible component now uses DUPE_SOURCE mode (#89687)
## About The Pull Request The edible component now uses DUPE_SOURCE mode, which is needed to avoid conflicts between sources. This includes some other tidbits from my refactor like renaming dcs/flags.dm to ds/declarations.dm (in virtue of the fact it doesn't only contain flags anymore even before this PR), meat materials giving protein and fat reagents to affected atoms instead of generic nutriment and oil, and the pizza material no longer containing meat, because margherita pizza, which the material is extracted from, doesn't contain meat either. The pepperonis were magically conjured space bs. ## Why It's Good For The Game There are multiple sources of the edible component and we don't want issues with that. Also atomizing stuff from my refactor. ## Changelog 🆑 balance: objects made out of meat are no longer classified as gross food on top of being raw and meaty, and actually contain protein and fat instead of standard nutriment and oil. balance: the pizza material stacks, crafted with margherita pizza and rollig pin mind you, no longer magically contain pepperoni. /🆑 |
||
|
|
da31ea158c |
The edible component now uses DUPE_SOURCE mode (#89687)
## About The Pull Request The edible component now uses DUPE_SOURCE mode, which is needed to avoid conflicts between sources. This includes some other tidbits from my refactor like renaming dcs/flags.dm to ds/declarations.dm (in virtue of the fact it doesn't only contain flags anymore even before this PR), meat materials giving protein and fat reagents to affected atoms instead of generic nutriment and oil, and the pizza material no longer containing meat, because margherita pizza, which the material is extracted from, doesn't contain meat either. The pepperonis were magically conjured space bs. ## Why It's Good For The Game There are multiple sources of the edible component and we don't want issues with that. Also atomizing stuff from my refactor. ## Changelog 🆑 balance: objects made out of meat are no longer classified as gross food on top of being raw and meaty, and actually contain protein and fat instead of standard nutriment and oil. balance: the pizza material stacks, crafted with margherita pizza and rollig pin mind you, no longer magically contain pepperoni. /🆑 |
||
|
|
b6b8306fda | Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-25-02a | ||
|
|
d0a7f955f8 |
Fix various issues with names in string interpolation (#89246)
## About The Pull Request Commit messages should be descriptive of all changes. The "incorrect `\The` macro capitalization" was intentional when it was added, but as far as I know TG says "the supermatter" rather than "The Supermatter," so it's incorrect now. This is completely untested. I don't even know how you'd go about testing this, it's just a fuckton of strings. Someday I want to extract them and run NLP on it to catch grammar problems... ## Why It's Good For The Game Basic grammar pass for name strings. Should make `\the` work better and avoid cases like `the John Smith`. |
||
|
|
586710e0d4 |
You can light a match on the heel of your boot (#88690)
## About The Pull Request - Matches can be ignited with boots. - Matches have a rare chance of failing to ignite (prompting you to try again) or an even rarer chance of snapping (wasting it). - Also makes ignition span use mostly-consistent (using rose span for the "cooler" ignition effects). ## Why It's Good For The Game You may be thinking "hey, matches won't light on just friction unless they're from the 1800s", and you'd be right. But it's a cool movie trope, which means it should be possible, I don't make the rules. ## Changelog 🆑 Melbert add: You can light matches on the heel of your boots - Just don't do it too hard. /🆑 |
||
|
|
bf1e3f2619 |
[NO-GBP] Fixes a minor fuckup that made cigarettes contain up to double the intended amount of nicotine (#87733)
## About The Pull Request See name, also fixes them not being injectable Sorry guys, this is my fault. ## Why It's Good For The Game Fixes a bug that was brought upon us when I thought 500 cigarettes was funny ## Changelog 🆑 fix: Cigarettes can be injected again and have the right amount of nicotine /🆑 --------- Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com> |
||
|
|
9dbdbf7e1f |
Prevent vape from being emptied if the cap isn't open (#87652)
## About The Pull Request If the cap isn't open, reagents won't be emptied ## Why It's Good For The Game It makes no sense and you constantly empty reagents by accident, this will hopefully prevent this ## Changelog 🆑 fix: e-cigarettes can't be emptied if the cap isn't open /🆑 Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com> |
||
|
|
f5099185c8 |
Adds a new INHALE reagent transfer method and applies it to smoking and smoke inhalation. Nitrous oxide (the reagent version) inhalation causes brain damage. (#87306)
## About The Pull Request Adds the ``INHALE`` transfer method. Smoking and smoke exposure now uses this method. Makes a few sensible inhalation effects for current behaviours. Adds a unit test amongst the rest of the exposure method tests. Nitrous oxide does brain damage on inhalation based on volume inhaled. ## Why It's Good For The Game Smoke and smoking being based on ingestion rather than inhaling was always weird to me. It'd be nice to have a specific method for smoking instead of a method shared by drinking. Many of our smokables make sense as indigestibles, obviously, but maybe we'd like a chem you can ONLY smoke. ~~Also, I walked out of a job interview and up the street to see a guy throwing his empty nitrous canisters around and yelling at passerbys, so shout out to that fucking guy with this PR.~~ ## Changelog 🆑 code: Introduces a INHALE method for reagent transfer. Cigarettes and smoke reactions use this new method. balance: Nitrous oxide now brain damage if you inhale it. So don't do that. /🆑 --------- Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com> Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com> |
||
|
|
778ed9f1ab |
The death or internal/external organ pathing (ft. fixed fox ears and recoloring bodypart overlays with dye sprays) (#87434)
## About The Pull Request This PR kills the abstract internal and external typepaths for organs, now replaced by an EXTERNAL_ORGAN flag to distinguish the two kinds. This PR also fixes fox ears (from #87162, no tail is added) and mushpeople's caps (they should be red, the screenshot is a tad outdated). And yes, you can now use a hair dye spray to recolor body parts like most tails, podpeople hair, mushpeople caps and cat ears. The process can be reversed by using the spray again. ## Why It's Good For The Game Time-Green put some effort during the last few months to untie functions and mechanics from external/internal organ pathing. Now, all that this pathing is good for are a few typechecks, easily replaceable with bitflags. Also podpeople and mushpeople need a way to recolor their "hair". This kind of applies to fish tails from the fish infusion, which colors can't be selected right now. The rest is just there if you ever want to recolor your lizard tail for some reason. Proof of testing btw (screenshot taken before mushpeople cap fix, right side has dyed body parts, moth can't be dyed, they're already fabolous):  ## Changelog 🆑 code: Removed internal/external pathing from organs in favor of a bit flag. Hopefully this shouldn't break anything about organs. fix: Fixed invisible fox ears. fix: Fixed mushpeople caps not being colored red by default. add: You can now dye most tails, podpeople hair, mushpeople caps etc. with a hair dye spray. /🆑 |
||
|
|
e59d8ba64b | Merge commit '179a607a90ad7ec62bdaff4e6fe72af60ee56442' of https://github.com/tgstation/tgstation into upstream-24-10b | ||
|
|
58501dce77 |
Reorganizes the sound folder (#86726)
## About The Pull Request <details> - renamed ai folder to announcer -- announcer -- - moved vox_fem to announcer - moved approachingTG to announcer - separated the ambience folder into ambience and instrumental -- ambience -- - created holy folder moved all related sounds there - created engineering folder and moved all related sounds there - created security folder and moved ambidet there - created general folder and moved ambigen there - created icemoon folder and moved all icebox-related ambience there - created medical folder and moved all medbay-related ambi there - created ruin folder and moves all ruins ambi there - created beach folder and moved seag and shore there - created lavaland folder and moved related ambi there - created aurora_caelus folder and placed its ambi there - created misc folder and moved the rest of the files that don't have a specific category into it -- instrumental -- - moved traitor folder here - created lobby_music folder and placed our songs there (title0 not used anywhere? - server-side modification?) -- items -- - moved secdeath to hailer - moved surgery to handling -- effects -- - moved chemistry into effects - moved hallucinations into effects - moved health into effects - moved magic into effects -- vehicles -- - moved mecha into vehicles created mobs folder -- mobs -- - moved creatures folder into mobs - moved voice into mobs renamed creatures to non-humanoids renamed voice to humanoids -- non-humanoids-- created cyborg folder created hiss folder moved harmalarm.ogg to cyborg -- humanoids -- -- misc -- moved ghostwhisper to misc moved insane_low_laugh to misc I give up trying to document this. </details> - [X] ambience - [x] announcer - [x] effects - [X] instrumental - [x] items - [x] machines - [x] misc - [X] mobs - [X] runtime - [X] vehicles - [ ] attributions ## Why It's Good For The Game This folder is so disorganized that it's vomit inducing, will make it easier to find and add new sounds, providng a minor structure to the sound folder. ## Changelog 🆑 grungussuss refactor: the sound folder in the source code has been reorganized, please report any oddities with sounds playing or not playing server: lobby music has been repathed to sound/music/lobby_music /🆑 |
||
|
|
b9fad92412 |
Adds achievement-unlockables hats for orbies (feat. big rollies from hacked cigarette vending machines) (#86098)
## About The Pull Request So, do you remember orbies, those cutesy virtual PDA pets from that PR that Ben made roughly six months ago before moving on his next project, leaving them to be probably forgotten in a near future/present/past? Yeah, personally I never played around, however I recalled that they do have customizable virtual hats, which can be selected from a dropdown in the UI, and I thought that it would be a perfect target for some achievement-related content, as they're totally cosmetic that provides no gameplay advantage nor affects balance in no way whatsoever. I cannot sit well with cheevos being purely an end to itself, that's the reason this PR exists. The new additions to orbies hats, and their respective required achievements are: - The fishing hat (Legendary Fisher) - A huge-ass rollie (Unhealthy Snacks) (yeah, it isn't exactly a hat but the code in no way assume that the item has to be a hat, beside vars named like that for the sake of convenience) - A tape wizard hat (Archmage) - An energy cakehat (Very Important Piscis) - A bounty hunter cowboy hat (Hot Damn!) - A fancy crown (Outdebted) The huge-ass rollie (called fat dart) in the game, is a new cigarette, rarely found in hacked cigarette vending machines. It's obviously a reference to that Ralsei meme from 3 years ago or so but I personally don't care, I just wanted to give an excessively big cigarette to orbies to symbolize the proposterous accomplishment of eating 500 cigarettes in a single round without dying from nicotine OD less than halfway through, but since orbie hats use actual items are references for their appearance, I found myself obliged to add one to the code. Overall, the fat dart comes from an old PR on Citadel, though I had to resprite it myself. Here's a lazy collage of the hats. For some reason unbeknownst to me, the hats are horizontally squished. I need to ask Ben why he did them this way when Orbies' heads are as wide as a rugby ball.  ## Why It's Good For The Game Simple, extra cosmetic stuff for a simple feature that's as relevant as playing around with plushes. ## Changelog 🆑 add: Added more customizable options to PDA virtual pets, which can be unlocked by completing achievements. add: Added a fat dart that can be rarely found in hacked cigarette vending machines. /🆑 |