mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-17 19:14:15 +01:00
observer_fix_tm
680 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
6e9f2ccfc0 |
Merge remote-tracking branch 'tgstation/master' into upstream-12-15
# Conflicts: # .github/workflows/compile_all_maps.yml # .github/workflows/run_integration_tests.yml # _maps/map_files/CatwalkStation/CatwalkStation_2023.dmm # code/_onclick/hud/credits.dm # code/controllers/subsystem/networks/id_access.dm # code/datums/diseases/advance/advance.dm # code/datums/diseases/advance/symptoms/heal.dm # code/game/machinery/doors/door.dm # code/game/objects/structures/crates_lockers/closets/secure/medical.dm # code/game/objects/structures/crates_lockers/closets/secure/security.dm # code/modules/antagonists/malf_ai/malf_ai_modules.dm # code/modules/jobs/job_types/_job.dm # code/modules/loadout/categories/accessories.dm # code/modules/loadout/loadout_helpers.dm # code/modules/loadout/loadout_items.dm # code/modules/loadout/loadout_preference.dm # code/modules/mob/living/silicon/robot/robot_defense.dm # code/modules/mod/mod_theme.dm # code/modules/projectiles/ammunition/energy/laser.dm # code/modules/reagents/reagent_containers/cups/drinks.dm # code/modules/shuttle/mobile_port/variants/supply.dm # code/modules/surgery/organs/internal/eyes/_eyes.dm # code/modules/unit_tests/screenshots/screenshot_antag_icons_heretic.png # icons/hud/screen_full.dmi |
||
|
|
0b0c5ea91e |
Unit test material checks are now performed on all crafting recipes by default. All stack recipes now transfer mats to the results (#92620)
## About The Pull Request Extends the part of the crafting unit test that ensures consistency between the total mats of the components of a recipe (or rather, the result of said recipe) and a generic instance of the same type as its result, previously only implemented on food recipes. ## Why It's Good For The Game This ensures a degree of consistency with the material composition of various objects in the game. I couldn't do it in the original PR as that one was too big already and it took months to get it merged, and have the relative bugs fixed. Currently a WIP as I slowly deal with the unit test reports. ## Changelog 🆑 refactor: Follow-up to the crafting/material refactor from months ago. All objects crafted with stacks now inherit their mat composition (not necessarily the effects and color) by default, while previously only a few things like chair, sinks and toilets did. Report any object looking or behaving weirdly as a result. fix: The material composition of ammo boxes is no longer a 1/10 of what it's supposed to be. It was a shitty hack to make it harder to recycle empty ammo boxes. Instead, they lose materials as they're emptied now. /🆑 |
||
|
|
3425cf03e5 |
Gun Muzzle Flash (2) (#94172)
## About The Pull Request Continues https://github.com/tgstation/tgstation/pull/81507 Adds a directional muzzle flash to all guns (excluding suppressors, toys, e-bow, etc). Changes color depending on the laser/projectile. If anything is missed, let me know. ## Why It's Good For The Game Realism Cool visuals Makes sense |
||
|
|
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 | ||
|
|
337ab7f2c3 |
Refactors status effects to be based on subsystem ticks, among a few other minor status effect fixes/refactors (#93694)
## About The Pull Request Refactors status effects to track their durations and tick intervals using counters. In effect, [var/duration] now directly refers to how many deciseconds are left on the status effect. I've also moved the old [var/tick_interval] [world.time] implementation to a tick-based [var/time_until_next_tick] counter. There are a couple, less noteworthy changes in here as well. The main one is that there was an unused bit of bloat code for setting tick intervals based on a random lower and upper threshold, but that can be done in tick() now so it's completely redundant, and I thus removed it entirely. That makes parts of [proc/process] much easier to read. I added/modified some unit tests (which I expect to fail) to verify that [var/duration] and [var/tick_interval] are both multiples of the subsystem wait assigned to the status effect. If the programmer wants a duration of 2.5 seconds, they expect it to work that way, but it won't because SSfastprocess only ticks once every 0.2 seconds, which 2.5 is not a multiple of. This becomes way more apparent when a status effect is set to use SSprocessing. The final, perhaps most important unit test I've added, is one that verifies that the overall tick count and overall accumulated [seconds_between_ticks] are equal to "[var/duration] / [var/tick_interval]" and "[var/duration]" respectively. ## Why It's Good For The Game The main thing this PR fixes is timing inconsistencies. Before this PR, durations and tick intervals were tracked using world.time, while the [proc/tick] call timing was dependent on the wait time of the subsystem the status effect was processing on. Thing is, SSfastprocess and SSprocessing rarely run completely in one tick during real gameplay. This led to a continuous desync where status effects were consistently inconsistent in their overall tick count. This is a big problem as [seconds_between_ticks] is constant and thus doesn't account for this difference in tick count. As an example, Changeling's Fleshmend has a duration of 10 seconds, a tick interval of 1 second and a healing rate of 4 brute per tick. Previously, if the server was lagging even slightly and it only ticked 8 times over the course of 10 seconds, you would heal 32 health rather than the 40 that a full Fleshmend would give you. The total effect potency of a status effect being reliant on server lag is incredibly stupid, especially for status effects that have an associated cost. (like the aforementioned Fleshmend) As for the refactors, they make status effect code easier to read and debug. Unit tests also make verifying things are working as intended much easier. ## Changelog 🆑 fix: Status effects now tick consistently, with Fleshmend and such giving a consistent total healing amount. Report any oddities. refactor: Status effect code is now easier to read and makes more sense. Again, report any oddities, the changes are major. /🆑 |
||
|
|
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. /🆑 |
||
|
|
4b4fa2d612 |
Sets the X-01 Multiphase to 12 lethal shots to match the energy gun (#92766)
## About The Pull Request What it says on the tin. If you saw a PR similar to this one. You didn't. ## Why It's Good For The Game It's really weird that the X-01 is, for whatever reason, inferior to the energy gun in terms of lethal capacity but not in terms of nonlethal capacity. I don't really get it, so let's put in two shots. ## Changelog 🆑 balance: The Multiphase X-01 has 12 lethal shots to match the capacity of the standard energy gun. /🆑 |
||
|
|
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. /🆑 |
||
|
|
efb0e037e6 |
Splits ammo box multiload into a bitflag, adds a icon for .223, adds a desc for toy magazines (#92409)
## About The Pull Request Ammo box `multiload` var was changed into a bitflag covering `AMMO_BOX_MULTILOAD_IN`, and `AMMO_BOX_MULTILOAD_OUT`, respectively. By default, ammo boxes have both multiloading in and out, while magazines only have multiloading in, which means you can't use magazines as speedloaders, but you can still feed ammo into magazines quickly if you had, say, an ammo box for that magazine's caliber. Or... something. --- Also adds an icon state for .223 casings, which is just an edit of the old 7.62 casings to be shorter. <img width="403" height="89" alt="image" src="https://github.com/user-attachments/assets/b3206b94-c2b3-4b90-8162-b4c620bbe4cf" /> --- Also adds a description for toy gun magazines. ## Why It's Good For The Game Splitting ammo box multiload into "multiload in" and "multiload out" means you can't use an ammo box as a speedloader, which I thought was silly. Emergent gameplay, sure, but also silly. .223 having a unique icon instead of just looking like any other pistol casing is nice (read: pistol-caliber casings from a rifle round annoyed me). Toy gun magazine thing was for funsies at this point. ## Changelog 🆑 code: Ammo boxes' multiload variable is now a bitflag that determines if a magazine can be multiloaded into or out of. Ammo boxes can multiload in or out, while magazines can only multiload in. image: .223 ammo now has a distinct casing icon. fix: Foam force magazines now have a proper description. /🆑 --------- Co-authored-by: Hatterhat <Hatterhat@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. /🆑 |
||
|
|
8e350f1f86 |
Splits ammo box multiload into a bitflag, adds a icon for .223, adds a desc for toy magazines (#92409)
## About The Pull Request Ammo box `multiload` var was changed into a bitflag covering `AMMO_BOX_MULTILOAD_IN`, and `AMMO_BOX_MULTILOAD_OUT`, respectively. By default, ammo boxes have both multiloading in and out, while magazines only have multiloading in, which means you can't use magazines as speedloaders, but you can still feed ammo into magazines quickly if you had, say, an ammo box for that magazine's caliber. Or... something. --- Also adds an icon state for .223 casings, which is just an edit of the old 7.62 casings to be shorter. <img width="403" height="89" alt="image" src="https://github.com/user-attachments/assets/b3206b94-c2b3-4b90-8162-b4c620bbe4cf" /> --- Also adds a description for toy gun magazines. ## Why It's Good For The Game Splitting ammo box multiload into "multiload in" and "multiload out" means you can't use an ammo box as a speedloader, which I thought was silly. Emergent gameplay, sure, but also silly. .223 having a unique icon instead of just looking like any other pistol casing is nice (read: pistol-caliber casings from a rifle round annoyed me). Toy gun magazine thing was for funsies at this point. ## Changelog 🆑 code: Ammo boxes' multiload variable is now a bitflag that determines if a magazine can be multiloaded into or out of. Ammo boxes can multiload in or out, while magazines can only multiload in. image: .223 ammo now has a distinct casing icon. fix: Foam force magazines now have a proper description. /🆑 --------- Co-authored-by: Hatterhat <Hatterhat@users.noreply.github.com> |
||
|
|
6aa2ca1026 |
Fixes projectiles inheriting gun's pixel offsets when fired (#92166)
## About The Pull Request Gun itself was passed as source when fired, which resulted in its pixel offsets being inherited. Also we didn't move projectiles over turfs, so any offsets larger than 32 pixels resulted in projectiles steering to the side. ## Changelog 🆑 fix: Fixed projectiles inheriting gun's pixel offsets when fired /🆑 |
||
|
|
1d6cec00bc |
Healium bolts now heal people instead of damaging them. (#92137)
## About The Pull Request Fixes healium bolts ## Why It's Good For The Game Healium bolts are supposed to heal people ## Changelog 🆑 fix: Healium bolts now heal instead of dealing damage /🆑 |
||
|
|
8e6323a858 |
Fixes projectiles inheriting gun's pixel offsets when fired (#92166)
## About The Pull Request Gun itself was passed as source when fired, which resulted in its pixel offsets being inherited. Also we didn't move projectiles over turfs, so any offsets larger than 32 pixels resulted in projectiles steering to the side. ## Changelog 🆑 fix: Fixed projectiles inheriting gun's pixel offsets when fired /🆑 |
||
|
|
9ea010c060 |
Healium bolts now heal people instead of damaging them. (#92137)
## About The Pull Request Fixes healium bolts ## Why It's Good For The Game Healium bolts are supposed to heal people ## Changelog 🆑 fix: Healium bolts now heal instead of dealing damage /🆑 |
||
|
|
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 /🆑 |
||
|
|
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 /🆑 |
||
|
|
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> |
||
|
|
da97c1a2b9 |
Enabling throw mode while ejecting casings has you catch them (except for when you don't) (#91645)
## About The Pull Request When racking a gun (e.g. pulling the slide on a pistol, racking a shotgun's pump, etc. etc), if you have throw mode enabled, you'll attempt to catch the ejected casing.  This can fail, though, which gives you a funny message under these circumstances: - Your hands are full.  - The casing was fired in the last 5 seconds, and you do not have the protection of hand required to remove a lightbulb.  You catch it if you have the lightbulb remover trait/skillchip, though.  - You try to catch it while clumsy (e.g. being a clown). To add insult to injury, trying to catch a hot casing has it burn you even if you're wearing gloves. Don't think about that too hard.  ## Why It's Good For The Game Changing shotgun ammo sucks less. Look cool to your friends while possibly wasting ammo. Feel like a doofus when you get the funny red text that says you dropped the casing because your hands were full. The possibilities are very limited but it seems like it'd be nice to not have to fumble for dropped casings all the time. (Now it's just most.) ## Changelog 🆑 qol: Having throw mode enabled while racking the slide on a gun has you catch the ejected casing. Unless your hands are full, your hands are unprotected and the casing is recently fired, or you are clumsy (e.g. a clown), in which case you drop the casing and look silly. /🆑 --------- Co-authored-by: Hatterhat <Hatterhat@users.noreply.github.com> Co-authored-by: Aki Ito <11748095+ExcessiveUseOfCobblestone@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> |
||
|
|
a02b3653e8 |
Enabling throw mode while ejecting casings has you catch them (except for when you don't) (#91645)
## About The Pull Request When racking a gun (e.g. pulling the slide on a pistol, racking a shotgun's pump, etc. etc), if you have throw mode enabled, you'll attempt to catch the ejected casing.  This can fail, though, which gives you a funny message under these circumstances: - Your hands are full.  - The casing was fired in the last 5 seconds, and you do not have the protection of hand required to remove a lightbulb.  You catch it if you have the lightbulb remover trait/skillchip, though.  - You try to catch it while clumsy (e.g. being a clown). To add insult to injury, trying to catch a hot casing has it burn you even if you're wearing gloves. Don't think about that too hard.  ## Why It's Good For The Game Changing shotgun ammo sucks less. Look cool to your friends while possibly wasting ammo. Feel like a doofus when you get the funny red text that says you dropped the casing because your hands were full. The possibilities are very limited but it seems like it'd be nice to not have to fumble for dropped casings all the time. (Now it's just most.) ## Changelog 🆑 qol: Having throw mode enabled while racking the slide on a gun has you catch the ejected casing. Unless your hands are full, your hands are unprotected and the casing is recently fired, or you are clumsy (e.g. a clown), in which case you drop the casing and look silly. /🆑 --------- Co-authored-by: Hatterhat <Hatterhat@users.noreply.github.com> Co-authored-by: Aki Ito <11748095+ExcessiveUseOfCobblestone@users.noreply.github.com> |
||
|
|
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> |
||
|
|
bc2215667f |
Re-refactors batons / Refactors attack chain force modifiers (#90809)
Melee attack chain now has a list passed along with it, `attack_modifiers`, which you can stick force modifiers to change the resulting attack This is basically a soft implementation of damage packets until a more definitive pr, but one that only applies to item attack chain, and not unarmed attacks. This change was done to facilitate a baton refactor - batons no longer hack together their own attack chain, and are now integrated straight into the real attack chain. This refactor itself was done because batons don't send any attack signals, which has been annoying in the past (for swing combat). 🆑 Melbert refactor: Batons have been refactored again. Baton stuns now properly count as an attack, when before it was a nothing. Report any oddities, particularly in regards to harmbatonning vs normal batonning. refactor: The method of adjusting item damage mid-attack has been refactored - some affected items include the Nullblade and knives. Report any strange happenings with damage numbers. refactor: A few objects have been moved to the new interaction chain - records consoles, mawed crucible, alien weeds and space vines, hedges, restaurant portals, and some mobs - to name a few. fix: Spears only deal bonus damage against secure lockers, not all closet types (including crates) /🆑 |
||
|
|
5261efb67f |
Re-refactors batons / Refactors attack chain force modifiers (#90809)
## About The Pull Request Melee attack chain now has a list passed along with it, `attack_modifiers`, which you can stick force modifiers to change the resulting attack This is basically a soft implementation of damage packets until a more definitive pr, but one that only applies to item attack chain, and not unarmed attacks. This change was done to facilitate a baton refactor - batons no longer hack together their own attack chain, and are now integrated straight into the real attack chain. This refactor itself was done because batons don't send any attack signals, which has been annoying in the past (for swing combat). ## Changelog 🆑 Melbert refactor: Batons have been refactored again. Baton stuns now properly count as an attack, when before it was a nothing. Report any oddities, particularly in regards to harmbatonning vs normal batonning. refactor: The method of adjusting item damage mid-attack has been refactored - some affected items include the Nullblade and knives. Report any strange happenings with damage numbers. refactor: A few objects have been moved to the new interaction chain - records consoles, mawed crucible, alien weeds and space vines, hedges, restaurant portals, and some mobs - to name a few. fix: Spears only deal bonus damage against secure lockers, not all closet types (including crates) /🆑 |
||
|
|
7f435407a5 |
DRAGnet; new sprite, new functionality (#90713)
## About The Pull Request  New sprites for the DRAGnet, coming alongside some functionaltiy changes. DRAGnets are now bulky, and do not fit in backpacks. They also cannot be dual-wielded. DRAGnet no longer have the trap snare functionality. You know, the infamous bola bullet. DRAGnets now have two functions; The first function is straight up a scatter disabler blast that does a total of 55 stamina damage point blank (it's like, 5 less than what it did before). The second function is a single bolt that, when it hits a living mob, dealing 30 damage and staggering it briefly slowing it down. It also places down a wide net of transportation fields around the target, much like the net functionality does on live (but that's attached to the scatter function, not the single bolt)  ### Misc Changes DRAGnets now cost more form cargo, at 3600 credits. (This barely matters for departmental orders) ## Why It's Good For The Game The sprite is ancient. Like nearing two decades old ancient. I believe the INTENTION was this thing  It didn't really work out that way.  Either way, the new sprite is cool and more unique in my opinion. Fitting its status as an energy weapon. As for balance changes; I've wanted to do this for a very long time but put it off a lot. I think this is about the most moderate approach I have. It otherwise functions pretty much as expected, maintaining the cool niche functionality while exorcising the problem bits; one-handed energy shotgun bit, and the bola shot bit. I think I've spent at least the last...four or so years hammering on about the horror that is this gun for balance? And even when it was seeing more widespread use from people who recognized how bullshit it really was, I didn't really want to get rid of the bit I actually quite liked, which was the teleportation field. I'm happy with this version. ## Changelog 🆑 NecromancerAnne (Code, Mild Sprite Edits) Michiyamenotehifunana (Sprites) image: Replaces the decrepit DRAGnet sprite with something newer and more interesting. balance: Completely reworks the DRAGnet. They are now bulky energy guns. balance: Snare is now a single shot bolt that deals 30 stamina force, staggers the target and lays out a net of teleportation fields that can transport anyone standing on them for too long to a DRAGnet beacon. balance: Net has been replaced with a scattershot disabler round. /🆑 |
||
|
|
1c3c50c9e9 |
DRAGnet; new sprite, new functionality (#90713)
## About The Pull Request  New sprites for the DRAGnet, coming alongside some functionaltiy changes. DRAGnets are now bulky, and do not fit in backpacks. They also cannot be dual-wielded. DRAGnet no longer have the trap snare functionality. You know, the infamous bola bullet. DRAGnets now have two functions; The first function is straight up a scatter disabler blast that does a total of 55 stamina damage point blank (it's like, 5 less than what it did before). The second function is a single bolt that, when it hits a living mob, dealing 30 damage and staggering it briefly slowing it down. It also places down a wide net of transportation fields around the target, much like the net functionality does on live (but that's attached to the scatter function, not the single bolt)  ### Misc Changes DRAGnets now cost more form cargo, at 3600 credits. (This barely matters for departmental orders) ## Why It's Good For The Game The sprite is ancient. Like nearing two decades old ancient. I believe the INTENTION was this thing  It didn't really work out that way.  Either way, the new sprite is cool and more unique in my opinion. Fitting its status as an energy weapon. As for balance changes; I've wanted to do this for a very long time but put it off a lot. I think this is about the most moderate approach I have. It otherwise functions pretty much as expected, maintaining the cool niche functionality while exorcising the problem bits; one-handed energy shotgun bit, and the bola shot bit. I think I've spent at least the last...four or so years hammering on about the horror that is this gun for balance? And even when it was seeing more widespread use from people who recognized how bullshit it really was, I didn't really want to get rid of the bit I actually quite liked, which was the teleportation field. I'm happy with this version. ## Changelog 🆑 NecromancerAnne (Code, Mild Sprite Edits) Michiyamenotehifunana (Sprites) image: Replaces the decrepit DRAGnet sprite with something newer and more interesting. balance: Completely reworks the DRAGnet. They are now bulky energy guns. balance: Snare is now a single shot bolt that deals 30 stamina force, staggers the target and lays out a net of teleportation fields that can transport anyone standing on them for too long to a DRAGnet beacon. balance: Net has been replaced with a scattershot disabler round. /🆑 |
||
|
|
11d82b7995 |
You can now interact with held mobs beside wearing them (feat: "minor" melee attack chain cleanup) (#90080)
People can now pet held mothroaches and pugs if they want to, or use items on them, hopefully without causing many issues. After all, it only took about a couple dozen lines of code to make... ...Oh, did the 527 files changed or the 850~ lines added/removed perhaps catch your eye? Made you wonder if I accidentally pushed the wrong branch? or skewed something up big time? Well, nuh uh. I just happen to be fed up with the melee attack chain still using stringized params instead of an array/list. It was frankly revolting to see how I'd have had to otherwise call `list2params` for what I'm trying to accomplish here, and make this PR another tessera to the immense stupidity of our attack chain procs calling `params2list` over and over and over instead of just using that one call instance from `ClickOn` as an argument. It's 2025, honey, wake up! I also tried to replace some of those single letter vars/args but there are just way too many of them. Improving old code. And I want to be able to pet mobroaches while holding them too. 🆑 qol: You can now interact with held mobs in more ways beside wearing them. /🆑 |
||
|
|
339616ae78 |
You can now interact with held mobs beside wearing them (feat: "minor" melee attack chain cleanup) (#90080)
## About The Pull Request People can now pet held mothroaches and pugs if they want to, or use items on them, hopefully without causing many issues. After all, it only took about a couple dozen lines of code to make... ...Oh, did the 527 files changed or the 850~ lines added/removed perhaps catch your eye? Made you wonder if I accidentally pushed the wrong branch? or skewed something up big time? Well, nuh uh. I just happen to be fed up with the melee attack chain still using stringized params instead of an array/list. It was frankly revolting to see how I'd have had to otherwise call `list2params` for what I'm trying to accomplish here, and make this PR another tessera to the immense stupidity of our attack chain procs calling `params2list` over and over and over instead of just using that one call instance from `ClickOn` as an argument. It's 2025, honey, wake up! I also tried to replace some of those single letter vars/args but there are just way too many of them. ## Why It's Good For The Game Improving old code. And I want to be able to pet mobroaches while holding them too. ## Changelog 🆑 qol: You can now interact with held mobs in more ways beside wearing them. /🆑 |
||
|
|
753d8e5ba4 | Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-25-04a | ||
|
|
df3d6a31ca |
Reworks flechette into a AP pellet round that does mostly wounds. Adds the Donk Co. 'Donk Spike' flechette round as a surplus round. (#89972)
## About The Pull Request  Reworks flechette shells from... whatever it was that they were supposed to be before into an AP pellet round that primarily focuses on wounding power and embedding power over specifically dealing direct damage (16 as opposed to buckshot's 30). Useful if you want to maim as a priority. You can print flechette once science researches Exotic Ammunition. Nuclear Operatives also get flechette rounds as a Bulldog Shotgun magazine choice priced as a basic ammunition type. In addition, you can also acquire Donk Co. 'Donk Spike' flechette shells. These shells fire plastic darts! They can be purchased by Nuclear Operatives as a surplus option for Bulldog shotguns. 7 magazines for the price of one. Donk Co. 'Donk Spike' flechette was intended to be an alternative to the standard flechette but failed spectacularly once it hit the market. Due to a lack of confidence in the product, Donk Co. 'Donk Spike' flechette now appears in maintenance loot as potential trash, as Donk Co. dumped it in the millions into various landfills across the sector. You can also print it if you find the tech in a BEPIS tech disk. Does it work? Why don't you take a chance on Donk and find out? ## Why It's Good For The Game I'm not sure if the person who made the original flechette actually understood what each of the variables was supposed to be doing or how they actually worked. A bullet with an excessively negative standard wound power (for a pellet projectile) and low damage, but then an excessively high bare wound bonus (for a pellet projectile). But then some ricochet variables without ricochet being assigned to the bullet... and a demolition mod on a round meant to be weak against armor? Nonsensical. So I've reworked it into two unique rounds. The first serving a practical purpose and becoming an AP option when the crew typically begins seeing those options open up (such as x-ray lasers). The same can be said for nukies, who love AP options, but one focused on lasting wounds is handy too for keeping someone down. There isn't a milspec option; so for nukies, this isn't doing nearly as much upfront damage as buckshot or slugs. You buy this when you want someone not to be recovered with a LOT of medical attention. The second being more tongue in cheek, but also giving a surplus option for Bulldog shotguns, which I think are having ammunition problems even still. Surplus ammunition might slowly roll out for all the guns, but I'm mostly focusing on the ones that have some slight price disparity for total shots compared to other weapons. Also, shooting people full of plastic is kind of funny. ## Changelog 🆑 balance: Flechette has been reworked into an AP pellet round that embeds and wounds, but has less actual damage to buckshot. You can print it once Exotic Ammunition has been researched. Also available to Nuclear Operatives. add: Donk Co. 'Donk Spike' flechette rounds. No longer offered by Donk Co. It can sometimes shows up in trashbins and dumpsters. And operatives can buy it in bulk if they really feel like it. /🆑 --------- Co-authored-by: ATH1909 <42606352+ATH1909@users.noreply.github.com> Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com> |
||
|
|
cb1f692172 |
gives the smartgun aimbot (#89776)
## About The Pull Request The smartgun, instead of tracking targets if you click directly on them, will now track the closest target within 2 tiles of wherever you clicked if you don't click directly on someone. Also adds a reticle overlay that gets put over anyone targetted by the smartgun so you can know ahead of time that you're about to die. https://github.com/user-attachments/assets/0408132d-c02b-45fc-ad55-2fef0301b51b ## Why It's Good For The Game I tried to argue this is a good new player gun while making it's entire gimmick only work if you click directly on the spacemen. What kinda smartgun doesn't have aimbot built into it. ## Changelog 🆑 balance: The syndie smartgun has 2 tile aimbot now /🆑 |
||
|
|
a1b6bb48d9 |
Fixes prototype egun's electrodes instantly detaching (#89869)
## About The Pull Request Closes #89828 Gave it a bit of a leeway allowing it to stun the target for a bit, but not enough to fire another one (and you'll be able to fire at most 2 laser with click delays and passive drain from the taser) ## Changelog 🆑 fix: Fixed prototype egun's electrodes instantly detaching /🆑 |
||
|
|
57a01623a6 |
Adds a new syringe gun mode and improves foam darts. (#89510)
## About The Pull Request This PR implements multiple new features: Foam darts now can stick to people as long as their cap isn't removed. Riot foam darts have a chance to jostle when you move with one stuck inside of you, dealing a bit of stamina damage from the weight stuck to your limbs. Syringe guns received a second "low power" mode, toggleable with in-hand right click. In this mode, syringes fired will embed into their target and slowly leak their reagents instead of instantly delivering them. Thankfully, they can be plucked out pretty quickly. You can also insert syringes into uncapped (screwdriver-ed) foam darts (similarly to pens) to achieve the same result, allowing you to get a bootleg low-efficiency syringe gun. Additionally, I fixed/cleaned up some embedding issues/code which I found while coding this. ## Why It's Good For The Game This allows players to explore new funny interactions between items and chems, as we don't have a reliable slow release mechanism aside from IV drips currently. And foam darts embedding it just (mostly) harmless fluff, if someone figures out a way to cause havoc with it then I'll be very proud of them (someone totally will). ## Changelog 🆑 add: Foam darts now stick to people when they have their cap on, riot foam darts also can passively deal a bit of stamina damage when you move with one. add: Syringes can be inserted into foam darts, making them embed and slowly leak their reagents into their victim. add: Syringe guns can be toggled (with right click) between high power and low power modes, former being their normal functionality and latter making syringes embed and slowly leak their contents. fix: Fixed projectiles sometimes not embedding when they should've code: Cleaned embedding code up /🆑 |
||
|
|
8846ffe59e |
gives the smartgun aimbot (#89776)
## About The Pull Request The smartgun, instead of tracking targets if you click directly on them, will now track the closest target within 2 tiles of wherever you clicked if you don't click directly on someone. Also adds a reticle overlay that gets put over anyone targetted by the smartgun so you can know ahead of time that you're about to die. https://github.com/user-attachments/assets/0408132d-c02b-45fc-ad55-2fef0301b51b ## Why It's Good For The Game I tried to argue this is a good new player gun while making it's entire gimmick only work if you click directly on the spacemen. What kinda smartgun doesn't have aimbot built into it. ## Changelog 🆑 balance: The syndie smartgun has 2 tile aimbot now /🆑 |
||
|
|
04a47be609 |
Fixes prototype egun's electrodes instantly detaching (#89869)
## About The Pull Request Closes #89828 Gave it a bit of a leeway allowing it to stun the target for a bit, but not enough to fire another one (and you'll be able to fire at most 2 laser with click delays and passive drain from the taser) ## Changelog 🆑 fix: Fixed prototype egun's electrodes instantly detaching /🆑 |
||
|
|
7f15e11993 |
Adds a new syringe gun mode and improves foam darts. (#89510)
## About The Pull Request This PR implements multiple new features: Foam darts now can stick to people as long as their cap isn't removed. Riot foam darts have a chance to jostle when you move with one stuck inside of you, dealing a bit of stamina damage from the weight stuck to your limbs. Syringe guns received a second "low power" mode, toggleable with in-hand right click. In this mode, syringes fired will embed into their target and slowly leak their reagents instead of instantly delivering them. Thankfully, they can be plucked out pretty quickly. You can also insert syringes into uncapped (screwdriver-ed) foam darts (similarly to pens) to achieve the same result, allowing you to get a bootleg low-efficiency syringe gun. Additionally, I fixed/cleaned up some embedding issues/code which I found while coding this. ## Why It's Good For The Game This allows players to explore new funny interactions between items and chems, as we don't have a reliable slow release mechanism aside from IV drips currently. And foam darts embedding it just (mostly) harmless fluff, if someone figures out a way to cause havoc with it then I'll be very proud of them (someone totally will). ## Changelog 🆑 add: Foam darts now stick to people when they have their cap on, riot foam darts also can passively deal a bit of stamina damage when you move with one. add: Syringes can be inserted into foam darts, making them embed and slowly leak their reagents into their victim. add: Syringe guns can be toggled (with right click) between high power and low power modes, former being their normal functionality and latter making syringes embed and slowly leak their contents. fix: Fixed projectiles sometimes not embedding when they should've code: Cleaned embedding code up /🆑 |
||
|
|
b6b8306fda | Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-25-02a | ||
|
|
4c2a76ede3 |
Fix a large number of typos (#89254)
Fixes a very large number of typos. A few of these fixes also extend to variable names, but only the really egregious ones like "concious". |
||
|
|
85707b3459 | Cargo can source lethal shotgun shells at a premium via Imports. Rebalances shotgun shells. (#89125) | ||
|
|
42d80a5963 |
Fixes .357 Heartseeker not homing in on people (#88696)
Co-authored-by: Hatterhat <Hatterhat@users.noreply.github.com> |