mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-02-09 07:49:09 +00:00
0a0aa64d8a3aa37b001cf7c40371a2005e0d0bed
410 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
2b60c77e55 |
Yet another mirror batch (#27314)
* A skub-related station trait. Reduced weight of annoyingly frequent neutral traits. (#81388) ## About The Pull Request This PR introduces a new station trait that lets people choose if they want to be pro-skub or anti-skub (or neither, really). It works the same lobby buttons that job-related station traits also use. Depending on whether you chose to be pro or anti skub, you'll spawn in with a special box that contains the (bulky) skub and a pro-skub shirt, or an anti-skub shirt. EDIT: Both also receive a number of stickers to propagate their causes. Kudos to @Fikou for coding the lobby buttons to be accessible by any station trait rather than only job-related ones when you made the Cargorilla station trait. Another thing this PR also halves the exaggerated weight of low-cost traits such as scarves, wallets and glitched PDAs, which I clearly underestimated. ## Why It's Good For The Game We've learned that low-cost, high weight traits are a bit of a design mistake, because they tend to tip the scales toward themselves over and over and over, leveling the diverseness of the feature and therefore making it shallow and boring. Beside, I've been thinking of the popular [skub comic strip](https://pbfcomics.com/comics/skub/) lately. ## Changelog 🆑 add: Added a Skub-related station trait. You can now choose if you want to be pro-skub or anti-skub, complete of shirt and stickers. Please don't shank each other over it. balance: Halved the weight of station traits such as scarves, wallets and glitched PDAs. /🆑 * Fix some slime species subtypes not having burn resistance (#82164) ## About The Pull Request All slime species limb subtypes now inherent from the parent `/jelly` subtype, giving them all their proper burn resistance. ## Changelog 🆑 Melbert fix: Slimepeople and Luminescents are now 50% burn resistant like Stargazers /🆑 * There we go * FIX: Makes Hatsune mi-go a (friendly) gold slime mob (#82251) ## About The Pull Request: The hatsune mi-go is now a friendly gold slime mob. This means it won't try and kill you. It also now doesn't make your ears hurt, and drops a keyboard synth on death (you monster.)  ## Why It's Good For The Game So in making my resprited mi-go and subsequent speedmerge, I failed to realize that there are only 10 possible migo spawnpoints - 5 in snowdin gateway, 3 on ceres whiteship, and 2 on kilo whiteship. This means at most eight can exist on anyround, with a decent likelyhood of 0. This, combined with the fact the hatsune migo is banned from spawning outside of roundstart locations, along with the fact people seem to love the thing, made it feel _too_ rare, even for a shiny mob. You still have to roll the random odds with the life chem or friendly gold slime pools, but you should actually see them outside of two mutually exclusive space ruins and a gateway now. Also, they don't try and kill you now, because it would have been wrong to add a hostile creature to the friendly pool. 🆑 fix: Hatsune mi-go now is a friendly gold slime mob, and doesn't hurt your ears. add: Hatsune mi-go drops a keyboard synth on death (you monster.) /🆑 --------- Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com> * [THE QUIRKENING] Adds customization options to Organ Prosthetic, Junkie, Smoker, and Alcoholic! (#82051) ## About The Pull Request Lets people pick: - The shitty organ they spawn with (still has the restrictions of not being possible to get heart when you are a plasmamen, for example) - Their favorite alcohol to blackout with - Their favorite brand of cigs - Their favorite brand of drugs! A lot of the code was taken from a downstream, made by @Floofies, i already had my own implementation but it was buggy and not nearly as clean, then i was made aware of theirs. ## Why It's Good For The Game Character Customization is good and fun and lets people have more choice in their roleplay. ## Changelog 🆑 add: Prosthetic organ users are now allowed to pick what they want to start with. add: Junkie of all kinds, including smokers and alcoholics, are also able to pick their favorite type. /🆑 --------- Co-authored-by: Jacquerel <hnevard@gmail.com> * [NO GBP] Fixes the "Drop Pod: Syndies" deathmatch modifier. (#82216) ## About The Pull Request I've had false memories of `pick_weight` working with assoc-value-less lists. ## Why It's Good For The Game This will fix an issue with deathmatch modifiers. ## Changelog 🆑 fix: Fixed the "Drop Pod: Syndies" deathmatch modifier. /🆑 * Fix robocontrol access runtime (#82242) ## About The Pull Request  `check_access` expects an item, such as an ID card, to... check access. Not a mob. We can circumvent this entirely by using `allowed`. But this has an averse effect in that `allowed` will only check the user's ID, not the ID in the mod PC. So we need to run a separate check of `check_access` for the computer ID card. ## Changelog 🆑 Melbert fix: Robocontrol should work better. /🆑 --------- Co-authored-by: san7890 <the@san7890.com> * Adds a photobooth (#82105) ## About The Pull Request Adds a photobooth machine to the HoP line which can be used to update your security records photo. It updates the records of the person's name, which means hiding your identity and wearing an ID will let you change other people's photos. If you aren't hiding your identity and are wearing someone else's ID, it won't update at all because it will be unable to find your record. There's 2 variants of this machine, one at the HoP line that's tied behind Law Office access (so Lawyers have an extra thing they can help out with if no one's available, but maybe it would be better behind Library access since Curators are our "photographer" role?), and the Security one that requires Security access. The Security one has a special feature that it adds a height chart behind the player.  This machine is used by either right-clicking on it or by pressing a button, so the HoP can do it remotely from their line (except on Tram where it's in the library), and after a few delays it'll update your records automatically to how you look like. Emagging the machine will remove its access restrictions but every time it updates your photos it will spam camera flashing and blind you. Sprites Open  Closed  Security version on the left, has a red tint on it  Video demonstration (old sprites): https://github.com/tgstation/tgstation/assets/53777086/a2e59f08-2d58-4f5b-b081-e137c7606d35 ## Why It's Good For The Game Current security records has no way to change your photo ID, something that was a feature before it was moved to TGUI. The only alternative is to fully delete your record and make a new one with a photo and the same name, but this shares a major issue with the HTML UI: You're immediately sold out by the fact you have a background. No matter how well you try to cover your tracks, any security officer looking at records will see you are the only photo on the manifest that has a background and even a camera in your hand, which makes it impossible to get away with it unless security essentially takes pity on you. This opens up the ability to fully mask yourself in records, finally. This is also better even for non antagonists because you can now properly update your photos to match what you look like in the event of an appearance change or even just a job change, which makes it a benefit for HoPs who likes to keep records as up-to-date as possible. ## Changelog 🆑 JohnFulpWillard, Twox add: Added a new photobooth machine to the HoP's line. fix: Things checking for access now checks your off hand, too. /🆑 --------- Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com> * Converts slimes to basic mobs (#82176) After months of preparation, and further months of work, I am finally done. Please bear with me, as this is a massive refactor, but I have already atomized everything I could. This is now ready for review. General - The hilbert hotel slimes are now a subtype instead of a varedit. - The `use_mob_ability` subtree now also accepts non cooldown abilities. If set_behaviours is set up properly, mobs won't keep continously triggering it as if it were a 0 second cooldown action. The alternative would have been turning the slime abilities into cooldown abilities. - Wrestling off a slime now signs up to the `COMSIG_ATOM_ATTACK_HAND` signal, instead of being part of attack_hand. - Adds datum/ai_controller/controller as a fourth, optional argument to `/datum/ai_behavior/find_hunt_target/valid_dinner()` to make it possible to access blackboard keys. - Slimes no longer attack windows if they would accidentally move into them (when the conditions are met), since random walk behaviour ignores tiles they can't go in. It was also not worth to keep. Did you know this was the sole override of `ObjBump()`? - Examine was made less snowflaky/bespoke. Also added a new element: `/datum/element/basic_health_examine`, which is a simple bespoke element that prints out a custom message based on how damaged the basic mob it is attached to is. - Slimes only perform knockdown instead of paralysis, as they can attack more often now, and paralysis is not that fun. - LAssailant has been removed due being archaic code. To befriend a slime, you have to spawn a monkey with the slime console, or feed them a sheet of plasma. Simple grabbing the monkey or stuffing them in disposals do not work anymore. Slime console spawned monkeys will have a visible status effect, with pheromones coming off them to make this clearer. Actions - Feeding, reproduction and evolution is no longer a verb. - Slime feeding is no longer an action button. You have to use right click, or as previously, mousedrop. Slimes can always unbuckle from mobs they are attached to. Hunger - Instead randomly changing the starvation and max nutrition values while growing up, evolution costs 200 nutrion. This makes the code more readable, and behaviour more predictable, while still giving the intended time between evolving and splitting. As a result, I could also turn these into defines. - Added a component that handles doing an effect over time while buckled to a mob, until the mob dies or you get unbuckled. - Slimes gained nutrition is no longer randomly multiplied by the damage config value, but rather gain nutrition equal to twice the damage dealt. You'll have to eat one monkey to evolve, just as before. - Slimes do not heal passively. They only heal from eating. It was a rather miniscule value that did not have much effect. - Slimes generate electricity from hunger threshold, instead of the random amount of hunger threshold + 100. Environment - Slimes take 15 damage from cold every second, instead of using a complex formula (that also decreased the damage up to a point?). - Slimes still heal from burn damage, but this is now set on the damage coefficient list. - Slimes instead of getting stunned by the cold, freeze in an ice cube. BZ instead of setting them unconscious, calls the stasis status effect, allowing you to safely stash your hungry slimes for later. They also no longer slow down from the cold, as they are already slowed down by the damage they get. Conversely they no longer get a speed up from a random amount of temperature. I could be convinced to readd this either as part of the basic sensitive component, or a similar one. AI - Removed the attacked_stacks system. Slimes will just perform regular retaliation if you hit them in a harmful manner. - Slimes now use the pet orders component. They will interrupt their feeding when given a command by their master. - Slimes have their own subtrees. I tried to replicate as much as I could from the old code, dividing ancient code artifacts and intentional stuff, so there might be some weirdness. - Slime speech has been almost fully reduced to basic blorbing, as you can not even understand them anymore, and most of them require the slime to loop through all of their surroundings. - Discipline does not have stacks either. Disciplined baby slimes have a chance to clear their attack and hunt blackboard keys. All slimes will stop feeding on the target otherwise. - Since discipline is not a stack, rabidity instead gets removed at a 10% chance per disciplining. - Slimes faces are a bit more randomly picked now. - We want to convert all simple animals to basic mobs. Old slime code was also very strange, and had some systems that have been replicated by components. - Slimes fully paralyzing you is not fun at all. Knockdown should give you a fighting chance when a slime would like to eat you. - Slimes slow down from the heavy damage they get from the cold, so I don't think they need extra slowdown, nor do they need to speed up from warmth, as they are already fast. - Slimes turning into an icecube instead of becoming paralyzed from the cold is more fun for the slimes, as they can break out for a few moments. It is also funny. - Slimes entering proper stasis from BZ is not just a visual indicator of a slime that is safe to approach, but also keeps the slimes's hunger value in check, allowing it to not starve while stopped. They can also look around and blorble, instead of staring at a black screen, if player controlled. - The attack_stack and discipline_stack behaviours were rather overcomplicated, and the xenobio mains I talked with didn't even know it was a thing, so I argue it needed simplification. - The bespoke friendship system of slimes was also too complicated. Slimes slowly gained levels of trust, and at certain levels commands costed friendship, and other levels, they did not. The binary friend/not friend system that everything else in the game uses is much more sensible. - Using right click for feeding is much more sensible than using an action, and then picking someone from a dropdown. - Slime speech was very soulful but not only did it loop through everything in sight, you couldn't even understand it unless you spoke slime. Maybe it can be readded later in a different form. - Slime's passive healing was miniscule, and having them rely on feeding is more interesting. also fixes #81463 🆑 refactor: Slimes are now basic mobs. Please report any strange behaviours! balance: Slimes only stun you for two seconds when they shock you, the rest of the duration is a knockdown. balance: Slimes are not stunned from the cold, but rather, get frozen in a freon icecube. BZ also puts them in complete stasis, instead of making them unconscious. Their speed is likewise unchanged by temperatures. balance: Slimes do not passively heal, they instead rely on feeding. fix: Slimes can use the buckling screen alert to unbuckle and stop feeding, along with clicking on the mob they are riding /🆑 * Oh, right. * Fixes AI verb Jump To Network (#70016) * check for camera loc to not be a silicon * check for z=0 instead * Update code/modules/mob/living/silicon/ai/ai.dm Co-authored-by: ShizCalev <ShizCalev@users.noreply.github.com> * evil touch * redundancy Co-authored-by: ShizCalev <ShizCalev@users.noreply.github.com> * Removes camera assembly structures (#81656) Removes the camera assembly structure middleman between the camera wallframe and camera machine. All its behavior has been instead moved to the camera, and I've tried to keep as much of the behavior the same as before. This also fixes the issue that camera assemblies had where, upon the construction being finished, it would move itself into the newly finished camera machine, therefore taking itself off a wall, therefore deconstructing itself. This resulted in 2 piece of iron being in each camera machine (except roundstart ones), and because camera machines rely on the assembly inside of them for upgrades and such, upgrading didn't work at all. I've also made camera nets use defines (not in map) so it's easier to find a list of them all, and tried to add autodoc comments to nearly every var in camera code. Removes copy paste and spaghetti code between structure and machine camera, thus making it easier to work around with. Closes https://github.com/tgstation/tgstation/issues/79019 🆑 fix: Cameras built in-round can be upgraded again. fix: Deconstructing cameras now more consistently return to you the upgrades inside of the camera. fix: RD's telescreen can now properly see Ordnance cameras again. fix: [Deltastation] Library art gallery no longer has an invisible camera. /🆑 --------- Co-authored-by: san7890 <the@san7890.com> * [MDB Ignore] Combines Cargobus consoles with Dept. Order Consoles, freeing all departments of 1 whole tile of space (#82210) ## About The Pull Request - Departmental orders are now an NTOS app - To download, they require `ACCESS_COMMAND`. - To use, they require one access from the department. - This means you cannot order things from not-your-department unless you have an ID. - When newly downloading the app, it will prompt a head of staff to insert an ID, to determine which department to be linked to. - Changes chat room overlay from the kind that AI uploads use to a new icon. - Minor refactors to department order in general.   ## Why It's Good For The Game These two computers are surprising waste spacers for two things which are tied together. So why not combine them? The lesser used cargobus chat is still there, and departmental orders are front and center. This gives mappers a ton more leeway when mapping departments out and is overall less clutter. ## Changelog 🆑 Melbert qol: Cargobus chat console and Departmental Order console are now combined into one. qol: Mod PCs active on the "chat client" apps no longer look like AI uploads (and now have their own sprite) refactor: Departmental order consoles were refactored a bit, report any oddities. /🆑 * This should cut it. * Was it really just skub? * [No GBP] Fixes slow slime feed (#82284) ## About The Pull Request Slimes were supposed to gain the same amount of nutrition as the damage they dealt while feeding. However, I have accidentally multiplied this again by `seconds_between_ticks` a second time. This meant that locally slimes fed normally, but on the server they got about the third nutrition they were supposed to, probably due to having more ticks per second then my machine. This PR fixes that. Also raised the nutrition gained by slimes by 20%, after careful testing, one monkey wasn't always enough. ## Why It's Good For The Game Fixes #82283 ## Changelog 🆑 fix: Slimes now feed faster, and should only need one monkey to reach their next lifestage. /🆑 * [No GBP] Fixes a slime speed config and ai controller null error in slime nutrition handling (#82330) ## About The Pull Request Someone has linked the runtimes logs of round 226376 to show off a runtime, and I took a look, and found some unrelated runtimes in slime code. - The config file for slime slowdown was still using the simple_animal path. This has been fixed. - Somehow, a grey slime has lost its AI controller, and when it got hungry, it runtimed. For now, a coalesce operator has been put in place. Later, an investigation is needed to figure out where did its AI controller go. ## Why It's Good For The Game Runtimes bad. ## Changelog 🆑 fix: Slime properly load their slowdown values from the config files. fix: Slimes who lose their AI controller will no longer runtime when they get hungry. /🆑 * [No GBP] Slime stasis fixes (#82304) ## About The Pull Request `handle_environment` is never called when the target was in stasis, so slimes stayed in stasis forever. This PR fixes that, albeit in an ugly way. It also makes slimes actually not get hungry while in stasis. ## Why It's Good For The Game Fixes #82300 I also claimed slimes can be safely kept in stasis, but I didn't actually put a stasis check before handle_nutrition. This is fixed now. ## Changelog 🆑 fix: Slimes stop being in stasis when taken out of a BZ filled environment fix: Slimes no longer become hungry while in stasis /🆑 * Add a unit test to check that maploaded simple/basic mobs are in an environment they can survive in. (#82180) I've recently noticed that the maploaded penguins from the snowdin away mission were dying from unsafe atmos/temperature. This sparked the idea of making a (focus only) unit test that would prevent this sort of issues from happening. This PR also implements the usage of the `atmos_requirements` and `body_temp_sensitive` elements for simple animals too, cutting down the copypaste. More unit tests to make sure things are done correctly. 🆑 fix: Made sure that mapped critters (i.e. penguins on the snow cabin away mission) can survive in the environment they're spawned in. /🆑 * This all is going to suck. * A step further * Is this hell over? * I hope it is. * Autosort I suppose * This should cut it for VoidRaptor * And Blueshift * Revert "Autosort I suppose" This reverts commit 9100de67c30514fc25db3ba29df81d1b0ac54e24. * Dear god, the chicken. * I fucking hate mapping * fixes gas analyzers (#82278) ## About The Pull Request #82180 accidentally messed up air analyzers being able to read or send readouts to the chat. ## Why It's Good For The Game air analyzer good ## Changelog 🆑 fix: air analyzers work again /🆑 * [NO GBP]Grind & juice fixes (#82272) - Fixes #82266. Anything that has reagents can be either grinded or juiced - If something doesn't have reagents but has grind results it can still be grinded but not juiced 🆑 fix: anything that has reagents can be either grinded or juiced fix: stuff that does not have reagents but has grind results can still be grinded but not juiced /🆑 * Birdshot Engineering Retrofitting (#81840) Warning: Nanotrasen Confidential Proprietary Information (NCPI) must only be accessed and viewed within a Nanotrasen Virtual Environment (NVE, vNTOS-3). Employees in violation of this information ordnance will have their wages A) garnished, and B) sent to a labour camp up to a maximum of ten (10y) years. Questions regarding policies related to NCPI should be directed towards departmental heads or your sector Central Command Information Authority (CCIA) personnel. ## About The Pull Request Credentials Confirmed The Birdshot Engineering Revitalization Plan (formerly proposal Blindfold, now BERP) is a procurement effort to address growing maintenance liabilities and costs on the Skitter-MDR Class Orbital Station located in the Spinward Stellar Cluster (SSC, Sector 28-7b). Over the course of the previous year, ongoing analysis data has provided vital feedback since the station was once again brought into operation after 17 years of abandonment; and using this data, 4 options were outlined for the Blindfold Proposal. 1) Abandonment - No Cost. Operations on Birdshot will cease. 28-7b operations will be moderately impacted. 2) Procurement - Medium Cost. Replace offending station sections completely with low-cost, working alternatives. Operational gains in 28-7b expected. 3) Do Nothing - No Cost. Moderate long-term impacts to operations in 28-7b. 4) >>>_Was removed_ Option 2 was selected for BERP. Procurement efforts identified 3 solutions and later narrowed it down to 1. Following the selection process architects were brought in to draft up low-impact refits to the designated hulk. 5 selections made it past initial drafting, with 3 ultimately being selected for engineering board review. Penultimately draft proposal 3 was selected for the project and now awaits engineering certification. The draft plan is provided on the next page:  Following board certification, implementation of the plan will be commenced by 28-7b Nanotrasen Enigneering Corps. (NECs). Construction time-frame pending Project Foremans review. ## Why It's Good For The Game Birdshot Engineering is where this whole station began. Back then, things were going to look closer to Birdboat Station, but that became looser and more ill-defined as progress was made on the overall station. While I was satisfied of the decrepit feel of Birdshot Enigneering initially, I knew that at some point, it would require modification to better play into Birdshots strengths. I've had a long laundry list of a roadmap that I've wanted to implement since the station was added, and this was the top item. Tier Zero. Problema Numero Uno. You get the idea. This has been a year of drafting, redrafting, and redrafting everything until it fit Birdshot right. With this, we're nearly there. I see this being the definitive Engineering Department for this station for quite some time to come. However, this is still a draft and some elements are subject to change as I begin to work out some of the more minor kinks in the draft such as pipe locations and transit tubes. Presently Atmospherics is completely rebuilt from the bottom up. There is more space, enough to do projects, but you'll have to tear down some windows and walls to gain it. Nothing ventured, nothing gained. You also have most of the gas distro line outside. I'm a firm believer in enabling whatever antics ANY lunatic may have. Atmos techs can rest assured that outside lines are completely reconfigurable (and powered) enabling some... unique project prospects. You also gained an inside HFR and Spare burn chamber. Enjoy. The Engineering Common Areas are now inside the department proper instead of the satellite treatment in the original implementation. Security gets an actual outpost and engineers now have a proper office to file engineering documentation. They say that office colleagues can form tight bonds so let's see whose is stronger: Purples or Yellows? The Supermatter Engine is more of an upgrade over the previous model (Leaky SM is here to stay so deal with it). The room is larger with less rock, allowing some manner of greater customization, but I believe engineers will be more than happy to find that they now have a Burn Chamber of their own. I have zero clue of what they'll do with it, but I think any enterprising CE will be able to create something that even god should fear. Finally we have maint improvements. Nothing really to see here though maybe there's the beginning of something for the future if you care to speculate. I couldn't really keep the meandering maint of the previous rock, so instead we now have some pseudo dead-ends. It's all connected by transit tubes to the north (not shown) so you can slowly get around if you will it. Of course there's plenty of cut-throughs, not-so-finished sections, and opportunity for those who need it. Caution to the blind, this whole rock is spicy. Overall I'm happy with this and want to open it up in Draft Mode for initial thoughts. I have a rough timeline on finishing this that stretches out to the weekend, so the earlier comments are, the more likely I'll be able to MAYBE do something about it. Thanks for the patience and hopefully this is a doozy of an update for all our players. Previous Engineering Provided for Point of Reference:  closes #75590 ## Changelog 🆑 qol: Wholesale Revamp of Birdshots Engineering Department fix: Some Birdshot Amtospherics Concerns fix: Some Birdshot Engine Concerns /🆑 * Bumps `dependencies.sh` to 515.1633 Stable (#82138) ## About The Pull Request Two reasons for this. 1. It's the stable branch, so let's move it up. This PR will detect any issues that we might have with the latest 515.1633 as far as the codebase is concerned (the servers have been running 1633 for at least a week now). 2. ~~I'm fucking sick of seeing the Lua Scripting Notice in CI even though it was fixed a few days ago in #82074 ( |
||
|
|
59d74624b1 |
Upstream power stuff combined and shit (#27284)
* Converts arbitrary energy units to the joule. Fixes conservation of energy issues relating to charging cells. (#81579) Removes all arbitrary energy and power units in the codebase. Everything is replaced with the joule and watt, with 1 = 1 joule, or 1 watt if you are going to multiply by time. This is a visible change, where all arbitrary energy units you see in the game will get proper prefixed units of energy. With power cells being converted to the joule, charging one joule of a power cell will require one joule of energy. The grid will now store energy, instead of power. When an energy usage is described as using the watt, a power to energy conversion based on the relevant subsystem's timing (usually multiplying by seconds_per_tick or applying power_to_energy()) is needed before adding or removing from the grid. Power usages that are described as the watt is really anything you would scale by time before applying the load. If it's described as a joule, no time conversion is needed. Players will still read the grid as power, having no visible change. Machines that dynamically use power with the use_power() proc will directly drain from the grid (and apc cell if there isn't enough) instead of just tallying it up on the dynamic power usages for the area. This should be more robust at conserving energy as the surplus is updated on the go, preventing charging cells from nothing. APCs no longer consume power for the dynamic power usage channels. APCs will consume power for static power usages. Because static power usages are added up without checking surplus, static power consumption will be applied before any machine processes. This will give a more truthful surplus for dynamic power consumers. APCs will display how much power it is using for charging the cell. APC cell charging applies power in its own channel, which gets added up to the total. This will prevent invisible power usage you see when looking at the power monitoring console. After testing in MetaStation, I found roundstart power consumption to be around 406kW after all APCs get fully charged. During the roundstart APC charge rush, the power consumption can get as high as over 2MW (up to 25kW per roundstart APC charging) as long as there's that much available. Because of the absurd potential power consumption of charging APCs near roundstart, I have changed how APCs decide to charge. APCs will now charge only after all other machines have processed in the machines processing subsystem. This will make sure APC charging won't disrupt machines taking from the grid, and should stop APCs getting their power drained due to others demanding too much power while charging. I have removed the delays for APC charging too, so they start charging immediately whenever there's excess power. It also stops them turning red when a small amount of cell gets drained (airlocks opening and shit during APC charge rush), as they immediately become fully charged (unless too much energy got drained somehow) before changing icon. Engineering SMES now start at 100% charge instead of 75%. I noticed cells were draining earlier than usual after these changes, so I am making them start maxed to try and combat that. These changes will fix all conservation of energy issues relating to charging powercells. Closes #73438 Closes #75789 Closes #80634 Closes #82031 Makes it much easier to interface with the power system in the codebase. It's more intuitive. Removes a bunch of conservation of energy issues, making energy and power much more meaningful. It will help the simulation remain immersive as players won't encounter energy duplication so easily. Arbitrary energy units getting replaced with the joule will also tell people more meaningful information when reading it. APC charging will feel more snappy. 🆑 fix: Fixes conservation of energy issues relating to charging powercells. qol: APCs will display how much power they are using to charge their cell. This is accounted for in the power monitoring console. qol: All arbitrary power cell energy units you see are replaced with prefixed joules. balance: As a consequence of the conservation of energy issues getting fixed, the power consumption for charging cells is now very significant. balance: APCs only use surplus power from the grid after every machine processes when charging, preventing APCs from causing others to discharge while charging. balance: Engineering SMES start at max charge to combat the increased energy loss due to conservation of energy fixes. /🆑 --------- Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com> Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com> * Corrects Suit Storage Unit charge rate (#82192) ## About The Pull Request Adjusts SSU charge rate according to the new conversion ratio. Betcha didn't know SSUs recharge suit and MOD cells? This number is actually supposed to be equal to the rate a recharger station does it. I don't know if we have some macro for it. ## Changelog 🆑 Melbert fix: Fixed Suit Storage Unit cell charging rate /🆑 * Corrects EVA thermal regulator cell cost (#82195) ## About The Pull Request Another unit not converted to watts / joules ## Changelog 🆑 Melbert fix: Fixed space suit thermal regulators cell usage. /🆑 * Fixing cell power usage (Part 1) (#82197) ## About The Pull Request Yeah i am not about to create 30 different PR's to address 1 issue at a time. The changes are small enough to be grouped together in bulk. This fixes the following issues specified in #82196 - Borg & exosuit RCD (Fixes #82193) - Motorized wheelchair - Canister shielding - Electrolyser - Potato cell - Space heater - Microwave ## Changelog 🆑 fix: Fixed cell energy usage for a bunch of stuff(Part 1). See PR 82197 for details /🆑 --------- Co-authored-by: Pickle-Coding <58013024+Pickle-Coding@users.noreply.github.com> * Fixing cell power usage (Part 2) (#82198) ## About The Pull Request Continuation of #82197. Fixes these issues in #82196 - Cyborg self repair - Cyborg lollipop dispenser - Mauna mug - Plasma cutter (Initial charge not the number of laser shots so partial fix) ## Changelog 🆑 fix: Fixed more energy usages for cells(Part 2). See PR 82198 for details /🆑 --------- Co-authored-by: Pickle-Coding <58013024+Pickle-Coding@users.noreply.github.com> * Fixing cell power usage (Part 3) (#82204) ## About The Pull Request Continuation of #82198 Fixes these issues in #82196 - Borg hypo spray - Borg projectile dampen - Borg chameleon - Firelance - MODlink scryer - Emergency light usage ## Changelog 🆑 fix: Fixed more energy usages for cells(Part 3). See PR 82204 for details /🆑 --------- Co-authored-by: Pickle-Coding <58013024+Pickle-Coding@users.noreply.github.com> * [NO GBP]Fixes static power usage not always drawing the remaining energy of an APC cell. (#82205) ## About The Pull Request Makes APC static power draw consume the remaining energy of the cell if there's not enough energy. ## Why It's Good For The Game Prevents a niche issue where an area composed entirely of static power users with no dynamic users from running forever with no power supply. ## Changelog 🆑 fix: Fixes static power usage from being able to not draw power. /🆑 * Fixes recharge stations charge rates (#82191) ## About The Pull Request - Fixes #82190 Have to now use the assigned constants and not magic number `10000`. Also stuff will take the exact charge needed without any wastage. ## Changelog 🆑 fix: recharge stations draw the same amount of power as before but directly from grid(without using apc cell power) and won't waste any excess power /🆑 --------- Co-authored-by: san7890 <the@san7890.com> * Fixes space heater power usage (#82208) ## About The Pull Request Related to https://github.com/tgstation/tgstation/issues/82196 fixes the space heater power cell usage relating to power per tile heated. Space heater calculates the amount of power required to heat a tile, but only uses power at the end of the processing loop. Fixes so the power consumption matches the calculated usage per tile. Reverts changes to space heater power efficiency in https://github.com/tgstation/tgstation/pull/82197 that causes the heater to instantly drain the cell. Fixes https://github.com/tgstation/tgstation/issues/82228 ## Changelog 🆑 LT3 fix: Fixes Schrödinger's space heater, where a space heater both consumes a power cell instantly while also not consuming power when heating adjacent tiles /🆑 * General maintenance for reagent grinder (#82161) ## About The Pull Request **1. Qol** - Adds examines & screentips for screwdriver, crowbar & wrench acts. - Adds examines & screentips for inserting, replacing & removing beaker, Also for inserting items from bags or directly - Adds an off icon overlay for when the reagent grinder is either screwed open or loses power, **2. Code Improvements** - Replaced `attackby()` with `item_interaction()` so we can end the attack chain early for non combat operations like inserting beakers/ ingredients for grinding etc. - Removed custom shake animations & replaced it with the global `Shake()` proc cause it did the same thing - Removed constructed version of reagent grinder. We instead just check `mapload` to see if we need the beaker to be created or not for round start reagent grinders - Grinding & Juicing use the same `operate_for()` rather than having seperate procs for each operation - Removed trait `TRAIT_MAY_CONTAIN_BLENDED_DUST`. Why do we have this? Its just used to change the grinder description to warn it may contain dust. It's a waste. **3. Fixes** - You cannot insert hologram items into the grinder. Rather than destroying that item & making it vanish you simply won't be allowed to put it inside the grinder so you can save that item - You can hit the grinder with items like screwdriver, wrench, crowbar, beaker & even with stuff you would normally put in the grinder when in combat mode - Adds `can_interact()` checks for using the UI & other stuff - Fixes #46356. All items of type `obj/item/grown` can be put from any bag into the grinder - The item "and its contents" are now grinded/juiced recursively to get all the reagents it has to offer just like a real grinder would - An AI/Human with AI access examining the reagent grinder now actually works. **4. Refactors** - The grinder now measures its available capacity based on the "total weight" of all items present & not its number. This is more realistic because the grinder has limited space inside & so inserting huge items should have greater impact rather than deciding on an arbitrary number like 10(The grinder having the capacity for 10 items of any size inside its small compartment makes no sense). Examines are displayed to show how much capacity of the grinder has been filled. Upgrading the grinder with better matter bins will allow for higher storage capacities. - Total power consumed is measured based on the duration & weight of all items grinded cause you know its realistic. 🆑 qol: adds examines & screentips for tool acts & other operations for reagent grinder qol: adds an off icon for when the grinder panel is open/not powered code: auto docs vars & procs. Shared common proc for grinding or juicing code: removed trait for blended dust, changed some item interactions to end the attack chain early & save time fix: no inserting hologram items into the reagent grinder fix: you can hit the reagent grinder tools like screwdriver, wrench, crowbar & even beakers/ingredients etc when in combat mode fix; adds sanity checks for when & how mobs interact with the reagent grinder fix: examining a reagent grinder by an AI/Human with AI access now actually works. fix: you can insert Nova flowers & other food items from any bag type fix: reagent grinder now grinds all the contents of an item recursively to produce maximum reagents like a real grinder would refactor: reagent grinder now measures available capacity to store items as total weight of stored items & not number. Capacity can be increased with upgraded matter bin refactor: reagent grinder power usage is now a function of duration & total weight of items blended, meaining blending more number of items/larger items will consume more power refactor: reagent grinder code has been optimized overall. Report bugs on github /🆑 --------- Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk> * Suit Storage Units / Inducers can charge MODsuits without necessitating them be screwdrivered opened (#82194) ## About The Pull Request So MODsuits do this thing here with `get_cell` in that they don't return anything when they're closed  And I... can't tell why they do this. I looked through every use of `get_cell` and the only things affected by this are A. Suit Storage Units, which I believe have always been intended to charge MODsuits? and B. Inducers So I removed the `open` check. Allowing both Inducers and Suit Storage Units to charge mods without needing you screwdriver their panel open first. I also took the opportunity to allow SSUs to charge multiple items at once (divvying charge accross all items) ## Why It's Good For The Game I asked Fikou and they said it was "probably not" intended that you need to screwdriver them open so yeah. I think I remember charging my MODs during the original test merges years back but I can't remember if I opened the suit first when I did or not. Either way, it's not super intuitive. Though it's already not very intuitive that SSUs charge things. ## Changelog 🆑 Melbert qol: Suit Storage Units charge MODsuits while their cell panel is closed or open, rather than only when screwed open qol: Inducers can charge MODsuits while their cell panel is closed or open, rather than only when screwed open qol: Suit Storage Units will charge all items within simultaneously (if possible) /🆑 --------- Co-authored-by: san7890 <the@san7890.com> * Fixes modular computer boot-up (#82254) ## About The Pull Request Fixes a bug where modular computers (specifically PDAs) will fail to start up if there is zero required application power draw. PDA will now consume base active power usage during startup. Related https://github.com/tgstation/tgstation/issues/82196 Fixes https://github.com/tgstation/tgstation/issues/82245 Fixes https://github.com/tgstation/tgstation/issues/82229 ## Changelog 🆑 LT3 fix: Fixed modular computers failing to boot up using cell power (eg: contractor tablet) /🆑 * Fixing cell power usage (Part 4) (#82227) ## About The Pull Request Continuation of #82204 Fixes these issues in #82196 - Cyborg Electroadaptive Pseudocircuit - Defib EMP - Cell EMP - `/datum/action/cooldown/mob_cooldown/charge_apc` stuff - Mecha movement, melee, light ,weapon & tool energy drains - Ninja drain ## Changelog 🆑 fix: Fixed more energy usages for cells(Part 4). See PR 82227 for details /🆑 --------- Co-authored-by: Pickle-Coding <58013024+Pickle-Coding@users.noreply.github.com> * Fixing cell power usage (Part 5) (#82296) ## About The Pull Request Continuation of #82227 Fixes these issues in https://github.com/tgstation/tgstation/issues/82196 and others that weren't noticed. - Batton emp protection - Cyborg stun arm - Cyborg energy sword - Cyborg hug attack - Mechanical god religious sect charge check - Mecha fixes - Phasing energy drain - Short circuit energy drain - Durand shield damage energy drain - Plasma engine recharge rate - Mechbay recharge power rate - Recharge station charge rate Stuff that was already working & didn't require fixing. - Plasma cutter energy shots - Botany cell charging ## Changelog 🆑 fix: Fixed cell energy usage for a bunch of stuff(Part 5). See PR 82296 for details /🆑 --------- Co-authored-by: Pickle-Coding <58013024+Pickle-Coding@users.noreply.github.com> * Ties power limit of anchored circuits to 20 * standard cell charge to make it consistent with power changes. (#82287) ## About The Pull Request It just makes the power requirement 20 * standard cell charge instead of 20000 ## Why It's Good For The Game This is too restrictive to make anything with. https://github.com/tgstation/tgstation/assets/62126254/e39dcf27-8793-42b0-84a0-7f747e95efcc ## Changelog 🆑 fix: anchored circuits no longer blow up after 2 components are used. /🆑 --------- Co-authored-by: Pickle-Coding <58013024+Pickle-Coding@users.noreply.github.com> * Space heater power and heating tweaks (#82344) ## About The Pull Request - Fixes #82342 - Space heater computes total power for heating adjacent turfs and uses cell energy once rather multiple times per turf - Improvised space heater actually works & uses beaker heat capacity and not a constant of 200 for heating beaker contents ## Changelog 🆑 SyncIt21,Pickle-Coding fix: space heater(including improvised) turns off when cell is drained fix: optimized power usage for both improvised and main space heater. Improvised heater now works & uses beaker heat capacity /🆑 * Improved lathe error message (#82260) ## About The Pull Request Improves the auto/protolathe low charge error message. Instead of simply saying low power, it will tell you how long until it has enough charge to print.  ## Why It's Good For The Game Less mashing the lathe over and over with no idea how much APC charge it needs to start printing again ## Changelog 🆑 LT3 code: APCs can now calculate time-to-charge qol: Overloaded lathes will now tell you the wait time until they're ready to print again /🆑 --------- Co-authored-by: san7890 <the@san7890.com> * Fixes issues with multitools on power objects (#82389) ## About The Pull Request So at some point the power object's `multitool_act(...)` proc was set to _always_ block, for what I could find to be no discernable reason. ### The Main Thing |
||
|
|
031e483e4d |
[MIRROR] New station trait job: Human AI (#26823)
* New station trait job: Human AI (#81681) This PR does many things, I'll try to explain the basic/background stuff to the main thing first: 1. Adds a new remote that allows a human to function like an AI. It controls a fly that will fly around the station slowly, and when it reaches a machine then the person can interact with it as if they were an AI. This required changing a lot of silicon/AI checks with one that also checks for this remote, and some messing with shared ui state. 2. Moves req_access from the obj and bot to ``/atom/movable`` which lets it be shared between the two, no more copy-paste and one side lacking features/checks/signals the other has. 3. Adds a check for AI config for AI-related station traits, which was lacking prior Now for the good part... Adds a new station trait that replaces the AI with a Human. This person is equipped with an AI headset (including Binary), an advanced camera console, an omni door wand, the machine controller, and their laws. They are immune to the SAT's turrets (even if set to target borgs) and are slow outside of the SAT, mimicing the actions of the AI. They interact with the world through their advanced camera console, which allows them to do most AI stuff needed, and the holopad they can connect to without having to ring first (like Command can). They are given a paper with the laws they must follow, but since they are human they are able to bend it. Cyborgs that run the default lawset are "slaved" to them via an unremovable law 0, so the Human AI can bend the laws if they really need to (for their own survival n such), and make the cyborgs obey their commands above laws, but in general this shouldn't be a frequent occurrence. This does take into account the unique AI trait, so it's not guaranteed Asimov. When this station trait rolls, all Intellicards, AI uploads, and AI core boards are destroyed and are unresearchable. They can be spawned by admins in-game if necessary. Maybe in the future we can also exclude Oldstation from this but I haven't really decided. Extra perks: Human AI spawns with a Robotic voicebox (unless they are a body purist) and teleport blocking implant, so they can't use teleporters to bypass their on-station slowdown. They also have an infinite laser pointer that can be used to blind through their camera console. This is unfortunately nerfed from the recent borg balance PR that removed its stun. This was meant to be the alternative to no longer being able to permanently lock borgs down like AIs can (or more than one, for that matter). They aren't affected by Roburgers, Acid, and Fuel's toxicity. Bots salute them like they do Beepsky (which is now a trait) They spawn with SyndEye to replace the AI's tracking ability They do not have a bank account The machine remote has a little fly in it that flies to the machines it is pointed to, working as the arms and legs of the Human AI. It scans the machine and punches in the action the AI does, and is how the AI accesses basically anything. This fly slowly moves from one machine to the next, and can be recalled with Alt Click. It works on machines and bots. https://github.com/tgstation/tgstation/assets/53777086/e16509f8-8bed-42b5-9fbf-7e37165a11e8 I've seen a funny screenshot one day of a person replacing the AI by using a bunch of door remotes, camera console, crew monitoring console, and a few other things. I've been thinking about that for a few years and really wanted to make it official if not easier to make possible, because it is an incredibly funny interaction. This makes it a reality, and while they aren't as powerful as regular AIs, I think it makes for better and funnier in-game moments. With the same weight as Cargorilla (1), I hope this wouldn't be rolling too often and ruin rounds, but instead show off the different capabilities that Humans and AIs can do, to do the job of an AI. You win some you lose some. 🆑 JohnFulpWillard, Tattax add: Adds a new station trait job: The Human AI. /🆑 --------- Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com> * Oh right * so this works * whoooops --------- Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com> Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com> Co-authored-by: Useroth <37159550+Useroth@users.noreply.github.com> Co-authored-by: Pinta <68373373+softcerv@users.noreply.github.com> |
||
|
|
f9bbede521 |
[MIRROR] Fix server hang in budgetordering (#26837)
* Fix server hang in budgetordering (#81950) fixes #81949 usr is almost always null here so this will almost always runtime the inner proc which triggers a large enough amount of error logging to soft lock the server since this happens in a proc called by a loop in a proc called multiple times a second by a high priority mc subsystem. Atm opening the budgetordering computer has the risk of causing high enough time dilation to disrupt or kill the round so this should be fast tracked to a merge * Fix server hang in budgetordering --------- Co-authored-by: Kyle Spier-Swenson <kyleshome@gmail.com> |
||
|
|
fce716ec7c |
[MIRROR] Fix access management program not updating on ID authentication (#26803)
* Fix access management program not updating on ID authentication (#81845) ## About The Pull Request While doing my other ID/manifest-related prs, I noticed that the access management program doesn't update properly when you authenticate, causing it to not show which templates you can apply until you manually refresh the UI (close&open, yadayada). This seemed to be because it calls `update_static_data(user)` on the program itself, which attempts to find a UI attached to the program for that user which it then can't find. Calling such on the *computer* lets it actually find and update the UI. We then decide to replace it with `update_static_data_for_all_viewers()` as multiple people could be looking at the consoles in which this happens most commonly. ## Why It's Good For The Game It was getting *really* annoying, this fixes that. ## Changelog 🆑 fix: Plexagon Access Management actually updates the shown template list on authentication, avoiding needing to refresh/reopen/somesuch the program manually. /🆑 * Fix access management program not updating on ID authentication --------- Co-authored-by: _0Steven <42909981+00-Steven@users.noreply.github.com> |
||
|
|
6221130798 |
[MIRROR] Arcargo: Vendor Cargo and Vending Machine Update (#26782)
* Arcargo: Vendor Cargo and Vending Machine Update (#81582) Another one. ## About The Pull Request This pull request originally had a design doc that @ Fikou and I worked on, but that was never really polished up for publishing quality so I'll forgo it for now and be as descript as possible here. ### Core changes - This pull request adds a new NTOS app to the game, the restock tracker. The restock tracker shows a comprehensive list of vending machines across the station, as long as there is a need for that vending machine to get restocked. - This has also been pre-installed into the cargo data disks. (`/obj/item/computer_disk/quartermaster`) - Vending machines now store a total of 20% of the cost of any purchase made within themselves into a small pool of cash. This only applies to premium and normal purchases, not to contraband, as they're technically not sanctioned by the company. - The restock tracker app will also track which vending machines have the most credits stored internally inside them. - By refilling a vending machine, the stored credits within are paid out to any crewmember who goes and restocks the station, while also paying out *half that amount to the cargo budget*, serving as a basic but otherwise easy tertiary money making method on the same level of complexity as doing bounties, with the added benefit of actually helping to assist the station for jobs like... assistant.  ### Break Stuff - Anyway, when you try and smash a vending machine open with a melee weapon of choice, it can now pay out 50 credits at a time as a way to make money at zero risk to yourself. - ~~Except for the horrible risk to yourself.~~  ### Cargo Specific Changes - Restock units may now be sold for a small profit as well, to incentivize cargo to keep the station stocked further. - The `STATION_TRAIT_VENDING_SHORTAGE` trait will now add a small amount of existing credits into the vending machines on station, to incentivize cargo to fix the issue during the round and not just push for an early shuttle call. Or, more accurately, provide the crew with a money making scheme to engage better with the station trait as it stands. ### This also refactors behavior on vending machines - This pull request also finally changes it so that vending machines now use the payment component, which as a consequence allows for the following improvements: * Vending machines may now pull from physical credits on your person, not just requiring you to have money on your ID card. * Vending machines may also use credits being pulled by the player interacting with the vending machine, allowing for handless mobs to be able to purchase items from a vending machine. * Finally makes the "use-for-everything buying things component" used by the most utilized component of the in-game economy, to reduce the quantity of unique implementations of purchasing things in the code. - Existing vending specific checks are retained on before handing off behavior to the payment component, for behavior such as purchasing cigarettes/alcohol under the age of 18/21. Notes: - Vending machines will lose their internal credits stored when deconstructed, as a security measure. - Vending machines will now show the total amount of credits that a mob has on their person, combining physical credits as well as credits held in their ID card to accurately portray their total wealth across the mob in question. ## Why It's Good For The Game First off, this is largely an excuse to move vending machine behavior over to the payment component for the purposes to less code copy-paste, and to try and make the implementation more wide-spread. Second, this implements a new tertiary economy method to the game, in the same design space as bounties, which serve as common methods of making money without necessarily being specific to their job in question, with the primary goal of providing small amounts of work to the crew and a basic interaction with the economy system. Additionally, it gives cargo more things they can do to assist the station, and a way to know which parts of the station need support as a result. It improves the interaction between the vending shortage station trait as well, making it a challenge with depth as opposed to a more oppressive round change that players would rather reroll the game over. Additionally, this makes a few price tweaks to vending restock modules as well to help incentivize buying some of the more minor restock kits, and a few select bumps on restocks that cover wide enough territory to necessitate fewer restocks. * Arcargo: Vendor Cargo and Vending Machine Update --------- Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com> |
||
|
|
32ca7f5816 |
[MIRROR] virtual pets (#26692)
Virtual pets Co-authored-by: Useroth <37159550+Useroth@users.noreply.github.com> |
||
|
|
290a97d05e |
[MIRROR] You can do more things while floored (#26643)
* You can do more things while floored (#81641) ## About The Pull Request While on the floor, you can: - Use the UIs of Atmos machinery (except thermomachine and bluespace gas vendor), Holopads, Crayons (spray cans too), radios, and Disposal bins - Close extinguisher cabinets with Right-Click - Click and drag yourself onto a photocopier to climb onto it. I also changed all instances of ``ui_status`` to have all the args it's being passed, I was messing with it a bit but it's gonna be for a later PR. ## Why It's Good For The Game It's an extra layer of harmless realism, also nice QoL for people who do not have functional legs and do not have a wheelchair. ## Changelog 🆑 qol: You can use atmos machines, holopads, crayons, spray cans, and disposal bins while floored. fix: You can close extinguisher cabinets while floored. fix: You can climb onto a photocopier from the floor. /🆑 * You can do more things while floored --------- Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com> |
||
|
|
2c83952d3b |
[MIRROR] MuleBOT UI/ID Fixes (#26460)
MuleBOT UI/ID Fixes (#81380) ## About The Pull Request - Fixes https://github.com/tgstation/tgstation/issues/81363 - Fixes unable to set MuleBOT home from control panel - Fixes missing MuleBOT ID from Botkeeper PDA app - Adds input validation for changing MuleBOT ID from control panel - Removes hardcoding of MuleBOT IDs and home destinations - MuleBOT will now automatically set its home to the navigation beacon on its initialization turf ## Changelog 🆑 LT3 fix: MULEbot will correctly display its loaded cargo on BotKeeper fix: MULEbot home beacon can be set from control panel code: MULEbot home location is automatically set on init /🆑 Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com> Co-authored-by: Useroth <37159550+Useroth@users.noreply.github.com> |
||
|
|
3c183c42e8 |
Status light overlays maintenance (#26502)
* airlock code cleanup * airlock overlays * support for epsilon * Update status_display.dmi * fire * firedoor mutable/emissive * Update airlock.dm * fix shuttle/titanium * Update airlock.dm * Update airlock.dm * other missing airlock types * Update metal_overlays.dmi * Update metal_overlays.dmi |
||
|
|
568e36e1c0 |
[MIRROR] Fix lifeline not respecting suit sensors (#26547)
* Fix lifeline not respecting suit sensors (#81517) ## About The Pull Request - Lifeline app now respect suits sensors again. - The proc always `return .`'d if the target mob was not on suit sensors, so if `.` was `RADAR_TRACKABLE`, well, it would rack sensorless mobs. - Cleaned up a bit of trackable. - Use the `is_valid_z_level` helper. - Respect all possible returns for a signal. ## Changelog 🆑 Melbert fix: Lifeline can no longer track mobs with suit sensors off /🆑 * Fix lifeline not respecting suit sensors --------- Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com> |
||
|
|
9a7e74d699 |
[MIRROR] Makes AI tracking more snappy, improves API (AI movement change) (#26508)
* Makes AI tracking more snappy, improves API (AI movement change) (#81401) ## About The Pull Request Ok so tracking (from the datum) worked, but when used to follow someone it had a noticable delay from the datum needing to wait for process to fire to do its work This would be an expensive proc to run constantly, but we don't really have to (there are not that many ai eyes in the world). So rather then only processing to keep step, let's track the target mob by its movement, and then fall back on a process loop to handle rechecking in case of camera memes. This does technically mean you won't "break" the track if the cameras go out until the tracked mob moves, but I think that's a reasonable price to pay for more responsive movement. I think I could make our current system work with it too, though it would be a bit more wasteful. John if you have opinions just lay into me. I've also renamed/pulled apart the helper procs for the trackable datum, with the hope of making how they are used more understandable at a glance Oh and rather then holding a weakref since I needed MOVED anyway I just use QDELETING to free the ref if the mob goes away ### Edit: #### Glide size touchups Implements glide size mirroring so we move at the same speed as our target Also moves the existing signal to send to the trackable datum itself, as appears intended from the doc comment #### AI behavior changes Rewrites ai movement to be less dumb OK so 2 things here. One is a behavior change, the other is a visual QOL thing. The way ai movement works is we move graduated "steps". Either moving 1, 2, or 3 steps per tick. We do this by, so long as input is held down, incrementing a number called "sprint" Currently it'll go from 10 to 50 (formula effectively looks like steps = (sprint / 20) + 1)) Anyway, this is... not fine but ok, but the way we handle deceleration is ass IMO. It's literally just wait 0.5 seconds and sprint resets. I think this feels crummy, so instead I've made it decay depending on how long you go between inputs, at 7x greater rate then it increases. That's the behavior change. Visual change is a lot easier. Ais were not gliding properly. They assumed they had 4 ticks to move a tile, rather then 1. This meant they'd jump around constantly, to catch up to where we expect them to be. I've fixed this by giving them 1 tick instead. Should feel a lot better ## Why It's Good For The Game Snappier response times, cleaner code ## Changelog 🆑 add: AI's acceleration now smoothly decays, instead of just falling back down to 0 after 0.5 seconds fix: AI's standard movement (non accelerated) is smooth now, instead of constantly jumping around fix: AIs will now follow their targets more closely, shouldn't have any issues with them lagging behind anymore /🆑 * Makes AI tracking more snappy, improves API (AI movement change) --------- Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com> |
||
|
|
70a62f112d |
[MIRROR] Fix some copy paste UI errors (#26404)
* Fix some copy paste UI errors (#81325) ## About The Pull Request One day we will have opendream lint to catch this. (WYCI I guess) * Fix some copy paste UI errors --------- Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com> |
||
|
|
5fde8bd1ad |
[MIRROR] Makes point_types not be dumb (#26376)
* Makes point_types not be dumb (#81202) ## About The Pull Request We currently have a list of point types that is meant to be list(``DEFINE`` = name) but it's completely useless since the define is just the name anyways. It's not used for anything, it has no purpose to be this way. It seems more like a holdover from when there were multiple types of research points (it was made for that purpose, even before nanite points were a thing) but even for that, it serves no purpose. I reworked it now to be the abbreviated name of the research point type, de-hardcoding techwebs a little bit and removing the need for downstreams to edit the techweb UI. ## Why It's Good For The Game This at least looks better and makes more sense at people just looking over it. ## Changelog No player-facing changes. * Makes point_types not be dumb --------- Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com> |
||
|
|
d870f9ff15 |
[MIRROR] Fixes copy pasted arg in robocontrol app (#26320)
* Fixes copy pasted arg in robocontrol app (#81199) ## About The Pull Request Classic copy paste error Open dream lint would catch this I think ## Changelog 🆑 Melbert fix: Robocontrol app maybe works better now. /🆑 * Fixes copy pasted arg in robocontrol app --------- Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com> |
||
|
|
548983b6ed |
[MIRROR] Small oversight with the wirecarp circuit (#26265)
* Small oversight with the wirecarp circuit (#81107) ## About The Pull Request Thanks Elli-Skala for pointing it out. ## Why It's Good For The Game The port is meant for modular computers and station relays, both of which are objects. ## Changelog N/A, it's a very small thing. * Small oversight with the wirecarp circuit --------- Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com> |
||
|
|
f768fab6c9 |
[MIRROR] [NO GBP] Fixing issues with modular computer and circuits. (#26247)
* [NO GBP] Fixing issues with modular computer and circuits. (#81076) ## About The Pull Request It turns out the messenger circuit wasn't working as intended, because list components tend to convert datum keys into weakrefs, creating incoherence between composite datum/atom and simple datum/atom datatypes, which at least just spares us from the headache of clearing the refs on del from lists too. So, taking the shortest path, I decided to adapt the messenger to the weak ref usage. Another thing, instead of refusing altogether to send message that trigger the pda filter regexes, the messenger circuit will instead replace the matches with grawlix, since we have no way to inform whoever's responsible for said message about the filters in an orthodox way. Beside that, I've noticed several of the circuits from my PR were lacking trigger outputs or similar when needed, pretty making them only as half as functional, at least to a noob like me. And another small issue with missing ports from the status display circuit. One more suggestion from moocow is to add a cooldown to the ringtone trigger for the messenger circuit, because he said it's pretty spammy and some admins are fickle. ## Why It's Good For The Game Bugfixing and improvements. ## Changelog 🆑 fix: Fixed the messenger circuit not sending messages. fix: Added several ports to modpc circuits that were missing or needing them. fix: Fixes ever-expanding ports whenever circuits are re-inserted in a modular computer. /🆑 * [NO GBP] Fixing issues with modular computer and circuits. --------- Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com> |
||
|
|
fdcfabefd8 |
[MIRROR] Integrated circuits for modular computers (#26196)
Integrated circuits for modular computers (#80530) This PR integrates circuits for modular computers and a good bits of their programs. The peculiarity here is that modular computers have no fixed amount of unremovable components (except the base one with just a couple ports for now), instead, they're added and removed along with programs. With a few exceptions (such as the messenger and signaler), for these program circuits to work, their associated program has to be either open or in the background. For a reason or another, not all programs have a circuit associated to them, still, however the programs with a circuit are still a handful. They are: - Nanotrasen Pay System - Notepad - SiliConnect - WireCarp - MODsuit Control - Spectre Meter - Direct Messenger* - LifeConnect - Custodial Locator - Fission360 - Camera - Status Display - SignalCommander *By the by, sending messages has a cooldown, so it shouldn't be as spammy. If it turns out to not be enough, I can make it so messages from circuit will be ignored by other messenger circuits. The PR is no longer WIP. I believe modular computers could make for some interesting setups with circuits, since they're fairly flexible and stocked with features unlike many other appliances, therefore also a speck more abusable, though limits, cooldowns, logging and sanitization have been implemented to keep it in check. 🆑 add: Modular Computers now support integrated circuits. What can be done with them depends on the programs installed and whether they're running (open or background). add: Modular Consoles (the machinery) now have a small backup cell they draw power from if the power goes out. /🆑 Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com> |
||
|
|
93db4faca4 |
[Ready][Non-Modular] (but it reverts back to TG Code) Removes a check in Modular Computers, Use bitflags. (#26024)
Removes a check in Modular Computers, Use bitflags. |
||
|
|
22e19e7d29 |
[MIRROR] Fixes the contractor program being on the syndicate store [MDB IGNORE] (#26086)
* Fixes the contractor program being on the syndicate store (#80888) ## About The Pull Request Syndicate contractor program can no longer be bought from an emagged computer. ## Why It's Good For The Game This is most definitely a bug. The pull request that introduced this bug can be found at #80069 Description or the changelog does not mention that the contractor program can now be downloaded when a computer is emagged. Image below shows that the contractor program was not meant to be downloadable from the syndie store or ntnet.  ## Changelog 🆑 fix: Fixed being able to download the contractor program on the syndie store. /🆑 Co-authored-by: Watermelon914 <3052169-Watermelon914@ users.noreply.gitlab.com> * Fixes the contractor program being on the syndicate store --------- Co-authored-by: Watermelon914 <37270891+Watermelon914@users.noreply.github.com> Co-authored-by: Watermelon914 <3052169-Watermelon914@ users.noreply.gitlab.com> |
||
|
|
c3bb222d26 |
[MIRROR] Some Processing improvements [MDB IGNORE] (#25944)
* Some Processing improvements (#80693) ## About The Pull Request Got the idea from #80682. A lot of parent procs don't do anything, some are just formatted in a bad way, and others early return and do no ops, it's bad in general but this should give us a head start. Some good overhead saved here * Some Processing improvements --------- Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com> |
||
|
|
49452b3851 |
[MIRROR] The Coupon Master PDA app [MDB IGNORE] (#25855)
* The Coupon Master PDA app (#80240) ## About The Pull Request This PR adds a new PDA program to the supply category, which allows users to redeems coupons for various cargo packs (mostly goodies), like the ones also found at the bottom of cig packs. How it works is fairly simple: - Once installed, the modular computer subsystem will periodically, at a 3-5 minutes interval, generate a coupon code datum associated to a plain text code, which is sent out to everyone with the program installed. - The user can then open the program and insert the text into an input box to redeem the coupon code, which is then associated with their bank account. - He will then have to find a photocopier, and tap it with the PDA to print the coupon. Only one coupon can be printed. Photocopier fees apply, so it'd cost 5 creds to the average assistant to print the coupon. - He can then insert the coupon in a cargo console and order/reuest the associated pack (same deal as cig coupons). - Some coupon codes however, especially those with juicer discounts, will expire after a while if not printed. Albeit mostly innocuous, the program provides negative Detomatix resistance, slowly fills the computer file storage with trash files with each redeemed coupon, and halves the download speed of new apps. Not really the cleanest ware out there. This PR also extends coupons to several non-goody packs, since they have been privately buyable for over the last couple years now. Some packs get discounts less frequently however, with those in the uncommon category being roughly 1 in a 12 chance and the rare being 1 in 50. Here's a screenshot of the UI (outdated, I've reduced the height from 500 to 400 and the notice box tip to specify the right click):  Fun fact: Right now, the odds of a 75% discount coming from the Coupon Master for the 1.000.000 credits bycycle pack are roughly 0.0012%, while that of a 50% for the same pack, from a cig pack coupon are 0.0042%. ## Why It's Good For The Game These last couple days I've been wanting to test myself at making simple UIs, as well as contributing to the modular computers feature, which has started to become pretty neat ever since PDAs were reworked into a subtype of it. Beside, coupons are a very small feature limited to the bottom of cigarette packs (also possibly cursed) in the current state of affairs. Cargo is filled with packs that are niche or fluff. Modular computers also has those little things that, while interesting, do not contribute a whole lot. Maybe this is one of them, but I guess free* coupons are always a big W. ## Changelog 🆑 add: Added the 'Coupon Master' program for the PDA. Install it to receive periodical, redeemable coupons for several cargo packs. Requires NTnet connection and the messenger enabled to work. add: Coupons are no longer only limited to goodies, but may also apply discount to some other packs as well. /🆑 <sup>*minus the photocopier fee</sup> --------- Co-authored-by: Watermelon914 <37270891+Watermelon914@ users.noreply.github.com> * The Coupon Master PDA app --------- Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com> Co-authored-by: Watermelon914 <37270891+Watermelon914@ users.noreply.github.com> |
||
|
|
cbaee82e73 |
[MIRROR] The Spectre-Meter App, also a bootleg data disk item for the black market. [MDB IGNORE] (#25717)
The Spectre-Meter App, also a bootleg data disk item for the black market. Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com> Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com> |
||
|
|
9361376345 |
PDA update (Messenger works while dead, Microwave works, etc). (#80069) [REMIRROR] (#25829)
* PDA update (Messenger works while dead, Microwave works, etc). (#80069) This is an update that touches many more things all at once (compared to my other PRs) meant to make PDAs in general feel more consistent and not take away from one of the experiences we want to encourage: interaction between players. 1. Replaced all checks of a 'pda' with a 'modular pc'. This means technically (though not done in-game currently) other modpcs can hold an uplink, and microwaves can charge laptops. 2. Speaking of microwave, they now don't break and require deconstruction if the cell is removed mid-charge. 3. When a Mod PC is out of power, it will now allow the Messenger to work (which now also doesn't consume any additional power), if the app exists on the PC. Here's a video demonstration https://github.com/tgstation/tgstation/assets/53777086/7ae12f81-a271-49b8-95fa-2ba54d2e2d1f 4. Flashlights can't be turned on while the cell is dead 5. I replaced a bunch of program vars with ``program_flags`` and renamed ``usage_flags`` to ``can_run_on_flags``. 6. Added a debug modPC that has every app installed by default. Mafia had some issues in the past that were unknown because Mafia wasn't preinstalled with any tablet so was never in create & destroy nor in any other unit test. This was just an easy solution I had, but PDAs should get more in-depth unit tests in the future for running apps n stuff- I just wanted to make sure no other apps were broken/harddeling. Currently when a PDA dies, its only use is to reply to PDA messages sent to you, since you can still reply to them. Instead of just fixing it and telling players to cope, I thought it would be nice to allow PDA Messenger to still work, as it is a vital app. You can call it some emergency power mode or whatever, I don't really mind the reason behind why it is this way. When I made cells used more on PDAs, my main goal was to encourage upgrading your PDA and/or limiting how many apps you use at once, I did not want this to hit on players who use it as a form of interaction. This is the best of both worlds, I think. The rest of the changes is just for modularity, if some downstream wants to add tablets, phone computers, or whatever the hell else, they can still get just as far as PDAs should be able to get to, hopefully. 🆑 add: PDAs with a dead power cell are now limited to using their Messenger app. fix: Microwaves now stop charging PDAs if the cell was removed mid-charge. fix: Microwaves can now charge laptops. fix: PDA Flashlights can't be turned on while the PDA is dead. fix: You can now hold a laptop up to a camera (if it has a notekeeper app installed) like PDAs already could. /🆑 --------- Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com> * ok --------- Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com> Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com> |
||
|
|
d34aab9be3 |
[MIRROR] PDA general maintenance (NTNet downloader rework) [MDB IGNORE] (#25133)
* PDA general maintenance (NTNet downloader rework) * Update modular_computer.dm * e * weh * Update archive_viewer.dm * Update three_layer_hats.json --------- Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com> Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com> |
||
|
|
49daf536b5 |
[MIRROR] [BOUNTY] Re-adds Contractors [MDB IGNORE] (#25094)
* [BOUNTY] Re-adds Contractors * I hate copy pasted overrides so much. BEGONE * Fixes the merge conflict. It's still not gonna work, too many proc redefinition * The sheer amount of overrides * This is hell * remove modular copy of spawn_contractor_partner * part 2 of spawn_contractor_partner oops * un-duplicate create_contracts proc * Remove duplicate contract generate and finish_enter * something to make the linter stop crying * Receiving * removes our contractor stuff in favour of parity * Update SyndicateContractor.tsx --------- Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com> Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com> Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com> Co-authored-by: Funce <funce.973@gmail.com> Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com> |
||
|
|
3d816fc0d5 |
[MIRROR] basic cleanbots refactor and new janitor skillchip [MDB IGNORE] (#25511)
* basic cleanbots refactor and new janitor skillchip * Update medbot.dm * UpdatePaths --------- Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com> Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com> |
||
|
|
8df7202455 |
[MIRROR] Rename notify_ghost_cloning to notify_revival [MDB IGNORE] (#25442)
* Rename notify_ghost_cloning to notify_revival (#80096) <!-- 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 Renames - `/mob/proc/notify_ghost_cloning` to `/mob/proc/notify_revival` - `/mob/dead/observer/proc/notify_cloning` to `/mob/dead/observer/proc/send_revival_notification` - `/atom/movable/screen/alert/notify_cloning` to `/atom/movable/screen/alert/revival`. I could have found a way to merge both procs together but default parameters keep me up at night. <!-- 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 Conciseness, code that is named after a removed feature is silly. <!-- 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. --> nothing playerfacing <!-- 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. --> * Rename notify_ghost_cloning to notify_revival * Missed wow * Modular --------- Co-authored-by: distributivgesetz <distributivgesetz93@gmail.com> Co-authored-by: SomeRandomOwl <somerandomowl@ratchtnet.com> |
||
|
|
73bdd7341a |
[MIRROR] TGUI Destructive Analyzer [MDB IGNORE] (#25005)
* TGUI Destructive Analyzer (#79572) ## About The Pull Request I made this to help me move more towards my goals [laid out here](https://hackmd.io/XLt5MoRvRxuhFbwtk4VAUA) which currently doesn't have much interest. This makes the Destructive Analyzer use a little neat TGUI menu instead of its old HTML one. I also touch a lot of science stuff and a little experimentor stuff, so let me explain a bit: Old iterations of Science had different items that you can use to boost nodes through deconstruction. This has been removed, and its only feature is the auto-unlocking of nodes (that is; making them visible to the R&D console). I thought that instead of keeping this deprecated code around, I would rework it a little to make it clear what we actually use it for (unhiding nodes). All vars and procs that mentioned this have been renamed or reworked to make more sense now. Experimentor stuff shares a lot with the destructive analyzer, so I had to mess with that a bit to keep its decayed corpse of deprecated code, functional. I also added context tips to the destructive analyzer, and added the ability to AltClick to remove the inserted item. Removing items now also plays a little sound because it was kinda lame. Also, balloon alerts. ## Why It's Good For The Game Moves a shitty machine to TGUI so it is slightly less shitty, now it's more direct and compact with more player-feedback. Helps me with a personal project and yea ### Video demonstration I show off connecting the machine to R&D Servers, but I haven't changed the behavior of that and the roundstart analyzers are connected to servers by default. https://github.com/tgstation/tgstation/assets/53777086/65295600-4fae-42d1-9bae-eccefe337a2b ## Changelog 🆑 refactor: Destructive Analyzers now have a TGUI menu. /🆑 * TGUI Destructive Analyzer * Modular --------- Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com> Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com> |
||
|
|
a5818dd539 |
[MIRROR] Renames vars on pdas and removes ntnet_relays glob [MDB IGNORE] (#24960)
* Renames vars on pdas and removes ntnet_relays glob (#79595) ## About The Pull Request - replaces the ntnet_relays global list with ``get_machines_by_type`` - renames ``transfer_access`` var on PDA to ``download_access`` & ``required_access`` to ``run_access`` to better describe what they do, because on more than one ocassion I've confused myself with the two terms and ended up doing something unintentional (see: https://github.com/tgstation/tgstation/pull/74269) ## Why It's Good For The Game Kills a useless global list and makes pda code a little less confusing. ## Changelog Nothing player-facing. * Renames vars on pdas and removes ntnet_relays glob --------- Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com> |
||
|
|
dee97c0eb6 |
[MIRROR] Makes notepad available for laptops and consoles [MDB IGNORE] (#24820)
* Makes notepad available for laptops and consoles (#79475) ## About The Pull Request Makes it so that notepad can be used on consoles and laptops ## Why It's Good For The Game Now everyone have more places to write important information. Also someone who doesn't have PDA (ghost-role for example) will be able to use laptop's notepad. ## Proof of Testing <details> <summary>Screenshots/Videos</summary>  </details> ## Changelog 🆑 qol: Make notepad available for everyone, who has only laptop or console. /🆑 * Makes notepad available for laptops and consoles --------- Co-authored-by: NeonNik2245 <106491639+NeonNik2245@users.noreply.github.com> |
||
|
|
f48008411c |
[MIRROR] Mafia now starts without admin intervention [MDB IGNORE] (#24793)
* Mafia now starts without admin intervention (#79348) ## About The Pull Request Mafia should now start without the need of admin intervention. I made a unit test that should always have a PDA and a ghost spawning in a game of Mafia and having it run through basic setup to confirm they both successfully sign up and the game starts. I had to change a lot of things in order to get this working, such as giving unique ckeys to mock clients, fixing harddels in Mafia, and plenty of minor fixes. This is the first time any of this code is put in CI, so a lot of uncaught errors are now showing their faces. Because loading maps mid-round runtimes due to smoothing, I have mafia their own unit test-only map that doesn't use smoothing. I also split the mafia ui code into its own file, and moved a single helper that was sitting around in mafia's file into a helpers file. I also added some comments to explain why certain things are the way they are, because I wrote some undocumented code previously and forgot a few things, leading to self-inflicted wasted time. ## Why It's Good For The Game ^ ## Changelog 🆑 fix: Mafia games can now start properly. /🆑 --------- Co-authored-by: Ghom <42542238+Ghommie@ users.noreply.github.com> * Mafia now starts without admin intervention --------- Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com> Co-authored-by: Ghom <42542238+Ghommie@ users.noreply.github.com> |
||
|
|
4970f36e37 |
[MIRROR] Basic drones [MDB IGNORE] (#24507)
* Basic drones * Diffs * Diffs * Modular * Modular --------- Co-authored-by: lizardqueenlexi <105025397+lizardqueenlexi@users.noreply.github.com> Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com> |
||
|
|
807846f7d6 |
[MIRROR] Updates signaler investigate code | Adds some nice QOL changes for signalers | Enforces cooldown on signaler circuitry [MDB IGNORE] (#24500)
* Updates signaler investigate code | Adds some nice QOL changes for signalers | Enforces cooldown on signaler circuitry (#78974) ## About The Pull Request See title. If someone was abusing signalers previously to cause server lag, going into list signalers would actually cause even worse lag as byond sat there and processed thousands of items into a string over and over, which would cause string format operations on longer and longer strings, resulting in more and more overhead. This is bad. So instead there is now a limit to the size of the list, currently I have that set to 500 although I am open to increasing and even reducing the number. I have also made signalers slightly more intuitive by having the cooldown actually displayed in the ui as a tooltip instead of just being a secret feature you didnt know about unless you code dived. Also made the cooldown actually respected by things such as circuitry where it didnt even implement the cooldown and would happily send as many signals as you had items connected to your proximity circuit. ## Why It's Good For The Game Admins won't accidentally kill the server by trying to parse a lag machines signal list. Players lagging the server? No, how about the admins trying to fix it! ## Changelog 🆑 qol: signalers now tell you their cooldown and also use balloon alerts /🆑 * Updates signaler investigate code | Adds some nice QOL changes for signalers | Enforces cooldown on signaler circuitry --------- Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com> |
||
|
|
69ea3c81ad |
[MIRROR] Mafia can be played on your PDA [MDB IGNORE] (#24485)
* Mafia can be played on your PDA (#78576) ## About The Pull Request Mafia is now friggin playable from the PDA, I also changed other stuff too - You can't use abilities on dead people if you're not supposed to (cant kill the same person over and over) - Changelings cant kill other Changelings - Changelings can now only talk to eachother at night, rather than using :j - Everyone starts spawned in the center of the map, since people playing on PDA can't move their characters. This is so everyone can hear PDA users in person, as I don't want the chat log to be mandatory. To do this, all messages you are meant to be able to see, is now logged for you to see in your Mafia panel. This essentially means that people playing through the PDA get a downgraded version of it, but I don't know how much larger I want this UI to be. Playing Mafia through the PDA will not tell you of other players ahead of time when signing up (as it shows ckeys + pdas), but they can see the names in-game. Unfortunately this means we'll have to remove your customization coming with you, to prevent using it to tell who is dead in round. Things I am missing - Program overlays on PDA/Laptop/Computer - Icon for the app's header while a game is active I'm not a spriter and can't make either of these This is the new UI  I also fixed alert calls for PDAs and stuff  and removed the X at the top on computers since they had no battery  Looks a little better now hopefully 👍 ## Why It's Good For The Game - The current Arcade app sucks, and is a solo game. This is much more entertaining and you can talk to others in it, which is swag as fuck. - There's a larger potential playerbase for the Minigame making it more likely to be played. - Sets groundwork for a better version of https://github.com/tgstation/tgstation/pull/75879 - Adds more suspense and teamwork in the minigame. ## Changelog 🆑 JohnFulpWillard, sprites by CoiledLamb add: You can now play Mafia on your PDA. balance: Mafia changelings can now only talk to eachother during the night. fix: Mafia abilities can't be repeatedly used on people. /🆑 * Mafia can be played on your PDA --------- Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com> |
||
|
|
2dfb6231b0 |
[MIRROR] Fixes runtime on initalizing science programs [MDB IGNORE] (#24215)
* Fixes runtime on initalizing science programs (#78842) Datums don't have location, so there's no z level to search here. * Fixes runtime on initalizing science programs --------- Co-authored-by: AnturK <AnturK@users.noreply.github.com> |
||
|
|
645a0031c1 |
[MIRROR] Camera consoles no longer constantly check camera list [MDB IGNORE] (#24185)
* Camera consoles no longer constantly check camera list (#78822) ## About The Pull Request I would like camera sorting to be handled without having to constantly get the entire list of cameras and sorting itself, but this occasion it isn't even necessary, and was only added because I wanted to keep it consistent with old behavior. This wasn't the best idea, and this is trying to make amends with that. Instead of getting the entire list of cameras when swapping cameras, it instead gets that specific camera from the list and sets your active camera to that. To do so, camera consoles now have a ref to the camera, rather than going by name alone. ## Why It's Good For The Game Explained in the about section mostly, we're no longer checking through and sorting the entire list of cameras every single time you swap from one camera to another. ## Changelog Nothing player-facing. * Camera consoles no longer constantly check camera list --------- Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com> |
||
|
|
b3b7b8f0e1 |
[MISSED MIRROR] Adds user feedback for going over order limits in cargo console (#76344) (#24032)
Adds user feedback for going over order limits in cargo console (#76344) 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) Better UX, slightly saner code Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com> |
||
|
|
9888ef445c |
[MIRROR] Security Officers can now Download the Plexagon Crew Manifest PDA App [MDB IGNORE] (#24049)
* Security Officers can now Download the Plexagon Crew Manifest PDA App (#78678) ## About The Pull Request Despite starting with the Plexagon app, security officers did not have sufficient access to actually download the app onto new machines. Now they do. ## Why It's Good For The Game Its weird and unintuitive to start with an app but not be able to download it if you have to get a new PDA. ## Changelog 🆑 fix: Security officers can now download the crew manifest PDA app that they start with. /🆑 * Security Officers can now Download the Plexagon Crew Manifest PDA App --------- Co-authored-by: GPeckman <21979502+GPeckman@users.noreply.github.com> |
||
|
|
32e9778c23 |
[MIRROR] TTS: Gas Mask muffling, Hailer Mask voice effects, support for more filters that use samplerate, voice effects for lizards, ethereals, and xenomorphs. [MDB IGNORE] (#23942)
* TTS: Gas Mask muffling, Hailer Mask voice effects, support for more filters that use samplerate, voice effects for lizards, ethereals, and xenomorphs. * Update RecordView.tsx * Update types.ts --------- Co-authored-by: Iamgoofball <iamgoofball@gmail.com> Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com> |
||
|
|
40906f5ca4 |
[MIRROR] The notepad app now includes basic nautical directions in its default message. [MDB IGNORE] (#23665)
* The notepad app now includes basic nautical directions in its default message. (#78241) ## About The Pull Request Based on an old PR from citadel: Citadel-Station-13/Citadel-Station-13/pull/7690 It also comes with a tip. Screenshot of what it looks like more or less (a smidge outdated):  ## Why It's Good For The Game This should help new players and not learn and memorize these five simple terms often used in station area names. ## Changelog 🆑 Ghommie (Based on an old PR by Trilbyspaceclone from Citadel) qol: The notepad app now includes basic nautical directions in its default message. qol: A tip about nautical directions, too. /🆑 * The notepad app now includes basic nautical directions in its default message. --------- Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com> |
||
|
|
824199189e |
[MIRROR] You can now send PDA messages when resting [MDB IGNORE] (#23589)
* You can now send PDA messages when resting (#78154) ## About The Pull Request No longer must you stand up when sending messages over the PDA! Do it all comfortably, laying down in your bed! Computers are automatically inaccessible when resting, so this only affects PDA's, TABLETS, and LAPTOPS ## Why It's Good For The Game Why wouldn't I be able to use a PDA laying down, heck everyone uses their phone laying on their back, using your PDA like that only makes sense ## Changelog 🆑 fix: The messenger app can now be used when laying down. /🆑 Co-authored-by: John Willard <53777086+JohnFulpWillard@ users.noreply.github.com> * You can now send PDA messages when resting --------- Co-authored-by: Waterpig <49160555+Majkl-J@users.noreply.github.com> Co-authored-by: John Willard <53777086+JohnFulpWillard@ users.noreply.github.com> |
||
|
|
18fc2d9b16 |
[MIRROR] Oldstation now has their own RND [MDB IGNORE] (#23567)
* Oldstation now has their own RND * Update oldstation_fluff.dm * Update techweb_types.dm * beaker capacity --------- Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com> Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com> |
||
|
|
d865f6fa9a |
[MIRROR] pAIs control a PDA they're inserted into [MDB IGNORE] (#23519)
* pAIs control a PDA they're inserted into (#78103) ## About The Pull Request This PR lets pAIs inserted into a PDA to control the PDA of their owner. They can see their own pAI configurations but cannot edit any of it. They also can't eject themselves from it. This means they can receive and send PDA messages as their owner, acting like a personal secretary This also adds support for multiple people using a PDA and its UI updating for all of them and PDA messages being received and responded to from multiple people under the same PDA It also removes pAI camera in favor of using siliconcamera, which is the same thing; this just cuts down on some copy paste. I also reverted PDA's ringer being off preventing messages from being sent to your chat, silent mode was meant to prevent only the ringing sound. ## Why It's Good For The Game pAIs can now do a little bit more to help their owners on a personal level, and adds support for more stuff like this in the future (an idea I had was being able to hack into PDAs in the same way the CE can hack into APCs remotely) This is a re-PR of https://github.com/tgstation/tgstation/pull/76445 but it's a little better this time and does not remove the PDA Messenger app from pAIs. ## Changelog 🆑 fix: PDAs being on silent no longer prevents PDAs from being sent to your chat, again. add: pAIs inserted into a PDA can now control the PDA, and will receive PDA messages sent to it (and can respond under the PDA's name). /🆑 * pAIs control a PDA they're inserted into --------- Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com> |
||
|
|
e3f8dd884e |
[MIRROR] Better alert/announcment sounds and Status displays [MDB IGNORE] (#23481)
* Better alert/announcment sounds and Status displays * skyrat edits * Update status_display.dmi * Update flavor_misc.dm * Update communications.dm * skyrat edits * Update status_display.dmi * Update _sm_delam.dm * typo * Update status_display.dmi * Update status_display.dmi --------- Co-authored-by: DrTuxedo <42353186+DrDiasyl@users.noreply.github.com> Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com> |
||
|
|
f3364b9206 |
[MIRROR] [NO GBP] Add some istype guards to the PDA messenger's get_messengers proc [MDB IGNORE] (#23471)
* [NO GBP] Add some istype guards to the PDA messenger's `get_messengers` proc (#78070) ## About The Pull Request Read title, not having these checks can knock out the messenger for everyone for the entire round ## Why It's Good For The Game I didn't think about hard deletes in my original NT Messenger PR, and as far as I know this hasn't happened on this codebase yet. However this PR doesn't only help downstreams that struggle with hard deletes, it also implements some pretty critical guards as not having a messenger for an entire round is pretty bad and sometimes hard deletes are very hard to track and fix, so it could potentially break the messenger for a lot of rounds. * [NO GBP] Add some istype guards to the PDA messenger's `get_messengers` proc --------- Co-authored-by: distributivgesetz <distributivgesetz93@gmail.com> |
||
|
|
30d57e41dc |
[MIRROR] Replaces Camera bug with Camera tablet app [MDB IGNORE] (#23275)
* Replaces Camera bug with Camera tablet app * Modular changes --------- Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com> Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com> |
||
|
|
edeea24c7e |
[MIRROR] PDA Messages are once again shown to non-observing dead mobs [MDB IGNORE] (#23254)
* PDA Messages are once again shown to non-observing dead mobs * Update code/modules/modular_computers/file_system/programs/messenger/messenger_program.dm Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com> --------- Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com> Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com> Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com> |
||
|
|
7966f9a1ed |
[MIRROR] Reworks how AI tracking is handled & reorganizes it [MDB IGNORE] (#23239)
* Reworks how AI tracking is handled & reorganizes it * Update tgstation.dme * Update tgstation.dme * Update tgstation.dme --------- Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com> Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com> |
||
|
|
2ac66a8a4a |
[MIRROR] Adds sanity checking to prefs checks, fixing a bug that can cause emotes to stop displaying intermittently [MDB IGNORE] (#23081)
* Adds sanity checking to prefs checks, fixing a bug that can cause emotes to stop displaying intermittently * Update vox_procs.dm --------- Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com> |