mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-11 16:14:08 +01:00
docker-container
57 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
13814fb55b |
Fixes materials runtiming whenever thrown by something other than a mob (#96107)
## About The Pull Request Closes #96062 ## Changelog 🆑 fix: Fixed materials runtiming whenever thrown by something other than a mob /🆑 |
||
|
|
0c91535120 | Arcmining: Chemical Boosting (#95530) | ||
|
|
93ea8085cb | Datumizes material effects, slots, and material spears (#95341) | ||
|
|
a3498fdcd7 | Material Science 1: A bunch of math (#95090) | ||
|
|
4f6727024d |
Crafting refactor, implementing materials (#89465)
## About The Pull Request My original plan was to just implement materials into crafting so that items would inherit the materials of their components, allowing for some interesting stuff if the material flags of the item allow it. However to my dismay crafting is a pile of old tech debt, starting from the old `del_reqs` and `CheckParts` which still contain lines about old janky bandaids that are no longer in use nor reachable, up to the `customizable_reagent_holder` component which has some harddel issues when your custom food is sliced, and items used in food recipes not being deleted and instead stored inside the result with no purpose as well as other inconsistencies like stack recipes that transfer materials having counterparts in the UI that don't do that. EDIT: Several things have come up while working on this, so I apologise that it ended up changing over 100+ files. I managed to atomize some of the changes, but it's a bit tedious. EDIT: TLDR because I was told this section is too vague and there's too much going on. This PR: - Improves the dated crafting code (not the UI). - replaced `atom/CheckParts` and `crafting_recipe/on_craft_completion` with `atom/on_craft_completion`. - Reqs used in food recipes are now deleted by default and not stored inside the result (they did nothing). - Renames the customizable_reagent_holder comp and improves it (No harddels/ref issues). - Adds a unit test that tries to craft all recipes to see what's wrong (it skips some of the much more specific reqs for now). - In the unit test is also the code to make sure materials of the crafted item and a non-crafted item of the same type are roughly the same, so far only applied to food. - Some mild material/food refactoring around the fact that food item code has been changed to support materials. ## Why It's Good For The Game Improving the backbone of the crafting system. Also materials and food code. ## Changelog 🆑 refactor: Refactored crafting backend. Report possible pesky bugs. balance: the MEAT backpack (from the MEAT cargo pack) may be a smidge different because of code standardization. /🆑 |
||
|
|
7a2927b288 |
Autolathes now accept alloys without disassembling them into their components (#90086)
## About The Pull Request Custom material designs cannot be printed with plasteel and other alloys because of this small issue. This should fix it. ## Why It's Good For The Game See above. ## Changelog 🆑 fix: Custom material toolboxes and fishing rods can now be printed with alloys such a plasteel and plasmaglass. /🆑 |
||
|
|
2d7b8a5ff6 |
material fishing rods and material fish. (#87108)
## About The Pull Request The reason why I refactored material effects code is here. In this PR I add the possibility of printing fishing rods from different materials at your nearest autolathe, though it doesn't stop there. Each material has different values for (so far) fishing difficulty, casting range, experience gained and foremost the chance of catching fish made of the same material as the fishing rod used to catch it. The material the fish is made from can either increase or decrease the weight of the fish. In a many cases, material rods can also have other small effects on fishing, like removing the chances of duds even without a bait, or attracting shiny-loving fish, or passing some other fish trait checks. In a few cases, these fishing rods can have bigger, more impactful effects on fishing. That said, here's a list of more or less the effects (skipping very minor ones and those inherited from being items) and modifiers across materials so far, a few things will be added later: <details> <summary>Huge-ass list (out-fucking-dated now that I've added 5 more variables 😢)</summary> - Iron: +30% fish weight, 8% chance of material fish - Glass: +20% fish weight, +5 difficulty, +20% experience, 8% chance of material fish - Silver: +35% fish weight, -5 difficulty, - 15% experience, 15.5% chance of material fish - Gold: +50% fish weight, -10 difficulty, -25% experience, 20.5% material fish, +1 casting range - Diamond: +40% fish weight, -13 difficulty, -30% experience, 23% material fish, -1 casting range - Uranium: +100% fish weight, 8% material fish - Plasma: +30% fish weight, 8% material fish - Bluespace: +30% fish weight, -5 difficulty, -15% experience, 23% material fish, +5 range - - 33% chance of selecting a reward from (almost) any fishing source instead of the current one. - Bananium +20 difficulty, +60% experience, 38% material fish, +3 casting range - - 20% chance of fishing either a clownfish, lubefish, donkfish, soulfish or skin crab instead - Titanium: +20% fish weight, -5 difficulty, 8% material fish, +1 range - Runite: +50% fish weight, -18 difficulty, +220% experience, 38% material fish, +1 range - Plastic: -20% fish weight -5 difficulty, +20% experience, 8% material fish, +2 range - Wood: -50% fish weight, +8 difficulty, +30% experience, 13% material fish, -1 range - Adamantine: +60% fish weight, -23 difficulty, -40% experience, 33% material fish, +1 range - Mythril: +40% fish weight, -25 difficulty, -50% experience, 43% material fish, +2 range - Hot Ice: -10% fish weight, -10 diffiulty, -10% experience, 18% material fish, +1 range - Metal Hydrogen: -40% weight, -15 difficulty, -20% experience, 23% material, +4 range - Sand: +20% weight, +30 difficulty, -80% experience, 8% material, -2 range - Sandstone: +20% weight, +25 difficulty, -70% experience, 8% material, -2 range - Snow: -20% weight, +25 difficulty, -70% experience, 8% material, -2 range - Runed Metal: +50% weight, -12 diff, -10% experience, 38% material - Bronze, +40% weight, 13% material - Paper: -60% weight, +40 diff, -90% experience, 8% material, -2 range - - Has a 20% chance of fishing up an aggressive stickman - Cardboard: Same as above, but without the stickmen - Bone: +5% weight, +15 diff, -15% experience, 8% material, -2 range - - 20% chance of fishing up either a unmarine bonemass, a unmarine mastodon, a hostile skellie or rarely a single-use spectral instrument that can turn you or someone else into a spooky scary skeleton. - Bamboo: -50% weight, -4 difficulty, +30% experience, 13% material, -1 range - Zeukerite: 20% weight, -16 difficulty, -10% experience, 28% material - Plasteel: +75% weihgt, +5 difficulty, +10% experience, 8% material - Plastitanium: +10% weight, -10 difficulty, -5% experience, 8% material, +1 range - Plasmaglass: +20% weight, +5 difficulty, +30% experience, 8% material - Titanium Glass: +25% weight, -5 difficulty, +25% experience 8% material - Plastitanium Glass: +20% weight, +50% experience, 8% material - Alien Alloy: +140% weight, -25 difficulty, 33% material, -40% experience, +2 range - Hauntium (good luck using it): +40% weight, -30 difficulty, +50% experience, 38% material, +2 range - Meat: +13 difficulty, -20% experience, 28% material, -2 range - Pizza: -10% weight, +13 difficulty, -20% experience, 28% material, -2 range </details> ## Why It's Good For The Game I think it's nice to have two features interact with each other (fishing and materials), and it adds a layer of interesting uses to some materials. ## Changelog 🆑 add: Autolathes can now print fishing rods of different materials, which can increase or decrease fishing difficulty, casting range, and experience gained, and can have other interesting effects. /🆑 |
||
|
|
cdebe98a17 |
refactoring how materials effects are added to atoms (#86901)
## About The Pull Request I'm "cooking" the materials system a bit, specifically the code responsible for applying and removing effects. My goal is to move most of the code to the objects-side, split it in smaller procs that can be more easily overriden or called for object-specific modifiers and effects, while also revamping things all around to better support items made from multiple materials (the cleric mace will most likely be one in this PR, with the handle and tip made of different materials). PR NO LONGER WIP, TESTED AND ALL, CLERIC MACES CAN NOW BE MADE OF TWO MATERIALS. ## Why It's Good For The Game One of the nastiest flaws with the materials system is that it's just unfeasable to have items made of multiple mats (with effects enabled) right now, as they easily tend to override each other, where some of the modifiers and effects should only be applied the main material. Beside, the system's starting to show signs of its time, from the several type checks used to apply different effects, the one letter variables to the the material flags that are still being passed down as arguments when you can access them from the atom/source arg anyway. It would be disonhest of me if I went ahead and coded material fishing rods or whatever fish fuckery with materials without ensuring it won't further the technical debt the feature currently has. ## Changelog 🆑 refactor: Refactored materials code. report any issue. add: Cleric maces (The autolathe-printable weapon design from outer space) can now be made of two different materials. balance: Buffed cleric maces a little. fix: toolboxes' stats are now affected by materials again. /🆑 --------- Co-authored-by: _0Steven <42909981+00-Steven@users.noreply.github.com> |
||
|
|
9a9b428b61 |
Wallening Revert [MDB Ignore][IDB Ignore] (#86161)
This PR is reverting the wallening by reverting everything up to
|
||
|
|
e1bf793264 |
Spelling and Grammar Fixes (#86022)
## About The Pull Request Fixes several errors to spelling, grammar, and punctuation. ## Why It's Good For The Game ## Changelog 🆑 spellcheck: fixed a few typos /🆑 |
||
|
|
4b4e9dff1d |
Wallening [IDB IGNORE] [MDB IGNORE] (#85491)
## What's going on here Kept you waitin huh! This pr resprites most all walls, windows and other "wall adjacent" things to a 3/4th perspective, technical term is "tall" walls (we are very smart). If you're trying to understand the technical details here, much of the "rendering tech" is built off the idea of split-vis. Basically, split a sprite up and render it on adjacent turfs, to prevent seeing "through" walls/doors, and to support seeing "edges" without actually seeing the atom itself. Most of the rest of it is pipelining done to accommodate how icons are cut. ## Path To Merge Almost* all sprites and code is done at this point. There are some things missing both on and off the bounty list, but that will be the case forever unless we force upstream (you guys) to stop adding new shit that doesn't fit the style. I plan on accepting and integrating prs to the current working repo <https://github.com/wall-nerds/wallening> up until a merge, to make contribution simpler and allow things like bounties to close out more easily This pr is quite bulky, even stripping away map changes it's maybe 7000 LOC (We have a few maps that were modified with UpdatePaths, I am also tentatively pring our test map, for future use.) This may inhibit proper review, although that is part of why I am willing to make it despite my perfectionism. Apologies in advance. Due to the perspective shift, a lot of mapping work is going to need to be done at some point. This comes in varying levels of priority. Many wallmounts are offset by hand, some are stuck in the wall/basically cannot be placed on the east/west/north edges of walls (posters), some just don't look great good in their current position. Tests are currently a minor bit yorked, I thought it was more important to get this up then to clean them fully. ## What does it look like?       ## Credits <details> <summary>Historical Mumbojumbo</summary> I am gonna do my best to document how this project came to be. I am operating off third party info and half remembered details, so if I'm wrong please yell at me. This project started sometime in late 2020, as a product of Rohesie trying to integrate and make easier work from Mojave Sun (A recently defunct fallout server) with /tg/. Mojave Sun (Apparently this was LITERALLY JUST infrared baron, that man is insane) was working with tall walls, IE walls that are 48px tall instead of the normal 32. This was I THINK done based off a technical prototype from aao7 proving A it was possible and B it didn't look like dogwater. This alongside oranges begging the art team for 3/4th walls (he meant TGMC style) lead to Rohesie bringing on contributors from general /tg/, including actionninja who would eventually take over as technical lead and Kryson, who would define /tg/'s version of the artstyle. Much of the formative aspects of this project are their work. The project was coming along pretty well for a few months, but ran into serious technical issues with `SIDE_MAP`, a byond map_format that allows for simpler 3/4th rendering. Due to BULLSHIT I will not detail here, the map format caused issues both at random with flickering and heavily with multiz. Concurrent with this, action stepped down after hacking out the rendering tech and starting work on an icon cutter that would allow for simpler icon generation, leaving ninjanomnom to manage the project. Some time passed, and the project stalled out due to the technical issues. Eventually I built a test case for the issues we had with `SIDE_MAP` and convinced lummox jr (byond's developer) to explain how the fuckin thing actually worked. This understanding made the project theoretically possible, but did not resolve the problems with multi-z. Resolving those required a full rework of how rendering like, worked. I (alongside tattle) took over project development from ninjanomnom at this time, and started work on Plane Cube (#69115), which when finished would finally make the project technically feasible. The time between then and now has been slow, progressive work. Many many artists and technical folks have dumped their time into this (as you can see from the credits). I will get into this more below but I would like to explicitly thank (in no particular order) tattle, draco, arcanemusic, actionninja, imaginos, viro and kylerace for keeping the project alive in this time period. I would have curled up into a ball and died if I had to do this all myself, your help has been indispensable. </details> <details> <summary>Detailed Credits</summary> Deep apologies if I have forgotten someone (I am sure I have, if someone is you please contact me). I've done my best to collate from the git log/my memory. Thanks to (In no particular order): Raccoff: Being funny to bully, creating threshold decals for airlocks aa07: (I think) inspiring the project ActionNinja: Laying the technical rock we build off, supporting me despite byond trying to kill him, building the icon cutter that makes this possible ArcaneMusic: Artistic and technical work spanning from the project's start to literally today, being a constant of motivation and positivity. I can't list all the stuff he's done Armhulen: Key rendering work (he's the reason thindows render right), an upbeat personality and a kick in the ass. Love you arm Azlan: Damn cool sprites, consistently Ben10Omintrix: You know ben showed up just to make basic mobs work, he's just fuckin like that man BigBimmer: A large amount of bounty work, alongside just like, throwing shit around. An absolute joy to work with Capsandi: Plaques, blastdoors, artistic work early on CapybaraExtravagante: Rendering work on wall frames Draco: SO MUCH STUFF. Much of the spritework done over the past two years is his, constantly engaged and will take on anything. I would have given up if not for you Floyd: Early rendering work, so early I don't even know the details. Enjoy freedom brother Imaginos16: A guiding hand through the middle years, handled much of the sprite review and contribution for a good bit there Iamgoofball: A dedication to detail and aesthetic goals, spends a lot of effort dissecting feedback with a focus on making things as good as they can be at the jump Infrared: Part of the impetus for the project, made all the xenomorph stuff in the MS style Jacquerel: A bunch of little upkeep/technical things, has done so much sprite gruntwork (WHY ARE THERE SO MANY PAINTING TYPES) Justice12354: Solved a bunch of error sprites (and worked out how to actually make prs to the project) Thanks bro! Kryson: Built the artstyle of the project, carrying on for years even when it was technically dying, only stopping to casually beat cancer. So much of our style and art is Kryson KylerAce: Handled annoying technical stuff for me, built window frame logic and fully got rid of grilles. LemonInTheDark: Rendering dirtywork, project management and just so much fucking time in dreammaker editing sprites Meyhazah: Table buttons, brass windows and alll the old style doors Mothblocks: Has provided constant support, gave me a deadline and motivation, erased worries about "it not being done", gave just SO much money to fill in the critical holes in sprites. Thanks moth MTandi: Contributed art despite his own blackjack and hookers club opening right down the road, I'm sorry I rolled over some of your sprites man I wish we had finished earlier Ninjanomnomnom: Consulted on gags issues, kept things alive through some truly shit times oranges: This is his fault Rohesie: Organized the effort, did much of the initial like, proof of concept stuff. I hope you're doin well whatever you're up to. san7890: Consulting on mapper UX/design problems, being my pet mapper Senefi: Offsetting items with a focus on detail/the more unused canidates SimplyLogan: Detailed map work and mapper feedback, personally very kind even if we end up talking past each other sometimes. Thank you! SpaceSmithers: Just like, random mapping support out of nowhere, and bein a straight up cool dude Tattle: A bunch of misc project management stuff, organizing the discord, managing the test server, dealing with all the mapping bullshit for me, being my backup in case of bus. I know you think you didn't do much but your presence and work have been a great help Thunder12345: Came out of nowhere and just so much of the random bounties, I'm kind of upset about how much we paid him Time-Green: I hooked him in by fucking with stuff he made and now he's just doin shit, thanks for helping out man! Twaticus: Provided artistic feedback and authority for my poor feeble coder brain, believed in the project for YEARS, was a constant source of ❤️ and affirmation unit0016: I have no god damn idea who she is, popped out of nowhere on the github one day and dealt with a bunch of annoying rendering/refactoring. Godspeed random furry thank you for all your effort and issue reports Viro: A bunch of detailed spriting moving towards 3/4ths, both on and off the wallening fork. If anyone believed this project would be done, it was viro Wallem: Artistic review and consultation, was my go-to guy for a long time when the other two spritetainers were inactive Waltermeldon: Cracked out a bunch of rendering work, he's the reason windows look like not dogwater. Alongside floyd and action spent a TON of time speaking to lummox/unearthing how byond rendering worked trying to make this thing happen ZephyrTFA: Added directional airlock helpers, dealt with a big fuckin bugaboo that was living in my brain like it was nothing. Love you brother And finally: The Mojave Sun development team. They provided a testbed for the idea, committed hundreds and hundreds of hours to the artstyle, and were a large reason we caught issues early enough to meaningfully deal with them. Your work is a testament to what longterm effort and deep detailed care produce. I hope you're doing well whatever you're up to. Go out with a bang! </details> ## Changelog 🆑 Raccoff, aa07, ActionNinja, ArcaneMusic, Armhulen, Azlan, Ben10Omintrix, BigBimmer, Capsandi, CapybaraExtravagante, Draco, Floyd, Iamgoofball, Imaginos16, Infrared, Jacquerel, Justice12354, Kryson, KylerAce, LemonInTheDark, Meyhazah, Mothblocks, MTandi, Ninjanomnom, oranges, Rohesie, Runi-c, san7890, Senefi, SimplyLogan, SomeAngryMiner, SpaceSmithers, Tattle, Thunder12345, Time-Green, Twaticus, unit0016, Viro, Waltermeldon, ZephyrTFA with thanks to the Mojave Sun team! add: Resprites or offsets almost all "tall" objects in the game to match a 3/4ths perspective add: Bunch of rendering mumbo jumbo to make said 3/4ths perspective work /🆑 --------- Co-authored-by: Jacquerel <hnevard@gmail.com> Co-authored-by: san7890 <the@san7890.com> Co-authored-by: = <stewartareid@outlook.com> Co-authored-by: Capsandi <dansullycc@gmail.com> Co-authored-by: ArcaneMusic <hero12290@aol.com> Co-authored-by: tattle <66640614+dragomagol@users.noreply.github.com> Co-authored-by: SomeAngryMiner <53237389+SomeAngryMiner@users.noreply.github.com> Co-authored-by: KylerAce <kylerlumpkin1@gmail.com> Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com> Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com> Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com> Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com> Co-authored-by: Runi-c <5150427+Runi-c@users.noreply.github.com> Co-authored-by: Roryl-c <5150427+Roryl-c@users.noreply.github.com> Co-authored-by: tattle <article.disaster@gmail.com> Co-authored-by: Senefi <20830349+Peliex@users.noreply.github.com> Co-authored-by: Justice <42555530+Justice12354@users.noreply.github.com> Co-authored-by: BluBerry016 <50649185+unit0016@users.noreply.github.com> Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com> Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com> Co-authored-by: SimplyLogan <47579821+loganuk@users.noreply.github.com> Co-authored-by: Emmett Gaines <ninjanomnom@gmail.com> Co-authored-by: Rob Bailey <github@criticalaction.net> Co-authored-by: MMMiracles <lolaccount1@hotmail.com> |
||
|
|
154837240d |
Rust Heretic rework: THE PUKENING. (#83006)
## About The Pull Request Turf rusting is now based on knowledge instead of RNG; toxic damage on spells has been replaced with disgust; rust walkers are a bit easier to summon and show up early in the tree. Rust ascension spread has been massively increased and immunities while on Rust have been updated. ## Why It's Good For The Game This is a massive list of changes, but the tl:dr is Rust heretic design is pretty barebones and dated in its current state. I'm going to try my best to explain why that is and why it needs to change. ### RNG on rusting is bad **Problem** : quite a lot of turfs cannot be rusted, and reinforced turfs rusting is tied to RNG, the emergency shuttle floors are also unrustable, making an ascended heretic not threatening at all to an escaping crew. **Solution**: Heretic rusting prowess is now tied to knowledge progression; reinf wall rusting is no longer tied to RNG; the emergency shuttle is now rustable if you have accrued enough knowledge. **Explanation** : I've been adopting the code from a previous PR that sadly didn't make the light of day. Link: https://github.com/tgstation/tgstation/pull/65361 The goal is to have Heretic rusting be more consistent, so that if you ascend the shuttle is no longer a safe refuge. **Grasp Of Rust**: Basic floors and walls. **Mark Of Rust**: Reinf floors and walls (takes 3 applications of rust to fully destroy). **Toxic Blade** Titanium and Plastitanium( still takes 3 applications of rust to destroy). **Ascension**: almost everything save for admin walls, glass, and silver. ### A territorial antagonist with no tools to defend its turf **Problem**: Rust heretic is forced into a territorial playstyle, but it's heavily diminished by rusted turfs not having any negative effect on the crew whatsoever, Toxic damage on plume and blade is also kind of bad and has no synergy with the rest of the kit. Lastly, while fitting to the theme of Rust; mark detonation destroying clothes and items can end up being more harmful to the heretic, as destroying a secoff's flashbang will result in you getting stunned and killed. **Solution**: Rusted floors are no longer safe for the crew; walking over Rust will add a small buildup of disgust, silicons will receive ticking damage, Toxic damage on Rust skills has been replaced with disgust buildup and a chem purge effect to prevent the crew from cheesing the debuff with sol dry. **Explaination** "The goal behind this change is to prevent the crew to just be able to walk willy nilly into an eldritchly decayed area without repercussions, plus I feel like disgust is a fitting debuff for Rusties for a number of reasons. 1) Lore wise, your goal is to turn the entire station into a garbage dump. 2) It fits for fighting a territorial antagonist, it's not immediately threatening on its own, but if you overstay your welcome, it has dire consequences. 3) We don't really do much with disgust as a status effect, far as i know, this'll be the first iteration of it being used for an antagonist toolset. 4) It gives reason to the crew to act hostile towards the Heretic, as you are essentially making their work area inhabitable. I've also Slightly increased the healing on leeching walk and gave it some minor temperature regulation (you won't be able to outtemp space cold). ### Rust Walkers **Problem**: Rust walkers might as well not exist in their current state; they are one of the latest heretic unlocks, and the recipe for summoning one is INSANE now that you cannot decapitate mobs anymore. **Solution**: Rust walkers pop up a bit earlier in the tree; the ritual to summon them has more reasonable reagents (wires, pools of vomit, iron sheets) and they have increased health. **Explanation**: : There is not a lot to add to this. without walkers, Rust heretics are fairly slow at spreading rust, by making rust walkers have reasonable summoning reagents, we ease that problem; lastly i've slightly bumped their hp, as i felt 75 hp was a bit low. ### Underwhelming ascension **Problem**: The spread rate from the ascension is downright ATROCIOUS in its current state, i actually ran multiple tests on different maps, on Metastation it can take up to 40 minutes for the rust to spread to the entire station, considering an ascended heretic results in an immediate shuttle call, it's unecceptable in its current form. Solution: Rust spread is now a hybridization between old ascension and Wizard tranformation ritual. **Explanation**: The spread rate in its current form is painstakingly slow and has a tendency to reach one corner of the map and compound on itself, i've borrowed the code from the wizard final ritual "transformation" and gave it my own spin so that given enough time it will cover the station more or less evenly, it can now spread through all z levels. Video example: https://www.youtube.com/watch?v=jZ5zMrNM6Jw I've also updated the immunities you gain on ascension to ignore slowdown and stasis from Cryogelidia. The whole point of rust ascension is to become immune to crowd control, i've seen far too many ascended heretics die to a single bola or cryo syringe, that's pretty lame so i fixed that. Lastly, aggressive spread has had its radius reduced in exchange for the spread being consistent now; cooldown is also halved when you ascend, to better help the heretic go on the offensive. |
||
|
|
bc4e7d3b4e | Remove data systems in favor of global datums (#82943) | ||
|
|
c1a775efe1 |
Implements data systems (#82816)
## About The Pull Request Subsystems currently come in two different flavors: 1. Systems that process at intervals with the master controller 2. Global data containers that do not fire And I think they should be split up... This moves 4 non firing, non init subsytems -> datasystem ## Why It's Good For The Game Clarity in code |
||
|
|
002051a3d5 |
ArcMining Pr Beta: Version 1.2 (#78524)
This one's not like the last one, so much so that I'm not even going to outsource the PR description to a robot this time! Basically, **You should read the PR body before assuming that everything is the same as last time. It's not.** ## Video Summary Click the link below to see a video summary of the main features of this pull request. https://youtu.be/Aho2omR0mjY?feature=shared ## About The Pull Request This pull request serves as a large rework of minerals produced by mining, and by extension mining itself. I'll try and list each change and it's associated nuance here. ### Ore Vents The biggest addition to the game with ArcMining is **Ore Vents**. Ore vents spawn as a ruin on the map, placing a randomized ore vent onto map generation. Ore vents spawn in 3 different sizes, **Small, Medium, and Large**. These vents will pick from a pool of materials they can generate, and will hang out across the map. A player can use a mining scanner to discover an ore vent, granting a small quantity of **mining points** to begin with. Once scanned, ore vents will show what minerals that ore vent will generate after they're fully tapped. Scanning the vent again will trigger the extraction process. A small drone will fly down, called the NODE drone, and buckle onto the vent. Your job during wave defense is to protect the drone and to defeat waves of randomly spawning mobs (dependent on if you're on lavaland or on icebox). The quantity, duration, and time between waves is scaled to the size of the vent you're protecting. Starting by scanning and protecting lower tier vents earlier in the shift is a safer bet than doing a large vent in the first few minutes. The drone has 500 health, and can take a good few hits, but leaving it alone will cause it to meet an unfortunate end quite quickly. Cooperation can be your best asset, as mining with allies can greatly help with wave defense, and mineral points are granted to anyone who helps with defending the ore vent equally (So 500 * size tier, regardless of how much help you receive). Once complete, the ore vent will have a mining machine constructed on top of it, and will start to dredge up **Boulders** from the earth automatically. More on boulders later. Ore vents can be located based on your mining scanner, and will provide an appropriate audio cue based on if the ore vent has been discovered or not, and once processed will no longer alert you to it's presence. **Each station comes with a free vent that produces exclusively iron and glass, free of charge.** This is to help with shifts where the station may not have shaft miners to produce minerals, and to provide the station with a baseline amount of minerals where none may exist otherwise. ### Mineral Generation Mineral generation has been completely reworked. Previously, Mineral Generation had a flat 13% spawn rate in-game. Once minerals spawned, they would also have a chance to propagate their minerals to nearby tiles, resulting in a rather massive pool of minerals that could spawn throughout lavaland on the whole. This tweaks that, by making minerals in walls spawn based on their proximity to ore vents on maps that use cave generation. Both the probability, and quantity of ores spawning in walls is scaled based on distance, with ore vents looking like large caches of ores found in walls. This makes following ores found in walls and checking their quantity of minerals spawned a good indicator of how close you are to a nearby vent in-round. This means you can collect some points form both discovering ore vents first, as well as collecting their surrounding ores, turn those in for mining points, and then trading them in for gear upgrades to more effectively take on ore vents. As a result of tweaking the balance of this, the total amount of ores spawned in walls overall has been decreased. However, by making more of the process time based, we still result in a mostly balanced finished product. ### Boulder Processing On station, there are now three new machines. These are the BRM, the Refinery, and the Smelter. - The BRM acts as a teleporter. Instead of needing to carry boulders back to the station, you can activate the BRM, and it will automatically pick boulders to teleport back to itself. You can use this to teleport boulders dredged up from lavaland onto the station for processing. **The BRM will only lock on to boulders that are resting on an ore vent.** Moving boulders back by hand will mean you'll have to haul it back by hand. - The refinery processes the non-metallic materials out of boulders. This process sends the materials straight to the ORM, and collects mining points from the ores smelted in the machine. Swiping with an ID card lets you withdraw those points for your own personal account, but remember that these points are for your whole team to share from. The **Mining points obtained from this process is only 75% of the amount an equivalent amount of ores would provide.** - The smelter works nearly identically, however the smelter produces metallic materials out of boulders instead. - Once a boulder has had all of it's materials extracted, it's broken down and deleted from the line. Otherwise, the boulder is spat out for the next machine to process it (either the refinery or smelter). - Once there's no minerals left in a boulder of any type, the refinery or smelter will break the boulder down. - Boulders **do not stack onto tiles with each other**, so they'll block each other when pulled or when moving on a conveyor belt. Boulders can also be processed by hand. Using a mining tool on a boulder with right click will allow you to break down a boulder into it's composite ores, but limits you to a maximum of 10 ore per boulder, where the full amount can be extracted using the proper processing machines. Also, processing by hand does deal small amounts of stamina damage over time, do breaking a full large boulder can be particularly taxing. Additional Boulder Processing Machines can be built, with the BRM board being obtained from the Protolathe, while the Smelter and Refinery boards being obtainable from the Autolathe instead. A _boulder processing beacon_ can also be obtained from the mining points vendor as a reward to assist with boulder processing. Boulder processing beacons can be used to spawn in a new BRM, refinery, and smelter on the tile the user is standing on, however **you'll still need to link them to the ORM**! All three machines can be upgraded with Stock Parts, allowing for **more boulders to be processed at a time**. It does not, however, increase the amount of minerals received from boulders, or points earned. ### Mining Borg Tweaks Mining borgs have been given some minor adjustments to compensate for the changes to mining. Their mineral scanner, which now has an active component to gameplay, is now a module as opposed to built into the mob. This module allows for the same ability to discover and start waves of monsters to fight. Mining modules will find that their PKA now has a total of 90% mod capacity as compared to the 80% they had before, to allow for more robust defense of ore vents. In addition, all borgs and AIs can interact with the BRM for boulder collection. ### Mining Mech Tweaks Mining Mechs have had their utility tweaked as a result of these changes as well. Mineral scanners to be used on mining mechs now have a larger radius by comparison to their handheld cousins. Similarly, it now has an active scanning button, which will actively discovery nearby ore vents. To begin wave defense, you will need to hop out and scan a second time however, so that you can properly accept the risks of drawing a horde of bloodthirsty wildlife towards you and your companions. Mechs can also manually process boulders, similar to mining tools using their drill. ### Golem Tweaks Golems, being more gentle and less aggressive than humans, while being made out of LITERAL ROCKS, have a greater need to secure access to ores and minerals to eat. As such, they have adapted to be able to do two new things: - Golems may now right click ore vents to be able to manually haul a boulder out of the vent. This costs a hefty amount of stamina, but it allows for golems to avoid combat during regular gameplay. - Golems may now left click a boulder with an open hand in order to manually process a boulder like a pickaxe. While not faster, it is consistent and prevents golems from starving if they have access to a vent, but no ores, somehow. ### Gulag Tweaks The labor camp, being a camp for rehabilitation and ~~excessive manual labor~~ has been tweaked. Boulders now replace the random minerals located on their island, and to acquire their prizes inside, much be excavated and then broken out of the rock. Now YOU TOO can excavate minerals and become a true mineral hero by working your way to freedom. ### Mining Point Changes As a result of fewer mining points being available across the map due to the new ore spawning mechanics, and the shift in how and when ores will be coming in, almost every progress based mining point cost has been reduced by around 10-20%. Many numbers are still subject to change at present, but the idea is that core progress unlocks should be made a bit more available earlier in the round before players can start to solo or duo larger or more difficult ore vents, after which they'll be rolling in ores. ### Rarities Every once in awhile, an unusual boulder will get hauled up from the mineral rich depths of lavaland. These **Artifact boulders** can occasionally produce rare items, but for now they've mostly just been pulling up **Strange objects** for science. Nanotrasen Natural Sciences department will reward you extra points to be collected by boulder processing machines for successfully extracting one. In the future, this opens up a passive reward space that mining can reward to the station, like providing cytology DNA samples, ancient seeds, or other artifacts. ### Misc notes - Boulders can be stored in all varieties of ore boxes (ground, mech) should you choose, however as mentioned it's best to leave them where they spawn and teleport them to the station for convenience. - Maps that are not subject to cave generation will find that they are largely untouched in terms of mineral balance. - Future or existing ruins can now be tweaked to have a mineral balance cost, as the ore vent ruin does. This will allow us to spawn in more interesting ruins for pre-made combat challenges. - There are unique ore vents that spawn across the map, that will summon a boss mob relevant to that map. If the boss mob is defeated, that vent will spawn large boulders pulling from every possible ore type that can spawn. Not for the faint of heart! - Similarly, the number of ore vents and mineral budget is now adjustable in the cave generation procs, so maps may spawn with more or less ore vents as desired for balance. - Artifact boulders opens up a LOT of room for possible future content like archaeology, xenoarch, artisci, and other design spaces! - Megafauna STILL SPAWN ON THE MAP. They just happen to spawn in addition to boss ore vents. - **I'll add more to this as I get asked questions and remember things, this is a huge PR and I'm confident I've missed at least something** ## Why It's Good For The Game I outlined a lot of this in #78040, so I'll try and keep this relatively snappy this time, while noting that I've made some concessions to make the whole system a lot more playable while not trying to break out design decisions that are at the end of the day, better for the game and the overall resource balance in round. Minerals are a very poorly balanced system, and have been since their inception many years ago. We heavily rely on mineral balance in round, and yet we've really only balanced it by introducing so much supply that there's no equivalent exchange for materials that doesn't just heavily flood the exchanged material. For example, items printed from materials that are otherwise considered "rare" on master exist in such quantities and they'll never practically run out in our allotted 90 minute time slot design. This PR adjusts how ores spawn to a point where we can minimize the amount of ores that need to exist on the map for mining to be able to progress, while still providing enough resources for the station that it covers the needs of the station adequately. Miners will need to be more strategic about what resources they've collected, and be able to make decisions about which vents are worth the risk of attempting to fight, how to prepare for a wave defense, and when to head back up for upgrades, while finally giving them at least some kind of incentive to work together and use different equipment. Resonators make cleaning up the caves around vent easy, sandbags set up easy defenses for your vent, mechs can serve as a wider range radar while mining, all while still providing a new gameplay loop to mining. By limiting the amount of ores that can enter the round from the massive, massive amounts that were coming into the round beforehand (see #78346 ), we can make ore processing more meaningful by adding more gameplay to the processing of minerals. I have some plans for that, however this PR already got bloated really REALLY badly due to scope creep and the number of intersecting systems that rammed into each other to make this PR possible. So that'll be next. Plus, as I've mentioned, we open up places for ore processing to find fossils, relics, and other things that can implemented down the line. Overall, I don't expect this PR to save or kill ore balance, but we gain a LOT more control over it through the use of our mining defines attached to this PR, and at the end of the day, that's a great place to start off of. ## Changelog 🆑 add: Added ore vents. Scanning them with mining scanners shows what minerals they contain. Scan again to fight off a horde of beasts as your drone assistant excavates the vent, so the ore vent will produce mineral boulders! bal: Ores that spawn in walls now spawn based on their proximity to ore vents, with their chance to spawn and their minerals contained scaling from low to high. add: Added the BRM, Refinery, and Smelter. These pieces of equipment are used to process ore boulders into minerals for the station. Stock Part upgrades allow more boulders to be processed at one time. They collect mining points as well, to be redeemed with an ID card swipe. add: Boulders are teleported to the station via the BRM if left untouched. Boulders can also be cracked open for a reduced amount of ore using pickaxes or golems hands. add: All stations come equipt with a pre-excavated ore vent, which produces a basic supply of iron and glass only. Scan other vents for your critical resources! add: Look there's a shit ton of changes on mining, for more detail check out the Pull Request: https://github.com/tgstation/tgstation/pull/78524. sound: New sounds and noises for your high octane factorio-like gameplay! image: All new boulder sprites for the new minerals and rocks added to the mining gameplay loop, as well as mining machines! image: Overlays appear over vents when scanned to let you know their contents at a glance when actively scanned with any mining scanners. /🆑 --------- Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com> Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com> Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com> Co-authored-by: Jacquerel <hnevard@gmail.com> Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com> |
||
|
|
d36a5af64f |
Removes material breakdown flags, traits & miscellaneous fixes. (#80389)
## About The Pull Request 1. Removes material breakdown flags i.e. all flags with the format `BREAKDOWN_XXX`. These flags do nothing, there are no special checks to transform materials based on these flags, they are passed around just because certain procs require them for syntax purposes only. Apparently there were plans to make these flags do something special from the comment https://github.com/tgstation/tgstation/blob/302247c0d1e980478f59d9c497169290ee259887/code/__DEFINES/construction/material.dm#L43 But nobody got any ideas for years now. The only special thing we can do with them now is remove them and reduce code clutter, so let's do that The only flag that ever did something was the `BREAKDOWN_INCLUDE_ALCHEMY` flag. This only worked when coupled together with `TRAIT_MAT_TRANSMUTED` trait(which is only used by the reagent metalgen) and when both this trait & flag are combined together... they still do nothing https://github.com/tgstation/tgstation/blob/302247c0d1e980478f59d9c497169290ee259887/code/game/atom/atom_materials.dm#L41-L42 Yup they cancel out each other to prevent returning an empty list, the traits only job was to prevent materials from being recycled (like why? what's the benefit of that? nothing) and the flag was meant to bypass this restriction so both the trait & the flag cancel out each other therefore doing nothing meaningful. Best remove them both and call it a day. 2. Fixes an error in displaying number of sheets inserted into a mat container when that sheet is made up of alloy materials. it would count as 2 or more because it would take the sum of total material amount inserted and not the actual sheets. That's fixed now. 3. Remote materials now properly respect the `MATCONTAINER_NO_INSERT` flag 4. Adds helper proc to insert materials via the remote material component with proper context ## Changelog 🆑 fix: mat container displays correct number of sheets inserted for alloy materials. fix: remote materials now properly respect the `MATCONTAINER_NO_INSERT` flag. code: removes material breakdown flags and related traits. code: adds helper proc to insert materials via the remote material component with proper context. /🆑 |
||
|
|
a823708054 |
Adds lighting height control (space color consistency) (#79046)
## About The Pull Request Adds support for modifying a light's "height" You can think of this as the distance it is from the ground below it (Really it's the distance to the corners around it + 0.5 but yaknow) We use it to keep wall lights from looking weird, but well, not everything is a wall light Floors tend to not be, and space in particular does not want to be treated as such. In fact, it wants a NEGATIVE height, so it acts as if it in on top of all of its corners. This allows us to ensure that the starlight from space and the starlight from starlight overlays always have the same intensity and color, preventing weird lines from where the two intersect, or starlight feeling not very present in cases with only one turf I've also bumped starlight's intensity form 0.75 to 1, this should help with the lines thing discussed above. ## Why It's Good For The Game  ## Changelog 🆑 add: Starlight should be a bit more intense, and flow better onto non space tiles /🆑 --------- Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com> Co-authored-by: san7890 <the@san7890.com> |
||
|
|
b77fa8c2a2 |
Starlight Control (Aurora works now, space gas doesn't touch starlight, narsie ending effects) (#78877)
## About The Pull Request [Implements a setter for starlight variables](https://github.com/tgstation/tgstation/commit/af34f06b418b039b2ead90b29112b30adea4bc68) I want to start to modify starlight more, and that means I need a way to hook into everything that uses it and update it, so we can modify it on the fly. This does that, alongside removing space overlays from nearspace (too many false positives) and making the aurora modify all turfs projecting starlight, rather then all turfs in an area. Do still need to figure out handling for the starlight color usage in turf underlays tho (I gave up, we just keep it static. I'll fix it someday but the render_relay strategy just doesn't work with its masking setup) [Reworks how starlight overlays work](https://github.com/tgstation/tgstation/commit/9da4bc38e223e0ce2d91b0c8beddf1ebba968b9c) Instead of setting color on the overlays directly, we instead store an object with our current settings in every mob's screen, and render_target it down onto our overlays. This lets us update overlay colors VERY trivially. Just need to set color on the overlay var. Makes modifying starlight a lot cheaper. It doesn't work on area overlays, because suffering, and it MIGHT induce extra cost on clients. if it does we can do something about that, we'll play it by ear [Removes parallax starlight coloring.](https://github.com/tgstation/tgstation/commit/5f701a1b137c7d4c333929e4cbfdd9d4aa8656d6) I'm sorta iffy on the color, the effect can be real oppressive in some cases, and I'd like to use starlight color for more events in world, and having it vary can make that looking nice hard. [Adds some visual effects to narsie being summoned](https://github.com/tgstation/tgstation/pull/78877/commits/a423cfcb2ba9c0d729b06c36dd7d38ff68c967c2) As the rune drawing progresses space (starlight and parallax) go from normal to greyscale. Then, right about when narsie shows up, starlight becomes vibrant red. It's a nice effect. I wanna do more shit like this, I think it'll improve vibes significantly. ## Why It's Good For The Game Can't embed it because of github's upload limit, can show a [link](https://cdn.discordapp.com/attachments/458452245256601615/1160821856358645860/2023-10-08_22-31-22.mp4?ex=65360e99&is=65239999&hm=680e33e4e0026b89e132afc50c04a648a24f869eb662f274a381a5de5c5a36f2&) for the narsie stuff Here's [one](https://cdn.discordapp.com/attachments/326831214667235328/1160813747196141568/2023-10-08_22-34-10.mp4?ex=6536070c&is=6523920c&hm=f8d571d1013da89887f49f3fec99f632251eeeac83085aa7dde97009aee3922f&) for the aurora too. This gives us more pretty starlight shit, and the ABILITY to do more pretty starlight shit. I'm pretty jazzed, and I hope people use this proc more (keeping in mind that it's pretty hard on the lighting system, and needs significant delay between changes) ## Changelog 🆑 add: Narsie summoning has had some effects added to space and starlight del: Removes the link between spacegas color and starlight. It was a slight bit too vibrant and I think impacted the vibe too wildly to be incidental. fix: The aurora event actually... works now. Space lights up and all that /🆑 |
||
|
|
9073290d8a |
ArCargo: Adds the Galactic Materials Stock Market V1.2 (Free Market Edition) (#78500)
## About The Pull Request **This PR is a rerelease of #78164, with some bells and whistles.** As such, most of the core functionality is the same, but with some tweaks to balance the gameplay and prevent bike levels of profit. I've tried to bold the new additions to make it easier to read for those coming back for the second pass.  This PR adds a new machine that can be bought called the **Galactic Mineral Market** (GMM). The Galactic Mineral Market (GMM) allows you to buy and sell minerals wholesale from the market machine. It goes something like this: ### 1. Getting the Machine: The GMM can be bought as an un-assembled machine for 600 credits from cargo. It's a low cost, but its not mapped in standard, so if you're confident in your miners, you shouldn't necessarily need one for the department. Otherwise, it's available for other crewmembers to buy for cost. The cargo pack comes will all supplies necessary to finish the machine. Tools not included. ### 2. Buying Low Using the machine's UI, you can see all traded minerals and their associated prices. Buy prices are played straight, and can be bought for material price, times the quantity. The order is then instantly placed on the cargo shuttle, and will be deducted from the buyer's account on shuttle send. **A single order can only have 10 different stacks of materials in it. So, that can be 100 sheets of iron and 1 of everything else, or 500 sheets of iron. After that you're blocked from buying more sheets until you've sent the order.** Cargo staff with standard cargo access may toggle the machine to order directly from the cargo budget. Otherwise, materials are only purchased from private accounts. All purchases are treated as private and must be opened by the recipient like private orders. ### 3. Selling High It's stocks time. To sell minerals on the market, simply insert any relevant metal stock into the machine. This produces a totally original and not-a-bounty-cube stock block, which can be sold on the cargo shuttle for cargo funds. Stock blocks can also be price-tagged as well following their standard process. **Stock blocks start out a bright pink and are worth the value of that material at that time, but over time their color will degrade. After a full 5 minutes, stock blocks will switch over to a purple hue, and their value will once again become liquid, subject to the current market value. This encourages players to be a bit more fast on their feet than before instead of just waiting forever for all of their investments to arrive at the perfect value, before the inevitable "rest of the game" tries to upend your investing.** Sold cargo stocks are subject at a 20% processing fee as part of the galactic mineral market. ### 4. Outside Factors **In-game events like the Crab-17 or the Market crash event will cause stocks to bottom out completely, and for the market to become unavailable until the market stabilizes. Thankfully, once the market has crashed, typically stocks will recovery and gain back some value, allowing for fast acting market movers to capitalize on rough markets.** **Additionally, low value materials like iron and glass have an extra stipulation, as their value goes all the way down to 0 credits. In that case, you are unable to buy them at that value as a market protection. Be careful that you don't see a reset or crash when you're planning on selling your horde of iron and glass stocks!** Additionally, market events can occur during the round that can more sharply adjust a single stock's price and completely rebound it's trajectory. These events are always mentioned in the station announcement's economics report. ### Other notes: The market does not cover all minerals, partially for consistency purposes as well as for balance reasons. Plasma, being a unique material that only Nanotrasen has their hands on, is the sole exporter of plasma in the system, so it stands to reason that it's not on the market, and remains a solo export. Bananium, as it has a rare and expensive conversion rate, works the opposite way, and as such isn't listed on the market either, with the sole source being single cargo sales. All others just don't make much sense to include into the market at this second, so I left them out for now. **Alright now below I'm going to cover the math and shit so if that's not what you care about then please scroll past.** <details> <summary>Warning: Arcane is about to talk about the math</summary> Alright. So this adds a new stock_market subsystem, which fires once every 20 seconds. I'm still fairly new to subsystem design so I'm probably going to need some feedback on cleaning this up to make it look nicer and run smoother. So we have 4 associated lists, each attached to the relevant traded datum; this tracks prices, market trends, how long that trend is going to last in SS fires, and market quantity. Prices fluctuate between 0.5x and 3x the material's single sheet value. This could be tweaked even farther in the future, but for now I'm keeping it at this nice clean margin. Prices fluctuate based on a gaussian normal distribution that is centered on different points based on their **trend**. Upward trending materials are centered in such a way that they'll almost certainly go upwards, but being that it's based on a random chance, not always. Vis versa, downward trends should tend to lose value at about the same rate. We also change our rounding based on this trend data, in order to prevent low price values like iron and glass from getting stuck in the same value or freefall drop over time just because of rounding down. Similarly, neutral trending materials will not change nearly as much, and will generally stay at around the same amount. When buying or selling a material, the quantity of that material will change on the market. The magnitude of that change depends on how much of that material currently exists on the market. Buying a low quantity material like diamond for example will tangibly increase that material's cost, while buying stacks and stacks of iron and glass won't do much damage to the price of iron as there's usually around 500 full stacks on the market to start with. It's applied at a relative percentage of (qty_changed / new_total_on_market) * price of goods bought/sold at. In addition to that, there are random "market events" that can occur randomly, which you might miss if you don't follow the newscaster economy news. These three events are fairly barebones now, but in general they have a 1% chance of happening per material, and can more dramatically increase, decrease, or fully reset the value of a material on the market back to it's standard value. This opens up for doing more with it in the future, but that's a later problem. </details> ## Why It's Good For The Game This independently resolves some issues related to #78040, that being that lowpop stations, or shifts with few miners would have a new way to be able to still get some access to minerals in a given round. This also provides a unique minigame and alternative way to acquire money in a given shift, using minerals. **"But Arcane,** I hear you ask. **"Isn't this just the same thing you tried doing way back when and then reverted in #50537?** Well, fuck man, how you doing I haven't see you around in forever also no you're completely wrong and here's why **This PR is no longer contingent on the rest of ArcMining in it's current iteration.** I have introduced some extra factors into the gameplay as well to try and curb the creation of bikes within gameplay. This also provides a massive benefit to round progression and gives the QM and the cargo members the ability to prevent round progress from stalling by buying round-critical resources. Not to mention, as the GMM is not cargo required, more cargo integrated, it also functions as economy content for the rest of the crew. ## Changelog 🆑 add: A new export has arrived in the imports section, the Galactic Materials Market! You can use this to buy and sell minerals for profit or cost, as well as stock your station when you don't have any miners. add: Insert sheets of minerals into the Galactic Materials Market to convert them into a stock block, allowing you to lock in your price for 5 minutes. Wait too long and it'll be subject to market value again! add: Minerals can be bought on the market either using the station's cargo budget by cargo crew, or privately by everyone else. del: Any material stacks that can be bought and sold on the market before have been removed from the cargo catalog. /🆑 --------- Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com> Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com> |
||
|
|
42543ac141 |
NEW STATION TRAIT: Radioactive Nebula (#76825)
## About The Pull Request Adds a new station trait: Radioactive Nebula! The station is located inside a radioactive nebula. Space background and lighting is different shades of green. Objects in space will also glow green. (This is kinda lying, since the glowing stuff isn't radioactive, you just get an element that slowly irradiates you, though people and certain objects that get the 'IRRADIATED' status may still double-whammy you) Do not go into space without rad-protected gear, or you will get very sick very fast. RAD-protection MODsuit modules spawn in robotics and are also immediately researched. The nebula does protect against external threats, like pirates, ninja's and nukies. They can still get to the station pretty well, but they can't stay in space for extended periods of time To make it more livable, public rad protection gear will spawn in lockers around the station. Everyone will also spawn with potassium iodide pills in their emergency box. Dynamics threat is also reduced by 30, so there's a proclivity towards more lower threat rounds when the radioactive nebula is present. Radioactive resonance virus cannot be generated though, since it kinda obliterates any and all challenge and threat  **Shielding**  In order to protect the station from radiation, nebula shielding units need to be constructed. Five spawn ready-to-built in engineering, and more can be bought pretty cheap from cargo. (Normal radstorms are disabled) The gravity generator has 20 minutes of innate shielding, where every nebula shielding unit adds another 20 minutes. 5 are needed to completely block all radiation even when the gravity gen is down, but constructing more is recommended in-case of sabotage/destructions/power outtages. Active nebula shielding will passively generate tritium. You can either vent/ignore this, or use it for something. I'm not an atmos tech but I'm sure you can do something with it _What happens when no shielding units are constructed/they all fail?_ The station will suffer a 5 minute long radiation storm, with only shuttles being excempt. The storm is nerfed strongly, and you can tank the 5 minutes, but you'll be pretty sick. After the 5 minutes are over, central command will send an emergency shielding unit which will block the radiation for 10 minutes and warn the station to set up nebula shielding. ## Why It's Good For The Game The station being inside a radioactive nebula shakes up a pretty major aspect of the game (that being the 'space' in space station 13). Hallway decals are colored green, display screens will display radiation markings, carps blend with the nebula, etc. Putting the station inside a radioactive nebula shakes up the rules of the game and what people can expect. Suddenly, you can no longer just go outside without taking meds or getting proper radiation protection, encouraging people to stay cozy and inside.  Inside, the crew gets the goal to set-up radiation shielding to defend themselves against the nebula, rewarding a creative engineering department with passive resource income and protecting the station against massive radiation storms. I think it's nice to give engineering something to set up. Even if they don't care, they can just plop it down somewhere in a closed room and be done with it. The radiation storm is pretty aggressive, but very survivable if you use your potassium iodide pills, the extra radiation suits or whatever chemistry has whipped up. Most importantly, it gives the entire station a common enemy: the nebula. Everyone is encouraged to prepare against the mechanics. Chemistry can make meds, viro can make protective virusses, robotics gets encouraged to make radprotected MODsuits, engineering gets to set-up radiation shielding, assistants can look at space or whatever assistants do. <details> <summary>Cool images</summary>     </details> ## Changelog 🆑 add: Adds a new rare radioactive nebula station trait! Get ready and PREPARE, before it gets in... tweak: Nearstation space area lighting may look slightly different /🆑 --------- Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com> Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com> Co-authored-by: Jacquerel <hnevard@gmail.com> |
||
|
|
a373b4cb08 |
Icon folder cleaning wave one (#76703)
## About The Pull Request Due to a mental breakdown caused by unfathomable abomination that is icons folder, I swore to myself to one day clean it. Today is kind of that day. Been at it for around 6, you gotta understand I need a rest. I tracked most changes in descriptions of commits if you are looking for details. ## Why It's Good For The Game Saner spriters make better sprites. And also, just helps keep track of things. ## Changelog 🆑 image: added sprites for different variants of scrolls. image: modified couple posters with ghost pixels. /🆑 --------- Co-authored-by: OrionTheFox <76465278+OrionTheFox@users.noreply.github.com> |
||
|
|
c73662b16a |
Material Tiles now use the correct sound files, preventing Runtimes (#74066)
## About The Pull Request Material tiles used to reference an incorrect filename for some of their footstep audio. This resulted in barefoot, claw, and heavy footsteps not making any noise on them, as well as triggering a Runtime error in the logs with each step taken. The code for constructing these file names has been corrected, and now properly paths to the appropriate sounds. Closes #70145 ## Why It's Good For The Game These changes improve stability by reducing unnecessary Runtimes, and restore footstep noise to Material tiles for many creatures/scenarios. ## Changelog 🆑 fix: Material tile floors now make noise when walked on by bare/claw/heavy feet /🆑 |
||
|
|
58a9fcff82 |
De-hardcodes spawnDebris in windows, fixes a bunch of issues with windows. (#73274)
## About The Pull Request spawnDebris was being overridden by almost every type of window, I've set up some new vars for it to pull shard and its debris decal from so spawnDebris only needed to be set up once (+ once more for paper windows which are unique). Fixes an issue with reinforced plasma glass windows dropping regular glass when broken. Fixes an oversight where tram windows were dropping only 1 rod instead of 2 and dropping glass sheets instead of shards. Cleans up tram window code a bunch. ## Why It's Good For The Game Fixes several issues, cleans up code and cuts down on a lot of repeat code. ## Changelog 🆑 fix: Reinforced plasma windows will now drop plasma glass instead of regular glass when broken. fix: Tram windows drop the correct number of rods and a shard when broken instead of a sheet. code: Removed a ton of duplicate vars in tram window code and re-organize the file slightly. refactor: spawnDebris has been un-hardcoded and all (but one) override of it has been removed. /🆑 |
||
|
|
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> |
||
|
|
72add64520 |
Refactors armor into dedicated subtypes (#71986)
## About The Pull Request See title. ## Why It's Good For The Game Code is cleaner, and more readable/intuitive Technically closes https://github.com/tgstation/dev-cycles-initiative/issues/8 ## Changelog 🆑 refactor: armor, from the ground up basically /🆑 Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com> |
||
|
|
cf02f62298 |
useless update_appearance reduction, emissive_blocker micro optimization (saves a second of init) (#71658)
## About The Pull Request [Saves 0.2 seconds of init time. 50% of emissive blockers](https://github.com/tgstation/tgstation/commit/8318b648f6d32844aacbfb4c309152cd45801f5c) Emissive blockers are a decent expense during init, even these, which are the ones that update outside of initialize. I've inlined them, removed some redundant vars and checks, reduced the arg count, and shifted some things around. This ends up saving 200ms, or 50% of its total cost. I also shifted mutable_appearance about a bit. it's not a massive saving, but it is technically faster [Prevents a few redundant appearance_updates, saves 0.8 seconds of init](https://github.com/tgstation/tgstation/commit/5475cd778b66b22b1e2c8d86b2c6d59fb84f219a) Prequisit info: update_appearance is decently expensive It's good then to only do it if we have a reason to, right? Me and moth were shooting the shit about just general init time, and we came up with the idea of tracking which update_appearances actually "worked" and which didn't. That bit comes later, let's enjoy the fruits of that work first First, holograms were calling update_appearance on process, for almost no reason. I patched the one event they don't already "react" to, and then locked it behind a change decection if. good for live, doesn't impact init. Next, decals. If you add a decal to something before it inits, it'll react to the after successful init signal. The trouble is the same atom could have its appearance updated from this MORE then once, since decals can be stacked on tiles, and signal unregisters don't work once the signal is sent. So we add a flag to track if we've had this happen to us or not, so it only happens once. saves 80 ms Power! lots of things call power_change on init, often more then once. We'll update appearance for each of those calls, even if only one is an actual change. That's silly, better to track what sort of power we're using for our appearance and go off that changing This was taking about 300ms. Really stupid Icon smoothing. After emissive blockers were added, any change to something's icon smoothing would lead to an update_appearance call. Nasty shit, specially cause of walls, which don't even use emissive blockers. Ok then, so we'll always update appearance for movables, and will allow turfs that are interested to hook it manually. Not many of those anyhow This is slightly a dev ux thing, but it saves 600ms so I think it's worth it. Rare case anyway Telecomms: telecomm machines were updating appearance on process. This is to cover for them turning on/off on process. Better then to just check if on actually changed. This cost adds up midgame, doesn't impact init tho Materials: There's this update_appearance call in material on_apply. it doesn't do anything. The logs will lie to you and say it does, but it's just like reapplying emissives. It doesn't need to exist Saves like 50ms Canisters: Live thing, lots of time wasted updating appearance for no reason, lets see if we change anything first yes? [Uses defines to wrap update_appearance for tracking](https://github.com/tgstation/tgstation/commit/4fa82e1c9d93577aadb3c743f17196331f62e67c) [Undoes _update_appearance changes, instead reccomends 2 regexes to use](https://github.com/tgstation/tgstation/commit/a8c8fec57a4e43d1fa636b5ac68459903faa9fc5) I need file and line number for my tracking, so I need to override update_appearance calls, and also preferably not require every override of update_appearance to handle dummy file + line args. So instead, I created a wrapper proc that checks to see if appearanaces match (they're unique remember, the two of the same visual appearance will be equivalent) The trouble is I can't intercept JUST proc calls, or JUST function definitions with defines. it needs to be both. So I renamed the /update_appearance proc to /_update_appearance this way I can capture old uses, and don't need to worry about merge/dev brain skew ~~It does mean that all update_appearance proc definitions now look weird tho. My profiling is leaking into dev ux. I wish I had better templating.~~ **The above is no longer being pr'd**, it's instead just recommended via a few regexes adjacent to the define. Smelled wrong anyhow [Adds a setter for panel_open, so I can update_appearance on it](https://github.com/tgstation/tgstation/pull/71658/commits/cf1df8a69fc1a816391d085ee7419b14f9fe9167) ## Why It's Good For The Game Speed |
||
|
|
f1a363c825 |
Converts a shitload of istypes to their more concise macros (#69260)
* Converts a lot of istypes() to use their istype macro helpers. |
||
|
|
e657e6c4f7 |
Most materials can be used to build most things (#66181)
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com> |
||
|
|
566b9ee1d8 |
Fix Turf Transparency for MultiZ (#62875)
Fixes #62794 (Catwalk Tiles placed on the lower level of tram appear to be on the upper level) Fixes #57654 (Open Space shading not always applied) Fixes #53666 (When standing on a glass floor above a light on the Z level below you the light effect is rendered above the character. This makes light have ugly glows on the floors above. This also happens with grills and lattice.) Transparent turfs, catwalks, and lighting overlays were badly broken with MultiZ issues. This fixes any transparent turf to appear and be on the same z-level if it has the turf_transparent element. Catwalks will appear and be on the same z-level as well. They were initially glitching to top z-levels causing people to walk over an illusion that caused them to fall to their deaths. After I fixed these issues I noticed that lighting overlays were also glitching to top z-levels, which looked rather strange as there were lights in the middle of rooms and hallways with no supporting walls. Lights now appear under the transparent turfs properly. The mapping icons for catwalks displayed the wrong icon_state so I fixed that too. I made a big refactor for transparency and catwalks code that had to be done to get all of this to work properly. You no longer have to be afraid of falling off of glass floors, catwalks, or transparent tiles. Also lighting overlays don't glitch through upper z-levels anymore for transparent tiles. |
||
|
|
0f3c4e51f7 |
Modernizing Radiation -- TL;DR: Radiation is now a status effect healed by tox healing, and contamination is removed (#62265)
Implements the Modernizing radiation design document ( https://hackmd.io/@tgstation/rJNIyeBHt ) and replaces the current radiation sources with the new system, as well as replacing/removing a bunch of old consumers of radiation that either had no reason to exist, or could be replaced by something else. Diverges from the doc in that items radiation don't go up like explained. I was going to, but items get irradiated so easily that it just feels pretty lame. Items still get irradiated, but it's mostly just so that radiation sources look cooler (wow, lots of stuff around going green), and for things like the geiger counter. Instead of the complicated radiation_wave system, radiation now just checks everything between the radiation source and the potential target, losing power along the way based on the radiation insulation of whats in between. If this reaches too low a point (specified by radiation_pulse consumers), then the radiation will not pass. Otherwise, will roll a chance to irradiate. Uranium structures allow a delay before irradiating, so stay away! |
||
|
|
87f6ca1944 |
kills 4 object definitions that are inside of proc arguments (#61152)
thanks to putnam for reporting this in coderbus /obj/machinery/smartfridge/drying_rack/load(/obj/item/dried_object) looks pretty harmless right? youd think that this would make a proc argument called dried_object of type /obj/item but no, this defines a new /obj/item class definition called dried_object with zero changes from /obj/item you can use this to do weird things, like /obj/machinery/smartfridge/drying_rack/load(/obj/item/var/dried_object = 3) creates a new var on /obj/item called dried_object and is very cursed gets rid of 4 of these abominations, they dont seem to have caused any bugs except for maybe behavior that relies on typesof(/some/path) |
||
|
|
c60bceba41 |
fixes hyperspace connect_loc_behalf bug (#60231)
turns out my move_stacks var doesnt work asynchronously since this bug made things with connect_loc_behalf runtime on every movement unless you somehow moved it back to the transit turf and off without it doing the runtime special. (The sleep and hell the whole bit of code in space/Entered was unneeded, since it just happens normally as a part of move. Life is pain) -Lemon also does misc code improvements i found while investigating ANOTHER c_l_b bug with stacks i found while testing this one, which i did NOT manage to fix unfortunately |
||
|
|
71ed48d944 |
Datum mat GAGS support and mace migration (#59114)
Makes datum materials support GAGS icons without too much configuration needed. You just need to specify a base config and subtype configurations can be for specific materials. I used the cleric mace as a testing item due to it having 2 distinct regions to color, so it got migrated to this system. Moving forward we should not be using the regular color system for datum mat items as you can get conflicts with other code adding colors whereas with this the sprite has the base colors baked in. Also I made the gold mace shimmer, for fun. |
||
|
|
69711bde15 |
Beauty is now an element. Fixing an issue with enter/exit area comsigs. (#57147)
Co-authored-by: Ghommie <425422238+Ghommie@users.noreply.github.com> |
||
|
|
931a32ffb3 |
Experi-Sci: Techweb nodes may now require you to perform "scientific" experiments (#54093)
Co-authored-by: Brett Williams <bobbahbrown@gmail.com> Co-authored-by: Jordan Brown <Cyberboss@users.noreply.github.com> Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com> Co-authored-by: Aleksej Komarov <stylemistake@gmail.com> Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com> |
||
|
|
0f435d5dff |
Remove hideous inline tab indentation, and bans it in contributing guidelines (#56912)
Done using this command sed -Ei 's/(\s*\S+)\s*\t+/\1 /g' code/**/*.dm We have countless examples in the codebase with this style gone wrong, and defines and such being on hideously different levels of indentation. Fixing this to keep the alignment involves tainting the blames of code your PR doesn't need to be touching at all. And ultimately, it's hideous. There are some files that this sed makes uglier. I can fix these when they are pointed out, but I believe this is ultimately for the greater good of readability. I'm more concerned with if any strings relied on this. Hi codeowners! Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@users.noreply.github.com> |
||
|
|
976c1fcb8c |
[READY] Bespoke Datum Mats (#55296)
* Bespoke Material Backend - Adds support for bespoke materials: - Reimplements [/datum/material/var/id] - Ports GetIdFromArguments from SSdcs - Adds a wrapper define for GetMaterialRef - Adds [MATERIAL_INIT_BESPOKE] - Adds [/datum/material/proc/Initialize] - Does not actually add any bespoke materials - [ ] TODO: Code docs - [ ] TODO: Actually adding bespoke materials * Some has_material procs and cleaning up some spaghetti - Adds a pair of has_material procs for use in checking whether a given atom has a given material * Adds meat - Adds bespoke meat variants - Does not make them accessible - Shuts up the linter * Implements bespoke meat - Makes the material container preserve bespoke materials - Makes the sheetifier accept bespoke materials - Makes the autolathe accept bespoke materials - Makes the gibber produce bespoke meats * Makes butchering produce bespoke meats This is jank and really needs to be folded into a unified butchering and gibbing system * Material documentation - Adds, fixes, and touches up some documentation * Material container insertion callback - Changes the proc used to expand the material container's material list ot a proc used to check whether a material fits into a material container - Instantiating new materials is no longer O(n) relative to the number of autolathes in existence. * Makes processing meat conserve materials - Makes bespoke meat carry over into meatballs * Makes preserving custom materials an option - Implements the ability to turn preserving custom materials _off_ for processor recipes * Fixes all bespoke materials of the same type using the same singleton - We use ids now, not just types. * Makes the fat sucker produce bespoke meats - Because consistency is good. * Fixes autolathes merging bespoke stacks into normal stacks. * Makes the callback to test materials for holdibility optional - @Floyd * GetMaterialRef -> GET_MATERIAL_REF - We capitalize macros. * Removes an extraneous callback - Makes the sheetifier use functionality I didn't notice I implemented a few commits ago. * Makes mob and species meat null compatible * Fixes the ore silo - The ore silo had really snowflake material handling that has been brought in line with the rest. - The materials should show up in the correct order. * Fixes minor lathe bugs - Fixes stack_traces caused when lathes tried to fetch materials using reagent typepaths - Fixed the selective reagent disposal topic. I have no idea how long this has been broken. * Various documentation fixes - Clarified a couple comments - Removes an extraneous ?. operator - Fixed mat floor tiles having bugged reagent temperatures * More fixes -/datum/material/meat/mob -> /datum/material/meat/mob_meat - Adds atom typecheck to material containers. * Fixes old typepaths |
||
|
|
adcd4af1ff |
Meat statue fixes (#55790)
Fixes few statue bugs with textured materials. Makes materials use managed filters. This can have side effects on things that already had unmanaged filters on. |
||
|
|
0eaab0bc54 |
Grep for space indentation (#54850)
#54604 atomizing Since a lot of the space indents are in lists ill atomize those later |
||
|
|
ede1358f78 |
Beauty component improvements. Two new fantasy component prefixes (#54622)
Title. Changed the component backend code slightly to allow a single component to hold the total score instead of spawning new components. This should fix cases, such as material stacks without the MATERIAL_NO_EFFECTS flag, where multiple set_costum_materials calls can be made and new beauty components spawned. |
||
|
|
6424b6136e | Turns transparency for turfs into an element, and gives it to datum materials. (#54250) | ||
|
|
cab4313b29 |
Adds Alloy Materials (#53623)
Adds and implements alloy materials
Takes several materials that were mostly fluff and converts them into actual usable materials.
Messes with material code a bit to make alloys recycle back into their component materials.
Adds the alloy materials to their in-game stacks.
Materials added:
Plasteel
Plastitanium
Plasmaglass
Titaniumglass
Plastitanium Glass
Alien Alloy
Makes plasteel/plastitanium/plasmaglass and the rest able to have separate properties from their component materials. It doesn't make much sense that the materials used to seal off the supermatter chamber from the rest of the station would be prone to exploding when heated.
Allows for further expansion of materials, possibly including actual functional metallurgy and smelting at some point in the very distant future.
(Lemons note: Adds a regeneration component, used for alien alloy)
|
||
|
|
6e950daccc | Defines damage flags. (#53158) | ||
|
|
12f8b03249 | Shatter glass by slapping the floor (#52916) | ||
|
|
19c3bbde31 |
Cleanup up all instances of using var/ definitions in proc parameters. (#52728)
* var/list cleanup * The rest of the owl * plushvar bad * Can't follow my own advice. |
||
|
|
5b99d66569 |
Replaces some zero-delay timers with INVOKE_ASYNC (#52434)
* INVOKE_ASYNC Replaces a zero-delay timer with INVOKE_ASYNC * More timers Switches out some more zero-delay timers for `INVOKE_ASYNC` * lib_codex_gigas One last switch |
||
|
|
789aa2b6ba |
Adds an item proc for accidental consumption and implements it in food containers (bread, cake, cheese) (#51925)
* cronch monch ow, i'm dyin bros * oopsies * also should've removed that * first round of fixes, thanks bros * fk * Some post cleanup * ? * if-else begone * gotta sweep sweep sweep * proper math * Update code/modules/projectiles/ammunition/_ammunition.dm Co-authored-by: ラッピ from PSO2 <11748095+ExcessiveUseOfCobblestone@users.noreply.github.com> |
||
|
|
dee2db6873 |
remove unnecessary var/id from /datum/material (#51322)
* remove var/id from /datum/material * nice commit message dot meme |
||
|
|
6298203cf0 |
Material wall/floor and floor tile name/desc changes (#50203)
* Renames material "plating" to floor, changes material wall desc to match regular walls * floor tile * Custom descs for walls and floor tiles based on material * material tile throwforce 1 -> 5 * switch order of material flags on material tile * Removes material flag and check - Simplifies floor tile desc throwforce check * Moves the throwforce message to examine() * Gives more nuance to tile throwforce examine() messages * Simplifies tile examine throwforce code - Fixes problem with radioactive item examine of outputting a single period when too far away - Adds spans to tile throwforce examine and radioactive item examine * logic 10 Co-Authored-By: Rohesie <rohesie@gmail.com> * Adds throwforce message to examine return Co-authored-by: Rohesie <rohesie@gmail.com> |
||
|
|
4b2a8aebe5 |
[READY] Meat material & material datum turf support (#49402)
* temp * meatwalls * more * adds sheetifier * fix * two * mat texture + 4dplanner admin (#21) * mat texture + 4dplanner admin * keep together trait * counter instead of trait * finalizations * woops * fixes * oopsie * only set starting keep_together if necessary (#24) * keep together as trait again * remove false comment * doc for TRAIT_KEEP_TOGETHER * remove needless scoping Co-authored-by: 4dplanner <3combined@gmail.com> |