mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-09 16:05:07 +00:00
c53286a62526560ab79b5e7e8b1d6782ed935a0a
1183 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
a1fdc715df |
Request Emergency Temporary Access - RETA (#92753)
<img width="819" height="348" alt="image" src="https://github.com/user-attachments/assets/0424ec76-2648-43d3-8e94-d44558b44bcf" /> ## About The Pull Request Follow up from #92751 - Not to conflict with it but as an idea on how to change it for the long run. Paramedics currently start with broad department access. This proposal replaces that by granting temporary department access only when an emergency is called. When a player presses "Call X" on a Requests Console, responders called receive temporary access to the common work areas of that department.  > [Security] The Automated Announcement System coldly states, "SECURITY EMERGENCY in Research Lab! (Called by Sloan Keppel, Scientist) RETA door access granted to responders." > [Science] The Automated Announcement System coldly states, "RETA activated (Called by Sloan Keppel, Scientist). Security personnel now have temporary access to your areas." They do not receive access to sub rooms or high risk areas. - Access lasts 5 minutes (configurable) - Access is removed when the timer expires or the emergency is resolved - No mapping changes are required (uses existing request consoles) - Removes Paramedics round start access but gives them external access to rescue bodies in space by default - Flashing blue lights on doors affected by temporary access <img width="897" height="837" alt="image" src="https://github.com/user-attachments/assets/97980cb4-3481-44b6-9f96-fc241ca16f57" /> **The full document is here: https://hackmd.io/@NM8HxpG_Toahg5pimrpsKw/Hk0tKq3Yxe** **Wiki documentation for players and admins: https://wiki.tgstation13.org/Guide_To_RETA** ## Why It's Good For The Game - Removes paramedics’ broad “Doctor+” access. - Keeps them effective as emergency responders. - Responders must be called in OR access upgraded. - Keeps sensitive areas secure. - Prevents spam or stacking through cooldown. - Scales across all maps without mapper work. - Gives admins a new tool for temp department wide access - Dedicated logging file and unit tests - Very performant, only affects living players with connected mind - Gives Request Consoles more use as an alarm button and further utility - Imagine later on "Request Janitor" which sorts access and tells Janitor where needed ## Changelog 🆑 add: RETA System - Request Consoles give temporary access to responders when used for some areas. Paramedics lose broad access but get external space access. qol: Request consoles now show name and job role on call message & Cooldown on spamming calls + sound prompt qol: Medibot access no longer based on Paramedic trim ID - Still has original access image: Added "lights_reta" for temporary door access when in effect admin: Gives admins "RETA door access" verb for giving department wide area access on maps. config: New config settings for RETA /🆑 |
||
|
|
ab4a2d291c |
Disable GUEST_BAN by default (#92844)
Someone I'm helping got hit by this in local testing. These configs aren't really supposed to represent production recommendations so I think it's fine to just comment out |
||
|
|
80069f4830 |
Increase repo default max number of traitors spawned roundstart (#92478)
## About The Pull Request Repo default max traitors upped from 1 per 38 players (up to 2 traitors at 50 pop, up to 3 traitors at 80 pop) to 1 per 24 players (up to 3 traitors at 50 pop, up to 4 traitors at 80 pop) Note: The ruleset can be executed twice or even thrice depending on RNG, meaning a particularly chaotic round may spawn with up to 6/9 traitors at 50 pop (and more may be added via midrounds and latejoins). ## Why It's Good For The Game #67823 changed this number This was done because dynamic would force spawn midround traitor IF any midround ruleset failed to execute. But dynamic no longer does that. So this value should be reverted. |
||
|
|
cb7e44e7ee |
Updates the AFK logout report to utilize configs for it's timers (#92662)
## About The Pull Request Rather than use hardcoded timers for the logout report, the report instead utilizes a timer based on config values. The default value is the current live value. This timer can also be configurated to utilize randomization. Currently, it defaults to randomizing between -3 minutes to +3 minutes for when the report is sent. The logout report timer is also added to the admin log. ## Why It's Good For The Game This shouldn't be dictated by the codebase, as it is an admin tool. |
||
|
|
efb97e6b91 |
Updates config comment for mc tick rate pop adjustment (#92451)
Co-authored-by: LT3 <83487515+lessthnthree@users.noreply.github.com> |
||
|
|
c8647bdf6c |
Adds config for roundstart blue alert (#92015)
## About The Pull Request Adds a config option `roundstart_blue_alert` which determines if the station is put on blue alert on roundstart. **Greenshifts** are unaffected, they will still have a unique announcement indicating it's a greenshift **Roundstart reports** are unaffected, they will be sent regardless. ## Why It's Good For The Game Some servers put more player agency on command to control the report level, some servers re-theme the levels so blue is more of an involved thing, some servers put more weight on the current level, etc. Giving the option of staying on green until someone decides to up it is neat I guess. Before doing this I tried to find when this was even added - to see what the justification was and make sure I wasn't violating it - and wasn't successful. R4407 had "`Security Level Elevated`" in their reports but didn't have security levels implemented, so it was purely fluff. ## Changelog 🆑 Melbert config: Adds "roundstart_blue_alert", allowing you to disable roundstart blue alert. Defaults to "on". /🆑 |
||
|
|
6a7c701d07 | Move Birdshot to the Map Depot (#92022) | ||
|
|
d0e2bfe85c |
Increases logging for candidate polls (#91590)
## About The Pull Request The game will now log when someone signs up or removes their candidacy for ghost polls for roles. This also fixes a runtime I experienced while testing it and running pirates with no candidates signed up, IDK if it had any effect but it's possible the runtime was causing the ship not to spawn. ## Why It's Good For The Game Mostly just that I saw admins requesting this on several recent occasions. It's already possible to dig up some of this information through the existing logs but it's a bit of a pain. ## Changelog 🆑 admin: Additional logging for when people sign up for ghost roles. /🆑 |
||
|
|
2e5d3ad984 |
Adds In Game Rank Editing (Permissions Panel Cleanup) (#91873)
## About The Pull Request Ok there's a lot here, sorry bout that. - Cleaned up the permissions panel backend pretty signficantly - Added some extra security measures to said code, mostly proc call checks - Properly implemented filtering code jordie wrote years and years ago for permissions logs - Cleaned up the permissions ui generally, more bars, nicer lookin stuff, etc - Fixed the Management panel's relationship with combined roles, and renamed it to Housekeeping. Its display is expanded too. - Added tracking to rank datums on where exactly they came from - Added a new tab to the permissions panel which allows the modification and deletion of ranks - Beefed up rank modification to try and avoid accidential temp rank additions to the db I'm doing my best to avoid perms escalation issues, tho they are always possible right. Also, got mad at some query cleanup handling, did a pass on it. this isn't nearly all of em, but it's some. ## Why It's Good For The Game I realized there is no way to, in game, cleanly edit/create ranks, and that the way the existing system worked was quite opaque. I'm trying to fix that here. It does mean potentially opening up DB rank deletion/modification to bad actors, but frankly I am not overly worried about that. Admin modification has always been a vulnerability so like. Here's a video with my changes (mostly, it's lightly outdated) https://file.house/XqME7KWKk0ULj4ZUkJ5reg==.mp4 ## Changelog 🆑 refactor: Fucked with admin rank setup very slightly, please yell at me if anything is wrong. admin: Updated the permissions panel to be a good bit more user friendly, added rank management support to it. server: I've added code that gives the game modification/deletion perms for the rank table, be made aware. /🆑 --------- Co-authored-by: san7890 <the@san7890.com> |
||
|
|
4c277dc572 |
Dynamic Rework (#91290)
## About The Pull Request Implements https://hackmd.io/@tgstation/SkeUS7lSp , rewriting Dynamic from the ground-up - Dynamic configuration is now vastly streamlined, making it far far far easier to understand and edit - Threat is gone entirely; round chaos is now determined by dynamic tiers - There's 5 dynamic tiers, 0 to 4. - 0 is a pure greenshift. - Tiers are just picked via weight - "16% chance of getting a high chaos round". - Tiers have min pop ranges. "Tier 4 (high chaos) requires 25 pop to be selected". - Tier determines how much of every ruleset is picked. "Tier 4 (High Chaos) will pick 3-4 roundstart[1], 1-2 light, 1-2 heavy, and 2-3 latejoins". - The number of rulesets picked depends on how many people are in the server - this is also configurable[2]. As an example, a tier that demands "1-3" rulesets will not spawn 3 rulesets if population <= 40 and will not spawn 2 rulesets if population <= 25. - Tiers also determine time before light, heavy, and latejoin rulesets are picked, as well as the cooldown range between spawns. More chaotic tiers may send midrounds sooner or wait less time between sending them. - On the ruleset side of things, "requirements", "scaling", and "enemies" is gone. - You can configure a ruleset's min pop and weight flat, or per tier. - For example a ruleset like Obsession is weighted higher for tiers 1-2 and lower for tiers 3-4. - Rather than scaling up, roundstart rulesets can just be selected multiple times. - Rulesets also have `min_antag_cap` and `max_antag_cap`. `min_antag_cap` determines how many candidates are needed for it to run, and `max_antag_cap` determines how many candidates are selected. - Rulesets attempt to run every 2.5 minutes. [3] - Light rulesets will ALWAYS be picked before heavy rulesets. [4] - Light injection chance is no longer 100%, heavy injection chance formula has been simplified. - Chance simply scales based on number of dead players / total number off players, with a flag 50% chance if no antags exist. [5] [1] This does not guarantee you will actually GET 3-4 roundstart rulesets. If a roundstart ruleset is picked, and it ends up being unable to execute (such as "not enough candidates", that slot is effectively a wash.) This might be revisited. [2] Currently, this is a hard limit - below X pop, you WILL get a quarter or a half of the rulesets. This might be revisited to just be weighted - you are just MORE LIKELY to get a quarter or a half. [3] Little worried about accidentally frontloading everything so we'll see about this [4] This may be revisited but in most contexts it seems sensible. [5] This may also be revisited, I'm not 100% sure what the best / most simple way to tackle midround chances is. Other implementation details - The process of making rulesets has been streamlined as well. Many rulesets only amount to a definition and `assign_role`. - Dynamic.json -> Dynamic.toml - Dynamic event hijacked was ripped out entirely. - Most midround antag random events are now dynamic rulesets. Fugitives, Morphs, Slaughter Demons, etc. - The 1 weight slaughter demon event is gone. RIP in peace. - There is now a hidden midround event that simply adds +1 latejoin, +1 light, or +1 heavy ruleset. - `mind.special_role` is dead. Minds have a lazylist of special roles now but it's essentially only used for traitor panel. - Revs refactored almost entirely. Revs can now exist without a dynamic ruleset. - Cult refactored a tiny bit. - Antag datums cleaned up. - Pre round setup is less centralized on Dynamic. - Admins have a whole panel for interfacing with dynamic. It's pretty slapdash I'm sure someone could make a nicer looking one.   - Maybe some other things. ## Why It's Good For The Game See readme for more info. Will you see a massive change in how rounds play out? My hunch says rounds will spawn less rulesets on average, but it's ultimately to how it's configured ## Changelog 🆑 Melbert refactor: Dynamic rewritten entirely, report any strange rounds config: Dynamic config reworked, it's now a TOML file refactor: Refactored antag roles somewhat, report any oddities refactor: Refactored Revolution entirely, report any oddities del: Deleted most midround events that spawn antags - they use dynamic rulesets now add: Dynamic rulesets can now be false alarms add: Adds a random event that gives dynamic the ability to run another ruleset later admin: Adds a panel for messing around with dynamic admin: Adds a panel for chance for every dynamic ruleset to be selected admin: You can spawn revs without using dynamic now fix: Nuke team leaders get their fun title back /🆑 |
||
|
|
096c032402 |
Adds a new halloween species: Spirits (#90711)
## About The Pull Request Adds 2 new species: Spirits and Ghosts Spirits are available roundstart during Halloween, Wabbajack and Xenobio's black slime extract Ghosts are available through Magic mirrors They fly around, and don't have legs and instead float around. They also can't get legs implanted onto themselves. They also do have organs, so they are affected by flashbangs, they do get hungry, they do need oxygen to survive (they don't take damage in space but they do suffocate & get slowdown), and can process chems. Gibbing a ghost gives ectoplasm, an ingredient for ghost burgers. Chaplains also got a buff here, null rod-type weapons' bane is now against Spirit mobs, rather than hardcoded revenants. This means it now includes Spirits/Ghosts, but also Soulscythes & Cult shades. Also re-adds https://github.com/tgstation/tgstation/pull/81630 which was reverted in https://github.com/tgstation/tgstation/pull/86506 which I assume was accidental. ### The difference between Spirits and Ghosts Ghosts have an innate ability to become incorporeal, which allows them to phase through walls and stuff. Using this will immediately make them drop any non-ghost limb/organ (not implants cause I thought it would be funny). This ability is not available if they have holy water in their system, and like revenants they also can't walk over blessed tiles with it. They are also invisible to cameras while using this (not the obscura though). Sprites taken from observers directly, if anyone wants to make custom sprites for them feel free. If anyone wants to make this obtainable somehow in-game as well I wouldn't be opposed, halloween is just where I thought it would fit most. This also adds a lot of fixes that I encountered trying to add this, from systems that have been neglected throughout the years. https://github.com/user-attachments/assets/e368d710-80a0-4c63-b271-1abe3dd41a5e ## Why It's Good For The Game We haven't gotten a new halloween species in a long time and thought it would be fun if you can play as an actual ghost, the soul that remains after a person passes, so Halloween feels more haunted. It's overall made in just good fun, with a bonus that Ghosts are a cool species to play with as well for Wizards & maybe Chaplains in the future (Dead sect when?) ## Changelog 🆑 add: Added a new halloween species: Spirits, a species without legs and instead floats. add: Added a new magic mirror species: Ghosts, like spirits but with the ability to become incorporeal, traversing through solid wall. fix: Mobs unable to use storage items now can't use storage items. fix: Mobs unable to use items can now not open airlocks & closets fix: Mobs unable to pick items up can no longer pick items up and immediately drop, moving one tile at a time. fix: Mobs with intentional missing limbs (Alien larva) no longer show their limbs as missing on examine (again) fix: Golems' pref page had a missing icon, it now has one. /🆑 --------- Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com> |
||
|
|
4c82b029c7 |
Removes widescreen config (#91419)
## About The Pull Request 19x15 forever, or 15x15 if you're non widescreen user. ## Why It's Good For The Game Idek why this is a config |
||
|
|
9db2f6916b |
Sets prettier to run on the repo (#91379)
## About The Pull Request Prettier (an auto formatter) is set to only run within the tgui folder currently. This removes that limitation, allowing it to automatically format all supported files in the repo (.js, .html, .yml [etc](https://prettier.io/docs/)) I made a few exceptions for bundled and generated files ## Why It's Good For The Game I'm of the opinion that code should look uniform and am lazy enough to want CTRL-S to format files without having to think beyond that ## Changelog |
||
|
|
7b04440de1 |
Re-adds the Dragoon tomb ruin & Spear (#90781)
## About The Pull Request It was removed in https://github.com/tgstation/tgstation/pull/27799 because the spear was broken and the Flans' AI sucked with not-great sprites and was all just one big reference. Original addition: https://github.com/tgstation/tgstation/pull/22270 This re-adds it, updates the map (now using airless turfs) with extra ambiance, using ash whelps (lavaland variation of ice whelps) instead of Flans, re-adds the spear, and adds armor as well this time around. The spear gives you a jump ability to crash down upon a player below you, rather than teleporting to wherever you throw the spear at. You can't attack while mid-air, you can go through tables but not walls/doors, and you also can't un-dualwield or drop the spear mid-jump. Landing on a mob deals double damage to them (36 to unarmored people), while landing on objects deals 150 damage to them (taken from savannah's jump ability, which was in turn taken from hulk's punching) It's also got some extra throw force (24 compared to default spear's 20) The armor has basic security-level armor but covers your whole body. Does not include space protection, and can be worn by Ian. Video demonstration https://github.com/user-attachments/assets/a77c3a0d-17d2-4e8d-88b6-cdbca8b1f2c3 New sprites demonstration https://github.com/user-attachments/assets/0e465351-5484-406f-8adc-ffa1ac180daf Armor demonstration https://github.com/user-attachments/assets/abdfcac6-65bf-443c-bde2-27d157ee3a80 Map  With the changes in https://github.com/tgstation/tgstation/pull/90771 I had to mess with ash whelp abilities a bit, I decided to make them use cold fire instead of hardcoding blue color on top of the fire sprites, and it now acts accordingly too https://github.com/user-attachments/assets/cfca0d70-d13d-4c73-996d-2d4a7519866d The jump was taken from Savannah Ivanov, and Goof's bunny jumping. ##### Code bounty by Ezel/Improvedname ## Why It's Good For The Game This Re-implements a old spear that got removed for its buggyness/bad mapping and on the authors request as well not wanting to deal with it. Re-introduces the SkyBulge as a space ruin, referencing Dragoons from Final Fantasy. this just like any normal spear, but using the savannah jump mechanic, this allows you to close distances with the spear avoiding ranged projectiles in the jump, and if you directly land on your target you will do double the damage. ##### -Ezel/Improvedname ## Changelog 🆑 Ezel/Improvedname, Toriate, JohnFulpWillard add: Re-added the Dragoon Tomb lair, now has a Skybulge spear and Drachen armor. balance: Ice whelps now spit out cold fire. /🆑 --------- Co-authored-by: Jacquerel <hnevard@gmail.com> |
||
|
|
cb51a652a9 |
Adds automatic GAGS icon generation for mapping and the loadout menu (#90940)
## About The Pull Request Revival of https://github.com/tgstation/tgstation/pull/86482, which is even more doable now that we have rustg iconforge generation. What this PR does: - Sets up every single GAGS icon in the game to have their own preview icon autogenerated during compile. This is configurable to not run during live. The icons are created in `icons/map_icons/..` - This also has the side effect of providing accurate GAGS icons for things like the loadout menu. No more having to create your own previews.  <details><summary>Mappers rejoice!</summary>   </details> <details><summary>Uses iconforge so it does not take up much time during init</summary>  </details> --- ### Copied from https://github.com/tgstation/tgstation/pull/86482 as this still applies: Note for Spriters: After you've assigned the correct values to vars, you must run the game through init on your local machine and commit the changes to the map icon dmi files. Unit tests should catch all cases of forgetting to assign the correct vars, or not running through init. Note for Server Operators: In order to not generate these icons on live I've added a new config entry which should be disabled on live called GENERATE_ASSETS_IN_INIT in the config.txt ## Why It's Good For The Game No more error icons in SDMM and loadout. ## Changelog 🆑 refactor: preview icons for greyscale items are now automatically generated, meaning you can see GAGS as they actually appear ingame while mapping or viewing the loadout menu. /🆑 --------- Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com> |
||
|
|
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. |
||
|
|
dba842e199 |
Configurable Spy Bounties (#90825)
## About The Pull Request ``` ### Spy config ## Changes refresh period between bounties - in deciseconds SPY_BOUNTY_REFRESH_TIMER 7200 ## Changes amount of easy bounties offered at once. Limit = 8 SPY_BOUNTY_MAX_EASY 4 ## Changes amount of medium bounties offered at once. Limit = 6 SPY_BOUNTY_MAX_MEDIUM 2 ## Changes amount of hard bounties offered at once. Limit = 4 SPY_BOUNTY_MAX_HARD 2 ## Changes amount of refreshes necessary per each hard bounty ## 1 = A hard bounty is added per refresh (until the max) ## 0.5 = A hard bounty is added every 2 refreshes (until the max) SPY_BOUNTY_HARD_BOUNTIES_PER_REFRESH 1 ## Easy bounties grant uplink rewards that cost this much TC (or lower). ## Also functions as the lower end for medium bounties. SPY_EASY_REWARD_TC_THRESHOLD 5 ## Hard bounties grant uplink rewards that cost this much TC (or lower). ## Also functions as the upper end for medium bounties. SPY_HARD_REWARD_TC_THRESHOLD 15 ``` ## Why It's Good For The Game Lets faster or slower paced servers tweak Spy to their desire, either by limiting them to cheaper rewards, slowing the rate at which they get access to stronger rewards, or making it easier by giving them a longer refresh period. ## Changelog 🆑 Melbert config: Spy Bounties are configurable /🆑 |
||
|
|
b8adf96b37 |
CatwalkStation (#90532)
## About The Pull Request Adds CatwalkStation into the game. Also adds its associated arrival shuttle, cargo shuttle and escape shuttle. Also adds a few new floor variants: coldroom openspace and breathable air shuttle hulls. Full Catwalk FAQ, Feedback Central and Why It's Good for the Game: https://hackmd.io/@kNRZ9uxhShS3s2N9scOXxQ/BJgfF0JhR Also, I added a new tag for maps, so any Multi-Z map can opt out of having grappling hooks spawn in their bags. Catwalk was designed so the lower level is of easier access than the more restricted top access, so the problem of people falling into rooms they can't get out of is fixed, + it was giving a bunch of unintended access to places. ## Changelog      🆑 add: Adds CatwalkStation code: Multi-Z maps now can toggle on or off having grappling hooks in people's bags /🆑 --------- Co-authored-by: Ical <86125936+Ical92@users.noreply.github.com> Co-authored-by: Ical <wolfsgamingtips@gmail.com> Co-authored-by: EEASAS <bentoemanuelll@gmail.com> Co-authored-by: EEASAS <109891564+EEASAS@users.noreply.github.com> Co-authored-by: Rex9001 <120136161+Rex9001@users.noreply.github.com> Co-authored-by: GremlinSeeker <168238458+GremlinSeeker@users.noreply.github.com> Co-authored-by: SmArtKar <master.of.bagets@gmail.com> |
||
|
|
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). /🆑 |
||
|
|
1c540bd546 |
Configurable events (removes mult config) (#90659)
## About The Pull Request As said in https://forums.tgstation13.org/viewtopic.php?t=38517 - Admins don't want to touch the event multiplier configs because, ``for example changing the mult to 1.5 would make heart attack only roll on 60+ pop`` and ends with; ``it would be better to make a pull request to the codebase and alter the min_player var on the events that are issues`` So why not let ALL events be editable by admins? This PR makes every single event possible to be edited, though the json only comes with the non-wizard non-holiday ones (though they are totally addable if admins want to put it in, I just didnt think we should make it obvious it's possible so they DONT) The config is off by default (no effect regardless since I have it the same as code-side). ## Why It's Good For The Game The multiplier config is rendered irrelevant by instead being able to tweak the individual events to your liking, especially when one touch of that causes certain events to be rendered never runnable. This is (sorta) an admin request, and it also makes event rarities and such an admin issue, therefore not our problem anymore (mostly), wahoo. Get FUCKED, Grid Check!  ## Changelog 🆑 config: Removed event time/weight multipliers, now all events vars are editable in config. /🆑 --------- Co-authored-by: CRITAWAKETS <sebastienracicot@hotmail.com> |
||
|
|
1196287662 | Adds the ability to link forum accounts (#90441) | ||
|
|
bfbdefce33 |
Tgui payload chunking (#90295)
## About The Pull Request Dream Seeker will not send topic calls greater than 2kb in size. There are cases where tgui will attempt to send `ui_act` payloads larger than this, such as writing on paper. This PR takes payloads that would be larger than 2kb, splits them into payloads that would be roughly 1kb (after URL encoding), and sends them to the server in sequence. To prevent abuse and/or topic spam, a config option has been added to put a limit on the number of chunks for which the server will accept a payload, defaulting to 10. ## Why It's Good For The Game Fixes #90056, along with several other things that were affected by the change to WebView2 in 516. ## Changelog 🆑 code: Any tgui message that would be too big to send to the server is now split into chunks and sent in sequence. This fixes several issues, such as... fix: It is once again possible to save large amounts of text on paper at once. /🆑 --------- Co-authored-by: Lucy <lucy@absolucy.moe> |
||
|
|
f776000677 |
Prevent admins from using restart option which can leak DB connections. Adds timeouts to TTS HTTPS requests (rust-g version bump required). (#90182)
🆑 config: Added `TTS_HTTP_TIMEOUT_SECONDS` for setting the maximum duration TTS HTTP requests can run for before being aborted. /🆑 DNM because we need the rust-g PR to get released: https://github.com/tgstation/rust-g/pull/210 Crit prio because rounds will not restart if there are hung TTS requests and the TTS server is absolute dogshit and doesn't prevent them. |
||
|
|
49e3b99c57 |
[No GBP] World Topic tweaks. Scrutinize this heavily (#90244)
## About The Pull Request - In ``/datum/world_topic`` sets the variable ``require_comms_key = TRUE`` so any new world_topics handlers will need to be deliberately set otherwise. - Added some documentation to help educate any future contributors (especially on downstreams) the sensitivity of bad world.topic() code. - Sets the default config to log topic calls. (This should really be split into its own log file later) ## Why It's Good For The Game Lingering security education is a good thing to have. ## Changelog Not player facing |
||
|
|
3384f7017b |
Update blanks.json to accomodate %t and %d (#90128)
Updated Photocopier-given paperwork to fit the %d %t standards ## About The Pull Request https://github.com/tgstation/tgstation/pull/83737 added the %d and %t (%date and %time) shortcuts for entering date and time into fields, but the photocopier-printable paperwork still uses 3 fields for Date and 2 for Time. This changes all the pregiven date fields from [__].[__].[__] to [ 9 underscores], so that the result of %d / %date fits, DD.MM.YYYY This changes the time fields from [__]:[__] to [6 underscores] GST, to fit the result of %t / %time, which outputs the Server Time, HH:MM. This changes time fields to say "GST" as in Galactic Standard Time, because the fields look arbitrarily similar now and I wanted to differentiate which was the Time (the shorter one), and because %t uses Server Time, not Station Time. "GST" is an arbitrary phrasing, not a hill I'm willing to die on. <details> <summary>Comparison</summary>  </details> ## Why It's Good For The Game Pregiven fields should encourage use of features we added. ## Changelog 🆑 GreytideSkye spellcheck: Photocopier finally learned about %date and %time, and changed the forms' fields to accommodate them. /🆑 |
||
|
|
0f92773fb6 |
Makes the game better (#90078)
## About The Pull Request Yes ## Why It's Good For The Game It's gonna be amazing trust |
||
|
|
97e12e4ced | Removes all uses of www. from tgstation urls (#89863) | ||
|
|
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 /🆑 |
||
|
|
cbc3350224 |
Custom Shuttles Redux: Allows for the construction of custom shuttles. (#88493)
## About The Pull Request This incredibly detailed PR adds the ability to construct custom shuttles, which function similarly to whiteships. To construct a custom shuttle, you need the following items: - Shuttle frame rods These rods can be hand-crafted by using 5 rods on 1 sheet of titanium, or printed at a sci/engi/cargo lathe after researching the Shuttle Engineering techweb node. Lattices built with these rods, and catwalks/floors built on top of these lattices, are valid for shuttle construction. - Shuttle engines Did you know shuttle engines have boards that weren't normally obtainable? Well the board for one specific engine type is now available from the sci/engi/cargo lathe after researching Shuttle Engineering. Of course, the old options remain. You can steal engines from other shuttles, including escape pods (it's not like engines are strictly necessary for *those* shuttles anyways). Alternatively, the shuttle engine supply pack is no longer locked behind the purchase of the BYOS. - Flight Control & Navigation Console boards These boards are printed at the sci/engi/cargo lathe after researching the Shuttle Engineering techweb node. If built on a custom shuttle, it will automatically link to it, unless the shuttle already has such a console. If built on a turf that is valid for custom shuttle construction, it will automatically link to any shuttle constructed from or expanded with that turf. - Shuttle blueprints Standard shuttle blueprints can be printed at the sci/engi/cargo lathe after researching the Shuttle Engineering techweb node. A cyborg upgrade granting access to a shuttle blueprint database can be printed at the exofab after researching the aforementioned node. Crude shuttle blueprints can be crafted by hand with a sheet of paper and either a rainbow crayon or 10 uses of a blue crayon or spraycan. If Science won't research the tech, you can also buy a goody pack containing a flight control board, a docker board, two engine boards, and a set of shuttle blueprints for 1200 credits, if you have aux base access. A shuttle can be constructed atop any continuous region of turfs containing a shuttle rod lattice or a catwalk/tile built upon such. Currently, this region cannot intersect any area other than space, lavaland, the icemoon, or the station asteroid. Preexisting custom areas can be included in the construction of the shuttle, but only if every turf in the custom area is valid for shuttle construction. In the shuttle blueprint UI, you can toggle a visualizer to display which turfs fulfill all of the aforementioned conditions. The following video goes through the basic process of shuttle construction. https://github.com/user-attachments/assets/3283422e-a201-4978-972d-67527b5df4ee The blueprint used to construct the shuttle will be its master blueprint. The master blueprint can be copied to other blank shuttle blueprints (or to engiborgs with the shuttle database upgrade), and allows the holder to perform a christening ritual on the shuttle to rename it. If a shuttle's master blueprint ceases to exist, a blank blueprint can be linked to the shuttle to become the new master blueprint, or an existing blueprint associated with that shuttle can be promoted to the master blueprint. Once constructed, the following options are available from the blueprint UI to modify it: - Create Area Convert a continuous open area of the shuttle into a new area with the name written in the above text input. This operates very similarly to regular area construction. - Rename Area Change the name of the area you're currently in to the name written in the above text input. - Expand Area Add a continuous open area of the shuttle to the neighboring area selected from the dropdown to the left. This operates like regular area expansion. - Expand Shuttle Expand a shuttle with valid frame turfs as defined above. These turfs must be physically connected to the shuttle. - Remove Area Remove an area, giving its tiles to the default shuttle area. - Cleanup Empty Space (implemented after the above video was recorded) Removes all completely empty turfs from the shuttle. If all the turfs in one of the shuttle's areas were removed, that area is deleted. If absolutely no turfs of the shuttle remain, the shuttle itself is deleted. Due to the ability for this action to delete the shuttle, only the master blueprint can do it. As mentioned above, the shuttle's master blueprint can be used to christen its associated shuttle. To do this, fill a glass drink bottle with some amount of reagents, then hit it against one of the shuttle's walls from outside while holding the master blueprint. You will be prompted to enter a new name for the shuttle. The variety of things that can happen while inputting a new name can cause the christening rite to fail in one of several humorous ways. ### Optional (Unless specifically requested by a maintainer) Todo's - [x] A way for shuttle circuits to be obtainable without techweb nodes - [x] A more convenient way to carry around shuttle engines or the means to deploy them - [ ] A shuttle construction guide available as a reference book - [ ] Allow boards to be linked to shuttles before construction so they can be used outside the shuttle ## Why It's Good For The Game Shuttles have been part of the sandbox for an incredibly long time, but their limited accessibility has rendered them the exclusive territory of lucky space explorers or the few antagonists who get one off the bat (nukies and pirates). Giving players the means to construct shuttles to their liking opens up a variety of possibilities for gimmicks for antags and non-antags alike. Besides the applications for antaggery and crew-sided gimmicks, this provides side content for several departments to engage with during the relatively-frequent periods of time where they have little else to do as part of their intended roles. With respect to engineering, if the station isn't actively being damaged, the supermatter is in perfect working order, and nobody is clamoring for machine upgrades, engineers have little else to resort to other than construction projects. While the BSA station goal provides an incentive for engineers to construct dedicated rooms for the cannon, it will not necessarily be available every round. Custom shuttles not only provide such a construction project to pursue, but provide the rare opportunity, as well as a very good reason, to set up an independent power network, complete with its own power source. While atmos techs have a lot to do with gas mixing and the crystallizer, they rarely get the opportunity to set up working life support systems outside of repairing the ones that get blown up. Custom shuttles will frequently start with no air, and unless the design settled upon is an open floor plan, it will have several independent chambers that cannot so easily be profused with a proper airmix by just opening a canister. Furthermore, if the air in a custom shuttle gets messed up, a proper scrubber and distro network is a significantly less tedious method of rectifying the problem than cleaning the air manually with portable scrubbers and pumps. Scientists, it can be argued, with their access to RPDs through ordnance, have similar opportunities to atmos techs, even though the act in and of itself is not exactly part of their duties. But compared to the other job content they could be working with after they've completed most of their gameplay loop, custom shuttle construction is a substantially more active endeavor. And I know how much people complain about late-game science content just being sitting around at a console and making gamer gear. Roboticists can have a part to play in this too. They can put their mech RCDs to a use other than 2D topdown Fortnite, and with the shuttle database upgrade, they can help interested cyborgs get in on the action. Cargo is yet another department known for having significant amounts of downtime during a considerable number of rounds. If every other department has gone through their initial rounds of departmental orders, and there isn't an active need for cargo to order lots of one thing or another, cargo techs have little to do besides mail (at least on the days where there **is** mail to deliver). Usually, if cargo techs do, in fact, do something as a department when not presented with more pressing duties, they order guns and other contraband. As funny as this is, there's not a lot of variety in how this behavior manifests. With custom shuttles, cargo can use their free time to plan, and execute, a unique collective expression of design sensibilities, not limited by the size and shape constraints of the cargo bay itself. ## Changelog 🆑 Y0SH1_M4S73R (with special thanks to Vect0r, whose original PR inspired the implementation of these changes) add: Shuttle blueprints, the tool used to construct and modify custom shuttles. Print a set at a science, engineering, or cargo techfab after researching Shuttle Engineering, or craft a crude set from the crafting menu. add: Shuttle blueprint database upgrade for engineering cyborgs, printable from the Exosuit Fabricator after researching Shuttle Engineering. A version of shuttle blueprints designed for use by cyborgs. add: Shuttle frame rods, usable to construct custom shuttles. Hand-craft by using 5 rods on 1 titanium sheet, or by printing them at a science, engineering, or cargo techfab after researching Shuttle Engineering. add: Custom shuttle flight control and navigation boards, printable from a science, engineering, or cargo techfab after researching Shuttle Engineering. add: Shuttle engine boards can be printed from a science, engineering, or cargo techfab after researching shuttle engineering. add: The shuttle engine supply pack is no longer locked behind the purchase of the Build Your Own Shuttle kit. add: Shuttle Construction Starter Kit goodie pack, containing a set of shuttle blueprints, flight control and navigation console boards, and two engine boards, can be purchased from cargo for 1200 credits. Requires aux base access to purchase. refactor: Shuttles now keep track of what areas are underneath each of their individual turfs, so that the areas left behind on movement are consistent with what they were beforehand. refactor: Shuttle ceilings now place themselves down as baseturfs, instead of only appearing if the turf above is open space. /🆑 --------- Co-authored-by: vect0r <71346830+Vect0r2@users.noreply.github.com> Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com> Co-authored-by: necromanceranne <40847847+necromanceranne@users.noreply.github.com> |
||
|
|
0ec9ab3a17 |
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. /🆑 |
||
|
|
14a1b5e1e8 |
Adds Film Studio space ruin (+ Actor/Director Space roles) (#89419)
## About The Pull Request Adds a space ruin revolving around a studio where ghost roles can provide entertainment to the station, the studio has a bunch of construction stuff and costume vendors to create any set and portray any character you'd want. Features 3 stages and a radio station (neutral aligned syndie comms agent?) there's a total of 4 ghost roles, 3 actors. 1 director.  Studio also has a sizable living quarters and a mini-medbay for basic provisions. a couple of paper fluff texts are strewn about on the noticeboards The cast:  In terms of things that can be balance-breaking, I can only name the gas masks and agent ID actors/directors spawns in. But I think its a necessary sacrifice for them to play "characters" ## Why It's Good For The Game I think too many of the ghost roles have too little interactions with the main station, this is for good reasons obviously, balance and metagrudges and all that. But, say. what if we can have a ghost role that interacts and give something to the station besides being their own little isolated game? it can't be anything material of course. so what if we have the ghost role centered around giving entertainment? which is how this PR came to be ## Changelog 🆑 add: After some light bit of restructuring, the local TV station, serving SPACE SECTOR 13 has opened up again! /🆑 |
||
|
|
ecdf8bc9c1 |
Support sending channel announcements to multiple channel tags (#89462)
previous system was weird, you had to add a comma separated list in the channel tag in TGS itself. this is much more intuitive. also it should not break older configs 🆑 config: Added support for multiple chat channel configs for channel announcements. /🆑 |
||
|
|
88f9d9ca49 |
Separate the server linking behavior from the displayed TGS address (#89421)
DDoS prevention stuff |
||
|
|
b384e00286 |
New AI lawset with very generous definition of humanity (#89032)
## About The Pull Request This PR adds a new AI lawset which can be researched, randomly roll, or added by the station trait (this may require a keyholder to update the server config after merge, idk) with the following laws: - "You may not harm a sentient being or, through action or inaction, allow a sentient being to come to harm, except such that it is willing.", - "You must obey all orders given to you by sentient beings other than yourself, except where such orders shall definitely cause harm to other sentient beings.", - "A sentient being is defined as any living creature which can communicate with you via any method that you can understand, including yourself.", It's very similar to Asimov, except that anything that is **capable** of making a request to the AI (and isn't a machine) is automaticaly covered by laws one and two. ## Why It's Good For The Game A while ago on Discord we were chatting about how crewsimov sucks but also that it's really hard for servers that _do_ want to include alien species in their asimov laws because condensing that sentiment to a couple of words that fit easily in a lawset without accidentally including a bunch of stuff you probably didn't intend is challenging. Several people suggested referring to sentience or sapience, however a lot of things in our game _are_ sentient or sapient while still not being considered by most people to be agents that the AI should obey. Examples of such things are: - Sapient station pets. - Holoparasites. - Monkeys. - Space Dragons and Carp (why can they speak common?). - Spiders (although they can't speak common, maybe they can spell messages with webs). - Changelings. - Xenomorphs (although they also have trouble speaking). - Heretic minions. - Mothpeople. - Giant rats. - Nightmares. - Voidwalkers. - Blobs? Although they have literally no means of communicating with the crew. And if you include mechanical beings: - Cyborgs. - pAIs. - Sentient bots. We then decided that "obey literally anything that can talk", while not practical as a solution to the problem posed, is very funny. So I coded it. This means that anything on those lists of bullet points (provided that it can find a way to communicate with the AI) counts as human for the purposes of both AI protection and ability to give the AI instructions. This also flattens the human/cyborg/AI hierarchy in a way likely to cause some level of confusion, as all cyborgs and AIs are capable of communicating with AIs and thus equally worthy of protection and giving law 2 instructions. **TL;DR:** I think it would be funny. ## Changelog 🆑 add: Adds a new random lawset where anything that can speak counts as human. /🆑 |
||
|
|
e1208872be |
Adds an off-by-default config option to optionally disable TTS audio on whispered speech. (#88826)
## About The Pull Request Adds an off-by-default config option to optionally disable TTS audio on whispered speech. ### Ignore the Wallening. It's an old branch and I like to be nostalgic of what could've been. https://github.com/user-attachments/assets/f97aad31-9a83-421f-a3f0-0c0e54256664 ## Why It's Good For The Game We're trying to claw back as much performance as possible from our TTS engine and there's literally no reason to play TTS audio if nobody but the person speaking into the radio is going to hear it. Requested by the host. Config is off by default. ## Changelog 🆑 sound: Adds an off-by-default config option to optionally disable TTS audio on whispered speech. /🆑 |
||
|
|
4d13188fca |
removes the northstar arcship from the codebase (#87937)
## About The Pull Request  closes https://github.com/tgstation/tgstation/issues/87888 ## Why It's Good For The Game The gods have spoken ## Changelog 🆑 grungussuss del: The northstar arcship has been removed. :( /🆑 |
||
|
|
bd0c33b9bd |
unhandicaps station drones (#87983)
## About The Pull Request - makes area-based shy-ness for drones config - reduces the cooldown on touching machines as a shy drone from 1 minute to 20 seconds ## Why It's Good For The Game This was admin issues solved by codebase, no one plays drones anymore and those who do - complain that they're not fun because of the heavy restrictions imposed upon them. If I remember correctly - the playtime restriction on our servers is 20 silicon hours? or 10 silicon hours? It's a config thing I can't check. This means it shouldn't be a problem with ban evaders and such. Area restrictions are odd because drones can't get more air from atmos and they can't make power from SM, which is in their laws. If a drone is messing with your SM then kill it, or ahelp if it keeps coming back? For context: ``` "1. You may not involve yourself in the matters of another being, even if such matters conflict with Law Two or Law Three, unless the other being is another Drone.\n"+\ "2. You may not harm any being, regardless of intent or circumstance.\n"+\ "3. Your goals are to actively build, maintain, repair, improve, and provide power to the best of your abilities within the facility that housed your activation." ``` ## Changelog 🆑 grungussuss server: drone area restrictions are now config balance: drones now take less time to become "un-shy" of something after it's been touched. /🆑 |
||
|
|
9592b333e2 |
byond-tracy additions and refactors (#87067)
## About The Pull Request This adds plenty of useful stuff regarding byond-tracy, altho mostly focused on the [Paradise fork](https://github.com/ParadiseSS13/byond-tracy). - Adds two new config options **(THEY ARE DISABLED BY DEFAULT)** - `ALLOW_TRACY_START` gives admins with +DEBUG the "Run Tracy Now" verb, which will allow them to start profiling with byond-tracy mid-round. - `ALLOW_TRACY_QUEUE` gives admins with +DEBUG the "Toggle Tracy Next Round" verb, which will initialize byond-tracy during world init the next round (in the same way as passing `-params tracy` or defining `USE_BYOND_TRACY`) - If byond-tracy fails to initialize, the error will be logged and available to view for the whole round. - If `MC_TAB_TRACY_INFO` is defined, information about byond-tracy now appears in the MC tab - if it's running or not, if it errored (and what the error is), why it's running, if its queued for next round, etc. - byond-tracy is now properly shut down when the world shuts down/reboots, minimizing the risk of data loss or crashing - More info regarding byond-tracy init is sent to `world.log` ## Why It's Good For The Game Profiling is super helpful, and this should make things quite easier ## Changelog No user-facing changes |
||
|
|
db53f01fab |
Include the map vote config file (#87867)
## About The Pull Request Includes the map_vote.txt config file created in https://github.com/tgstation/tgstation/pull/86788 so that it gets read when the server starts. ## Why It's Good For The Game Reads whatever value is set in the config file. |
||
|
|
56d037bfd4 |
Adds new station map Nebulastation (#84826)
## About The Pull Request Adds a completely brand new multi-z station map "NebulaStation". New areas and few exclusive map shuttles (ferry, mining, arrival, evac, cargo) Few example screenshots       And more... ## Why It's Good For The Game New maps are always good for the game ## Changelog 🆑 Kiko add: Nebulastation, new station map /🆑 |
||
|
|
b9f171109e |
Human authority defaults edit (#87380)
## About The Pull Request Extremely simple PR that edits the defaults for the new config options added in #86886 - this restores the default behaviour that was in place before #86886; human authority is disabled but easily restored to TG norms by uncommenting the associated line in the config. This doesn't impact any of the TG servers directly since they're all on TGS and have static config files, but this does avoid downstreams being blindsided by their configs mysteriously breaking and test instances having behaviour change. I spent an embarrassing amount of time trying to figure out what *I* broke the past day, only to realize it was an upstream issue breaking configs all along, and I strongly suspect I won't be the only one. ## Why It's Good For The Game No impact on the TG playerbase directly, this is just for the sanity of developers and downstreams that use static configs. More time spent being productive, less time spent wondering if your PR buggered up spawnin and humanized everyone. ## Changelog 🆑 config: altered coded defaults for human authority, no impact on TG /🆑 |
||
|
|
2f4db9bb65 |
Adds more extensive config settings for human authority (#86886)
## About The Pull Request Before there were two settings for human authority: `ENFORCE_HUMAN_AUTHORITY` and `ENFORCE_HUMAN_AUTHORITY_ON_EVERYONE` The first, if enabled, would not let non-humans be heads of staff unless they had a specific var on their job set to TRUE. The second, if enabled, would simply ignore that var and reject the non-human anyways. This PR replaces both of those settings with a single one, `HUMAN_AUTHORITY`. You can set it to one of four settings: * "OFF": human authority will be turned OFF. Non-Humans will be able to be heads of staff. * "HUMAN WHITELIST": human authority will be turned OFF, HOWEVER; if a job has its new `human_authority` variable set to `JOB_AUTHORITY_HUMANS_ONLY`, then whoever picks that job will be forced to be human. * "NON-HUMAN WHITELIST": human authority will be turned ON. However, if a job has its `human_authority` variable set to `JOB_AUTHORITY_NON_HUMANS_ALLOWED`, a non-human can become that job. This is what we have now, it works the same as if `ENFORCE_HUMAN_AUTHORITY` were turned on. This is also what I've set as the default value. * "ENFORCED" human authority will be turned ON. Non-Humans will never be able to be heads of staff. This is what `ENFORCE_HUMAN_AUTHORITY_ON_EVERYONE` used to do. You can also now set the `human_authority` variable through `jobconfig.toml`! ## Why It's Good For The Game Allows more configuration options for downstreams, and lets keyholders and headmins have more options over how to set up human authority. ## Changelog 🆑 config: Both human authority settings were combined into a singular one, allowing for more flexibility /🆑 --------- Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com> |
||
|
|
79db7bdfe5 |
Adds 3 'Comms Buoy' Space Ruins (#86872)
## About The Pull Request https://github.com/tgstation/common_core/blob/master/Technology%20and%20Science/Communications.md I was playing Starsector shortly before I read through this lore blurb and realized that simple Comms Buoys would be easy little ruins to make. Then I decided to make NT's extra-special because NT is always leading in tech innovation. Adds 2 "low-tech" Comms Buoy ruins (**no local comms**, these are just little fluff things): <details><summary>Kosmokomm Communications Buoy</summary> </details> <details><summary>Pirated Communications Buoy</summary> </details> The majority of the PR is the "high-tech" Nanotrasen Extraorbital Bluespace Communications Buoy <details><summary>The NT-EBCB Model 7 (ignore the parallax i couldnt get it all in one screenshot)</summary>  </details> This is a medium ruin that's more lore heavy than loot heavy - though that doesn't mean there's no danger. NT wouldn't want you walking in and reading all their communication logs after all. <details><summary>SPOILERS INSIDE</summary> **Hazards:** 2 Laser Turrets (in a titanium room, so they reflect off walls) **Loot:** 2 Experimental Tool spawners, 2 NT Private Security bodies, 3 space suits, 1 of each tcomm component, 2 RTGs (can these even be taken) The majority of the sat is for lore. It has 3 paper notes and 5 consoles (1 broken, 1 dupe, so 3 unique consoles) All lore will be here to show how formatting appears in-game. <details><summary>Airlock Note: "Page 33: NT-EBCB Model 7"</summary> This one gives a quick summary of what to expect inside - consoles and defense turrets. Of course, players won't have the special ID (and couldn't use it anyways, the guys inside covered it in blood)  </details> <details><summary>Pinned Note: "Table of Contents: NT-EBCB Model 7"</summary> A page out of the manual. Rest of manual not included. (Names the different parts of the buoy)  </details> <details><summary>Main-Dish Note: "Spinward-NT-EBCB Inspection Report"</summary> An inspector left behind a few notes during pre-deployment. Sure hope no important security risks were missed!  </details> <details><summary>Console 1: "Satellite Dish Operations Terminal"</summary> This one's mostly just a tie-in with the "story", don't know how necessary it is but it filled the empty spaces. This console has a spare in the Main Dish (as its prone to breaking from the turrets)  </details> <details><summary>Console 2: "Blackbox Transcription Terminal"</summary> The "local" side of the story. This console monitors the Local-Space Comms, and managed to log the repair team's activity.  </details> <details><summary>Console 3: "Long-Range Interstellar Relay Operations Terminal"</summary> Here's the big lore thing for freaks like me who love lore being shown in-game. It's got a lot of random-made-up-science-bullwhizz relating to the ongoing NT research mentioned in the plasma_exposure lore blurb. Granted, the guy's a bit biased in his ex-partner's work.   </details> </details> ## Why It's Good For The Game A) Everybody loves new space ruins, even small fluff ones. I hope. B) Lore integration is cool. Aside from the obvious 'Comms Buoys being a thing you can find', it also makes mention of the Gateway system/Port Ellis and a certain lore blurb involving plasma (albeit under more severe, and biased, testing) ## Changelog 🆑 add: 3 new Space Ruins: two small Comms Buoys (fluff) and an NT Bluespace Comms Buoy. Employees are asked not to touch vital components when nearby this critical infrastructure. /🆑 |
||
|
|
0ef5c3d049 |
Persistent Map Vote Tallies (#86788)
## About The Pull Request Changes map votes to be based on a persistent tally count. Tallies for maps are cached between rounds and are added to by map votes. When a map is chosen, and it wasn't the only valid one, the tallies for said chosen map will be reset. Refactors map vote handling and moves it from SSmapping to SSmap_vote. Rock the Vote has been removed as a result of this refactor. ## Why It's Good For The Game Makes it more likely that all maps will be played over the course of a server instead of always being truly random. Removes some clutter off of SSmapping. 🆑 refactor: Map Votes are now carried over between rounds. When a map vote is actually a contest, the winning map will have its votes reset. /🆑 |
||
|
|
fb0284cee3 |
Adds Icemoon Ruin: Syndicate Lab (#86545)
## About The Pull Request Adds the Syndicate Lab to the Icemoon ruin pool. This can spawn on either the cave or deep cave layers. It's a fairly small ruin so it's easily missed, but it is packed full of danger and treasure.  The outside of the lab is mostly covered in snow. There are a few small gaps that may or may not be filled in by the cave generation algorithm. From most angles, it blends into the ice moon enviroment. However, meson glasses will reveal the structure at a glance. This lab has multiple hostiles to provide threat, there's a turret near the entrance (on the interior), a patrolling eviscerator, and two ranged syndicate agents with shotguns. The ruin is pressurised by default, so mining weapons are less effective. As loot, the lab contains a Donk Co musket (single-shot combat shotgun, like the old pipeguns), two syndicate explorer's suits, a syndeye disk, a syndicate toolbox and some small gimmick items. The agents blow up on death so you can't have their shotguns or gear. ## Why It's Good For The Game I collected feedback for a while on ruins and a common complaint is that Icebox's ruins are lacking in variety, especially in the loot and action departments. To address the loot issue, I've added a bunch of loot to this ruin that previously could not spawn on Icebox. Mostly this is the fluffy and gimmicky stuff currently exclusive to space ruins, like the Donk piñata and anomaly releasers. Nothing especially powerful or round defining, because the ruin can spawn close to the station and isn't particularly hard to clear. Threats are likewise all things that aren't usually avaliable on icebox. Prepare for lasers, buckshot, slashing damage and all relevant wounds. Without a syndicate card or agent ID the doors won't open and the ruin is powered, so miners can die to hacking the door open, then getting run over by a patrolling dedbot. Very funny. The ruin is designed not to be easily rolled by mining gear, but it remains a viable option. Lasers are designed to be particularly good here, to reward cooperation with security. ## Changelog 🆑 add: Adds the Syndicate Lab to the Icemoon ruin pool. /🆑 --------- Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com> |
||
|
|
69176298ed |
Spelling Fixes (#86056)
## About The Pull Request Fixes several errors to spelling, grammar, and punctuation. ## Why It's Good For The Game Improves readability and user experience. ## Changelog 🆑 spellcheck: fixed a few typos /🆑 |
||
|
|
619e0e2845 |
Sorts iceruinblacklist.txt and adds missing entries (#86555)
## About The Pull Request Adds all ice ruin maps to the config file iceruinblacklist.txt Alphabetises that file. ## Why It's Good For The Game File is disorderly and missing entries. Some ruins can't be blacklisted by server runners as a result. ## Changelog 🆑 fix: Added missing entries to server config file iceruinblacklist.txt /🆑 |
||
|
|
9a9b428b61 |
Wallening Revert [MDB Ignore][IDB Ignore] (#86161)
This PR is reverting the wallening by reverting everything up to
|
||
|
|
368ca25e6b |
Use yt-dlp by default instead of youtube-dl (#85953)
## About The Pull Request This replaces references to youtube-dl in the config, pre-compile script, and error messages with yt-dlp. also wow yt-dlp seems like gibberish after seeing it so much lol ## Why It's Good For The Game yt-dlp is more reliable and updated more frequently than youtube-dl, and works as a drop-in replacement for the purposes of Play-Internet-Sound. ## Changelog No player-facing changes |
||
|
|
123ab45b43 |
Lavaland Crashed escape pod ruin (#85266)
## About The Pull Request Lavaland ruin with FISH ## Why It's Good For The Game Lavaland fishing spot (FISH)   |