mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-11 16:14:08 +01:00
docker-container
373 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
f601a6ddaf | Merge remote-tracking branch 'tgstation/master' into upstream-6-2-2026 | ||
|
|
751bfc08bb |
Removes the IC tab (#95893)
## About The Pull Request Removes the IC tab in its entirety - Some mobs (Blob Minion & Lightgeist) had manually removed the "pull" verb, this replaces it with taking away their pull force. - Lightgeist had their "Me" verb manually removed, this is replaced by giving them Emotemute trait (the same that mime's bane gives) - Floor Changer: You can now RMB the arrow buttons to look in a direction w/o moving. Added a tip to help with this. - Exit Hivemind: Already an action button and was removed without further edits ### Removed entirely Rest Resist Look Up/Down Move Upwards/Down Activate Held Object Open Language Menu Memories View Skills ### Moved to command bar (secret verb ooh) because I am biased Sleep Navigate ### Martial Arts Martial Arts had a button to see your current skills & the ability to cycle between artstyles. This was replaced with 1 action button that does both of these. <img width="317" height="148" alt="image" src="https://github.com/user-attachments/assets/afed910f-b6b6-441d-86cb-dade0e253044" /> Name auto-updates as you swap artstyle to whatever help verb the current style uses. Mention of RMB in the name is only there if you have more than 1 martial art, but the desc will remain just so players can see it even if they only have one, for future reference. ## Why It's Good For The Game Brings greater visibility to Martial Art stuff, and especially since the stat panel is being made optional we should not be hiding ANYTHING in there. This also helps me with my project listed in https://hackmd.io/443_dE5lRWeEAp9bjGcKYw?view And also fixes some sorta-removed features due to removing verbs not matching people's actual powers due to new features like "Custom Me" and "Ctrl Clicking". ## Changelog 🆑 SirNightKnight (sprites), JohnFulpWillard del: Deleted the "IC" tab of the stat panel. fix: Lightgeists can't emote or pull as intended. fix: Blob minions can't pull again. qol: Martial Art users now have an action button for their artstyle-related businesses, rather than it being in the stat panel. qol: You can now right-click the move up/down UI buttons to look in the direction without moving. /🆑 |
||
|
|
21b4095dfd |
[MDB IGNORE] [IDB IGNORE] Upstream Sync - 04/17/2026 (#5453)
Upstream 04/17/2026 fixes https://github.com/Bubberstation/Bubberstation/issues/5549 --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: tgstation-ci[bot] <179393467+tgstation-ci[bot]@users.noreply.github.com> Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com> Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com> Co-authored-by: Rhials <28870487+Rhials@users.noreply.github.com> Co-authored-by: rageguy505 <54517726+rageguy505@users.noreply.github.com> Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com> Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com> Co-authored-by: Aliceee2ch <160794176+Aliceee2ch@users.noreply.github.com> Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com> Co-authored-by: Tsar-Salat <62388554+Tsar-Salat@users.noreply.github.com> Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com> Co-authored-by: Maxipat <108554989+Maxipat112@users.noreply.github.com> Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com> Co-authored-by: deltanedas <39013340+deltanedas@users.noreply.github.com> Co-authored-by: SimplyLogan <47579821+loganuk@users.noreply.github.com> Co-authored-by: loganuk <fakeemail123@aol.com> Co-authored-by: Leland Kemble <70413276+lelandkemble@users.noreply.github.com> Co-authored-by: FalloutFalcon <86381784+FalloutFalcon@users.noreply.github.com> Co-authored-by: Roxy <75404941+TealSeer@users.noreply.github.com> Co-authored-by: Lucy <lucy@absolucy.moe> Co-authored-by: siliconOpossum <138069572+siliconOpossum@users.noreply.github.com> Co-authored-by: Isratosh <Isratosh@hotmail.com> Co-authored-by: TheRyeGuyWhoWillNowDie <70169560+TheRyeGuyWhoWillNowDie@users.noreply.github.com> Co-authored-by: Neocloudy <88008002+Neocloudy@users.noreply.github.com> Co-authored-by: Alexander V. <volas@ya.ru> Co-authored-by: ElGitificador <168473461+ElGitificador@users.noreply.github.com> Co-authored-by: Twaticus <46540570+Twaticus@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com> Co-authored-by: Cameron Lennox <killer65311@gmail.com> Co-authored-by: Tim <timothymtorres@gmail.com> Co-authored-by: Iamgoofball <iamgoofball@gmail.com> Co-authored-by: Layzu666 <121319428+Layzu666@users.noreply.github.com> Co-authored-by: Arturlang <24881678+Arturlang@users.noreply.github.com> Co-authored-by: _0Steven <42909981+00-Steven@users.noreply.github.com> Co-authored-by: mrmanlikesbt <99309552+mrmanlikesbt@users.noreply.github.com> Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com> Co-authored-by: John F. Kennedy <54908920+MacaroniCritter@users.noreply.github.com> Co-authored-by: Cursor <102828457+theselfish@users.noreply.github.com> Co-authored-by: Josh <josh.adam.powell@gmail.com> Co-authored-by: Josh Powell <josh.powell@softwire.com> Co-authored-by: Yobrocharlie <Charliemiller5617@gmail.com> Co-authored-by: Hardly3D <66234359+Hardly3D@users.noreply.github.com> Co-authored-by: shayoki <96078776+shayoki@users.noreply.github.com> Co-authored-by: LT3 <83487515+lessthnthree@users.noreply.github.com> |
||
|
|
d820211da8 |
Observers can move again (#96098)
## About The Pull Request Issue that came out of https://github.com/tgstation/tgstation/pull/95976 - We never actually add the dead player to the list of keyloops, so they can't move out of their body. ## Why It's Good For The Game Fixes https://github.com/tgstation/tgstation/issues/96094 ## Changelog 🆑 fix: People who re-enter their body can now exit again by moving. /🆑 |
||
|
|
442ad835bc |
Reverts inertia based space movement (#95536)
## About The Pull Request Reverts space movement being affected by inertia What is kept: - Items have a varying force on your drift speed, ie heavier items will move you faster through space, and smaller items, slower. - Jetpacks can have varying force of impulse - the effect is applied directly to the mob's `inertia_move_multiplier` - Tethers are unreverted - they still stop you from drifting too far from the tether point, however you can no longer 'swing' with them. What is removed: - Multiple impulses in the same angle/direction no longer speeds you up. Only the fastest impulse in 1 direction is accounted for. - An impulse in a different angle/direction will completely override any existing impulses, even if they are faster. - Jetpack stabilizers are once again perfectly capable of immediately stopping any active impulses. TL;DR If you point yourself in a direction you will now go that direction ## Why It's Good For The Game The concept was fun and had potential but the fight between impulses vs tiles was very, very clunky and janky. Multiple fixes were attempted to reduce the jank but it ultimately nograv still acts very cumbersome and jetpacks are still very unappealing to use. Smartkar gave the go-ahead to revert this a while back so, o7. ## Changelog 🆑 Melbert del: Zero-gravity drifting is no longer affected by inertia, ie it has been reverted to what it once was. /🆑 |
||
|
|
16aef3a2fd |
Completely refactors HUD element management and datumizes inventory HUDs (#95119)
## About The Pull Request This is a port/revival of Kapu's https://github.com/DaedalusDock/daedalusdock/pull/883 By god, please TM this for a while, as HUDs are rather volatile and I might've missed something (also the original PR had harddel issues, so we should probably be on the lookout for those) Instead of being stored in a metric ton of separate variables, all HUD elements are now kept in a ``key -> element`` assoc list, and separate category lists have been turned into a single ``group_key -> list of elements`` assoc list for easier management. This massively simplifies HUD creation and management, and allows us to sanely dynamically modify HUDs without having to keep track of our elements ourselves (harddel fuel) I've also noticed that plasma vessels had... interesting, to say the least, way of managing their HUD and in humans were unable to display it, which I've changed (the element itself is displayed below stamina in non-aliens, as latter occupies the spot where you'd normally see it) Also fixes a bunch of minor unlikely to occur issues with HUD not updating when it should've sometimes. ## Why It's Good For The Game The two most important results of this is that A) we can fix the issue with items larger than 32x32 not displaying properly in inventories (in a separate PR) and B) this paves the way for datumized inventory slots, although that is a separate nightmare Some of this code is also actually over a decade old, and is an absolute nightmare to work with. ## Changelog 🆑 qol: Non-aliens with an implanted plasma vessel now see their plasma level in their HUD instead of just the stat panel refactor: Refactored the entirety of HUD management code, report if anything breaks! /🆑 --------- Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com> |
||
|
|
5e629dff04 | Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-sync | ||
|
|
3ea7b03369 |
Accentuate the positive with **Personality**: A (soft) mood rework (#92941)
Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com> |
||
|
|
9b282a850e | Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-sync | ||
|
|
85fa2ea1c2 |
Locks Diagonal Movement to the Tick (#92956)
## About The Pull Request When we move diagonally, we multiply our movement rate by sqrt(2) (cause A\*A + B\*B = C\*C right). The problem with this is most of the time our movement rate is cleanly divisible by 0.5 (our tick rate), and sqrt(2) is like 1.47 something. This means anytime you move diagonally, you become desynced from the tick, and get movement jitter (about 80% off window for standard diagonals, tho that gets better as it compounds). I saw this in my smooth movement pr (#92935), it's been a problem for 4 years now (#63058) we just like, never noticed cause why would you the rest of the game is horrible too. This behavior also possible with normal movement, but that is not CONSTANT like this is. What I'm doing here is flooring the resulting delay to the tick rate, because that's basically close enough, and I prefer moving slightly faster to moving slightly slower. ## Why It's Good For The Game Best case displays (with all other problems resolved) Old: https://github.com/user-attachments/assets/0151af94-9204-4ba9-ad0c-7e4958faa254 New: https://github.com/user-attachments/assets/2eb4df09-abff-4e10-b32f-3765755336e1 ## Changelog 🆑 fix: Moving diagonally will no longer lead to stutter stepping (it's tickbound) /🆑 |
||
|
|
b6b8306fda | Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-25-02a | ||
|
|
d7130a4598 |
Make slips eligible for shove stuns (#89313)
## About The Pull Request Adds slips to the list of existing shove stun methods originally set in https://github.com/tgstation/tgstation/pull/84640 (wall shoves, telebaton, mansus grasp), and also reifies this concept as the "dazed" status effect. This makes it so that being knocked down from a slip from any source (e.g. wet floor, clown stuff, lube, foam, oil, butterdog) gives the dazed visual effect and makes you eligible for being shove stunned. The status always lasts for 3 seconds even if e.g. slipping on lube knocks you down for 15, but this can be customized per slip. ## Why It's Good For The Game Further rewards environmental play and provides another feasible means of fighting back against better equipped opponents, both in line with the original PR. Also the visual cue fits well as an immediate signal that you're dazed and can't get up. ## Changelog 🆑 balance: slips now make you eligible for being shove stunned /🆑 --------- Co-authored-by: Roryl-c <5150427+Roryl-c@users.noreply.github.com> |
||
|
|
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". |
||
|
|
92d224d48f |
Fourth! Time's the Charm: Actually fixes jetpack race conditions this time around (#88492)
## About The Pull Request A) Queue time can be null and it'll be valid for hotstarting loops B) Pushoffs working even when you're moving feels much better C) Jetpacks were having race issues with drift handlers because those were also using comsigs which is a remnant of old code back when they were components. Handlers should fire last, post-comsigs. D) We should not be hard-blocking jetpack movement when doing final slowdown step. Like really. ## Why It's Good For The Game Jetpacks ACTUALLY don't suck this time around. ## Changelog 🆑 qol: Jetpacks should ACTUALLY feel better now /🆑 |
||
|
|
3ce8ca3eda |
[NO GBP] Fixes a zero g pushoff runtime (#88330)
## About The Pull Request Forgot to change this, occurs when you try to push off a floating locker that's moving in the same direction as you ## Changelog 🆑 fix: Fixed a zero g pushoff runtime /🆑 |
||
|
|
f3e49c922f |
Pressing the change floor button while on ladder interacts with ladder (#86954)
## About The Pull Request This PR implements, as a quality of life feature, the ability to interact with the ladder in the current turf by pressing the `change floor` button. This allows for the easier interaction with the ladder if there are a lot of objects on top of said ladder, but most importantly fixes many issues where bots could not interact with the ladder and were stuck! Bots like the cleanbot could not interact with the ladder, and firebot could only climb downwards. With this addition to the change floor button these bots can still freely move up and down, albeit not by clicking the ladder directly (I will work on that soon™). ## Why It's Good For The Game Allows for a better UX interacting the change floor button as it feels weird that you can't change the floor if you are sitting on a ladder. Also allows cleanbot, firebot and anything that got gatekept previously to use the ladder with the change floor button. ## Changelog 🆑 qol: change floor button now interacts with ladder if it is in the current turf /🆑 |
||
|
|
e59d8ba64b | Merge commit '179a607a90ad7ec62bdaff4e6fe72af60ee56442' of https://github.com/tgstation/tgstation into upstream-24-10b | ||
|
|
e41b5acf8e |
[NO GBP] Fixes lattices causing spacemove jank (#87320)
## About The Pull Request Lattices blocking space movement was handled on /atom/movable while my comsigs were on /mob, thus making lattices overrule all force code. Mobs now properly handle them via pushoff code. ## Why Is This Good For The Game Lattices are very jarring to move along rn, this was not intentional. ## Changelog 🆑 fix: Moving along lattices in space with a jetpack on no longer causes your screen to jerk /🆑 |
||
|
|
79a8e0c2c0 |
Pressing the change floor button while on ladder interacts with ladder (#86954)
## About The Pull Request This PR implements, as a quality of life feature, the ability to interact with the ladder in the current turf by pressing the `change floor` button. This allows for the easier interaction with the ladder if there are a lot of objects on top of said ladder, but most importantly fixes many issues where bots could not interact with the ladder and were stuck! Bots like the cleanbot could not interact with the ladder, and firebot could only climb downwards. With this addition to the change floor button these bots can still freely move up and down, albeit not by clicking the ladder directly (I will work on that soon™). ## Why It's Good For The Game Allows for a better UX interacting the change floor button as it feels weird that you can't change the floor if you are sitting on a ladder. Also allows cleanbot, firebot and anything that got gatekept previously to use the ladder with the change floor button. ## Changelog 🆑 qol: change floor button now interacts with ladder if it is in the current turf /🆑 |
||
|
|
639f5735b5 |
Code improvement of mob/move/up() and mob/move/down() (#86961)
## About The Pull Request This PR improves the code for mob/verb/up() and mob/verb/down() by removing unnecessary checks. Added a `can_z_move` check before waiting for a second, making it feel more responsive as a result because the user will immediately know it cannot move there. Additionally, vent crawling is handled by if(ismovable(loc)), which makes the explicit check for the ventcrawl flag unnecessary. ## Why It's Good For The Game Apart from the code improvements, previously, if there was space above you that you could move into but you were unable to fly, the game would instantly tell you, 'You are not Superman.' However, if there was a tile blocking you, you had to wait for the entire move action before receiving the same message. With this code cleanup, you now only have to wait for the move action if you can move to that z level, making the experience more consistent across different interactions. |
||
|
|
ad111f4950 |
Spacemove refactor - Newtonian physics (#84869)
## About The Pull Request This PR significantly enhances how zero-g movement works. Its no longer locked to one of 8 directions, everything now has inertia and is affected by weight. This means that throwing a piece of wire will no longer completely reverse your movement direction, and that being thrown out of mass driver no longer will slow you down to a halt at some point. This leads to following gameplay changes: * Guns now accelerate you. Ballistics have higher acceleration than lasers, and higher calibers have higher acceleration than smaller ones. This means that firing full-auto weapons in zero-g will make you drift and accelerate significantly. While this can be a hilarious way to travel in space, it makes using them trickier. * Impacting a wall or an object while moving at high speeds will cause you to violently crash into it as if you were thrown. Careful when exploring! * Jetpacks now have inertia. Changes introduced in #84712 have been mostly reverted, although speed buff has been reduced to 0.3 instead of 0.5 (although this is compensated by new movement mechanics, so overall speed should be roughly equal). All MODsuit jetpacks now possess the speed boost. Advanced MODsuit jets (which has also been added back) and captain's jetpack instead have higher acceleration and stabilization power, providing much more precise control over your movement. * Firing guns while moving on a jetpack will partially negate your pack's acceleration, slowing you down. Non-advanced jetpacks' stabilization is not enough to compensate for heavy caliber weaponry as sniper rifles, shotguns or rocket launchers. * You no longer instantly decelerate upon sliding along a wall. Instead, it may take a few tiles if you are moving at extreme speeds. Passing over lattices still allows you to grab onto them! As space movement is angle-based instead of dir-based now, its much more smooth than before due to using new movement logic. Example of jetpack stabilization in action: https://github.com/tgstation/tgstation/assets/44720187/6761a4fd-b7de-4523-97ea-38144b8aab41 And, of course, you can do this now.  **This pull request requires extensive gameplay testing before merging**, as a large amount of numbers have been picked arbitrarily in an attempt to keep consistency with previous behavior (guns and normal-sized items applying 1 drift force, which is equal to what everything applied before this PR). Jetpacks and impacts may also require adjustments as to not be frustrating to use. Closes #85165 ## Why It's Good For The Game Zero-G refactor - currently our zero-g movement is rather ugly and can be uncomfortable to work with. A piece of cable being able to accelerate you the same as a duffelbag full of items when thrown makes no sense, and so does instantly changing directions. Inertia-based version is smoother and more intuitive. This also makes being thrown into space more of a hazard (possibly opening the door for explosive decompressions?) Jetpack inertia and gun changes - this is mostly a consequence of inertia-based movement. However, zero-g combat being preferred during modes like warops was an issue due to it negatively affecting everyone without jetpacks which are in limited supply onboard. This reverts the mobility changes which severely impacted space exploration, while making zero-g combat more dangerous and having it require more skill to be a viable option. ## What's left - [x] Refactor moth wings to use jetpack code - [x] Refactor functional wings to use jetpack code - [x] Locate and fix a recursion runtime that sometimes occurs upon splattering against a wall - [x] Add craftable tethers and modify engineering MOD tethers to use the same system ## Changelog 🆑 add: You can now craft tether anchors, which can be secured with a wrench and attached to with right click. They won't let you drift into space and you can adjust tether length/cut it via lmb/rmb/ctrl click on the wire. add: MOD tethers now remotely place and connect to tether anchors instead of throwing you at where they landed. balance: MOD tethers can now be used in gravity balance: Jetpacks are now inertia-based. balance: Guns can accelerate you significantly in zero-g. balance: All jetpacks now give you equal speed buff, however advanced MOD ion jets and captain's jetpack have higher acceleration/deceleration values. refactor: Refactored zero-g movement to be inertia-based and utilize angles instead of directions. /🆑 |
||
|
|
8c4cf753f5 | Remove data systems in favor of global datums (#82943) | ||
|
|
bc4e7d3b4e | Remove data systems in favor of global datums (#82943) | ||
|
|
55d1c715e5 |
Pulls2 (#27514)
* New docking port sprites (#82729)
* Adds text to lootpanel items [no gbp] (#82722)
## About The Pull Request
Just some qol, this captures a small portion of the item name and fixes
some icon clipping issues
I clipped it at 5 because monke


## Why It's Good For The Game
Handy if youre in a rush and won't upgrade byond to fix the issue
## Changelog
🆑
fix: Lootpanel additions: Condensed item names for the quick of draw
/🆑
* Fixes tgui alert buttons (#82714)
<!-- 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
Been on my mind for a long time
I did this while relatively inexperienced (how do I center a div etc)
Fixes an issue inherent to our stack implementation where reversing the
direction caused strange spacing issues. This effectively reverses the
extra margins in css so it looks identically spaced whether reversed/not
<details>
<summary>before/after</summary>
Before (normal buttons)

Before (large buttons)

After (normal buttons)

After (large buttons)

Long buttons (normal)

Long buttons (large buttons (I am 35 and yet still fight the forces of
chaos))

</details>
<!-- Describe The Pull Request. Please be sure every change is
documented or this can delay review and even discourage maintainers from
merging your PR! -->
## Why It's Good For The Game
Looks better, runs smoother, no clipping
<!-- 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. -->
## 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: TGUI Alerts shouldn't have such wonky buttons any more
/🆑
<!-- 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. -->
---------
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
* MetaStation: Replaces the tools in the Primary Surgery Theatre with filled surgery trays (#82730)
## About The Pull Request
Replaces the tools on the tables with 2 surgery trays.

## Why It's Good For The Game
Makes surgery a bit less painful in the surgery theatre, Using tools
from a tray is much nicer than having to open the context menu on the
piles of tools on the tables.
## Changelog
🆑
qol: Replaced the surgical tools in the Primary Surgery Theatre with 2
Surgery Trays.
/🆑
* Fixes smart pipe & cryo gas reallocation (#82701)
## About The Pull Request
**1. Smart Pipe Problem**
- Fill a pipe with any gas, plasma for e.g.
- Unwrench the pipe to deconstruct
- The pressure sends you flying but notice plasma is nowhere to be seen
from the now destroyed pipe
**2. Cryo pipe connector problem**
The gas gets reallocated when the object is deleted. We only want this
when its deconstructed not deleted to prevent any side effects
This PR fixes them
## Changelog
🆑
fix: smart pipes release their gases into the air when unwrenched
fix: cryo pipe connector component has no side effects of gas
reallocation when deleted
/🆑
* Fix Primal Instincts (#82741)
## About The Pull Request
#82539 randomly made these two lines switch their AI controllers to idle
rather than on, when the intent was for them to wake up immediately to
do make the mob attack or fight or do something
## Changelog
🆑 Melbert
fix: Primal Instincts and Living Flesh should be a tad more reactive
/🆑
* Fix handcuffing (#82760)
## About The Pull Request
Changed this to an early return but then didn't invert the condition
## Changelog
🆑 Melbert
fix: You can handcuff people with 2 arms and you can no longer handcuff
people with 0 arms
/🆑
* Gets rid of UNIT_TESTS compiler warning (#82695)
## About The Pull Request
Basically every single CI Run is throwing the following warning:
```txt
code/modules/unit_tests/lootpanel.dm:24:warning (unused_var): new_box: variable defined but not used
```
You may find an example here:
https://github.com/tgstation/tgstation/actions/runs/8698627681/job/23855921813#step:9:24
This is pretty silly but I don't really know why we even have this
variable (I assume there's something far more complicated underneath the
surface based on what the unit test is asserting), but assuming it is
important let's just insert a do-nothing procedure to get rid of the
compiler warning while ensuring the unit test is actually operating as
it should.
I also don't really like the fact that this is a warning instead of an
error but let's tackle this problem one step at a time by at least
getting rid of the compiler warning in a quick advance PR while I dwell
on this issue (is there a way to get the Dreamchecker linter to look at
the unit test files? it's caught perfectly fine in the langserver)
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Makes dropdowns better (#82697)
## About The Pull Request
Kind of a pain to work with, confusing people with its prop names (many
such cases!)
After recently discovering deathmatch it's very obvious to me how broken
it is, so I made it less so
(now comes with a complete ui upgrade!)
It now scrolls with the selection and to the selection on open, which
felt like major QoL
<details>
<summary>pics/vids</summary>
In motion

Deathmatch got some UI facelifts


Fixes #75741

</details>
## Why It's Good For The Game
Better UX
Bug fixes
Potential exploit patched (ui validation for ai voice changer)
Fixes #81506
## Changelog
🆑
fix: Dropdowns received some much-needed QoL, like having the scrollbar
follow your selection.
fix: AI voice changer now shows its current voice selection.
fix: Deathmatch screen has been touched up.
fix: Prefs menu has their dropdowns simplified, hopefully fixing issues
/🆑
---------
Co-authored-by: san7890 <the@san7890.com>
* Fixes the NT SWAT helmet sprite (#82743)
* Mass Item Creation (#82455)
## About The Pull Request
Have you ever had to click the "Make" button a dozen times for a chef
making soup? I've also had it, so with this PR you can press the button
and everything will repeat itself as long as possible.
## Why It's Good For The Game
Makes life easier for chefs, now they can play chess on their cool
smartphone and craft food. (actually you can transfer it to other items
as well, see for yourself).
* Adds Retain volume flag on the ants reaction (#82718)
Fixes #82575
We'd expect feeding ants to always result in more ants I imagine.
* Borg movement now has sounds (#82704)
## About The Pull Request
adds sound effects to cyborgs when they move
Demo:
https://imgur.com/a/7Mu98pQ
Open to feedback on this sound so please tell me what you think.
## Why It's Good For The Game
a hunk of metal moving at you without any sound is frightening
## Changelog
🆑 grungussuss
sound: cyborgs now have sounds to indicate they are moving
/🆑
* Use cell defined constants for various stuff (#82594)
## About The Pull Request
This re writes most cell power usage cases with 2 defines
`STANDARD_CELL_CHARGE`(Joules) & `STANDARD_CELL_RATE`(Watts) so changing
cell capacity values in the future won't cause discrepancies.
## Changelog
🆑
code: most cell power usages are scaled with defined constants to help
adapt to future changes
/🆑
* Plumbing machinery power & processing tweaks (#82702)
## About The Pull Request
- Plumbing machinery begins processing only when wrenched & ends
processing when unwrenched. The machines plumbing component
`/datum/component/plumbing/process()` already does this but the
underlying machines processing proc for e.g.
`/obj/machinery/plumbing/synthesizer/process()` is always processing
regardless of its wrenched state or not. We can optimize this & save
power when unwrenched
- Fixes #82621. This adds plumbing machines `idle_power_usage` on top of
its `active_power_usage` ensuring it only uses power when actively doing
work, So if your factory is say full of reagents & cannot do any more
work it will use less energy i.e almost enter an stand by mode,
efficiency
- Plumbing grinder chemical will grinds & juice stuff correctly i.e.
prefer grinding over juicing most of the time
## Changelog
🆑
fix: plumbing machinery begins processing only when wrenched & ends when
unwrenched
fix: plumbing machinery uses energy only when wrenched & doing work,
will stop/use less energy when idle
fix: plumbing grinder chemical will grinds & juice stuff correctly i.e.
prefer grinding over juicing for most stuff
/🆑
* Carps migrating through the station no longer idle so they don't get stuck after spawning until someone walks by. (#82744)
## About The Pull Request
Carps migrating through the station no longer idle so they don't get
stuck after spawning until someone walks by.
## Why It's Good For The Game
Bugfix for Carp Migrations.
## Changelog
🆑
fix: Carps migrating through the station no longer idle so they don't
get stuck after spawning until someone walks by.
/🆑
* Alt click no longer conflicts with mech suit [no gbp] (#82758)
## About The Pull Request
Get in the gundam shinji!!!
Context: Mech users hold ALT to disable strafe, which would trigger the
lootpanel to come up while committing war crimes (annoying!)
This prevents the panel from appearing and fixes the previous behavior,
meaning you can alt click your own mech to disable strafing.

It also makes toggling strafe a balloon alert with sound. Parties for
all occupants!!
## Why It's Good For The Game
Fixes #82753
## Changelog
🆑
fix: Mecha pilots are no longer bothered by incessant loot panels while
holding ALT for strafe disable.
/🆑
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Adds a Wizard-themed map to the deathmatch (#81640)
## About The Pull Request
Deathmatch is severely lacking in HIGH IMPACT MAGIC LARPING. So I added
a big ass wizard arena. The arena itself is based off the wizard den.
Loadouts:
**Wizard:** Standard all-rounder. Got magic missile, jaunt, and
forcewall. Regular gear.
**Pyromancer:** Fire guy. Red robes, fireball, smoke.
**Electromancer:** Zappy guy. Lightning and tesla shock.
**Necromancer:** Is a skeleton. Has Scream for Me and blink.
**LARPer:** Straight from Station & Spessmen. Fake robes and can only
throw lightning and repulse.
**Chuunibyou:** Classic animage. Got chuuni buff and magic cards.
**Battlemage:** Melee fighter. Got some armor and a big hammer with
instant summons.
**Apprentice:** Underpowered until they find a mystery box. Got charge.
**Gunmancer:** Who needs magic when you have guns? Starts with an m1911,
lesser gun summons, and knock.
**Monkeymancer:** Is a monkey. Can summon monkeys and gorillas. Has a
banana.
**Chaosmancer:** Jumbled robes. Starts with a chaos rod. Can rod form
and summon traps for high chaos.
**Funnymancer:** It's just a clown with a banana staff.
The map itself is a pretty standard arena with a long sightline in the
middle. Each participant spawns in their own room complete with a magic
item box. The very southern portion of the ship has a standard mystery
gun box. Soon after the round starts, a hostile gelatinous cube in the
center of the map will break out and attack whoever it sees. Inside its
enclosure is a free death wand. Map has been tested to make sure
deathmatch participants can't escape the deathmatch.
## Why It's Good For The Game
Deathmatch provides a unique opportunity for people to play with
mechanics they will not often get to use. Allowing people to play wizard
for a few minutes shouldn't cause too much harm aside from admin logging
from explosions, which hopefully a fix is in the pipeline for.
## Changelog
:cl:Motho
add: Added wizard-themed deathmatch map.
add: Added mystery wand box.
/🆑
* Makes viewers() defines (#82767)
* Fixes Pseudo circuit delay & some missed cell define usages (#82771)
## About The Pull Request
- Fixes #82688
If the circuit cost is<= 1% of `STANDARD_CELL_CHARGE` then the delay is
5 seconds, if the circuit cost is >= 50% of `STANDARD_CELL_CHARGE` then
delay is 1 minute. All other delay values are interpolated in between
these 2.
- Pseudo circuits don't use power when used on cooldown
- Makes `INSPECTOR_ENERGY_USAGE_*` defines values use standard cell
values
## Changelog
🆑
fix: pseudo circuit adapter computes recharge delay durations correctly
& won't use power when on cooldown
code: uses standard cell defines for N-spect scanner
/🆑
* Lava/Plasma River tiles now immerse you in them (#82736)
## About The Pull Request
This adds the "immerse" element to lava tiles.

It's a tad hard to see because you're super on-fire, but it still looks
nice.
## Why It's Good For The Game
Eye candy, pretty...
## Changelog
🆑 Rhials
qol: Lava and plasma rivers now immerse you in them.
/🆑
* Adds `ALLOW_RESTING` to a bunch of items (#82761)
## About The Pull Request
Allows you to alt-click a bunch of items while resting.
Fixes #82788
## Why It's Good For The Game
Some of these, such as storage, are bugfixes. You shouldn't need to be
standing up to configure a spray can, or change the direction of your
bedsheet
Others are just sensible changes.
## Changelog
🆑 Melbert
fix: You can open bags with alt click while resting again
qol: Many items which previously required you to stand to alt-click now
don't, such as bedsheets and spray cans
/🆑
* Fixes sight range on lootpanel [no gbp] (#82765)
## About The Pull Request
When asked to make lootpanel visible at range they did not just mean
_any range_
AI alt click was a little weird (still is) but now it works
(TM BUG)
Fixes #82768
* Adds Omnitools for engineer and medical cyborgs, reducing on inventory clutter. (#82425)
[This PR is a bounty requested by Ophaq and worked on by
Singul0.](https://tgstation13.org/phpBB/viewtopic.php?f=5&t=36013)
All of the following description in this PR is written by Ophaq as to
what this PR entails:
In this PR, the medical and engineering cyborg's tools are completely
reworked and condensed into an arm similar to the implant a carbon would
get. The tools are shown in a radial wheel around the character to quick
select what is needed instead of looking for it in a cluttered bag of
items. There are a few tools such as the blood filter for the medical
cyborg, as well as the welder, gas analyzer, and t-ray scanner for the
engineering cyborg excluded from the radial wheel. mostly due to their
inherent inmodularity


Each cyborg gets two arms in case the player wishes to have one on the
side to quick swap to, like having a scalpel in one arm and a hemostat
in the other on the hotbar for convenience or just preference. An
upgraded version of the tools has been added to each respective cyborg
upgrade node with somewhat faster action speed. The upgrade replaces the
arms and transforms them into the "advanced" version which is currently
the same sprite as the regular but just a faster and more efficient
version. The sprites for the surgical arm currently look good but may
need replacing later if someone who wishes to resprite them down the
line decides to do so.
As it currently stands, the medical cyborg's magical bag of gadgets
takes up a lot of your screen space and as a player who plays medical A
LOT, this was a MUCH NEEDED quality of life feature.
The amount of clutter in a medical cyborg's bag makes it in my opinion,
hard to see at the bottom of the screen and a nuisance to constantly
close compared to other models. My standard set up for playing medical
cyborg on the hotbar is 1=med analyzer, 2=usually a secondary surgery
tool or injector, and 3=another surgery tool. The flow of gameplay
during surgery ends up being surgery tool, hit 3 and drop it, surgery
tool, repeat or for efficiency using X to swap between the two surgery
tools I need on 2 and 3. This gets tedious especially after so many
hours of playing medical cyborg. I know some people may disagree, but I
think it would help a lot of help to speed up this flow of gameplay
during surgery and declutter.
By turning the medical cyborg's toolset into an omni-surgery tool which
functions like the surgery arm implant's radial wheel, this would
greatly declutter by like an entire row and make things easier on
medical cyborg players. Having a secondary in the bag helps with
efficiency for those players who like having an extra tool on their
hotbar and swapping back and forth would also improve efficiency and
make less swapping by hitting Z needed. Additionally with the upgraded
version as an optional upgrade in the mediborg tech, this also lets them
be on par with players who use advanced tools late game but not at the
level of alien tools where players would obviously out compete a
mediborg in terms of action speed.
Engineering models also benefit from this rework but at a slightly
different and lesser way whereas certain tools are excluded such as the
welder, due to the way they work on refill and the gas scanner and t-ray
scanner not counting as tool components are not included in the arms.
Syndicate versions of the engineering and medical cyborg also get these
arms, unupgraded.
🆑
add: Adds an omnitoolset for both engineering and medical cyborgs,
containing various basic tools
qol: Engineer and Medical module inventory space is now significantly
decluttered
/🆑
---------
Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com>
* Fixes dropdown displaytext not working for numeric values (#82778)
## About The Pull Request
https://github.com/tgstation/tgstation/pull/82697 broke the prefs menu
downstream; we have a couple of dropdown choices that are numeric but
that make use of `display_names` to map those choices to appropriate
strings.
The code was assuming that `value` would always be a string when calling
`capitalizeFirst(value)`. Basically it should be doing
`display_names[value]` when `display_names` are present.
## Why It's Good For The Game
Fixes an oversight/bug.
## Changelog
🆑
fix: dropdowns that use display_names as an alias for numeric values
will no longer cause tgui bluescreens
/🆑
* [NO GBP] HPLC can purify inverted chems (#82727)
## About The Pull Request
- Fixes #82725
Inverted chems are now coloured green and classified as clean (like
before my general maintenance PR) which means they can be purified
again.
Only chems that are too impure to use & have an inverted chem value are
coloured red in the UI and not when they are just of the inverted type
## Changelog
🆑
fix: HPLC can purify inverted chems and are now coloured green(clean) in
the UI
/🆑
* Lathes compute their local storage size correctly (#82770)
## About The Pull Request
Basically we have to add the material container before we call parent
Initialize(which calls `RefreshParts()`), else the container doesn't get
initialized early and we skip over computing storage sizes
## Changelog
🆑
fix: off station & round start lathes with local storage don't have
infinite storage size.
/🆑
* Arcmining QoL: GPS component to scanned vents and vent(pin)pointer (#82724)
## About The Pull Request
Scanning ore vents will now tag them on GPS so you can find them easily
when you are prepared (and remove them when they are tapped). Also adds
special pinpointer to help with finding unscanned vents in a first
place. And adds missing uranium overlays for scanned vents. Because why
not.
<details>


</details>
## Why It's Good For The Game
While looking at mineral density to find vents is somewhat fun and
entertaining, having some sort of upgrade to make finding them easier
adds a bit of a progression. Also re-finding already scanned vents can
be a bit annoying. You need to fill your backpacks with GPSs and tag
them manually. It is also inconsistent with geysers that are added to
positioning after you scan them. And with tendrils, which are always
visible.
## Changelog
🆑
add: added ventpointer that points toward nearby ore vents and can be
bought with mining points
balance: scanned ore vents can now be found with GPS
fix: fixed ore vents missing overlay icon for uranium
/🆑
* Fix oven tray runtime (#82782)
## About The Pull Request
Fixes a lil typo from the interaction refactors that broke the ability
to load oven trays from containers
## Why It's Good For The Game
squamsh bug
## Changelog
🆑
fix: loading oven trays from serving trays and other containers works
again
/🆑
* Fix flaky test detection (#82790)
- Add missing job pagination.
- Fix multiple jobs being able to fail if they aren't in
`CONSIDERED_JOBS`
* Add utf8 support for state laws button (#82789)
## About The Pull Request
Adds UTF-8 support for state laws HTML page. Now it supports more than
just English
## Why It's Good For The Game
Support for other symbols, such as cyrillic

* Update highest available sound channel (#82780)
Current channels are:
```
```
So, the highest available now is 1013
Updating the thing which everyone forgot for 7 years. Not that many
special channels were added either way
* Revert "Borg movement now has sounds" (#82795)
Reverts tgstation/tgstation#82704
The sound ingame appears much louder than the original author intended.
Not to mention that the sound loops stack for every borg moving near
you.
* Use defines for "General Research" where it's not used (#82785)
## About The Pull Request
There is a define for it, so why not use it?
## Why It's Good For The Game
Defines good
* [READY] the unfuckening of clothing rendering (#79784)
refactors clothing visors to use the same system, including masks being
toggled and stuff like riot helmets toggling using the same system and
welding helmets and such
adds a handler that updates all visuals in slots that an item has
obscured, each visual proc calls that so you no longer have weird shit
happening like having to hardcode a proc for heads where you need to
also update hair, mask, glasses everytime you put on an item
one thing here i could also do is make check_obscured_slots return the
HIDEX flags instead of item slots, because in 99% of cases its hardcoded
to be ran against specific slots (like eye code running it against the
glasses slot), but maintainers didnt seem to like that :/
fuck this 2003 bullshit
theres like several bugs here i fixed but i forgot them all and they are
small
* Allows vv investigate /appearance + better checking image (#82670)
* Fixes Alien Numerical Identifier Transfer System (#82762)
## About The Pull Request
Fixes #82756
I'm not sure what the root cause of the issue is or why it broke so
recently (this has been a thing since #49150) but I went and cleaned up
the code and ensured that we always reset the `name` to the `initial()`
value we have for it if we determine that we need to transfer over the
`numba` from the old xenomorph. This is done by a new proc which is a
lot less convoluted from the old system (always respecting var-edited
names and stuff like that) that should make it flow a lot better and
make it more hardy against double-addition of the `numba` to the name.
## Why It's Good For The Game
Having two numbers in your name is weird, should only have one.
[x] I tested this PR
## Changelog
🆑
fix: Evolved aliens should no longer have two numbers in their name.
/🆑
* [NO GBP] Fixes runtime in advanced camera console (#82699)
## About The Pull Request
We only unset machine if we have a user who has logged in
## Changelog
🆑
fix: Fixes runtime in advanced camera console when power is turned off
/🆑
* Refactors how basic ais do their success/failures (#82643)
* Rocky DLXIII: Fitness to Athletics, Athletics skill influences Boxing against Boxers, Boxing overhaul, Evil Boxing (#82611)
as the only meaningful reward
Basically just a rebranding so that it is more broad in its concept. It
isn't just about peak physique. It's about how you can apply it too.
Reaching Legendary rewards you with the Golden Gloves.
I started it in this pr here
https://github.com/tgstation/tgstation/pull/80635
But this is a more significant overhaul of boxing from the ground up.
Namely, it now is majorly influenced by the Athletics skill, and also
more thoroughly aligns with conventional punching in its current state.
However, a major component of this is that boxing's breadth of mechanics
is only relevant when used against another boxer. Non-boxer targets are
only ever going to get smacked by a stamina punch, as it is currently
(and more or less the same values too). Additionally, boxers cannot
punch someone who is either unconscious or in stamina crit, so it can't
be used to maintain stamcrit.
- Boxing now has a One-Two Punch mechanic. Swapping between the left and
right mouse buttons to punch and maintaining this causes every second
punch to do more damage (to boxers). Breaking this chain by punching
with the same button twice will cause you to lose damage (against
boxers).
- Boxing now can have crits occur below 50 stamina damage (against
boxers). However, to knock someone out clean, the target must be
staggered from a previous crit first. (Or I guess be staggered at all,
maybe their shoelaces were tied or something). Crit probabilities are
determined by adding your Athletics probability skill bonuses to your
unarmed effectiveness, and then reduced by the targets own Athletics
skill bonuses. It is hard for two athletes to knock each other out in
one blow. It is trivial for a legendary boxer to knock out a novice in a
single punch. Cybernetically enhanced boxers are dangerously effective
at boxing.
- Boxers can block other boxers by using throw mode, but the chances of
doing so is based on Athletics skill bonuses. A successful block causes
the attacker to take stamina damage (as does the blocker, but less so).
- Participating in boxing increases the Athletics skill. Your gains are
probably slower than normal training, but you at least get some reward
for doing so. Only relevant if your opponent is a boxer. Get a sparring
partner!
So this is all well and good, but what if you're a scoundrel with no
care for the other person in this equation? Well, that's where Evil
Boxing comes in. Evil Boxing has absolutely no restrictions at all, and
can freely use its boxing abilities against anyone. Even non-boxers. You
can even grab people! Wow, what a scumbag. I bet you even king hit
people. Thankfully, only an admin can make you into an Evil Boxer.
(against boxers)
Both mutations have a flimsy increase to instability of 5 because of how
incredibly particular the bonus is.
Strength now reduces the amount of stamina damage inflicted via
exercising by half. Strength also adds a +2 damage bonus on boxing
punches while boxing against boxers (this doesn't influence normal
unarmed attacks whatsoever, or boxing against nonboxers). Obviously,
evil boxers just get this benefit against everyone because they're
knaves.
Stimmed increases the duration of the exercised status effect by one
factor. (That is, if you have no other modifiers, it will double the
duration on its own)
@Jacquerel was racking their brain trying to come up with an alternative
to the skill rewards of Fitness. At the moment, sprite growth is not
only a really bad bonus (it does literally nothing but make you big, and
thus is actually a detriment due to how intrusive sprite size is with
interaction, and plays weird with other sprite changing effects), but
isn't really all that interesting for all the effort put in.
Problem is, how do you make Fitness meaningful without making it a
powergame mechanic? Simple! You make it applicable to a really niche,
self-contained but still utilized game mechanic that is engaging to
participate in and makes you meaningfully very good in it. AND scratches
that power scaling itch that many players have.
Boxing is reasonably self-contained as is, but pretty bland due to how
old it is. While maintaining that self-contained nature, I hoped to
expand the interactivity of boxing a little bit by giving it a small
mini-game in of itself. And also introduce ways to simulate the idea of
boxing a bit better.
The idea of being an Evil Boxer is funny. For every Rocky, there is a
[Insert Rocky Villain Here that isn't Creed]. But in this case, it's
probably some Syndicate douchebag looking to punch clowns into a coma
and inspire the mime to take up shadowboxing in revenge.
🆑
add: Replaces Fitness with Athletics; same skill, but now more
specifically applicable to boxing.
add: Athletics does not increase sprite size.
balance: Overhauls Boxing to add a lot more depth to the interactions.
Only applicable to other boxers, however. You can still punch the snot
out of non-boxers though. But only up to stamcrit or unconsciousness. No
hitting someone who can't fight back!
balance: Adds Evil Boxing, which is the evil and fucked up version of
boxing that you kill people with and are allowed to flout the sacred
rules of boxing as you please. Everyone is a victim!
/🆑
* Cargo ui refactor -> TS (#82745)
Refactors cargo ui, fixing some visual bugs, just making it look better
in general
Should be no gameplay effect other than it looking better
<details>
<summary>pics</summary>




Fixes #81442

Made a type grabber for backend data in case you want to make your own
typescript uis
`logger.log(getShallowTypes(data))`

Otherwise cargo's data is unreadable
</details>
Any UI over 500 lines should get broken up to reduce cognitive load
~~Any ui in javascript shouldn't exist~~
Cargo UI is better
Typescript
🆑
fix: Cargo's supply console has been upgraded visually.
/🆑
---------
Co-authored-by: EricZilla <81941674+EricZilla@users.noreply.github.com>
Co-authored-by: Helg2 <93882977+Helg2@users.noreply.github.com>
* Makes lavaland stone tiles prevent immersion (#82807)
## About The Pull Request
Adds the same trait that lavaproof rods have to the stone tiles, so
things can continue being visually outside of the lava
## Why It's Good For The Game
this shit looks goofy

## Changelog
🆑 FlufflesTheDog
fix: Stone tiles (and things on them) no longer get immersed in lava
/🆑
* Getting up from prone, z movement, and mod de/activation don't do cogwheels (#82794)
Adds `hidden` to getting up (from prone), moving up (z-movement), moving
down (z-movement), and de/activating MODsuits
- Getting up from prone happens very often, makes it a bit hard to
differentiate when people are doing actions or just crawling around.
- If we want feedback for getting up, should just be a chat message.
- Moving up and down is just movement. Only affects using the verbs.
- Same as before: If we want feedback, it should just be a chat message.
- Other methods of moving up/down (IE, ladders) are untouched / retain
their cogwheel.
- De/activating modsuits have their own visual feedback and sound
effects associated. Both feels unnecessary.
🆑 Melbert
qol: Getting up from prone, moving up or down a z-level (not via
ladders, naturally. Like flight), and de/activating your modsuit no
longer shows cogwheel effect
/🆑
* [NO GBP]Inversely scale mechanical favor with STANDARD_CELL_CHARGE. (#82801)
## About The Pull Request
Makes the mechanical sect cell sacrifice favor adjustment inversely
scale with STANDARD_CELL_CHARGE. This reduces it by a factor of 1,000.
## Why It's Good For The Game
So they don't get 1,000 times the favor as intended from a cell.
## Changelog
🆑
fix: Fixes mechanical sect gaining 1,000 times the favor from a cell
sacrifice.
/🆑
* Fix all types of damage to the head causing brain damage (#82763)
## About The Pull Request
5 months ago when I separated this stuff out to its own proc I forgot a
damagetype check.
## Changelog
🆑 Melbert
fix: Only brute damage causes brain damage when applied to the forehead,
rather than all damage types
/🆑
* Converts ListInputModal to actually be a Modal | Adds ListInputWindow which uses it (#82792)
## About The Pull Request
If we say something is a Modal it should actually be a Modal
## Why It's Good For The Game
You can now use this system in other windows if you want.
Fixed the misnomer.
---------
Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com>
* Higher capacity SMES variant for low maintenance areas; miners can access their maintenance area on mining base, gulag no longer saps all power from the main base (#82713)
## About The Pull Request
Creates a higher capacity version of the SMES unit that spawns in with
super capacity cells, as well as a full version. Places the full version
into all the AI sats (which all have independent grids for the most
part), some remote space ruins and the mining base. These SMES units are
intended for areas where players aren't expected or cannot reasonably be
expected to constantly monitor power usage within the length of a
standard round.
Miners can access their power stations, telecommunications box and
atmospheric station on the mining base. They're really the only people
who care, after all.
The gulag's SMES (also now upgraded) no longer saps power from the main
base due to having its input terminal rigged to the main base power
grid, and thus demanding all power from the grid greedily. To revert
this in-game is a single power cable placed back east of the SMES unit.
## Why It's Good For The Game
The power changes made some of the once largely low-maintenance areas
much more likely to run out of power more quickly than you would expect.
These aren't areas expected to be maintained or monitored by engineering
(probably because they're not easily accessed), and they're just kind of
troublesome to deal with on a round-to-round basis.
Mining had this problem triple-fold. It had significant drain with no
convenient method of installing power generation at all, miners couldn't
access what power generation there was without using their 'skeleton
key' to open the way (only engineers could, and they aren't expected to
come down to mining at all), and even then, there was the gulag SMES
just eating all the power anyway. I'm pretty sure that SMES unit was the
biggest culprit of them all, but I think this conveniently future proofs
these issues for the time being.
## Changelog
🆑
add: Adds a higher capacity SMES unit to lower maintenance areas and
maps.
fix: Miners can actually access and fix their engineering issues on the
lavaland base via the engineering section of the base.
fix: The gulag SMES unit is no longer needlessly draining the entire
power grid of the main mining base.
/🆑
* Revert "Higher capacity SMES variant for low maintenance areas; miners can access their maintenance area on mining base, gulag no longer saps all power from the main base (#82713)"
This reverts commit
|
||
|
|
c1a775efe1 |
Implements data systems (#82816)
## About The Pull Request Subsystems currently come in two different flavors: 1. Systems that process at intervals with the master controller 2. Global data containers that do not fire And I think they should be split up... This moves 4 non firing, non init subsytems -> datasystem ## Why It's Good For The Game Clarity in code |
||
|
|
72ba08caf9 |
Getting up from prone, z movement, and mod de/activation don't do cogwheels (#82794)
## About The Pull Request
Adds `hidden` to getting up (from prone), moving up (z-movement), moving
down (z-movement), and de/activating MODsuits
## Why It's Good For The Game
- Getting up from prone happens very often, makes it a bit hard to
differentiate when people are doing actions or just crawling around.
- If we want feedback for getting up, should just be a chat message.
- Moving up and down is just movement. Only affects using the verbs.
- Same as before: If we want feedback, it should just be a chat message.
- Other methods of moving up/down (IE, ladders) are untouched / retain
their cogwheel.
- De/activating modsuits have their own visual feedback and sound
effects associated. Both feels unnecessary.
## Changelog
🆑 Melbert
qol: Getting up from prone, moving up or down a z-level (not via
ladders, naturally. Like flight), and de/activating your modsuit no
longer shows cogwheel effect
/🆑
|
||
|
|
56452102a7 |
[MIRROR] Fix 100k toggle move intent comsig runtimes (#82239) (#27066)
Fix 100k toggle move intent comsig runtimes (#82239) ## About The Pull Request `user` isn't passed in many situations in which `toggle_move_intent` is called and also it's useless to pass `user` because it should just be The Mob Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com> |
||
|
|
2c335bc2f0 |
Fix 100k toggle move intent comsig runtimes (#82239)
## About The Pull Request `user` isn't passed in many situations in which `toggle_move_intent` is called and also it's useless to pass `user` because it should just be The Mob |
||
|
|
daadcb1677 |
[MIRROR] Skateboard tweaks and buffs. (#26908)
* Skateboard tweaks and buffs. * Update code/datums/components/riding/riding_vehicle.dm --------- Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com> Co-authored-by: Pinta <68373373+softcerv@users.noreply.github.com> |
||
|
|
bff8de4fe1 |
Skateboard tweaks and buffs. (#81928)
## About The Pull Request I have been dissatified with the situation of skateboards for a long while now, especially with the 'pro' and 'hoverboard' versions that provide negligeable bonuses for the high price they warrant. On top of all things, this PR makes the aforementioned two subtypes faster than the standard and improvised skateboards. Second, the hoverboard now hovers and can be used in zero g (more info in the CL). The thing costs about 2000, so this is pretty much deserved. Third, skateboards respect move intents. While in walk intent, you will ride it slowly, but you also won't crash against other things. Fourth, improvised skateboards are a nick more unstable and not mechanically on par with standard skateboards. ## Why It's Good For The Game Skateboard were cooler back when you would go fast and die young by crashing into an airlock/spessman/wall at stim speed imho, also see the first paragrath of the above section. ## Changelog 🆑 balance: The pro skateboard and hoverboard are now faster. balance: The improvised skateboard is a nick more unstable than the standard, so the two aren't exactly the same. add: Riding a skateboard on walk intent will prevent you from crashing into things, at the cost of speed. add: hoverboards now actually hovers and can be used even in zero g. There are a caveat to it: It cannot be ridden on open space gaps deeper than one level or actual space, unless there're objects that prevent falls, like lattice or catwalks. /🆑 |
||
|
|
33b521cfaa |
[MIRROR] Adds a 1 second delay to moving up and down with the verb/keybinds to disable z-level combat cheese (#26654)
* Adds a 1 second delay to moving up and down with the verb/keybinds to disable z-level combat cheese (#81666) ## About The Pull Request Adds a 1 second delay to moving up and down with the verb/keybinds to disable z-level combat cheese ## Why It's Good For The Game Fighting someone using keybinds to move between z-levels over and over again is damn near impossible. Try it sometimes, it's as bullshit as if we had bombs that were cross-Z-level. ## Changelog 🆑 balance: Adds a 1 second delay to moving up and down with the verb/keybinds to disable z-level combat cheese /🆑 --------- Co-authored-by: Ghom <42542238+Ghommie@ users.noreply.github.com> * Adds a 1 second delay to moving up and down with the verb/keybinds to disable z-level combat cheese --------- Co-authored-by: Iamgoofball <iamgoofball@gmail.com> Co-authored-by: Ghom <42542238+Ghommie@ users.noreply.github.com> |
||
|
|
98c9ff0bb0 |
Adds a 1 second delay to moving up and down with the verb/keybinds to disable z-level combat cheese (#81666)
## About The Pull Request Adds a 1 second delay to moving up and down with the verb/keybinds to disable z-level combat cheese ## Why It's Good For The Game Fighting someone using keybinds to move between z-levels over and over again is damn near impossible. Try it sometimes, it's as bullshit as if we had bombs that were cross-Z-level. ## Changelog 🆑 balance: Adds a 1 second delay to moving up and down with the verb/keybinds to disable z-level combat cheese /🆑 --------- Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com> |
||
|
|
b99cbab577 |
[MIRROR] Fixes blocking movement being weird (#26538)
* Fixes blocking movement being weird (#81505) ## About The Pull Request I was failing to clear the input removal if we had no movement So you'd step, stop moving, and retain it Then whenever we rotate, we continue to hold onto that removal forever. Weird. Handles... part of? #81501 ## Changelog 🆑 fix:Blocking movement works properly again /🆑 * Fixes blocking movement being weird --------- Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com> |
||
|
|
27d61bdf22 |
Fixes blocking movement being weird (#81505)
## About The Pull Request I was failing to clear the input removal if we had no movement So you'd step, stop moving, and retain it Then whenever we rotate, we continue to hold onto that removal forever. Weird. Handles... part of? #81501 ## Changelog 🆑 fix:Blocking movement works properly again /🆑 |
||
|
|
9a7e74d699 |
[MIRROR] Makes AI tracking more snappy, improves API (AI movement change) (#26508)
* Makes AI tracking more snappy, improves API (AI movement change) (#81401) ## About The Pull Request Ok so tracking (from the datum) worked, but when used to follow someone it had a noticable delay from the datum needing to wait for process to fire to do its work This would be an expensive proc to run constantly, but we don't really have to (there are not that many ai eyes in the world). So rather then only processing to keep step, let's track the target mob by its movement, and then fall back on a process loop to handle rechecking in case of camera memes. This does technically mean you won't "break" the track if the cameras go out until the tracked mob moves, but I think that's a reasonable price to pay for more responsive movement. I think I could make our current system work with it too, though it would be a bit more wasteful. John if you have opinions just lay into me. I've also renamed/pulled apart the helper procs for the trackable datum, with the hope of making how they are used more understandable at a glance Oh and rather then holding a weakref since I needed MOVED anyway I just use QDELETING to free the ref if the mob goes away ### Edit: #### Glide size touchups Implements glide size mirroring so we move at the same speed as our target Also moves the existing signal to send to the trackable datum itself, as appears intended from the doc comment #### AI behavior changes Rewrites ai movement to be less dumb OK so 2 things here. One is a behavior change, the other is a visual QOL thing. The way ai movement works is we move graduated "steps". Either moving 1, 2, or 3 steps per tick. We do this by, so long as input is held down, incrementing a number called "sprint" Currently it'll go from 10 to 50 (formula effectively looks like steps = (sprint / 20) + 1)) Anyway, this is... not fine but ok, but the way we handle deceleration is ass IMO. It's literally just wait 0.5 seconds and sprint resets. I think this feels crummy, so instead I've made it decay depending on how long you go between inputs, at 7x greater rate then it increases. That's the behavior change. Visual change is a lot easier. Ais were not gliding properly. They assumed they had 4 ticks to move a tile, rather then 1. This meant they'd jump around constantly, to catch up to where we expect them to be. I've fixed this by giving them 1 tick instead. Should feel a lot better ## Why It's Good For The Game Snappier response times, cleaner code ## Changelog 🆑 add: AI's acceleration now smoothly decays, instead of just falling back down to 0 after 0.5 seconds fix: AI's standard movement (non accelerated) is smooth now, instead of constantly jumping around fix: AIs will now follow their targets more closely, shouldn't have any issues with them lagging behind anymore /🆑 * Makes AI tracking more snappy, improves API (AI movement change) --------- Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com> |
||
|
|
5c927e406b |
Makes AI tracking more snappy, improves API (AI movement change) (#81401)
## About The Pull Request Ok so tracking (from the datum) worked, but when used to follow someone it had a noticable delay from the datum needing to wait for process to fire to do its work This would be an expensive proc to run constantly, but we don't really have to (there are not that many ai eyes in the world). So rather then only processing to keep step, let's track the target mob by its movement, and then fall back on a process loop to handle rechecking in case of camera memes. This does technically mean you won't "break" the track if the cameras go out until the tracked mob moves, but I think that's a reasonable price to pay for more responsive movement. I think I could make our current system work with it too, though it would be a bit more wasteful. John if you have opinions just lay into me. I've also renamed/pulled apart the helper procs for the trackable datum, with the hope of making how they are used more understandable at a glance Oh and rather then holding a weakref since I needed MOVED anyway I just use QDELETING to free the ref if the mob goes away ### Edit: #### Glide size touchups Implements glide size mirroring so we move at the same speed as our target Also moves the existing signal to send to the trackable datum itself, as appears intended from the doc comment #### AI behavior changes Rewrites ai movement to be less dumb OK so 2 things here. One is a behavior change, the other is a visual QOL thing. The way ai movement works is we move graduated "steps". Either moving 1, 2, or 3 steps per tick. We do this by, so long as input is held down, incrementing a number called "sprint" Currently it'll go from 10 to 50 (formula effectively looks like steps = (sprint / 20) + 1)) Anyway, this is... not fine but ok, but the way we handle deceleration is ass IMO. It's literally just wait 0.5 seconds and sprint resets. I think this feels crummy, so instead I've made it decay depending on how long you go between inputs, at 7x greater rate then it increases. That's the behavior change. Visual change is a lot easier. Ais were not gliding properly. They assumed they had 4 ticks to move a tile, rather then 1. This meant they'd jump around constantly, to catch up to where we expect them to be. I've fixed this by giving them 1 tick instead. Should feel a lot better ## Why It's Good For The Game Snappier response times, cleaner code ## Changelog 🆑 add: AI's acceleration now smoothly decays, instead of just falling back down to 0 after 0.5 seconds fix: AI's standard movement (non accelerated) is smooth now, instead of constantly jumping around fix: AIs will now follow their targets more closely, shouldn't have any issues with them lagging behind anymore /🆑 |
||
|
|
4bc678b264 |
[MIRROR] Adds head-only target hotkey (#26416)
* Adds head-only target hotkey (#81222) ## About The Pull Request Adds a new optional hotkey that targets only the head and does not cycle to eyes or mouth. Currently the way the numpad hotkeys work on /tg/ is every key targets one body part... except 8. Numpad 8 Currently cycles through head-eyes-mouth, despite _**numpad 7 already handling mouth and numpad 9 already handling eyes**_. There's no head-only key. * Adds head-only target hotkey --------- Co-authored-by: Swift <jackwars4@gmail.com> |
||
|
|
9dc8c12cb0 |
Adds head-only target hotkey (#81222)
## About The Pull Request Adds a new optional hotkey that targets only the head and does not cycle to eyes or mouth. Currently the way the numpad hotkeys work on /tg/ is every key targets one body part... except 8. Numpad 8 Currently cycles through head-eyes-mouth, despite _**numpad 7 already handling mouth and numpad 9 already handling eyes**_. There's no head-only key. |
||
|
|
8705e531e1 |
[MIRROR] Replace natural beheading with cranial fissures (splitting your skull) [MDB IGNORE] (#26020)
* Replace natural beheading with cranial fissures (splitting your skull) (#80703) ## About The Pull Request Replaces natural beheading (doing a lot of damage to the head) with cranial fissures, which split your skull in half.  While you have this wound, your eyes can be pulled out of your head with bare hands, and slipping will spill your brain out of your head. Removes beheading objective from traitor. Zombies can be beheaded all the same. Any other way of beheading, such as surgery or amputation shears, is still possible. Closes #80439 ## Why It's Good For The Game I've enjoyed seeing the results of the test merge to remove natural beheading. At 947 beheadings in a week, 1 in every 7 deaths resulted in a beheading. This makes it significantly easier to remove people from rounds as the brain is generally critical to actually reviving someone. While round removal is fine, it should be something that is intentionally performed with enough effort. Mass round removals ought to require a significant amount of effort. There are plenty of ways to round remove someone, but it ought not be an incidental choice. The effects of beheading removal have shown some interesting anecdotal highlights (nothing here is backed up with stats, so take it with a grain of salt): 1. As a whole, people did not really replace it with anything. The biggest alternative has been lighting people on fire, but this has not been done at a significant enough scale at all to be a noteworthy problem, and is still fixable with enough effort. 2. Cult and rev rounds have played out far more interestingly. In one round I was adminning a head of staff who intended to behead every revolutionary they saw, but because they didn't, the back and forth continues. I've also had opportunities to revive head revs that I am skeptical would've been available to me otherwise. Complete removal of beheading was not chosen as it does not feel right for a repeated fire axe to the head to do basically nothing. The current implementation is intended to be something that is just not useful enough to do on everyone you see, but is still appreciably an effect. ## Changelog 🆑 balance: Instead of too much damage to the head beheading someone, it will now split their skull in half. While their skull is open, you can rip out their eyes with your hands. and they will spill their brain out of their head if they slip. balance: The Path of Blades ascension will accept either a beheaded person, or someone with their skull split open. del: Removed the beheading objectives from traitor. /🆑 * Replace natural beheading with cranial fissures (splitting your skull) --------- Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com> |
||
|
|
a140505346 |
Replace natural beheading with cranial fissures (splitting your skull) (#80703)
## About The Pull Request Replaces natural beheading (doing a lot of damage to the head) with cranial fissures, which split your skull in half.  While you have this wound, your eyes can be pulled out of your head with bare hands, and slipping will spill your brain out of your head. Removes beheading objective from traitor. Zombies can be beheaded all the same. Any other way of beheading, such as surgery or amputation shears, is still possible. Closes #80439 ## Why It's Good For The Game I've enjoyed seeing the results of the test merge to remove natural beheading. At 947 beheadings in a week, 1 in every 7 deaths resulted in a beheading. This makes it significantly easier to remove people from rounds as the brain is generally critical to actually reviving someone. While round removal is fine, it should be something that is intentionally performed with enough effort. Mass round removals ought to require a significant amount of effort. There are plenty of ways to round remove someone, but it ought not be an incidental choice. The effects of beheading removal have shown some interesting anecdotal highlights (nothing here is backed up with stats, so take it with a grain of salt): 1. As a whole, people did not really replace it with anything. The biggest alternative has been lighting people on fire, but this has not been done at a significant enough scale at all to be a noteworthy problem, and is still fixable with enough effort. 2. Cult and rev rounds have played out far more interestingly. In one round I was adminning a head of staff who intended to behead every revolutionary they saw, but because they didn't, the back and forth continues. I've also had opportunities to revive head revs that I am skeptical would've been available to me otherwise. Complete removal of beheading was not chosen as it does not feel right for a repeated fire axe to the head to do basically nothing. The current implementation is intended to be something that is just not useful enough to do on everyone you see, but is still appreciably an effect. ## Changelog 🆑 balance: Instead of too much damage to the head beheading someone, it will now split their skull in half. While their skull is open, you can rip out their eyes with your hands. and they will spill their brain out of their head if they slip. balance: The Path of Blades ascension will accept either a beheaded person, or someone with their skull split open. del: Removed the beheading objectives from traitor. /🆑 |
||
|
|
dbf3f79d54 |
[MIRROR] Update zlevel movement verbs to check if remotely controlling something else (like adv camera console) [MDB IGNORE] (#25917)
* Update zlevel movement verbs to check if remotely controlling something else (like adv camera console) (#80649) ## About The Pull Request The zlevel movement verbs Up and Down didn't check for if you were remotely controlling something else before issuing its movement. This was perceivable when trying to use an advanced camera console like the Xenobiology consoles and attempting to use the hotkeys for those verbs, for instance in a station like Tramstation where Xenobiology and Cytology span two z-levels. ## Why It's Good For The Game This behavior is similar to the way the AI eye moves, and it works there - so I have to assume this check was left out by accident. By fixing it, it'll make some xenobiologist lives easier, and prevents confusion from there being a HUD action for something without a hotkey in that case. ## Changelog :cl:Echomori fix: trying to move up or down while controlling an advanced camera console now properly moves the camera up or down, not your body /🆑 * Update zlevel movement verbs to check if remotely controlling something else (like adv camera console) --------- Co-authored-by: qkjrmid <qkjr@qkjr.xyz> Co-authored-by: Pinta <68373373+softcerv@users.noreply.github.com> |
||
|
|
03b7e081af |
Update zlevel movement verbs to check if remotely controlling something else (like adv camera console) (#80649)
## About The Pull Request
The zlevel movement verbs Up and Down didn't check for if you were
remotely controlling something else before issuing its movement. This
was perceivable when trying to use an advanced camera console like the
Xenobiology consoles and attempting to use the hotkeys for those verbs,
for instance in a station like Tramstation where Xenobiology and
Cytology span two z-levels.
## Why It's Good For The Game
This behavior is similar to the way the AI eye moves, and it works there
- so I have to assume this check was left out by accident. By fixing it,
it'll make some xenobiologist lives easier, and prevents confusion from
there being a HUD action for something without a hotkey in that case.
## Changelog
:cl:Echomori
fix: trying to move up or down while controlling an advanced camera
console now properly moves the camera up or down, not your body
/🆑
|
||
|
|
9a3fb5c5c1 |
[MIRROR] FOV is Dead (Long Live FOV) [MDB IGNORE] (#25600)
* FOV is Dead (Long Live FOV) * Update _megafauna.dm * Update _vehicle.dm * FOV Hotfix: Actually offsets gameplane render relays * removes redundant visual_shadow * removes GAME_PLANE_UPPER references * Update mob_movement.dm --------- Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com> Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com> Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com> |
||
|
|
ef6fe48e08 |
[MIRROR] Refactors Object Possession into a Component (moar modular, less /mob vars) [MDB IGNORE] (#25534)
* Refactors Object Possession into a Component (moar modular, less `/mob` vars) (#80160) ## About The Pull Request We have two verbs that allow any given mob to take control of an object and move it ephemerally, `/proc/possess()` and `/proc/release()`. These ones leveraged two vars present on every `/mob`: `name_archive` and `control_object`. I don't like having vars clog up my VV and this just injected snowflake behavior in a lot of spots - let's just make it a component that'll clean everything else up. This also opens up the ability to have more objects be under mob control without giving someone verbs that spit out to the blackbox as an admin verb + logs + message admins but that's a later thing. This just subs in the behavior in a nice way. Also, since it's a component, I added a small QoL that we can support now: A screen alert that allows you to get out of the possession early without navigating the stat panel for the specific verb. I think it's neat. You can also trigger the aghost keybind if that's something you want as well. Also also, nothing actually ever cleaned up `control_object` by setting it to null. This means that in the old framework, if a mob got qdelled during a possession, that would have triggered a hung ref harddel. That won't happen anymore. ## Why It's Good For The Game Two less variables taking up crud space in the VSC debugger + view variables panel. Better behavior injection that is far more reusable. Component handling this behavior allows for better extensibility of this function in the future.  ## Changelog 🆑 admin: Object Possession has been reworked, please report any potential bugs. qol: Object Possession should now throw a screen alert for you to unpossess the object instead of you having to search the stat-panel for the "release obj" verb. You can still use the verb but it's a lot nicer now. Aghosting will also work now. /🆑 * Refactors Object Possession into a Component (moar modular, less `/mob` vars) * Refactor hydra quirk The name_archive var is gone, let's store it in the quirk instead --------- Co-authored-by: san7890 <the@san7890.com> Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com> |
||
|
|
f39d539b32 |
Refactors Object Possession into a Component (moar modular, less /mob vars) (#80160)
## About The Pull Request We have two verbs that allow any given mob to take control of an object and move it ephemerally, `/proc/possess()` and `/proc/release()`. These ones leveraged two vars present on every `/mob`: `name_archive` and `control_object`. I don't like having vars clog up my VV and this just injected snowflake behavior in a lot of spots - let's just make it a component that'll clean everything else up. This also opens up the ability to have more objects be under mob control without giving someone verbs that spit out to the blackbox as an admin verb + logs + message admins but that's a later thing. This just subs in the behavior in a nice way. Also, since it's a component, I added a small QoL that we can support now: A screen alert that allows you to get out of the possession early without navigating the stat panel for the specific verb. I think it's neat. You can also trigger the aghost keybind if that's something you want as well. Also also, nothing actually ever cleaned up `control_object` by setting it to null. This means that in the old framework, if a mob got qdelled during a possession, that would have triggered a hung ref harddel. That won't happen anymore. ## Why It's Good For The Game Two less variables taking up crud space in the VSC debugger + view variables panel. Better behavior injection that is far more reusable. Component handling this behavior allows for better extensibility of this function in the future.  ## Changelog 🆑 admin: Object Possession has been reworked, please report any potential bugs. qol: Object Possession should now throw a screen alert for you to unpossess the object instead of you having to search the stat-panel for the "release obj" verb. You can still use the verb but it's a lot nicer now. Aghosting will also work now. /🆑 |
||
|
|
6da5503e2d |
[MIRROR] Refactors Revenants into Basic Mobs [MDB IGNORE] (#24233)
* Refactors Revenants into Basic Mobs * Update revenant_abilities.dm --------- Co-authored-by: san7890 <the@san7890.com> Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com> |
||
|
|
3415828c6b |
Refactors Revenants into Basic Mobs (#78782)
## About The Pull Request I felt bad about taking all the "easy" ones, so let's change it up with a decently difficult one. Revenants are now basic mobs! This alone doesn't change much of anything because it pretty much overrode much of simple_animal code. However we do a few new things. * Multiple code improvements! No more weird proc names that aren't `snake_case`, cleaner variable names, more dmdoccing, etc. * Files are now reorganized, Rather than a 800-line dogshit monofile, we're all nice now * Multiple logic improvements, like early returns to make stuff more readable and the like. many `isnull()` yes * Instead of abusing key ownership logic, we use `mind.transfer_to()` instead for much cleaner behavior when we need to change stuff * Instead of iterating over the entire list of mobs to find dead mobs, we use a new `revenant_relay()` system that automatically handles broadcasting revenant messages to all observers and fellow revenants (like `blob_talk()`) * Instead of having a weird invisible "corpse", we move the revenant inside the actual ectoplasm when they die. This drastically simplifies a lot of wacky code that was completely useless since we still had the mob to work with, but now it's a lot cleaner when it comes down to it. * Some more hooks into stuff like `Life()` that might be useful for other people in the same way this is. * Less <span> crap, more macros, wahoo * Uses an `examine_block()` for when we relay instructions to new revenants. also cache those instructions to save time in the long run * Revenants being stunned, inhibited, and revealed are now managed by status effects rather than being chicanery on `Life()` * Everything should now just in general be a lot nicer to work with. This list is not exhaustive but a lot of the junk 7-year-old code has been gutted and replaced with the modern standards. There are stuff that I explicitly didn't touch and will not be touching in this PR as it's already rather large. * Revenant actions. I touched some proc names but I didn't alter the key ways they work. * Revenant movement. That's another can of worms. * Revenant event code. I just made it use the transfer to system to make a closed loop and that's about it. * Revenant AI. They don't have any, it's an event/admin spawn. I'm not adding AI here. ## Why It's Good For The Game Revenants are more extensible now rather than being a real big clusterfuck of bullshit, should be much easier to tweak stuff here and there or logically follow how the code for this fella should go. The number of weird revenant bugs should go down since we do stuff more simply- but there could be some sleeper bugs that can bite us. ## Changelog 🆑 refactor: Revenants, the mob that's split between planes of Life and Death, have been refactored into a basic mob. While this alone shouldn't touch behavior, a lot of the backend code has been gutted and refactored to try and furnish a better antagonist experience. This might mean that some weird stuff can come up and around, report something if it's utterly broken. code: In order to better facilitate some code, you do not ghost outside of a revenant on death, you simply get transferred into the ectoplasm. You should still be able to speak with your ghost friends on how hard you got wrecked or if you'll be able to resurrect though. code: The timing on revenant stuff such as being revealed, stunned, and inhibited (by holy weapons) should be tweaked a bit to allow better management. This should mean that getting unstunned and such should be a bit more precise now. qol: Revenant instructions are now relayed in a neat little examine block. /🆑 |
||
|
|
9639ba46df |
[MIRROR] [NO GBP] fixes crab walking [MDB IGNORE] (#24000)
* [NO GBP] fixes crab walking (#78648) ## About The Pull Request the sideway movement element isn't working as intended, because apparently the client dir and not the mob's (which is always SOUTH) was being sent with the signal, and the existence of the `turn(dir, angle)` proc hadn't crossed my mind while I coded the element. ## Why It's Good For The Game This fixes the above. ## Changelog 🆑 fix: Fixed crabs not correctly (kinda) walking sideway. /🆑 * [NO GBP] fixes crab walking --------- Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com> |
||
|
|
1242bf98d1 |
[NO GBP] fixes crab walking (#78648)
## About The Pull Request the sideway movement element isn't working as intended, because apparently the client dir and not the mob's (which is always SOUTH) was being sent with the signal, and the existence of the `turn(dir, angle)` proc hadn't crossed my mind while I coded the element. ## Why It's Good For The Game This fixes the above. ## Changelog 🆑 fix: Fixed crabs not correctly (kinda) walking sideway. /🆑 |
||
|
|
71da4ca73f |
[MIRROR] Refactors the notransform variable into a trait. [MDB IGNORE] (#23566)
* Refactors the `notransform` variable into a trait. * Update robot_upgrades.dm * modular --------- Co-authored-by: san7890 <the@san7890.com> Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com> |