mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-14 17:45:02 +01:00
masterfixes
1318 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
f601a6ddaf | Merge remote-tracking branch 'tgstation/master' into upstream-6-2-2026 | ||
|
|
2275e1958e |
Adds deep lore to some pistols, and partially rewrites the baton lore. Repaths some items. (#96056)
## About The Pull Request Moves the deep lore proc to the parent for guns. Adds deep lore to some of the pistols. Rewrites the deep lore for the stun baton and contractor baton. Repaths the Liberator pistol to a more sensible path name. Rechambers the Regal Condor to .45, because I was today years old when I learned that the Tiger Cooperative are _[radical Christian extremists](https://github.com/tgstation/common_core/blob/cf1edb9f770e7d3c38ca894e951ab5ac50395a47/Governments%20and%20Organisations/Corporations/The%20Syndicate/The%20Syndicate.md?plain=1#L73)_. I just thought they were nutso about changelings, I didn't know they also think they're God's ubermensch. Anyway, that freak who started the cult would chamber their relic pistol in .45 and you know it. ## Why It's Good For The Game I love dumping large amounts of text into the code base that will rarely, if ever, be noticed by the player. It's also the means by which I can summon forth my good friend Hatterhat to contribute to this codebase. Like a carrot on a stick. If I post enough, one day he'll PR flashforge mines like he promised me. |
||
|
|
ea0859d5fe | Bane refactor (now uses damage multipliers) (#96003) | ||
|
|
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> |
||
|
|
2680aafa3f | [MDB IGNORE] Lavaland Mineral Rework: Yapmining 2026 (#95682) | ||
|
|
cd002246ab | Fixes ghost poll alerts missing backgrounds (#95363) | ||
|
|
1ce02afed8 | Adds the pump-action grenade launcher and updates the existing break-action ballistic grenade launcher with a new sprite (#95244) | ||
|
|
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. /🆑 |
||
|
|
38cc7f9ba5 | Makes killing yourself with wands more fun (#94876) | ||
|
|
6916730eca |
Ballista adjustments (#94724)
Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com> |
||
|
|
15932fd0ae |
Sanity checks the iconoclast's repeater (#94619)
## About The Pull Request Alternative to https://github.com/tgstation/tgstation/pull/94613 The iconoclast repeater, the handheld version, no longer fires two pellets but instead fires in a two round burst. The iconoclast repeater now charges two shots (one trigger pull) every crank, and the crank takes 0.4 seconds (letting you outpace your shot rate). However, you cannot charge the gun while moving. Reduces the damage of the repeater's shots. Now it does 15 lethal force. Since this is coming out in bursts of two, this means that it deals 30 lethal force in a single pull. https://github.com/tgstation/tgstation/pull/86867 removed the wielding requirement but didn't make the weapon heavy. I suspect this was an oversight so I'm treating it as a fix given the weapon visually appears to be held in two hands. Cleans up some repeat variables and nouns. ## Why It's Good For The Game The repeater has some pretty egregious statistics that put it pretty soundly above other improvised weapons, but also a lot of manufactured weapons as well. It has existing downsides, but they're not necessarily able to be felt because of other oversights to the weapon's design. This will make sure that the weaknesses are felt while still being a relatively useful weapon. Pointedly, the gun still kills people pretty fast if you're in line of fire, but actually pursuing someone while firing is going to be very difficult. It can still run down unarmored targets with the amount of shots in the gun, but it can't be used to go Rambo down the halls, wiping everyone out with your effective machine gun. ## Changelog 🆑 balance: The iconoclast repeater, the handheld version, no longer fires two pellets but instead fires in a two round burst. balance: The iconoclast repeater now charges two shots (one trigger pull) every crank, and the crank takes 0.4 seconds (letting you outpace your shot rate). However, you cannot charge the gun while moving. balance: Reduces the damage of the repeater's shots (both versions). Now it does 15 lethal force per shot. Since this is coming out in bursts of two, this means that it deals 30 lethal force in a single pull. fix: Laser musket type weapons are now heavy weapons. code: Cleans up some of the code and grammar on the repeater. /🆑 |
||
|
|
47606e453e |
Siege Warfare: Adds two new craftable emplaced guns, a bigger laser musket, and a new spear for crew-sided mining. (#94102)
<img width="517" height="305" alt="image" src="https://github.com/user-attachments/assets/e8cd8bcd-dd3c-4733-99fe-0cdfb9799182" /> So, been a while, hasn't it? This PR adds three things. First Up: The Ratvarian Repeater.  The Ratvarian repeater is a mounted gun made from bronze, stock parts, and some drinking glasses. it is the emplaced counterpart to the laser musket, as the pipe organ gun is to the crossbow. Being a laser musket derivative, this means it has the benefit of _infinite ammo._ However, this also means to reload it, you turn the crank on the back. My personal headcanon was it works via a spring mechanism not unlike a watch, so naturally, it turned into a clock-cult flavored weapon. Each individual volley per winding shoots 12 laser musket shots in bursts of two. https://github.com/user-attachments/assets/152c3ce8-3560-4c8a-b618-7f2d81fb75a0 However, this isnt the only thing it's capable of. If you prefer your weapons more iconoclastic, you can take a welder to the stand, and carry it around, for the ability to shoot two laser musket shots instead of one per trigger pull... with the price being a decreased movespeed, and the second shot having random spread. Also you cant redeploy the stand, because iconoclasm. Still, the power is there, if you desire it. Overall, the repeater is the "Expensive but reliable" option of the three craftable gun emplacements. It has the most work to get, but once you have it, theres no need for ammo. On the complete opposite side of the coin, we have the Improvised Ballista. https://github.com/user-attachments/assets/16262965-a860-4205-bc3e-eeb8ec593647 This thing is as cheap as it gets - taking iron and wire to make (plus tools), and fires the classic spears greytiders love for 80 damage. This sounds like a lot (and it is), but once the ballista has fired - that's it, and reloading a second spear takes a full six seconds. Of the four emplaced guns, it has the least damage per firing sequence, but has all that damage in one big projectile. The ballista overall is designed to be dirt cheap to make and generally useful, but requiring a lot of work to keep running. And lastly, we have the Giant-killer spear. <img width="417" height="287" alt="image" src="https://github.com/user-attachments/assets/613379aa-379c-40b3-b4fc-ccdaa5ea4678" /> Crafted from titanium, plasteel and seven knives, and then forged by throwing it into lava this monstrously oversized spear is designed to fight monstrously oversized... monsters. While only doing 21 damage when wielded, this damage is multiplied by 3.5 against lavaland fauna, dealing damage equal to a crusher mark detonation. However, despite the ease of use, it lacks the ability to mount trophies like the crusher, so is much more suited to killing basic enemies like legions or goliaths, rather than megafauna. (It still does decently versus them, but youre prone to just dying.) Additionally, due to lacking the requirements of mining access or lavaland monsters, it can be made by the crew at large, providing them a meaningful defense on lavaland/icemoon. It can also be loaded into the ballista, so you can, if you desire, show those ashwalkers how the dark ages were REALLY fought. <img width="202" height="236" alt="image" src="https://github.com/user-attachments/assets/d21a7275-3d9e-427b-ac14-fee080541fb5" /> This PR has been six months in the making, so it feels good to finally get it out. Why its good for the game: Similar logic to my previous improvised weapon prs; I feel the dichotomy of "High tech laser rifle" and "Gun made from stuff lying around" is an interesting one. Of the damage values, the only one that has the potential for a balance issue is the spear, but due to being basically a plastitanium spear that does better versus mining mobs, I don't forsee this becoming a weapon that you can arm an entire revolution with. ## Changelog 🆑 Webcomicartist add: Added the ratvarian repeater, a craftable emplaced crank laser weapon that can be carried by hand, themed after clock cult. add: Added the improvised ballista, the rebar crossbow's bigger brother, that fires spears. Huge damage, terrible fire rate. add: Added the giant-slayer spear, a spear made at a necropolis tendril that does extra damage to lavaland creatures. (Ballista compatible) image: added sprites for the above. qol: The pipe organ gun should be easier to light now. fix: Fixed Pipe Organ Gun firing sprites not always going back to normal after finishing firing. refactor: Mounted guns are now EVEN MORE flexible codewise, now supporting secondary ammo types. /🆑 --------- Co-authored-by: Jacquerel <hnevard@gmail.com> |
||
|
|
30217dd492 |
[NO GBP] Extends meteor deflection interactions to meteor gun meteors (#94552)
## About The Pull Request Turns the meteor deflection interaction previously added into a components and gives it to both meteors and meteor gun "meteors". ## Why It's Good For The Game fixes #94542 ## Changelog 🆑 fix: Meteor gun projectile meteors can now be smacked, whacked, walloped and cracked just as normal meteors can. /🆑 |
||
|
|
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! /🆑 |
||
|
|
d76d2f5438 |
Laser Gun Update: Deep Lore, Gun Variety, Pew Pew (#93520)
## About The Pull Request Updates the laser gun into four proper subtypes: Standard, Pistol, Rifle and Carbine. <img width="229" height="210" alt="image" src="https://github.com/user-attachments/assets/12c03076-8ebf-4d87-8c98-6a8cce6821db" /> Current sprites are pending a palette change. **Standard:** Functions as you would expect. Same as ever. **Pistol**: Lower charge, 20 force, normal sized, recharges faster. **Carbine**: 15 force, 26 mag, two round burst. Projectiles flight slightly faster. Cannot dual-wield. **Rifle**: 20 force. 40 mag. Two round burst. EMP resistant (not immune). Projectiles fly slightly faster. Cannot dual-wield (not that you need to). All but the rifle can be sourced from cargo. You can also buy the sovl version of the laser gun if you're especially nostalgic. ### Armory Changes The Armory now can potentially spawn either pistols, carbines or standard. The weighting leans closer to spawning carbines and standard as opposed to pistols. ### Lore Dump The laser line of weapons now all have lore. That rich, deep lore that every game needs and is totally not important at all to the meat and potatoes of the game. I'm paid by the hour ($0.00) ### Code Tidying Lasers are old and a total mess code-wise so we've tidied up while we're here. ## Why It's Good For The Game Variety is the spice of life and also some of these weapons could have used a face lift. Especially the laser carbine. Both functionaltiy wise and appearance wise. A bit of randomness in the armory means some rounds might have unique outcomes compared to others. Sometimes, items in cargo don't see particularly much use, so peppering in a few random potential deviations can maybe nudge people to utilize variant gear on future rounds. I'm obsessed with writing too much information. I blame Hatterhat. ## Changelog 🆑 add: Three variants of the laser gun; Carbine (replacing the existing one), Pistol and Rifle! Find it (possibly) in your armory today! balance: The armory laser guns might be different variants of the laser gun, rather than always being the standard. The standard is the same as ever, even if it looks different. add: If you care, the sovl version is available as a goodie. And in the hands of pirates... spellcheck: Lore! LORE FOR LASER GUNS! LOOOORE! Examine laser guns closely and you might learn more about them. balance: The new set of laser guns come with brand new sprites. /🆑 --------- Co-authored-by: StaringGasMask <62149527+Exester509@users.noreply.github.com> |
||
|
|
71faa643bf | Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-2025-11-12 | ||
|
|
8ee1cd2474 |
Makes EMP logs less bad (#93841)
## About The Pull Request closes #93805 ## Why It's Good For The Game we actually have almost no emp logging at all lol, not even emp chem reaction, so you barely can track potential griefer? ## Changelog 🆑 admin: EMP logs are improved, additionally chemical EMP reactions are now logged. /🆑 |
||
|
|
d0ca474789 | Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-2025-11-05 | ||
|
|
719d42ca1a |
Laser tag refactor to use components instead of checking for the vest (#93650)
## About The Pull Request Baby's first refactor! Originally meant for a downstream, I was told to PR it here instead. Please do tell me if I did something wrong. Previously the Lasertag guns would directly check if you were wearing a vest before dealing stamina damage. Now they instead check for a component and it's team, which is added by the vest. ## Why It's Good For The Game This should make it easier to add new lasertag equipment. It compiles and lasertag functionality seems to remain unchanged from the player side. |
||
|
|
999bde8f84 |
Most screen alerts now fit the player's hud style. (#93493)
## About The Pull Request Most screen alerts that use the midnight hud style no longer have the button baked in their icon. Other screen alerts with their own background or shape (robot and mech alerts, atmos, heretic buffs or debuffs etc.) are not affected. Also updated a couple sprites but didn't spend too much time on them. Mostly reusing existing assets. Montage of how the alerts look on threee different hud styles (Operative, Trasen-Knox, Detective, ALSO I FIXED THE BUCKLED ALERT ALREADY): <img width="293" height="323" alt="image" src="https://github.com/user-attachments/assets/3a2b972b-aa5a-4c27-a454-c8c39acf6e20" /> It looks only a smidge iffy on the syndicate since the top and bottom borders aren't layered over all the overlays, but it isn't something to worry about in this PR. ## Why It's Good For The Game Screen alerts always had the midnight hud button baked in their icon states (now overlays), which completely disregard the player's hud setting, much unlike action alerts buttons. Melbert has also said that it'd be nice if the code for action buttons could also be used in screen alerts and viceversa, to slim things down. That's obviously not what I'm doing today, but having most of the screen alerts already without the baked background will surely help if we ever pursue that objective. ## Changelog 🆑 refactor: Refactored screen alerts a little. Most should now fit the player's hud style. Report any issue. imageadd: A few screen alerts have been polished/updated a little. /🆑 |
||
|
|
cc3bcde1c9 |
True Strike is now also an armour piercing munition (#93642)
## About The Pull Request So it dawned on me for awhile, we did get true strike and I got to use it way more, not necessarily after it is available as speedloader but I've used it for atleast a bit, realized just buying the match mag was better anyway. so, true strike sucks for actually bouncing and killing people. and while 15 damage is nothing to scoff at because any damage is better than doing no damage at all. It's already well outclassed by it's actual roundstart counterpart. This fix that, the truestrike ammo is researched fairly late into the round. Giving it AP make it more useful ## Why It's Good For The Game I think it make senses we'd want a researched ammo type more effective than something you can just. Buy? It's not like we don't have tech laser that are more effective than buckshot for raw damage. This is similar to that idea ## Changelog 🆑 add: True Strike is also now AP, making detective more scary and BR-38 much more effective against highly armoured target /🆑 |
||
|
|
e28e9fbdba | Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-23-10-2025 | ||
|
|
38bebeaf47 |
Prosthetic Item arms no longer prevent ventcrawling: the remake (#93499)
## About The Pull Request This is me picking up #93077 but with code changes relative to the two new flags that Krysonism added in his PR, which unfortunately he never finished. ## Why It's Good For The Game Monkeys should be able to ventcrawl even if their left or right arm is actually a chainsaw or armblade or whatever. See #93077 ## Changelog 🆑 Krysonism balance: prosthetic item limbs are no longer considered equipped items for some purposes such as ventcrawling. /🆑 --------- Co-authored-by: Krysonism <robustness13@hotmail.com> |
||
|
|
b308ee9d78 | Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-sync | ||
|
|
e90c61a00b |
Lahti l39 (#92812)
## About The Pull Request A new admin only weapon to kill people. Scriptis told me he wanted this weapon upstream and mothblocks was like "sure whatever" see https://discord.com/channels/326822144233439242/326831214667235328/1410700500550291619 ## Why It's Good For The Game Lets admins hit people with a gun that shoots a really big bullet, its therapeutic <img width="270" height="148" alt="image" src="https://github.com/user-attachments/assets/020e2bc2-2d96-44eb-bafe-d34b82f71e93" /> <img width="205" height="150" alt="image" src="https://github.com/user-attachments/assets/2c550ca5-7d5c-4fe2-a483-c4b229a2c31f" /> IRL comparison taken from some guys YT video <img width="259" height="194" alt="image" src="https://github.com/user-attachments/assets/4a536c4d-15ad-4ba4-9137-c2d5e106445e" /> ## Changelog 3 new files and one dependent new sniper rifle which is worse than the other sniper rifle and one new lahti-l39 🆑 add: Added the Lahti-L39 rifle /🆑 |
||
|
|
9b282a850e | Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-sync | ||
|
|
0918437d53 |
BORGENING! Borg changes and QOLs (#92303)
## About The Pull Request Adds a few new items and upgrades for different cyborg modules or reworks some of them. <p align="center"> <img width="608" height="199" alt="image" src="https://github.com/user-attachments/assets/ba44742f-984b-4988-af4d-e06cf66d3296" /> </p> pic unrelated :) ### Main changes: ### Medical model **Medical cyborg** gets chembag by default and a new bluespace syringe upgrade! <p align="center"> <img width="267" height="83" alt="image" src="https://github.com/user-attachments/assets/4636688f-a3bf-4db8-b0c7-75089aeb4f54" /> </p> ### Engineering model **Engineering cyborg** recieved a few new features. Now you can put your regular RPED inside of a cyborg, but mind that it has way less storage, than RPED upgrade from robotics. Robotics RPED upgrade were renamed into expanded RPED and now cost the same amount of material to produce it as BS RPED. <p align="center"> <img width="198" height="117" alt="image" src="https://github.com/user-attachments/assets/e614a9b0-41ad-4815-8eb6-f627c2bf77cc" /> </p> Worth to mention adding decal painter with own sprite (yes it uses cell instead of regular toner) <p align="center"> <img width="827" height="498" alt="image" src="https://github.com/user-attachments/assets/2eb36651-0ee2-4c9b-81ef-f8c3a96966a8" /> </p> <p align="left"> Circuit manipulator was renamed to engineering apparatus, as its can no longer hold only circuits. Additionally, it can also hold tubes/bulbs now. </p> ### Mining model **Mining cyborg** now has mesons removed and remade into a new toggle button, you dont need to use one of your modules just to be able to see through darkness of lavaland caves. <p align="center"> <img width="248" height="173" alt="image" src="https://github.com/user-attachments/assets/e85a00ec-f373-43d0-9ce9-7ec573029af3" /> </p> **Mining cyborg** got a new shield module. It helps you fighting lavaland fauna (..or annoying humans, if youre evil) in low pressure by absorbing 50% of incoming damage when activated. Takes some amount of your charge per absorbed hit. Example:  ## Why It's Good For The Game I feel big lack of some cyborg modules or even features. This PR is supposed to fix missing gap, aswell as rebalance some of existing models. ## Changelog 🆑 qol: Added new helpful modules, such as decal painter for engineering and chembag for medical borg. add: Added miner cyborg shield module. In lavaland (low) pressure, it protects you from 50% of incoming damage in exchange of your cell charge. add: Added BS syringe upgrade for medical cyborg. /🆑 |
||
|
|
c9956892db |
Merge remote-tracking branch 'origin/master' into pupstream-08-19-keepsha
# Conflicts: # _maps/map_files/BoxStation/BoxStation.dmm # code/_globalvars/lists/flavor_misc.dm |
||
|
|
61031f6cfb |
Skyrat gun removal (#3697)
## About The Pull Request HackMD: https://hackmd.io/@Ssalty/r1wjAgSxll Ammo removals: IHDF Rubber (non-.38, non-shotgun, nukie ones stay since it'd require overrides. They were never purchasable to begin with.) Stardust Magnum Express .460 Rowland .457 Government MCR magazines .40 Sol Hornet's nest Gun removals: MCR's .457 revolver M4A5 .460 Rowland revolver CCK GP-7 R10 revolver Guns made inaccessible: NRI guns (including derringer, bobr, plasmas, Miecz) Sol35 (Tarkon, sol ERT, gateway, adminspawn) Sol40 (Tarkon, sol ERT, gateway, adminspawn) Trappiste caliber (wespe, some already adminspawn weapons) Turret adjustments: Twin Fang - 4.6x30mm, 2 Second burst delay (40 dmg every 2 seconds vs 30 dmg every 1.5 seconds (old)) Stinger - 4.6x30mm instead of .35, matching damage Colonist - .45 added instead of sol40, matching damage Hoplite - Same as above Armoury: Armoury spawned MCRs replaced with laser guns and energy guns SMG's and rifles with WT If there would be a case with two separate spawns of a WT, the other is gone. Breaching shell boxes do not spawn in the armoury (they were capable of 1 shotting a dark mauler I wish I was kidding) Lathe: 9mm stendo's, AP, HP, INC magazines not availible for print - the 9mm murphy magazine is. It fits in 9mm firing turrets and the murphy. ## Why It's Good For The Game Give me like a couple days and I'll fill this out. I doubt anyone who is already pro-skyrat-gun will change their mind but it's good to rationalize the decision regardless. Find this out as in lay it out on paper. EDIT 1: Adding the first part # Foreword This PR is a *draft*. That means a lot of things are subject to change, a lot of things can be disorganized and a lot of things will be done unoptimally. Going forwards, do keep in mind, the decision-making process behind "remove entirely" and "virtually remove" will not be dependant on us going forwards, as the decision on this matter requires maintainer input more than any other. Next, the delay. I simply am not a machine, neither are other people onboard this project. With different timezones, it was important to find what isn't working so I can relay it to people in working hours. Without further ado, ## The case of the ammo types and workbench The ammunitions workbench is a machine that provides ammunition into clips, refilling them. The ammunition workbench is also the source of a multitude of alternate ammunition types. It has with itself brought several issues that at least would warrant a rework or heavy adjustments: 1. Contraband ammunitions. There is no real reason that the entire security department, or even a single crewmember should be accessing phasic weapons in the form of printable ammotypes. The argument of "the pipegun having it" doesn't do it favours, as the way you get it is an 8% chance on crafting a junk round for a bulky gun and the only way to find out if you actually have it is checking each shell individually with a bandolier. 2. Complimentary with the removals. Most use cases for this machine are refilling the magazines you can order or get alongside your weapons. This collides with the protolathe, which sources most of our upstream-based ammunition instead. With the skyrat weapons gone, this machine becomes redundant. You may claim that it's still useful in saving on materials, where you would be right! However is it worth to have and maintain an entirely separate structure, with it's own mechanics, map placements, etc. to get a benefit equal to 1.6x more bang for the buck? At the end of the day, splitting ways of getting ammo across a single room for something so miniscule compared to the bloat it adds is pointless. # The weapons, why should they go, one by one. ### RomTech Flechette rifles Compared to a standard laser gun, which is in all means our baseline of ranged damage in ss13 - being the default armoury weapon, the default laser for turrets and default laser for mobs. Better yet, let's compare it to that and the default ballistic option that we have from TG. What turns out, is that not only is the romtech carbine faster at killing than the laser, but also rivals the WT with a split second of difference in ttk in the favour of the romtech. Let's assume it's human error and the WT is better TTK wise, just as an experiment. Clearly, there must be a tradeoff, somewhere, right? One that balances them all out to be equal weapons in the grand scale of things, contemporaries! Well, no, not really. Not even close. The carbine can be folded to fit in bags, that's one thing. The carbine has more ammo, that's another thing. Bursts are harder to dodge than series shots since they cover more perpendicular ground when attempting to dodge projectiles, as is staple for ss13 combat. Burst weapons are advantageous in applying more damage quicker, as you can see on the videos - and initial damage, an alpha strike, applies movement slowdown, ensuring future projectiles connect easier and the target cannot run. It might be a coincidence that the only /tg/ derived weapons that fire burst are adminspawn ERT or the Nukie weapons. But it doesn't end here, no, the RomTech's ammunition alone would warrant a complete overhaul if not a removal. **steel ball** <p> Takes 9 shots to stamcrit, deals mixed damage - further increasing the amount of slowdown applied, and not only is it MUCH faster at stamcritting than a disabler is, it also leaves the target with 70 damage. Over half their healthbar. Severely overtuned with little counterplay availible, alpha strike monster that is better at disabling than disablers and better at stopping people dead in their tracks than rifles, and if you look at our anti-stun, we have less than ever on antagonists with Adrenal implants gone, Adreanaline Glands reworked, etc, etc... </p> **Penetrator** NT's answer to armour! The penetrator has 60 AP and otherwise the same damage as the AP WT rifle. Meaning it's a straight upgrade. Meaning this weapon invalidates it's predecessor whilst being orderable roundstart, and not only that, but it can fully ignore elite modsuits on nukeops. Not every mechanic has to have a counter, there's no direct counter to someone healing after a fight, there is no direct counter to having multiple shots, and there shouldn't be a full nullification of armour for such a low cost. There shouldn't be one for a crew that can mass produce these, ever. **Magnesium** Arguably fine, 12 firestacks per shot is still quite insane for a lower chance of friendly fire compared to original incediary hot turfs, **Ripper** Steel ball, but even worse. They don't embed a single time, ***this embeds every time***. It takes several seconds to take out. Actually, let's compare this gun's bullets to ninja stars. - 2 times the embed chance at 200 vs 100 - 8 times the jostle chance at 80 vs 10 - Comparable fall chance, at 1 vs 0 - More pain stam pct, at 0.9 vs 0.8, meaning more stamina damage - More pain chance, at 70 vs 15 - Less pain modifier, at 2 vs 5 - Takes longer to take out, 5 seconds vs 3 - Jostling pain is the same ### One problem. There's three of those fired per burst, cannot be caught either. And the armour pen is the same. in conclusion, every aspect of this gun is unhealthy for the game, from it's gimmick, to it's execution, to it's stats, to it's ammo, to it's consistency, to it's firing mode, to it being able to be currently worn on sec belts along disablers - up to 4, if I remember correct. No reworks. It has to go. ## Proof Of Testing <details> <summary>Screenshots/Videos</summary> </details> ## Changelog 🆑 del: Removed breaching slugs from crew (not to be confused with frangible. These ones 1 shot mechs) del: Removed MCR, .457 revolver, .460 Rowland revolver, GP-7, R10 revolver, M4A5, and their associated ammo types. del: Removed ammunition types: IHDF, rubber variants excluding .38/shotgun/nukie, stardust, magnum, express, hornet's nest del: Made most NRI guns (Miecz, plasma pistol, plasma thrower, bobr, derringer) and Sol 35/40 (Tarkon, ERT, gateway, adminspawn) inaccessible to crew, kept for ERT/Gateway/Flavour/Admin reasons balance: Turrets which use a removed calibre have been adjusted into either that of the WT's, Ceres (still printable) or 9mm. balance: WT's replace missing sindanos across armouries, laser guns and eguns replace the missing MCR's. /🆑 --------- Co-authored-by: Artur Lang <24881678+Arturlang@users.noreply.github.com> |
||
|
|
17006b220f |
NT researchers make shocking breakthrough in flux anomalogics! Tesla Cannon Resprite / Resound (#92031)
## About The Pull Request  Resprites: Tesla Cannon Tesla Cannon crafting kit ### New SFX / VFX The tesla cannon now uses a new type of beam effect that randomly picks sprite variants for each segment instead of a tracer. This makes the arc look more dynamic and less distorted. Autofire guns can now choose to use a looping sound datum when firing.  #### Balance changes The tesla cannon must now have its stock unfolded before firing, this takes 1.5 seconds and makes the gun bulky. It is still normal sized when folded, and folding it is instant. ### Bug fixes Fixed a bug where looping_sound.stop() would fail to stop sounds. The tesla cannon is an incredibly powerfu ## Why It's Good For The Game ### My reasons for respriting The old sprite was not bad, by all means but I had a few gripes with it. * The old sprite does not incorporate the flux anomaly yellow colour. * The old sprite looks a bit much like a real, professionally produced sci-fi weapon, * The old sprite looks pretty small for such a ultra high dps full auto weapon. * The old inhand is quite indistinct for something that can game end you in like one second. ### My design I think that anomaly items should be very mad science coded and, since anomaly science is by definition a poorly studied field, they should look more like prototypes created by a scientist rather than something professionally made in a factory. ## Changelog 🆑 image: The tesla cannon has new sprites. image: The tesla parts kit has new sprites. image: The tesla cannon has a new shocking beam effect when firing. sound: The tesla cannon has new sounds. balance: The tesla cannon must now be unfolded to fire. fix: looping sounds now stop playing sounds when commaned to do so. /🆑 |
||
|
|
6bc67d2bc6 |
Emitter: The Emitting (#92327)
## About The Pull Request Adds Diode Disks, installable disks that when fitted into an emitter can change its function. * Healing * Stamina damage, and heals the SM slightly at the cost of internal energy * Traitor engi only explosive that damages and supercharges the SM if used that way. Firerate is halved. * Incendiary that slightly damages the SM but has lots of energy * Sanity damaging one that improves SM psi coeff * Magnetic item attracting one that improves SM mol absorption. ## Why It's Good For The Game Fun and unique ways for Engi to use excess power or improve their SM setups. Could also lead to neat engi inventions such as, say, a circuit device that aims and fires a healing emitter at anyone nearby who is damaged. Should also incentivize the researching of useful techs, hence why important medium tier techs are what lock the different disks. ## Changelog 🆑 add: New Diode Disks which allow you to configurate emitters with special functions. add: New Engi & CE exclusive traitor item, a diode disk that causes an emitter to create low radius explosions when it hits things. Note that this will reduce the fire-rate of your emitter. /🆑 --------- Co-authored-by: ThrowawayUseless <notarealemail@emailservice.fake> Co-authored-by: necromanceranne <40847847+necromanceranne@users.noreply.github.com> |
||
|
|
45e76d80fc |
NT researchers make shocking breakthrough in flux anomalogics! Tesla Cannon Resprite / Resound (#92031)
## About The Pull Request  Resprites: Tesla Cannon Tesla Cannon crafting kit ### New SFX / VFX The tesla cannon now uses a new type of beam effect that randomly picks sprite variants for each segment instead of a tracer. This makes the arc look more dynamic and less distorted. Autofire guns can now choose to use a looping sound datum when firing.  #### Balance changes The tesla cannon must now have its stock unfolded before firing, this takes 1.5 seconds and makes the gun bulky. It is still normal sized when folded, and folding it is instant. ### Bug fixes Fixed a bug where looping_sound.stop() would fail to stop sounds. The tesla cannon is an incredibly powerfu ## Why It's Good For The Game ### My reasons for respriting The old sprite was not bad, by all means but I had a few gripes with it. * The old sprite does not incorporate the flux anomaly yellow colour. * The old sprite looks a bit much like a real, professionally produced sci-fi weapon, * The old sprite looks pretty small for such a ultra high dps full auto weapon. * The old inhand is quite indistinct for something that can game end you in like one second. ### My design I think that anomaly items should be very mad science coded and, since anomaly science is by definition a poorly studied field, they should look more like prototypes created by a scientist rather than something professionally made in a factory. ## Changelog 🆑 image: The tesla cannon has new sprites. image: The tesla parts kit has new sprites. image: The tesla cannon has a new shocking beam effect when firing. sound: The tesla cannon has new sounds. balance: The tesla cannon must now be unfolded to fire. fix: looping sounds now stop playing sounds when commaned to do so. /🆑 |
||
|
|
2a7921d436 |
Emitter: The Emitting (#92327)
## About The Pull Request Adds Diode Disks, installable disks that when fitted into an emitter can change its function. * Healing * Stamina damage, and heals the SM slightly at the cost of internal energy * Traitor engi only explosive that damages and supercharges the SM if used that way. Firerate is halved. * Incendiary that slightly damages the SM but has lots of energy * Sanity damaging one that improves SM psi coeff * Magnetic item attracting one that improves SM mol absorption. ## Why It's Good For The Game Fun and unique ways for Engi to use excess power or improve their SM setups. Could also lead to neat engi inventions such as, say, a circuit device that aims and fires a healing emitter at anyone nearby who is damaged. Should also incentivize the researching of useful techs, hence why important medium tier techs are what lock the different disks. ## Changelog 🆑 add: New Diode Disks which allow you to configurate emitters with special functions. add: New Engi & CE exclusive traitor item, a diode disk that causes an emitter to create low radius explosions when it hits things. Note that this will reduce the fire-rate of your emitter. /🆑 --------- Co-authored-by: ThrowawayUseless <notarealemail@emailservice.fake> Co-authored-by: necromanceranne <40847847+necromanceranne@users.noreply.github.com> |
||
|
|
5573612a43 |
Adds .38 Flare, which is a lethal laser bullet casing available for printing with Advanced Beam Weaponry. Adjust ammo material values. (#91726)
## About The Pull Request  Adds the .38 Flare. It does 20 damage. This round highlights the target for 2 minutes, and projectiles hitting the target always hit the limb that the shooter was aiming at. Your shot has effectively perfect limb accuracy, no matter how far the bullet needs to travel. This also affects other projectiles hitting the target that aren't the .38 Flare. To indicate whether or not a round in a magazine is either lead or laser, I've borrowed the implementation of ammo overlays from the C-20r toy magazines Now each bullet in the speedloaders for .38 can be a distinct type visibly. Might be interesting if anyone wants to add additional unique appearances for some of the other .38 rounds. Reduces the overall cost of a lot of the ammunition in the sec and autolathe, such as loose bullets. Also reduces the material quantity within bullet casings. ## Why It's Good For The Game > .38 Flare By popular demand, I've come up with a new idea. And that idea...is an anti-bullet deviation tool. Most players are probably not conscious of bullet deviation. But if you're familiar with the mechanic, it's why sometimes your shots may hit into an arm or a leg even though you were aiming at the head. The way this works is that over the course of a bullets flight, it increases in inaccuracy and the pobability of drifting into a limb. From my last estimate, shooting somewhere around 5 tiles away will usually result in bullet drift. While affected by the flare shot, that does not happen. You shoot at the head, you hit the head. To put it into perspective; you could consider bullet deviation a form of damage loss (its a bit more complicated than this and there are instances where it is positive), and this projectile eliminates that problem for everyone shooting the target. > Ammo cost Some of these were pretty excessive for the cost, and a notable example of this include the .357 loose casings, .310 Surplus loose casings, and most shotgun shells. These should go down to roughly below 3/5th of a sheet of metal when printed from a fully upgraded lathe. Meanwhile, a single bullet casing was like a sheet of metal each, which didn't seem right to me. So they're now by default one fifth of a sheet of metal on recycle. ## Changelog 🆑 add: .38 Flare, a laser bullet! Available in both .38 speedloader and BR-38 magazine once Advanced Beam Weaponry is researched. add: .38 Flare highlights the target in an outline and makes sure your bullets never accidentally hit any limb except the one you are aiming at. Never accidentally hit someone in the arm when you were going for a headshot. balance: Reduces the printing costs of several ammunition types from the autolathe and security lathe. Reduces the overall material contents of said printed ammo/magazines. If you find a material dupe, let a coder know. /🆑 --------- Co-authored-by: projectkepler-RU <99981766+projectkepler-ru@users.noreply.github.com> Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com> |
||
|
|
8f15d0ea2c |
Adds .38 Flare, which is a lethal laser bullet casing available for printing with Advanced Beam Weaponry. Adjust ammo material values. (#91726)
## About The Pull Request  Adds the .38 Flare. It does 20 damage. This round highlights the target for 2 minutes, and projectiles hitting the target always hit the limb that the shooter was aiming at. Your shot has effectively perfect limb accuracy, no matter how far the bullet needs to travel. This also affects other projectiles hitting the target that aren't the .38 Flare. To indicate whether or not a round in a magazine is either lead or laser, I've borrowed the implementation of ammo overlays from the C-20r toy magazines Now each bullet in the speedloaders for .38 can be a distinct type visibly. Might be interesting if anyone wants to add additional unique appearances for some of the other .38 rounds. Reduces the overall cost of a lot of the ammunition in the sec and autolathe, such as loose bullets. Also reduces the material quantity within bullet casings. ## Why It's Good For The Game > .38 Flare By popular demand, I've come up with a new idea. And that idea...is an anti-bullet deviation tool. Most players are probably not conscious of bullet deviation. But if you're familiar with the mechanic, it's why sometimes your shots may hit into an arm or a leg even though you were aiming at the head. The way this works is that over the course of a bullets flight, it increases in inaccuracy and the pobability of drifting into a limb. From my last estimate, shooting somewhere around 5 tiles away will usually result in bullet drift. While affected by the flare shot, that does not happen. You shoot at the head, you hit the head. To put it into perspective; you could consider bullet deviation a form of damage loss (its a bit more complicated than this and there are instances where it is positive), and this projectile eliminates that problem for everyone shooting the target. > Ammo cost Some of these were pretty excessive for the cost, and a notable example of this include the .357 loose casings, .310 Surplus loose casings, and most shotgun shells. These should go down to roughly below 3/5th of a sheet of metal when printed from a fully upgraded lathe. Meanwhile, a single bullet casing was like a sheet of metal each, which didn't seem right to me. So they're now by default one fifth of a sheet of metal on recycle. ## Changelog 🆑 add: .38 Flare, a laser bullet! Available in both .38 speedloader and BR-38 magazine once Advanced Beam Weaponry is researched. add: .38 Flare highlights the target in an outline and makes sure your bullets never accidentally hit any limb except the one you are aiming at. Never accidentally hit someone in the arm when you were going for a headshot. balance: Reduces the printing costs of several ammunition types from the autolathe and security lathe. Reduces the overall material contents of said printed ammo/magazines. If you find a material dupe, let a coder know. /🆑 --------- Co-authored-by: projectkepler-RU <99981766+projectkepler-ru@users.noreply.github.com> Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com> |
||
|
|
3992434cb8 |
Healium bolts now embed and heal/knock out passively over time instead of being instant and unblockable (#91481)
## About The Pull Request Healium bolts now heal you for 5 of each damage per second for 6 seconds before falling out, while applying 2 seconds of drowsiness. If you have at least 5 seconds of drowsiness (after 4 seconds of processing, because we add 2 and it gets deducted by 1 afterwards) you get knocked out for 3 seconds (similarly to how it worked before, but with 1 additional second left of processing if you were only shot by one bolt, you end up knocked out for 4 seconds). It takes 1.5 seconds to rip one out, so you should be able to react to being shot by one unless the attacker follows it up with a melee distruption. Bolts that fall out restore their charges, but only one bolt at a time can be putting the target to sleep. https://github.com/user-attachments/assets/7936895e-f4dc-4bd6-847f-495c7f1202db Video is a bit outdated, delay before knockout been bumped by a second. ###### This is a commission for Ezel/Improvedname ## Why It's Good For The Game Healium bolts are an instant knockout that could be mass-produced to either instantly win fights, or thrown at medbay to quickly hit corpses by poking them over and over again as bolts didn't even embed, so players can instantly reload and shoot them again. It was either making them harder to produce, or reducing the effects, and former wouldn't solve the knockout issue. They also didn't care about block values, so even if you blocked or reflected one you'd still get knocked out. lol ## Changelog 🆑 balance: Healium bolts now heal and knock out overtime while being embedded instead of being instant. balance: Healium bolts dissolve after being embedded for 6 seconds and don't work on corpses fix: Healium bolts no longer ignore being blocked/parried/reflected /🆑 |
||
|
|
ebc4b8ccca |
Taser runtime fix (#4174)
## About The Pull Request https://github.com/Bubberstation/Bubberstation/pull/3534 missed adding two modular comments and didn't change a `RegisterSignal` to `RegisterSignals` when passing a list of multiple signals ## Why It's Good For The Game Runtime fix + documented non-modular changes ## Proof Of Testing If it compiles it works ## Changelog No player facing changes |
||
|
|
c108ef79ac |
Healium bolts now embed and heal/knock out passively over time instead of being instant and unblockable (#91481)
## About The Pull Request Healium bolts now heal you for 5 of each damage per second for 6 seconds before falling out, while applying 2 seconds of drowsiness. If you have at least 5 seconds of drowsiness (after 4 seconds of processing, because we add 2 and it gets deducted by 1 afterwards) you get knocked out for 3 seconds (similarly to how it worked before, but with 1 additional second left of processing if you were only shot by one bolt, you end up knocked out for 4 seconds). It takes 1.5 seconds to rip one out, so you should be able to react to being shot by one unless the attacker follows it up with a melee distruption. Bolts that fall out restore their charges, but only one bolt at a time can be putting the target to sleep. https://github.com/user-attachments/assets/7936895e-f4dc-4bd6-847f-495c7f1202db Video is a bit outdated, delay before knockout been bumped by a second. ###### This is a commission for Ezel/Improvedname ## Why It's Good For The Game Healium bolts are an instant knockout that could be mass-produced to either instantly win fights, or thrown at medbay to quickly hit corpses by poking them over and over again as bolts didn't even embed, so players can instantly reload and shoot them again. It was either making them harder to produce, or reducing the effects, and former wouldn't solve the knockout issue. They also didn't care about block values, so even if you blocked or reflected one you'd still get knocked out. lol ## Changelog 🆑 balance: Healium bolts now heal and knock out overtime while being embedded instead of being instant. balance: Healium bolts dissolve after being embedded for 6 seconds and don't work on corpses fix: Healium bolts no longer ignore being blocked/parried/reflected /🆑 |
||
|
|
e0bdfc3f5f |
Dynamic Rework (#91290)
Implements https://hackmd.io/@tgstation/SkeUS7lSp , rewriting Dynamic
from the ground-up
- Dynamic configuration is now vastly streamlined, making it far far far
easier to understand and edit
- Threat is gone entirely; round chaos is now determined by dynamic
tiers
- There's 5 dynamic tiers, 0 to 4.
- 0 is a pure greenshift.
- Tiers are just picked via weight - "16% chance of getting a high chaos
round".
- Tiers have min pop ranges. "Tier 4 (high chaos) requires 25 pop to be
selected".
- Tier determines how much of every ruleset is picked. "Tier 4 (High
Chaos) will pick 3-4 roundstart[1], 1-2 light, 1-2 heavy, and 2-3
latejoins".
- The number of rulesets picked depends on how many people are in the
server - this is also configurable[2]. As an example, a tier that
demands "1-3" rulesets will not spawn 3 rulesets if population <= 40 and
will not spawn 2 rulesets if population <= 25.
- Tiers also determine time before light, heavy, and latejoin rulesets
are picked, as well as the cooldown range between spawns. More chaotic
tiers may send midrounds sooner or wait less time between sending them.
- On the ruleset side of things, "requirements", "scaling", and
"enemies" is gone.
- You can configure a ruleset's min pop and weight flat, or per tier.
- For example a ruleset like Obsession is weighted higher for tiers 1-2
and lower for tiers 3-4.
- Rather than scaling up, roundstart rulesets can just be selected
multiple times.
- Rulesets also have `min_antag_cap` and `max_antag_cap`.
`min_antag_cap` determines how many candidates are needed for it to run,
and `max_antag_cap` determines how many candidates are selected.
- Rulesets attempt to run every 2.5 minutes. [3]
- Light rulesets will ALWAYS be picked before heavy rulesets. [4]
- Light injection chance is no longer 100%, heavy injection chance
formula has been simplified.
- Chance simply scales based on number of dead players / total number
off players, with a flag 50% chance if no antags exist. [5]
[1] This does not guarantee you will actually GET 3-4 roundstart
rulesets. If a roundstart ruleset is picked, and it ends up being unable
to execute (such as "not enough candidates", that slot is effectively a
wash.) This might be revisited.
[2] Currently, this is a hard limit - below X pop, you WILL get a
quarter or a half of the rulesets. This might be revisited to just be
weighted - you are just MORE LIKELY to get a quarter or a half.
[3] Little worried about accidentally frontloading everything so we'll
see about this
[4] This may be revisited but in most contexts it seems sensible.
[5] This may also be revisited, I'm not 100% sure what the best / most
simple way to tackle midround chances is.
Other implementation details
- The process of making rulesets has been streamlined as well. Many
rulesets only amount to a definition and `assign_role`.
- Dynamic.json -> Dynamic.toml
- Dynamic event hijacked was ripped out entirely.
- Most midround antag random events are now dynamic rulesets. Fugitives,
Morphs, Slaughter Demons, etc.
- The 1 weight slaughter demon event is gone. RIP in peace.
- There is now a hidden midround event that simply adds +1 latejoin, +1
light, or +1 heavy ruleset.
- `mind.special_role` is dead. Minds have a lazylist of special roles
now but it's essentially only used for traitor panel.
- Revs refactored almost entirely. Revs can now exist without a dynamic
ruleset.
- Cult refactored a tiny bit.
- Antag datums cleaned up.
- Pre round setup is less centralized on Dynamic.
- Admins have a whole panel for interfacing with dynamic. It's pretty
slapdash I'm sure someone could make a nicer looking one.


- Maybe some other things.
See readme for more info.
Will you see a massive change in how rounds play out? My hunch says
rounds will spawn less rulesets on average, but it's ultimately to how
it's configured
🆑 Melbert
refactor: Dynamic rewritten entirely, report any strange rounds
config: Dynamic config reworked, it's now a TOML file
refactor: Refactored antag roles somewhat, report any oddities
refactor: Refactored Revolution entirely, report any oddities
del: Deleted most midround events that spawn antags - they use dynamic
rulesets now
add: Dynamic rulesets can now be false alarms
add: Adds a random event that gives dynamic the ability to run another
ruleset later
admin: Adds a panel for messing around with dynamic
admin: Adds a panel for chance for every dynamic ruleset to be selected
admin: You can spawn revs without using dynamic now
fix: Nuke team leaders get their fun title back
/🆑
(cherry picked from commit
|
||
|
|
4c277dc572 |
Dynamic Rework (#91290)
## About The Pull Request Implements https://hackmd.io/@tgstation/SkeUS7lSp , rewriting Dynamic from the ground-up - Dynamic configuration is now vastly streamlined, making it far far far easier to understand and edit - Threat is gone entirely; round chaos is now determined by dynamic tiers - There's 5 dynamic tiers, 0 to 4. - 0 is a pure greenshift. - Tiers are just picked via weight - "16% chance of getting a high chaos round". - Tiers have min pop ranges. "Tier 4 (high chaos) requires 25 pop to be selected". - Tier determines how much of every ruleset is picked. "Tier 4 (High Chaos) will pick 3-4 roundstart[1], 1-2 light, 1-2 heavy, and 2-3 latejoins". - The number of rulesets picked depends on how many people are in the server - this is also configurable[2]. As an example, a tier that demands "1-3" rulesets will not spawn 3 rulesets if population <= 40 and will not spawn 2 rulesets if population <= 25. - Tiers also determine time before light, heavy, and latejoin rulesets are picked, as well as the cooldown range between spawns. More chaotic tiers may send midrounds sooner or wait less time between sending them. - On the ruleset side of things, "requirements", "scaling", and "enemies" is gone. - You can configure a ruleset's min pop and weight flat, or per tier. - For example a ruleset like Obsession is weighted higher for tiers 1-2 and lower for tiers 3-4. - Rather than scaling up, roundstart rulesets can just be selected multiple times. - Rulesets also have `min_antag_cap` and `max_antag_cap`. `min_antag_cap` determines how many candidates are needed for it to run, and `max_antag_cap` determines how many candidates are selected. - Rulesets attempt to run every 2.5 minutes. [3] - Light rulesets will ALWAYS be picked before heavy rulesets. [4] - Light injection chance is no longer 100%, heavy injection chance formula has been simplified. - Chance simply scales based on number of dead players / total number off players, with a flag 50% chance if no antags exist. [5] [1] This does not guarantee you will actually GET 3-4 roundstart rulesets. If a roundstart ruleset is picked, and it ends up being unable to execute (such as "not enough candidates", that slot is effectively a wash.) This might be revisited. [2] Currently, this is a hard limit - below X pop, you WILL get a quarter or a half of the rulesets. This might be revisited to just be weighted - you are just MORE LIKELY to get a quarter or a half. [3] Little worried about accidentally frontloading everything so we'll see about this [4] This may be revisited but in most contexts it seems sensible. [5] This may also be revisited, I'm not 100% sure what the best / most simple way to tackle midround chances is. Other implementation details - The process of making rulesets has been streamlined as well. Many rulesets only amount to a definition and `assign_role`. - Dynamic.json -> Dynamic.toml - Dynamic event hijacked was ripped out entirely. - Most midround antag random events are now dynamic rulesets. Fugitives, Morphs, Slaughter Demons, etc. - The 1 weight slaughter demon event is gone. RIP in peace. - There is now a hidden midround event that simply adds +1 latejoin, +1 light, or +1 heavy ruleset. - `mind.special_role` is dead. Minds have a lazylist of special roles now but it's essentially only used for traitor panel. - Revs refactored almost entirely. Revs can now exist without a dynamic ruleset. - Cult refactored a tiny bit. - Antag datums cleaned up. - Pre round setup is less centralized on Dynamic. - Admins have a whole panel for interfacing with dynamic. It's pretty slapdash I'm sure someone could make a nicer looking one.   - Maybe some other things. ## Why It's Good For The Game See readme for more info. Will you see a massive change in how rounds play out? My hunch says rounds will spawn less rulesets on average, but it's ultimately to how it's configured ## Changelog 🆑 Melbert refactor: Dynamic rewritten entirely, report any strange rounds config: Dynamic config reworked, it's now a TOML file refactor: Refactored antag roles somewhat, report any oddities refactor: Refactored Revolution entirely, report any oddities del: Deleted most midround events that spawn antags - they use dynamic rulesets now add: Dynamic rulesets can now be false alarms add: Adds a random event that gives dynamic the ability to run another ruleset later admin: Adds a panel for messing around with dynamic admin: Adds a panel for chance for every dynamic ruleset to be selected admin: You can spawn revs without using dynamic now fix: Nuke team leaders get their fun title back /🆑 |
||
|
|
690bfc04b4 |
Rebalances wound determination values, wounding escalation and wound armor to hopefully be less explosive (#91099)
This is a big one so please bear with me, wounds are complicated We've decreased the max contributed damage to wound rolls from 35 to 25. This results, after the exponent, a max possible wound roll of 1 to 91 before any modifiers (assuming the attack, after armor, is 25 or above). The minimum value to wound is still 5. Most wounds were contributing significant numbers per wound type to the potential for a new wound to occur. Getting wounded once meant you were getting wound a lot, but actually getting past that first wounding may be the tricky part. We have significantly reigned in the wound penalty that having a wound contributes, and instead utilize the series wound penalty to allow same type wounds to escalate themselves faster as a priority. Having wounds still makes you more wound vulnerable, just not to such an extreme degree. The priority here for what wounds matter most for contributing to overall wounding vulnerability is ``Infected BURNS > BURNS > SLASH|PIERCE > BLUNT.`` Wound armor, unlike all other kinds of armor, was used as a additive value to the wound roll modifiers rather than a multiplicative value. We have reworked how wound armor is determined by changing how wound modifiers are calculated. Firstly, we're passing our entire injury roll into the ``check_woundings_mod()`` proc, as we're not treating this as a proc that just adds values anymore. Secondly, bare wound bonus only applies if there is no potential wound protection from any source, as expected. But it comes last in the calculations. Thirdly, wound protection is applied to the injury roll last, after wound bonuses from the attack, wound bonuses from other wounds and wound bonuses from a disabled limb are applied. This does not include serial wound bonuses, which are determined outside of this proc. Wound protection comes from two sources. Clothing and limb wound resistance. Your chest and head have an amount of wound resistance so long as they are not mangled in any fashion. Being mangled means having either a hairline fracture or a weeping avulsion wound. Wound protection reduces the final injury roll by a percentage. Say our roll is 50, and we have effectively 50% wound protection. The final roll would be 25. ~~Most clothing have had their wound armor values changed. As a loose rule, I used the highest of melee or bomb armor, except where that value was 100, in which case I used the lowest instead. I'm basing this decision on how embeds are calculated, which is attack type agnostic.~~ ~~Some armor have inconsistent values because they are alternative armors to an existing armor type or are hyperspecialized armor. Ablative, bulletproof and security vests all share a value of 35, despite the former two not having decent melee or bomb armor.~~ ~~Some clothing missing wound armor that should have had them now have wound armor.~~ ~~This may need a bit of scrutiny in case one or two seem weirdly high. Some have maybe become too low. Its a bit hard to say.~~ I changed it to ``exposed_wound_bonus`` to better represent when it applies. You can be naked and still not be affected by this bonus if the limb has wound resistance. I'm not promising anything with this PR, but this is an attempt to sanity check the values on wounds so that we're not seeing what the data that determined the removal of beheading presented. An extreme over-representation of tier 3 wounds. ~~And, from that, maybe I can argue for beheadings coming back. That's my goal. I think beheadings happened so much because the numbers were in need of work.~~ Well okay I just wanna make wounds a bit more workable actually more than I want beheadings. Why is it that tier 3 wounds were so over-represented? Because wounds will often force more severe wounds of other types by merit of any wounds existing at all on a limb. Having **_a_** wound makes you more wound prone for any kind of wound, and not just making you more likely to suffer a more severe type of the same wound. The threshold mechanic was intended to simulate making a wound worse, but oddly just made a limb broadly more prone to getting worse from any kind of attack to such a degree that future wound rolls of different types were often going to start at the threshold necessary to be a tier 3 wound. Dismemberment, mind you, requires you to suffer a flesh wound while you have a bone wound of tier 2 or higher (with tier 3 giving a bonus to this). You can do this readily via just a sharp weapon, because having a mangled limb causes the wound to turn into a bone wound. Technically, this is meant to be less likely as the effective damage for this wound is halved. But the wound bonus from having a flesh wound was almost always significant enough to kick your new bone wound up to a tier 3. In other words; its not surprising that you saw so many beheadings, because the system wanted to behead you as fast as it possibly can thanks to all these escalating values. Wound armor was only applied as a flat reduction on the roll. The average for wound armor was 10. After receiving a single wound, you can expect wound rolls to reach upwards of 100, even if the actual damage roll was not particularly high, due to wound stacking bonuses form being wounded. This meant that wounds, if they happened, came thick and fast after the first, regardless of what your protection might be to wounds. It was just a matter of getting past the initial bump. This is why effects that forced wounds were so powerful. They basically made a given limb more prone to taking a wound without having to deal with the protection problem first. Finally, this is just a broad flaw with the system that is not its fault. It is actually a problem that isn't a problem. Most people in the game are not wearing helmets that protect their head. So most people are going to suffer from a higher proclivity of being wounded if people are aiming for the head. There is this...kind of cargo cult belief that aiming for the head means you do more damage, or can stun someone if you're lucky or what have you. It's entirely nonsense, but it has a grain of truth in that people rarely wear, or even have access too, headwear that provides wound protection or any protection at all. People have jumpsuits, which are universally wound protected, but that isn't true of the head. Look, the point is, they're not aiming at the head because it is usually less armored, its for other reasons but it just so happens to become true due to wounds and how wounds roll their type. To soften this issue, I've decided to treat wound resistance as armor until the limb suffers a tier 3 wound. This way, hits to the head MAY not necessarily escalate to tier 3 instantly as they would on live even from relatively low power weapons. Some weapons have very low force, but have extreme bare wound bonuses. This should be less likely after this change. I doubt this will necessarily make high damage high wound weapons like energy swords any less prone to cutting you clean open, but it might thanks to the reduction to contributed damage to the injury roll. The system is now _a bit more random_. 🆑 balance: Wounds do not make you as vulnerable to suffering wounds of all types as before. Instead, wounds make you more vulnerable to suffering worse versions of themselves as a priority. balance: Wound armor is now more impactful when protecting you from wounds when you have already been wounded. balance: Your head and chest are more difficult to wound until they have been mangled; either from suffering from a weeping avulsion or a hairline fracture. code: Changed the variable for bare_wound_bonus to exposed_wound_bonus to better explain what that variable is doing. /🆑 --------- Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com> |
||
|
|
57624ca1e2 |
Rebalances wound determination values, wounding escalation and wound armor to hopefully be less explosive (#91099)
## About The Pull Request This is a big one so please bear with me, wounds are complicated ### Max Potential Wound Rolls We've decreased the max contributed damage to wound rolls from 35 to 25. This results, after the exponent, a max possible wound roll of 1 to 91 before any modifiers (assuming the attack, after armor, is 25 or above). The minimum value to wound is still 5. ### Wound Escalation Penalties Most wounds were contributing significant numbers per wound type to the potential for a new wound to occur. Getting wounded once meant you were getting wound a lot, but actually getting past that first wounding may be the tricky part. We have significantly reigned in the wound penalty that having a wound contributes, and instead utilize the series wound penalty to allow same type wounds to escalate themselves faster as a priority. Having wounds still makes you more wound vulnerable, just not to such an extreme degree. The priority here for what wounds matter most for contributing to overall wounding vulnerability is ``Infected BURNS > BURNS > SLASH|PIERCE > BLUNT.`` ### Wound Armor Wound armor, unlike all other kinds of armor, was used as a additive value to the wound roll modifiers rather than a multiplicative value. We have reworked how wound armor is determined by changing how wound modifiers are calculated. Firstly, we're passing our entire injury roll into the ``check_woundings_mod()`` proc, as we're not treating this as a proc that just adds values anymore. Secondly, bare wound bonus only applies if there is no potential wound protection from any source, as expected. But it comes last in the calculations. Thirdly, wound protection is applied to the injury roll last, after wound bonuses from the attack, wound bonuses from other wounds and wound bonuses from a disabled limb are applied. This does not include serial wound bonuses, which are determined outside of this proc. Wound protection comes from two sources. Clothing and limb wound resistance. Your chest and head have an amount of wound resistance so long as they are not mangled in any fashion. Being mangled means having either a hairline fracture or a weeping avulsion wound. Wound protection reduces the final injury roll by a percentage. Say our roll is 50, and we have effectively 50% wound protection. The final roll would be 25. ### ~~Wound Armor on Clothing~~ Reverted ~~Most clothing have had their wound armor values changed. As a loose rule, I used the highest of melee or bomb armor, except where that value was 100, in which case I used the lowest instead. I'm basing this decision on how embeds are calculated, which is attack type agnostic.~~ ~~Some armor have inconsistent values because they are alternative armors to an existing armor type or are hyperspecialized armor. Ablative, bulletproof and security vests all share a value of 35, despite the former two not having decent melee or bomb armor.~~ ~~Some clothing missing wound armor that should have had them now have wound armor.~~ ~~This may need a bit of scrutiny in case one or two seem weirdly high. Some have maybe become too low. Its a bit hard to say.~~ ### The ``bare_wound_bonus`` variable I changed it to ``exposed_wound_bonus`` to better represent when it applies. You can be naked and still not be affected by this bonus if the limb has wound resistance. ## Why It's Good For The Game I'm not promising anything with this PR, but this is an attempt to sanity check the values on wounds so that we're not seeing what the data that determined the removal of beheading presented. An extreme over-representation of tier 3 wounds. ~~And, from that, maybe I can argue for beheadings coming back. That's my goal. I think beheadings happened so much because the numbers were in need of work.~~ Well okay I just wanna make wounds a bit more workable actually more than I want beheadings. Why is it that tier 3 wounds were so over-represented? Because wounds will often force more severe wounds of other types by merit of any wounds existing at all on a limb. Having **_a_** wound makes you more wound prone for any kind of wound, and not just making you more likely to suffer a more severe type of the same wound. The threshold mechanic was intended to simulate making a wound worse, but oddly just made a limb broadly more prone to getting worse from any kind of attack to such a degree that future wound rolls of different types were often going to start at the threshold necessary to be a tier 3 wound. Dismemberment, mind you, requires you to suffer a flesh wound while you have a bone wound of tier 2 or higher (with tier 3 giving a bonus to this). You can do this readily via just a sharp weapon, because having a mangled limb causes the wound to turn into a bone wound. Technically, this is meant to be less likely as the effective damage for this wound is halved. But the wound bonus from having a flesh wound was almost always significant enough to kick your new bone wound up to a tier 3. In other words; its not surprising that you saw so many beheadings, because the system wanted to behead you as fast as it possibly can thanks to all these escalating values. Wound armor was only applied as a flat reduction on the roll. The average for wound armor was 10. After receiving a single wound, you can expect wound rolls to reach upwards of 100, even if the actual damage roll was not particularly high, due to wound stacking bonuses form being wounded. This meant that wounds, if they happened, came thick and fast after the first, regardless of what your protection might be to wounds. It was just a matter of getting past the initial bump. This is why effects that forced wounds were so powerful. They basically made a given limb more prone to taking a wound without having to deal with the protection problem first. Finally, this is just a broad flaw with the system that is not its fault. It is actually a problem that isn't a problem. Most people in the game are not wearing helmets that protect their head. So most people are going to suffer from a higher proclivity of being wounded if people are aiming for the head. There is this...kind of cargo cult belief that aiming for the head means you do more damage, or can stun someone if you're lucky or what have you. It's entirely nonsense, but it has a grain of truth in that people rarely wear, or even have access too, headwear that provides wound protection or any protection at all. People have jumpsuits, which are universally wound protected, but that isn't true of the head. Look, the point is, they're not aiming at the head because it is usually less armored, its for other reasons but it just so happens to become true due to wounds and how wounds roll their type. To soften this issue, I've decided to treat wound resistance as armor until the limb suffers a tier 3 wound. This way, hits to the head MAY not necessarily escalate to tier 3 instantly as they would on live even from relatively low power weapons. Some weapons have very low force, but have extreme bare wound bonuses. This should be less likely after this change. I doubt this will necessarily make high damage high wound weapons like energy swords any less prone to cutting you clean open, but it might thanks to the reduction to contributed damage to the injury roll. The system is now _a bit more random_. ## Changelog 🆑 balance: Wounds do not make you as vulnerable to suffering wounds of all types as before. Instead, wounds make you more vulnerable to suffering worse versions of themselves as a priority. balance: Wound armor is now more impactful when protecting you from wounds when you have already been wounded. balance: Your head and chest are more difficult to wound until they have been mangled; either from suffering from a weeping avulsion or a hairline fracture. code: Changed the variable for bare_wound_bonus to exposed_wound_bonus to better explain what that variable is doing. /🆑 --------- Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com> |
||
|
|
f6397560f6 |
minor deathmatch fixes (#91192)
## About The Pull Request split personality may not roll if the target is in a deathmatch area bolt of possession deals 25 brain damage if the target is in a deathmatch area (8 hits for brain death) removed a camera from the meta brig map Disciple of Pete has 9 tile range signalers instead (that nobody uses anyway lmao because you cant use them for minibombs or the other grenades) ## Why It's Good For The Game fixes #91171 fixes #90912 fixes #89212 ## Changelog 🆑 fix: removed a camera from the deathmatch meta brig map, disciple of pete has low-range signalers, deathmatch bolt of possession deals brain damage instead, split personality may not roll in deathmatch /🆑 |
||
|
|
33395ff3bc |
S.W.A.T part 3 (#3534)
## About The Pull Request You're in my way, sir. Readds hybrid tasers. ## Why It's Good For The Game About four months ago, tasers were heavily reworked on TG. This made them work more like actual tasers. They do stamina damage over time, can be resisted against, and if someone else walks in the way it fucks everything up. You can also walk out of range. Here, I've readded them with some tweaks. For one, energy armor now applies. MOST vests have high energy armor, so they counter tasers pretty well. I've also made tasers take more energy to use. Before you say this is op, if you're running, this has a range of about...2 tiles? I really really encourage you to try this on your own local branch before forming an opinion. I think this is good for the game as it gives sec another nonlethal option. What you should know: Currently, unarmored, it takes 8-10 seconds of constant tasing to full stun someone. They will then be on the ground for about 3 seconds, before getting back up. Armored, this is even more, far more. All these numbers are subject to change, of course, but for now I'm intentionally making them pretty weak as we see how this affects balance. I've also talked to our resident antag main, Kyle, about this change to ensure that I'm not just doing this due to my sec bias. ## Proof Of Testing Works on my machine <details> <summary>Screenshots/Videos</summary> </details> ## Changelog 🆑 The spirit of secoffs long past add: Readds the golden bolt /🆑 --------- Co-authored-by: Ian Yanik <Iwantpornspam@gmail.com> Co-authored-by: Roxy <75404941+TealSeer@users.noreply.github.com> |
||
|
|
53f84b5e51 |
minor deathmatch fixes (#91192)
## About The Pull Request split personality may not roll if the target is in a deathmatch area bolt of possession deals 25 brain damage if the target is in a deathmatch area (8 hits for brain death) removed a camera from the meta brig map Disciple of Pete has 9 tile range signalers instead (that nobody uses anyway lmao because you cant use them for minibombs or the other grenades) ## Why It's Good For The Game fixes #91171 fixes #90912 fixes #89212 ## Changelog 🆑 fix: removed a camera from the deathmatch meta brig map, disciple of pete has low-range signalers, deathmatch bolt of possession deals brain damage instead, split personality may not roll in deathmatch /🆑 |
||
|
|
01037d0838 |
{NO GBP} Reduces stamina damage from rubbershot by a single point per pellet. (#91119)
## About The Pull Request Reduces rubbershot pellets from 11 stamina damage to 10 stamina damage. ## Why It's Good For The Game So fun fact. Stamina crit threshold is particularly generous about when it tips you over into stamina crit. Fired from a combat shotgun, rubbershot would deal 99 stamina damage at point blank. Resulting in you entering stamina crit if you didn't have any armor at all. By reducing this by exactly one point, this no longer happens. This is another PR I was reluctant to do but honestly, this change was recent enough that I frankly do hold a lot more of the blame for it. A few steps back isn't going to hurt anyone. These things still spew damage at whatever you point them at. "But Anne, what about rubbershot in riot shotguns!" It did 66 stamina damage total. At 60 damage, you can still slow down someone in a sec vest with a point blank shot. For the most part, it will probably be completely unnoticeable for the riot shotgun. I don't even know why it was an uneven number to be completely honest with you. |
||
|
|
2f415a5735 |
{NO GBP} Reduces stamina damage from rubbershot by a single point per pellet. (#91119)
## About The Pull Request Reduces rubbershot pellets from 11 stamina damage to 10 stamina damage. ## Why It's Good For The Game So fun fact. Stamina crit threshold is particularly generous about when it tips you over into stamina crit. Fired from a combat shotgun, rubbershot would deal 99 stamina damage at point blank. Resulting in you entering stamina crit if you didn't have any armor at all. By reducing this by exactly one point, this no longer happens. This is another PR I was reluctant to do but honestly, this change was recent enough that I frankly do hold a lot more of the blame for it. A few steps back isn't going to hurt anyone. These things still spew damage at whatever you point them at. "But Anne, what about rubbershot in riot shotguns!" It did 66 stamina damage total. At 60 damage, you can still slow down someone in a sec vest with a point blank shot. For the most part, it will probably be completely unnoticeable for the riot shotgun. I don't even know why it was an uneven number to be completely honest with you. |
||
|
|
d9cdc4889d | Makes it so that there is an actual tracer on the tesla cannon hitscan beam. (#90979) |