mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-06-04 05:34:50 +01:00
ed94de4ddf7edad8694badefc577392e0f762bf5
1602 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
8c1e35e1c0 |
Refactors mind language holders into non-existent, fixes new languages being deleted on species swap + tests (#76612)
## About The Pull Request This PR refactors mind language holders into non-existence As a result, `update_atom_languages` is no longer necessary Mind-bound languages are transferred via `/mind/proc/transfer_to` Species changing no longer deletes and re-creates the mob's language holder, allowing them to keep any languages they have. Species languages are sourced from `LANGUAGE_SPECIES` now, meaning they are removed when they change species. If the mob is not a human with a species datum, these are effectively just atom level languages. Makes a bunch of unit tests to ensure language transfer over certain events works as intended ## Why It's Good For The Game Mobs with minds having two independent language holders results in a good few bugs, and simply doesn't make sense when we have sources (`LANGUAGE_MIND`). Instead of tracking two language holders, we can simply use sources better and only track one. This means that the language holder you start with is your language holder, period. It doesn't get deleted or re-instantiated or whatever. ## Changelog 🆑 Melbert refactor: Refactored language holders, making species changes not delete all of your known languages /🆑 |
||
|
|
8ca2a0bb35 |
service borg cookin fixin update (#76590)
## About The Pull Request PR done for bounty: https://tgstation13.org/phpBB/viewtopic.php?f=5&t=33988 borgs can now turn on stoves and griddles borg click code has been reworked a bit to be closer to base mob, you are now able to click on stuff within reach rather than just Adjacent (might be buggy to introduce this? hopefully not. if anything we can testmerge this), which lets us make the apparatus work to pick up stoves on the range and such Adds the Codex Cibus Mechanicus as an upgrade you can research in RnD with the other service borg ones. When you use it it shows you the cooking menu!  ## Why It's Good For The Game The service borg has the tools to prepare ingredients, but it can't actually do anything with them, which severely limits it, only being able to do slapcrafted foods. The apparatus not working on items that are on top of stoves/griddles seems to be just a bug with how cyborg click code is handled. ## Changelog 🆑 Fikou fix: service borg apparatus now works on stoves and griddles and ovens qol: borgs can now activate stoves and griddles add: rnd can research a cookbook for service borgs /🆑 |
||
|
|
25cfa0c03d |
Maptext 2023 tweaks 3 (#76552)
## About The Pull Request Hopefully the last set of changes in this demonstration of the [Goldilocks principle](https://en.wikipedia.org/wiki/Goldilocks_principle). Some more font changes, the big (hah) one being the context tooltips again. - Context tooltips smaller main line, more compact sublines. - Improves documentation on the usage of the macros. - Removes incorrect comment I added earlier in tgstation.dme - Adds black outlines as default in the macros. - Icon sized letters (Dwarf Fortress, credits). - Deathrattle and other actions reduced spacing. - Aligned cooldowns/countdowns. <details> <summary>Screenshots</summary>        </details> ## Changelog 🆑 LT3 image: More maptext and font tweaks spellcheck: Context tooltips too small, too big... just right? /🆑 --------- Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com> |
||
|
|
a5b5bf6516 |
Tend Wounds works on non-human mobs (#76471)
## About The Pull Request Tend Wounds seems to be intentionally written such that you would be able to perform it on arbitrary mobs, however this had two problems. - Most mobs can't rest and it requires a resting position, meaning the surgery can only be initiated on cats and mothroaches. - The code which picks up surgery steps existed on Carbon not Living, so after the game tells you that you've started doing surgery on Runtime, clicking on her with a scalpel will cause you to stab her to death. I noticed this after a tragic kitten incident. I have fixed both of these issues by moving surgery catching onto Living instead of Carbon, and having the resting check only run if you are capable of resting. You still can't operate on Beepsky because he is made of metal. ## Why It's Good For The Game It can actually quite hard to heal pets who were harmed by accident, this allows people to roleplay as veterinarians. ## Changelog 🆑 fix: You can now correctly Tend Wounds on most non-human animals. add: You can now Remove Implants from non-human animals, just in case Ian swallowed a macrobomb. /🆑 |
||
|
|
4d58d3360a |
Fixes some hud related hard deletes (#76416)
## About The Pull Request Fixes these, which hard delete consitently  |
||
|
|
10f5932c4c |
Add hotkeys to APC settings (#76358)
## About The Pull Request This adds a few hotkeys to APCs for AIs and borgs. - Toggle environmental (ctrl + shift) - Toggle lighting (shift) - Toggle equipment (alt) - Toggle breaker (ctrl) These are included as contextual screentips. Also removed the UI popup when using RMB to toggle the lock as well since it was annoying. Went and cleaned up quite a bit of one letter var names and `usr` arguments. ## Why It's Good For The Game Easier controls for equipment. ## Changelog 🆑 qol: Add hotkeys to APCs for AIs and borgs. Toggle environmental (ctrl + shift), toggle lighting (shift), toggle equipment (alt), and toggle breaker (ctrl). qol: Remove APC UI popup when using RMB to toggle the lock. /🆑 --------- Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com> |
||
|
|
dc88203f0b |
Fix Too Slowing people with high fives (#76277)
## About The Pull Request At some point with the refactors to offering it was made so that dropping the item stops the offer, unfortunately too slowing people with high fives relied on this behavior (dropping not stopping the offer). Restores that behavior with a bit more code tweaking. ## Why It's Good For The Game How can I be too slow? ## Changelog 🆑 Melbert fix: You can once again "too slow" someone with a high five /🆑 |
||
|
|
ce2a1185ad |
Renames COMSIG_ITEM_ATTACK_OBJ to COMSIG_ITEM_ATTACK_ATOM (#76112)
## About The Pull Request For some reason this was missed when moving attack_obj() to /atom level. ## Why It's Good For The Game It peeves me that this signal is misnamed |
||
|
|
dfc3e61d1f |
Fixes ghosts being unable to click gateways to teleport through (#76070)
## About The Pull Request Ghosts can click gateways to teleport again ## Why It's Good For The Game I *believe* the "gateway visual" update made it so the bumper was unclickable, not sure why Seemed easier to move it to the gateway itself rather than be on the bumper Also made it so you cant teleport into secret gateways ## Changelog 🆑 Melbert fix: Ghosts can click on active gateways to teleport to the destination set. Doesn't work for secret gateways. /🆑 |
||
|
|
ae5a4f955d |
Pulls apart the vestiges of components still hanging onto signals (#75914)
## About The Pull Request Signals were initially only usable with component listeners, which while no longer the case has lead to outdated documentation, names, and a similar location in code. This pr pulls the two apart. Partially because mso thinks we should, but also because they really aren't directly linked anymore, and having them in this midstate just confuses people. [Renames comp_lookup to listen_lookup, since that's what it does](https://github.com/tgstation/tgstation/commit/102b79694fa8eb57ecf7b36032616a9e368ccced) [Moves signal procs over to their own file](https://github.com/tgstation/tgstation/commit/33d07d01fd336726b4f6f6f1b61bb0b3f11a00dc) [Renames the PREQDELETING and QDELETING comsigs to drop the parent bit since they can hook to more then just comps now](https://github.com/tgstation/tgstation/commit/335ea4ad081ec63c42cfa05856e582cca833af6e) [Does something similar to the attackby comsigs (PARENT -> ATOM)](https://github.com/tgstation/tgstation/commit/210e57051df63f88dac3dd83321236da825aae5e) [And finally passes over the examine signals](https://github.com/tgstation/tgstation/commit/65917658fb8a1e7d28ae23c9437a583d646f0302) ## Why It's Good For The Game Code makes more sense, things are better teased apart, s just good imo ## Changelog 🆑 refactor: Pulled apart the last vestiges of names/docs directly linking signals to components /🆑 |
||
|
|
3df5d3b42b |
Removes +x from files that shouldn't have it (#75574)
Each of these is an extra operation TGS has to do when copying the repo. Who is committing these? |
||
|
|
c9f0917c2e |
Double clicking on your corpse (or something containing it) no longer makes you automatically re-enter it (#75505)
## About The Pull Request Removes the check for reentering your body when double clicking on things as a ghost. ## Why It's Good For The Game Perhaps my experience is not universal, but I have never found an occasion where I did this and wanted to re-enter my corpse, and conversely many occasions where I want to orbit my corpse and find myself re-entering it instead. Any form of revival will pull you back into your body automatically these days and there's no real benefit to being in your corpse, and in the rare circumstance someone wants to do this the verb is still available. ## Changelog 🆑 qol: Double clicking your corpse or something containing it as a ghost will now orbit as in other cases instead of re-entering your corpse. /🆑 |
||
|
|
851d484484 |
Fix SHOULD_NOT_SLEEP hit in simple_animal/hostile's resolve_unarmed_attack (#75416)
Multiple paths fixed. See #75232  |
||
|
|
1674f25725 |
New Medical job: The Coroner (#75065)
## About The Pull Request HackMD: https://hackmd.io/RE9uRwSYSjCch17-OQ4pjQ?view Feedback link: https://tgstation13.org/phpBB/viewtopic.php?f=10&t=33972 Adds a Coroner job to the game, they work in the Medical department and have their office in the Morgue. I was inspired to make this after I had played my first round on Paradise and messed around in there. The analyzer is copied from there (https://github.com/ParadiseSS13/Paradise/pull/20957), and their jumpsuit is also mostly stolen from it (i just copied the color scheme onto our own suits). Coroners can perform autopsies on people to see their stats, like this  They have access to Medbay, and on lowpop will get Pharmacy (to make their own formaldehyde). They also have their own Secure Morgue access for their office (doubles as a surgery room because they are edgelords or whatever) and the secure morgue trays. Secure Morgue trays spawn with their beepers off and is only accessible by them, the CMO, and HoS. It's used to morgue Antagonists. Security's own morgue trays have been removed. The job in action https://cdn.discordapp.com/attachments/950489581151735849/1102297675669442570/2023-04-30_14-16-06.mp4 ### Surgery changes Autopsies are a Surgery, and I tried to intertwine this with the Dissection surgery. Dissections and Autopsies both require the Autopsy scanner to perform them, however you can only perform one on any given body. Dissections are for experiments, Autopsies is for the paper of information. Dissected bodies now also give a ~20% surgery speed boost, this was added at the request of Fikou as a way to encourage Doctors to let the Coroner do their job before reviving a body. I also remember the Medical skill, which allowed Doctors to do surgery faster on people, and I hope that this can do something like that WITHOUT adding the potential for exploiting, which led to the skill's downfall. ### Morgue Improvements Morgue trays are no longer named with pens, they instead will steal the name of the last bodybag to be put in them. Morgue trays are also removed from Brig Medical areas and Robotics, now they have to bring their corpses to the Morgue where the Coroner can keep track and ensure records are properly updated. ### Sprite credits I can't fit it all in the Changelog, so this is who made what McRamon - Autopsy scanner Tattax - Table clock sprites and in-hands CoiledLamb - Coroner jumpsuits & labcoats (inhand, on sprite, and their respective alternatives) - Coroner gloves - CoronerDrobe (the vending machine) ## Why It's Good For The Game This is mostly explained in the hackmd, but the goal of this is: 1. Increase the use of the Medical Records console. 2. Add a new and interesting way for Detectives to uncover mysteries. 3. Add a more RP-flavored role in Medical that still has mechanics tied behind it. ## Changelog 🆑 JohnFulpWillard, sprites by McRamon, tattax, and Lamb add: The Coroner, a new Medical role revolving around dead corpses and autopsies. add: The Coroner's Autopsy Scanner, used for discovering the cause for someone's death, listing their wounds, the causes of them, their reagents, and diseases (including stealth ones!) qol: Morgue Trays are now named after the bodybags inside of them. balance: The morgue now has 'Secure' morgue trays which by default don't beep. balance: Security Medical area and Robotics no longer have their own morgue trays. balance: Dissected bodies now have faster surgery speed. Autopsies also count as dissections, however they're mutually exclusive. /🆑 --------- Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com> |
||
|
|
0d4ec59197 |
Miner Style Points 2: Style on Everyone (#74690)
## About The Pull Request A re-open of https://github.com/tgstation/tgstation/pull/66326 with Fikou's permission Adds the style meter, it can be bought from the mining vendor for 1500 points, it is an attachment to your glasses. The style meter creates a display on your hud, with your recent actions, like attacking enemies, killing them, mining ore etc. Actions like spinning or flipping increase your score multiplier, making you get more points. Your style meter affects how much ore you get from mining rocks. By default with the meter, you get 20% less ore, but at the highest, you can get 1.2x the ore from mining. In addition, on B-tier or above, you can "hotswap" items, by attacking an item in your backpack with one in your hand (should it fit and all that). Also features a leaderboard for highest style point count! New streamable: https://streamable.com/eewi6l The following are sources of points: - Killing things - Killing big things - Killing small things - Punching things - Melee'ing things - Mining rocks and ores - Having matrix traps detonate - Hit, defuse, and detonate gibtonite - Detonate crusher marks - Scan geysers - Parry projectiles (others or your own) Oh, right. While wearing the style meter, you're able to parry any lavaland-based projectile by clicking on it or the tile it is on, which reflects it back in a 7 degree arc, making it 20% faster and 15% more damaging. Usually not very easy. Maybe-plan in the future for some syndicate variant of this (with bullet parrying and appropriate style sources, etc.), but not for this PR Thanks to Arcane, multitooling the style meter will make it play some sounds on rank-up.  https://streamable.com/nheaky Parrying in action ## Why It's Good For The Game Makes miners bring more ore in a fun way. ## Changelog 🆑 Fikou, Zonespace, Arcane for voicing add: The mining vendor now has a style meter. This meter gauges your style points and uses them to improve your ore yield. /🆑 --------- Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com> |
||
|
|
2b2cb3dff6 |
Hologram Touchup (Init savings edition) (#74793)
## About The Pull Request ### Polishes and Reworks Holograms Hologram generation currently involves a bunch of icon operations, which are slow. Not to mention a series of get flats for the human models, which is even worse. We lose 0.05 seconds of init to em off just the 2 RCD holograms. it hurts man. So instead, let's use filters and render steps to achive the same effect. While I'm here I'll dim the holo light and make it blue, make the hologram and its beam emissive (so they glow), and do some fenangling with move_hologram() (it doesn't clear the hologram off failure anymore, instead relying on callers to do that) to ensure holocalls can't be accidentially ended by moving out of the area. Ah and I added RESET_ALPHA to the emissive appearance flags, cause the alpha does override and fuck with color rendering, which ends up looking dumb. If we're gonna support this stuff it should be first class not accidential. ### Makes Static Not Shit While I'm here (since holograms see static) lets ensure the static plane is always visible if you're seeing through an ai eye. The old solution was limited to applying it to JUST ais, which isn't satisfactory for this sort of thing and missed a LOT of cases (I didn't really get how ai eyes worked before I'ma be honest) I'm adding a signal off the hud for it detecting a change in its eye here. This is semi redundant, but avoids unneeded dupe work, so I'm ok with it. The pipeline here is less sane then I'd like, but it works and that's enough ## Why It's Good For The Game  More pretty, better ux, **static works** ## Changelog 🆑 add: Holograms glow now, pokes at the lighting for holocalls in general a bit to make em nicer. qol: You can no longer accidentally end a holocall (as a non ai) by leaving the area. Felt like garbage fix: Fixes static rendering improperly if viewed by a non ai /🆑 |
||
|
|
560dc3b5e0 |
Expands conversion unit test coverage (#74563)
## About The Pull Request Requires #74562 and #74556 be merged first. Unit tests cult conversion and throws in a case for rev AOE flashes ## Changelog Not necessary --------- Co-authored-by: san7890 <the@san7890.com> |
||
|
|
99592fe8ee |
Adds a new HUD: The Detective UI! (#74459)
## About The Pull Request This PR adds the new HUD; The Detective UI Originally made for fun, it was recieved well enough to make me publish it. Its designed to have a fun gimmick (That Being Noir Detectives), but still be easily readable at a glance!   ## Why It's Good For The Game New HUDs mean more customization options for players, and as far as I'm aware I think thats a pretty good thing! ## Changelog 🆑 add: A new HUD, The 'Detective' UI imageadd: All the spritework for said HUD. /🆑 --------- Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com> |
||
|
|
b0a44b0d77 |
Removes emergency meetings (#74437)
## About The Pull Request Removes emergency meetings. Uh, let me know if I missed anything ## Why It's Good For The Game We gotta come up with NEW ways to ruin the round each year, this one's so old and busted ## Changelog 🆑 del: Votes out some sussy emergency meeting code /🆑 |
||
|
|
ccef887efe |
Lints Against Unmanaged Local Defines (#74333)
# MAINTAINER - USE THE BUTTON THAT SAYS "MERGE MASTER" THEN SET THE PR TO AUTO-MERGE! IT'S MUCH EASIER FOR ME TO FIX THINGS BEFORE THEY SKEW RATHER THAN AFTER THE FACT. ## About The Pull Request Hey there, This took a while to do, but here's the gist: Python file now regexes every file in `/code` except for those that have some valid reason to be tacking on more global defines. Some of those reasons are simply just that I don't have the time right now (doing what you see in this PR took a few hours) to refactor and parse what should belong and what should be thrown out. For the time being though, this PR will at least _halt_ people making the mistake of not `#undef`ing any files they `#define` "locally", or within the scope of a file. Most people forget to do this and this leads to a lot of mess later on due to how many variables can be unmanaged on the global level. I've made this mistake, you've made this mistake, it's a common thing. Let's automatically check for it so it can be fixed no-stress. Scenarios this PR corrects: * Forgetting to undef a define but undeffing others. * Not undeffing any defines in your file. * Earmarking a define as a "file local" define, but not defining it. * Having a define be a "file local" define, but having it be used elsewhere. * Having a "local" define not even be in the file that it only shows up in. * Having a completely unused define* (* I kept some of these because they seemed important... Others were junked.) ## Why It's Good For The Game If you wanna use it across multiple files, no reason to not make it a global define (maybe there's a few reasons but let's assume that this is the 95% case). Let me know if you don't like how I re-arranged some of the defines and how you'd rather see it be implemented, and I'd be happy to do that. This was mostly just "eh does it need it or not" sorta stuff. I used a pretty cool way to detect if we should use the standardized GitHub "error" output, you can see the results of that here https://github.com/san7890/bruhstation/actions/runs/4549766579/jobs/8022186846#step:7:792 ## Changelog Nothing that really concerns players. (I fixed up all this stuff using vscode, no regexes beyond what you see in the python script. sorry downstreams) |
||
|
|
7098b1f2b7 |
Clicking on the >> WALL << of a fire alarm/light switch with your hand will activate it (#73920)
## About The Pull Request Clicking on the turf of a fire alarm/light switch with your hand will activate it, similar to how you can click the turf a door is on to close it and not pixel hunt. Refers to the turf it *looks* like it's on, not the one it actually is on, since fire alarms and light switches are actually on the turf near the wall, pixel shifted up. False walls are ignored. ## Why It's Good For The Game Lets our artists do whatever they want to these sprites, or those of future consumers, without worrying about niche balance stuff. I really like people using fire alarms for environmental combat and don't want that to get in the way of spriting. ## Changelog 🆑 qol: Clicking on the turf of a fire alarm/light switch with your hand will activate it. /🆑 |
||
|
|
3ab262f165 |
The CE blueprints can no longer be used to obfuscate cultist summon locations (#73853)
## About The Pull Request The Nar'Sie summon message will now only use the original name of the ritual site area. You can no longer fake out the ritual announcement by renaming the area with the CE blueprints. The ritual site locator HUD popup now also uses the original area names, to prevent the same issue from occurring. ## Why It's Good For The Game Closes #73036. ## Changelog 🆑 fix: The cultist ritual site locator and Nar'Sie summon message will no longer use area names modified by the CE's blueprints. /🆑 |
||
|
|
430e3b8af3 |
Adds the "Law panel", a control center for admins interacting with silicon laws (#73747)
Adds the Law Panel. The Law Panel shows all silicons in the world and their lawsets. From this panel, an admin can add new laws, remove old laws, edit existing laws, or even re-arrange law order. This allows for admins to get a lot more creative in creating custom silicon lawsets. It also gives a much easier way for admins to deal with law grief at a glance. Additionally, the panel allows for admins to force a silicon to state laws, privately announce the laws to the player, or give them a the "laws updated" alert as normal. |
||
|
|
705f7a419c |
Refactor Statue & Creature unobserved behaviour (#73630)
## About The Pull Request While I was touching the Creature file for another PR (#73629) I noticed that an identical proc was implemented here and on Statue. I moved it into a component and managed to hook it into signals which have return flags. This required a bit of a refactor of their abilities too, but that was for the best because one of them had a reimplementation of Jaunt which could have just been a subtype of Jaunt, and none of their abilities had icons. I also made `spell` send `COMSIG_MOB_ABILITY_STARTED` in `PreActivate` because it completely overrides the parent and doesn't do that as a result. ## Why It's Good For The Game I'll be honest this is mostly because I was looking at the code and didn't like it, I don't think there were any bugs related to this but it does reduce chat spam a little bit? It should make this behaviour more maintainable and useful in the future, as we're not copying and pasting multiple procs between different files (for both this behaviour and jaunting). ## Changelog 🆑 refactor: The actions of Statues and Creatures which can't be used while seen now share logic, and will not spam chat with feedback. /🆑 |
||
|
|
7cc6934eff |
Visual fixes (lighting, weird shit, old bugs from a parallax thing) (#73555)
<!-- 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 [Fixes a bug where anything fully dark on the floor plane would mask the lighting plane](https://github.com/tgstation/tgstation/commit/a1a03dc3393216098890b971b2271d56cb2c7463) I fucked it up boys, needed to take alpha into account here [Fixes pais getting parallax on icebox because their location was nested](https://github.com/tgstation/tgstation/commit/81252e0f45c53918a14cc0148353ec440710f8e5) God I hate this place (Note when I say get I mean they got the plane master that controls it, not that they actually got it displayed. That does appear to sometimes happen but I have no idea why) [Fixes double flashlights not activating if enabled in place](https://github.com/tgstation/tgstation/pull/73555/commits/efb8b641eaaf31990d34d6e311ce3cb21d60d880) [efb8b64](https://github.com/tgstation/tgstation/pull/73555/commits/efb8b641eaaf31990d34d6e311ce3cb21d60d880) cast_directional_light removes the lighting appearance, because it's gonna modify it, but it turns out because appearances are static when they're in like underlays/overlays, this could remove the WRONG UNDERLAY This lead to double held flashlights just... not working until you rotated. V stupid. I've also had to move the flag set to make the overlay add in cast_directional_light work. Depression ## Why It's Good For The Game Closes #73535, closes #73517, closes #73518, and fixes part of #73471 <!-- Argue for the merits of your changes and how they benefit the game, especially if they are controversial and/or far reaching. If you can't actually explain WHY what you are doing will improve the game, then it probably isn't good for the game in the first place. --> ## Changelog <!-- If your PR modifies aspects of the game that can be concretely observed by players or admins you should add a changelog. If your change does NOT meet this description, remove this section. Be sure to properly mark your PRs to prevent unnecessary GBP loss. You can read up on GBP and it's effects on PRs in the tgstation guides for contributors. Please note that maintainers freely reserve the right to remove and add tags should they deem it appropriate. You can attempt to finagle the system all you want, but it's best to shoot for clear communication right off the bat. --> 🆑 fix: Fixes activating two flashlights without moving only turning on one flashlight (until you move) fix: Purely black things drawn on the floor (like carpets, those foam dispensers, etc) will no longer cause things on top of them to be fully masked in darkness /🆑 <!-- 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. --> |
||
|
|
ab307032ed |
Nightvision Rework (In the name of color) (#73094)
## About The Pull Request Relies on #72886 for some render relay expansion I use for light_mask stuff. Hello bestie! Night vision pissed me off, so I've come to burn this place to the ground. Two sections to discuss here. First we'll talk about see_in_dark and why I hate it, second we'll discuss the lighting plane and how we brighten it, plus introducing color to the party. ### `see_in_dark` and why it kinda sucks https://www.byond.com/docs/ref/#/mob/var/see_in_dark See in dark lets us control how far away from us a turf can be before we hide it/its contents if it's dark (not got luminosity set) We currently set it semi inconsistently to provide nightvision to mobs. The trouble is stuff that produces light != stuff that sets luminosity. The worst case of this can be seen by walking out of escape on icebox, where you'll see this  Snow draws above the lighting plane, so the snow will intermittently draw, depending on see_in_dark and the luminosity from tracking lights. This would in theory be solvable by modifying the area, but the same problem applies across many things in the codebase. As things currently stand, to be emissive you NEED to have a light on your tile. People are bad at this, and honestly it's a bit much to expect of them. An emissive overlay on a canister shouldn't need an element or something and a list on turfs to manage it. This gets worse when you factor in the patterns I'm using to avoid drawing lights above nothing, which leads to lights that should show, but are misoffset because their parent pixel offsets. It's silly. We do it so we can have things like mesons without just handing out night vision, but even there the effect of just hiding objects and mobs looks baddddddd when moving. It's always bothered me. I'll complain about mesons more later, but really just like, they're too bright as it is. I'm proposing here that rather then manually hiding stuff based off distance from the player, we can instead show/hide using just the lighting plane. This means things like mesons are gonna get dimmer, but that's fine because they suck. It does have some side effects, things like view() on mobs won't hide stuff in darkness, but that's fine because none actually thinks about view like that, I think. Oh and I added a case to prevent examining stuff that's in darkness, and not right next to you when you don't have enough nightvision, to match the old behavior `see_in_dark` gave us. Now I'd like to go on a mild tangent about color, please bare with me ### Color and why `lighting_alpha` REALLY sucks You ever walk around with mesons on when there's a fire going, or an ethereal or firelocks down. You notice how there isn't really much color to our lights? Doesn't that suck? It's because the way we go about brighting lighting is by making everything on the lighting plane transparent. This is fine for brightening things, but it ends up looking kinda crummy in the end and leads to really washed out colors that should be bright. Playing engineer or miner gets fucking depressing. The central idea of this pr, that everything else falls out of, is instead of making the plane more transparent, we can use color matrixes to make things AT LEAST x bright. https://www.byond.com/docs/ref/#/{notes}/color-matrix Brief recap for color matrixes, fully expanded they're a set of 20 different values in a list Units generally scale 0-1 as multipliers, though since it's multiplication in order to make an rgb(1,1,1) pixel fullbright you would need to use 255s. A "unit matrix" for color looks like this: ``` list(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0 ) ``` The first four rows are how much each r, g, b and a impact r, g, b and well a. So a first row of `(1, 0, 0, 0)` means 1 unit of r results in 1 unit of r. and 0 units of green, blue and alpha, and so on. A first row of `(0, 1, 0, 0)` would make 1 red component into 1 green component, and leave red, blue and alpha alone, shifting any red of whatever it's applied to a green. Using these we can essentially color transform our world. It's a fun tool. But there's more. That last row there doesn't take a variable input like the others. Instead, it ADDS some fraction of 255 to red, green, blue and alpha. So a fifth row of `(1, 0, 0, 0)` would make every pixel as red as it could possibly be. This is what we're going to exploit here. You see all these values accept negative multipliers, so we can lower colors down instead of raising them up! The key idea is using color matrix filters https://www.byond.com/docs/ref/#/{notes}/filters/color to chain these operations together. Pulling alllll the way back, we want to brighten darkness without affecting brighter colors. Lower rgb values are darker, higher ones are brighter. This relationship isn't really linear because of suffering reasons, but it's good enough for this. Let's try chaining some matrixes on the lighting plane, which is bright where fullbright, and dark where dark. Take a list like this ``` list(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.2, -0.2, -0.2, 0 ) ``` That would darken the lighting a bit, but negative values will get rounded to 0 A subsequent raising by the same amount ``` list(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0.2, 0.2, 0.2, 0 ) ``` Will essentially threshold our brightness at that value. This ensures we aren't washing out colors when we make things brighter, while leaving higher values unaffected since they basically just had a constant subtracted and then readded. ### But wait, there's more You may have noticed, we gain access to individual color components here. This means not only can we darken and lighten by thresholds, we can COLOR those thresholds. ``` list(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0.1, 0.2, 0.1, 0 ) ``` Something like the above, if applied with its inverse, would tint the darkness green. The delta between the different scalars will determine how vivid the color is, and the actual value will impact the brightness. Something that's always bothered me about nightvision is it's just greyscale for the most part, there isn't any color to it. There was an old idea of coloring the game plane to match their lenses, but if you've ever played with the colorblind quirk you know that gets headachey really fast. So instead of that, lets color just the darkness that these glasses produce. It provides some reminder that you're wearing them, instead of just being something you forget about while playing, and provides a reason to use flashlights and such since they can give you a clearer, less tinted view of things while retaining the ability to look around things. I've so far applied this pattern to JUST headwear for humans (also those mining wisps) I'm planning on furthering it to mobs that use nightvision, but I wanted to get this up cause I don't wanna pr it the day before the freeze. Mesons are green, sec night vision is red, thermals orange, etc. I think the effect this gives is really really nice. I've tuned most things to work for the station, though mesons works for lavaland for obvious reasons. I've tuned things significantly darker then we have them set currently, since I really hate flat lighting and this system suffers when interacting with it. My goal with these is to give you a rough idea of what's around you, without a good eye for detail. That's the difference between say, mesons, and night vision. One helps you see outlines, the other gives you detail and prevents missing someone in the darkness. It's hard to balance this precisely because of different colored backgrounds (looking at you icebox) More can be done on this front in future but I'm quite happy with things as of now ### **EDIT** I have since expanded to all uses of nightvision, coloring most all of them. Along the way I turned some toggleable nightvision into just one level. Fullbright sucks, and I'd rather just have one "good" value. I've kept it for a few cases, mostly eyes you rip out of mobs. Impacted mobs are nightmares, aliens, zombies, revenants, states and sort of stands. I've done a pass on all mobs and items that impact nightvision and added what I thought was the right level of color to them. This includes stuff like blobs and shuttle control consoles As with glasses much of this was around reducing vision, though I kept it stronger here, since many of these mobs rely on it for engaging with the game <details> <summary> Technical Changes </summary> #### Adds filter proc (the ones that act like templates) support to filter transitions. Found this when testing this pr, seemed silly. #### Makes our emissive mask mask all light instead This avoids dumbass overlay lighting lighting up wallmounts. We switch modes if some turfflags are set, to accomplish the same thing with more overhead, and support showing things through the darkness. Also fixes a bug where you'd only get one fullscreen object per mob, so opening and closing a submap would take it away Also also fixes the lighting backdrop not actually spanning the screen. It doesn't actually do anything anymore because of the fullscreen light we have, but just in case that's unsued. Needs cleanup in future. #### Moves openspace to its own plane that doesn't draw, maxing its color with a sprite This is to support the above We relay this plane to lighting mask so openspace can like, have lighting #### Changes our definition of nightvision to the light cutoff of night vision goggles and such Side affect of removing see_in_dark. This logic is a bit weak atm, needs some work. #### Removes the nightvision spell It's a dupe of the nightvision action button, and newly redundant since I've removed all uses of it #### Cleans up existing plane master critical defines, ensures trasnparent won't render These sucked Also transparent stuff should never render, if it does you'll get white blobs which suck </details> ## Why It's Good For The Game Videos! (Github doesn't like using a summary here I'm sorry) <details> Demonstration of ghost lighting, and color https://user-images.githubusercontent.com/58055496/215693983-99e00f9e-7214-4cf4-a76a-6e669a8a1103.mp4 Engi-glass mesons and walking in maint (Potentially overtuned, yellow is hard) https://user-images.githubusercontent.com/58055496/215695978-26e7dc45-28aa-4285-ae95-62ea3d79860f.mp4 Diagnostic nightvision goggles and see_in_dark not hiding emissives https://user-images.githubusercontent.com/58055496/215692233-115b4094-1099-4393-9e94-db2088d834f3.mp4 Sec nightvision (I just think it looks neat) https://user-images.githubusercontent.com/58055496/215692269-bc08335e-0223-49c3-9faf-d2d7b22fe2d2.mp4 Medical nightvision goggles and other colors https://user-images.githubusercontent.com/58055496/215692286-0ba3de6a-b1d5-4aed-a6eb-c32794ea45da.mp4 Miner mesons and mobs hiding in lavaland (This is basically the darkest possible environment) https://user-images.githubusercontent.com/58055496/215696327-26958b69-0e1c-4412-9298-4e9e68b3df68.mp4 Thermal goggles and coloring displayed mobs https://user-images.githubusercontent.com/58055496/215692710-d2b101f3-7922-498c-918c-9b528d181430.mp4 </details> I think it's pretty, and see_in_dark sucks butt. ## Changelog <!-- If your PR modifies aspects of the game that can be concretely observed by players or admins you should add a changelog. If your change does NOT meet this description, remove this section. Be sure to properly mark your PRs to prevent unnecessary GBP loss. You can read up on GBP and it's effects on PRs in the tgstation guides for contributors. Please note that maintainers freely reserve the right to remove and add tags should they deem it appropriate. You can attempt to finagle the system all you want, but it's best to shoot for clear communication right off the bat. --> 🆑 add: The darkness that glasses and hud goggles that impact your nightvision (think mesons, nightvision goggles, etc) lighten is now tinted to match the glasses. S pretty IMO, and hopefully it helps with forgetting you're wearing X. balance: Nightvision is darker. I think bright looks bad, and things like mesons do way too much balance: Mesons (and mobs in general) no longer have a static distance you can see stuff in the dark. If a tile is lit, you can now see it. fix: Nightvision no longer dims colored lights, instead simply thresholding off bits of darkness that are dimmer then some level. /🆑 |
||
|
|
689b25bf38 | Fixes HUD elements not being set properly on Login() (#73245) | ||
|
|
d67555a0b5 |
the inevitable Revert "Refactors admin verbs from giant ass lists into datums" in case stuff breaks (#73206)
Reverts tgstation/tgstation#72407 |
||
|
|
7f25d7f17b |
Refactors admin verbs from giant ass lists into datums (#72407)
## About The Pull Request See title. ## Why It's Good For The Game Makes it easier for people to add new admin buttons, and also removes the giant ass ugly lists that are an affront to my eyes. Yes you are still able to call them manually via the verb bar   ## Changelog 🆑 refactor: Admin verbs are now datums with a dedicated panel handler admin: Admin verbs now come with a handy description when you hover over them! /🆑 --------- Signed-off-by: GitHub <noreply@github.com> |
||
|
|
88f04ed6d4 |
fixes fov removal f12 exploit (#73107)
## About The Pull Request adds a variable to huds containing all screen objects that should be permanently there fov stuff goes there now rather than not being kept on the screen at all therefore fov no longer disappears ## Why It's Good For The Game i must torture lemon. ## Changelog 🆑 fix: fixes fov removal f12 exploit /🆑 |
||
|
|
51f02b5acc |
Fixes critical plane masters improperly not being readded in show_to (#72604)
## About The Pull Request [Adds support for pulling z offset context from an atom's plane](https://github.com/tgstation/tgstation/commit/9f215c5316e5cfdbedf6a23ff97dfee0e523354b) This is needed to fix paper bins, since the object we plane set there isn't actually on a z level. Useful elsewhere too! [Fixes compiler errors that came from asserting that plane spokesmen had a plane var](https://github.com/tgstation/tgstation/commit/b830002443f2fbe230e9ff00236d7a46a9f2eec7) [Ensures lighting backdrops ALWAYS exist for each lighting plane.](https://github.com/tgstation/tgstation/commit/0e931169f7c5336333bc6f41353c82f603fc1170) They can't float becuase we can see more then one plane at once yaknow? [Fixes parallax going to shit if a mob moved zs without having a client](https://github.com/tgstation/tgstation/commit/244b2b25baecfc644505a3ea1e348e0cb97a04e0) Issue lies with how is_outside_bounds just blocked any plane readding It's possible for a client to not be connected during z moves, so we need to account for them rejoining in show_to, instead of just blocking any of our edge cases. Fixing this involved having parallax override blocks for show_plane and anything with the right critical flags ensuring mobs have JUST the right PMs and relays. It's duped logic but I'm unsure of how else to handle it and frankly this stuff is just kinda depressing. Might refactor later [show_to can be called twice successfully with no hide_from call.](https://github.com/tgstation/tgstation/commit/092581a5c06f7f884f48d41c96fa9300327ef214) Ensures no runtimes off the registers from this ## Why It's Good For The Game Fixes #72543 Fixes lighting looking batshit on multiz. None reported this I cry into the night. ## Changelog 🆑 fix: Fixes parallax showing up ABOVE the game if you moved z levels while disconnected /🆑 --------- Co-authored-by: Time-Green <timkoster1@hotmail.com> |
||
|
|
e9c87c0acb |
Starlight Polish (Space is blue!) (#72886)
<!-- Write **BELOW** The Headers and **ABOVE** The comments else it may not be viewable. --> <!-- You can view Contributing.MD for a detailed description of the pull request process. --> ## About The Pull Request Adds support to underlays to realize_overlays Ensures decals properly handle plane offsets Fixes space lighting double applying if it's changeturf'd into. this will be important later Makes solar vis_contents block emissives as expected Moves transit tube overlays to update_overlays, adds emissive blockers to them #### Adds render steps An expansion on render_target based emissive blockers. They allow us to hijack an object's appearance and draw it somewhere else, or even modify it, THEN draw it somewhere else. They chain quite nicely Fixes shuttles deleting z holder objects #### Makes space emissive, makes walls and floors block emissives The core idea here goes like this: We make space glow, and give its overlays some color This way, the tile and space parallax remain fullbright, along with anything that doesn't block emissives, but anything that does block emissives will instead get shaded the color of starlight This requires a bit of extra work, see later This is done automatically with render relays, which now support specifiying layer and color (Need to make an editor for these one of these days) The emissive blocking floor stuff requires making a second render plate to prevent double scaling Also adds some new layering defines for lighting, and ensures all turf lights have a layer. We'll get to this soon #### Makes things in space blue We color them the same as starlight, by taking advantage of space being emissive This means that things in space that block emissive will block it correctly and be colored blue by the light overlay, but space itself will remain fullbright This does require redefining what always_lit means, but nothing but cordons use that so it's fineee #### Makes glass above space glow, and some other stuff Glass tiles that sit above space will now shine light with matching color to the glasses color. This includes mat tiles. Glass tiles (not mat because they have no alpha) also only partially block emissives. Adds a new proc that uses render steps to acomplish this, essentially we're cutting out bits below X alpha and drawing what remains as an emissive. #### Modifies partial space showing to support glow Essentially, alongside displaying space as an underlay, we also display a light overlay colored like starlight. That starlight overlay gets masked to only be visible in bits that do not contain any alpha. We also mask the turf lighting to not go into bits that have no alpha, to ensure we get the effect we want. This is done with that lighting layer thing I mentioned earlier. #### Makes appearance realization's list output ordered I want it output in order of overlay, sub overlay suboverlay, next overlay Need to use insert for that ## Why It's Good For The Game Pretty! Also having space be emissive is a very very good way to test for fucked emissive blockers (If it's broken why are we even drawing the overlay) I know for a fact mob blockers on lizards and socks are kinda yorked, I think there's more <details> <summary> Old </summary>    </details> <details> <summary> New </summary>    </details> ## Changelog <!-- If your PR modifies aspects of the game that can be concretely observed by players or admins you should add a changelog. If your change does NOT meet this description, remove this section. Be sure to properly mark your PRs to prevent unnecessary GBP loss. You can read up on GBP and it's effects on PRs in the tgstation guides for contributors. Please note that maintainers freely reserve the right to remove and add tags should they deem it appropriate. You can attempt to finagle the system all you want, but it's best to shoot for clear communication right off the bat. --> 🆑 add: Space now makes things in it starlight faintly blue fix: Glass floors that display space now properly let space shine through them, rather then hiding it in the dark add: Glass floors above space now glow faintly depending on their glass type /🆑 <!-- Both 🆑's are required for the changelog to work! You can put your name to the right of the first 🆑 if you want to overwrite your GitHub username as author ingame. --> <!-- You can use multiple of the same prefix (they're only used for the icon ingame) and delete the unneeded ones. Despite some of the tags, changelogs should generally represent how a player might be affected by the changes rather than a summary of the PR's contents. --> --------- Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com> |
||
|
|
dcbceff046 |
Patches Excessive "The" Out Of Hand Offering (#73040)
<!-- 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 Hey there,  "her the hand" is rather silly, so let's trim it down a bit to be nice and generic. This alert is custom-made for the hand item, and doesn't really show up in any other context... so it should be fine? The icon will always be that hand icon so we should be fine. I wish we could have used the text macros like `\the` or something, but that doesn't play too well with alerts for some reason? I don't have the time to look into this so let's just do the simple fix of reducing the words that show up (looks better without the larger footprint imo). <!-- 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 Less confusing language, better grammar and formatting. <!-- 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. --> 🆑 spellcheck: Whenever you offer your hand to someone in need, or just wanting to pull them around- the alert that shows up to them should be a bit more clear now with a 100% decrease in non-necessary pronouns and articles. /🆑 <!-- Both 🆑's are required for the changelog to work! You can put your name to the right of the first 🆑 if you want to overwrite your GitHub username as author ingame. --> <!-- You can use multiple of the same prefix (they're only used for the icon ingame) and delete the unneeded ones. Despite some of the tags, changelogs should generally represent how a player might be affected by the changes rather than a summary of the PR's contents. --> --------- Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com> |
||
|
|
e977974750 |
Implements functionality for variable weapon attack and secondary weapon attack speeds. (#72959)
## About The Pull Request The click cooldown after attacking with a weapon can now be controlled with a var. A var can also be set for secondary attack cooldown, if unset it is the same as the weapon's normal attack speed. The two weapons who already had hardcoded mechanics to achieve this effect (see: The Stinger, Hyper Frequency Blade) have been converted to this system. ## Why It's Good For The Game Future varying of weapon qualities and admin shenanigans. ## Changelog 🆑 code: Greater support for variability in weapon attack speed admin: Admins are now able to grief you by hitting you with a toolbox 10 times in one second. /🆑 |
||
|
|
8ad6f5a2f3 |
Optimizes changing z level as a ghost by something like 85% (#73005)
<!-- Write **BELOW** The Headers and **ABOVE** The comments else it may not be viewable. --> <!-- You can view Contributing.MD for a detailed description of the pull request process. --> ## About The Pull Request <!-- Describe The Pull Request. Please be sure every change is documented or this can delay review and even discourage maintainers from merging your PR! --> Optimizes hud image addition/removal on z change We were doing a lot of repeated work here, not to mention all the proc calls. So I pushed the "operate on loops" behavior into its own proc, so I could ensure we only do some of this stuff once This plus some removal of safeties saves 75% of the cost of z level transitions as a ghost Prevents double on_changed_z_level calls from ghosts and shuttles Reacting to z changes used to be done off doMove or one of those children, timber moved it to Moved, but did not remove the calls that assumed things like abstract_move wouldn't trigger it This means that moving up/down as a ghost was causing a double call of the whole z move stack. Suprised this never broke anything tbh Makes csv stat tracking actually encode numbers properly, cleans up an indev comment from plane group code ## Why It's Good For The Game Speed, and fixes |
||
|
|
8e4d86ec8f |
Refactor: Carp Infusion & Lungs (#71940)
## About The Pull Request Recently before merging PR #71867 I failed to account for the carp lungs and spacewalk trait in my testing (I did not try to fly across space) and so I did not notice other bugs. This PR fixes the bugs/oversights which I missed in my prior PR. Fixes #72678 I have completed a refactor of `/obj/item/organ/internal/lungs/proc/check_breath` and `/mob/living/carbon/proc/check_breath` because I noticed that bugs within the gas alert system (stuck alerts) were caused by their improper execution, and the code was written in a hard-to-understand style. This PR also includes a small adjustment to status indicators which allows you to add an already existing timed indicator without overwriting it; it instead resets the existing timeout. Here is a granular list of bugs: - Bug A: Causes the spacewalk trait to not be applied to the mob, and is caused by a minor developer oversight in `/datum/status_effect/organ_set_bonus/carp/enable_bonus()` wherein it attempts to add `TRAIT_SPACEWALK` to the status effect rather than to the Mob. - Bug B: Causes the carp lungs to suffocate you in space, because that behavior is unimplemented. - Bug C: Causes the gas alert indicators ("Too much O2!" etc) to stay stuck to the screen if `check_breath` or other procs fail to remove them. This is caused by the way `check_breath` early-returns without executing the necessary logic to manage its gas alerts. - Bug D: The part of `lungs/proc/check_breath()` that removes consumed miasma from the air is only doing so when helium is also present and consumed. This PR contains fixes for these bugs: - Fix A: Added the spacewalk trait to the mob, allowing the trait to enable space flight as expected. - Fix B: Added `TRAIT_SPACEBREATHING` as a lungs trait, which is used in `check_breath`, which allows the mob to "breathe" in space or vacuum, but suffocate when breathing unsuitable gas/O2. - Fix C: Changed the proc `/mob/proc/throw_alert` such that, when throwing an alert which already exists, it resets the timeout of the existing alert rather than replacing it. - ~Fix C2: Added a 10 second timer to gas alerts. If something fails to clear them from the screen, they will now clear themselves after 10 seconds.~ - Fix D: Refactored `/mob/living/carbon/proc/check_breath` and `obj/item/organ/internal/lungs/proc/check_breath` to run the necessary logic for resetting gas side effects and gas alerts. - Removed an early-return which was causing the `check_breath` functions to skip most of their critical sections. - Fixed the part of `lungs/proc/check_breath()` that removes consumed miasma from the air, allowing it to remove the correct amount when expected to. - Added conditionals to check for `TRAIT_SPACEBREATHING` on lungs to bypass suffocation. - Added a fall-back to a default "flyweight" breath `datum/gas_mixture/empty_breath` to Carbons and lungs, used in in the event that either gets a null `breath`. - Renamed `obj/item/organ/internal/lungs/proc/handle_too_little_breath` to `handle_suffocation` and refactored it to handle more aspects of suffocation that was originally being handled inline. - Added `/obj/item/organ/internal/lungs/proc/breathe_gas_volume` to `check_breath` to replace lots of inlined logic which handles consuming/exchanging gases (O2 for CO2, etc). ## Why It's Good For The Game Shortly after PR #71867 was merged, we noticed the carp lungs and spacewalking trait were not working as expected when doing the Space Carp DNA infusion. This PR fixes the bug and allows you to spacewalk like a Space Carp again. This PR also adjusts the gas alert indicators so they don't get stuck to the screen as often. This PR also fixes a bug that was causing timed alerts to overwrite each other when it was unnecessary to do so, and helps prevent their on-throw animation from being replayed when not appropriate. I have included an intermediate refactor of `/mob/living/carbon/proc/check_breath` and `obj/item/organ/internal/lungs/proc/check_breath` in this PR, and I have tried to improve readability/maintainability while correcting critical oversights in the ways breathing was working. After my changes are merged, I will likely work on another refactor to delete duplicated sections of code between Carbons and lungs, as much of it is 99% identical. ## Changelog 🆑 A.C.M.O. refactor: Refactored breathing, mostly check_breath, for Carbons and lungs organ. add: Added the space-breathing trait for lungs. fix: Fixed the Space Carp DNA infusion to apply the Spacewalk trait, allowing you to fly through space. fix: Fixed the Space Carp lungs, allowing you to breathe in space with them. fix: Fixed gas status indicators re-playing their on-throw animation when they are refreshed. fix: Fixed gas status indicators getting stuck to the screen in some situations. fix: Fixed gas side effects, such as euphoria and hallucinations, to reset when expected. fix: For Humans, fixed Miasma only being consumed from the air when Helium is present. /🆑 --------- Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com> Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com> |
||
|
|
0007686bf5 |
Adds checkgrep for improper or missing atom Initialize args (mapload) (#72846)
## About The Pull Request Adds a grep for atom initialize overrides which does not include mapload Regex used `^/(obj|mob|turf|area|atom)/.+/Initialize\((?!mapload).*\)` Also replaced some space indentation with some tab indentation in some other greps  ## Why It's Good For The Game See #69107, #61759, #61623 ## Changelog No player facing changes |
||
|
|
9d0cdfe909 | Adds an Escape Menu (#72906) | ||
|
|
18b041bf47 |
Add logging for manually changing your targeted zone (#72814)
## About The Pull Request See title. Surgery hud is exempt from this. ## Why It's Good For The Game Requested by @Mothblocks ## Changelog Signed-off-by: GitHub <noreply@github.com> Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com> Co-authored-by: dragomagol <66640614+dragomagol@users.noreply.github.com> |
||
|
|
c3a1f21c1a |
Converts blindness and nearsightedness to status effects, scratches some VERY dumb blindness handling that resulted in mobs becoming "incurably" blind (#72267)
## About The Pull Request - Nearsighted is now a grouped status effect. - Blindness is now a grouped status effect. - Eye handling of blindness has improved. - When eyes are removed, they now cause you to become blind, rather than handling it in `update_tint`. - Being ahealed no longer blinds you for one tick, meaning that black overlay on aheal is gone. - Temporary Blindness is now a status effect. - Both Nearsightedness and Blindness have been exorcised from mob vars and life chains. This means that we've finally cut 2 procs from life, `handle_status_effect` and `handle_traits`, and moved both to event based processing. Wooo optimizations. - Swapped pacifism status effect to use apply and set helpers. - Removed an unused admin toggle that disabled welding helmet tint but also tint from every clothing item and also blindness from losing your eyes. - Clothes now generally all blind their mob more consistently. - Oculine, eye surgery, and sensory restoration are now no longer the only way to fix blindness from eye damage. If your eyes are healed through any other means, it will also heal your blindness. - Some things that made you blind, such as ling blind sting, no longer just flat made you blind from eye damage forever. They now cause eye damage directly, which in turn makes you blind from eye damage, as expected. - Pacifists can't eyestab anymore. Eyestabs now have a limit on the amount of blur applied. - Refactored some `is_x_covered` procs to accept flags rather than have a lot of arguments for some silly reason. - Unit tests for blindness. ## Why It's Good For The Game Blindness was exceptionally poorly handled prior, primarily due to the fact that it was tied to the mob instead of separated out On top of that the system put a LOT of faith in proper handling of blindness on the coder's end which was misplaced evidently. Many places didn't update or handle blindness correctly, or just let people perma-blind. Deferring it to a status effect improves this a lot ## Changelog 🆑 Melbert refactor: Refactored blindness and nearsightedness. Important to note is that all mobs are naturally blind until their eyes are actually created. refactor: Refactored "is covered" procs fix: Less sources of blindness now cause permanent blindness. Includes the "Blind" Spell and "Blind Sting" from changelings. admin: Ahealing someone no longer flashes the blind overlay for 1 tick. admin: I removed an unused (sort of) inaccessible admin verb that allowed you to toggle the tint from all welding helmets (and clothing) (and lack of eyes) in existence, let me know if you want similar back balance: Changeling "Blind Sting" now causes eye damage (enough to blind) rather than arbitrarily forcing blindness. balance: Visionloss virus symptom now causes eye damage (enough to blind) rather than arbitrarily forcing blindness. balance: Oculine has been reworked slightly. Prior, Oculine arbitrarily healed blindness and nearsightedness from eye damage reagrdless of how damaged the eyes were, and applied blur on success. Now, Oculine just heals eye damage, and blindness / nearsightedness is restored in the process. There is now a probability every tick that eye blur is applied based on how pure the oculine is while healing very damaged eyes. balance: Pacifists can no longer eyestab. balance: Any clothing item that covers your eyes contributes to getting the bonus while sleeping, and to removing temporary blindness faster /🆑 |
||
|
|
f0c6bab3a8 |
Don't call afterattack() twice in the attack chain (#72617)
## About The Pull Request It wasn't caused but went un-noticed in #72292 that `afterattack()` proc was called twice towards the end of the attack chain. Just randomly noticed this when browsing the code ## Changelog 🆑 fix: don't call after attack twice /🆑 Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com> |
||
|
|
2f7e70d11d |
Removes double spaces in defines and removes some unused ones (#72466)
## About The Pull Request 1. Removes unused defines (DIAG_CIRCUIT_HUD, LIGHTING_BASE_MATRIX, pda_styles and the defines it uses, MAFIA_MEDAL_CHARISMATIC & MAFIA_MEDAL_VIP). 2. Removes double spaces (or tab->space & space->tab) from everywhere I saw them in the defines folder (unless used by autodoc) 3. Removes the unecessary amount of tabs from lists in HubMigrator, this PR was at first gonna be around achievements but this just bugged me, which spiraled into this. ## Why It's Good For The Game me when i spread my code standards onto the codebase i contribute to this doesn't affect the game however it does make the defines look cleaner and brings it up to date with our most recent standards. ## Changelog not player-facing. |
||
|
|
9740f104d0 |
Contextual tutorials for swapping hands and dropping items (#72292)
# Requires https://github.com/tgstation/tgstation/pull/72320 ## About The Pull Request https://user-images.githubusercontent.com/35135081/209700892-e54be6cf-d18c-4d12-acd1-e5eb46e9d82d.mp4 https://user-images.githubusercontent.com/35135081/209700911-751b8a0e-d770-49fa-a6eb-ce50aa0fa670.mp4 --- Adds a system for tutorials that: - Are contextually given - Are not given again after completion - Can optionally not trigger for anyone who first played before a certain date Uses this system for a tutorial for switching hands/dropping items. This tutorial is triggered when you try to click on an item with another item, and `afterattack` return FALSE. In order for this to work as smoothly as possible, I'm going to open a separate PR that cleans up the `afterattack` on everything to either return TRUE/FALSE. ## Why It's Good For The Game SS13 is an extremely confusing game, being able to do tutorials in a non-intrusive way (like a separate tutorial mode) is nice. The system in place is going to be perfectly usable for introducing mechanics to both fresh players and experienced players alike (such as for future content). ## Changelog 🆑 qol: New players will now get a contextual tutorial for how to switch hands and drop items. /🆑 Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com> |
||
|
|
583f65f28b |
Dogs become tamed when given bones (#72363)
## About The Pull Request Previous to this PR Ian (and any other dog) would swear allegiance and kill (or at least growl aggressively) in the name of anyone who clicked on them sufficiently with combat mode disabled, which is boring. Now instead Ian wants Jumbo Dog Bones. The HoP and Warden (as dog owners) both start with one of these mythical items which otherwise can be ordered from cargo if you want to get into a dog's heart, but they're not cheap. You can also use regular bones of the kind you may harvest from Lavaland animals or Skeleton crew members but these dogs are picky and so you have significantly less chance of success than if you buy the premium package. Jumbo Dog Bones also fully heal dogs, as a bonus. Additionally to this, I added functionality to the `tameable` component to allow it to not delete itself upon successful taming, to preserve Ian's ability to have more than one friend. Additionally to that, I split the "stop being friends if you attack me" behaviour into its own element rather than being part of the "start being friends if you pet me a lot" one, so he could also keep doing that. And finally I added a new signal `COMSIG_ATOM_AFTER_ATTACKEDBY` which is sent by an atom after an item attacks it (so if it manages to get through the attack chain and is probably actually being used for an attack) and registered to this in the `relay_attackers` element in place of `COMSIG_PARENT_ATTACKBY`. This means that dogs can now recognise that when you use a bone on them you are trying to feed them, not attack them. ## Why It's Good For The Game The loyalty of Ian and McGriff will now be most easily available to their owners rather than anyone with access to their office. ... which doesn't really effect very much, I just think spam-clicking Ian was boring as a solution and spending money is at least marginally better. Gives you something to spend money on if you want to befriend a dog, for instance if you're a mailperson or felinid who is tired of getting growled at by one. Or if you bought a dog from cargo. Removes some unintuitive edge cases where a mob might get mad at you doing something helpful to them. ## Changelog 🆑 balance: While Ian still enjoys being petted, his heart will now most closely belong to anyone who gives him an expensive luxury dog bone. code: Using an item which _can_ deal damage on a mob tracking hostile actions (such as a dog) won't automatically be considered to be a hostile action if you aren't actually hitting it with the item. /🆑 |
||
|
|
f54dcda1c0 |
afterattack now returns a flag if it's reasonable to suspect the user intends to act on an item (#72320)
Necessary for #72292 to work effectively, and probably not very useful out of that context. Split out of its own PR because this is long and boring. I want to make sure that we're catching actual mistakes there, and not just experiencing side effects of how shitty the attack chain is. |
||
|
|
1532156d0e |
Rescale SM health from 900 to 100, UI improvements, visual changes. (#72252)
Rescaling because i saw someone think that the number on the supermatter UI are actually the percent damage over time, which is wrong. Added delta symbol to damage and energy since they actually denote change, not the actual value. Chose the numbers that look good instead of doing a 1:1 rescale of the old one (i.e. im dividing or multiplying things by 10 instead of 9). In practice this means I'm lowering the damage cap but increasing damage over the board for atmos (since it's mostly divisors). Lowered the damage overall for external stuffs. A bit of modification on the filter helpers to suit my needs. Added documentation because I'm awesome. |
||
|
|
4c78699486 |
Blob QoL: Orbit menu & Antag Info (#72195)
## About The Pull Request Blob UI refactor that started from sorting blobs into their appropriate orbit section. Original issue: Permanently hostile antags like blob can produce minions, but these lil guys don't actually get an antag datum and thus don't get sorted into the proper section in the orbit menu. Now: - Blob minions also go in "Biohazards" section of orbit UI - Blob helper text is now an antag info UI - Blobs get their own text span type instead of boring big chat - Blob minions get actual objective: Protect the core <details> <summary>View the OUTDATED blob antag info screen:</summary>  </details> ## Why It's Good For The Game Orbit menu will now properly sort player controlled blob minions into the biohazard sections, making it easier to distinguish the bad guys Blob antag info is a little easier to read, much more in line with the other antags ## Changelog 🆑 fix: Blob minions are now sorted into biohazards in orbit UI. add: Blobs now get antag info screens. add: Blob minions get objectives (protect the core!). add: Adds blob style text for victories, etc. refactor: Refactors some blob & blob minion code. /🆑 |
||
|
|
3daf3b0643 |
fixes silly stuff about basic mobs (#72260)
## About The Pull Request makes basic mob attacks call their default attacks when done by a player, rather than calling simple mob attacks makes basic mob attacks call simple animal attacks by default, until we remove simplemobs moves some stuff off to procs and flags, fixes some stuff ## Why It's Good For The Game im moving holoparasites to basic mobs and i literally cant give them secondary click attacks ## Changelog 🆑 fix: fixes moonicorns not applying pax /🆑 |
||
|
|
88de64a821 |
holopara qol update (#72042)
holoparasite types have improved code admins can now give someone a holoparasite through a new menu in vv dropdown alt click holopara abilities were moved to right click (support's beacon wasn't, but support's heal mode was) holoparas have less hardcoded stuff so admins can edit them easier holoparasites now get their light color from their guardian color holoparasites no longer have the hostile faction, things will attack them holoparasites now have a damage overlay, so you can see how much your summoner is damaged holoparasite health updating is now event based rather than running on life, so you'll see health changes everytime they happen, rather than every 2 seconds holoparasites fly properly again (they cant spacewalk, but count as flying for stuff like chasms) holoparasite creation now uses a radial menu with tooltips for each subtype. it also shows ghosts which type you picked holoparasites can no longer be fugu'd adds support for ownerless holoparasites fixes mildly related bugs along the way |
||
|
|
99537d0123 |
Fixes parallax on >2 level maps going fucky with optimized multiz (#72169)
## About The Pull Request We no longer always render parallax. This was causing issues because we can't isolate the white of space from the vaugely white of everything else. So instead, if your parallax plane is out of view, we'll not only disable it, but we'll disable the strand we send from the main plane TO it. Instead only blending against the bottom stack. This does mean there's a possibility for fullwhite on z transition borders (potentially fixable), or when hijacking the plane (also fixable, but significantly more annoying). This is enough to make large maps functional though, so I'm happy with it ## Why It's Good For The Game Allows for #71731 and other maps like it. Makes my code actually work ## Changelog 🆑 fix: Using optimized multiz on > 2 z layer maps will no longer cause fucko bungo /🆑 |