mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-06-05 06:05:58 +01:00
ed94de4ddf7edad8694badefc577392e0f762bf5
882 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
0b29e77985 |
Adds user feedback for going over order limits in cargo console (#76344)
## About The Pull Request This'll prevent weird "above the max by accident" cases, and also uses defines instead of hardcoded stuff. This code is often duped, wish we had a better way of handling it. Oh also removes a few safety copies before for loops that aren't actually needed (for x in list copies the list) ## Why It's Good For The Game Better UX, slightly saner code |
||
|
|
2333e8b0c1 |
Makes cargo orders and req forms easier to differentiate (#76499)
## About The Pull Request This PR makes two very simple changes. First, requisition forms printed off by the order consoles in cargo now print with a timestamp on the name, so that it's a bit easier to differentiate between forms when there's a bunch of them. Second, crates that come on the cargo shuttle now have the order ID they are associated with appended to their name. The req forms:  As well as two crates that would normally be impossible to differentiate   ## Why It's Good For The Game When there are lots of requisition forms laying on the ground and you need to refer back to one of them (to see who ordered what or something like that), it can be a pain to find the right one since they all have the same name. This is even worse if someone has tried to be helpful and put them all in a folder, since you now have to take them out and look at each one. Adding the timestamp helps to remedy this. For the crates, when someone orders something that doesn't come with a named crate (for example, some medical orders just have the name "medical crate"), or when multiples of the same things are ordered, it can be hard to match up the shipping manifest with the crate again, leading to unwanted fines, especially when people don't return all their crates at once. Adding the order ID to the name of the crate lets you easily identify which manifest goes where. ## Changelog 🆑 qol: Crates that come in the cargo shuttle now have the order ID in their name qol: Requisition forms are now blue, and named with the timestamp they were created on /🆑 --------- Co-authored-by: tattle <66640614+dragomagol@users.noreply.github.com> |
||
|
|
9940fb62e6 |
Destroys /obj/vehicle/sealed/mecha/working with a W80 nuclear warhead (#76296)
## About The Pull Request Title. Also, fixes https://github.com/tgstation/tgstation/issues/75568 at the request of @TheVekter ## Why It's Good For The Game This subtype only exists to append ore box behavior and is clearly a relic of pre-2020 mechcode. Keeping it around will only make it harder in the future to add new mechs with ore box support. ## Changelog 🆑 fix: Clarke ore box now has a less confusing dump contents button. /🆑 --------- Co-authored-by: san7890 <the@san7890.com> |
||
|
|
8788e48378 |
Shuttle events (#76008)
## About The Pull Request https://github.com/tgstation/tgstation/assets/7501474/a2d83ce8-eba1-42d9-a1f8-9d73f7c40b21 Adds shuttle events! Stuff can now start to happen outside the shuttle, either benign or spicy (but usually just fun to watch)! ## Why It's Good For The Game The shuttle escape sequence is an important part of the game, uniting about every player surviving player. Recently, #71906 has made the escape sequence more forgiving as well as more interesting by conditionally doubling the playing field. The area outside the shuttle is still mostly empty though, except for the few people being spaced, daredevils and the occasional epic space fight. This PR adds adds some space events to spice up the outside of the shuttle! This both gives people something too look at, making the escape sequence feel less static and more lively, as well as give people a reason to go outside and get the full experience of ~being decapitated by a meteor~ swimming with the fishes! <details> <summary>Shuttle Events</summary> **Friendly carp swarm** Spawns a group of carp that flies past the shuttle, completely friendly unless provoked. **Friendly meteors** Spawns a lot of strong meteors, but they all miss the shuttle. Completely safe as long as you don't go EVA **Maintenance debris** Picks random stuff from the maintenance spawn pool and throws it at the shuttle. Completely benign, unless you get hit in the head by a toolbox. Could get you some cool stuff though! **Dust storm** Spawns a bunch of dust meteors. Has a rare chance to hit the shuttle, doing minimal damage but can damage windows and might need inflight maintenance **Alien queen** One in every 250 escapes. Spawns a player controlled alien queen and a ripley mech. RIP AND TEAR!! Really not that dangerous when you realize the entire crew is on the shuttle and the queen is fat as fuck, but can still be fun to throw people around a bit before being torn to shreds. **ANGRY CARP** Once in every 500 escapes. Spawns 12 normal carp and 3 big carps, who may just decide to go through the shuttle or try and bust through the window if you look at them wrong. Somewhat dangerous, you could stay away from the windows and try to hide, or more likely shoot at them and weld the windows **Fake TTV** Lol **Italian Storm** Once in every 2000 rounds. Throws pasta, pizza and meatballs at the shuttle. Definitely not me going off the rails with a testing event **Player controlled carp trio** Once in every 100 escapes. Spawns three player controlled carp to harass the shuttle. May rarely be a magicarp, megacarp or chaos carp. I can't honestly see them do anything other than be annoying for 3 seconds and die There are some other admin only ones: a group of passive carps going directly through the shuttle and just being little shits, and a magic carp swarm </details> Events are selected seperately, there isn't a crazy weighting system, each just has a chance to run, and multiple could run at once. They also don't immediately trigger, so people can get settled a bit, and to make sure just waiting out the more dangerous ones is still a valid strategy. ## Changelog 🆑 add: Adds shuttle events! If shuttle escapes weren't exciting before (doubtful), they definitely are now! I'm joking it's mostly an atmosphere thing. admin: Adds an admin panel to interact with shuttle events, under the Events tab: Change Shuttle Events fix: Objects spawned in hyperspace will properly catch hyperspace drift /🆑 There's a few things I'd like to do later (another PR) (honestly anyone can do them because I suck at follow-ups), because this is too big as is: - Hijack triggered shuttle events - More events (got a lot of cool suggestions, but I'm putting most of them on hold) - Maybe stration announcements if some more dangerous ones get added - Structures appearing next to the escape shuttle??? --------- Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com> |
||
|
|
8be54ac1df |
dont send raw href to admins (#76125)
## About The Pull Request if href exploiting the shuttle computer it no longer sends admins the raw html ## Why It's Good For The Game lol ## Changelog |
||
|
|
fe27d3198e |
Cargo category cleanup (#75374)
## About The Pull Request I accidentally discovered that when #55504 removed cargo export categories being a thing during export value evaluation, in two instances, they forgot to remove passing over the now defunct export categories, causing it to be passed in as the elasticity value, and by sheer coincidence, this was not causing problems (due to being overriden by a named argument in the pirates case, and cargo_exports being evaluated as true in another). This PR fixes the arguments, preventing possible bugs in the future. This also removes the code that set if the cargo shuttle could sell contraband and emagged items, as that is no longer a thing. I talked with @ArcaneMusic about this, and they agreed, albeit with the caveat that if someone finds a good use case for this feature, it could be saved. This PR also autodocs several export related files, and cleans up various single and two letter vars. ## Why It's Good For The Game Cleaner code, unused code removed. ## Changelog 🆑 code: cleaned up cargo export code a bit /🆑 |
||
|
|
3dd563159d |
Removes current destination for a shuttle in transit from the destination list (#75170)
## About The Pull Request Shuttles with multiple destinations will no longer show the current destination as a selectable choice during transit. <details> <summary>Example</summary> A shuttle has two possible destinations. A and B. <br> While at A, the only valid destination is B and vice-versa. <br> But while in transit to B, _both_ A and B can be chosen as destinations. <br><br> The change now hides B as a valid destination, as you are already going there. <br> It has the nice side effect of making shuttles with only two destinations never showing a dropdown list while in transit. </details> ## Why It's Good For The Game Telling the shuttle to go to the same place as you're going to doesn't do anything. ## Changelog 🆑 qol: Shuttles will no longer show their current destination as a choice while in transit. /🆑 |
||
|
|
ba24aa3404 |
Ore silo will put machines off its level on hold, instead of disconnecting (#74990)
## About The Pull Request There's a problem where people would try to rebuild a whiteship and use an Ore Silo for it. However, it would automatically unlink everything when moving, because it's checking for z level as soon as it changes z level itself, before the Ore silo has 'moved' as well. ~~To fix this, I'm now only disconnecting ore silos when a shuttle moves. This mostly does the same as before, but technically you can sync an unwrenchable connected machine and bring it to space with you (without using a shuttle) to stay connected, but I don't see this as a problem, and my original point of the PR was to prevent Lavaland ORMs.~~ I decided against this, instead I've made it so machines that aren't on a valid level (either both on the same z level or both on the station level) will be considered 'on-hold', much like if the QM has set it to hold through the silo directly. This means that machines no longer disconnect from the Ore silo on moving, they just can't access the materials in it. This affects gameplay in 2 ways: 1. You no longer need to resync when you bring the machine back 2. It won't unsync itself every time you move station z-level with its silo (such as on a whiteship). I also made disconnecting from an ore silo actually remove them from the ore silo's list of connected machines. ## Why It's Good For The Game Closes https://github.com/tgstation/tgstation/issues/69863 ## Changelog 🆑 balance: Machines (such as ORM and Techfabs) will no longer unsync from Ore silos when it moves Z-level, instead it will prevent materials from being used, as if it was on hold. /🆑 |
||
|
|
fa0225b05c |
Converts Spiderlings from Structures to Basic Mobs (#75001)
If I could've made this more atomic, I would have in a heartbeat, trust me. ## About The Pull Request Hey there. People were mocking us for having spiderlings still be a subtype of `/obj/structure`. I decided to take a lot of time to fix that. A lot of behavior it was implementing was just pseudo-mob stuff, so it was actually easier than it looked for the raw conversion. A lot of the footwork on spider stuff in the basic framework was already done previously by Jacquerel, so that was pretty nice. However, there are two new things that weren't introduced in the code that had to be put in. A) A component to handle growth and differentiation into a mob. This may have already existed, no clue. If it does (and it's NOT evolutionary_leap), let me know. B) AI Behavior to handle seeking out a vent, entering a vent, and then exiting out of a different vent. I may have gone a bit wacky on the code, but it certainly works as expected (spiderling goes in one vent, exits the other). Let me know if you can think of a way it can be better optimized, but it was deliberately written to be very failsafey in case shit goes yonkers. One fundamental difference between structure spiderlings and basic mob spiderlings (beyond the AI and not just a random prob() check for movement) is the fact that they had vent movement coded in... but we _really_ don't need stuff like that for our intents and purposes. If the range turns out to be too OP in the current framework, we can always change it up a bit, but also there's a _lot_ of vents we can end up in the station (my testing had one spiderling end up in the AI sat to get obliterated). ## Why It's Good For The Game Spiderlings aren't structures! They behave like a mob should! Players can possess spiderlings! They work seamlessly with differentiating into a giant spider! Better AI! More room for people to add into this very under-utilized buggers! ## Changelog 🆑 refactor: Spiderlings are now basic mobs, report any complete weirdness/deviation from known behavior. They should be a lot more intelligent now though. add: AI Spiderlings are super fragile, but they're also super fast, especially when they get into a vent. Once they're in circulation, they could end up everywhere! Maybe in the armory, maybe in a locked closet in maintenance. Be sure to be vigilant and splat them whenever you can to save the station from a whole lotta heartache! /🆑 --------- Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com> |
||
|
|
1c69ffa642 |
Refactors Navigational Beacons (#74575)
## About The Pull Request This PR refactors navigational beacons. In detail, this PR does the following: **General Interactions** - You can now print boards. They are unlocked at Basic Robotics Research, and can be printed both at engineering and robotics. - The constructed machine requires no stock parts. When constructed, the floor tile pops up, so you can actually interact with the device from the get go. - Made interacting with it more standardized, you no longer have to screwdriver it to access the interface, instead you just click on it. - Screwdrivering is instead part of the regular screwdriver -> crowbar deconstruct process. However, you have to unlock the maintenance hatch through the UI first. - You can now use wallets too, to unlock the control interface, using the GetID() proc. - Interacting with tools uses balloon alerts where its possible. **UI Interactions** - New tgUI interface! - Previously, you could put in anything as codes, and there was no guide in game about what codes and values were valid. This has been replaced by buttons with pop up text boxes, checkboxes and dropdowns. - You can also reset the code values to roundstart values, or to blanks, if the beacon had none. - InterfaceLockNoticeBox component allows the silicons to unlock the controls **Other backend changes** - Autodocs vars and procs in the navigational beacon file. - Added defines for the various nav beacon codes. - The freq var on beacons and the beacon_frequency var on robots did absolutely nothing, so I have removed them, along with the map varedits, and the frequency define. Maybe in the future one can readd them, to make bots that only patrol specific areas (though you can still do that with good next patrol location tagging). - Mulebots were using the navbeacon's direction itself to figure out the direction they have to put down crates, instead of the direction tag. Now the tag actually works, allowing me to remove a bunch of varedits. I did keep the beacon's direction as a fallback, in case no direction tag is set, which should be South always. - I audited and touched up the directions tags that were not in line with the previous beacon directions (which caused things such as the mule trapping themselves behind the crate. - Sadly, making it use the default screwdriver construction means it is no longer transparent in maps editors 😔  ## Why It's Good For The Game Closes #38064 . More items being constructable is more fun, and its better if you can use an item without checking the map about how it is supposed to work. ## Changelog 🆑 refactor: Refactored navigational beacons, making them constructable, deconstructable, and generally easier to use /🆑 |
||
|
|
e3ec4eb8e1 |
New sprites for requests, pod, and gulag wall consoles (#74456)
## About The Pull Request Changes ancient sprites for requests _(don't confuse them with cargo requests computer)_ and pod wall consoles, to the new polished ones with the same style as the newscaster. Also makes the gulag/pod console actually use overlays, instead of having the screen melted into its icon (so now when it has no electricity it screen turns off). Now pods and gulag console's screen changes when they get emagged. Requests console:      Pod console:   Gulag item retrieval console:   Emagged gulag/pod console:  ## Why It's Good For The Game The old sprites of them are really ancient, have bad looks and that old isometric perspective.   Having new sprites is always great for people's eyes. This also will make the requests console more noticeable, that way _maybe_ people will start using it more often. Making them use overlays instead of having the screen icon merged into the base icon is good because it gives more dynamic, as when electricity turns out it signals more to the players that it's not functional right now. <!-- Argue for the merits of your changes and how they benefit the game, especially if they are controversial and/or far reaching. If you can't actually explain WHY what you are doing will improve the game, then it probably isn't good for the game in the first place. --> ## Changelog 🆑 DrDiasyl aka DrTuxedo#0931 imageadd: Requestions consoles got a new sprite! imageadd: Gulag consoles got a new sprite! imageadd: Escape and assault pod consoles got a new sprite! qol: Now the gulag and pods consoles use overlays, instead of having turned ON screen in their base icon. qol: Now the gulag and pods consoles screen change when they are emagged. qol: Requests console now shows examine prompt on how to open their panel. Also shows a prompt if they were hacked. /🆑 --------- Co-authored-by: san7890 <the@san7890.com> |
||
|
|
4d3a1c320f |
[MDB IGNORE] Gets rid of the /brig shuttle floor subtype (#74100)
## About The Pull Request Removes the /brig red plastitanium shuttle floor, replaces the checks related to it with checking if the area is the shuttle brig From what I checked in vscode, all the shuttles that use this floor already also have the shuttle brig area on the same tiles so it changes nothing (and might even fix things if shuttles don't use this floor type for their shuttle brig) ## Why It's Good For The Game Why the fuck are we checking for a TURF ## Changelog Not player facing |
||
|
|
f00d9eca50 | March into Mapness: The Waystation (#74192) | ||
|
|
ccef887efe |
Lints Against Unmanaged Local Defines (#74333)
# MAINTAINER - USE THE BUTTON THAT SAYS "MERGE MASTER" THEN SET THE PR TO AUTO-MERGE! IT'S MUCH EASIER FOR ME TO FIX THINGS BEFORE THEY SKEW RATHER THAN AFTER THE FACT. ## About The Pull Request Hey there, This took a while to do, but here's the gist: Python file now regexes every file in `/code` except for those that have some valid reason to be tacking on more global defines. Some of those reasons are simply just that I don't have the time right now (doing what you see in this PR took a few hours) to refactor and parse what should belong and what should be thrown out. For the time being though, this PR will at least _halt_ people making the mistake of not `#undef`ing any files they `#define` "locally", or within the scope of a file. Most people forget to do this and this leads to a lot of mess later on due to how many variables can be unmanaged on the global level. I've made this mistake, you've made this mistake, it's a common thing. Let's automatically check for it so it can be fixed no-stress. Scenarios this PR corrects: * Forgetting to undef a define but undeffing others. * Not undeffing any defines in your file. * Earmarking a define as a "file local" define, but not defining it. * Having a define be a "file local" define, but having it be used elsewhere. * Having a "local" define not even be in the file that it only shows up in. * Having a completely unused define* (* I kept some of these because they seemed important... Others were junked.) ## Why It's Good For The Game If you wanna use it across multiple files, no reason to not make it a global define (maybe there's a few reasons but let's assume that this is the 95% case). Let me know if you don't like how I re-arranged some of the defines and how you'd rather see it be implemented, and I'd be happy to do that. This was mostly just "eh does it need it or not" sorta stuff. I used a pretty cool way to detect if we should use the standardized GitHub "error" output, you can see the results of that here https://github.com/san7890/bruhstation/actions/runs/4549766579/jobs/8022186846#step:7:792 ## Changelog Nothing that really concerns players. (I fixed up all this stuff using vscode, no regexes beyond what you see in the python script. sorry downstreams) |
||
|
|
fd0d5ac5b0 |
Adds a syndicate docking port to Tramstation (#74237)
## About The Pull Request Tram was missing its syndicate docking port, so while the Syndicate Infiltrator could use their station locked advanced navigational console to get to the station, the Starfury's Corvette and fighters could not do such a thing, as they defaulted to gaze upon the areas around the Starfury, and could not swap the camera view to the station z level, due to this missing port. In addition, I noticed that the same values have been copy pasted on all stations, so I have decided to create some new docking port subtypes, one generic nearby the station (though no shuttles use it as of now), and one for northwest of the station (used by meta, kilo, and now, Tram), and one for northeast of station (used by delta and icebox). ### Mapping March Ckey to receive rewards: N/A ## Why It's Good For The Game When the traitor does enough tasks to summon the battlecruiser, the backup and extraction should arrive on every station. Closes #72204 Closes #73441 ## Changelog 🆑 fix: The Starfury's Corvette and Fighters can now visit Tramstation /🆑 |
||
|
|
564485bc6d |
Fixes the pubbystation monastery pod (#73990)
## About The Pull Request Fixes Pubby's monastery pod, as emergency pod changes have broken it overtime. - Calling it from Lavaland now works - Using it as a pod still works - Sending it off using the console on the pod itself and from the station also now works again (which had broken ~4 months ago). ## Why It's Good For The Game Closes https://github.com/tgstation/tgstation/issues/54370 This isn't player-facing unless an Admin runs it from Map Depot, where it's still maintained. ## Changelog 🆑 fix: Pubbystation, if run, will now have a working monastery pod shuttle again. /🆑 |
||
|
|
0fe4dea03f |
Audits usage of isanimal() vs isanimal_or_basic_mob() (#74029)
## About The Pull Request There's a couple of open issues which fix places where only simple animals were considered, but they are doing it piecemeal. I decided to just go through every instance of `isanimal` or `subtypesof(mob/living/simple_animal)` I could find, identify which should also affect basic mobs, and fix them. I left out the two others which are already in PR, I'm not stealing your GBP. Fixes https://github.com/tgstation/tgstation/issues/68881 ## Why It's Good For The Game Consistency, mostly. As far as I can tell all of these things _should_ have effected basic mobs, but didn't. This fixes a fair number of bugs but also they're bugs that nobody noticed or reported. There are a couple of places I did not update which will need updating in future. These are: - Dextrousness checks, because basic mobs don't have that yet. - The Charge cooldown action, because frankly I couldn't tell what it was trying to do. alright here goes ## Changelog 🆑 fix: Carp will once again be healed from being near carp rifts fix: Sepia slime cores and the rewind camera now work on Ian fix: Sapient ridden carp (or cows) can throw off their riders by shoving them, or by performing the spin emote. fix: Giant Spider AI will be disabled by the timestop spell fix: Ian can eat envirochow fix: Mice, Frogs, and Cockroaches will no longer set off bear traps fix: You can put a macrobomb implant into Cayenne (or Ian) fix: Ian will now recognise that being squeezed by a cyborg is a nice hug fix: The player panel will tell admins if you're currently a corgi fix: The staff of storms deals massive damage to Bileworms and Giant Spiders fix: Ian will whimper if forced to scream fix: Slimes can consume space carp fix: Mice can be captured in xenoballs fix: You can use pacifying potions on Giant Spiders fix: Sgt Araneus can be fitted with a xenobiological radio implant fix: Sapient corgis no longer count as living players for the purpose of highlander escape objectives fix: The random sentience event can now target corgis and sergeant araneus add: The random sentience event can target a wider array of farm animals fix: Petsplosion wizard event can target corgis add: Petsplosion wizard event will now target farm animals and mothroaches fix: The colossus possession crystal can now actually possess the cockroach it spawns, does not kill you instantly upon ending possession /🆑 |
||
|
|
60e85fa947 |
Polishes some side sources of light and color (#73936)
## About The Pull Request [Circuit Floor Polish](https://github.com/tgstation/tgstation/commit/6b0ee9813271f693ceb44ad42277c36ef2e71268) Circuit floors glow! but it looks like crap cause it's dim and the colors are washed out. I'd like to make them look nicer. Let's make them more intense and longer range, and change the colors over to more vivid replacements. While I'm here, these should really use power and turn on and off based off that. Simple enough to do, just need to hook into a signal (and add a setter for turf area, which cleans up other code too). [Desklamp Upgrade](https://github.com/tgstation/tgstation/commit/8506b13b9c97bf740c3e97db04450555387dd126) Desklamps look bad. They're fullwhite, have a way too large range.Crummy. Let's lower their lightrange from 5 to 3.5, and make the ornate ones warmer, and the more utilitarian ones cooler. The clown one can be yellow because it's funny I'm renaming a color define here so I'm touching more files then you'd expect [Brightens Niknacks](https://github.com/tgstation/tgstation/pull/73936/commits/835bae28e9eb9946be53c9f5dac0a0a39f15ef21) Increases the light range of request consoles, status displays, newscasters, and air alarms (keycard machines too, when they're awaiting input at least) Increases the brightness of air alarms, I think they should be on par with apcs, should be able to tell when they're good/bad. Increases the brightness of vending machines (I want them to light up the tiles around them very lightly, I think it's a vibe) Fixes a bug with ai status displays where they'd display an emissive even if they didn't have anything on their screen, looking stupid. This was decently easy but required a define. Looked really bad tho ## Why It's Good For The Game Pretty <details> <summary> Circuit Floors </summary> Old   New   </details> <details> <summary> Desk Lights </summary> Old   New   </details> The niknack changes are more minor so I'm not gonna grab photos for them. I can if you'd like but I don't think it's necessary. Mostly a vibes in dark spaces sorta thing ## Changelog 🆑 add: I made circuit floors brighter and more vivid. add: Made air alarms, vending machines, newscasters, request consoles, status displays and keycard machines slightly "brighter" (larger light range, tho I did make air alarms a bit brighter too) add: Tweaked desklamps. Lower range, and each type gets its own coloring instead of just fullwhite. fix: AI displays are no longer always emissive, they'll stop doing it if they aren't displaying anything. Hopefully this'll look nicer /🆑 |
||
|
|
06788d6f9d |
Fixes pirates and starfury assailants transferring minds (#73833)
## About The Pull Request Same issue as before, these skipped the spawn step and snowflaked their own creation process. So I split off the create part of attack ghost so these could share. Fixes #73823 , may fix also #73822 but I don't *think* it will, whatever changed spawners a few months ago is a little sus ## Why It's Good For The Game Changeling pirate bad ## Changelog 🆑 Melbert fix: Fixes pirates and starfury assailants keeping minds of past lives /🆑 |
||
|
|
b2e53feee2 |
Adds a stack_trace for emissives with invalid icon_states, fixes all that appeared roundstart (#73678)
## About The Pull Request So, this spiraled from one missing icon being fixed to an entire check for said icons. Several icon files no longer use error icons because its assumed that the checks will handle any missing ones, but the checks don't apply to emissives nor overlays at all. This led to the radsuit having an emissive but no icon_state for it - a relic of the old radsuit. This was only noticed because of a downstream with an error icon appearing for it... I was curious how many were actually having the same issue, so I made a small little stack_trace in the mutable_appearance proc. There were like, 2k. Lots of them were icons named, like, "transparent" or "blank" too... I moved that check to the emissives proc because I semi-understand that system so could actually fix it, and it moved to around fourty roundstart. Much more achievable. (The error usually has more info if you click on it, including the item that caused it. I dunno how to add that to the check itself because of where it's located, though.)  This fixes all the ones I could find, including... Nonexistant icons that shouldn't be adding emissives on: - Empty Barsign - Radsuit - Mass Driver Controllers - Telescreens - Aux Base Consoles - PanDEMIC - Kobayashi computer (holodeck) - Abductor camera console - Syndie drop pod - BSA controller Entirely missing icons on: - Pwr Game Vendor (this was just misnamed) - Generic Soda Vendor - Engivend - Security Laptop (proud of this one.,.,)  There are no doubt more of them hidden about, but I don't really know what I'm doing... If there's a check that'd be better than this, please review telling me what to change <3 ## Why It's Good For The Game Fixes missing icons, fixes attempts to add icons where we don't need them, and adds a check to help fix more of the two issues as they occur. ## Changelog 🆑 fix: fixed missing emissives on the Engivend, Pwr-Game Soda, and generic Soda vendors. Also fixed the seclaptop having no valid screen icon! fix: fixed a few items trying to apply emissives when they shouldn't. code: added a stack_trace for emissives with missing icon states. /🆑 |
||
|
|
2fd2feec50 |
Fixes hijacked shuttles not counting as escaped, cleans up associated code (#73623)
## About The Pull Request Fixes #72240 So, in the past, `onCentCom` ran a check at the end that said "if we're on centcom z, in centcom area, or in shuttle that is endgame launched: return TRUE" Meanwhile its brother `onSyndieBase` did not need to run the same checks, because it was also on the centcom z-level. This meant that for the purposes of `considered_escaped`, `onCentCom` pretty much entirely eclipsed `onSyndieBase`, only mattering for, well, Nuke Ops So the fix was simple - add the check for "in shuttle that is engame launched" to `onSyndieBase`. I took this opportunity to do a quick audit of associated "escaped" and "alive" code. Did you know that hardcore random only checked that you were on centcom to award survival points? Instead of any other checks for escaped like stat? Also the ancient "romerol zombies can't be used as an easy way to greentext escape" was broken, because it checked the wrong species ID? Bonus performance optimization: `in area` -> `in area.get_contained_turfs()` ## Why It's Good For The Game Hijack does not turn around to become an L ## Changelog 🆑 Melbert fix: Hijacked shuttles now count as "escaping alive" once agian fix: Hardcore random survival now actually checks that you've escaped alive, and not just made it to centcom fix: Intelligent zombies can now escape. fix: Infectious zombies now don't count as escaped as intended. /🆑 |
||
|
|
ab307032ed |
Nightvision Rework (In the name of color) (#73094)
## About The Pull Request Relies on #72886 for some render relay expansion I use for light_mask stuff. Hello bestie! Night vision pissed me off, so I've come to burn this place to the ground. Two sections to discuss here. First we'll talk about see_in_dark and why I hate it, second we'll discuss the lighting plane and how we brighten it, plus introducing color to the party. ### `see_in_dark` and why it kinda sucks https://www.byond.com/docs/ref/#/mob/var/see_in_dark See in dark lets us control how far away from us a turf can be before we hide it/its contents if it's dark (not got luminosity set) We currently set it semi inconsistently to provide nightvision to mobs. The trouble is stuff that produces light != stuff that sets luminosity. The worst case of this can be seen by walking out of escape on icebox, where you'll see this  Snow draws above the lighting plane, so the snow will intermittently draw, depending on see_in_dark and the luminosity from tracking lights. This would in theory be solvable by modifying the area, but the same problem applies across many things in the codebase. As things currently stand, to be emissive you NEED to have a light on your tile. People are bad at this, and honestly it's a bit much to expect of them. An emissive overlay on a canister shouldn't need an element or something and a list on turfs to manage it. This gets worse when you factor in the patterns I'm using to avoid drawing lights above nothing, which leads to lights that should show, but are misoffset because their parent pixel offsets. It's silly. We do it so we can have things like mesons without just handing out night vision, but even there the effect of just hiding objects and mobs looks baddddddd when moving. It's always bothered me. I'll complain about mesons more later, but really just like, they're too bright as it is. I'm proposing here that rather then manually hiding stuff based off distance from the player, we can instead show/hide using just the lighting plane. This means things like mesons are gonna get dimmer, but that's fine because they suck. It does have some side effects, things like view() on mobs won't hide stuff in darkness, but that's fine because none actually thinks about view like that, I think. Oh and I added a case to prevent examining stuff that's in darkness, and not right next to you when you don't have enough nightvision, to match the old behavior `see_in_dark` gave us. Now I'd like to go on a mild tangent about color, please bare with me ### Color and why `lighting_alpha` REALLY sucks You ever walk around with mesons on when there's a fire going, or an ethereal or firelocks down. You notice how there isn't really much color to our lights? Doesn't that suck? It's because the way we go about brighting lighting is by making everything on the lighting plane transparent. This is fine for brightening things, but it ends up looking kinda crummy in the end and leads to really washed out colors that should be bright. Playing engineer or miner gets fucking depressing. The central idea of this pr, that everything else falls out of, is instead of making the plane more transparent, we can use color matrixes to make things AT LEAST x bright. https://www.byond.com/docs/ref/#/{notes}/color-matrix Brief recap for color matrixes, fully expanded they're a set of 20 different values in a list Units generally scale 0-1 as multipliers, though since it's multiplication in order to make an rgb(1,1,1) pixel fullbright you would need to use 255s. A "unit matrix" for color looks like this: ``` list(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0 ) ``` The first four rows are how much each r, g, b and a impact r, g, b and well a. So a first row of `(1, 0, 0, 0)` means 1 unit of r results in 1 unit of r. and 0 units of green, blue and alpha, and so on. A first row of `(0, 1, 0, 0)` would make 1 red component into 1 green component, and leave red, blue and alpha alone, shifting any red of whatever it's applied to a green. Using these we can essentially color transform our world. It's a fun tool. But there's more. That last row there doesn't take a variable input like the others. Instead, it ADDS some fraction of 255 to red, green, blue and alpha. So a fifth row of `(1, 0, 0, 0)` would make every pixel as red as it could possibly be. This is what we're going to exploit here. You see all these values accept negative multipliers, so we can lower colors down instead of raising them up! The key idea is using color matrix filters https://www.byond.com/docs/ref/#/{notes}/filters/color to chain these operations together. Pulling alllll the way back, we want to brighten darkness without affecting brighter colors. Lower rgb values are darker, higher ones are brighter. This relationship isn't really linear because of suffering reasons, but it's good enough for this. Let's try chaining some matrixes on the lighting plane, which is bright where fullbright, and dark where dark. Take a list like this ``` list(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.2, -0.2, -0.2, 0 ) ``` That would darken the lighting a bit, but negative values will get rounded to 0 A subsequent raising by the same amount ``` list(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0.2, 0.2, 0.2, 0 ) ``` Will essentially threshold our brightness at that value. This ensures we aren't washing out colors when we make things brighter, while leaving higher values unaffected since they basically just had a constant subtracted and then readded. ### But wait, there's more You may have noticed, we gain access to individual color components here. This means not only can we darken and lighten by thresholds, we can COLOR those thresholds. ``` list(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0.1, 0.2, 0.1, 0 ) ``` Something like the above, if applied with its inverse, would tint the darkness green. The delta between the different scalars will determine how vivid the color is, and the actual value will impact the brightness. Something that's always bothered me about nightvision is it's just greyscale for the most part, there isn't any color to it. There was an old idea of coloring the game plane to match their lenses, but if you've ever played with the colorblind quirk you know that gets headachey really fast. So instead of that, lets color just the darkness that these glasses produce. It provides some reminder that you're wearing them, instead of just being something you forget about while playing, and provides a reason to use flashlights and such since they can give you a clearer, less tinted view of things while retaining the ability to look around things. I've so far applied this pattern to JUST headwear for humans (also those mining wisps) I'm planning on furthering it to mobs that use nightvision, but I wanted to get this up cause I don't wanna pr it the day before the freeze. Mesons are green, sec night vision is red, thermals orange, etc. I think the effect this gives is really really nice. I've tuned most things to work for the station, though mesons works for lavaland for obvious reasons. I've tuned things significantly darker then we have them set currently, since I really hate flat lighting and this system suffers when interacting with it. My goal with these is to give you a rough idea of what's around you, without a good eye for detail. That's the difference between say, mesons, and night vision. One helps you see outlines, the other gives you detail and prevents missing someone in the darkness. It's hard to balance this precisely because of different colored backgrounds (looking at you icebox) More can be done on this front in future but I'm quite happy with things as of now ### **EDIT** I have since expanded to all uses of nightvision, coloring most all of them. Along the way I turned some toggleable nightvision into just one level. Fullbright sucks, and I'd rather just have one "good" value. I've kept it for a few cases, mostly eyes you rip out of mobs. Impacted mobs are nightmares, aliens, zombies, revenants, states and sort of stands. I've done a pass on all mobs and items that impact nightvision and added what I thought was the right level of color to them. This includes stuff like blobs and shuttle control consoles As with glasses much of this was around reducing vision, though I kept it stronger here, since many of these mobs rely on it for engaging with the game <details> <summary> Technical Changes </summary> #### Adds filter proc (the ones that act like templates) support to filter transitions. Found this when testing this pr, seemed silly. #### Makes our emissive mask mask all light instead This avoids dumbass overlay lighting lighting up wallmounts. We switch modes if some turfflags are set, to accomplish the same thing with more overhead, and support showing things through the darkness. Also fixes a bug where you'd only get one fullscreen object per mob, so opening and closing a submap would take it away Also also fixes the lighting backdrop not actually spanning the screen. It doesn't actually do anything anymore because of the fullscreen light we have, but just in case that's unsued. Needs cleanup in future. #### Moves openspace to its own plane that doesn't draw, maxing its color with a sprite This is to support the above We relay this plane to lighting mask so openspace can like, have lighting #### Changes our definition of nightvision to the light cutoff of night vision goggles and such Side affect of removing see_in_dark. This logic is a bit weak atm, needs some work. #### Removes the nightvision spell It's a dupe of the nightvision action button, and newly redundant since I've removed all uses of it #### Cleans up existing plane master critical defines, ensures trasnparent won't render These sucked Also transparent stuff should never render, if it does you'll get white blobs which suck </details> ## Why It's Good For The Game Videos! (Github doesn't like using a summary here I'm sorry) <details> Demonstration of ghost lighting, and color https://user-images.githubusercontent.com/58055496/215693983-99e00f9e-7214-4cf4-a76a-6e669a8a1103.mp4 Engi-glass mesons and walking in maint (Potentially overtuned, yellow is hard) https://user-images.githubusercontent.com/58055496/215695978-26e7dc45-28aa-4285-ae95-62ea3d79860f.mp4 Diagnostic nightvision goggles and see_in_dark not hiding emissives https://user-images.githubusercontent.com/58055496/215692233-115b4094-1099-4393-9e94-db2088d834f3.mp4 Sec nightvision (I just think it looks neat) https://user-images.githubusercontent.com/58055496/215692269-bc08335e-0223-49c3-9faf-d2d7b22fe2d2.mp4 Medical nightvision goggles and other colors https://user-images.githubusercontent.com/58055496/215692286-0ba3de6a-b1d5-4aed-a6eb-c32794ea45da.mp4 Miner mesons and mobs hiding in lavaland (This is basically the darkest possible environment) https://user-images.githubusercontent.com/58055496/215696327-26958b69-0e1c-4412-9298-4e9e68b3df68.mp4 Thermal goggles and coloring displayed mobs https://user-images.githubusercontent.com/58055496/215692710-d2b101f3-7922-498c-918c-9b528d181430.mp4 </details> I think it's pretty, and see_in_dark sucks butt. ## Changelog <!-- If your PR modifies aspects of the game that can be concretely observed by players or admins you should add a changelog. If your change does NOT meet this description, remove this section. Be sure to properly mark your PRs to prevent unnecessary GBP loss. You can read up on GBP and it's effects on PRs in the tgstation guides for contributors. Please note that maintainers freely reserve the right to remove and add tags should they deem it appropriate. You can attempt to finagle the system all you want, but it's best to shoot for clear communication right off the bat. --> 🆑 add: The darkness that glasses and hud goggles that impact your nightvision (think mesons, nightvision goggles, etc) lighten is now tinted to match the glasses. S pretty IMO, and hopefully it helps with forgetting you're wearing X. balance: Nightvision is darker. I think bright looks bad, and things like mesons do way too much balance: Mesons (and mobs in general) no longer have a static distance you can see stuff in the dark. If a tile is lit, you can now see it. fix: Nightvision no longer dims colored lights, instead simply thresholding off bits of darkness that are dimmer then some level. /🆑 |
||
|
|
f72be2749d |
Escape pod early launch fixes (#73442)
## About The Pull Request Ever since dynamic shuttle dock size calculation, escape pods failed to select the random lavaland/icemoon docking ports as a valid target, as those ports had no shuttle attached to them, and thus, their dimensions were stuck at 0. This PR makes permits these to be always a valid target, similar to hyperspace transit docking ports. Also, the various pods connected to the pod computer multiple times. Each of them has added pod_lavaland as its valid destination lists, and then when the escape pod port's id got updated with a counter to ensure a unique ID, they have added pod_[counter]_lavaland to its destination. This meant that every pod past the first had a dropdown, so they could select which destination they could land at, instead of just the one intended for solely them. This is also fixed. Also autodocs two vars, and replaces some single letter vars. ## Why It's Good For The Game fixes #72966 ## Changelog 🆑 fix: emagged/delta pods properly fly to lavaland /🆑 |
||
|
|
51f02b5acc |
Fixes critical plane masters improperly not being readded in show_to (#72604)
## About The Pull Request [Adds support for pulling z offset context from an atom's plane](https://github.com/tgstation/tgstation/commit/9f215c5316e5cfdbedf6a23ff97dfee0e523354b) This is needed to fix paper bins, since the object we plane set there isn't actually on a z level. Useful elsewhere too! [Fixes compiler errors that came from asserting that plane spokesmen had a plane var](https://github.com/tgstation/tgstation/commit/b830002443f2fbe230e9ff00236d7a46a9f2eec7) [Ensures lighting backdrops ALWAYS exist for each lighting plane.](https://github.com/tgstation/tgstation/commit/0e931169f7c5336333bc6f41353c82f603fc1170) They can't float becuase we can see more then one plane at once yaknow? [Fixes parallax going to shit if a mob moved zs without having a client](https://github.com/tgstation/tgstation/commit/244b2b25baecfc644505a3ea1e348e0cb97a04e0) Issue lies with how is_outside_bounds just blocked any plane readding It's possible for a client to not be connected during z moves, so we need to account for them rejoining in show_to, instead of just blocking any of our edge cases. Fixing this involved having parallax override blocks for show_plane and anything with the right critical flags ensuring mobs have JUST the right PMs and relays. It's duped logic but I'm unsure of how else to handle it and frankly this stuff is just kinda depressing. Might refactor later [show_to can be called twice successfully with no hide_from call.](https://github.com/tgstation/tgstation/commit/092581a5c06f7f884f48d41c96fa9300327ef214) Ensures no runtimes off the registers from this ## Why It's Good For The Game Fixes #72543 Fixes lighting looking batshit on multiz. None reported this I cry into the night. ## Changelog 🆑 fix: Fixes parallax showing up ABOVE the game if you moved z levels while disconnected /🆑 --------- Co-authored-by: Time-Green <timkoster1@hotmail.com> |
||
|
|
e9c87c0acb |
Starlight Polish (Space is blue!) (#72886)
<!-- 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 Adds support to underlays to realize_overlays Ensures decals properly handle plane offsets Fixes space lighting double applying if it's changeturf'd into. this will be important later Makes solar vis_contents block emissives as expected Moves transit tube overlays to update_overlays, adds emissive blockers to them #### Adds render steps An expansion on render_target based emissive blockers. They allow us to hijack an object's appearance and draw it somewhere else, or even modify it, THEN draw it somewhere else. They chain quite nicely Fixes shuttles deleting z holder objects #### Makes space emissive, makes walls and floors block emissives The core idea here goes like this: We make space glow, and give its overlays some color This way, the tile and space parallax remain fullbright, along with anything that doesn't block emissives, but anything that does block emissives will instead get shaded the color of starlight This requires a bit of extra work, see later This is done automatically with render relays, which now support specifiying layer and color (Need to make an editor for these one of these days) The emissive blocking floor stuff requires making a second render plate to prevent double scaling Also adds some new layering defines for lighting, and ensures all turf lights have a layer. We'll get to this soon #### Makes things in space blue We color them the same as starlight, by taking advantage of space being emissive This means that things in space that block emissive will block it correctly and be colored blue by the light overlay, but space itself will remain fullbright This does require redefining what always_lit means, but nothing but cordons use that so it's fineee #### Makes glass above space glow, and some other stuff Glass tiles that sit above space will now shine light with matching color to the glasses color. This includes mat tiles. Glass tiles (not mat because they have no alpha) also only partially block emissives. Adds a new proc that uses render steps to acomplish this, essentially we're cutting out bits below X alpha and drawing what remains as an emissive. #### Modifies partial space showing to support glow Essentially, alongside displaying space as an underlay, we also display a light overlay colored like starlight. That starlight overlay gets masked to only be visible in bits that do not contain any alpha. We also mask the turf lighting to not go into bits that have no alpha, to ensure we get the effect we want. This is done with that lighting layer thing I mentioned earlier. #### Makes appearance realization's list output ordered I want it output in order of overlay, sub overlay suboverlay, next overlay Need to use insert for that ## Why It's Good For The Game Pretty! Also having space be emissive is a very very good way to test for fucked emissive blockers (If it's broken why are we even drawing the overlay) I know for a fact mob blockers on lizards and socks are kinda yorked, I think there's more <details> <summary> Old </summary>    </details> <details> <summary> New </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 it's effects on PRs in the tgstation guides for contributors. Please note that maintainers freely reserve the right to remove and add tags should they deem it appropriate. You can attempt to finagle the system all you want, but it's best to shoot for clear communication right off the bat. --> 🆑 add: Space now makes things in it starlight faintly blue fix: Glass floors that display space now properly let space shine through them, rather then hiding it in the dark add: Glass floors above space now glow faintly depending on their glass type /🆑 <!-- Both 🆑's are required for the changelog to work! You can put your name to the right of the first 🆑 if you want to overwrite your GitHub username as author ingame. --> <!-- You can use multiple of the same prefix (they're only used for the icon ingame) and delete the unneeded ones. Despite some of the tags, changelogs should generally represent how a player might be affected by the changes rather than a summary of the PR's contents. --> --------- Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com> |
||
|
|
5dbaa25f91 |
[NO GBP] Lazy Template Cordoning | Double Runtime Fix (#72709)
## About The Pull Request Adds automatic cordoning to block reservations. Also fixes an issue where ChangeTurf would cause SSicon_smoothing to throw runtimes by calling QUEUE_SMOOTH regardless of initialization completion ## Why It's Good For The Game ## Changelog --------- Signed-off-by: GitHub <noreply@github.com> Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com> |
||
|
|
8ad6f5a2f3 |
Optimizes changing z level as a ghost by something like 85% (#73005)
<!-- 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 <!-- Describe The Pull Request. Please be sure every change is documented or this can delay review and even discourage maintainers from merging your PR! --> Optimizes hud image addition/removal on z change We were doing a lot of repeated work here, not to mention all the proc calls. So I pushed the "operate on loops" behavior into its own proc, so I could ensure we only do some of this stuff once This plus some removal of safeties saves 75% of the cost of z level transitions as a ghost Prevents double on_changed_z_level calls from ghosts and shuttles Reacting to z changes used to be done off doMove or one of those children, timber moved it to Moved, but did not remove the calls that assumed things like abstract_move wouldn't trigger it This means that moving up/down as a ghost was causing a double call of the whole z move stack. Suprised this never broke anything tbh Makes csv stat tracking actually encode numbers properly, cleans up an indev comment from plane group code ## Why It's Good For The Game Speed, and fixes |
||
|
|
fd48108219 |
Crafting urinals, noticeboards, and pod controllers (#72861)
## About The Pull Request Breaking down #72371 because it's... unreasonably large. So this PR adds recipes for urinals and noticeboards, and a circuit for pod computers. The pod computers don't work, but you can certainly remove them without smacking them like an animal until they fall to pieces. ## Why It's Good For The Game Wallening compliance. ## Changelog 🆑 Tattle qol: urinals and noticeboards can be handcrafted qol: pod computers can be deconstructed /🆑 Co-authored-by: tattle <article.disaster@gmail.com> |
||
|
|
872e64fb05 |
Adds spaces around logical operators (#72603)
## About The Pull Request Part of a prior PR that was closed (#72562). This version does not add the check in CI. ## Why It's Good For The Game The work is already done, so I figured why not. ## Changelog N/A Nothing player facing Co-authored-by: Jeremiah Snow <jlsnow301@pm.me> Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com> |
||
|
|
e2482efb5b |
Fixes vulerabilities in The Syndicate's security software (#72430)
Fixes #72420 🆑 ShizCalev fix: Crew AIs can no longer interact with ANY syndicate machinery (ie shuttle computers, buttons, ect.) fix: Crew AIs can no longer attempt to track mobs on the syndicate base to determine the gamemode. /🆑 |
||
|
|
8a8b4a37c4 |
Adds support for Rulesets having intrinsic template requirements (#72339)
Title ## About The Pull Request Ensures that we load templates for a ruleset before we attempt to place or cache characters for that ruleset Also makes wizard and abductor async load their template to improve (apparent) loading times for them ## Why It's Good For The Game This is the only thing left that I can think of that would cause antags like nukies and abductors to spawn in wrong ## Changelog This should not be player facing Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com> |
||
|
|
6b1ae77b41 |
Station Trait: Luxury Escape Pods (#72076)
## About The Pull Request It's the season of giving and so here at Nanotrasen we've partnered with a new supplier in order to create a limited run of Luxury Escape Pods. These larger, carpeted pods with extra windows and smoother, quieter engines will be rolling out soon to stations who do particularly well on their quarterly earnings reports!  <details> <summary>Redact Before Sending</summary> Of course, that funding had to come from somewhere. Stations with a particularly poor performance may have to settle for the budget option until results improve.  </details> In order to facilitate station traits modifying escape pods, I made a subtype of stationary shuttle dock specifically for escape pods. There is a map update script which will replace existing pod docks with the new one, it also cuts down on some map var edits. I was worried that varying the pod size would cause problems but it actually went surprisingly smoothly, only Kilo had a couple of plating turfs in the way. This might cause problems for maps in development though, if they are relying on escape pods being a _very_ specific size. ## Why It's Good For The Game I just think it's neat. But more station traits = more variance between rounds = more fun, I guess? Varying how large escape pods might be can create interesting dilemmas between crew about how to fit into them, at least about how tall they need to make the pile of prone people. The escape pod dock subtype might help out newer mappers a little bit, as it means fewer var edits to copy/paste from other maps. ## Changelog 🆑 add: New station traits can vary how large and comfortable the station escape pods are. /🆑 |
||
|
|
719173dc68 |
The nuke ops base begins lazy loading as soon as the first hijack stage is completed so as to avoid upwards of 30 second delays on the shuttle docking after the timer hits 00:00 due to server lag. (#72244)
## Why It's Good For The Game Just got out of a manuel round where we were stuck on a shuttle at 00:00 for like 30 seconds because of the lazy loading being way, way too slow.  Note that this doesn't fix the fact hijack greentexts don't work due to the lazy loading being off the CC Z-level, by the way. ## Changelog 🆑 fix: The nuke ops base begins lazy loading as soon as the first hijack stage is completed so as to avoid upwards of 30 second delays on the shuttle docking after the timer hits 00:00 due to server lag. /🆑 Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com> |
||
|
|
7b19e4a5ab |
Fixes inability to declare war as nukies (#72217)
<!-- 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 War item checked for being on the CC zlevel which is no longer where the nukie base is loaded. Instead it now checks for being in a reserved area, which it will be if loaded in __correctly__ fixes https://github.com/tgstation/tgstation/issues/72214 Also restricts loading lazy templates until the game has fully started, i've noticed that trying to load pregame has a tendency to get stuck in a runtime loop when SSicon_smoothing fires at the same time loading is occurring <!-- Describe The Pull Request. Please be sure every change is documented or this can delay review and even discourage maintainers from merging your PR! --> ## Why It's Good For The Game War Good <!-- Argue for the merits of your changes and how they benefit the game, especially if they are controversial and/or far reaching. If you can't actually explain WHY what you are doing will improve the game, then it probably isn't good for the game in the first place. --> ## Changelog <!-- If your PR modifies aspects of the game that can be concretely observed by players or admins you should add a changelog. If your change does NOT meet this description, remove this section. Be sure to properly mark your PRs to prevent unnecessary GBP loss. You can read up on GBP and it's effects on PRs in the tgstation guides for contributors. Please note that maintainers freely reserve the right to remove and add tags should they deem it appropriate. You can attempt to finagle the system all you want, but it's best to shoot for clear communication right off the bat. --> 🆑 fix: War can once again be declared /🆑 <!-- 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. --> |
||
|
|
45dcc6e72b |
Abstract away stuff that acts on baseturfs directly into their own procs, and kills some dead code related to baseturfs + tests (#72117)
Adds some new procs relating to baseturfs that replaces some code that reads and sets them directly. Moves them to their own file. **To reviewers: Any proc in baseturfs.dm that is snake_case is mine, anything else is just moved**. Adds tests for the existing procs of baseturfs. I'm going to be doing some optimizations to baseturfs that change the actual representation of baseturfs, and so I'm prepping these to be implementation agnostic. Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com> |
||
|
|
b182d6f320 |
Lazy Template Loading - Nukie/Wiz (#71785)
## About The Pull Request Removes the nukie base and wizard den from the base centcom map. They are instead now lazy loaded as required. To make a new lazy load template is fairly simple, make a map, allocate an area for it, and place a marker at the bottom left corner of that area. I have it check an area to ensure that if someone makes the map larger than expected but doesn't account for the template allocation it doesn't overwrite stuff without warning [Replaces some improper CHECK_TICKs with MAPLOADING_CHECK_TICKs](https://github.com/tgstation/tgstation/pull/71785/commits/c7fbca9148812b392dca76d5450fb6bb86716462) Atom init has already been tripped by the time we get to this portion of the loading, so if we don't use the right check tick, we will potentially block unrelated init attempts. This is bad. (Lemon edit, I want this in the commit desc) ## Why It's Good For The Game Cuts down on init times. Closes https://github.com/tgstation/dev-cycles-initiative/issues/17 ## Changelog 🆑 admin: New mapping verb to load lazy templates as needed. In your admin tab under the Mapping category. /🆑 this isnt technically player visible, so not sure it needs a changelog Co-authored-by: san7890 <the@san7890.com> Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com> Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com> |
||
|
|
a91472045d |
Fixes secure briefcase and wall safes not sending icon update signals properly (#72081)
#71788 used the wrong procs. 🆑 ShizCalev fix: Fixed secure briefcase and wall safes not sending icon update signals properly /🆑 |
||
|
|
e766444468 |
Changes our map_format to SIDE_MAP (#70162)
## About The Pull Request This does nothing currently, but will allow me to test for layering issues on LIVE, rather then in just wallening. Oh also I'm packaging in a fix to one of my macros that I wrote wrong, as a joke [removes SEE_BLACKNESS usage, because we actually cannot use it effectively](https://github.com/tgstation/tgstation/pull/70162/commits/c9a19dd7cce95038340ebd5c1a6e4cb27ee7c9ee) [c9a19dd](https://github.com/tgstation/tgstation/pull/70162/commits/c9a19dd7cce95038340ebd5c1a6e4cb27ee7c9ee) Sidemap removes the ability to control it on a plane, so it basically just means there's an uncontrollable black slate even if you have other toggles set. This just like, removes that, since it's silly [fixes weird layering on solars and ai portraits. Pixel y was casuing things to render below who shouldn't](https://github.com/tgstation/tgstation/pull/70162/commits/3885b9d9ed634cdc4c8041b19df5b5ea9a1a37ae) [3885b9d](https://github.com/tgstation/tgstation/pull/70162/commits/3885b9d9ed634cdc4c8041b19df5b5ea9a1a37ae) [Fixes flicker issues](https://github.com/tgstation/tgstation/pull/70162/commits/2defc0ad20a0ee7d12e0b071f6d31b6127b8765d) [2defc0a](https://github.com/tgstation/tgstation/pull/70162/commits/2defc0ad20a0ee7d12e0b071f6d31b6127b8765d) Offsetting the vis_contents'd objects down physically, and then up visually resolves the confliciting that was going on between the text and its display. This resolves the existing reported flickering issues [fixes plated food not appearing in world](https://github.com/tgstation/tgstation/pull/70162/commits/28a34c64f830660d7fb1cc669b9fc3ed9f5c7d61) [28a34c6](https://github.com/tgstation/tgstation/pull/70162/commits/28a34c64f830660d7fb1cc669b9fc3ed9f5c7d61) pixel_y'd vis_contents strikes again. It's a tad hacky but we'll just use pixel_z for this [Adds wall and upper wall plane masters](https://github.com/tgstation/tgstation/pull/70162/commits/89fe2b4eb40edc36879e4e1954dee8616be94522) [89fe2b4](https://github.com/tgstation/tgstation/pull/70162/commits/89fe2b4eb40edc36879e4e1954dee8616be94522) We use these + the floor and space planes to build a mask of all the visible turfs. Then we take that, stick it in a plane master, and mask the emissive plane with it. This solves the lighting fulldark screen object getting cut by emissives Shifts some planes around to match this new layering. Also ensures we only shift fullscreen objects if they don't object to it. [compresses plane master controllers](https://github.com/tgstation/tgstation/pull/70162/commits/bd64cc196a4265d42809eebbd1afa46fa33a576d) [bd64cc1](https://github.com/tgstation/tgstation/pull/70162/commits/bd64cc196a4265d42809eebbd1afa46fa33a576d) we don't use them for much rn, but we might in future so I'm keeping it as a convienince thing 🆑 refactor: The logic of how we well, render things has changed. Make an issue report if anything looks funky, particularly layers. PLEASE USE YOUR EYES /🆑 Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com> |
||
|
|
9b1be9ef13 |
Investigate logs include ckey of source (if applicable) (#71833)
## About The Pull Request All investigate logs start with [src], which can be any atom. So sometimes names and items get printed twice. Adds ckeys to the investigate_logs of living mobs.  ## Why It's Good For The Game Better logging, includes the ckey for living mobs in investigate logs, and fixes some investigate_death logs that weren't properly attributed to mobs. ## Changelog 🆑 Tattle admin: investigate logs include ckey of source (if applicable) /🆑 Co-authored-by: tattle <article.disaster@gmail.com> |
||
|
|
e928449067 |
3/4ths-ify some wall mount sprites (by Kryson and Viro) (#71788)
posters are now 24px tall, new sprites for nanomeds, emergency safes, and ticket machines (by Kryson) |
||
|
|
d55dae757a |
Refactors calculating shuttle bounds into a dedicated proc (#71687)
Adds the ability to calculate the information during runtime by iterating through the shuttle areas; which essentially means that you now have the ability to shrink/expand shuttles. A front end for doing this has not been implemented in this PR, however this means that in the future doing so would be as simple as adding the new area into the shuttle_areas list on the docking port and then calling `calculate_docking_port_information` on the docking port. |
||
|
|
329921639a |
Rewrites how action buttons icons are generated, makes them layer nicer. Allows observers to see a mob's action buttons. (#71339)
## About The Pull Request
- Rewrites how action button icons are generated.
- Prior, generated an action button icon was fairly simplistic and
didn't allow for many changes. Someone recently added the option for
overlays to be generated over action buttons, but the framework was very
weak.
- Now, action button icon generation is split across multiple procs,
like atom icon updates.
- The background of action buttons are underlays
- The actual icon of the action button is the icon and icon state of the
action button movable
- The rim / border of the button is an overlay, layered overtop the
button.
- Allows observers to see what action buttons a mob has. They even
update in real time! And no, the observers cannot click on them.
## Why It's Good For The Game
- Runechat text of action buttons are no longer hidden behind the actual
icon. This was very ugly with cooldown actions, as the cooldown text was
hidden behind a lot of spell icons.
- Cuts down on a lot of icon duplication.
- Gives much finer control over action button icons
- Saves a bit of processing from generating full action button icons
when not necessary. Not implemented in many places, but is in some.


## Changelog
🆑 Melbert
add: Observers can now see what action buttons an observed mob has. No,
you can't click them. And no it doesn't show EVERY action.
refactor: Refactored how action button icons are generated. Some actions
will now use a colored border when active instead of just turning green.
Cooldown text will also appear on the top layer of actions too. If you
see any funky lookin' icons (namely their borders), let me know.
refactor: Bluespace Golem's teleport action is now a cooldown action.
fix: Construct actions go to the middle of the screen like expected.
/🆑
|
||
|
|
cdc2ab94f2 |
Mining orders can no longer error and don't say they charge you (#71676)
- Mining orders now show the amount of mining points spent as the 'Cost' instead of a flat 240 credits - Mining orders now no longer have errors (including nothing being in the crate at all) because they can't be sent back for a full refund. - Mining orders no longer say they charged you if they haven't. |
||
|
|
fd19f6d5a0 |
The Mining vendor now works like the Chef produce console (has to go through Cargo) (#71023)
## About The Pull Request Now comes with a Hackmd: https://hackmd.io/ImTe5FLeTgmI7spTWKBaFQ?view In-game screenshots:    Removes the old Mining vendor console and all its bad code. Instead, the chef produce console was generalized and a NEW mining vendor is a subtype of it. If they try to Express this console, it will be 1.5x the mining points (compared to 2x for the Chef produce console atm), so it is technically possible, but it is still better to order it through Cargo. Different to the Kitchen crate, this one is a private order by the Shaft Miner, using mining points instead of Credits. Cargo CAN emitter it open, but I think that's an acceptable risk with all crates. As shown in the screenshot, Cargo will immediately know who ordered the items so knows who to call to pick it up when needed. This also means Shaft Miner's vendor is now categorized somewhat. I tried my best to make sense out of it but some items really don't make sense (laser pointer, soap...) I split the different sections of orderable items into different files for better management, and de-hardcoded it and its TGUI to make it easier for anyone who wants to add more to it. I also made the produce console use paths and added ways 'categories' to produce consoles, which indicates which sections you should and shouldn't be allowed to see. https://github.com/tgstation/tgstation/pull/71007 already did part of this but it isn't merged yet so :/ Free golems are mostly unaffected by this. Their console only works in express mode and doesn't increase the prices for it. The only downside is the cooldown. I still have some things to finish on this PR so it'll be left as draft until at least tomorrow. ## Why It's Good For The Game https://hackmd.io/ImTe5FLeTgmI7spTWKBaFQ?view 1. A large problem currently with Miners is that they don't interact with the station, this will at least help integrate them more into their own department, by making the cost of their equipment cheaper if they bother to actually go through Cargo for their gear. 2. It also means that a non functional Cargo would affect Shaft Miners too, and as they have access to the shuttle, maybe we can expect some Miners to pick up the slack if needed. 3. The old mining vendor was the ONLY vendor in the game that had infinite stock. It doesn't need a refill or anything like any other vendor, and every other vendor uses credits, mining points is just shaft miner credits. Why are they an exception? At least being ordered through the shuttle makes sense. 4. It opens the QM being able to see easier what Miners are doing, and prevents miners from hiding on Lavaland to do nothing but hunt fauna if they were meant to be demoted or something by the QM. Basically, gives the QM more control over the people working in their department. ## Changelog 🆑 add: Shaft Miner's equipment vendor now orders their equipment through the Cargo shuttle, though you can spend 1.5x the points to express it, making it a Mining version of the Chef's produce console, with a weakened express tax. /🆑 |
||
|
|
84f69359a0 |
More horrible 515 proc compatibility. (#71333)
So i left over some basic `/whatever/proc/format` uses in the original PR this fixes it. Notable exceptions to the rule: - Paths in add_verb/remove_verb, we need full path instead of a name there to access verb metadata so we can't use proc ref macros there. - regex.Replace, found out that it does not accept call by name. Instead i added new REGEX_REPLACE_HANDLER so we can at least try to mark these. There's still leftover global procs that do not use GLOBAL_PROC_REF but they functionally equivalent so that's for later. I don't see any reasonable way to grep for this. But if you got any ideas please share. |
||
|
|
9dab26371c |
Throws a bunch of parenthesis around to ensure dear Aunt Sally is always properly excused. (#71281)
Similar vein to #37116 This is supposed to be standard, yet here we are. SHOULDN'T change anything, but there's likely something out there that's bound to behave different because of it. These were done manually, regex to find things that MIGHT need to be corrected; `^#define.+\+((?!\)).)*$` `^#define.+-((?!\)).)*$` `^#define.+\*((?!\)).)*$` `^#define.+\/((?!\)).)*$` (yeah that's a lot of stuff.) `^#define.+%((?!\)).)*$` `^#define.+SECONDS((?!\)).)*$` `^#define.+MINUTES((?!\)).)*$` |
||
|
|
a4b1fd4cd3 | Adds two new whiteships, the "Personal Transit Shuttle" and the "Obelisk" (#71093) | ||
|
|
58b4b07ef0 |
[MDB Ignore] Corrects Automatic Shuttle Boundary Generation (#71220)
When you load a map template, it does many things before considering itself finalized. One of these steps is to iterate over all the loaded items and initialize/process them. Unfortunately because a shuttle setups the bounds after initTemplateBounds is called, the mobile docking port ends up being initialized before the bounds are actually setup correctly. The solution to this is to explicitly ignore the mobile docking port, and have it initialize immediately after calculating the bounds. |
||
|
|
4d6a8bc537 |
515 Compatibility (#71161)
Makes the code compatible with 515.1594+
Few simple changes and one very painful one.
Let's start with the easy:
* puts call behind `LIBCALL` define, so call_ext is properly used in 515
* Adds `NAMEOF_STATIC(_,X)` macro for nameof in static definitions since
src is now invalid there.
* Fixes tgui and devserver. From 515 onward the tmp3333{procid} cache
directory is not appened to base path in browser controls so we don't
check for it in base js and put the dev server dummy window file in
actual directory not the byond root.
* Renames the few things that had /final/ in typepath to ultimate since
final is a new keyword
And the very painful change:
`.proc/whatever` format is no longer valid, so we're replacing it with
new nameof() function. All this wrapped in three new macros.
`PROC_REF(X)`,`TYPE_PROC_REF(TYPE,X)`,`GLOBAL_PROC_REF(X)`. Global is
not actually necessary but if we get nameof that does not allow globals
it would be nice validation.
This is pretty unwieldy but there's no real alternative.
If you notice anything weird in the commits let me know because majority
was done with regex replace.
@tgstation/commit-access Since the .proc/stuff is pretty big change.
Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
|
||
|
|
ad5debaaa1 |
Add investigate_deaths (#71112)
## About The Pull Request Adds INVESTIGATE_DEATHS, an investigate category intended to better show causes of death.   Also makes suicide_act take a `mob/living` as an argument instead of a `mob`, and some minor style improvements since apparently I hate atomicity. ## Why It's Good For The Game Inspired by a mysterious death and dusting. More logging and leads for admins investigating deaths. Also fixes #59028 ## Changelog 🆑 Tattle admin: added investigate deaths to shed some more light on unusual demises, dustings, and gibbings /🆑 Co-authored-by: tattle <article.disaster@gmail.com> |