## About The Pull Request
I have no idea how to word this so here's a list instead.
1. Fixes#96445 by making it so that instead of healthscan code coming
up with cure text on the spot for viruses, advanced diseases have a
function that can generate cure text so you can use it in things other
than healthscanning.
2. Rewords a single letter var in medical kiosk code
3. As a result of 1, the code for disease state analyzers healthscanning
has been shortened because the cure text generating function only has to
be written once and not twice.
4. Health scans now have a power level instead of just being advanced or
basic. There is a new power level called super, and it's only available
to ghosts. Super scans can see all virus symptoms instead of just 3, and
the current stage of an alien embryo.
5. For some reason a bunch of healthscan code (like stuff from the eye
of god and health scanner mod module) were using 1 instead of
SCANMODE_VERBOSE (a define that equals 1 but is more readable) for the
scanmode. That's no longer the case.
6. A new health scanner, the super health scanner, that replaces the
advanced one in the box of debug tools.
<img width="620" height="223" alt="image"
src="https://github.com/user-attachments/assets/a0c5e56e-cf19-4db2-a2df-b72456123c50"
/>
<img width="73" height="65" alt="image"
src="https://github.com/user-attachments/assets/27f8c81b-4f89-455b-82fa-a0ecf94656cf"
/>
## Why It's Good For The Game
Ghosts should be able to see everything, I think
## Changelog
🆑
qol: Ghosts can see alien embryo stage and all virus symptoms when
health scanning
code: Health scanners now support multiple scan levels
fix: Fixes medical kiosks not being able to identify advanced disease
cures.
/🆑
---------
Co-authored-by: Fghj240 <fakeemail@notrealemail.com>
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
## About The Pull Request
Moves all inventory slots but handcuffs/legcuffs (as those can be used
by xenos) from ``/carbon`` onto ``/human``, as xenos do not use any of
those inventory slots, only leaving them in use by humans. Their
presence on ``/carbon`` is an artifact of times when monkeys weren't
humans, and some of the slots had to be shared by all carbons.
In some places I've used ``get_item_by_slot`` rather than swapping
checks to ``ishuman`` for simplicity's sake, in some places it might not
be the most optimal solution but in cases like help act any other
solution would require a refactor of the whole (massive) proc.
## Why It's Good For The Game
Cleaner/more sensible code, one step closer to fully datumized
inventories.
## Changelog
🆑
refactor: Moved a lot of human-specific inventory code onto human mobs,
report if inventories break!
/🆑
## About The Pull Request
Allows people to detach a cleaner and vacuum (uses the trash bag) from
janitor borgs. This option uses zero water management and doesn't create
slip tiles.
The module can be locked with alt click.
<img width="342" height="681" alt="image"
src="https://github.com/user-attachments/assets/0fe53f8b-d850-4354-aa70-382ca40dcd37"
/>
<img width="590" height="581" alt="image"
src="https://github.com/user-attachments/assets/70fea653-ad20-479a-8986-fed0e15af4b1"
/>
https://github.com/user-attachments/assets/ff81a214-1bfb-4a33-a660-ccb563e310af
Sounds are from soundsnap and properly licenced.
https://soundsnap.zendesk.com/hc/en-us/articles/115003916431-Legal
## Why It's Good For The Game
I think co-op mechanics are fun. If you manage to get a friend, this is
an option with zero water management. I feel like janitor borgs don't
really have much the way to cooperate with their base mechanics. You can
walk into a department and clean it wordlessly. This gives the option
where you can clean with your friend (or the crime scene you're trying
to scrub)
## Changelog
🆑 StrangeWeirdKitten, Toriate (sprites)
add: Janitor borgs now have a crew operated end that allows their
squishy overlords to do some cleaning themselves.
/🆑
## About The Pull Request
Allows people to detach a cleaner and vacuum (uses the trash bag) from
janitor borgs. This option uses zero water management and doesn't create
slip tiles.
The module can be locked with alt click.
<img width="342" height="681" alt="image"
src="https://github.com/user-attachments/assets/0fe53f8b-d850-4354-aa70-382ca40dcd37"
/>
<img width="590" height="581" alt="image"
src="https://github.com/user-attachments/assets/70fea653-ad20-479a-8986-fed0e15af4b1"
/>
https://github.com/user-attachments/assets/ff81a214-1bfb-4a33-a660-ccb563e310af
Sounds are from soundsnap and properly licenced.
https://soundsnap.zendesk.com/hc/en-us/articles/115003916431-Legal
## Why It's Good For The Game
I think co-op mechanics are fun. If you manage to get a friend, this is
an option with zero water management. I feel like janitor borgs don't
really have much the way to cooperate with their base mechanics. You can
walk into a department and clean it wordlessly. This gives the option
where you can clean with your friend (or the crime scene you're trying
to scrub)
## Changelog
🆑 StrangeWeirdKitten, Toriate (sprites)
add: Janitor borgs now have a crew operated end that allows their
squishy overlords to do some cleaning themselves.
/🆑
## About The Pull Request
The original implementation was flawed as it added all particle holders
to vis_contents and displayed/masked all of them at once if the z-level
had any weather present. This caused "bleed-through" if two z-levels
with the same z-stack offset had particle weather running at the same
time (such as ash storm on lavaland and a weather anomaly rain on
station's first z-level) causing particles from both z-stacks to display
on both z-levels. By tracking holder's assigned z-levels we can filter
holders not affecting any levels in the current plane z-stack, which
solves this issue. There's still the problem of multiple particle
weathers running on the same z-level, but this is so insanely rare (and
also some other code would break anyways) I don't think its worth
currently bothering with as it would require some insane code to
resolve.
## Changelog
🆑
fix: Fixed particle weather bleeding through z-levels when different
weathers are present
/🆑
## About The Pull Request
just macro-izes all the usages of verbs in the codebase as a
pre-requisite to my follow up pr that serializes all the verbs arguments
so we can tgui-ify the command bar, so we can then put it on the
onscreen map.
this also basically does the same as #94487 so can easily be integrated
into the verb queueing stuff... but does not actually do any verb
queueing by itself. basically im just trying to be
https://github.com/tgstation/tgstation/labels/Atomic
## Why It's Good For The Game
it doesn't really do anything by itself but it does let us do more stuff
## Changelog
🆑
code: the backend to all verbs in the game has been played with, please
report any issues to github
/🆑
---------
Co-authored-by: harryob <55142896+harryob@users.noreply.github.com>
## About The Pull Request
The AI can now send point clicks through their "camera" to be rendered
by the available holopads.
https://github.com/user-attachments/assets/427ea857-b303-4405-bc2e-91482abcbe29
Normal `point`ing timing applies, though one holopad is limited to
projecting one arrow at a time.
## Why It's Good For The Game
This is a thing I've been thinking about for a while. As the AI is
usually the "AI open" "AI where is [...]" "AI how do I [...]" kinda
role, it would make total sense there to be some way for the AI to point
to things. Didn't think it should be it's own machinery since we already
have way too much wallmount stuff.
## Changelog
🆑
add: AIs can now point to things using holopads
/🆑
## About The Pull Request
Closes#96601
Also fixes pref button breaking one of the modes permanently when
swapped within a round, rain not displaying (due to missing overlay
states) when particle weather is disabled, and weather particle plates
having the same name as weather planes (causes dupe entries in the
planecube debugger)
## Changelog
🆑
fix: Radstorms (and other weather) no longer go over your hud on multi-z
maps
fix: Rain is no longer invisible when you have particle weather disabled
fix: Changing the particle weather pref no longer permanently breaks
some weathers for the round
/🆑
## About The Pull Request
Due to a BYOND bug, large amounts of particles will cause immense lag
and framedrops on AMD GPUs, no matter how good the GPU itself is.
Unfortunately this is most noticeable with new particle weather, to the
point where storms reduce framerate to single digits for players who
haven't invested into NVIDIA before the AI market boom.
By rendering overlays twice and only enabling one of the planes, we can
allow players to toggle between new particle weather (semi-transparent
overlays + particles) and old (fully opaque overlays)
Unfortunately we don't have a way to check the player's GPU (at least
not easily) so players will have to change it themselves
https://github.com/user-attachments/assets/0c36fca4-c8a4-42ed-895f-42e853b10f44
(Particle weather is a bit more dense without ghost vision but i'm too
lazy to re-record)
Closes#96460 (Sort of)
## Changelog
🆑
qol: Particle weather can now be disabled in favor of old weather. !!!
AMD GPU USERS NEED TO SWITCH TO OLD WEATHER TO FIX THE LAG!!!
/🆑
## About The Pull Request
Mending globule can no longer be cast if you don't have enough nutrition
to do so.
The ooze hud now inherits the living hud, meaning ooze mobs can see
their health and all of the other stuff.
<img width="1186" height="776" alt="image"
src="https://github.com/user-attachments/assets/068cc22d-5721-4c90-ac38-bcdda9af9dcc"
/>
The combination of the nutrition display and the health doll is kinda
ugly for now but probably better than nothing.
The descriptions of shoolean grapes abilities now include the cost of
the ability in question.
## Why It's Good For The Game
Not being able to see how wounded you are is kinda bad, and being able
to see that is kinda good. Knowing how much your abilities cost is good
too.
## Changelog
🆑
qol: Ooze mobs from cytology now have the same type of HUD as other
mobs, allowing them to see their health
qol: The abilities of shoolean grapes now have their cost specified in
their description
fix: The mending globule ability used by shoolean grapes no longer can
be cast while there isn't enough nutrition to do so
/🆑
## About The Pull Request
0 is apparently truthy to a ternary, who knew.
Also deletes every value return in blob code where that value is never
used, even where it is not currently causing a runtime
Also shuffles around the upgrading order to save space, and prevents
wasting 15 points upgrading a reflecting blob into a reflecting blob
also one letter vars
## Why It's Good For The Game
Runtime
Waste of time
Waste of points
Waste of time
## Changelog
🆑
fix: fixed runtime when trying to upgrade a blob, & fixed wasting points
upgrading a reflective blob into a reflective blob
/🆑
<!-- 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
Brought to you by Team Powercrèpe.(same group of people that delivered
the Heretic Overhaul)
This PR ports the TGMC Tacmaps and grants em to our NukeOps.
Code by Me, @Xander3359, @Arturlang, @Absolucy.
Mapping by @RipGrayson
Sprites by @KillerOrcaCora
Writing bits by @necromanceranne
Tacmaps are essentially dynamically generated minimaps,
<img width="1711" height="1335" alt="Tac map examples"
src="https://github.com/user-attachments/assets/f936fac0-fb7c-4b84-970d-7195b4995ca7"
/>
<img width="1274" height="714" alt="Tac-Maps Icons"
src="https://github.com/user-attachments/assets/0f04e388-af4b-4955-be7a-04650cfd746b"
/>
As you can see from the screenshots above, departments are classified by
color, hovering your cursor over an area or a team mate, will display
their name, the system does allow the user to switch between Multi-Z,
and lastly you can draw and add labels to the map, although the last
option is only available to the NukeOps Leader and OW agents.
The functionality is tied to the Syndicate implants nukies start with,
Cayenne, Syndie borgs and Mechs also have the ability to toggle the map.
Likewise, the tacmaps will display the positioning of the following in
real time!
- Nuke ops agents
- Syndie borgs and Mechs
- Cayenne
- Location of the nuclear fission device (and beer nuke)
- Location of the Nuclear Authentication Disk.
<img width="1274" height="714" alt="SkyBridge OFF"
src="https://github.com/user-attachments/assets/3915e7d7-644a-4e9a-b213-997834dde2ea"
/>
<img width="1274" height="714" alt="SkyBridge ON"
src="https://github.com/user-attachments/assets/13748290-fd16-42ba-a9c4-a6b4f7e69c79"
/>
<img width="566" height="459" alt="Holo table done"
src="https://github.com/user-attachments/assets/1a43c5b7-ee51-4794-9c09-16b4fb50e2ad"
/>
https://github.com/user-attachments/assets/caf38538-ef04-4330-992c-3137a67ea0d0
Lastly The tactiical map implant cannot be be used on the nuke ops
base,If the team wishes to interact with the map they'll have to
Interact with the "Reconnaisance Platform" (Sprite by Orcacora) in the
briefing room, which has seen some mapping changes (Brought to you by
TheLastGrayson).
<!-- 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
Originally this feature was planned for the Upcoming Contractor Rework
our team is currently working on, but given the massive size of it all,
we decided to atomize it.
But without that consideration in mind, I think it makes sense for
Nuclear operatives of all antagonists to have the means to Recon and
plot an assault plan onto the station and actually be able to know the
whereabouts of their teammates.
Obviously this feature has a lot of other potential applications, we
have wanted to have functional Maps for a very long time, if someone
wants to give it a go once the feature is merged, by all means.
<!-- 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 its 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. -->
🆑
add: Tactical Maps have been added to the game!
add: Nuclear Operatives implants now grant the ability to open a
Minimap, this map will display and show the names of various areas of
the station, and the positioning of the Nukeops team,borgs,mechs,Cayenne
and the nuke disk in real time!
add: Nukie leaders and OW agents can also draw and apply labels to the
map.
add: the "Recoinassance Platform" has been added to the Nukie Base, it
allows displaying of the Tactical maps while on the Syndicate Base Z
level.
map: The briefing room in the NukeOps base has been remapped to better
accomodate the new Holographic table.
map: Changed the front shutters on the Syndicate Infiltrator to the more
fitting Syndicate Shutters.
/🆑
<!-- 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: Xander3359 <66163761+Xander3359@users.noreply.github.com>
Co-authored-by: Artur Lang <24881678+Arturlang@users.noreply.github.com>
Co-authored-by: Lucy <lucy@absolucy.moe>
Co-authored-by: Copilot <copilot@github.com>
Co-authored-by: RipGrayson <49290523+RipGrayson@users.noreply.github.com>
Co-authored-by: necromanceranne <40847847+necromanceranne@users.noreply.github.com>
## About The Pull Request
- Borg attack chain now passes modifiers to `attack_self()` so you can
check for right click & other stuff
- Omni Tool welder now won't turn on automatically when switching
between inventory slots or switching to the tool from the radial menu
- Omni Tool welder can now be turned on via LMB & not CTRL + LMB. To
switch to another tool use RMB instead when using the welder
## Why It's Good For The Game
- Closes#96213
- Closes#96214
## Changelog
🆑
code: borg attack chain now passes modifiers to its item `attack_self()`
proc
qol: omni tool welder now won't turn on automatically when switching to
it via radial menu or using inventory button. This stops accidental
combustion in hazardous areas
qol: omni tool welder can now be turned on/off via LMB like regular
welder & not CTRL+LMB. Use RMB to open radial menu to switch to other
tools when using welder
/🆑
## About The Pull Request
Completely removes individual inventory UI handling from mob and HUD
code and moves it to slot datums.
``/datum/inventory_slot`` now is responsible for displaying items on the
player UI and does so through vis_contests as opposed to screen_loc -
which ensures that wide items will display properly rather than be
offset to the right.
Centralized, slot_id based handling allows us to significantly simplify
inventory and HUD code (see how many lines were removed) as you no
longer need to individually track all items for both the HUD owner and
the observer, and makes it easier for us to fully datumize inventory
handling in the future.
Also fixes a bug where observers would see players' storage UI and have
the items linger on-screen after its closed.
## Why It's Good For The Game
Makes working with inventories and HUDs easier, fixes visual issues with
wide items, I need this for human rendering refactors.
## Changelog
🆑
refactor: Refactors inventory UI to be completely datum and
vis_contents-based
fix: Observers should no longer see doubled up inventory UIs
/🆑
---------
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
## 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.
/🆑
closes#96020
When it's making a list of valid nebula vomits, it exits and returns
null the moment a nebula vomit is off the station z-level. This causes a
runtime when trying to vomit jump
🆑
fix: Fixes voidwalker being unable to vomit jump if anyone vomits on a
non-station z-level
/🆑
## About The Pull Request
Basic Mobs used to always trigger cooldown on clicks. This resulted in
missed attacks causing you to have a delay before you could attack
again, this makes it really punishing to play as a basic mob.
To resolve this I did a mini-refactor on basic mob's attack chain to
allow for the return values to determine whether we go on cooldown or
not. Preventing attacks that did nothing (due to not passing checks, or
simply not having any behavior) from causing cooldown.
This fixes#95605
## Why It's Good For The Game
being able to perform melee with the same rules as /human is only fair
## Changelog
🆑 DresserOnFire
fix: Fixes a bug where player-controlled basic mobs would get a cooldown
when their attacks miss
refactor: basic mob attack chain can now decided whether an attack
resulted in a cooldown or not.
/🆑
## About The Pull Request
Fixes duplicate alien plasma displays
## Why It's Good For The Game
Bugfixes are always good
## Changelog
🆑
fix: Alien plasma display works again
/🆑
## About The Pull Request
Removes Station-Time entirely
Server Time is now NST (Nanotrasen Standard Time). SS13 takes place
exactly 540 years in the future of the current day, so every second is 1
second in-game.
Round Time is now PT (Pay-Time), how Nanotrasen keeps track of how long
the current rotation of Employees has been working for.
Telecomms uses NST due to its importance of being the communication to
the blackbox.
Autopsy report, clocks, scientific reports and requisitions use both
timestamps due to them being more official documents that NT may need to
know beyond just the current round (just for flavortext).
Pretty much everything else (Det scanner, PDA, IC logs, Time-of-Death,
AI law changes, Cyborg file downloading) uses PT
PT
<img width="305" height="217" alt="image"
src="https://github.com/user-attachments/assets/cef73025-6292-4f9c-8565-197397bda2ca"
/>
<img width="168" height="59" alt="image"
src="https://github.com/user-attachments/assets/a99db568-045d-45fc-8206-0d9a7b13c7d2"
/>
<img width="308" height="122" alt="image"
src="https://github.com/user-attachments/assets/37ca6f17-8916-4af2-9c91-0f0707038ca5"
/>
https://github.com/user-attachments/assets/29445051-c98b-4af3-a657-812083aab91a
Clock (Literate)
<img width="748" height="292" alt="image"
src="https://github.com/user-attachments/assets/c824e812-91b5-4737-858d-768336e9a7c4"
/>
Clock (Illiterate)
<img width="446" height="94" alt="image"
src="https://github.com/user-attachments/assets/90d5ea0d-eaff-4ced-aa31-ffdf0b4832a5"
/>
New paperwork time working properly
<img width="311" height="190" alt="image"
src="https://github.com/user-attachments/assets/6d048926-db61-4c91-893b-ce93e1ea7775"
/>
NST
<img width="800" height="115" alt="image"
src="https://github.com/user-attachments/assets/35ffde49-13c1-4ce7-ab24-858e48b608bd"
/>
<img width="1288" height="142" alt="image"
src="https://github.com/user-attachments/assets/40c30d16-e0de-4efc-b460-9486eeb901d6"
/>
# Other changes
1. Circuit time checker will now get the value of the given input (Hour,
Minute, Second) rather than the full dedisecond time converted into
hour/minutes/seconds
<img width="270" height="67" alt="image"
src="https://github.com/user-attachments/assets/097440cc-1c45-447f-9976-18de7f9c722c"
/>
2. Turns nightshift into a round event that'll last approximately 22
minutes
3. 12-hour pref (doesn't apply to the stat panel because it's global
info) & removal of "TCT" time
<img width="569" height="440" alt="image"
src="https://github.com/user-attachments/assets/d39083b1-d248-41c0-9a1c-b2398ca203a7"
/>
4. The chocolate pudding negative moodlet is now based on the server's
IRL time.
5. Admins can now use ``class``, ``style`` and ``background`` (they were
already given perms to use ``img`` so hiding background, which was
removed to prevent image embedding, is pointless)
6. Also fixes ``year`` being off on localhost.
## Why It's Good For The Game
Server Time is approximately 1s = 12s converted, not including it
desyncing from lag (I believe?).
This makes it pretty much impossible for people to actually use this as
a unit of measurement for in-game actions.
Different things also uses different timestamps which is a bit more
confusing.
The main change here is for accessibility and, hopefully, using time as
a source of immersion. "20 minutes ago" is no longer OOC, they're just
speaking in PT. There's no timezones in space, Nanotrasen Standard Time
is the closest there is, but Pay Time is how NT considers when you get
your paychecks, so it's what is more commonly used.
It also fixes major inconsistencies between "IC time" and "Station
time", things like breakfast moodlet was the first 15mins of the round
despite the round starting like 7 hours in? Nukies with an L6 SAW firing
down the halls was shooting like 1 bullet every 3 seconds (assuming 4
bullets per second), overall there was just a disconnect between how
long time actually is in the universe.
The secondary reason for this change (though it is what pushed me to
actually get around to making this change) is the greater stat-panel
removal. This hopes to lessen the dependence on the stat panel for
station-time by making it easier to understand, and the end-goal I have
is for this information to be limited to Admins & the AI (AI will get
the IC version with the accurate year), so until that happens I would
like to improve the use of station-time by making it consistent (for
example, you should only care for PT for IC, which is also what your PDA
displays), so that when it gets removed it won't leave players timeless.
If you haven't already, and is interested in helping remove the stat
panel, every entry that needs to be removed can be found here -
https://hackmd.io/443_dE5lRWeEAp9bjGcKYw?view
Closes https://github.com/tgstation/tgstation/issues/94988
## Changelog
🆑
del: Removed Station Time, now we use NST (Nanotrasen Standard Time),
which is IRL server time +540 years, and PT (Pay Time), the amount of
time since the round has started.
del: Station nightshift is now a Station event rather than being based
on Server time.
balance: Time circuit's Unit of Measure now tells the amount of time in
hour/minute/seconds rather than giving the whole time translated to
hours/minutes/seconds.
qol: Added a 12-hour clock pref for people who prefer it.
qol: Hovering over NST timestamps on official documents will now
translate how much it is in PT/Shift Time.
admin: Admins can now use style/class/background in their papercode.
/🆑
---------
Co-authored-by: Isratosh <Isratosh@hotmail.com>
## About The Pull Request
Changes Guardian HUD to use action buttons instead of HUD elements,
which means their buttons
1. Can now be moved
2. Can be binded
Other Holoparasite HUD changes:
1- Moves some special buttons like explosive's explosion ability to be
where the "Toggle Mode" button typically is, to be consistent with some
other modes (assassin, gas) that also works like their unique ability.
2- Gives non-dextrous holoparasites the ability to move floors, since
they float.
3- Fixes dextrous holoparasites having 2 health HUDs
4- Moves "Check Guardian Type" verb to a new action button meant to
mimick the Antag UI Info button.
Gives Soulscythes a Combat mode indicator
Locks Revenant's combat mode indicator (cause it does nothing)
Adds another hoverable HUD element, basic mobs can now hover over their
healthdoll to see their Health %
<img width="85" height="123" alt="image"
src="https://github.com/user-attachments/assets/ad660ba4-296c-4699-9ec4-03a6e7b97880"
/>
<img width="95" height="101" alt="image"
src="https://github.com/user-attachments/assets/12d4d9d3-cf2c-4c52-81aa-17ce538b9d48"
/>
Adds a Unit Test to ensure all basic mobs have a HUD that shows some
form of health & combat mode (unless unnecessary like Revenants), to not
lose any information from basic mob conversion now that they lose the
stat panel.
## Why It's Good For The Game
This is yet another supplement of
https://github.com/tgstation/tgstation/pull/95383 - Removing stat panel
entries for all basic mobs is a great move towards lessening the
reliance of mobs on the stat panel.
This is also just good QoL for Holoparasites, especially since their
stat panel had 2 entries for "Master HP" and your "Own" HP, despite
Holoparasites not even having their own HP at all.
## Changelog
🆑
qol: Holoparasites' abilities are now action buttons, so you can rebind
or move them.
qol: Holoparasites now have floor change buttons.
fix: Holoparasites and Soulscythes now have a combat mode indicator.
fix: Dextrous holoparasites now have their inventory slot again while
non-dextrous had it taken away (not that they could use it).
/🆑
## About The Pull Request
this translates some various
- `FLOOR(x, 1)` -> `floor(x)`
- `CEILING(x, 1)` -> `ceil(x)`
- `SIGN(x)` define is gone, just uses the native BYOND `sign()` now.
Also, the `MODULUS` define is just a wrapper for the [BYOND `%%`
operator](https://ref.harry.live/operator/modulomodulo) now.
would be nice if someone double checked to make sure there's no
potential subtle oddities resulting from this.
## Why It's Good For The Game
These procs presumably did not exist whenever the defines were written -
and they are BYOND builtins, meaning it will just be, say, one `sign`
instruction, instead of two comparisons and a subtraction.
## Changelog
no player-facing changes
## About The Pull Request
Dont show swap hand tutorial if you only have 1 hand as you cannot
complete it.
## Why It's Good For The Game
Someone on a downstream had an issue where it kept showing them the
tutorial but they could not complete it as they play a character with
only 1 arm.
Could prob extend this to a disabled limb as well.. dunno.
## Changelog
🆑
fix: The swap hand tutorial wont be shown to someone missing a hand
/🆑
## About The Pull Request
Since grabs that failed due to a comsig return or the grab being blocked
returned FALSE, they'd still result in the target being passively
grabbed from being pulled as that was called upon the grab failing. I've
added multiple return types to grabs to alleviate this.
Per anne's recommendation, hunter boxing is exempt from the grab
restriction (since it never functioned in the first place).
## Changelog
🆑
fix: Fixed boxing or successful blocking not preventing grabs
/🆑
## About The Pull Request
This was my bad.
Combat mode now stores it's default screen location, so it can be
restored when swapping to "Full" HUD. We can't simply do initial screen
location because most mobs do not have their initial position the same
as humans.
Also fixes sleep icon being permanently invisible, makes "Toggle hotkeys
button" respect the Rest button, and makes combat mode an "info" button
solely so we don't have to manually add it for minimized HUD mode.
## Why It's Good For The Game
Fixes some UI issues that popped up.
## Changelog
🆑
fix: The Combat indicator will now properly move back to its original
location when using F12.
fix: Sleep icon now appears again & rest icon now respects "Toggle
Hotkeys button" mode.
/🆑
## 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>
## About The Pull Request
There's a 30% chance that there's no random layer which leads to
runtimes occuring whenever anyone with maxed out parallax tries to move
## Changelog
🆑
fix: Fixed parallax runtiming horribly whenever parallax SS doesnt pick
a random layer to display
/🆑
## About The Pull Request
When you put on a space suit, it gives you stat panel entries for
whether the thermal regulator is on, and the charge in the cell.
This replaces it with the already-existing HUD element, and improves
upon it.
1. Re-uses mod's "very low" icon for the HUD, now "max" charge is
100-60%, "mid" is 60-40%, "low" is 40-20% and under that is "very low"
2. The icon now displays "OFF" when the thermal regulator isn't running
3. You can click on the HUD element to turn the thermal regulator on
4. You can hover over the HUD element to see the exact percentage your
space suit is at
https://github.com/user-attachments/assets/3a6cc33d-25d1-479d-99d5-f8160316c230
Maybe in the future we could remove the action button as well if the HUD
element is preferable, as we already seem to have an excess amount of
action buttons. Alternatively we can remove the HUD element entirely and
move the behaviour to the action button, like what we did with the
internals HUD. I'll leave that up to future discussion though I lean
more on it being a HUD element.
## Why It's Good For The Game
Helps me kill the stat panel as part of
https://hackmd.io/443_dE5lRWeEAp9bjGcKYw?view
Space suits is one of the larger parts of this issue as people are
typically expected to wear a space suit, so I think it's pretty
important we get this one done sooner rather than later. Same as my
other recent PRs, this one is also a complement of
https://github.com/tgstation/tgstation/pull/95383
## Changelog
🆑
qol: The stat panel entry for space suits has been replaced with the HUD
element. You can now hover over it to see exact cell percentage, and
click it to turn the regulator on, while it'll also display when it's
off.
/🆑
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
## About The Pull Request
The stat panel for Changelings shows how much DNA you have absorbed (for
your objectives) & The upper limit to how many chemicals you can hold.
How many people you have absorbed now shows up in your Antag info page
(which you'll already be there to see how many genomes you'll need for
the objective anyways), and the upper limit to your ling chems is now
shown when you hover your mouse on the HUD element.
This is also now explained when you click on the HUD & in the Antag Info
page. Hovering over the icon also turns it red to indicate it's a
different thing being shown, and that it is clickable (to get another
explanation).
https://github.com/user-attachments/assets/71c935d3-2d21-4d4b-bb8c-cc183110e2e2
## Why It's Good For The Game
Moving things away from the stat panel is a goal I've been focusing on
because it borderline hides information away from people who don't know
when and what information is listed in the stat panel.
This hopes to make that information much easier to access and improving
on Changeling's lackluster hud & explanations on things. My first time
playing Changeling I remember clicking on the HUD, it not responding to
my clicks, and being confused what the number was for. This is what gave
me the idea to have this more dynamic & clickable HUD, and my hope is
that this makes it easier for new players to understand.
We also now explain how a Changeling's max chem can increase much better
now, than the current version's 'grows in power'.
This also pairs well with
https://github.com/tgstation/tgstation/pull/95383 as it becomes one less
source of forcefully giving people stat panels if they turn it off.
## Changelog
🆑
qol: Changeling's stat panel entry has been moved to the HUD & Antag
panel. Also added some extra explanations on how Changelings work in
there.
/🆑
## About The Pull Request
Ok so on the parallax pr I moved a bunch of dumb plane group signal
registration to the set home proc. Unfortunately because set_home is run
BEFORE update_offset, any created relays will then be offset down X from
where they should be.
For the master plate, this means #1's relay to transparent plate #0 will
instead draw to transparent plate #1 (which of course renders into
master plate #1)
To fix this I've moved update_offset to BEFORE set_home, so children can
hook into it and do things in a sane and normal way. Near as I can tell
there's no reason they're ordered as they currently are. I've also added
a failsafe check to prevent relay creation before update_offset is
called, and attached a CRASH() to such.
Interestingly enough this caused crashes on shift right click. That's
fun I think
## About The Pull Request
I want to do stuff with parallax (like placing stuff in the backdrop and
moving it around), but I'm in my not doing 100 things in one pr arc so
we're doing this piecemeal.
To start, I wanted to try adding oldspace back as a parallax layer. This
is something I was considering when it was first removed but never got
around to, so here we are.
I started by [writing a rust
program](https://github.com/LemonInTheDark/old_space_gen) to fabricate
the required icon state, then realized that all the different parts of
space have their own animation delays. There's no way I could make one
icon state with all them looping, so instead I split them up into
multiple components and then overlayed them together.
This works, but is infeasible (my gpu died) at the scale required for
parallax (17 480x480 sets, 15 unique delays per 1 set) so I used render
targets to render one copy, then mirror it to the rest of the overlays.
This works wonderfully, and gets us down to (on my machine) a gpu cost
comprable with about medium parallax intensity.
I'm open to making these tile bound but I thought making them look "far
away" feels better.
In the process of all this I got very mad at the existing parallax code,
soooooooo
Parallax layers are no longer stored on the client, they are stored on
and managed by the parallax home atom that holds them for display. Said
atom also tracks all the information about how they are selected.
Parallax layers no longer take a hud as input, instead expecting a
client. (we were just swapping them back and forth and I thought it was
dumb).
Parallax no longer tries to support passing in a mob that does not
actually own the hud it is displayed on. This feature wasn't even being
used anymore because it was fully broken, so all it was doing was making
the code worse.
Parallax no longer has to do a full refresh anytime something about WHAT
layers are displayed might have changed. We cache based off the
variables we care about, and use the change in state to determine what
should happen (this is improved by moving "rendering the layers" fully
to the control of the home datum).
Parallax no longer directly modifies the hud's plane masters, instead
relying on trait based signals to manipulate them (this avoids wasted
time in the common event of a needless parallax prefs check).
Parallax no longer has 2 procs that are only called together to
"remove/readd/update" the layers, instead doing both in a new check()
proc.
Cleans up some plane master cruft to do with tracking/managing huds
(might break, tested, think it's fine).
## Why It's Good For The Game
https://github.com/user-attachments/assets/79138a0f-9f6d-447d-843e-0d237db13276
## Changelog
🆑
add: Added an option for rendering space parallax with old space sprites
(the ones from before we invented parallax), they're animated and I feel
quite pretty.
fix: Space parallax should hopefully behave a little more consistently
now
refactor: Rewrote a lot of how space parallax handled itself, please
yell at me if any bugs make themselves known
/🆑
## About The Pull Request
- The `prosthetic replacement` surgical operation has been reverted to
be closer to how it used to work: The operation is done targeting the
limb that's missing
The change was made out of necessity, as surgical state was tied to
limbs - you had to operate on the chest to re-attach limbs because there
was no limb to operate on.
To circumvent that, I have done the unthinkable of adding stumps when
you are dismembered.
- Missing limbs are now represented as an invisible, un-removable,
un-interactable limb.
Making this change was not as difficult as originally anticipated, and
(at least surface level) seems to have broken very little.
Surprisingly little had to change to make this work.
Direct accesses to `mob.bodyparts` was changed to `mob.get_bodyparts()`
with an optional `include_stumps` argument.
Similarly, `get_bodypart()` had an optional `include_stumps` added.
This means we ultimately barely needed to change anything, and in fact,
some loops/checks were able to be streamlined.
## Why It's Good For The Game
- As mentioned, this change was out of necessity and was easily the
least intuitive part of the broader changes. Reverting it back to how it
used to work should make it far easier for people to pick up on, and
means we can cut out a bunch of bespoke instruction sets that I had to
include.
- The addition of stumps also adds a ton of future potential - code wise
it allows for stuff like better damage tracking (we can transfer damage
between limb <-> stump rather than limb <-> chest), and feature we can
do "fun" stuff like have stumps bleed on dismemberment that you can
bandage.
## Changelog
🆑 Melbert
del: "Add prosthetic limb" surgical operation has been reverted to be a
bit closer to how it used to work - you operate on the missing limb /
limb stump, rather than on the chest.
refactor: Missing limbs are now represented as limb stumps. In practice
this should change nothing (for now), as no features were rewritten to
make use of these besides surgery. Please report any oddities with
missing limbs, however.
/🆑
## About The Pull Request
Turns out `/datum/hud/proc/update_parallax` still had a lot of remnant
code back from when it ticked an update on every tick, even though it
now only gets called on movement/z level changes. This prevented it from
updating the locations of parallax layers unless you move, which is
usually not an issue and goes unnoticed in the case of hud reloads or
pref changes, since the parallax layer cache keeps the correct offsets.
Except in the one specific case that needs to clear this cache entirely
(`swap_out_random_parallax_layer`), which causes it to regenerate with
no offsets, and jump to the correct position abrubtly when you move.
This fixes that
## Why It's Good For The Game
Fixes a bug. I tested when the proc gets called extensively and it's
exclusively on movement and on hud/pref updates concerning the parallax,
which all should get a full reload and not a half-attempt.
## Changelog
🆑
fix: Parallax layers no longer snap to and from the center of the screen
abrubtly when changing the random parallax layer.
/🆑
## About The Pull Request
Revival of https://github.com/tgstation/tgstation/pull/91378 for renewed
effort of ruining the stat panel for everyone.
This PR does a few things to address issues I've had with the HUD in
hopes to bring reliance less upon the stat panel.
1. Adds a Memory button
<img width="133" height="169" alt="image"
src="https://github.com/user-attachments/assets/7f643882-5666-4099-9c68-5d6092a6d82c"
/>
<img width="134" height="169" alt="image"
src="https://github.com/user-attachments/assets/e7592ec3-ec3e-4afe-baa3-6d0e6d5d22c8"
/>
Potential alt icon, but I don't know if it's better
<img width="1322" height="115" alt="image"
src="https://github.com/user-attachments/assets/82cc6ad9-becd-4502-8b83-276b0ef6ed0d"
/>
2. Makes Alien, Animal & Borg HUDs more compact (This is uploaded before
Borg HUD icons were made)
Borg - Removed 'Store' button, now you left click your model to store it
(RMB to open/close), think of it more like a bag now.
<img width="1054" height="324" alt="image"
src="https://github.com/user-attachments/assets/5352a350-8f3e-4b3a-8634-929e2c9aa2f4"
/>
Alien
<img width="305" height="189" alt="image"
src="https://github.com/user-attachments/assets/c0f0b9f0-941a-405e-bdfd-4b5b46690fb6"
/>
Animals - Their HUDs now appear in the corner of the screen rather than
having the strange offset
<img width="202" height="168" alt="image"
src="https://github.com/user-attachments/assets/ddf26108-d930-4744-8ef5-17f981a3384b"
/>
I didn't touch gorilla, they still look weird.
<img width="732" height="181" alt="image"
src="https://github.com/user-attachments/assets/5c1534c3-7190-491d-8a1f-6fe51eebd9a2"
/>
2. Fixes borg numbers not showing up at the request of a user
<img width="701" height="312" alt="image"
src="https://github.com/user-attachments/assets/65464e15-8e31-41f8-b506-050fa27cebde"
/>
Closes https://github.com/tgstation/tgstation/issues/95163
I also added a rustle sound when you drop something as a borg so you
have an audio cue that you dropped something, sometimes as a borg I'll
drop something and think it disappeared, cause I didn't realize I
accidentally hit drop. This is a local sound, so it doesn't play to
anyone near you. Purely for feedback.
3. If you didn't notice, this de-hardcodes the UI for non-humans
UIs now respect your prefs for many more mobs now, pretty much only the
ones with unique special UIs (Alien, pAI, AI, Borg) will now respect
your prefs.
## Why It's Good For The Game
UIs make a bit more sense, takes Memories out of being only accessible
through the stat panel, allows your prefs to be respected more and makes
inventories a little more consistent through mob types.
If the stat panel is to be removed or made optional, we can't afford to
hide Memories through it because certain antagonists (see: nukies)
absolutely rely on it.
## Changelog
🆑 ttt, JohnFulpWillard
add: Added a Memory HUD to your UI. In case you didn't know, you get
memories of things happening around the station, or important antagonist
info such as the nuclear codes.
del: Removed Borg's "store" button, now the cyborg module will behave
more similar to a backpack (LMB to store, RMB to open/close)
fix: Borg material now properly displays how much materials they can
afford with their cell's charge.
qol: Your HUD prefs are respected on more mobs now.
qol: Improved the HUD of simple/basic animals, as well as Cyborgs, AIs,
pAIs and Xenomorphs.
/🆑
---------
Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com>