mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-06-14 02:34:06 +01:00
ed94de4ddf7edad8694badefc577392e0f762bf5
2785 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
f5bfff758d |
[NO GBP] Fixes the venomous element for projectiles, invisible arrows and something off with envenomable casings. (#76565)
## About The Pull Request See #76551. The on hit effect component was treating the `hit_limb` arg of the projectile on_hit signals as if it were a bodypart item rather than a string. This wasn't my fault. Also, invisible arrows because I forgot to set up their definition of update_icon_state() and base icon state var. Lastly, the envenomable casing registering a signal on the wrong atom, and the arrow bullet subtype being defined twice. ## Why It's Good For The Game This will close #76551. ## Changelog 🆑 fix: Fixes venomous projectiles for real, and invisible arrow sprites. /🆑 |
||
|
|
e2de2046b5 |
Bibles, Lighters, and Cowboy Hats can block bullets (#76521)
## About The Pull Request If you are wearing a bible or lighter in your suit slot, or a cowboy hat on your head, there is a small (2%) chance that bullets (only bullets, not lasers) will hit them instead of you. This destroys lighters, removes the storage capacity of the bible, or sends the hat flying off your head. The Bounty Hunter's cowboy hat has a significantly higher chance to intercept bullets. ## Why It's Good For The Game Adds some fun flavour to these items. ## Changelog 🆑 add: A bible or lighter in your suit slot, or cowboy hat on your head will occasionally intercept a bullet. /🆑 |
||
|
|
a39be6dbc2 |
Fixes empty casings being incorrectly replaced by a casing in guns with internal magazines (#76323)
## About The Pull Request <details><summary>What?</summary> ### e.g. double-barrel shotgun spent shell inserted -> no chambered shell, all is fine -> spent shell goes into the shotgun's mag -> spent shell gets added to the mag -> gun chambers a round from the mag - it's the newly added spent shell 2nd spent shell inserted -> chambered shell present, dump it out (but forget to remove it from the mag) -> 2nd spent shell goes into the shotgun's mag -> gun chambers a round from the mag - it's the last shell to be added to the mag - it's the 2nd shell dump the gun's mag -> mag still has the 1st shell -> dumps the 2nd shell and the 1st one gets moved to the dump tile relevant code: https://github.com/tgstation/tgstation/blob/b832e2f47765ea321457221cc4e2a8ea64137555/code/modules/projectiles/guns/ballistic.dm#L369-L380 https://github.com/tgstation/tgstation/blob/b832e2f47765ea321457221cc4e2a8ea64137555/code/modules/projectiles/boxes_magazines/_box_magazine.dm#L128-L156 https://github.com/tgstation/tgstation/blob/b832e2f47765ea321457221cc4e2a8ea64137555/code/modules/projectiles/boxes_magazines/_box_magazine.dm#L101-L110 </details> so we just remove the dumped shell from the mag as well? it works but i think i'm maybe missing something? ## Why It's Good For The Game Fixes #54771 ## Changelog 🆑 fix: fixed shotguns not clearing their "mag" correctly /🆑 |
||
|
|
304ccb1716 |
Adds 50 armor penetration to neurotoxin spit (#76420)
## About The Pull Request Someone noted in an issue report that virologists could tank like 7 of these without breaking a sweat, that's a little goofy. This knocks it down to 4. You're still getting some protection by having extra gear on, but you're not immune to it. Fixes #76389 ## Why It's Good For The Game Xenos should be dangerous to most of the crew without significant protection. I argue that, while a labcoat is meant to protect from nasty fluids, it shouldn't completely negate them, especially if a Sentinel has saved up a good chunk of plasma to throw at you. ## Changelog 🆑 Vekter balance: Increased armor penetration on xenos' neurotoxin spit. Well-protected crew members should still take more than a few hits to down but shouldn't be immune to it. /🆑 |
||
|
|
b9fa1bc8f4 |
The Laser Musket (2023) (Settlement Helper Edition) (#76231)
## About The Pull Request This adds a craftable laser musket to the game. It's slow and unwieldy, but consistent! I'd be happy to tweak the numbers if it's too good/bad. This PR also adds an independent militia ERT, who travels the spinward sector to help defend stations! TO DO LIST: - [x] Finish worn sprites - [x] Add a crafting recipe on par with the pipegun - [x] Add bayonets - [x] Separate charging into two stages and REDO THE AUDIO AAAA - [x] Clean up code (Needs review, totally) Scrapped: - Possibly add overcharge mechanic (This is just beyond my skill level for now) - Find a unique sound for the weapon firing (We have a unique projectile, and I can't a sound that fits more than the laser gun one)      Inhands by RedSentry27 Suit sprite by Kinnebian Prime Laser Musket sprites by RedSentry27 Balance Considerations (ew): 25 damage (30 on prime) Normal wound 40 Stamina damage (45 on prime) Weak to armour (prime not weak to armor) 2 second charge time, needs to be charged twice No overcharge Requires two hands to hold (like a chainsaw) Crafting Recipe: One rifle stock Fifteen Cable Coils Four Iron Rods One micro laser One capacitor One pair of prescription glasses One drinking glass Craft for 10 seconds with a wirecutter and screwdriver Prime crafting recipe: (REQUIRES READING MAINTENANCE LOOT: "journal of a space ranger") One laser musket Fifteen cable coils Five silver One water recycler Fifteen units of nuka cola Craft for 30 seconds with a screwdriver while wearing cowboy boots and a cowboy hat ## Why It's Good For The Game The idea of assistants and revs forming firing lines in the halls to shoot eachother sounds hilarious. Besides, we need a parallel to the pipegun, and this is the funniest way to do so. ## Changelog 🆑 Cheshify, Kinnebian, and RedSentry27 add: Maintenance engineers have sent out blueprints across the sector for a new laser musket. admin: A new energy-gun toting ERT is available to send to the crew. --------- Co-authored-by: carlarctg <53100513+carlarctg@users.noreply.github.com> |
||
|
|
8af20d1577 |
Fixes some inconsistencies with the chaplain revolver and gets rid of a weird ammo define (#76237)
## About The Pull Request Firstly, I gave the revolver a new sprite. I mean, this isn't so much of an improvement as it is a reference I wanted to go with, so if people go 'no not a new sprite' I don't mind reverting. What's the reference? Check the new name I added as a potential name roll.  Secondly; I applied to the gun itself revenant bane, the ability to clear runes, and proper magic immunity as a full null rod would enable. This last bit was a deliberate design choice, but the divine bow has full magic protection, so I think this is now more of a consistency consideration compared to the divine bow. Thirdly, the revolver is a .38 revolver, HOWEVER, it uses a damage multiplier to bring it back to the damage it did originally. It also cannot be reloaded without the prayer action. No cheating. Effectively, this is the same mechanically as it was before. It rarely does a funny crit fanfare. This does nothing mechanically, I just thought it was a funny nod to the sprite's reference (and I guess another game that the crit fanfare is based on). Borrowed parts of the code and sprite from this April Fool's pr by Wallemations > https://github.com/tgstation/tgstation/pull/74425 ## Why It's Good For The Game I think this might have been a little forgotten since implementation now that we have another projectile weapon for the chaplain. So I'm brushing it up a bit. ## Changelog 🆑 fix: Makes the chaplain's revolver consistent with its immediate sibling, the Divine Bow, by giving it similar statistics. code: Makes the chaplain revolver a .38 but prevents it from being loaded without using the special prayer action. Also applies a damage multiplier to keep it at the original 18 force. Mechanically, no different. sprite: Gives the chaplain revolver a new sprite. code: Removes an unnecessary admin log when removing runes. /🆑 |
||
|
|
6b007f758b |
Replaces ammo_casing/caseless and bullet/reusable with elements. (#76335)
The reusable and caseless types only purposes are the behaviors of deleting the casing when fired and spawning a new object when the projectile ultimately reaches its maximum range or hits a target, both of which are easily "elementizable". Also, I don't like those barely filled sub-folders in the projectile module, and the fact we've divergent reusable and single use arrow types. |
||
|
|
7941de57ab |
reduces the Regal Condor's base spread from 10 to 0, mildly revises its desc (#76161)
## About The Pull Request uh. tin? regal condor's spread override got dropped so it should just be getting the base gun spread of 0. ## Why It's Good For The Game So, quick review on what you have to do to make the Regal Condor: - emag a cargo console (4 tc investment) - drum up 20k credits (or 22k if you're private-ordering it) - read the memoirs to unlock the recipe and then, the recipe for the gun itself involves stealing the captain's crown and getting your grubby mitts on: - a makarov (7 tc), - 3 raw telecrystals (3 tc) - a tactical toolbox (1 TC/spaceloot) - a syndicate mask (contraband crates/spaceloot) The gun itself does not come with a magazine; magazines are a separate recipe and, as part of the recipe, require 2 raw TC each. If you manage to put it together, I think you should feel confident in your gun's ability to hit where you click, and not have to worry about random projectile deviation shooting a wall or a tank, instead of the security officer who probably wants to kick you in the nuts for emagging a great many things and/or gathering the components to make a really spicy handgun. ## Changelog 🆑 balance: The Regal Condor's base spread has been reduced to 0, like damn near every other gun that exists. /🆑 Co-authored-by: Hatterhat <Hatterhat@users.noreply.github.com> |
||
|
|
8629482d3f | updates mosin mob sprite (#76325) | ||
|
|
daa33d89fe |
Xenomorph/Alien Rework 2023: Part 1 (#75286)
## About The Pull Request Alternative to #75277 Kept you waiting, huh? This PR is the first part of a Xenomorph rework which seeks to make the big lugs more balanced and up to date with /tg/'s current design. This mainly involves curtailing xenomorph's infamous hardstuns into more interactive forms of combat, while also giving some buffs to the xenomorph's more unique abilities in order to keep them threatening. Part 1 will focus on simple number changes and some simple mechanic changes. In the future, changes will be made to endgame involving xenomorphs, along with changes to other facets of Xenomorphs. Highly based off of #55937. Changes: - Xenomorph disarm has been completely reworked. While a disarm will attempt to, well, disarm, a human opponent should they be holding something, it will no longer immediately hardstun targets when they aren't. Instead, the xenomorph will shove the target several tiles back and inflict 35 stamina damage. If the target slams into a wall, this will also come with the added effect of knocking them down. If a human is incapacitated, however, right click will slam them into the ground, which paralyzes them for a lengthy 5 seconds (which is ultimately half the time xenos could stun you for before), allowing for safe transport back to the nest as long as you keep them close. - Humans can now shove xenomorphs. Due to being the superior predator, however, you can't knock down xenomorphs from shoving. You can slow them for a little bit akin to humans though. - Neurotoxin no longer is a hardstun. Instead, it deals 50 stamina damage on contact. It is still resisted by BIO armor. **HUNTER:** - Speed reduced from -1 to -0.3. - Pounce speed is twice as fast as before (1 to 2) - Hardstun time on pounce reduced from 10 seconds to 5 seconds. Hunters being insanely fast has been a major balance-ruining factor of xenomorphs for many years now. These buggers could practically ambush anyone, hardstun them immediately, and then leave before anyone could do anything. Now, with their speed nerfed and in combination with the xeno shove changes, hunters will need to spend more time to down a target. Their pounce was practically useless, so its been sped up in order to make it more practical to use. **SENTINEL** - Speed reduced from 0 to 0.2 - Cloak alpha reduced from 0.75 to 0.25 (you're more hidden now) Sentinels receive a large nerf in regards to their spit, but their before useless cloaking ability has been greatly improved upon as compensation. They now serve better as defenders and ranged ambushers. **XENOMORPH DRONE** - No changes As in the original PR, drones are perfeclty balanced in my eyes, so no changes were required. **XENOMORPH PRAETORIAN** - Speed increased from 1 to 0.5 - No changes Praetorians get affected by the nerfs of the other xeno abilities, but now they're a bit faster in order to close the gap to use their abilities. **XENOMORPH QUEEN** - Speed increased from 3 to 2 - Health increased from 400 to 500 - Damage increased from 20 to 50 Xenomorph queens have been sped up and made more tanky and lethal in close-range combat. Fighting this beast up-close should be a death sentence to almost anything else in the game. Speed increases will help her re-position and close the gap on potential prey. **OTHER CHANGES** - Fixed a bug where simplemobs didn't actually use xenomorph's damage values when they were attacked by them. ## Why It's Good For The Game Xenomorphs are old, and haven't been updated for quite a long time. This has left them as sources of a bunch of hardstuns which made counterplay from a modern spaceman extremely difficult. With these changes, fighting xenomorphs is more interactive and should end up being more enjoyable for both crew and xenos. Buffs were also given out to incentivize usage of xenomorph's unique abilities as opposed to the standard disarm spam which was most effective for them until now. ## Changelog 🆑 balance: Xenos have been rebalanced, removing their hardstuns on their disarm and neurotoxin, along with a slew of other changes. Xenos have received buffs to their more unique abilities in return. fix: Fixed simplemobs ignoring xenomorph's melee damage values when being attacked by them. /🆑 |
||
|
|
1436b3f63a |
Fixes the envenomable casing element and arrows. (#76219)
## About The Pull Request Both the element and the object were trying to add an element as a component, which to my amusement, just silently fails without throwing any runtime, crash or stack trace (stuff for another PR, I suppose). ## Why It's Good For The Game This will fix #75448. ## Changelog 🆑 fix: arrows can now be actually coated with reagents. /🆑 |
||
|
|
024c1c331c |
Fix guns without magazines loaded making no fire sounds (#76196)
## About The Pull Request Runtimed from `90 / null` here. What's the point in a `?` sanity check if you don't default it to any values? Come on guys ## Why It's Good For The Game Bugfix ## Changelog 🆑 Melbert fix: Fix shooting guns without a magazine loaded making no fire sound effect /🆑 |
||
|
|
38983ee289 |
Fix rockets embedding in people (#76136)
## About The Pull Request Rockets can't embed anymore and are now blunt objects (so they cause blunt wounds instead) This is what could happen before:  ## Why It's Good For The Game I've been told that the embedding is not intentional, so this PR fixes an oversight ## Changelog 🆑 fix: Rockets can no longer embed in people and cause blunt wounds instead of piercing /🆑 |
||
|
|
8788e48378 |
Shuttle events (#76008)
## About The Pull Request https://github.com/tgstation/tgstation/assets/7501474/a2d83ce8-eba1-42d9-a1f8-9d73f7c40b21 Adds shuttle events! Stuff can now start to happen outside the shuttle, either benign or spicy (but usually just fun to watch)! ## Why It's Good For The Game The shuttle escape sequence is an important part of the game, uniting about every player surviving player. Recently, #71906 has made the escape sequence more forgiving as well as more interesting by conditionally doubling the playing field. The area outside the shuttle is still mostly empty though, except for the few people being spaced, daredevils and the occasional epic space fight. This PR adds adds some space events to spice up the outside of the shuttle! This both gives people something too look at, making the escape sequence feel less static and more lively, as well as give people a reason to go outside and get the full experience of ~being decapitated by a meteor~ swimming with the fishes! <details> <summary>Shuttle Events</summary> **Friendly carp swarm** Spawns a group of carp that flies past the shuttle, completely friendly unless provoked. **Friendly meteors** Spawns a lot of strong meteors, but they all miss the shuttle. Completely safe as long as you don't go EVA **Maintenance debris** Picks random stuff from the maintenance spawn pool and throws it at the shuttle. Completely benign, unless you get hit in the head by a toolbox. Could get you some cool stuff though! **Dust storm** Spawns a bunch of dust meteors. Has a rare chance to hit the shuttle, doing minimal damage but can damage windows and might need inflight maintenance **Alien queen** One in every 250 escapes. Spawns a player controlled alien queen and a ripley mech. RIP AND TEAR!! Really not that dangerous when you realize the entire crew is on the shuttle and the queen is fat as fuck, but can still be fun to throw people around a bit before being torn to shreds. **ANGRY CARP** Once in every 500 escapes. Spawns 12 normal carp and 3 big carps, who may just decide to go through the shuttle or try and bust through the window if you look at them wrong. Somewhat dangerous, you could stay away from the windows and try to hide, or more likely shoot at them and weld the windows **Fake TTV** Lol **Italian Storm** Once in every 2000 rounds. Throws pasta, pizza and meatballs at the shuttle. Definitely not me going off the rails with a testing event **Player controlled carp trio** Once in every 100 escapes. Spawns three player controlled carp to harass the shuttle. May rarely be a magicarp, megacarp or chaos carp. I can't honestly see them do anything other than be annoying for 3 seconds and die There are some other admin only ones: a group of passive carps going directly through the shuttle and just being little shits, and a magic carp swarm </details> Events are selected seperately, there isn't a crazy weighting system, each just has a chance to run, and multiple could run at once. They also don't immediately trigger, so people can get settled a bit, and to make sure just waiting out the more dangerous ones is still a valid strategy. ## Changelog 🆑 add: Adds shuttle events! If shuttle escapes weren't exciting before (doubtful), they definitely are now! I'm joking it's mostly an atmosphere thing. admin: Adds an admin panel to interact with shuttle events, under the Events tab: Change Shuttle Events fix: Objects spawned in hyperspace will properly catch hyperspace drift /🆑 There's a few things I'd like to do later (another PR) (honestly anyone can do them because I suck at follow-ups), because this is too big as is: - Hijack triggered shuttle events - More events (got a lot of cool suggestions, but I'm putting most of them on hold) - Maybe stration announcements if some more dangerous ones get added - Structures appearing next to the escape shuttle??? --------- Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com> |
||
|
|
22799fcb89 |
Refactors the worst list ever, Stun Absorptions, into status effects + makes status flags more accurate (making certain mobs more vulnerable to incapacitations?) (#76000)
## About The Pull Request - Refactors the stun absorption list into a status effect - Does a fair bit of cleanup around stun code Weird thing involved in this. Check out this define. `IS_STUN_IMMUNE(source, ignore_canstun) ((source.status_flags & GODMODE) || (!ignore_canstun && (!(source.status_flags & CANKNOCKDOWN) || HAS_TRAIT(source, TRAIT_STUNIMMUNE))))` Notice anything odd about it? It only checks for `CANKNOCKDOWN`. What does this mean? Well, *every single* one of the stun procs used this macro for checking stun immunity. Which means every method of stun checked the `CANKNOCKDOWN`. This means that, say you have a mob which has `CANSTUN` but not `CANKNOCKDOWN`. Intuitively this means that the mob cannot be knocked down, but can be stunned. But instead, this means the mob can't be stunned either. This doesn't affect humans, they have all the status flags, but it does affect some other mobs. Alien adults (not queens) have `CANUNCONSCIOUS|CANPUSH`. Before, they didn't have `CANKNOCKDOWN`, so they were fully immune to stuns and sleeps. But now, they can be knocked unconscious. However, overall it doesn't change much, as most mobs that flipped off `CANKNOCKDOWN` flipped off the others too. For consistency though it makes sense for these flags to work as they imply. - `incapacitate` didn't have a signal, now it does ## Why It's Good For The Game More consistent, better code? I may use this in the future. ## Changelog 🆑 Melbert refactor: Refactored Stun Absorptions (Bastard Sword, His Grace) refactor: Refactored Stun Immunity. Note this means that some mobs which, prior, were immune to all forms of incapacitation are now vulnerable to some. Notably, adult non-queen xenomorphs are now vulnerable to falling unconscious. /🆑 |
||
|
|
2bb4dfe76c |
Expanding the Experimental MODsuit Bepis Node with three new modules. (#75801)
## About The Pull Request So, I've had this idea to make a contribution to the Bepis feature with some modsuit stuff. The gimmicky stuff is ok and a good way to even out the better content since it has game of chance design it has (you can find those disks in space anyway so...). However, the Experimental MODsuit node feels very underwhelming right now, compared to how big that feature is. This PR adds three MOD modules to the Experimental MODsuit node, plus two more: - Magneto Charger: While the Modsuit is activated, each step the user takes will charge the installed power cell by a tiny bit, enough to sustain a standard modsuit of generic slow speed with only a few, easy modules installed. It won't work in zero G, while flying, pulled by someone else, on a conveyor belt, riding a vehicle or crawling on the floor, though. - Recycler: It collects (most) garbage and casings off the ground and recycles them into material sheets that can be dispensed on an adjacent location or storage with with Middle Mouse Button. Doesn't clean debris, and scuffed because most trash doesn't yield material anyway. - - It also has two subtypes, unbound from the node: one that dispenses riot foam darts and can be found on the black market, and another that dispenses the more innocuous foam darts, rarely found in maints. - Shooting Assistant: A configurable module. On Stormtrooper mode, it will give the user a faster fire rate (the double tap trait) at the cost of accuracy. On Sharpshooter mode, it will improve the user accuracy and make their shots ricochet against walls at least once (if the hit atom allows that, that is, e.g. lasers don't ricochet against iron walls), at the cost of movement speed. Both modes also prevent the user from dual wielding guns. To make the Stormtrooper mode stackable with the poor aim quirk and refrain from making a new trait for the sharpshooter mode, the gun spread code in gun.dm has also received a little refactor and cleanup. Also, it's been tested. ## Why It's Good For The Game The Experimental MODsuit node is quite shabby and could use something extra to make it more appealing to MODsuit enjoyers. Also doubles down as a small addition to the black market and maint loot, and code cleanup, since gun code gives off some garbled vibes. ## Changelog 🆑 add: Expanded the Experimental MODsuit Bepis node with three new modules: Magneto Charger, Recycler and Shooting Assistant. add: Added a Riot Foam Recycler module to the black market, as well a more innocuous version as maint loot. /🆑 |
||
|
|
ed0ac95c98 | Fixes various bow issues and includes new sounds for the bow (#75828) | ||
|
|
ae5a4f955d |
Pulls apart the vestiges of components still hanging onto signals (#75914)
## About The Pull Request Signals were initially only usable with component listeners, which while no longer the case has lead to outdated documentation, names, and a similar location in code. This pr pulls the two apart. Partially because mso thinks we should, but also because they really aren't directly linked anymore, and having them in this midstate just confuses people. [Renames comp_lookup to listen_lookup, since that's what it does](https://github.com/tgstation/tgstation/commit/102b79694fa8eb57ecf7b36032616a9e368ccced) [Moves signal procs over to their own file](https://github.com/tgstation/tgstation/commit/33d07d01fd336726b4f6f6f1b61bb0b3f11a00dc) [Renames the PREQDELETING and QDELETING comsigs to drop the parent bit since they can hook to more then just comps now](https://github.com/tgstation/tgstation/commit/335ea4ad081ec63c42cfa05856e582cca833af6e) [Does something similar to the attackby comsigs (PARENT -> ATOM)](https://github.com/tgstation/tgstation/commit/210e57051df63f88dac3dd83321236da825aae5e) [And finally passes over the examine signals](https://github.com/tgstation/tgstation/commit/65917658fb8a1e7d28ae23c9437a583d646f0302) ## Why It's Good For The Game Code makes more sense, things are better teased apart, s just good imo ## Changelog 🆑 refactor: Pulled apart the last vestiges of names/docs directly linking signals to components /🆑 |
||
|
|
f15a971193 |
Fixes cases where doors do not bolt correctly (#75882)
## About The Pull Request Some things, like door control buttons, set locked directly instead of calling lock() or unlock(). This fixes that, which should make sound effects play. Also annotates some code where we *don't* want that to happen with an explanation of why we just set locked directly. ## Why It's Good For The Game Fixes Skyrat-SS13/Skyrat-tg/issues/21510, which also applies to upstream. |
||
|
|
88b898dffd |
Stops shields getting broken by pillows and disablers. (#75759)
## About The Pull Request See the title. Doing so by adding a new arg for damage type to `check_shields()` and `hit_reaction()`. The other way would had involved a couple istype checks for item or projectile damage type, but this is a longer term solution and can tackle more than just that. ## Why It's Good For The Game Fixes #74876. ## Changelog 🆑 fix: Stops shields getting broken by pillows and disablers. /🆑 |
||
|
|
e5d3045847 |
fix: Gun overlays are now one with gun's icon (#75773)
<!-- Write **BELOW** The Headers and **ABOVE** The comments else it may not be viewable. --> <!-- You can view Contributing.MD for a detailed description of the pull request process. --> ## About The Pull Request <!-- Describe The Pull Request. Please be sure every change is documented or this can delay review and even discourage maintainers from merging your PR! --> Adds `KEEP_TOGETHER` flag to the gun's `appearance_flags`, so overlays are now one with gun's icon. Before:   After:   ## Why It's Good For The Game <!-- Argue for the merits of your changes and how they benefit the game, especially if they are controversial and/or far reaching. If you can't actually explain WHY what you are doing will improve the game, then it probably isn't good for the game in the first place. --> Better visuals. Also required, when guns are forced to be placed in 90 degree ## Changelog <!-- If your PR modifies aspects of the game that can be concretely observed by players or admins you should add a changelog. If your change does NOT meet this description, remove this section. Be sure to properly mark your PRs to prevent unnecessary GBP loss. You can read up on GBP and it's effects on PRs in the tgstation guides for contributors. Please note that maintainers freely reserve the right to remove and add tags should they deem it appropriate. You can attempt to finagle the system all you want, but it's best to shoot for clear communication right off the bat. --> 🆑 fix: Gun overlays (energy ammo counter, flashlights, bayonette, etc) are now one with gun's icon, which makes said overlays to transform correctly with gun's transform (ie, throwing) /🆑 <!-- Both 🆑's are required for the changelog to work! You can put your name to the right of the first 🆑 if you want to overwrite your GitHub username as author ingame. --> <!-- You can use multiple of the same prefix (they're only used for the icon ingame) and delete the unneeded ones. Despite some of the tags, changelogs should generally represent how a player might be affected by the changes rather than a summary of the PR's contents. --> |
||
|
|
4822bbd6a4 |
Adds a proper name and description for the base variant bow (#75736)
## About The Pull Request Fixes #75711. Someone forgot to add a name and description for the base bow, so it uses the default projectile/gun one. ## Why It's Good For The Game I'm not certain you're intended to get this version of the bow, but there's literally no reason to not have it look normal if someone gets it. ## Changelog 🆑 fix: Added a name and description for the basic version of the bow. /🆑 |
||
|
|
8414a7463e |
Fixes some other harddels (#75730)
## About The Pull Request Cannot bother to atomize the rest of these - Chem grenades didn't clean up their wires or beakers - Implant cases didn't clean up their implants - ammo boxes didn't clean up their ammo    |
||
|
|
2922d36500 |
Refactors for material container, ammo box & recycler (#75422)
**1. Material Container Refactors** a. `/datum/component/material_container/proc/insert_item()` - Will now do stack spliting i.e. it will consume as many sheets from a stack as possible and leave out the rest, It was moved from a player interaction feature in `user_insert()` to this low level allowing many things to take advantage of it - Will now delete the item for you if it could salvage any materials from it, you don't have to do it explicitly anymore if insertion was successfull (i.e. this proc returns an non zero value) If you inserted a stack and not all of it's sheets were inserted from the above point then you still have to check it explicitly - Will now invoke `after_insert` if any materials were salvaged b. `datum/component/material_container/proc/user_insert() ` - Will now split the stack by the requested amount making precise insertion work again & Fixes #72288 - will now consume all contents inside of the object reccursively, this means items like ammo boxes will no longer have to adjust their custom materials based on how much ammo they contain because `user_insert()` will loop through all its contents and salvage the metal of every bullet inside the box contents so this means https://github.com/tgstation/tgstation/blob/9686971c76fb6300939c9c191c635d2a852a143c/code/modules/projectiles/boxes_magazines/_box_magazine.dm#L206 has been removed. **The Problem with this proc** take `/obj/item/ammo_box/foambox/riot` for example. it has 40 darts each having 1125 worth of iron, this proc will add the total iron of all the bullets to the box custom material so the box custom materials would become `5000(base iron of box. see the definition of /obj/item/ammo_box/foambox/riot) + 45000(40 bullets each having 1125 worth of iron) = 50000 iron` What happens when you throw this ammo box in an recycler? The recycler will recycle this box(Now 50000 worth of iron) AND the iron of each of it's 40 bullets thus yielding `50000(iron from box because of update_custom_materials()) + 45000(40 bullets each having 1125 worth of iron) = 95000 iron` ` because of this single proc we got `95000 - 50000 = 45000 extra iron` from thin air **The Solution?** Remove this proc and set a constant custom material value for the ammo box(it's now 5000 computed see code) AND allow the material container to loop through every bullet in the box and salvage iron from them. This would yield `5000(base iron of box. see the definition of /obj/item/ammo_box/foambox/riot) + 45000(40 bullets each having 1125 worth of iron) = 50000 iron` From both box & bullets combined and not just from the box alone Fixes #43570 Fixes #57548 This also allows you to do cool stuff like fill your bag with iron, glass, whatever and dump them in the autolathe/ore silo by attacking the machine with your bag rather than pulling out & inserting each item individually so hey convinience **2. Recycler patches** - Recycler will stop consuming items when it runs out of power mid recycling(which can happen if it recycles a large amount of items). It used to previously run through the list of items without breaking so even when power was lost, it still did it's job - Recycler will now Properly recycle all the contents inside an atom. **The Problem** Say we have 2 Items - Backpack - Glass sheet inside Backpack If we process the items in the following order while deleting each item that is processed first "Backpack" then "Glass Sheet" then when "Backpack" is fully recycled and "Deleted" since the "Glass Sheet" is inside the "Backpack" it get's deleted as well, so when we actually try to recycle the "Glass Sheet" next, nothing happens because it was deleted when we deleted the "Backpack". **The Solution** Recycle the items in the reverse order first recycle the "Glass Sheet" delete it & then the "Back Pack" so we don't deal with deleted items. So you should see more materials come out when you put stuff inside storage mediums & throw them in the recycler - Recycler will consume only half the power when it's deleting items that can't be recycled(no material was salvaged). just for convinience |
||
|
|
899c46a711 |
Changes gun flipping to use attack self secondary, moves it to base gun level (#75680)
## About The Pull Request
- Gun flipping is now done via attack self secondary (right click it
when it's in your active hand) rather than attack self ("use" hotkey or
left clicking it when in active hand)
- Moves gun flipping to `/gun` level
## Why It's Good For The Game
- Gun flipping has historically had very bad UX, as most ballistic guns
used attack self for some function - loading the gun, ejecting spent
rounds, racking the gun, etc. By putting it on attack self secondary, it
makes it a bit more of a deliberate thing and keeps it out of the way of
expected behavior
- TLDR: Makes it much less likely you end up spinning your shotgun like
a dingus in the middle of a firefight instead of racking the thing.
- Also makes it less likely you dump your entire mag trying to show off.
- Putting it on the base level lets me spin lasguns and disablers around
which I've always wanted to. It also means you can spin stuff like wands
and bows but I'm not too plussed about that. It's just funny
## Changelog
🆑 Melbert
qol: Gun Flipping is now done by right clicking the gun when it's in
your active hand ("use secondary"), meaning you should be less likely to
accidentally spin your gun instead of ejecting rounds / racking / etc.
qol: You can gun flip all guns, instead of just ballistics. This
includes stuff like wands.
/🆑
|
||
|
|
951f341c63 |
Weapon magazine ejection sound implementation (#75672)
## About The Pull Request Implements (possibly re-implements if it was used some time ago) magazine ejection sounds for firearms. ## Why It's Good For The Game Better weapon feedback as you can distinguish whether you've inserted a mag or not. ## Changelog 🆑 Stalkeros fix: Adds or possibly re-adds firearm magazine ejection sounds. /🆑 |
||
|
|
6e5ae1cc24 |
Fixing a few minor maintenance hindrances. (#75594)
## About The Pull Request See the title and relative issue reports mentioned in the section below. ## Why It's Good For The Game Closes #75461, closes #75462, closes #75467. ## Changelog 🆑 fix: Capturing CTF control points no longer requires the active hand to be empty. /🆑 |
||
|
|
033e1b48e4 |
Fix SHOULD_NOT_SLEEP hit in borg adjustable tracer bolts (#75512)
See #75232 |
||
|
|
642722affa |
Adds a blacklist for putting guns in turrets (#75263)
## About The Pull Request Fixes #75197 Adds a global list of gun types banned from being added to turrets. Adds dueling pistols to the banned list as they can freely round remove people when in turrets without the usual restrictions. ## Why It's Good For The Game Instakill turrets are an undesirable outcome. ## Changelog 🆑 fix: Dueling pistols can no longer be fitted in turrets to instantly kill people. /🆑 |
||
|
|
0bace67e62 |
Some Bolt-Action Fixes (sniper rifle mag manip independent of bolt, among other things) (#75079)
- because pipeguns can no longer misfire, removes the code relevant to cleaning them with a cloth - the above makes it so that you can insert/remove a sniper rifle's magazine regardless of bolt open/close status, which is neat - also nudges some code around so that affixing a bayonet or whacking your gun with any item no longer spams it with "can't jam!" or "bolt closed!" ## Why It's Good For The Game less random irrelevant popups, and also the magazine on sniper rifles thing just kind of irked me |
||
|
|
a94a61c6a0 |
Fixes runtime when qdel'ing self-recharging guns with bayonets attached (#75406)
```
[00:29:34] Runtime in energy.dm, line 161: cannot read from list
proc name: can shoot (/obj/item/gun/energy/can_shoot)
src: the proto-kinetic accelerator (/obj/item/gun/energy/recharge/kinetic_accelerator)
src.loc: the plating (81,77,2) (/turf/open/floor/plating)
call stack:
the proto-kinetic accelerator (/obj/item/gun/energy/recharge/kinetic_accelerator): can shoot()
the proto-kinetic accelerator (/obj/item/gun/energy/recharge/kinetic_accelerator): update overlays(16777215)
the proto-kinetic accelerator (/obj/item/gun/energy/recharge/kinetic_accelerator): update icon(16777215)
the proto-kinetic accelerator (/obj/item/gun/energy/recharge/kinetic_accelerator): update appearance(16777215)
the proto-kinetic accelerator (/obj/item/gun/energy/recharge/kinetic_accelerator): clear bayonet()
the proto-kinetic accelerator (/obj/item/gun/energy/recharge/kinetic_accelerator): handle atom del(the survival knife (/obj/item/knife/combat/survival))
the proto-kinetic accelerator (/obj/item/gun/energy/recharge/kinetic_accelerator): handle atom del(the survival knife (/obj/item/knife/combat/survival))
the survival knife (/obj/item/knife/combat/survival): Destroy(0)
the survival knife (/obj/item/knife/combat/survival): Destroy(0)
the survival knife (/obj/item/knife/combat/survival): Destroy(0)
...
the proto-kinetic accelerator (/obj/item/gun/energy/recharge/kinetic_accelerator): deconstruct(0)
the proto-kinetic accelerator (/obj/item/gun/energy/recharge/kinetic_accelerator): atom destruction("melee")
the proto-kinetic accelerator (/obj/item/gun/energy/recharge/kinetic_accelerator): blob act(the normal blob (/obj/structure/blob/normal))
the normal blob (/obj/structure/blob/normal): ConsumeTile()
the normal blob (/obj/structure/blob/normal): Be Pulsed()
the blobola (/obj/structure/blob/special/core): pulse area(the blobola overmind (/mob/camera/blob), 12, 4, 3)
Objects (/datum/controller/subsystem/processing/obj): fire(1)
Objects (/datum/controller/subsystem/processing/obj): ignite(1)
Master (/datum/controller/master): Loop(2)
Master (/datum/controller/master): StartProcessing(0)
```
🆑 ShizCalev
fix: Fixed a runtime which occured when a self-recharging gun (ie
proto-kinetic accelerator) with a bayonet attached was deleted.
/🆑
|
||
|
|
dbcc4a63f5 |
FIXES RUNTIME CAUSING GUNS WITHOUT A MAGAZINE INSERTED TO NOT FIRE (#75407)
Caused by #75058 🆑 ShizCalev fix: Guns without magazines inserted can now fire again! /🆑 |
||
|
|
27650dac1d |
Prevents desert eagles from loading sniper rounds (and vice versa) (#75382)
## About The Pull Request This splits CALIBER_50 into CALIBER_50BMG and CALIBER_50AE, setting the sniper rifle to use the former and the deagle to use the latter. ## Why It's Good For The Game Prevents each of these weapons from loading calibers that they are not intended to. Recorded from yogs:  ## Changelog 🆑 fix: Desert Eagles can no longer load .50 BMG sniper rifle rounds and vice versa. /🆑 |
||
|
|
a4822c165b |
Now blocking is more noticeable! New blocking and parrying sounds (#74998)
## About The Pull Request Now whenever an attack is blocked, the sound will play and deflection with the item now plays sound too: https://github.com/tgstation/tgstation/assets/42353186/1a0cc5b7-f2af-4d72-88d7-57cc11f5baa3 The parry.ogg was updated to a better-sounding one https://github.com/tgstation/tgstation/assets/42353186/5ffc53d8-0b3c-4e6b-9256-b7b9735918bc Every item now has a "block_sound" that can be set, it determines what sound is played when you block an attack with it. Cult items no longer have their own way of fuckery to play parry sounds, now they use this system as well. Now shield bash sound is 80% smaller after cutting out all of its noise and silence. ## Why It's Good For The Game Adds feedback on whether the attack was blocked or not, signalling both to the attacker and defender that it didn't go through even if the animation played, which is a great QoL. Same with the deflection sound (although deflection is still pretty visible, the sound would not hurt) New sounds add more flavour to the weapons, especially the energy sword, giving it even more badassery. Cutting down the noise from the shield bash sound has made it better to listen and saved some kilobytes of information. And making every item use the universal system for blocking sounds, removing cultist items' own code for playing parrying sounds. ## Changelog 🆑 DrDiasyl aka DrTuxedo#0931 qol: Now blocking an attack will play a sound and display a spark effect, giving back feedback sound: parry.ogg was updated to a better-sounding version sound: shieldbash.ogg no longer has noise and unnecessary silence sound: New block_shield.ogg and block_blade.ogg for shields and energy swords code: Cultists items no longer have their own code for playing parrying sounds /🆑 --------- Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com> |
||
|
|
7317025857 |
Buffs Lasers (#75329)
## About The Pull Request This increases laser wound chance, increases the damage and also makes them use less energy. ## Why It's Good For The Game Lasers cannot reload so they're not as convenient as a gun, so this will maybe make them more cool, honestly I just want to try this to see what happens. ## Changelog 🆑 oranges balance: increased laser damage, decreased energy cost and increased wound chance /🆑 |
||
|
|
2068ea9ab5 |
Crate, Closet Refactors & Access Secured Stuff (#74754)
## About The Pull Request This PR is actually 2 parts, one that fixes runtimes with crates & the other that allows secured closets to be crafted along with a secured suit storage unit **Crate Fixes** Fixes #74708 The problem starts here https://github.com/tgstation/tgstation/blob/f1178342084bf89897a46f6ce9dc849233bed21b/code/game/objects/structures/crates_lockers/crates.dm#L31-L34 Not only does this if condition look ugly but it's highly error prone because one single call to `update_appearance()` can cause this to fail, and sure enough if you look at the parent `Initialize()` proc it calls just that https://github.com/tgstation/tgstation/blob/f1178342084bf89897a46f6ce9dc849233bed21b/code/game/objects/structures/crates_lockers/closets.dm#L81-L88 Since we know the appearance is guaranteed to be changed in some way before the if condition gets executed let's check what the final state of the crate would be before this if check https://github.com/tgstation/tgstation/blob/f1178342084bf89897a46f6ce9dc849233bed21b/code/game/objects/structures/crates_lockers/crates.dm#L54-L56 We see that the final icon state depends on the variable `opened` so if we want to place/spawn a crate that is opened at round start we have to ensure that `opened = TRUE` so the `if(icon_state == "[initial(icon_state)]open")` succeeds and does its job correctly. Sadly we did dum shit like this ``` /obj/structure/closet/crate{ icon_state = "crateopen" } ``` throughout the entire code base, we thought backwards and were only concerned in making the closet look open rather than setting its correct variables to actually say that it is opened. because none of these crates actually set `opened = TRUE` the final icon state becomes just "crate" NOT "crateopen" therefore the if condition fails and we add the component https://github.com/tgstation/tgstation/blob/f1178342084bf89897a46f6ce9dc849233bed21b/code/game/objects/structures/crates_lockers/crates.dm#L36-L37 with the wrong parameters, so when closing the closet after_close() removes the component with the wrong arguments https://github.com/tgstation/tgstation/blob/f1178342084bf89897a46f6ce9dc849233bed21b/code/game/objects/structures/crates_lockers/crates.dm#L81-L84 that is does not unregister the signals and readds the component i.e. re-registers the signals causing runtime. The solution just do this ``` /obj/structure/closet/crate/open[mapping helper] ``` To clearly state that you want the closet to be open, that way you don't have to memorize the icon_state for each different type of crate, it's consistent across all crates & you don't get runtimes. And that's exactly what i did everywhere Another issue that is fixed is "Houdini crates" i.e. crates which are open & appear empty but when you close & reopen them magical loot appears, Go ahead walk upto to cargo and find any empty crate that is open and do this Fixes #69779 https://user-images.githubusercontent.com/110812394/232234489-0193acde-22c8-4c19-af89-e897f3c23d53.mp4 You will be surprised, This is seriously harmful to players because they can just walk by a crate that appears to be open & empty only to realize later that it had some awesome loot. Just mean The reason this happens is because of the Late Initialization inside closets https://github.com/tgstation/tgstation/blob/f1178342084bf89897a46f6ce9dc849233bed21b/code/game/objects/structures/crates_lockers/closets.dm#L85-L86 What late initialization does is suck up all stuff on its turf https://github.com/tgstation/tgstation/blob/f1178342084bf89897a46f6ce9dc849233bed21b/code/game/objects/structures/crates_lockers/closets.dm#L97-L100 In theory this is supposed to work perfectly, if the closet is closed move everything on the turf into the closet and so when the player opens it, they all pop back out. But what happens if the closet is opened before ` LateInitialize()` is called? This breaking behaviour is caused by object spawners https://github.com/tgstation/tgstation/blob/f1178342084bf89897a46f6ce9dc849233bed21b/code/game/objects/effects/spawners/random/structure.dm#L94-L100 And maint crates https://github.com/tgstation/tgstation/blob/f1178342084bf89897a46f6ce9dc849233bed21b/code/game/objects/structures/crates_lockers/crates.dm#L141-L143 These 2 spawners open up the crate based on random probability before ` LateInitialize()` is called on the crate and so what happens is the crate is first opened and then stuff on the turf is sucked in causing an open but empty crate to appear. The solution is simple just check again in ` LateInitialize()` if our crate is still closed before we proceed.That's fixed now too **Code Refactors** 1. Introduced 2 new signals COMSIG_CLOSET_PRE/POST CLOSE which are the counter parts for the open signals. hook into them if you ever need to do stuff before & after closing the closet while return BLOCK_CLOSE for COMSIG_CLOSET_PRE_CLOSE if you want to block closing the closet for some reason 2. 2 new procs `before_open()` & `before_close()` which are the counter parts for `after_open()` & `after_close()`. If you need to write checks and do actions before opening the closet or before closing the closet override these procs & not the `open()` & `close()` procs directly **Secured Craftables** This is just a reopened version of #74115 after i accidently merged another branch without resolving the conflicts first so i'll just repaste everything here, since crates & closets are related might as well do all in one 1. **Access secured closets** - **What about them?** **1. Existing System** If you wanted to create a access secured closet with the existing system its an 4 step process - First construct a normal closet - Weld it shut so you can install the airlock electronics - Install the electronics [4 seconds] - Unweld This is a 4 step process which takes time & requires a welding tool **2. New system** Combine the 4 steps into 1 by crafting the secure closet directly  - **Bonus Features** **1. Card reader** The card reader acts as an interface between the airlock electronics & the player. Usually if you want to change access on a locker you have to - Weld the closet shut - Screw driver out the electronics - Change the settings - Install it back - Unweld With a card reader there is no need of a welder & screwdriver. You can change the access of the locker while its operational **How do i install the card reader?** 1. Weld the closet shut 3. Insert card reader with hand 4. To remove the card reader use crowbar or just deconstruct the whole closet with a welding tool 5. Unweld closet **How to change its access?** This will overwrite the settings on your airlock electronics. To do this 1. make sure the closet is first unlocked. This is important so that no random person who doesn't have access to the closet can change its access while its locked. It would be like giving the privilege of changing your current password without first confirming if you know the old password 2. attack/swipe the closet with your PDA. Make sure your ID card is inside the PDA for this to work. You can also just use your ID card directly without a PDA 3. You will get 3 options to decide the new access levels  They work as follows - **Personal**: As the name implies only you can access this locker and no one else. Make sure to have your ID on you at all times cause if you loose it then no one can open it - **Departmental**: This copies the access levels of your ID and will allow people having those exact same access levels. Say you want to create a closet accessible to only miners. Then have an miner choose this option and now only miners can open this closet. If the Hop sets custom access on your ID then only people with those specific access levels can open this closet - **None**: No access, free for all just like a normal closet **Security:** After you have set the access level it is important to lock the access panel with a "multi-tool", so no one else can change it. Unlock the panel again with the "multi-tool" to set the new access type **2. Give your own name & description** To rename the closet or change its description you must first make the closet access type as personel i.e. make it yours, then use an pen to complete the job. You cannot change names of departmental or no access closets because that's vandelism **3. Custom Paint Job** Use airlock painter. Not intuitive but does the job.  **4. Personal closets** Round start personal closets can have their access overridden by a new ID when in it's unlocked state. This is useful if the last person has no use for the closet & someone else wants to use it. - **Why its good for the game?** 1. Having your own personal closet with your own name & description gives you more privacy & security for your belongings so people don't steal your stuff. Personal access is more secure because it requires you to have the physical ID card you used to set this access and not an ID which has the same access levels as your previous ID 2. Make secure closets faster without an welding tool & screw driver 3. Bug fix where electronics could be screwed out from round start secured closets countless times spawning a new airlock electronic each time 2. **Access secured freezers** - **What about them?** The craftable freezer from #73942 has been modified to support secure access. These can be deconstructed with welders just as before  - **How does it work?** The access stuff works exactly the same as secure closets described above. You can rename & change description with pen just like the above described secure closets. No paint job for this. Install card reader with the same steps described above. - **Why it's good for the game?** 1. Make access secured freezers faster without a welder and screwdriver 2. Your own personally named & locked freezer for storing dead bodies is always a good thing 4. **Access secured suit storage unit** - **What about them?** Suit storage units now require airlock electronics for construction. The access levels you set on it will be used to decide 1. If a player can unlock the unit 2. If the player can open the unit after unlocking 3. If the player can disinfect whatever is inside By default all round start suit storage units have free access - **Install card reader** Provides the same functionality as secured closets described above. To install it 1. Open its panel with a screw driver 2. Add a card reader to it with hand 3. Close the panel When you deconstruct the machine the card reader pops back out - **Why it's good for the game?** 1. Having your own access protected and named suit storage unit so random people don't steal your mod suits? Who wouldn't want that.? Provides security for department storage units. 2. If you have the unit locked then you cannot deconstruct the machine with a crowbar providing additional security 3. Fixes #70552 , random people can't open/unlock the suit storage unit without access. You can set personal access to make sure only you can access the unit ## Changelog 🆑 add: Access secured closets. Personal closets can have their access overwritten by an new id in it's unlocked state add: Access secured freezers. add: Access secured suit storage units. fix: Suit storage unit not having access restrictions. fix: airlock electronics not properly getting removed after screwing them out from round start lockers fix: round spawned open crates run timing when closed fix: open crates hiding stuff in plain sight fix: open closets/crates sucking up contents during late initialize causing them appear empty & open /🆑 --------- Co-authored-by: Tim <timothymtorres@gmail.com> |
||
|
|
7a823f2d1e |
Resprites the mosin nagant, (#75060)
## About The Pull Request Hi, this pr resprites the mosin nagant. It's been moved from its own dmi it a new 42x32 one (mosinnagant.dmi). The new sprite is 42x32. Here are some pictures:    Any critique or suggestions welcomed ## Why It's Good For The Game  The current sprite is aged and muddy. It's a cool gun and I think it deserves a newer cleaner sprite ## Changelog 🆑 image: The Mosin and Prime Nagants have been resprited. /🆑 |
||
|
|
1a918a2e14 |
Golem Rework (#74197)
This PR implements this design document: https://hackmd.io/@Y6uzGFDGSXKRaWDNicSiEg/BkRr176st Put briefly, this will remove every existing golem subtype and consolidate golems into a single species with cool new sprites. NOT implemented from that PR is the ability to eat Telecrystals, I couldn't come up with an appropriate visual that can stack with the existing ones, but that should be a reasonably trivial add for a future artist & developer. New Golems have a food-based mechanic where their hunger decays pretty quickly and can only be replenished by eating minerals. They start moving slower as they get hungrier, until eventually they become completely immobilised and need to be rescued. Eating different kinds of minerals will visually change your sprite and give you a special effect in a similar way to old golems, but temporary. While transformed, you can't eat any other kind of mineral which would transform you (but can still consume glass). To see the full list of effects, look at the hackmd above. In service of these sprites working I have refactored the `species/offset_features` feature by killing it and delegating that responsibility to limbs instead. Rather than applying an offset to items due to your species, it is due to your weird head or arms. This makes overall more sense to me, but it inflates the code changes in this PR somewhat. It doesn't make a lot of sense to atomise unfortunately because that code also seemed to be entirely unused until I tried to use it in this PR, so you wouldn't be able to tell if my changes broke anything. I might make a downstream sad by doing this. All of the actual numbers in this PR are made up and only loosely tested, it will need some testmerges to gather feedback about whether it sucks or not. Other relevant changes: I reworked how bioscrambling works based off bodypart bodytypes, to automatically exclude golem limbs in either direction. There's really no way to have those work on humans or vice versa. Organs still fly though. |
||
|
|
cbdc5275cd |
Makes the divine bow renamable (#75180)
## About The Pull Request Adds the UNIQUE_RENAME flag to the divine bow to allow the name/description to be modified. ## Why It's Good For The Game Consistency with every other null rod option (all of which inherit the flag from `/obj/item/nullrod` ## Changelog 🆑 fix: The chaplain's divine bow can now be renamed like all other null rod variants. /🆑 |
||
|
|
f2fd69a49a |
Minerals have been refactored so costs and minerals in items are now in terms of mineral defines. (#75052)
Ladies, Gentlemen, Gamers. You're probably wondering why I've called you all here (through the automatic reviewer request system). So, mineral balance! Mineral balance is less a balance and more of a nervous white dude juggling spinning plates on a high-wire on his first day. The fact it hasn't failed after going on this long is a miracle in and of itself. This PR does not change mineral balance. What this does is moves over every individual cost, both in crafting recipes attached to an object over to a define based system. We have 3 defines: `sheet_material_amount=2000` . Stock standard mineral sheet. This being our central mineral unit, this is used for all costs 2000+. `half_sheet_material_amount=1000` . Same as above, but using iron rods as our inbetween for costs of 1000-1999. `small_material_amount=100` . This hits 1-999. This covers... a startlingly large amount of the codebase. It's feast or famine out here in terms of mineral costs as a result, items are either sheets upon sheets, or some fraction of small mats. Shout out to riot darts for being the worst material cost in the game. I will not elaborate. Regardless, this has no functional change, but it sets the groundwork for making future changes to material costs much, MUCH easier, and moves over to a single, standardized set of units to help enforce coding standards on new items, and will bring up lots of uncomfortable balance questions down the line. For now though, this serves as some rough boundaries on how items costs are related, and will make adjusting these values easier going forward. Except for foam darts. I did round up foam darts. Adjusting mineral balance on the macro scale will be as simple as changing the aforementioned mineral defines, where the alternative is a rats nest of magic number defines. ~~No seriously, 11.25 iron for a foam dart are you kidding me what is the POINT WHY NOT JUST MAKE IT 11~~ Items individual numbers have not been adjusted yet, but we can standardize how the conversation can be held and actually GET SOMEWHERE on material balance as opposed to throwing our hands up or ignoring it for another 10 years. |
||
|
|
c3ff5a5180 |
[NO GBP] Style meter fixes (#75090)
## About The Pull Request Fixes: - Crusher mark score applying to attacked corpses - Parrying not working, in 2 different forms - The style bar not being accurate with >= 600 style points ## Why It's Good For The Game Bugs bad ## Changelog 🆑 fix: Style meter parrying works again fix: Style meter bar now works correctly with very high style point count /🆑 |
||
|
|
f7a49c4068 |
Gunpoints now take half a second to activate, make gasp sounds, and briefly immobilize the shooter and target, other small balance changes (#74036)
## About The Pull Request This PR messes around with gunpoints a bit, with the purpose of making them more viable in certain scenarios without making them obnoxious. The biggest change is that gunpoints now require a 0.5 second do_after() where neither the shooter nor the target moves, and immobilizes both of them for 0.75 seconds if point blank, or half that if you're 2 tiles away. Originally you were supposed to only be able to initiate a gunpoint from point-blank, but #56601 seems to have removed that requirement, so we'll run with it and just leave it as advantageous to gunpoint closer up. The do_after() reinforces that it should be used as an ambush tactic, and so you can't use it on someone who's actively fleeing or fighting you. Getting held up will now make you emit a shocked gasp sound, a la Metal Gear Solid, which combined with the short immobilize will hopefully make it more noticeable that someone's pointing a gun at you. Holdups will now immediately give a 25% bonus to damage and wounds, instead of having to wait 2.5 seconds to hit the double damage stage. Finally, right clicking someone that you're holding up will no longer shoot them. That just feels like good consistency. ## Why It's Good For The Game Hopefully makes gunpoints a little more viable for when you want to stick someone who's not expecting it up without them immediately jetting off. In the future I'd like to ape Baycode and let the gunman have an action that toggles whether the victim is allowed to move, so you can order them to move to a second location without instantly shooting them, but that'll come later. ## Changelog 🆑 Ryll/Shaps balance: Holding someone at gunpoint now requires both the shooter and the victim to hold still for half a second before activating, so you can't hold-up people fleeing or fighting you. After that, it will briefly immobilize the both of you, 0.75 seconds if adjacent, or half that if you're two tiles away. Nuke ops are immune to the immobilization, since they're ready to die anyways. balance: Holding someone up will immediately apply a 1.25x damage and wound multiplier, rather than waiting 2.5 seconds to hit 2x. soundadd: Being held up will now make the victim play a sharp gasp sound, a la Metal Gear Solid. qol: Trying to hold someone up that you're already holding up will no longer shoot them. /🆑 --------- Co-authored-by: san7890 <the@san7890.com> |
||
|
|
461ef29f18 |
Bows no longer randomly become unusable (#75058)
## About The Pull Request Fixes bows randomly becoming unusable. On firing bows were leaving behind a reference to their casing in the internal magazine. As arrows are technically caseless ammo there was no way to remove this casing, and eventually it would turn into a null, rendering the magazine unable to load any new arrows. This is fixed by adding a check for whether the ammo is cased to all ballistic guns in `process_fire()`. Caseless ammo has its casing removed from the magazine's `stored_ammo` list to prevent it rotting away to a null down the line. While I was here renamed and autodocced the var `heavy_metal` which appears to be exactly the var for having a casing that I needed. ## Why It's Good For The Game Bows becoming randomly useless because of leftover vars is bad and silly, and so are mystery meat vars with undescriptive names and no autodoc. ## Changelog 🆑 fix: Bows will no longer randomly stop taking new arrows. /🆑 |
||
|
|
0d4ec59197 |
Miner Style Points 2: Style on Everyone (#74690)
## About The Pull Request A re-open of https://github.com/tgstation/tgstation/pull/66326 with Fikou's permission Adds the style meter, it can be bought from the mining vendor for 1500 points, it is an attachment to your glasses. The style meter creates a display on your hud, with your recent actions, like attacking enemies, killing them, mining ore etc. Actions like spinning or flipping increase your score multiplier, making you get more points. Your style meter affects how much ore you get from mining rocks. By default with the meter, you get 20% less ore, but at the highest, you can get 1.2x the ore from mining. In addition, on B-tier or above, you can "hotswap" items, by attacking an item in your backpack with one in your hand (should it fit and all that). Also features a leaderboard for highest style point count! New streamable: https://streamable.com/eewi6l The following are sources of points: - Killing things - Killing big things - Killing small things - Punching things - Melee'ing things - Mining rocks and ores - Having matrix traps detonate - Hit, defuse, and detonate gibtonite - Detonate crusher marks - Scan geysers - Parry projectiles (others or your own) Oh, right. While wearing the style meter, you're able to parry any lavaland-based projectile by clicking on it or the tile it is on, which reflects it back in a 7 degree arc, making it 20% faster and 15% more damaging. Usually not very easy. Maybe-plan in the future for some syndicate variant of this (with bullet parrying and appropriate style sources, etc.), but not for this PR Thanks to Arcane, multitooling the style meter will make it play some sounds on rank-up.  https://streamable.com/nheaky Parrying in action ## Why It's Good For The Game Makes miners bring more ore in a fun way. ## Changelog 🆑 Fikou, Zonespace, Arcane for voicing add: The mining vendor now has a style meter. This meter gauges your style points and uses them to improve your ore yield. /🆑 --------- Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com> |
||
|
|
bc813ab93d |
Cleans up + Improves bows, Sorts files, Adds the Divine Archer clothing, weapon, rite (#74811)
## About The Pull Request ### Divine Archer 🏹  Adds a new chaplain weapon and suit of armor, the divine archer. It's an orderable set of armor, but provides less armor than the rest, but you get more pieces of armor (boots, bracer, undersuit). The divine bow comes with a quiver that holds holy arrows. The holy arrows come with bane support, dealing critical damage to revenants. ### Bow Features ⭐ - arrows can now be dipped in poison ### Bow Improvements 🔧 - bows now drop their arrow when you put them on your back while nocking a bow - bows give feedback for trying to draw without a nocked arrow - codewise, bows support subtypes much better. They still have hard-sprited loaded arrows, but one day that'll change. ## Why It's Good For The Game Yeah, we could add null rod #2342 that does almost the same as the others, or we could have a unique bow weapon! Player Dev Project thread: https://discord.com/channels/326822144233439242/1093521091957370940/1093521091957370940 ## Changelog 🆑 tralezab code, Drag for the commission and player project, cre#0484 for their spritework add: Divine Archer Armor and Weapon qol: Bows give more feedback when you're doing something wrong, like trying to draw without a nocked arrow code: Sorted files, cleaned bow code up to allow subtypes /🆑 |
||
|
|
6e1b38ec0a |
adds spent subtypes for some ammo and adds them to the waystation and the faceoff space ruins. (#74950)
## About The Pull Request Adds spent subtypes for .357, .45 acp and buckshot. Replaces live ammo with the spent subtype on the waystation and the faceoff space ruins. ## Why It's Good For The Game I talked with a map maker and he didn't intend for 60+ live .357 rounds on his map. I assumed its the same for the waystation. ## Changelog 🆑 fix: Replaced live ammo found that was unintended on the waystation and the faceoff with spent subtypes. /🆑 |
||
|
|
11070cca95 |
Adds support for ammunition 'bands' and differentiates between detective speedloaders. (#74494)
## About The Pull Request Adds support for ammunition 'bands', basically intended to be used rather than wholly new sprites for new ammotypes. Additionally, they're (meant to be) greyscale, which allows one overlay to be used for many ammo types. Only implemented on the detective revolver. From left to right Default Tracking (Purple) Match (Silvery Blue) Rubber (Blue) DumDum (Yellow) Hotshot (Red) Iceblox (Light Blue)  These sprites are damn bad, as I'm not a spriter. I would appreciate it if someone could improve them. I am also not attached to the specific colors, any alternatives would be appreciated. ## Why It's Good For The Game Tired of all speedloaders being identical. ## Changelog 🆑 code: Adds support for ammunition 'bands', basically intended to be used rather than wholly new sprites for new ammotypes. Additionally, they're (meant to be) greyscale, which allows one overlay to be used for many ammo types. Only implemented on the detective revolver. /🆑 |
||
|
|
b2eba17f07 |
New laser and disabler sounds! (#74900)
## About The Pull Request Changes old laser sounds (and sear sound) to new ones, made by me in FL Studio. (The sound getting too distorted when pitching up will be soon fixed, as Goof will make pitching down of gun sounds better) https://user-images.githubusercontent.com/42353186/233795506-d68825d9-63a5-4cff-a52d-9fc949f2ec13.mp4 https://user-images.githubusercontent.com/42353186/233795520-525bada0-265c-4003-bb76-0b256ee844fb.mp4 https://user-images.githubusercontent.com/42353186/233795548-e97528ab-c9d6-4389-bee1-f849ceb71c60.mp4 ## Why It's Good For The Game For a long time, people have always been liking ballistics more than laser for many reasons. But I often heard that the ballistics sound gives feedback of a punch and that laser guns (especially disablers) sound like toys. And to make the laser more satisfying and intimidating to use, I have created new sounds for them which are more in-depth. And also changed the sear sound (when you get hit by a laser) to give more of a punch. ## Changelog 🆑 sound: Disablers and lasers have a new deeper sound to them sound: Sound of lasers hitting a person now are giving more of a punch /🆑 |
||
|
|
b2b7fb1752 |
Buffs the Bulldog (#74781)
## About The Pull Request Buffs the Bulldog via giving it a damage modifier of 1.2. ## Why It's Good For The Game Assuming default ammo, the C-20r is 30 damage a shot. The M-90gl is 35 damage, and has grenades as a side dish. The Saw is 30 and is fully automatic. The Sniper is 70 alongside having incredible range, stunning, and delimbing. The Bulldog when loaded with buckshot does a grand total of 45 damage point blank. That's a pretty rough comparison, and once you take into account the other types of ammo nukie guns can use, it doesn't get much better. As is the only real usecase for the Bulldog is meteor slugs, and you're not really using those for murder anyways. ## Changelog 🆑 balance: Bulldogs now hit 20% harder with their projectiles! /🆑 |
||
|
|
c4d5b1ec51 |
Makes the blowgun not need to windup before shooting (#74641)
## About The Pull Request Removes the windup before shooting a blowgun ## Why It's Good For The Game The blowgun already has 25 oxygen damage, and stamina drain when you fire it, which puts it way below a syringe gun. This also gets rid of the "one viable option" of ranged syringe gun that people rush, because maybe if somebody steals the syringe gun, you can still make some (worse, but viable) syringe gun. ## Changelog 🆑 Vect0r balance: The blowgun no longer takes time to windup before you can shoot it. /🆑 |