## About The Pull Request
Makes the ghost toggles that make your clicks produce health and chem
scans on people show the scan information after standard examine
information
## Why It's Good For The Game
This makes these scans less annoying to use, as you don't have to scroll
up after using them.
## Changelog
🆑
qol: Ghost health and chem scanning displays after examine information
rather than before
/🆑
---------
Co-authored-by: san7890 <the@san7890.com>
## About The Pull Request
This is part of my ongoing project to remove the Stat panel which you
can read/contribute to here: https://hackmd.io/443_dE5lRWeEAp9bjGcKYw
Replaces the pAI button at the bottom of Ghost's HUD with a new button
for Ghost settings
Default look

With fun verbs (admin only, the 2 buttons at the top right), No body,
and lag switches on (disables T-Ray and Zooming)

The ghost icon next to "re-enter body" is the DNR button, which requires
double click.
Extra view is now easier to understand, 0 is "default", anything more is
extra vision you get. Goes to 3 for regular users, 7 for BYOND members.
Removes the "Ghost" tab from the stat panel entirely, this replaces it.
## Why It's Good For The Game
The Ghost tab of the stat panel is filled with barely functional stuff,
like "Jump to Mob" which allows you to jump to "oranges ear" which
teleports you to nullspace, or the 4 different jump to verbs for
different things which is irrelevant from the Orbit menu and the many
improvements it got over the years, and even the Notifications panel,
which seems pretty useful, but because it's delegated to a small button
filled with the rest of these it gets entirely drowned out.
This puts all the important things in front of the user at the click of
a button, meant to be easy to navigate and giving important information
first.
## Changelog
🆑
add: Added a 'Ghost settings' button, taking the spot of the pAI
candidate button and replacing the "Ghost" tab of the Stat panel. This
button contains buttons pertinent to your time as an Observer.
/🆑
## About The Pull Request
[cleans up poor namespacing on light debugging
tools](https://github.com/tgstation/tgstation/commit/93cc9070d56ee4dbeb600ebd4616b047adf9d648)
[Implements a pathfinding visualization
tool](https://github.com/tgstation/tgstation/commit/ed91f69ac42a92329c10ccdbba308d213fc8c759)
It holds a set of inputs from the client, and uses them to generate and
display paths from source/target. Left click sets the source, right
click sets the target.
Pathmap support too, if no target is set we display the paths from every
turf in the map to the source, if one is set we build a path TO it from
the source.
I had to add COMSIG_MOB_CLICKON to observers to make this work (tho idk
why it didn't exist already), I also removed the everpresent colorblind
datum from admin datums, only needs to exist if they're using it.
[Adds a mutable_appearance helper that dirlocks them, wallening port
which I thought might be useful here, and will likely be useful
elsewhere in
future](https://github.com/tgstation/tgstation/commit/87f752e7c361ff47d62452f2f1ea805458f71b66)
[Fixes an infinite loop in pathmaps if we tried to pull a cached path to
an unreachable target, && not ||
4head](https://github.com/tgstation/tgstation/commit/10086a655df817c9f4494f9aac879c85a6059719)
[Fixes JPS not dealing with border objects properly. They violate some
of the assumptions JPS makes, so we need to backfill them with checks.
These basically read as (if the thing that should normally take this
path can't reach this turf, can
we?)](https://github.com/tgstation/tgstation/commit/f56cc4dd434cecee89879aea500bd1c9d2f38ce6)
## Why It's Good For The Game
Maybe deals with #80619?
Adds more robust testing tools for pathfinding, should allow people to
better understand/debug these systems. I added this with the idea of
adding multiz support but I don't have the time for that rn.
JPS will work around thindows better, that's nice.
https://file.house/IrBiR0bGxoKw1jJJoxgMRQ==.mp4
## Changelog
🆑
fix: Fixed our pathfinding logic getting deeply confused by border
objects
admin: Added clientside displayed pathfinding debug tools, give em a go
/🆑
## About The Pull Request
Rewrites how alt click works.
Based heavily on #82625. What a cool concept, it flows nicely with
#82533.
Fixes#81242
(tm bugs fixed)
Fixes#82668
<details><summary>More info for devs</summary>
Handy regex used for alt click s&r:
`AltClick\((.*).*\)(\n\t.*\.\.\(\))?`
`click_alt($1)` (yes I am aware this only copies the first arg. there
are no other args!)
### Obj reskins
No reason for obj reskin to check on every single alt click for every
object. It applies to only a few items.
- Moved to obj/item
- Made into signal
- Added screentips
### Ventcrawling
Every single atmospherics machine checked for ventcrawling capability on
alt click despite only 3 objects needing that functionality. This has
been moved down to those individual items.
</details>
## Why It's Good For The Game
For players:
- Alt clicking should work more logically, not causing double actions
like eject disk and open item window
- Added context menus for reskinnable items
- Removed adjacency restriction on loot panel
For devs:
- Makes alt click interactions easier to work with, no more click chain
nonsense and redundant guard clauses.
- OOP hell reduced
- Pascal Case reduced
- Glorious snake case
## Changelog
🆑
add: The lootpanel now works at range.
add: Screentips for reskinnable items.
fix: Alt click interactions have been refactored, which may lead to
unintentional changes to gameplay. Report any issues, please.
/🆑
## About The Pull Request
Off shuttle move doesn't need to happen because shuttles use abstract
move which calls it anyway
Similar story for the ghost stuff, this was actually causing pretty
common double calls so we may actually get somethin out of this Oh and
something in air which is past me knifing me in the back
## About The Pull Request
Ghosts can click gateways to teleport again
## Why It's Good For The Game
I *believe* the "gateway visual" update made it so the bumper was
unclickable, not sure why
Seemed easier to move it to the gateway itself rather than be on the
bumper
Also made it so you cant teleport into secret gateways
## Changelog
🆑 Melbert
fix: Ghosts can click on active gateways to teleport to the destination
set. Doesn't work for secret gateways.
/🆑
## About The Pull Request
Removes the check for reentering your body when double clicking on
things as a ghost.
## Why It's Good For The Game
Perhaps my experience is not universal, but I have never found an
occasion where I did this and wanted to re-enter my corpse, and
conversely many occasions where I want to orbit my corpse and find
myself re-entering it instead.
Any form of revival will pull you back into your body automatically
these days and there's no real benefit to being in your corpse, and in
the rare circumstance someone wants to do this the verb is still
available.
## Changelog
🆑
qol: Double clicking your corpse or something containing it as a ghost
will now orbit as in other cases instead of re-entering your corpse.
/🆑
* AtmoZphere tablet app now has the previous functionality of the BreatheDeep cartridge's scanning ability, meaning you can swap to analyzer mode to analyze with right-click.
About The Pull Request
https://imgur.com/a/pMMEi4ihttps://imgur.com/a/xCrIcz4
Title, really.
Adds an ingame guide to atmos. Currently hooked to the atmos monitors, analyzer, and the tablet app.
Lots of reaction data not implemented yet, banking on the cleanup to get merged first, so drafting.
Done, all reactions in. Haven't double checked them though.
Code is pretty much finished, feel free to take a look. Ill probably retidy them while adding stuffs so no rush.
Might add a reaction handbook obj later Implemented in analyzer.
Dotted tooltip idea shamelessly stolen from preferences.
Lots of the diffs are from breaking the sensor file up, dont worry about it.
Why It's Good For The Game
Less need to open the wiki in another page I guess.
Changelog
cl
add: Added an ic atmos reaction guide. Available in your atmos control consoles/monitors, ntosatmos app, and analyzer.
code: Some changes to how gas canister descriptions are generated.
/cl
About The Pull Request
Rewrites the entire preferences menu in tgui. Rewrites the entire backend to be built upon datumized preferences, rather than constant additions to the preferences base datum.
Splits game preferences into its own window.
Antagonists are now split into their individual rulesets. You can now be a roundstart heretic without signing up for latejoin heretic, as an example.
This iteration matches parity, and provides very little new functionality, but adding anything new will be much easier.
Fixes#60823Fixes#28907Fixes#44887Fixes#59912Fixes#58458Fixes#59181
Major TODOs
Quirk icons, from @Fikou (with some slight adjustments from me)
Lore text, from @EOBGames (4/6, need moths and then ethereal lore from @AMonkeyThatCodes)
Heavy documentation on how one would add new preferences, species, jobs, etc
A lot of specialized testing so that people's real data don't get corrupted
Changelog
cl Mothblocks, Floyd on lots of the design
refactor: The preferences menu has been completely rewritten in tgui.
refactor: The "Stop Sounds" verb has been moved to OOC.
/cl
Fixes a ton of harddels, sourced from #59996
I think this brings us down to like, ~100 per round from ~200, with only like 20 of those being proper hell failures. I've seen harddel profiles below 1 second of total cost. Feeling good.
See you on the other side
Makes the cryopod control computer into a weakref, never trust bee code
Converts brig door timer internal lists to weakrefs
Fixes a harddel caused by qdeling a motion sensitive camera after it had left its source area, jesus christ why didn't we do this already holy shit
Converts the radio implant ref held by the antenna mutation to weakrefs because it isn't reliably cleaned up, makes the radio implant actually qdel its fucking radio
Removes the target var from the throwing datum, it does literally nothing and just exists to cause harddels, mostly for the singularity
Fixes a cable harddel sourced from things that try to enter blueprints after smoothing, but before roundstart. IE, shuttles. Removes shuttles from the blueprints
Fixes emmisive blockers being added post qdel
Removes some manual ghosting from cryopods, I initially did this for harddel reasons, but I figured out a better fix for that. I'm now doing it because it's got this really strange logic for like "re-entering the game" that doesn't actually link to what the ghostize proc does. We should remove this at some point
Fixes robot hud objects harddeling due to hanging refs
Fixes buildmode related hanging refs, I'm coming for you admin team
Fixes a few instances of trying to add the forensics component post qdel, hhhhhhhhhhh
Fixes some split personality harddels/weirdness
Replaces a use of disconnect_duct with an init qdel hint, I suspect there's more issues with duct harddels, I've seen some odd logs about ahhh the area_contents list, but we can worry about that later
Makes teleporter targets into weakrefs, properly types them as /atom
Makes frequency devices into weakrefs
Makes cameras remove themselves from camera nets on Destroy
Makes tgui ui datums implement destroy, this means if I ever see one hang a ref to user or whatever, I know there's an error with calling close() properly. I've seen this harddel once, but not after this change so I assume there was some error with close(). IDK maybe this is a papering over? Would have to ask @stylemistake
I've seen logs of beartraps being in world post del, putting a return there just in case. The same is true of nerf darts, but I haven't really looked into that yet
Makes a shoe's ref to untying alerts a weakref, yes this is needed.
Moves clearing client_in_contents to the Login of the new mob. This prevents doing things like ghosting someone before a mob qdel causing harddels
Fixes a harddel set sourced from adding a status effect to a qdeleted thing. Is this an error? I'm honestly not sure.
Converts bsa code to weakrefs
Converts the partner var of heat exchangers to weakrefs
Converts camera assemblies to weakrefs
Fixes some dumb behavior with ammo casings and assuming you'll be on a turf post Destroy parent call
Fixes? merger related harddels, you were never cleared from your own members list, so origin objects would end up making a new list, creating harddels. Potential input from @ninjanomnom about the logic
Chasms store a static list of "falling atoms", which only exists for chasms that go somewhere else. This list wasn't being cleared of qdeleted objects, which is what happens when you fall in most chasms. Fixes this, and converts the list to weakrefs.
Fixes some runtimes in both sheet code, and the weather listener element. This is here because runtime spam made testing more of a pain, didn't think it needed its own pr
Fixes colorful reagent harddels sourced from reagents that were qdel'd before roundstart. I'm only like 50% sure this actually got it, but the issue may have been solved by #60174, so eh
Turns the nuke op antag datum's ref to the war button into a weakref
Fixes some holopad code that was not nulling refs all the time
Converts camera bugs to weakrefs, this was the result of the bug being "reworked" like 6 years back without taking the existing ref clearing into account. Whole item needs a redo, but this'll do for now.
Ensures that the both pulling and pullee refs are cleared on Destroy
The crew monitor held all users in a non clearing list, makes that list a weakref because I hate everything
Oh and I removed all sources of gas_mixture qdeletion, I'm kinda unsure on this since it's not technically supported, but any harddels from it might? indicate something going wrong with like, gas passing logic. I'd like @MrStonedOne's thoughts, since I trust him to call me an idiot if I'm wrong.
<!-- Please add a short description of why you think these changes would benefit the game. If you can't justify it in words, it might not be worth adding. -->
## Why it's not good for the game
I crashed sybil like 10 times to get this data, I'm gonna put it to good use. Don't think you're safe sybilites, I'm coming for you.
Done using this command sed -Ei 's/(\s*\S+)\s*\t+/\1 /g' code/**/*.dm
We have countless examples in the codebase with this style gone wrong, and defines and such being on hideously different levels of indentation. Fixing this to keep the alignment involves tainting the blames of code your PR doesn't need to be touching at all. And ultimately, it's hideous.
There are some files that this sed makes uglier. I can fix these when they are pointed out, but I believe this is ultimately for the greater good of readability. I'm more concerned with if any strings relied on this.
Hi codeowners!
Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@users.noreply.github.com>
The attack chain is a bit of a mess, and the introduction of signals hasn't helped in simplifying it.
In order to take a step into untangling this, I re-ordered the attack signals to no longer be by source type and instead to be grouped more modularly, as they are all members of the attack chain and function similarly. They all share the trait of potentially ending the attack chain via a return, but had several different names for it. I joined it into one.
Additionally, fixed a tk bug reported by @Timberpoes by adding a signal return check at the base of /mob/proc/RangedAttack
Lastly, removed the async call of /datum/mutation/human/telekinesis/proc/on_ranged_attack, which was added as a lazy patch to appease the linter complaining about a sleep on a signal handler (namely in /obj/singularity/attack_tk). Fixed the problem using timers.
Also cleaned some code here and there.
Implements the ?. operator, replacing code like A && A.B with A?.B
BYOND Ref:
When reading A?.B, it's equivalent to A && A.B except that A is only evaluated once, even if it's a complex expression like a proc call.
* Gateway refactor core stuff
* Updates gateways on aways.
* Boxstation gateway & control
* Deltastation gateway & control.
* Kilo gateway & control
* Meta gateway & control.
* Pubby gateway & control.
* makes away gateways easier to use.
* Makes gateway names bit better.
* No need for two dmis
* Autolinkup & description
* Docs formatting.
* Donutstation gateway & control
* Icon and init fixups
* ui fixups
* Better var name
* Use roundstart time instead of server time.
* sets dir properly, and locks bumper to south entry only.
* Cleans up gateway sprite a bit ?
* tgui build
* Removed from code
* Removes cloners from maps
* Some more references, now compiles.
* Reduces availability of replica pods
* DNA scanner and tech disk rebranding
* pubby door name, cargo pack description
cl Skoglol
code: New helper proc for alt-click turf listing, bypasses any interaction overrides.
code: Ghosts and revenants now use the new proc.
fix: Ghosts can no longer toggleopen sleepers, adjust skateboard speed or close laptops
fix: Revenant can now alt-click turf to list contents.
tweak: Revenant now slightly less nosy, use shift click to examine.
tweak: Alt-clicking the same turf again no longer closes the turf listing tab.
/cl
Fixes#22410
Use the new helper when you want something to have alt-click turf content listing, but no other world interaction.
* Ports paradise's modular buildmode
* Axes logout callback of buildmode
* AnturK's changes
- Code formatting
- Gives mob to throw args
- Selection overlays are on ABOVE_LIGHTING_PLANE to be visible on space
Other:
- Doubleclicks of observers and AI no longer "double-tap" click
intercepts
* big batch of loc assignments
* Update emergency.dm
* Update spiders.dm
* Update parrot.dm
* Update ripley.dm
* Update firealarm.dm
* seems to work
* this maybe works?
* brainmemes, again
* stuff
* fix brainmob, camera runtimes
* THE PORTAL UPDATE
* portal gun checks
* damn functions
* o_range(s)
* Atmos Portals (#12)
* Rod Form's damage now scales with how much it's upgraded
* buffs chem grenades
* Fix getrev runtime
* Automatic changelog generation for PR #27948 [ci skip]
* Automatic changelog generation for PR #27951 [ci skip]
* Fixes admiral recall (#27861)
* the man with the 2 shotguns that blasted me to the end of the world with dualwielding. nerf (#27978)
* Beam rifles now slowdown while scoped (#27898)
* Update beam_rifle.dm
* Update beam_rifle.dm
* Update beam_rifle.dm
* Fixes a very silly clockwork false wall trick (#27996)
* Fixes#27979 (#28002)
* Automatic changelog generation for PR #28002 [ci skip]
* Fixes#27989 : Riot suits no longer hide jumpsuits (#28003)
* Fixes#27989
* remove tag
* Automatic changelog generation for PR #28003 [ci skip]
* Refactors a cooldown var to not require a spawn or sleep (#28011)
* wat (#28012)
* Remove spawns in favour of stacktrace calls, which don't stop the called (#28013)
proc
* Refactor another spawned cooldown var (#28014)
* Come on, pathetic (#28015)
* Refactor another spawn cooldown (#28016)
* Goodbye spawn (#28017)
* Another spawn timer (#28018)
* Remove a commented out function (#28019)
* Gotta go with the fro2.0 (#28010)
* This doesn't do anything (#28020)
* refactor another spawn cooldown (#28022)
* Refactors another spawn cooldown var (#28023)
* Refactor another spawn (#28024)
* Refactor another spawn var (#28027)
* woops
* woops2
* atmos links!
* unused
* wew
* ffs!
* Forced updates
* update
* Update portals.dm
* adjacent/atmospass checks
* Create portals.dm
* Update portals.dm
* Update other_tools.dm
* stuff
* crossed
* documentation
* reee
* no portal stacking!
* woops
* Ports Space Parallax from vg/yogs
* KILL ME
* fuck shit
* fixes
* rgfkbjhkefrhjkfrejhkfds
* Parallax, part 2.
* Gotta get these defines in before remie notices!
* DAMN IT! SHE FOUND ONE!
* fixes orbits
* fix orbits take 2
* Fixes some things with parallax
* Refactors parallax shuttle animations.
🆑
rscadd: If you are an observer, you can click on transition edges of a
Z-level in order to move as a mob would.
/🆑
Also removed some trailing returns.