mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-06-26 16:44:47 +01:00
f34174414d2dc4fd35fa4e4100eadff00d05846a
4873 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
28700d6304 |
Fixes a cardboard box hard del (#80547)
## About The Pull Request  Should fix this hard del caused by a mob being deleted while inside the `alerted` list. Also cleans up the code a little bit. ## Why It's Good For The Game Bugfix ## Changelog 🆑 fix: fixes a potential mob hard del with cardboard boxes /🆑 |
||
|
|
044f27f886 |
Adds Head of Security beret and bowman to their locker (#80503)
## About The Pull Request adds Head of Security beret to their garmet bag and adds Head of Security bowman to their locker ## Why It's Good For The Game Other departments start with their round start drip in their lockers, Head of Security should too, for consistency! Promoted Head of Security should get their fancy beret and headset ## Changelog 🆑 qol: Head of Security beret added to their garmet bag qol: Head of Security bowman added to their locker /🆑 |
||
|
|
260b98c277 |
Alien nests and some other stuf can be hit again. (#80418)
## About The Pull Request Another small issue fixed. Thanks Melbert for telling us what's wrong with it. EDIT: other objects were rendered unhittable by that flags refactor PR. ## Why It's Good For The Game Fixes #80311. I made the xmas tree indestructible because the comment to the `NO_DECONSTRUCTION` flag didn't make a load of sense since that doesn't stop it from getting destroyed anyway. ## Changelog 🆑 MrMelbert, Ghommie fix: Alien nests, and some other stuff, can be physically attacked again. balance: x-mas trees (the ones with presents), are indestructibles. Truly protected by a yuletide spirit. /🆑 |
||
|
|
ca26f7528b |
Roundstart AIs are positronic (#80355)
## About The Pull Request If you disassemble an AI which was in the round from the start it will produce a Positronic Cube rather than an MMI with the brain of that player's usual human character in it. Also I made changes to a couple of feedback balloon alerts which would always trigger a runtime when constructing or deconstructing an AI, this was because balloon alerts have a small time delay before executing and we deleted the AI mob or structure after trying to show a balloon alert on them, so they'd never appear. ## Why It's Good For The Game Honestly this is _mostly_ about vibes, it has annoyed me since AI deconstruction was added that Nanotrasen AIs tend to actually be brains in jars rather than AIs. Now they're artifical. It does also mean that you can't deconstruct the AI and then put its brain into a human body, which is similarly mostly bad because of vibes: If you sign up as an AI I think you should be an AI or a cyborg even after deconstruction. It also universally looks really stupid when you deconstruct an AI and it says it has the brain of Penelope Dreadful in there, like should I expect them to start RPing as their normal character instead of the AI they have been playing all round now? ## Changelog 🆑 balance: Roundstart AIs are now made of positronic cubes, rather than brains inside MMIs /🆑 --------- Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com> |
||
|
|
536381d308 |
Fitness rebalance and improvements - mood, fireman carry, and longer workouts (#79584)
## About The Pull Request So after getting feedback on fitness I've decided to make some balance changes: - ~~Every level of fitness now increases max hp. At max legendary fitness, all the hp bonuses combined results in a total of +25 max hp~~ - Fitness now decreases the time it takes to firemany carry by 0.33 seconds per level. (At max fitness, this means a decrease of 2 seconds) - Exercise status effect triggers the exercise mood event and goes away when the exercise status effect is gone - The better your fitness level, the more happiness you gain from the mood event - Decreased the fitness timers and effects by half and tweaked a few other values - Increased the nutrition cost of working out - Removed doubles metabolism exercise effect I'd also like this test merged to see if anymore minor tweaks need to be made. ## Why It's Good For The Game Fitness effects on gameplay were pretty underwhelming. This was deliberate since there is a concern about prisoners being able to abuse it in quite a lot of scenarios. ~~Adding a small boost to max hp is nice given that the downside is a bigger target.~~ Another problem was that the double metabolism rate resulted in a lot of the diet effects being metabolised before you could convert them into exercise gains. So this was removed. People would also hit their bench max rather quickly and then spend a long duration sleeping. Ideally I wanted people to spend more time working out than sleeping, so I halved the duration values so it takes them longer to achieve maxxing out. ## Changelog 🆑 balance: Fitness level decreases the time it takes to firemany carry someone. Fitness level determines how much of a positive mood the workout grants. Working out is now more difficult and requires more nutrition. balance: Exercise no longer triggers double metabolism. /🆑 --------- Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com> Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com> |
||
|
|
f03084c1ca |
FOV is Dead (Long Live FOV) (#80062)
## About The Pull Request FOV as it is currently implemented is incompatible* with wallening. I'm doin wallening, so we gotta redo things here. The issue is the masking of mobs. Wallening relies on sidemap (layering based off physical position), which only works on things on the same plane (because planes are basically sheets we render down onto) So rather then masking mobs, let's reuse the masking idea from old fov, and use it to cut out a bit of the game render plane, and blur/over-saturate the bit that's masked out. My hope is this makes things visible in light, but not as much in darkness, alongside making more vivid shit more easily seen (just like real life) Here's some videos, what follows after is the commits I care about (since I had to rip a bunch of planes to nothing, so the files changed tab might be a bit of a mess) Oh also I had to remove the darkness pref since the darkness is doing a lot of the heavy lifting now. I'm sorry. Edit: NEW FOV SPRITES! Thanks dongle your aviator glasses will guide us to a better future. https://github.com/tgstation/tgstation/assets/58055496/afa9eeb8-8b7b-4364-b0c0-7ac8070b5609 https://github.com/tgstation/tgstation/assets/58055496/0eff040c-8bf1-47e4-a4f3-dac56fb2ccc8 ## Commits I Care About [Implements something like fov, but without the planes as layers hell](https://github.com/tgstation/tgstation/commit/a604c7b1c8d74cd27af4d806d85892c1f7e35ba8) Rather then masking out mobs standing behind us, we use a combo color matrix and blur filter to make the stuff covered by fov harder to see. We achive this by splitting the game plane into two, masking both by fov (one normally and one inversely), and then applying effects to one of the two. I want to make the fov fullscreens more gradient, but as an effect this is a good start [Removes WALL_PLANE_UPPER by adding a WALL_PLANE overlay to material walls (init cost comes here)](https://github.com/tgstation/tgstation/commit/25489337392f708cb337fbf05a2329eacdfc5346) @Mothblocks see this. comment in commit explains further but uh, we need to draw material walls to the light mask plane so things actually can be seen on them, but we can't do that and also have them be big, so they get an overlay. Sorry, slight init time bump, about 0.5 seconds. I can kill it with wallening. [Moves SEETHROUGH_PLANE above ABOVE_GAME_PLANE](https://github.com/tgstation/tgstation/commit/beec4c00e01d34a04fba7c2bb98a9b70d27ead82) I don't think it actually wants to draw here @Time-Green I think this was you so pinging for opinion [Resprites FOV masks to be clean (and more consistent)](https://github.com/tgstation/tgstation/pull/80062/commits/f02ad13696b3b17658af612c62848b48609d785d) [f02ad13](https://github.com/tgstation/tgstation/pull/80062/commits/f02ad13696b3b17658af612c62848b48609d785d) This is 100% donglesplonge's work, he's spent a week or so going back and forth with me sharpening these to a mirror shine, real chill ## Why It's Good For The Game Walls are closing in ## Changelog 🆑 LemonInTheDark, Donglesplonge image: Redoes fov "mask" sprites. They're clean, have a very pleasant dithering effect, and look real fuckin good! del: Changed FOV, it no longer hides mobs, instead it blurs the hidden area, and makes it a bit darker/oversaturated /🆑 ###### * It's technically possible if we start using render targets to create 2 sets of sources but that's insane and we aren't doing it |
||
|
|
b386d332c1 |
Reworks morgue trays. Freezers and morgue trays now have their own internal air. Organs no longer take damage when below freezing temperatures. (#80219)
## About The Pull Request Morgue trays will now appear green if there's a revivable person within the morgue tray with a key/ghost attached. They will make periodic beeps every minute, which can be turned off. Morgue trays and freezers now have an internal gasmix which automatically cools down to -60 celsius degrees. As a result of this, organs will not take damage when temperatures are below 0 celsius degrees. If an organ is within a carbon, it will take from the carbon's body temperature instead of the external temperature. This means that if they are covered in insulating wear, organs can still take damage if in a freezer or morgue since their body temperature won't decrease immediately. ## Why It's Good For The Game Morgue trays are in a somewhat bad place with how they require you to stay in your body if you are revivable so that they appear green. This changes that. They're also supposed to preserve organs but they fail at doing that, so organ preservation has been overhauled completely to be more interesting. ## Changelog 🆑 balance: Organs can now be preserved by putting them in freezing temperatures. balance: Morgue trays and freezers will now cool down the contents placed inside of them. balance: Morgue trays will now properly display if someone stored within them is revivable and make periodic beeps every minute. /🆑 --------- Co-authored-by: Watermelon914 <3052169-Watermelon914@users.noreply.gitlab.com> |
||
|
|
71a1fee2f1 |
Explodes device.dmi (#80025)
## About The Pull Request I woke up today and thought 'what would be easy thing to do today so I can say I've done something?'. Then I remembered I saw several gangtool usages the time I split radio up, and I could remedy those. 7 hours later, device.dmi is split in a folder of its own, and I've also given unique sprites to door remotes and landing desginators. ## Why It's Good For The Game The device.dmi was kind of a mess. ## Changelog 🆑 /🆑 |
||
|
|
1e76fd70b4 |
Attack chain refactoring: Broadening tool_act into item_interact, moving some item interactions to... atom/item_interact / item/interact_with_atom (#79968)
## About The Pull Request Implements half of this (with some minor changes):  The ultimate goal of this is to split our attack chain in two: - One for non-combat item interactions - Health analyzer scanning - using tools on stuff - surgery - Niche other interactions - One for combat attacking - Item hit thing, item deal damage. - Special effects on attack would go here. This PR begins this by broadining tool act into item interact. Item interact is a catch-all proc ran at the beginning of attack chain, before `pre_attack` and such, that handles the first part of the chain. This allows us to easily catch item interaction and cancel the attack part of the chain by using deliberate bitflag return values, rather than `TRUE` / `FALSE`*. *Because right now, `TRUE` = `cancel attack`, no matter what, which is unclear to people. Instead of moving as much as possible to the new proc in this PR, I started by doing some easy, obvious things. More things can be moved in the future, or technically they don't even need to move in a lot of cases. ## Changelog 🆑 Melbert refactor: Refactored some methods of items interacting with other objects or mobs, such as surgery and health analzyers. Report if anything seems wrong /🆑 |
||
|
|
4dce402e72 |
Fixes false walls icons using the wrong icon files (#80175)
## About The Pull Request Closes #80180 I was trying to merge https://github.com/tgstation/tgstation/pull/79659/ downstream and I couldn't figure out why the false wall icons were not showing up ingame--turns out there was a bug. The icon files for false walls and the 'fake' (normal wall) version were just in each others' spots and needed to be swapped. ## Why It's Good For The Game <details><summary>No more invisible sprites</summary>  </details> ## Changelog 🆑 fix: false walls icons will now display again /🆑 |
||
|
|
5ce9d5806d |
Scopes NODECONSTRUCT_1 from flags_1 to obj_flags (#80104)
This flag only worked on the `/obj/structure` and `/obj/machinery` level, so let's rescope it from `flags_1` and put it where it belongs - `obj_flags`. Bitflag operators should be scoped to their subtype specific bitfield, not really useful to have this take up a spot on the `/atom` level if absolutely nothing other than `/obj`s use it. |
||
|
|
e9f12be172 |
Changes Virology Rather Than Killing It (#79854)
## About The Pull Request God, alright, here we go. See HackMD here: https://hackmd.io/@Higgin/HJljdBuNp Alternative proposal to #79849 addressing the big problems with virology. ~~If you need a HackMD for it, I'll put one together, but I made a comment on that PR and can make it pretty simple here.~~ its done 1. Makes viruses eventually self-cure as long as you're alive. If you can keep somebody from dying, they can develop immunity. 2. Makes it so you can sleep comfortably and be well-fed to slow and even potentially defeat viruses without a cure. 3. Makes it so more dangerous viruses can start self-curing faster. This means Space Ebola is going to burn itself out quicker if a person stays alive from the other effects. 4. Makes spaceacillin helpful in naturally curing viruses, period, but with declining effectiveness over 100 cycles. 5. Makes it so curing a virus naturally without being well-fed or having rode it out from the peak may allow you to be reinfected/not have natural immunity. 6. Makes it so being well-fed is a much stronger protection against random virus spread. 7. Makes it so bypasses_immunity stuff like fungal TB and heart failure isn't subject to any of this. 8. Makes it so using ~~antibiotics~~ spaceacillin jesus christ or being malnourished can make you lose your healing viruses too. Pay attention to what you put in your body. 9. ** Makes it so blood can ~~transmit resistances again, not just vaccines. It's been a hot minute, but it used to work like this.~~ blood now can cure a virus if the donor has a resistance, but it doesn't confer lasting immunity. You need to overcome the virus yourself, carry a constant supply of pure blood, or get a vaccine to get a lasting fix. 10. ** makes severity a function of disease stats and all active symptoms - not just the highest severity of the active symptoms. 11. ** makes it so you can nosell symptoms firing with spaceacillin or resting down to a minimum chance of cure_chance to avoid symptoms each cycle, declining over time, over 100 cycles for a given disease. 12. ** makes it so wearing protective equipment prevents you from spreading respiratory-spread diseases normally - not just on the cough/sneezing symptoms. 13. ** gives MDs virology access standard, paramedics and coroners virology access on skeleton crew. virologists also get pharmacy access. 14. ** makes bypasses_immunity advanced diseases always override non-bypasses_immunity advanced diseases and resist being overridden by other advanced diseases. Sentient Disease now has bypasses_immunity. Sentient Disease fans rejoice! 15. ** also gives SD a buffer of extra stealth points so it has a bit longer to build up instead of almost uniformly getting spotted and dying early. 16. ** viruses now scale their severity as a function of their max symptoms. There's a lot more room to get viruses of varying duration and severity by adding fewer symptoms now - so creating a tradeoff between stats (and good thresholds) and the duration of your virus. 17. ** a whole bunch of defines to control all of this stuff - most recently added a multiplier for symptom appearance frequency. MAJOR UPDATES: REBALANCING TOWARDS 50% LETHALITY https://docs.google.com/spreadsheets/d/e/2PACX-1vQ8rqMYFsR1mYj_FGzVjTfcnAF7un-VofOByPxcCCQr6lOOF5fhUgZga0oA4Q5-7K4hr7fCV0jFdmd9/pubhtml# [Viro Rework Rebalance Tests.pdf](https://github.com/tgstation/tgstation/files/13447208/Viro.Rework.Rebalance.Tests.pdf) After a shitload of testing, makes some of the most reliable, transmissible killers into less-reliable threats. See the above graphs and pictures for demonstrations of exactly how this was tested and done. ## Why It's Good For The Game It sucks to be hard-stuck to needing chemistry and medical to deal with viruses that somebody can randomly blast out without a care in the world, then be left to sit around waiting to die or otherwise be unable to do anything as the max-level symptoms fire off on repeat. This should put curing and surviving viruses much more back in the hands of normal crew without always ending up at the chemistry front window, although that is still the fastest and most reliable way to get better. This also nerfs healing viruses a bit, or makes them a bit less fire-and-forget if you fail to attend to your body. There's more I'd like to do in the future and potentially some of the other classic viruses that could use bypasses_immunity added, values tweaked, but for now - this seems like the best way to preserve virology as a level of depth and complexity in the game in a way that rewards people doing intuitive things to counterplay it when used harmfully. This also puts more of the mid-range bad symptoms into a better place balance-wise because the worst ones pretty much only fire at max stages. With the way this works out, you bounce back and forth between the max stage and lower stages before, over time, trending towards a cure. Symptoms that provide more significant effects at lower stages now have a place that isn't totally overshadowed by the killdeath stage 5 ARDS + junk symptoms virus Dr. Ambatu Popov shat out in five minutes (as long as you survive the initial run-in with it.) ## Changelog 🆑 balance: most diseases can now be slowed, mitigated, and eventually cured through being well-fed, resting, and using spaceacillin. Curing diseases through this way will give you immunity if you experience them at their peak/maximum and aren't starving/malnourished when they cure. balance: disease symptoms can be forestalled for up to 100 cycles with a declining chance of avoiding them over time using rest or spaceacillin. balance: This does not apply to things like fungal TB; it does apply to healing viruses if you don't take care of yourself by staying fed and avoiding spaceacillin. balance: disease can be cured through direct injection or ingestion of cured blood. However, curing disease in this way does not provide lasting immunity. You need to naturally beat the virus or get a vaccine for that. balance: Wearing internals or using protective equipment while infected can limit the spread of respiratory illnesses from yourself to others. Contact transmission is still possible however. balance: Medical Doctors now have roundstart virology access. Paramedics and coroners now get virology access on skeleton shift access. Virologists now have roundstart pharmacy access. balance: Sentient Diseases now resist being overridden by other advanced diseases and can always override other advanced diseases; they also have an extra bonus on their stealth stat to help make up for early outing without a bit more testing. balance: biohazard lockers now also contain a syringe of spaceacillin (in line with the orderable kit from cargo.) balance: Virus severity is now also a function of the number of symptoms out of max your virus has. Experiment with different combinations using less than six symptoms to make viruses that are deceptively less-obvious and less quick to self-cure at the tradeoff of stats. /🆑 |
||
|
|
b8fc9b367e |
Icon Autoslicing (#79659)
## About The Pull Request Ok so you know all the dmis we have that are made to work with the smoothing system? carpets, walls, etc. The proper way to edit those is to convert them into a png with 5 "states' it in (one for 0 connections, one for horizontal, one for vertical, one for all cardinals and one for all directions) and then modify THAT, then run it through [the cutter tool.](https://github.com/tgstation/icon-cutter) But none ever does that, because we explain it fucking nowhere. So instead, let's keep all those "base" files in the repo, alongside the configs they work with, and "cut" the pngs into dmis as a part of the build process. I wrote a guide for how to interact with this system as a spriter, you can find it [HERE](https://github.com/LemonInTheDark/tgstation/blob/slice-the-sky/icons/Cutter.md). [Adds a icon cutter build task](https://github.com/tgstation/tgstation/commit/52143d2e96498de92421d516e0dd3f23936f88d8) This relies on action ninja's hypnagogic (find more [here](https://github.com/actioninja/hypnagogic)), a rust based icon cutter. It operates inline with the file structure, searching the codebase for templates and resource files and compiling them down to dmis. It can do way more then just bitmask stuff, but that is what we are using it for rn. Hope is to prevent for eternity the "I'm just gonna edit each of these 255 icon states that's how this carpet was made right?" meme, and allow more expansive use of smoothing in future [Adds a lint that ensures config files work right](https://github.com/tgstation/tgstation/commit/21eeab9cf831c5fdac5a9b366478a9dab285c20c) Checks to ensure they have a paired png and dmi, and also avoids issues with uncompiled changes by double checking that nothing happens before/after a cutter run [Pulls all non smoothed states out of structures into bespoke dmis](https://github.com/tgstation/tgstation/commit/a730e0cb47fc0a622fe265bccc296cec8d3a8fea) This is required because the cutter cannot output named icon states, only the actual cut icon [Does something similar to walls](https://github.com/tgstation/tgstation/commit/40780e9481103c8ee9e16538d1c2d0cdc124eeb9) Moves reinforced walls decon stuff from their icon to a var on the type and a set of states in the reinforced_states dmi Moves falsewalls into their own dmi, this involved some changes to gamecode to ensure falsewalls knew which dmi to use and what key. Makes falsewalls display as such in editor rather then just walls Moves smoothrock's gibonite overlays into their own file for similar reasons [Same thing different day (Floors)](https://github.com/tgstation/tgstation/commit/9a3da3b69705278f39af109ac5ce86d27c2479a1) Pulls bespoke floor icon states into their own file, splits up neon carpets into multiple files to make cutting possible [Actually adds the cut templates and their matching png files](https://github.com/tgstation/tgstation/commit/1bd8920dc90d1ee1b934b6dadc39f2331854f5fa) Not much to report here, outside of I changed the prefix for bamboo walls to bamboo_wall so it works with false_walls ## Why It's Good For The Game  None should have to manually edit cut dmis. Ever. Also this makes adding a new smoothed thing trivial, don't even need to know what tool you're using to do it. V good v good. Sets us up nicely for wallening's well, wall of sprites. Some structural decisions, we are essentially committing build artifacts here. That's the best way of handling it because otherwise mappers could need to run build.bat before opening a map, and that is stupid! ## Changelog 🆑 refactor: (Almost) all smoothed icons can now be edited in their pre cut forms /🆑 |
||
|
|
bb781627ab |
The maintenance crate spawning crate is now a spawner (#80083)
## About The Pull Request `/obj/structure/closet/crate/maint` was a type of crate that spawned a completely different crate, and then deleted itself. I have decided to swap this out for an actual spawning effect. I have also did some subtypery to remove some duplicate code that handled randomly opening the spawned closet/crate (through I am not that satisfied with `/obj/effect/spawner/random/structure/closet_empty/crate/with_loot` as a sensible typepath name, I would like to ask for suggestions). I also removed a loot define, because it was no longer needed as its contents were used on a single page. ## Why It's Good For The Game Things that act like spawners should be spawners. Maybe this fixes the CI issue on northstar where a mousetrap box gets deleted before it initializes during create and destroy? It was placed above a spawner that spawned one of these self deleting crates. I am unsure, I could not replicate this issue during testing. ## Changelog Nothing player facing. |
||
|
|
f8b41f9442 |
Changes occurrences of recieve in code to receive (#80065)
## About The Pull Request I've stumbled across this enough to finally go through the entire codebase and fix it. I left out changelogs simply because rewriting history logs is bad. ## Why It's Good For The Game I find it pretty annoying because I stumble across words that are misspelled for a few seconds, and I'm likely not the only one who feels like this. Less spelling mistakes in code are better. ## Changelog 🆑 spellcheck: Occurrences of "recieve" has been changed to "receive". /🆑 |
||
|
|
a3c24dd74e |
Basic bots (medibots) (#79955)
## About The Pull Request refactors bots into basic bots. i decided to do medibots first because they were the most complex bots and wanted to get them out of the way first. if this pr gets merged then i will be rolling out the rest of the bot refactors over the next months medibots can now wear any type of hats! some of these hats can trigger unique new recorded voicelines and interactions!   ## Why It's Good For The Game converts medbots into basic medbots. they are now a bit more responsive than before but overall they should act similarly to how they did. also adds the basic bot ai framework which has all the generic bot behaviors that the next bots may or may not need to have in their ai. i tried my best to improve their code and turned some of their bitflags into define bitfields. this pr may need a careful review because i did it from scratch as the old bot project branch was too outdated for me to use ## Changelog 🆑 refactor: medbots are now basic bots. please report any bugs add: medbots can wear hats! /🆑 |
||
|
|
87f32e149f |
Patches Up Gifts In Anticipation Of The Holidays (#80035)
## About The Pull Request I decided to look at why everyone loves (and I despise) Christmas too much, and was met with a lot of smelly code. In fact, some of it was completely busted! Let's fix several things. * We no longer use a GLOB for "every possible item you can cram into a gift box", we now use static lists scoped to the proc. That saves us some pollution for something that really didn't need it (and only was set up that way for cacheing I believe). We also static-cache stuff that we weren't doing previously, to save even more work (in anticipation for entropic heat death of universe). * Repaths `/obj/item/a_gift` to `/obj/item/gift`. I never liked the old path and this new one is cleaner. This also uncovered a bug. * Mappers would var-edit gifts to have a unique mapped-in type, but the code never respected this. I fixed it so the behavior should now respect that rather than override the variable on Initialize(). Now the goat plushie gift will always have said goat plushie rather than just any toy. * Procs should now have the proper arg nomenclature. * Also just cleans up a lot of single letter variables and the like. There was some cooked shit that's now alphabetized and nicely multilined. ## Why It's Good For The Game Ho ho ho. ## Changelog 🆑 fix: Some mapped-in gifts that were supposed to guarantee a certain gift weren't spawning that exact gift type, this has been patched to reflect the mapper's intent. /🆑 |
||
|
|
7f7688b60a |
Demotes the "electrical conductivity" flag from flags_1 to obj_flags (#80033)
## About The Pull Request
Code to handle this flag only ever existed on the `/obj` sublevel, so
there's no need for it to be on the `/atom` level `flags_1`. There was
probably a point in time in which mobs or turfs conducted electricity
but there's zero code for it anymore so we truly just live in a society
now.
## Why It's Good For The Game
Frees up a slot on `flags_1` (which is really nice actually), proper
scoping of certain bitflag stuff, etc.
## Changelog
Not relevant to players.
I may have screwed something up, will be doing a few passes on this
myself to ensure all the search and replaces went alright but we should
be good™️
|
||
|
|
bb76600b95 |
Fixes riding vehicles on tables and lying on beds (#80053)
## About The Pull Request Fixes #80027. My bad. EDIT: Also fixes #80050. ## Why It's Good For The Game See the issues above. ## Changelog 🆑 fix: Fixed an issue with the offsets of ridden vehicles on tables, and another when buckled to a bed. /🆑 |
||
|
|
ce6f2724cd |
basic cats and mini kitchen helpers (#79800)
## About The Pull Request this pr transforms cats into basic pets! cats now have some new behavior. they can carry fish and hunted mice in their mouths to deliver it to kittens, and kittens will eat them.   if a kitten sees you holding food, it will point at you and meow loudly until u give it the food. becareful when putting male cats near each other, there is a small chance they get into a heated argument and meow loudly at each other until one of them flees. also added a new small cat house for cats. cats will use these homes if u build one near them (using 5 wood planks)  Chefs can craft the cake cat and breadcat. these are useful cats because they can help the chef around in the kitchen. they will turn stoves and grills off when food is ready, so they dont burn. and the cake cat will help the chef decorate his donuts ## Why It's Good For The Game refactors cats into basic mobs and gives them a deeper ai ## Changelog 🆑 refactor: cats are now basic pets. please report any bugs. add: the cake cat and bread cat can now help the chef around in the kitchen /🆑 |
||
|
|
837ddf7d00 |
Standing on structures such as crates, tables and bed will now look like it. (#79797)
## About The Pull Request From the creator of 'cosmetic' elements such as footstep_override and immerse... I've made an element called elevation that nudges mobs a few pixels up while standing on things like tables, crates and beds. Screenshots of many clones of the same character standing on different objects:  ## Why It's Good For The Game It makes it look like the mob is actually standing on an elevated surface. ## Changelog 🆑 add: Standing on structures such as crates, tables and bed will now look like it. /🆑 |
||
|
|
8d23f9249b |
[NO GBP]RCD can build directional windows on top of existing grills (#79864)
## About The Pull Request - Fixes https://github.com/Skyrat-SS13/Skyrat-tg/issues/23788 So after #77858 was merged an unintentional side effect was rcd could no longer build directional windows on grills if they already existed on the turf. Sure rcd won't build a grill and then build a directional window on top of that but if a grill already exists on the turf the rcd should still be able to build directional windows on that grill as it helps in repairing mapped in directional windows and such. If you want to build a grill first set the mode to full tile window, build the grill and then switch to directional window to build a window on top of that grill. Or just select directional window mode and build the windows directly without a grill, choice is yours ## Changelog 🆑 fix: RCD can build directional windows on top of existing grills & without them. /🆑 |
||
|
|
2fa63146b2 |
Fixes Window Damage Overlays (#79876)
## About The Pull Request Since https://github.com/tgstation/tgstation/pull/78719, Windows lacked their damage overlays. This PR removes the **_one_** line responsible that broke the overlays. ## Why It's Good For The Game Fixes: https://github.com/tgstation/tgstation/issues/79082 ## Changelog 🆑 TwistedSilicon fix: Window damage overlays have been fixed. /🆑 <details> <summary>Before</summary> https://github.com/tgstation/tgstation/assets/106436013/694d2e46-0c76-4695-ad52-72c3cc292646 </details> <details> <summary>After</summary> https://github.com/tgstation/tgstation/assets/106436013/d843fe5c-aaab-4784-827e-5132e7acdd5e </details>  (I swear one day I will make a PR longer than 2 lines... but today is not that day.) --------- Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com> |
||
|
|
ef52047274 |
[READY] The Tackleling: Unarmed bonuses and features contribute to tackle success and failure, significant outcome overhaul, among other things (#79721)
## About The Pull Request ### Tackling Outcomes Tackling now determines success based on outcome categories. These are derived from the typical attacker/defender roll that would have previously determined the outcome on its own. A negative roll results in a negative outcome, a positive roll a positive outcome, and a result of exactly 0 resulting in a neutral outcome. The result of your roll are then passed along to the relevant proc to determine severity. The derived roll is multiplied by 10 (or -10 for the negative roll to get a positive value to roll with). Then we see if our final roll fits a severity bracket. Negative outcomes will roll to determine their outcome, and potentially could roll a less severe outcome than what our first roll would suggest. For positive outcomes, the defender's melee armor reduces the severity of the outcome. For negative outcomes, the attacker's melee armor improves the potential outcome and at least prevents more severe backlash. It'll still be negative, you can't move from a negative outcome to a positive outcome just from good armor. Most of the outcomes are fairly similar to the current outcomes, but with the inclusion of staggering one or both parties to make the subsequent potential grabs _stickier_, if that makes sense. Neutral is now a mutual stagger, but also the tackler being left upright. It's effectively net zero. ### Blocking Blocking is checked on impact, and results in a neutral outcome if the defender successfully blocks. This means our tackler isn't too severely impacted from an unsuccessful tackle ### Additional Changes Your arms ``unarmed_effectiveness`` now contributes to the attack mod and defense mod of tackles. For humans tackling humans, this often results in a net neutral result. But if you have a better arm, or the tackle target has worse arms, this can alter the outcome significantly. Any tackler with the trait TRAIT_NOGUNS (like bezerkers, Sleeping Carp users or the very unlikely chance ninjas are tackling while wearing their armor) gains a bonus to their tackles. Any suit that prevents shove knockdowns grants an attack bonus, and not just riot armor. This now includes Mk.1 Swat suits, the ones from the SWAT crate in cargo. Settlers are vulnerable to tackles, much like their dwarf cousins. They're also just as bad at tackles. Security lockers come with gripper gloves, and the sec vendor has 5 sets of gripper gloves as standard items. They also have a +1 skill bonus. This should encourage people to use tackling a bit more without having to always seek out the best gear to accomplish the task. (particularly since security is inherently pretty good at tackling with the outcome changes). The HoS gets a pair of gorilla gloves in his garment bag. If he wants them. The shove slowdown is now a new status effect, Staggered. This is just better functionality overall. Any instance of adding the shove slowdown now makes our target staggered. ## Why It's Good For The Game Tackling is a bit outdated, to say the least. Not much content has been added for a while that isn't strictly meme content. With these changes, tackling should be slightly more nuanced, considering elements such as unarmed effectiveness, the presence of martial arts, and actually properly checking block rather than notionally checking block. There is also more opportunity to protect yourself from tackle outcomes, both positive and negative. It also should be a little fairer to be on the receiving end of tackles if you have taken the time to layer up defenses against it. Attackers often overwhelmed defenders due to numbers favoring attackers more than defenders. Closes some really outdated design that was resulting in some really bizarre behaviour with regards to layered defenses against attack not having the same meaning against tackles, if only because it was looking for the wrong things and not even the correct parts of what it was looking for. Namely, blocking and shielding. The inclusion of more gripper gloves and a good outcome from using them will hopefully incentivize people to consider tacking as a useful tool, if a bit risky still due to the splat mechanics. ## Changelog 🆑 balance: Judo Joe, archnemesis of Maint Khan, has begun re-airing his midnight infomercials shilling his extremely expensive Tackle Supreme Judo Karate Training video tapes. Unable to pass up a 'bargain', Nanotrasen has purchased these tapes en masse. Tackling techniques have started to improve, as well as Nanotrasen's tackling instructional algorithms within tackle gloves. balance: The outcomes for tackling are more equalized. It isn't as feast or famine, and should be somewhat more controllable without becoming too severe. add: Blocking successfully against a tackle will force the tackle to be a neutral outcome. add: Unarmed effectiveness from arms now contributes to attacking with and defending from tackles. add: Those who refuse to use firearms (like Sleeping Carp users and insane unholy berzerkers) are better at tackling others. add: Riot specialized armor, and not just riot armor, now contributes meaningfully to tackling effectiveness. balance: MK.1 Swat Suits, the ones that come in SWAT crates, now functions similarly to riot armor. add: Settlers from the outer rims have noticed they aren't very good at protecting themselves against Judo Joe's clearly discriminatory tackling techniques. add: Security lockers come with gripper gloves, security vendors now sell them as standard items, and the HoS' garment bag now has a pair of gorilla gloves. Gripper gloves have a positive skill bonus to tackling. add: Being insane also makes you INSANELY good at tackling but also INSANELY likely to eat shit on a whiff. DO OR DIE, BITCH. refactor: Shoving slowdown and all its implementations now use a status effect, Staggered. /🆑 |
||
|
|
5627e3f1e9 |
Makes heads on pikes render correctly. (#79863)
## About The Pull Request Fixes #59037. This PR makes heads on pikes actually appear properly offset so that they're impaled on the spike instead of halfway down the shaft. In addition, the heads will actually appear on the correct layer, rather than sometimes being rendered on the _UI layer._ This means they will not inexplicably be visible to blind players.  ## Why It's Good For The Game Judging from the screenshots in the PR that added these six years ago, this has actually _never_ looked correct. For the first time, this makes heads on pikes actually look like they're meant to, rather than having way too much of the spear shoved out the top of the head. Also, fixes a fairly egregious rendering error that makes blind people see mysterious heads in the void. ## Changelog 🆑 fix: Heads impaled on spears now render in the correct place on the tip, instead of halfway down the shaft. fix: Blind personnel are no longer able to magically see heads impaled on spears from a distance. /🆑 |
||
|
|
64d90c159d | New closets (#79774) | ||
|
|
c1ed62915b |
Adds UPSIDE_DOWN movetype for negative gravity / makes Atrocinator affected by less things (#79785)
## About The Pull Request Fixes #79764 I was going to tackle this issue by slamming `TRAIT_NO_SLIP_ALL` on Atrocinator users and calling it a day, but like, that didn't feel proper. So I thought hey, we could just give them the flying movetype, even though they technically aren't flying it means they're unaffected by things that flying would make you unaffected by. Nope, this means the mob technically "negates gravity", so no falling and no feetsteps. Let's try floating - this give us feetsteps but no falling upwards. So instead of going back to square one, with `TRAIT_NO_SLIP_ALL`, I decided to go for the more complex route of just adding a movetype. Hence, move type `UPSIDE_DOWN`. This covers situations where a mob would be "floating" above the ground, but still walking. ...Negative gravity. This means overall the Atrociator acts more as you'd expect - you don't slip on ice, you don't trigger bear traps or mouse traps, you can walk over railings, unaffected by conveyor belts, etc. ## Why It's Good For The Game Makes the Atrocinator a lot more consistent with how you'd expect for it to work. Admittedly it is a bit niche use of movetypes, but it can possibly be expanded to more things in the future, who knows? I applied it to mobs on meat spikes (even though they don't move), just for proof of concept. ## Changelog 🆑 Melbert fix: Atrocinating mobs will now behave more as you'd expect. Meaning they don't slip on wet patches, can't trigger bear traps / landmines / mouse traps, ignore conveyors, and can walk over tables and railings. fix: Floating mobs are unaffected by conveyor belts, acid (on the ground), glass tables fix: Floating mobs won't squish stuff like roaches anymore fix: Fixes bear traps triggering on floating / flying mobs /🆑 --------- Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com> |
||
|
|
0141f96a13 |
Refactor icemoon wolves into basic mobs and add taming + pack behavior (#79736)
## About The Pull Request Ports icemoon wolves over to the basic mob framework with a bit of extra stuff: - Wolves call for help when attacked within a decently large radius. Because you know, pack animals. - Wolves can now be tamed with a slab of meat - When tamed, wolves can be ridden like goliath mounts. Ride wolf, life good. Pretend you're playing ARK and start shivering to death in thatch huts for that High Roleplay experience. - Tamed wolves have access to a bunch of pet commands (following, point fetching, point attacking, play dead, etc) and will also defend their owners vehemently if they're attacked. You can probably tame multiple if you wanted to. ## Why It's Good For The Game What part about riding wolves isn't entertaining? I don't really play /tg/ that much so I can't argue too much about the balance implications this might pose, but it's undoubtedly a stupid little gimmick and is likely to be used by bored assistants and miners with too much time on their hands. Especially robust individuals will probably find a million things to do with a basic mob capable of fetching, attacking on command and generally being able to defend themselves decently well. ## Changelog 🆑 yooriss refactor: Icemoon wolves now use the basic mob framework and should act more intelligently, defending their pack. add: Icemoon wolves can be tamed with slabs of meat and can be ridden as mounts once friendly. Being rather large dogs, they also have access to most of the pet commands you'd expect, such as fetching things, and violently mauling people their owners point at. /🆑 --------- Co-authored-by: san7890 <the@san7890.com> |
||
|
|
7a1b1fa9ad |
Splits placeontop proc (#79702)
## About The Pull Request I find the proc hard to read honestly. There's no reason we can't split this into two functions - the secondary functionality is used only once, in reader.dmm. ## Why It's Good For The Game Code improvement Glorious snake case ## Changelog N/A nothing player facing --------- Co-authored-by: san7890 <34697715+san7890@users.noreply.github.com> |
||
|
|
71b45e54ad |
Puts all traits in the globalvars file + CI Testing (#79642)
## About The Pull Request Fixes #76349 I didn't know that people needed to add any new traits to a global list so they can be easily read in View Variables, and was pretty shocked to find out many other people didn't know it was a thing. Let's make it a thing by testing it using a new CI Python Linter to check this. But oh no-  There were about 200+ missing traits. Alright, so let's do the following: * Move trait defines to their own dedicated folder in the `_DEFINES` folder. * Split up the traits mega-file into different files, for better organization. One for the macros, one for the sources, and a few for the "trait declarations" * Run the linter a load of times and add everything to the globalvars file, removing anything that's no longer used and figuring out where the best categorization of it is. also minor code improvements. also rename all of the ones that look weird. also fix list indentations * Also alphabetize the lists because it's easy * Move everything to a new `traits_by_type` list, while keeping the admin one the way it is for the time being while we figure out a better way to show that list to admins. * Profit ## Why It's Good For The Game Mapping trait injectors will now work for any type of trait. You shouldn't add any trait via this injector though, but you're no longer limited to coders remembering to add it to that critical list you needed. Lays the framework for a better view variables experience. This work is too lengthy to presently do, but hopefully we can get this done sooner rather than later. we will need a code-accessible way to view these traits for such a framework to be implemented, so let's just do that. Future steps are to break down the mega-declarations file into a folder full of separate files by typepath, but that requires a lot of auditing. Does need to happen one day though, there's a lot of mob traits mingled with datum traits and auuugh we gotta do this later this PR is already massive. there's probably ways to game this but this catches _my_ mistakes so good luck to everyone else (it should work for 99% of everyone) ## Changelog Nothing applicable to players. However, to mappers, the mapping trait injector should always be able to add any kind of trait (which is rather good for the times when you need it). |
||
|
|
2893b7fb97 | TGUI for Safes and Secure briefcases (Safes are now a structure, too) (#79594) | ||
|
|
130b3dfa64 |
Code compression for reagent holder. Lowers plumbing reaction chamber tick usage (#79686)
## About The Pull Request More code improvements for reagent holder. As you can see it removes a lot more code than it adds so code savings are significant. This does not touch on any floating point arithmetic, all that is behind us, this focuses on removing redundant procs and merging existing procs to achieve the same functionality so if you do see any changes in reagent related behaviour it's not intentional and should be reported as a bug here. The following code changes can be summarized into points. **1. Removes procs `get_master_reagent_id()` & `get_master_reagent_name()`** Both of these procs have the exact same functionality as `get_master_reagent()` with the only exception of returning a different value. Instead we can just call `get_master_reagent()` directly and infer the name & type of it ourselves rather than creating a wrapper proc to do it for us, therefore reducing overall code **2. Removes & Merges `remove_all_type()` proc into `remove_reagent()`** The proc `remove_all_type()` is highly inefficient, it first uses a for loop to look for the reagent to remove & then it again calls `remove_reagent()` on the reagent once it has found it. We can just embed this functionality directly into `remove_reagent()` by simply adding an additional parameter `include_subtypes`. This way the operation is faster, and we reduce the code to get the job done. Also now `remove_reagent()` will return the total volume of reagents removed rather that a simple TRUE/FALSE **3. Removes & Merges `trans_id_to()` proc into `trans_to()`** Both these procs have the same job of transferring either a single reagent or all reagents. `trans_id_to()` is a scaled down version of `trans_to()` because - It does not have any `method` var. This means if you want to transfer a single reagent to a mob/organ or any other object it does not have the functionality to expose the target to that transferred reagent. - It does not have a `multiplier` var to scale reagent volumes - It does not have code to deal with organs or stop reactions i.e. it does not have the `no_react` var. We can overcome all these short comings by simply adding an extra var `target_id` to specify what specific reagent to transfer therefore attaining the same functionality while keeping the benefits of `trans_to()` proc therefore reducing overall code **4. Lowers plumbing reaction chamber tick usage for balancing ph.** Rather than invoking a while loop to balance ph it's much easier for the player to simply make the reaction chamber wait for e.g. add a reagent that will never come. This will make the chamber wait therefore giving the reaction chamber ample time to correctly balance the ph and then remove that reagent from the list therefore getting correct ph levels. No need to create code hacks when the player can do it themselves so the while loop has been removed ## Changelog 🆑 code: removed redundant procs `get_master_reagent_id()` & `get_master_reagent_name()` code: merged `remove_all_type()` proc with `remove_reagent()` now this proc can perform both functions. `remove_reagent()` now returns the total volume of reagents removed rather than a simple TRUE/FALSE. code: merged `trans_id_to()` proc with `trans_to()` now this proc can perform both functions refactor: plumbing reaction chamber will now use only a single tick to balance ph of a solution making it less efficient but more faster. Just make the reaction chamber wait for longer periods of time to accurately balance ph refactor: reagent holder code has been condensed. Report any bugs on GitHub /🆑 |
||
|
|
2630cc119e |
New crates (#79665)
image: Crates got new sprites image: Added more crate styles |
||
|
|
7a44f10993 |
basic gutlunchers and ashwalker ranching (#79508)
## About The Pull Request this pr transforms gutlunchers into basic mobs and gives them a small ranch that ashwalkers can manage. gutlunches come in various colors and sizes! female gutlunches will come in different shades of red and males will come in shades of blue. the child born will have a mix of his parent's colors.  female gutlunches can make various healing milk and medicine from its udder. but it will need to consume ores before it can start making milk, u can either feed it by hand or u can put ores in the wooden trough and they will go eat from it whenever they get hungry. feeding it gold or bluespace ore will improve the healing quality of the milk for a short while  the male gutlunchers are obedient pets. their stats vary from one another in speed, attack and health. a male gutlunchers stats will depend on the stats of his parents, the higher his parent's stats are the better chances he has at rolling higher stats. so u can selectively breed them to make sure they have the best stats possible. they will listen to all ur commands and can mine walls or attack enemies if given the command. also i wanted the farm to have wood fences so i added them to the game, they cost 5 wood planks to make ## Why It's Good For The Game refactors gutlunches into basic mobs. also i turned breeding into a component so it can be applied to all animals and created a breed command, pets that have this command and the component will go breed with a partner u point at. ## Changelog 🆑 refactor: gutlunches have been refactored into basic mobs. please report any bugs add: ashwalkers have a small ranch they can manage fix: wall tearer compnent wont runtime when interacting with mineral walls /🆑 |
||
|
|
03a2d956fc |
Locker deconstruction message spellcheck (#79512)
## About The Pull Request Fixes a couple typos when deconstructing lockers. ## Why It's Good For The Game Better spelling, better game. ## Changelog 🆑 Bumtickley00 spellcheck: You no longer hear weaponelding when deconstructing a closet. /🆑 Co-authored-by: bumtickley00 <pebis@lol.com> |
||
|
|
91505224f5 |
Being drunk gives a chance to harm yourself when working out (#79548)
## About The Pull Request Working out when sufficiently drunk (around the amount that drunk resilience begins to heal you) now has a scaling chance to cause you to fail and harm yourself (similar to how clumsy works) when using an exercise machine None of these values are final and I'm open to making the failure it more severe (bone wounds) ## Why It's Good For The Game Partly cause its funny, partly cause realism, really cause I felt like expanding on interactions for the exercise equipment ## Changelog 🆑 add: Being sufficiently drunk now has a chance to cause working out to fail and harm you /🆑 |
||
|
|
1a62886a8b |
Fixes Shaving Beards + Mirror Code Improvement (#79529)
## About The Pull Request Fixes #79519 Basically we did a lot of assumptions that we really shouldn't do in the whole magical mirror framework (like having a boolean value for magical mirrors, what?). Anyways, I just made the UX experience a lot better when it came to bearded persons with feminine physiques to easily shave off their beard with an additional confirmatory prompt + details as well as keeping the nature of the magical mirror (giving you a swagadocious beard due to magic™️) intact. ## Why It's Good For The Game There was a lot of convoluted code that skipped through the quality filter checks (it was me i think) so let's both make the code far easier to grasp as well as ensure that people who legitimately acquire beards and wish to keep them, keep them. We were also doing some FUCK shit on attack_hand and the like (overriding a FALSE return signal to return TRUE is not what we should be doing there)- so that's also cleaned up. ## Changelog 🆑 fix: Both magic mirrors and regular mirrors are far better at respecting the choice of the beard you wish to wear (within reason, of course). /🆑 |
||
|
|
3c7005a37c |
Converts some notify_ghosts args to bitflags, multilines all notify_ghosts calls (#79320)
## About The Pull Request This helps clean up my favorite helper proc in the whole codebase, `notify_ghosts()`. The notify_suiciders, ignore_mapload, and flashwindow args are GONE. They have been replaced with the notify_flags bitflag argument. This was intended to make deadchat announcements a bitflag argument too, but those got reverted right before I originally wanted to submit this PR. The on-screen popup now shows the notification body when you hover it with your mouse again. The format is now `[notify_ghosts message] -- [click action (orbit/jump/play)]` Every single `notify_ghosts()` call has been changed to multiline format and has been given trailing commas. Pretty! ## Why It's Good For The Game Cleans up a proc that is very popular and going through a lot of changes at the time. Allows for further flexibility when this proc inevitably gets tweaked or improved. 12 -> 10 args is an improvement, and it doesn't impact the helper's flexibility at all. ## Changelog 🆑 Rhials code: The notify_ghosts proc has been cleaned up. Please report any abnormal changes in deadchat notification behavior. qol: The on-screen deadchat popups now contain the notification blurb when hovered with your mouse again. /🆑 |
||
|
|
c4c1b17643 |
Reworks Rolling Table Code (#79490)
## About The Pull Request Should be a good first step towards reducing the behavior declared in #79411, but since I couldn't get a good reproduction case, we'll have to live with that. Basically, our SIGNAL_HANDLER procs were using some way outdated arguments, causing some bits of the code to seem rather... illogical (we thought the old location was the new location??? it's wack). Anyways, I just gutted most of it and kept the same overall behavior that only lives on signals rather than doing weird stuff with proc overrides. ## Why It's Good For The Game If it doesn't root out the cause of the aforementioned issue, it should be far easier to figure out what the true issue is (when we get a proper reprod. case) beyond having weird arguments on our signals. ## Changelog I'm not certain if this fixes the issue but if it does, yippie. Worst case scenario it's a good code improvement- neither of those are good enough to show to players. |
||
|
|
aebebc824e |
[NO GBP] Fix fireplace smoke particles to work properly with all directions (#79417)
## About The Pull Request I wasn't aware we had different icon dir states for fireplaces. Although it seems that no icon state exists for `NORTH` dir fireplaces. Fixes https://github.com/Skyrat-SS13/Skyrat-tg/issues/24626 ## Why It's Good For The Game  ## Changelog 🆑 fix: Fix fireplace smoke particles to work properly with all directions /🆑 |
||
|
|
08274f8343 |
Basic Constructs: Proteon (#79425)
## About The Pull Request Last one! Makes proteons into a basic mob, and completely removes the simple_animal construct supertype. Proteons aren't really designed to be played by a player, instead being a nuisance mapped into various ruins and traps. As such, they don't really have any special abilities. Instead, the hostile variant has a somewhat unique behavior. They'll viciously attack anyone who comes close, but, being frail little cowards, if a proteon takes damage it will immediately flee. After a random period between 2 and 4 seconds, it will stop fleeing and come back for more. In addition to this, a few other things have been done, some only related because they're in files I touched. - Moved proteons from the file for the Cleric's Den to their own file in the basic constructs folder. Given that they're used in several different ruins, they might as well not just be in the file for one. - Simple constructs have been cut, and with them the procs for healing/repairing on shades and cult structures, as those are no longer needed. - Because I was touching it anyway, I touched up the file for trap structures. They no longer use any one-letter variable names, and time is now universally listed in seconds rather than deciseconds in that file. - I removed a completely unused blackboard key from ice demons. This is something I noticed due to a change I ended up not making while working on proteon AI, but I figured I might as well leave it gone. ## Why It's Good For The Game Kills the last three simple construct typepaths, bringing us to the destined 19 removed. Huzzah! The proteon AI routine should inject a little spice into fighting proteons, especially for the unprepared - unlike many mobs, they won't stand there and take it if you decide to fight back, but you can never safely ignore them when they run away. They still aren't particularly dangerous. ## Changelog 🆑 refactor: Proteon constructs now use the basic mob framework. The ones encountered in ruins are a bit flightier now, and will briefly flee combat if attacked - only so that they can return and menace you again soon after. Please report any bugs. /🆑 --------- Co-authored-by: san7890 <the@san7890.com> |
||
|
|
3722399baf |
Steam vent tooltips (#79420)
## About The Pull Request Steam vents now have basic tooltips to show you how to toggle them in-hand. I've also added a tooltip to show you to use the wrench to deconstruct. ## Why It's Good For The Game Improves the clarity of an otherwise common maintenance object, both in regular use as well as when deconstructing. ## Changelog 🆑 qol: Steam vents in maintenance now have tooltips. /🆑 |
||
|
|
6c749cf9a3 |
Holobarrier toggle removal (#79293)
## About The Pull Request
this PR removes the PENLITE holobarrier’s biometric scanner toggle
function activated by hitting the holobarrier.
## Why It's Good For The Game
This is good for the game as having the toggle is quite useless because
the only reason someone would have it up is to keep sick people out.
There is no point to turning off the biometric scanning because you may
as well have nothing put up in the first place.
This also prevents people from unknowingly turning it off allowing sick
patients to infect valuable medical staff.
## Changelog
:cl:deathrobotpunch1
del: Removed the biometric scanning toggle from the PENLITE holobarrier
/🆑
|
||
|
|
15e2aa056d |
[NO GBP]Fixes tesla zaps. (#79398)
## About The Pull Request Closes #79297 Closes #79312 Due to the new cutoff parameter being added to tesla_zap() (from #78310), and most callers used positional arguments instead of keywords, the zap flags was getting fed the shocked_targets list and maybe other junk. This caused a bunch of unusual phenomena. This is fixed by using keyword arguments. Tesla zaps that use the grid were significantly weaker in terms of damage than they're supposed to be. This was a byproduct of trying to convert everything to joules and removing unnecessary power multipliers. This is fixed by reverting the damage scaling and zap power of zap sources that aren't based on grid. Technically this will cause the zaps from other sources to have less power, but these tend to not be able to put power on grid, so this wouldn't have any change other than what a grounding rod displays. Doesn't really matter. Logs machine explosions from zap_act. Not the most helpful log (would take a lot of effort to add an extra parameter to pass the source), but better than nothing. Probably other stuff I did, lol. ## Why It's Good For The Game Stops zap fuckery. Admins can now find the explosions when a 9GeV engine decides to go haywire or whatever. ## Changelog 🆑 fix: Fixes tesla zaps being weird. admin: Logs explosions from explosive zaps. /🆑 |
||
|
|
d1ad9b6658 |
Nukie Update Followup: Returns CQC to the previous price range, Core Gear kit for newbies, hat stabilizers for everyone (#79232)
## About The Pull Request Brings the CQC kit back down to the same price range of 14 TC (it's 1 more than before weapon kits). It feels like currently that CQC is overpriced, even with the stealth box coming along with it, and by comparison the energy sword and shield got a huge value increase by combining the two. They're both melee styles and also equally difficult play styles. It isn't really necessary to make one more expensive than the other. Also now comes with syndicate smokes. It's a whatever change, ops get these for free on the base. Adds a core gear kit in the weapon category. This kit comes with a doormag, a freedom implant, stimpack and c-4 charge. All of these are items almost every nukie buys if they want to succeed, so let's inform newer players by putting it RIGHT on top of the list. This isn't at any discount, this is mostly to help inform players what items help make you successful. Hat stabilizers are now a part of every syndicate modsuit for FREE. It comes built in, can't be removed, and has no complexity cost. Now everyone can wear their wacky hats as they operate. ## Why It's Good For The Game CQC felt like it got shafted waaay too hard with the weapon case changes. Definitely don't believe that it is punching at the same weight as many of the other high cost weapons. So we've dropped it down a category. 14 TC is still a large upfront cost, even if it comes bundled with a lot of goods. Melbert gave me the idea of a core bundle kit to help newer players and I was really taken with that. So I added it as part of this followup. I want people to wear their hats goddamnit, and I didn't learn my mistake with the tool parcels. So now everyone has hat stands on their suits. WEAR THE SOMBRERO YOU **FUCK**. ### THIS IS NOW A THREAT. ## Changelog 🆑 balance: Operatives can once again read about the basics of CQC at a reasonable price of 14 TC. qol: All Syndicate MODsuits come with the potent ability to wear hats on their helmets FOR FREE. No longer does any operative need be shamed by their bald helmet's unhatted state when they spot the captain, in their MODsuit, wearing a hat on their helmet. The embarrassment has resulted in more than a few operatives prematurely detonating their implants! BUT NO LONGER! FASHION IS YOURS! qol: There is now a Core Gear Box, containing a few essential pieces of gear for success as an operative. This is right at the top of the uplink, you can't miss it! Great for those operatives just starting out, or operatives who need all their baseline equipment NOW. /🆑 |
||
|
|
d31c21ff1b |
new space ruin, the biological research outpost (#79149)
## About The Pull Request  adds this ruin to space ruin pool this is a shady (as NT always is) bioresearch outpost that got fucked up by an experiment this has like some puzzle aspect to it since you gotta find keycards and shit and press buttons to unlock shield gates this ends with you fighting a heart which if you defeat, destroys the blockade that prevents you from entering the outpost vault also you can no longer literally just cut indestructible grilles or unanchor indestructible windows ### new puzzle elements or something idk variant of pressure plate that you cannot remove and it sends a puzzle signal cooler red puzzle doors that look very foreboding or something idk theyre for this ruin also puzzle blockades, which are indestructible dense objects that are destroyed if they receive a puzzle signal and also buttons and keycard pads for puzzles https://github.com/tgstation/tgstation/assets/70376633/c98807ec-1e7b-49c4-a757-cdbb76a1b566 https://github.com/tgstation/tgstation/assets/70376633/9d5d9dd1-5868-44e6-a978-5ea57b30c298 stuff that throws electric shocks in a pattern, ignores insuls and only knocks down, and no you cannot just run past https://github.com/tgstation/tgstation/assets/70376633/5772917c-a963-48a4-a743-b0f610801d25 ### enemies living floor, it can only attack stuff on top of it and it attacks until the victim is dead it is invincible to all but a crowbar, and it cannot move, and it remains hidden until a victim is in range https://github.com/tgstation/tgstation/assets/70376633/aa1d54f6-b259-4e58-9d44-e393d2131acf living flesh, it can replace your limbs with itself the conditions for that are; the limb must have 20 or more brute, victim must be alive and dismemberable, the limb may not be torso or head, or the limb may not be living flesh alternatively it can replace a missing limb these are all checked with every attack they have 20 hp the limbs in question will sometimes act up, while passively draining nutrition, arms will randomly start pulling nearby stuff, legs may step randomly limbs when detached, turn into mobs and reactivate AI 2 seconds later. if the host is shocked, all living flesh limbs will detach, or if the host dies they will also do that https://github.com/tgstation/tgstation/assets/70376633/765cc99e-c800-4efb-aabe-d68817bbd7ae ## Why It's Good For The Game ruin variety is cool i think also the other things i added should be useful for other mappers for bitrunning or whatever also bug bad for that one fix ## Changelog 🆑 add: living floor, living flesh, and other stuff for the bioresearch outpost ruin add: bioresearch outpost ruin fix: you may not defeat indestructible grilles and windows with mere tools /🆑 --------- Co-authored-by: Jacquerel <hnevard@gmail.com> |
||
|
|
8f18b0bd8a |
Add smoke particles to fireplace (#79228)
## About The Pull Request Adds some smoke particles to the fireplace while it's burning. ## Why It's Good For The Game  ## Changelog 🆑 qol: Add smoke particles to burning fireplace /🆑 |
||
|
|
071f6063e6 |
Adds charges to omens and omen smiting. Reduces omen bad luck if nobody's nearby. (#78899)
## About The Pull Request refactor: Adds charges to omens and omen smiting rather than only being permanent or one-use. Mirrors now grant seven bad luckers. qol: Reduces omen bad luck if nobody's nearby to witness the funny. (Ghosts are included in the check!) fix: Fixed an issue where a monkey check in doorcrushing was never actually able to pass. Also they screech now. ## Why It's Good For The Game > refactor: Adds charges to omens and omen smiting rather than only being permanent or one-use. Mirrors now grant seven bad luckers. Allows for someone to get between 1-infinity omen accidents. Seriously why wasnt this a thing before > qol: Reduces omen bad luck if nobody's nearby. I LOVE this quirk, but trying to do antything at all except 'Suffer Miserably' is nigh impossible. To alleviate life a little, making it so that you have a lesser chance of suffering misfortune if nobody's around will be the perfect compromise. It makes life easier but doesn't compromise funny moments. Any client in viewrange will disable the reduction. This includes ghosts. ## Changelog 🆑 refactor: Adds charges to omens and omen smiting rather than only being permanent or one-use. Mirrors now grant seven bad luckers. qol: Reduces omen bad luck if nobody's nearby to witness the funny. (Ghosts are included in the check!) fix: Fixed an issue where a monkey check in doorcrushing was never actually able to pass. Also they screech now. /🆑 --------- Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com> |
||
|
|
b65f729901 |
Nanotrasen basic mobs. (#78917)
## About The Pull Request First and foremost, converts all Nanotrasen simplemobs into basic mobs. To avoid messy and redundant code, or god forbid, making Nanotrasen mobs a subtype of Syndicate ones, I've made Syndicate, Russian, and Nanotrasen mobs all share a unified "Trooper" parent. This should have no effect on their behaviors, but makes things much easier to extend further in the future. While most of this PR is pretty cut-and-dry, I've done a couple notable things. For one, all types of ranged trooper will now avoid friendly fire, instead of shooting their friends in the back. Even the Russians have trigger discipline. I've also created a new AI subtree that allows mobs to call for reinforcements. I've hopefully made this easy to extend, but the existing version works as follows: - A mob with this subtree that gains a target that is also a mob will call out to all mobs within 15 tiles. - If they share a faction, mobs receiving the call will have the target added to their retaliate list, and have a new key set targeting the calling mob. - If they have the correct subtree in their AI controller, called-to mobs will then run over to help out. Sadly, this behavior is currently used only by a few completely unused Nanotrasen mobs, so in practice it will not yet be seen. Finally, I've fixed a minor issue where melee Russian mobs punch people to death despite holding a knife. They now use the proper effects for stabbing instead of punching. ## Why It's Good For The Game Removes 8 more simple animals from the list. As said above, making all "trooper" type mobs share a common parent cuts down on code reuse, ensures consistency of behavior, and makes it much easier to add new troopers not affiliated with these groups. I expect that I'll make pirates share this same parent next. The new "reinforcements" behavior, though extremely powerful, opens up exciting new opportunities in the future. There aren't many existing behaviors that allow basic mobs to work _together_ in interesting ways, and I think adding some enemy teamwork could be fun. ## Changelog 🆑 refactor: Hostile Nanotrasen mobs now use the basic mob framework. This should make them a little smarter and more dangerous. Please report any bugs. fix: Russian mobs will now actually use those knives they're holding. /🆑 |
||
|
|
8ee3e8a6ba |
Adds Examine hints for Railing Deconstruction (#79205)
## About The Pull Request While railings already have contextual tips, the context requires you to already know what tool to be holding. Would probably be helpful to know at a glance which tool that is.  ## Why It's Good For The Game Usability? Is that the word? IDK I noticed it was missing as I kept hitting it with a screwdriver so I'm sure I can't be the only one. ## Changelog 🆑 qol: Railings now have Examine hints for how to deconstruct them /🆑 |