mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-26 22:50:26 +01:00
master
2239
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
df10c57593 |
webmap is now in maps.txt instead of a config entry (#90821)
## About The Pull Request Currently the button to open a map in webmap is tied to a config entry, which would then take the name of the map being played and get the link to that, however for cases like new/tested/admin uploaded maps where there is no webmap available, this would still have a link to a url that doesn't exist. Instead, we'll make the webmap link be in ``maps.txt``, same as feedbacklink. ## Why It's Good For The Game Explained in the about section, this prevents webmaps appearing for maps that aren't supposed to have a webmap link available. ## Changelog Nothing player-facing, webmaps aren't currently used (afaik) currently cause they're broken for tg codebases. |
||
|
|
b291d8e79a |
Add: Silicon Gender Preference (#90879)
This PR adds a secondary character preference which allows you to pick gender for silicon characters, and have the option of matching or separating that with their character's main gender. Silicon gender is displayed in their examine text as expected. People will have a way to identify the gender of their characters when playing as a cyborg and AI! 🆑 A.C.M.O. add: Adds an option for picking silicon gender to secondary character preferences. Matches the main gender preference by default. add: Adds gender pronouns in cyborg/AI examine text. /🆑 |
||
|
|
400e6c15e4 |
webmap is now in maps.txt instead of a config entry (#90821)
## About The Pull Request Currently the button to open a map in webmap is tied to a config entry, which would then take the name of the map being played and get the link to that, however for cases like new/tested/admin uploaded maps where there is no webmap available, this would still have a link to a url that doesn't exist. Instead, we'll make the webmap link be in ``maps.txt``, same as feedbacklink. ## Why It's Good For The Game Explained in the about section, this prevents webmaps appearing for maps that aren't supposed to have a webmap link available. ## Changelog Nothing player-facing, webmaps aren't currently used (afaik) currently cause they're broken for tg codebases. |
||
|
|
057dbf13b1 |
Add: Silicon Gender Preference (#90879)
## About The Pull Request This PR adds a secondary character preference which allows you to pick gender for silicon characters, and have the option of matching or separating that with their character's main gender. Silicon gender is displayed in their examine text as expected. ## Why It's Good For The Game People will have a way to identify the gender of their characters when playing as a cyborg and AI! ## Changelog 🆑 A.C.M.O. add: Adds an option for picking silicon gender to secondary character preferences. Matches the main gender preference by default. add: Adds gender pronouns in cyborg/AI examine text. /🆑 |
||
|
|
ea28a87ca8 |
Adds map feedback thread support (AI stat panel buff) (#90506)
This PR started with the idea of adding support for map feedback threads, which I added to the roundend report, escape menu, and stat panel. To do this though I had to make pretty annoying changes to the stat panel and had to touch every single time something to the stat panel was added, so since we now have a way to have links in the stat panel I thought of taking full advantage of it and add some QOL. AIs can now track their borgs by clicking their status on the stat panel https://github.com/user-attachments/assets/1789dc46-5d12-48e9-bb8d-d3278aa19639 With Melbert's comment, I added another stat panel entry that directs you to the Webmap page, which currently seems to be a little messed up (https://github.com/AffectedArc07/SS13WebMap/issues/41 & https://github.com/AffectedArc07/SS13WebMap/issues/42) but if they get fixed this would be a swag asf feature Feedback threads was a suggestion from a player and is fully in control of admins as an optional thing, and while we still have stat panel I think it's nice to be able to take advantage of its features. 🆑 admin: Admins can now link a URL for maps, used to give feedback on said maps. Accessible through the roundend report, escape menu, and stat panel. qol: AIs can track their borgs by clicking on them in the stat panel. qol: You can now directly go to the webmap of maps from the stat panel (assuming it's set in config). /🆑 |
||
|
|
8eeca96108 |
Adds Common Second Language quirk, tweaks to partial understanding (#90614)
## About The Pull Request - Tweaks partial understanding. Paragraphs are now split into sentences first creating more natural breaks between sentences. - Adds "Common Second Language" quirk This quirk changes your default understanding of common (up to) 90% (your choice), meaning you drop the occasional word.   Additionally, when your sanity drops below a threshold, you become forced to speak your native language, albeit with a partial understanding applied for everyone else. Incompatible with similar language quirks + can't be taken by humans (yet?) ## Why It's Good For The Game Just a fun way to play around with the new "partial understanding" system. ## Changelog 🆑 Melbert add: "Common Second Language" quirk qol: Language translations chunk sentences together better, making partial understanding a bit easier to parse. /🆑 |
||
|
|
af1abcd81d | Preference menu buttons are disabled until subsystem initializes (#90685) | ||
|
|
fb26b4a35e |
Radio sfx option is in the radio instead of settings (#90598)
## About The Pull Request Opinions aren't too strong about taking it out of the settings page, I only did it cause settings doesn't auto update with the pref updating, so I can put it back if wanted. Adds a volume slider in radios which you can use to edit your own blip volume, which then plays a blip back at you so you know what it sounds like. ## Why It's Good For The Game You now change the volume using the in-game item instead of having to scroll through a bunch of settings and find it, and you get instant feedback so you know exactly what it's gonna sound like. https://github.com/user-attachments/assets/fe936ed8-9620-4e81-8782-e6fa99de100a ## Changelog 🆑 qol: Radios/headsets now have a slider to change the volume from radio noises. /🆑 |
||
|
|
5ee12a8d33 | Adds the ability to link forum accounts (#90441) | ||
|
|
8a44bf25fc |
Reworks language translations. Add partial language understanding. Bilingual update. (#90252)
Fixes #89445 (well, technically. It fixes the bug associated but these `say`s should really be emotes.) Three things: 1. Reworks how language translation works. Rather than scrambling a sentence into a language entirely, sentences are now scrambled on a per-word basis. Additionally, the 1000 most common words of a language are *never* re-scrambled across the duration of a round. Once it's set it's set in stone. Example: (Sample / Old / New)  This allows for a number of things: - More consistent translations, making it (more) viable to actually "teach" someone words for something - Maintaining emphasis such as caps (but not `||`, `++`, or `__` - at least not yet) - The following: 2. Adds partial language understanding Some languages can understand portions of other languages.  This pr adds the following: - Those who understand Beachtongue can understand 50% of Common and 33% of Uncommon words. - Those who understand Common can understand 33% of Beachtongue and 20% of Uncommon words. - Those who understand Uncommon can understand 20% of Common and 20% of Beachtongue words. 3. Bilingual quirk has been expanded to accomodate these changes. There are now two more preferences: - Language Speakable - You can toggle this, so you only understand the language, rather than understand AND speak. - Language Skill - If you choose to be unable to speak the language, you can set how much of the language you can understand, down to 10%. Playing around languages is fun, but due to the way our translation works, ALL context is immediately lost for what the other person may be saying. If the other person is shouting in all caps? Output language is normal chatting. This is lame! Even if someone is unable to understand you, there's a LOT you can convey just by how you speak, and getting that across in game is quite difficult when all translations get mauled so badly. So this changes that. - Emphasis like caps lock is maintained, so you see someone shouting in caps in a foreign language you can probably intuit something is wrong (but not what is wrong!) - Some languages can gleam bits of other languages, so you MIGHT be able to pick out context if you pay close attention - "Brother" languages will now feel more like "brothers" and not completely divergent - You can even "teach" someone words in your language - at least the most common words! (Until next round) 🆑 Melbert add: Languages can now have partial understanding of other languages. More common English words are more likely to be mutually understood. add: Those who understand Beachtongue can understand 50% of Common and 33% of Uncommon words. add: Those who understand Common can understand 33% of Beachtongue and 20% of Uncommon words. add: Those who understand Uncommon can understand 20% of Common and 20% of Beachtongue words. add: Bilingual quirk: You can now choose between being able to speak or not speak the language add: Bilingual quirk: You can now choose to have partial understanding of your language, rather than full. qol: If you speak in ALL CAPS in a foreign language, the translated words will also be ALL CAPS. qol: Many more forms of punctuation are now conveyed across translations. qol: The 1000 most common English words will now never be scrambled when translating into other languages for the duration of the round. This means you can actually "learn" some words if you are especially attentive! (Until the next round at least) refactor: Refactored language translations. Report if you see any super odd looking translations. fix: Force-says forcing you to speak common (such as cult invocations) will now correctly force you to speak common (even if you don't know common) /🆑 |
||
|
|
9bfe257bd0 |
[NO GBP] removes scalies from the codebase (#90472)
## About The Pull Request left over debug line that someone ...? forgot about ## Why It's Good For The Game scalies: ## Changelog 🆑 fix: removes an excess debug line /🆑 |
||
|
|
9aefd83689 |
makes various uis more compatible with high dpi monitors, adds a preference for smaller windows (#90418)
## About The Pull Request various uis (tgui-say, vv, player panel, anything using `/datum/browser`) would not correct for dpi. they now do we also have a preference to allow you to have smaller windows that are zoomed out, instead of larger windows that are not zoomed #### of note, this does require a small change to the usage of css viewport units, like `vh` and `vw`. they need to be fed through the `vp(100vw)` function first. there was only one such unit in the codebase on 4k monitor with 200% scaling: fixed (pref on default)  pref disabled  ## Why It's Good For The Game 516 fucked with uis again and this unfucks them a bit ## Changelog 🆑 qol: there's a new UI preference called UI scale which allows people that use windows scaling to have their UIs original size with the contents zoomed out, instead of the default, which is the UIs being larger with the contents "normal" size fix: various UIs did not respect windows scaling, they now do /🆑 --------- Co-authored-by: harryob <55142896+harryob@users.noreply.github.com> |
||
|
|
5f351c004e |
makes the skin more compatible with 516 for high dpi monitors (#90416)
## About The Pull Request changes a whole load of crap in the skin to make it a bit more reactive to sizing changes, and thus to high dpi monitors this required adding a bunch of splitters - these have a sane preset for most monitors but if you ever need to edit it, it's hidden under the chat settings 1920x1080, 100% scaling  4k, 200% scaling before:  after:  the sliders: [user-attachments/assets/776730a7-a325-4b3b-8e27-15636828c6d4](https://github.com/user-attachments/assets/776730a7-a325-4b3b-8e27-15636828c6d4) ## Why It's Good For The Game it makes the game a bit more playable on my laptop ## Changelog 🆑 qol: under the chat settings, you can now press "Adjust UI Sizes" to drag around some of the panel sizes fix: the input at the bottom right is no longer so teeny tiny on 516 if you use a window scaling that is greater than 100% /🆑 --------- Co-authored-by: harryob <55142896+harryob@users.noreply.github.com> |
||
|
|
15ed8137da |
System for restricting quirks based on species, no more blood deficiency on bloodless species (#90326)
Quirks can now define if they're "species appropriate," where the base proc's behavior is simply "does this species already have the quirk's main trait" I am unsure if that on its own imposes any new restrictions, currently. Additionally, blood deficiency cannot be picked on any species without blood or that doesn't breathe. I'm sure there's more that might make sense, I'm open to suggestions Alternative to #90238 Currently, reduces the possibility of taking something like blood deficiency on a race which suffers no downside from it in order to get free positive quirks. Future-ly, potentially allows quirks exclusive to only a select few species as offered by #90238 🆑 fix: Species without blood can no longer be blood deficient /🆑 |
||
|
|
380c143431 |
Adds map feedback thread support (AI stat panel buff) (#90506)
## About The Pull Request This PR started with the idea of adding support for map feedback threads, which I added to the roundend report, escape menu, and stat panel. To do this though I had to make pretty annoying changes to the stat panel and had to touch every single time something to the stat panel was added, so since we now have a way to have links in the stat panel I thought of taking full advantage of it and add some QOL. AIs can now track their borgs by clicking their status on the stat panel https://github.com/user-attachments/assets/1789dc46-5d12-48e9-bb8d-d3278aa19639 With Melbert's comment, I added another stat panel entry that directs you to the Webmap page, which currently seems to be a little messed up (https://github.com/AffectedArc07/SS13WebMap/issues/41 & https://github.com/AffectedArc07/SS13WebMap/issues/42) but if they get fixed this would be a swag asf feature ##### Code bounty for Ezel/Improvedname ## Why It's Good For The Game Feedback threads was a suggestion from a player and is fully in control of admins as an optional thing, and while we still have stat panel I think it's nice to be able to take advantage of its features. ## Changelog 🆑 admin: Admins can now link a URL for maps, used to give feedback on said maps. Accessible through the roundend report, escape menu, and stat panel. qol: AIs can track their borgs by clicking on them in the stat panel. qol: You can now directly go to the webmap of maps from the stat panel (assuming it's set in config). /🆑 |
||
|
|
32d04164c4 |
Adds Common Second Language quirk, tweaks to partial understanding (#90614)
## About The Pull Request - Tweaks partial understanding. Paragraphs are now split into sentences first creating more natural breaks between sentences. - Adds "Common Second Language" quirk This quirk changes your default understanding of common (up to) 90% (your choice), meaning you drop the occasional word.   Additionally, when your sanity drops below a threshold, you become forced to speak your native language, albeit with a partial understanding applied for everyone else. Incompatible with similar language quirks + can't be taken by humans (yet?) ## Why It's Good For The Game Just a fun way to play around with the new "partial understanding" system. ## Changelog 🆑 Melbert add: "Common Second Language" quirk qol: Language translations chunk sentences together better, making partial understanding a bit easier to parse. /🆑 |
||
|
|
40f644d6d4 | Preference menu buttons are disabled until subsystem initializes (#90685) | ||
|
|
d8ccd8c63f |
Radio sfx option is in the radio instead of settings (#90598)
## About The Pull Request Opinions aren't too strong about taking it out of the settings page, I only did it cause settings doesn't auto update with the pref updating, so I can put it back if wanted. Adds a volume slider in radios which you can use to edit your own blip volume, which then plays a blip back at you so you know what it sounds like. ## Why It's Good For The Game You now change the volume using the in-game item instead of having to scroll through a bunch of settings and find it, and you get instant feedback so you know exactly what it's gonna sound like. https://github.com/user-attachments/assets/fe936ed8-9620-4e81-8782-e6fa99de100a ## Changelog 🆑 qol: Radios/headsets now have a slider to change the volume from radio noises. /🆑 |
||
|
|
12d995aeea |
Squashed commit of the following:
commit cb550ab79badae3ffd493dcee24d96f7ad146ed6 Merge: 732416f01d8 |
||
|
|
1196287662 | Adds the ability to link forum accounts (#90441) | ||
|
|
67dd51be79 |
Reworks language translations. Add partial language understanding. Bilingual update. (#90252)
## About The Pull Request Fixes #89445 (well, technically. It fixes the bug associated but these `say`s should really be emotes.) Three things: 1. Reworks how language translation works. Rather than scrambling a sentence into a language entirely, sentences are now scrambled on a per-word basis. Additionally, the 1000 most common words of a language are *never* re-scrambled across the duration of a round. Once it's set it's set in stone. Example: (Sample / Old / New)  This allows for a number of things: - More consistent translations, making it (more) viable to actually "teach" someone words for something - Maintaining emphasis such as caps (but not `||`, `++`, or `__` - at least not yet) - The following: 2. Adds partial language understanding Some languages can understand portions of other languages.  This pr adds the following: - Those who understand Beachtongue can understand 50% of Common and 33% of Uncommon words. - Those who understand Common can understand 33% of Beachtongue and 20% of Uncommon words. - Those who understand Uncommon can understand 20% of Common and 20% of Beachtongue words. 3. Bilingual quirk has been expanded to accomodate these changes. There are now two more preferences: - Language Speakable - You can toggle this, so you only understand the language, rather than understand AND speak. - Language Skill - If you choose to be unable to speak the language, you can set how much of the language you can understand, down to 10%. ## Why It's Good For The Game Playing around languages is fun, but due to the way our translation works, ALL context is immediately lost for what the other person may be saying. If the other person is shouting in all caps? Output language is normal chatting. This is lame! Even if someone is unable to understand you, there's a LOT you can convey just by how you speak, and getting that across in game is quite difficult when all translations get mauled so badly. So this changes that. - Emphasis like caps lock is maintained, so you see someone shouting in caps in a foreign language you can probably intuit something is wrong (but not what is wrong!) - Some languages can gleam bits of other languages, so you MIGHT be able to pick out context if you pay close attention - "Brother" languages will now feel more like "brothers" and not completely divergent - You can even "teach" someone words in your language - at least the most common words! (Until next round) ## Changelog 🆑 Melbert add: Languages can now have partial understanding of other languages. More common English words are more likely to be mutually understood. add: Those who understand Beachtongue can understand 50% of Common and 33% of Uncommon words. add: Those who understand Common can understand 33% of Beachtongue and 20% of Uncommon words. add: Those who understand Uncommon can understand 20% of Common and 20% of Beachtongue words. add: Bilingual quirk: You can now choose between being able to speak or not speak the language add: Bilingual quirk: You can now choose to have partial understanding of your language, rather than full. qol: If you speak in ALL CAPS in a foreign language, the translated words will also be ALL CAPS. qol: Many more forms of punctuation are now conveyed across translations. qol: The 1000 most common English words will now never be scrambled when translating into other languages for the duration of the round. This means you can actually "learn" some words if you are especially attentive! (Until the next round at least) refactor: Refactored language translations. Report if you see any super odd looking translations. fix: Force-says forcing you to speak common (such as cult invocations) will now correctly force you to speak common (even if you don't know common) /🆑 |
||
|
|
753d8e5ba4 | Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-25-04a | ||
|
|
1b68eba3d8 |
[NO GBP] removes scalies from the codebase (#90472)
## About The Pull Request left over debug line that someone ...? forgot about ## Why It's Good For The Game scalies: ## Changelog 🆑 fix: removes an excess debug line /🆑 |
||
|
|
2691b9a721 |
makes various uis more compatible with high dpi monitors, adds a preference for smaller windows (#90418)
## About The Pull Request various uis (tgui-say, vv, player panel, anything using `/datum/browser`) would not correct for dpi. they now do we also have a preference to allow you to have smaller windows that are zoomed out, instead of larger windows that are not zoomed #### of note, this does require a small change to the usage of css viewport units, like `vh` and `vw`. they need to be fed through the `vp(100vw)` function first. there was only one such unit in the codebase on 4k monitor with 200% scaling: fixed (pref on default)  pref disabled  ## Why It's Good For The Game 516 fucked with uis again and this unfucks them a bit ## Changelog 🆑 qol: there's a new UI preference called UI scale which allows people that use windows scaling to have their UIs original size with the contents zoomed out, instead of the default, which is the UIs being larger with the contents "normal" size fix: various UIs did not respect windows scaling, they now do /🆑 --------- Co-authored-by: harryob <55142896+harryob@users.noreply.github.com> |
||
|
|
fde849bf5f |
makes the skin more compatible with 516 for high dpi monitors (#90416)
## About The Pull Request changes a whole load of crap in the skin to make it a bit more reactive to sizing changes, and thus to high dpi monitors this required adding a bunch of splitters - these have a sane preset for most monitors but if you ever need to edit it, it's hidden under the chat settings 1920x1080, 100% scaling  4k, 200% scaling before:  after:  the sliders: [user-attachments/assets/776730a7-a325-4b3b-8e27-15636828c6d4](https://github.com/user-attachments/assets/776730a7-a325-4b3b-8e27-15636828c6d4) ## Why It's Good For The Game it makes the game a bit more playable on my laptop ## Changelog 🆑 qol: under the chat settings, you can now press "Adjust UI Sizes" to drag around some of the panel sizes fix: the input at the bottom right is no longer so teeny tiny on 516 if you use a window scaling that is greater than 100% /🆑 --------- Co-authored-by: harryob <55142896+harryob@users.noreply.github.com> |
||
|
|
b1ee40b157 |
Jukebox volume fixes (#90417)
## About The Pull Request - Fixes jukebox volume reverting to 100% instead of preference setting when adjusted at the jukebox. - Fixes jukebox volume preference not applying to active jukebox music track - Splits jukebox and instrument into two different preferences. ## Why It's Good For The Game The jukebox volume correctly updates and remains at what the player sets. ## Changelog 🆑 LT3 fix: Jukebox volume preference applies to currently playing music fix: Jukebox volume no longer resets to 100% when adjusted from the object /🆑 |
||
|
|
5bc18586a7 |
System for restricting quirks based on species, no more blood deficiency on bloodless species (#90326)
## About The Pull Request Quirks can now define if they're "species appropriate," where the base proc's behavior is simply "does this species already have the quirk's main trait" I am unsure if that on its own imposes any new restrictions, currently. Additionally, blood deficiency cannot be picked on any species without blood or that doesn't breathe. I'm sure there's more that might make sense, I'm open to suggestions Alternative to #90238 ## Why It's Good For The Game Currently, reduces the possibility of taking something like blood deficiency on a race which suffers no downside from it in order to get free positive quirks. Future-ly, potentially allows quirks exclusive to only a select few species as offered by #90238 ## Changelog 🆑 fix: Species without blood can no longer be blood deficient /🆑 |
||
|
|
2afc7d660e |
Fix ByondUI small map preview (#90277)
## About The Pull Request This PR should fix the problem of small previews in TGUI once and for all (I hope). What was causing it? Because TGUI takes a long time to open, that's why previews were generated broken (small). On Byond 515 this problem was not so noticeable as the interfaces opened faster, but with the release of 516 it became much worse. Previews were generated inside a window that was not yet open, so the scale was broken, sometimes the window would open before the preview was done and sent, usually with small interfaces, or when reopening. I'm not very good at working with signals, and to tell the truth this is my second experience with them, so I hope I did it right. ## Why It's Good For The Game No more small map previews <details> <summary> Video </summary> https://github.com/user-attachments/assets/834f3820-cc6a-4f65-90e5-d6bb2a118bcf </details> ## Changelog 🆑 fix: Fixed small character preview, color matrix preview, mech preview, and other previews with uses ByondUI map /🆑 --------- Co-authored-by: Gaxeer <44334376+Gaxeer@users.noreply.github.com> |
||
|
|
2df73da53e |
Fix ByondUI small map preview (#90277)
## About The Pull Request This PR should fix the problem of small previews in TGUI once and for all (I hope). What was causing it? Because TGUI takes a long time to open, that's why previews were generated broken (small). On Byond 515 this problem was not so noticeable as the interfaces opened faster, but with the release of 516 it became much worse. Previews were generated inside a window that was not yet open, so the scale was broken, sometimes the window would open before the preview was done and sent, usually with small interfaces, or when reopening. I'm not very good at working with signals, and to tell the truth this is my second experience with them, so I hope I did it right. ## Why It's Good For The Game No more small map previews <details> <summary> Video </summary> https://github.com/user-attachments/assets/834f3820-cc6a-4f65-90e5-d6bb2a118bcf </details> ## Changelog 🆑 fix: Fixed small character preview, color matrix preview, mech preview, and other previews with uses ByondUI map /🆑 --------- Co-authored-by: Gaxeer <44334376+Gaxeer@users.noreply.github.com> |
||
|
|
663bc08d96 |
Smartfridge/Vending machine layouts auto-update rather than be a setting (#90159)
## About The Pull Request Sorry for my incompetence with TGUI. This comes from a comment I made here https://github.com/tgstation/tgstation/pull/89137#issuecomment-2601185587 & https://github.com/tgstation/tgstation/pull/89160#pullrequestreview-2566047191 Instead of having to go to your game settings, find the option of layout style you want your vending/fridge machines to be, and change it without having a UI to show you the difference, now the preference is tied to the in-game UI; Clicking to swap to the other layout mode will automatically update your prefs and stay until you change it again. I also separated smartfridges and vending machines as 2 separate prefs so players can have grid on one and list on the other. I couldn't figure out a way to implement this without adding a new var on base ``/datum``, if you got other possible solutions I'd be happy to try. I thought of making 'layouts' limited to smartfridge/vending machines, taking it out of backend for all UIs, but thought I should avoid that if possible in case future UIs want to make use of it. If it's better than a var on datum I'm fine taking that path instead. https://github.com/user-attachments/assets/921586fa-1ec1-49c0-87ca-ec4bbb6aaa98 ## Why It's Good For The Game The settings list having these small options that you can't even see the effects of until you find the machine in-game is a little lame, now players don't even have to think about it, they simply set it to the mode they want as they use the machine and it'll update itself for the player. Currently using the button to swap to list/grid mode instantly reverts itself as soon as you close the UI, which is a little lame. ## Changelog 🆑 qol: Smartfridges and Vending machines no longer have a setting to change the list/grid mode, it instead updates automatically as you swap the mode in-game. /🆑 |
||
|
|
eb0e842320 |
Hallucination revamps and additions (#89865)
## About The Pull Request 1. Hallucination effects are now tiered Hallucinations now all have tiers, ranging from common to special. If you are just hallucinating a teeny bit, you will not experience the more extreme hallucinations, like bubblegum or your mom. But if you're hallucinating off your butt, you will be a bit more likely to experience them. 2. Hallucination rate has been tweaked Default hallucination cooldown is now 20-80 seconds, up from 10-60 seconds. However the cooldown will *also* vary depending on just how much you're hallucinating, going down to 10-40 seconds. 3. RDS is now capped a bit lower (meaning you don't see the higher tiers like bubblegum). But I added a preference to uncap it. For the people who actually like bubblegum visits. 4. If a hallucination fails to trigger, the cooldown will partially reset. (by 75%) 5. "Fake chat" hallucination will pick more viable subjects. Fake chat will try to find someone who can actually speak your language, rather than make a monkey speak mothic or something. (I may revisit this so if you're super-hallucinating it reverts to old behavior though.) 6. Adds a hallucination: Fake blood You hallucinate that you start bleeding, very simple. 7. Adds a hallucination: Fake telepathy You hallucinate a random telepathic message, similar to fake chat. 8. Adds a hallucination: Eyes in the Dark A nearby dark turf will have a set of glowing red eyes shine through the dark. A classic. 9. Adds some new sub-hallucination: PDA ringtone (fake sound), summon guns/magic (fake item) Funny prank. 10. Makes mindbreaker a bit more effective at combating RDS. Pretty much does nothing right now unless you gulp like 50u. ## Why It's Good For The Game Hallucinations are pretty one note if you experience them for longer than 10 minutes. This is due to two fold: - Many hallucinations are goofy, and not subtle - Hallucinations trigger very rapidly You will never fall for a hallucination because in between "You see John Greytide put the blueprints away", you get your mom yelling at you, everyone looking like syndies (again), and bubblegum This pr addresses it by - Limiting the wacky hallucinations for when you're really off your gourd - Reducing the period between triggers - Adding a few hallucinations If the wackier hallucinations are reserved for when you're really off your rocker, this lets the more subtle ones sink in over time, leaves more room for second guessing ## Changelog 🆑 Melbert add: Adds 4-5 new hallucinations. Collect them all. balance: If you are only hallucinating a little bit, the game will prefer to pick more subtle hallucinations. If you are hallucinating a ton, it will prefer the more wacky hallucinations. balance: If you are only hallucinating a little bit, the cooldown between hallucinations is longer. If you are hallucinating a ton, it will be shorter. balance: If a hallucination fails to trigger (such as a deaf person getting a sound hallucination) the next one will be a lot sooner. balance: RDS hallucination amount is capped at mid tier hallucinations. This means bubblegum and co. will be a lot rarer, or will even never show. HOWEVER, there is now a preference allowing you to uncap your RDS hallucinations. balance: Mindbreaker toxin is more effective at suppressing RDS. balance: Some hallucinations effects have been tweaked up or down according to the new thresholds. Madness mask as an example. fix: "Fake Fire" Hallucination works again, and now has a unique message for if you stop-drop-roll that other people see. /🆑 |
||
|
|
f29facab6f |
(Port) Adds changeable character creator backgrounds + character creator zooms out for big chars now (#3015)
<!-- 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 _**SPECIAL THANKS TO ARTUR**_ TL;DR read the title. But I ported the ability to change the background of the character creator [from Virgo](https://github.com/VOREStation/VOREStation/pull/2341). They are able to be changed in the character creation menu. Also character resizing works now, so you can properly see your oversized characters. All of the possible backgrounds are: - 000 (Pure Black) - Midgrey (Grey) - FFF (Pure White) - White (White Tiles) - Plasteel (Normal Tiles) - Dark (Dark Tiles) - Plating (Maints Plating) - Reinforced (Reinforced Floor) <!-- Describe The Pull Request. Please be sure every change is documented or this can delay review and even discourage maintainers from merging your PR! --> <!-- Please make sure to actually test your PRs. If you have not tested your PR mention it. --> ## Why It's Good For The Game Some people play characters that have pure black parts or are really dark, so the ability to change the background helps them better preview their character. <!-- 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. --> ## Proof Of Testing It worked and I was able to update the background in game and change it to other ones. <!-- Compile and run your code locally. Make sure it works. This is the place to show off your changes! We are not responsible for testing your features. --> <details> <summary>Screenshots/Videos</summary>  </details> ## 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. --> 🆑 xPokee, RimiNosha add: Added the ability to change the character creator background via the character visuals tab. fix: Fixed oversized characters and larger characters not being fully visible in the character creator image: Added additional background icons for the character creator. /🆑 <!-- 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. --> <!-- By opening a pull request. You have read and understood the repository rules located on the main README.md on this project. --> --------- Co-authored-by: RimiNosha <riminosha@gmail.com> |
||
|
|
845ed7459e |
Bravo Six, Going Dark: Refactors client colors to fix dupe issues and support filters (#89843)
## About The Pull Request Completely refactored how client colors are handled. Now they're similar to traits, having a source associated with them. Instead of adding and removing by strict type (which makes client colors prone to getting duplicated and not cleaned up) you remove a filter associated with a specific source. Adding another client color with the same source as an already existing one will replace the existing one if its of a different type, or do nothing if they're the same (unless force is set to TRUE). Client colors can also force filter splitting, putting all colors that come before them, themselves, and all colors after them into separate filters - this is useful to prevent mixing in filters which are supposed to remove a certain color. <details> <summary>Example of how Perceptomatrix and nightmare vision goggles combined before this PR:</summary>  And this is after, as you can see nightmare vision effect's red is only slightly tinted by perceptomatix instead of being literally halved.  </details> Additionally, added support for custom filters (and not just colors) to client color code to allow us to work with more colorspaces. Also fixed weird blindness behavior, so this also Closes #89787 ## Why It's Good For The Game Makes code less ass to work with, fixes weird color mixing, etc. ## Changelog 🆑 fix: Fixed perceptomatix helmet allowing you to see even when unconscious refactor: Refactored how client colors are handled, ensuring that certain effects like nightmare goggles don't disappear when another vision-affecting piece of clothing is worn. /🆑 |
||
|
|
368543b6fd | GallowsCalibrator and Waterpig's fixes, but squash | ||
|
|
19e53b97a8 |
Fixes the prefs dummy not updating for species features / Bald quirk prefs QoL (#89833)
 Fixes #89768 Fixes #89769 - Fixes the prefs menu not updating mobs Organs are imprinted on insert, and SSwardrobe didn't reset this imprinting status when taking out items. Weirdly in the past (testing old commits) items withdrawn DID reset imprinting status - or maybe they never set it in the first place? - Lots of prefs now respect features `is_accessible` is used when checking many features rather than the prefs menu checking itself in the UI - Bald quirk QOL Just handy stuff like showing the wig in the prefs preview, pre-starting with your hat attached 🆑 Melbert fix: Preference dummy now properly updates when changing some species features qol: If you have the bald quirk selected, the wig shows up on the preference dummy qol: If you have the bald quirk selected, and your role starts with a hat, the hat will start attached to your wig /🆑 |
||
|
|
e1c7103bab |
Fixes runtimes in fit_viewport when user has the game minimized (#89802)
## About The Pull Request Winget returns 0x0 size when the window is minimized, and it can be set to 0x0 via external tools as well. In this case we should just abort fit_viewport to prevent runtimes. ## Changelog Not player facing |
||
|
|
68b687b13f |
some more 516 compat fixes (#89766)
Ports the helpers from https://github.com/BeeStation/BeeStation-Hornet/pull/12240 This should fix some more of the 516 issues that I've seen while giving a quick check through the code The remaining browse should work now. Also fixing another sass warning while being on it. ## About The Pull Request ## Why It's Good For The Game ## Changelog 🆑 fix: tgui say 516 will no longer change channels when the button is used to drag it fix: tgui say 516 will no longer leak radio messages into the wrong channel fix: runechat flickering when faded up messages fade out /🆑 |
||
|
|
9ebcabb077 |
IconForge: rust-g Spritesheet Generation (#89478)
Replaces the asset subsystem's spritesheet generator with a rust-based implementation (https://github.com/tgstation/rust-g/pull/160). This is a rough port of https://github.com/BeeStation/BeeStation-Hornet/pull/10404, but it includes fixes for some cases I didn't catch that apply on TG. (FWIW we've been using this system on prod for over a year and encountered no major issues.)  `/datum/asset/spritesheet_batched`: A version of the spritesheet system that collects a list of `/datum/universal_icon`s and sends them off to rustg asynchronously, and the generation also runs on another thread, so the game doesn't block during realize_spritesheet. The rust generation is about 10x faster when it comes to actual icon generation, but the biggest perk of the batched spritesheets is the caching system. This PR notably does not convert a few things to the new spritesheet generator. - Species and antagonist icons in the preferences view because they use getFlatIcon ~~which can't be converted to universal icons~~. - Yes, this is still a *massive* cost to init, unfortunately. On Bee, I actually enabled the 'legacy' cache on prod and development, which you can see in my PR. That's why I added the 'clear cache' verb and the `unregister()` procs, because it can force a regeneration at runtime. I decided not to port this, since I think it would be detrimental to the large amount of contributors here. - It is *technically* possible to port parts of this to the uni_icon system by making a uni_icon version of getFlatIcon. However, some overlays use runtime-generated icons which are ~~completely unparseable to IconForge, since they're stored in the RSC and don't exist as files anywhere~~. This is most noticeable with things like hair (which blend additively with the hair mask on the server, thus making them invisible to `get_flat_uni_icon`). It also doesn't help that species and antag icons will still need to generate a bunch of dummies and delete them to even verify cache validity. - It is actually possible to write the RSC icons to the filesystem (using fcopy) and reference them in IconForge. However, I'm going to wait on doing this until I port my GAGS implementation because it requires GAGS to exist on the filesystem as well. IconForge generates a cache based on the set of icons used, all transform operations applied, and the source DMIs of each icon used within the spritesheet. It can compare the hashes and invalidate the cache automatically if any of these change. This means we can enable caching on development, and have absolutely no downsides, because if anything changes, the cache invalidates itself. The caching has a mean cost of ~5ms and saves a lot of time compared to generating the spritesheet, even with rust's faster generation. The main downside is that the cache still requires building the list of icons and their transforms, then json encoding it to send to rustg. Here's an abbreviated example of a cache JSON. All of these need to match for the cache to be valid. `input_hash` contains the transform definitions for all the sprites in the spritesheet, so if the input to iconforge changes, that hash catches it. The `sizes` and `sprites` are loaded into DM. ```json { "input_hash": "99f1bc67d590e000", "dmi_hashes": { "icons/ui/achievements/achievements.dmi": "771200c75da11c62" }, "sizes": [ "76x76" ], "sprites": { "achievement-rustascend": { "size_id": "76x76", "position": 1 } }, "rustg_version": "3.6.0", "dm_version": 1 } ``` Universal icons are just a collection of DMI, Icon State, and any icon transformation procs you apply (blends, crops, scales). They can be convered to DM icons via `to_icon()`. I've included an implementation of GAGS that produces universal icons, allowing GAGS items to be converted into them. IconForge can read universal icons and add them to spritesheets. It's basically just a wrapper that reimplements BYOND icon procs. Converts some uses of md5asfile within legacy spritesheets to use rustg_hash_file instead, improving the performance of their generation. Fixes lizard body markings not showing in previews, and re-adds eyes to the ethereal color preview. This is a side effect of IconForge having *much* better error handling than DM icon procs. Invalid stuff that gets passed around will error instead of silently doing nothing. Changes the CSS used in legacy spritesheet generation to split `background: url(...) no-repeat` into separate props. This is necessary for WebView2, as IE treats these properties differently - adding `background-color` to an icon object (as seen in the R&D console) won't work if you don't split these out. Deletes unused spritesheets and their associated icons (condiments spritesheet, old PDA spritesheet) If you press "Character Setup", the 10-13sec of lag is now approximately 0.5-2 seconds. Tracy profile showing the time spent on get_asset_datum. I pressed the preferences button during init on both branches. Do note that this was ran with a smart cache HIT, so no generation occurred.  Much lower worst-case for /datum/asset/New (which includes `create_spritesheets()` and `register()`)  Here's a look at the internal costs from rustg - as you can see `generate_spritesheet()` is very fast:  **Before**  **After**  🆑 fix: Fixed lizard body markings and ethereal feature previews in the preference menu missing some overlays. refactor: Optimized spritesheet asset generation greatly using rustg IconForge, greatly reducing post-initialization lag as well as reducing init times and saving server computation. config: Added 'smart' asset caching, for batched rustg IconForge spritesheets. It is persistent and suitable for use on local, with automatic invalidation. add: Added admin verbs - Debug -> Clear Smart/Legacy Asset Cache for spritesheets. fix: Fixed R&D console icons breaking on WebView2/516 /🆑 |
||
|
|
b9c803a9d8 |
Base implementation of /datum/persistent_client (#89449)
Converts `/datum/player_details` into `/datum/persistent_client`. Persistent Clients persist across connections. The only time a mob's persistent client will change is if the ckey it's bound to logs into a different mob, or the mob is deleted (duh). Also adds PossessByPlayer() so that transfering mob control is cleaner and makes more immediate sense if you don't know byond-fu. Clients are an abstract representation of a connection that can be dropped at almost any moment so putting things that should be stable to access at any time onto an undying object is ideal. This allows for future expansions like abstracting away client.screen and managing everything cleanly. |
||
|
|
d5c9c93500 |
Adds another option for ghost polling sound. (#88858)
## About The Pull Request - This is a commissioned work. - added a new ghost poll sound - added volume sliders for ghost poll sounds - added ghost poll sound pref - renamed previous sound to calm - calm is enabled by default - normalised volume of the "calm" prompt   https://github.com/user-attachments/assets/8178c108-a632-4f06-879a-00203f2afd3a ## Why It's Good For The Game - it's more ***alerty*** ## Changelog 🆑 grungussuss qol: ghost poll sound can now be disabled qol: ghost poll sound volume can now be tweaked sound: added new ghost poll sound. sound: normalised volume of ghost poll sounds /🆑 |
||
|
|
95081b7acd |
Adds a Config for Auto-Deadminning on Ready Up and Latejoining (#89522)
## About The Pull Request Fixes #89458 Adds a config for auto-deadminning admins who ready up before the round starts, or click join game after. The deadminning happens as soon as the button is pressed, not when a job is selected or the round starts. I figure it's better to do it straight away since both have opportunities for metainfo to be posted in admin chat. Before there's admins messing with dynamic config / plotting events etc. and during the round there's basically everything that gets posted to admin logs. I've had to add a typecheck to the auto_deadmin proc, since the lobby menu technically happens on the centcom Z-level, and there's a pref for ignoring deadminning on centcom Z, so it checks to see if the admin is a new player mob. Changed the old config from auto_deadmin_player to auto_deadmin_always to make it less deceptive. Was suggested a pref could be added to do this. I can do that if people want it maybe, but it's not in this PR at the time of posting it. Is now a pref <img src="https://i.ibb.co/211sBMYd/Deadmin-Prefs1.png"> <img src="https://i.ibb.co/r20Srbw4/Deadmin-Prefs2.png"> I dunno if the latejoin proccall is in the right spot in the click sequence thing I can move it if people want. ## Why It's Good For The Game Admins spawning themselves on station is very important for both shenanigans and troubleshooting. It's annoying to have to click readmin every time and I'm too lazy to figure out how to perms escalate my way into disabling that config every round (Though I have tried). This PR is marginally more likely to convince Timber to turn that off than cussing him out in adminbus. ## Changelog 🆑 admin: Added a new config to force admins to deadmin when readying up or latejoining the round. /🆑 |
||
|
|
948241b04d | Some Loadout Additions (#89500) | ||
|
|
1299d6231f |
Sound Mixer Part 2 (#89251)
Part 1 by grungussuss: https://github.com/tgstation/tgstation/pull/87529  gives players more control over how loud they want certain sounds to be 🆑 Rengan sound: the volume that vox, admin sound, insturments play at can now be tweaked in preferences, check your preferences! sound: Elevator now uses ambience volume preference, jukeboxes uses instrument volume preference and end of round musics uses admin music volume preference. /🆑 |
||
|
|
6d2bab909c |
Fixes the prefs dummy not updating for species features / Bald quirk prefs QoL (#89833)
## About The Pull Request  Fixes #89768 Fixes #89769 - Fixes the prefs menu not updating mobs Organs are imprinted on insert, and SSwardrobe didn't reset this imprinting status when taking out items. Weirdly in the past (testing old commits) items withdrawn DID reset imprinting status - or maybe they never set it in the first place? - Lots of prefs now respect features `is_accessible` is used when checking many features rather than the prefs menu checking itself in the UI - Bald quirk QOL Just handy stuff like showing the wig in the prefs preview, pre-starting with your hat attached ## Changelog 🆑 Melbert fix: Preference dummy now properly updates when changing some species features qol: If you have the bald quirk selected, the wig shows up on the preference dummy qol: If you have the bald quirk selected, and your role starts with a hat, the hat will start attached to your wig /🆑 |
||
|
|
20054e9bb4 |
HACK: Fixes 516 small character creator bug by shaking screen_loc. (#89933)
## About The Pull Request So basically there's some byond bug that has made character previews small and things like cameras offset for the longest time when you open them. Basically when ``/atom/movable/screen/proc/set_position`` is called and it has an ``assigned_map``, sleep, add three to the x and y offset, sleep, then reset it. Sorry @Mothblocks but your original code to update the character after a second doesn't seem to work anymore.  ## Why It's Good For The Game This is not good for the game ## Changelog 🆑 fix: Character creator preview being miniature /🆑 |
||
|
|
4e131fd24e |
HACK: Fixes 516 small character creator bug by shaking screen_loc. (#89933)
## About The Pull Request So basically there's some byond bug that has made character previews small and things like cameras offset for the longest time when you open them. Basically when ``/atom/movable/screen/proc/set_position`` is called and it has an ``assigned_map``, sleep, add three to the x and y offset, sleep, then reset it. Sorry @Mothblocks but your original code to update the character after a second doesn't seem to work anymore.  ## Why It's Good For The Game This is not good for the game ## Changelog 🆑 fix: Character creator preview being miniature /🆑 |
||
|
|
7c536cd4f0 |
Fixes runtimes in fit_viewport when user has the game minimized (#89802)
## About The Pull Request Winget returns 0x0 size when the window is minimized, and it can be set to 0x0 via external tools as well. In this case we should just abort fit_viewport to prevent runtimes. ## Changelog Not player facing |
||
|
|
dfa7f2bb62 |
some more 516 compat fixes (#89766)
Ports the helpers from https://github.com/BeeStation/BeeStation-Hornet/pull/12240 This should fix some more of the 516 issues that I've seen while giving a quick check through the code The remaining browse should work now. Also fixing another sass warning while being on it. ## About The Pull Request ## Why It's Good For The Game ## Changelog 🆑 fix: tgui say 516 will no longer change channels when the button is used to drag it fix: tgui say 516 will no longer leak radio messages into the wrong channel fix: runechat flickering when faded up messages fade out /🆑 |
||
|
|
cc335e7e9e |
IconForge: rust-g Spritesheet Generation (#89478)
## About The Pull Request Replaces the asset subsystem's spritesheet generator with a rust-based implementation (https://github.com/tgstation/rust-g/pull/160). This is a rough port of https://github.com/BeeStation/BeeStation-Hornet/pull/10404, but it includes fixes for some cases I didn't catch that apply on TG. (FWIW we've been using this system on prod for over a year and encountered no major issues.) ### TG MAINTAINER NOTE  ### Batched Spritesheets `/datum/asset/spritesheet_batched`: A version of the spritesheet system that collects a list of `/datum/universal_icon`s and sends them off to rustg asynchronously, and the generation also runs on another thread, so the game doesn't block during realize_spritesheet. The rust generation is about 10x faster when it comes to actual icon generation, but the biggest perk of the batched spritesheets is the caching system. This PR notably does not convert a few things to the new spritesheet generator. - Species and antagonist icons in the preferences view because they use getFlatIcon ~~which can't be converted to universal icons~~. - Yes, this is still a *massive* cost to init, unfortunately. On Bee, I actually enabled the 'legacy' cache on prod and development, which you can see in my PR. That's why I added the 'clear cache' verb and the `unregister()` procs, because it can force a regeneration at runtime. I decided not to port this, since I think it would be detrimental to the large amount of contributors here. - It is *technically* possible to port parts of this to the uni_icon system by making a uni_icon version of getFlatIcon. However, some overlays use runtime-generated icons which are ~~completely unparseable to IconForge, since they're stored in the RSC and don't exist as files anywhere~~. This is most noticeable with things like hair (which blend additively with the hair mask on the server, thus making them invisible to `get_flat_uni_icon`). It also doesn't help that species and antag icons will still need to generate a bunch of dummies and delete them to even verify cache validity. - It is actually possible to write the RSC icons to the filesystem (using fcopy) and reference them in IconForge. However, I'm going to wait on doing this until I port my GAGS implementation because it requires GAGS to exist on the filesystem as well. #### Caching IconForge generates a cache based on the set of icons used, all transform operations applied, and the source DMIs of each icon used within the spritesheet. It can compare the hashes and invalidate the cache automatically if any of these change. This means we can enable caching on development, and have absolutely no downsides, because if anything changes, the cache invalidates itself. The caching has a mean cost of ~5ms and saves a lot of time compared to generating the spritesheet, even with rust's faster generation. The main downside is that the cache still requires building the list of icons and their transforms, then json encoding it to send to rustg. Here's an abbreviated example of a cache JSON. All of these need to match for the cache to be valid. `input_hash` contains the transform definitions for all the sprites in the spritesheet, so if the input to iconforge changes, that hash catches it. The `sizes` and `sprites` are loaded into DM. ```json { "input_hash": "99f1bc67d590e000", "dmi_hashes": { "icons/ui/achievements/achievements.dmi": "771200c75da11c62" }, "sizes": [ "76x76" ], "sprites": { "achievement-rustascend": { "size_id": "76x76", "position": 1 } }, "rustg_version": "3.6.0", "dm_version": 1 } ``` ### Universal Icons Universal icons are just a collection of DMI, Icon State, and any icon transformation procs you apply (blends, crops, scales). They can be convered to DM icons via `to_icon()`. I've included an implementation of GAGS that produces universal icons, allowing GAGS items to be converted into them. IconForge can read universal icons and add them to spritesheets. It's basically just a wrapper that reimplements BYOND icon procs. ### Other Stuff Converts some uses of md5asfile within legacy spritesheets to use rustg_hash_file instead, improving the performance of their generation. Fixes lizard body markings not showing in previews, and re-adds eyes to the ethereal color preview. This is a side effect of IconForge having *much* better error handling than DM icon procs. Invalid stuff that gets passed around will error instead of silently doing nothing. Changes the CSS used in legacy spritesheet generation to split `background: url(...) no-repeat` into separate props. This is necessary for WebView2, as IE treats these properties differently - adding `background-color` to an icon object (as seen in the R&D console) won't work if you don't split these out. Deletes unused spritesheets and their associated icons (condiments spritesheet, old PDA spritesheet) ## Why It's Good For The Game If you press "Character Setup", the 10-13sec of lag is now approximately 0.5-2 seconds. Tracy profile showing the time spent on get_asset_datum. I pressed the preferences button during init on both branches. Do note that this was ran with a smart cache HIT, so no generation occurred.  Much lower worst-case for /datum/asset/New (which includes `create_spritesheets()` and `register()`)  Here's a look at the internal costs from rustg - as you can see `generate_spritesheet()` is very fast:  ### Comparison for a single spritesheet - chat spritesheet: **Before**  **After**  ## Changelog 🆑 fix: Fixed lizard body markings and ethereal feature previews in the preference menu missing some overlays. refactor: Optimized spritesheet asset generation greatly using rustg IconForge, greatly reducing post-initialization lag as well as reducing init times and saving server computation. config: Added 'smart' asset caching, for batched rustg IconForge spritesheets. It is persistent and suitable for use on local, with automatic invalidation. add: Added admin verbs - Debug -> Clear Smart/Legacy Asset Cache for spritesheets. fix: Fixed R&D console icons breaking on WebView2/516 /🆑 |
||
|
|
a0e862d575 |
Base implementation of /datum/persistent_client (#89449)
## About The Pull Request Converts `/datum/player_details` into `/datum/persistent_client`. Persistent Clients persist across connections. The only time a mob's persistent client will change is if the ckey it's bound to logs into a different mob, or the mob is deleted (duh). Also adds PossessByPlayer() so that transfering mob control is cleaner and makes more immediate sense if you don't know byond-fu. ## Why It's Good For The Game Clients are an abstract representation of a connection that can be dropped at almost any moment so putting things that should be stable to access at any time onto an undying object is ideal. This allows for future expansions like abstracting away client.screen and managing everything cleanly. |